#include "main.h"
|
#include "gprs_protocol_ideacreated_gasmeter_api.h"
|
#include "rtc.h"
|
#include "string.h"
|
#include "sundry.h"
|
#include "mbcrc.h"
|
#include "system_parameter.h"
|
#include "billing.h"
|
#include "power_manage.h"
|
#include "gprs.h"
|
#include "system_log.h"
|
#include "valve_control.h"
|
#include "stdlib.h"
|
#include "low_pwr_test.h"
|
#include "uart.h"
|
#include "working_time_calculate.h"
|
#include "bootloader_iap.h"
|
|
#define GPRS_PROTOCOL_NORMAL_DATA_PACK_1 1
|
|
static ErrorStatus_STM32 set_result_g = ERROR_1;
|
|
GPRS_PROTOCOL_HEAD_TAIL_T gprs_protocol_head_tail_g = {
|
.gprs_protocol_head = {
|
.frame_start_code = PROTOCOL_START_CODE,
|
.data_start_code = DATA_START_CODE,
|
.device_time = {0x22, 0x12, 0x13, 0, 0, 0},
|
.protocol_ver = PROTOCOL_VERSION,
|
.cmd_code_u16 = PROTOCOL_NORMAL_SEND_CMD_U16,
|
.frame_num = 1, //ĬÈϳõʼ֡ÐòºÅ
|
.key_ver = KEY_VERSION,
|
},
|
.gprs_protocol_tail = {
|
.frame_end_code = PROTOCOL_END_CODE,
|
},
|
.gprs_protocol_normal_data_head = {
|
.equipment_type = DT_HOLISTIC_CTL_METER,
|
.equipment_model = DM_HCM_UFG220,
|
.signal_intensity = GMS_BEST,
|
},
|
};
|
|
#if GPRS_PROTOCOL_NORMAL_DATA_PACK_1
|
GPRS_PROTOCOL_NORMAL_DATA_PACK_1_T gprs_protocol_normal_data_pack_1_g = {0};
|
#elif GPRS_PROTOCOL_NORMAL_DATA_PACK_2
|
GPRS_PROTOCOL_NORMAL_DATA_PACK_2_T gprs_protocol_normal_data_pack_2_g = {0};
|
#else
|
GPRS_PROTOCOL_NORMAL_DATA_PACK_T gprs_protocol_normal_data_pack_g = {0};
|
#endif
|
|
|
|
GPRS_PROTOCOL_PARA_T gprs_protocol_para_g;
|
|
static GPRS_PTL_CMD_UNION_T gprs_ptl_cmd_union_g = {0};
|
|
/*ÐÒé·¢ËÍÊý¾Ý/ÃüÁî±í*/
|
static GPRS_PROTOCOL_SEND_FUNC_TABLE_DRV_T gprs_protocol_send_tab_func[] = {
|
{PROTOCOL_NORMAL_SEND_CMD, Gprs_Protocol_SendNormalDataHandler},
|
// {PROTOCOL_END_STATUS, Gprs_Protocol_SendEndHandler}, // 0x0102
|
{PROTOCOL_READ_FUNC_BACK, Gprs_Protocol_SendReadFunHandler}, // 0x0203
|
{PROTOCOL_READ_ALARM_CONTROL_BACK, Gprs_Protocol_SendReadAlarmContHandler}, // 0x0205
|
{PROTOCOL_READ_SEND_CYCLE_BACK, Gprs_Protocol_SendReadSendCycleHandler}, // 0x0207
|
{PROTOCOL_READ_METER_PARA_BACK, Gprs_Protocol_SendReadMeterParaHandler}, // 0x0209
|
{PROTOCOL_READ_EQUIP_PARA_BACK, Gprs_Protocol_SendReadEquipParaHandler}, // 0x0220
|
{PROTOCOL_SET_IP_BACK, Gprs_Protocol_SendSetIpaddrHandler}, // 0x0222
|
{PROTOCOL_READ_IP_BACK, Gprs_Protocol_SendReadIpaddrHandler}, // 0x0223
|
{PROTOCOL_CLEAR_COUNT_BACK, Gprs_Protocol_SendClearCountHandler}, // 0x0225
|
{PROTOCOL_READ_TIME_POINT_BACK, Gprs_Protocol_SendReadTimePointHandler}, // 0x0231
|
{PROTOCOL_READ_HISTORY_BACK, Gprs_Protocol_SendReadHistoryHandler}, // 0x0232
|
{PROTOCOL_READ_VALVE_RECORD_BACK, Gprs_Protocol_SendReadValveRecordHandler}, // 0x0233
|
{PROTOCOL_READ_MODIFY_ACC_RECORD_BACK, Gprs_Protocol_SendReadModifyAccRecordHandler}, // 0x0234
|
{PROTOCOL_READ_BALANCE_CLOSE_VALVE_BACK, Gprs_Protocol_SendReadBalanceCloseValveHandler}, // 0x0303
|
{PROTOCOL_READ_CLOSE_VALVE_BACK, Gprs_Protocol_SendSetCloseValveKeyHandler}, // 0x0305
|
{PROTOCOL_READ_DONT_REPORT_CLOSE_VALVE_BACK, Gprs_Protocol_SendReadDontReportCloseValveHandler}, // 0x0307
|
{PROTOCOL_READ_DONT_USE_GAS_DAY_BACK, Gprs_Protocol_SendReadDontUseGasDayHandler}, // 0x0309
|
{PROTOCOL_READ_NO_COUNT_CLOSE_VALVE_BACK, Gprs_Protocol_SendReadNoCountCloseValveHandler}, // 0x0311
|
{PROTOCOL_PAY_MONEYS_BACK, Gprs_Protocol_SendPayMoneysBackHandler}, // 0x0401
|
{PROTOCOL_READ_PRICE_NOW_INF_BACK, Gprs_Protocol_SendPriceNowInfHandler}, // 0x0403
|
{PROTOCOL_SET_RECV_SUCCORFAIL, Gprs_Protocol_SetRecvSuccOrFail}, // ÉèÖýÓÊճɹ¦/ʧ°Ü
|
};
|
/*ÐÒé½ÓÊÕÃüÁî±í*/
|
static GPRS_PROTOCOL_RECV_FUNC_TABLE_DRV_T gprs_protocol_recv_tab_func[] = {
|
{PROTOCOL_NORMAL_SEND_CMD_U16, Gprs_Protocol_RecvNormalDataHandler}, // 0x0101
|
{PROTOCOL_END_CMD_U16, Gprs_Protocol_RecvEndHandler}, // 0x0102
|
{PROTOCOL_OPERATION_KEY_U16, Gprs_Protocol_RecvOperaKeyHandler}, // 0x0103
|
{PROTOCOL_BACKSETTLE_INFO_U16, Gprs_Protocol_RecvBackSettleInfoHandler}, // 0x0104
|
{PROTOCOL_STARTEND_COUNT_U16, Gprs_Protocol_RecvStartEndCountHandler}, // 0x0201
|
{PROTOCOL_SET_FUN_PARA_U16, Gprs_Protocol_RecvSetFunParaHandler}, // 0x0202
|
{PROTOCOL_READ_FUN_PARA_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0203
|
{PROTOCOL_SET_ALARM_COUNT_U16, Gprs_Protocol_RecvSetAlarmContHandler}, // 0x0204
|
{PROTOCOL_READ_ALARM_COUNT_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0205
|
{PROTOCOL_SET_SEND_CYCLE_U16, Gprs_Protocol_RecvSetSendCycleHandler}, // 0x0206
|
{PROTOCOL_READ_SEND_CYCLE_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0207
|
{PROTOCOL_SET_METER_PARA_U16, Gprs_Protocol_RecvSetMeterParaHandler}, // 0x0208
|
{PROTOCOL_READ_METER_PARA_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0209
|
{PROTOCOL_READ_EQUIP_PARA_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0220
|
{PROTOCOL_SET_TIME_CMD_U16, Gprs_Protocol_RecvSetTimeHandler}, // 0x0221
|
{PROTOCOL_SET_IP_U16, Gprs_Protocol_RecvSetIpaddrHandler}, // 0x0222
|
{PROTOCOL_READ_IP_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0223
|
{PROTOCOL_CLEAR_EXCEPTION_U16, Gprs_Protocol_RecvClearExceptionHandler}, // 0x0224
|
{PROTOCOL_CLEAR_COUNT_U16, Gprs_Protocol_RecvClearCountHandler}, // 0x0225
|
{PROTOCOL_SAVE_TIME_POINT_U16, Gprs_Protocol_RecvSaveTimePointHandler}, // 0x0230
|
{PROTOCOL_READ_TIME_POINT_U16, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0231
|
{PROTOCOL_READ_HISTORY_U16, Gprs_Protocol_RecvReadHistoryHandler}, // 0x0232
|
{PROTOCOL_READ_VALVE_RECORD_U16, Gprs_Protocol_RecvReadValveRecordHandler}, // 0x0233
|
{PROTOCOL_READ_MODIFY_ACC_RECORD, Gprs_Protocol_RecvReadModifyAccRecordHandler}, // 0x0234
|
{PROTOCOL_CONT_VALVE, Gprs_Protocol_RecvContValveHandler}, // 0x0301
|
{PROTOCOL_SET_BALANCE_CLOSE_VALVE, Gprs_Protocol_RecvSetBalanceCloseValveHandler}, // 0x0302
|
{PROTOCOL_READ_BALANCE_CLOSE_VALVE, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0303
|
{PROTOCOL_SET_CLOSE_VALVE, Gprs_Protocol_RecvSetCloseValveHandler}, // 0x0304
|
{PROTOCOL_READ_CLOSE_VALVE, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0305
|
{PROTOCOL_SET_DONT_REPORT_CLOSE_VALVE, Gprs_Protocol_RecvSetDontReportCloseValveHandler}, // 0x0306
|
{PROTOCOL_READ_DONT_REPORT_CLOSE_VALVE, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0307
|
{PROTOCOL_SET_DONT_USE_GAS_DAY, Gprs_Protocol_RecvSetDontUseGasDayHandler}, // 0x0308
|
{PROTOCOL_READ_DONT_USE_GAS_DAY, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0309
|
{PROTOCOL_SET_COUNT_CLOSE_VALVE, Gprs_Protocol_RecvSetCountCloseValveHandler}, // 0x0310
|
{PROTOCOL_READ_NO_COUNT_CLOSE_VALVE, Gprs_Protocol_Recv_ReadCmdGeneralHandler}, // 0x0311
|
{PROTOCOL_PAY_MONEYS_U16, Gprs_Protocol_RecvPayMoneysHandler}, // 0x0401
|
{PROTOCOL_ADJUST_PRICE_U16, Gprs_Protocol_RecvAdjustPriceHandler}, // 0x0402
|
{PROTOCOL_APP_RESET_U16,Gprs_Protocol_RecvAppResetHandler},
|
{PROTOCOL_APP_CONFIG_U16,Gprs_Protocol_RecvAppConfigHandler},
|
{PROTOCOL_APP_DIFF_DATA_U16,Gprs_Protocol_RecvAppDiffDataHandler},
|
{PROTOCOL_APP_CONFIG_CHECK_U16,Gprs_Protocol_RecvAppConfigCheckHandler},
|
{PROTOCOL_APP_DIFF_MAP_U16,Gprs_Protocol_RecvAppDiffMapHandler},
|
};
|
|
uint16_t Gprs_Protocol_DataLength(uint8_t send_type, GPRS_PROTOCOL_ENCRYPT_PARA *gprs_protocol_encrypt_para_p) // ÐÒé×ܳ¤¶È
|
{
|
#if GPRS_PROTOCOL_SELECT
|
/*¼ÆËãÊý¾Ý°üÌõÊý*/
|
if(send_type == PROTOCOL_NORMAL_SEND_CMD)
|
{
|
/*ÓÉÓÚÉϱ¨Êý¾ÝÖ¡ÖпÉÄÜÓжà°üÊý¾Ý°üÇÒÔÚÕý³£Éϱ¨Êý¾Ý֡ʱ£¬ÐèÒªÓÃÊý¾Ý°ü¼ÆËã¸Ã´ÎÉÏ·¢µÄÊý¾Ý×ܳ¤¶È£¬
|
ËùÒÔÿ´ÎÕý³£Éϱ¨Êý¾Ý֡ǰÐèÒª¼ÆËãÊý¾Ý°ü´óС*/
|
if (gprs_protocol_head_tail_g.gprs_protocol_head.frame_num < gprs_protocol_head_tail_g.gprs_protocol_head.frame_sum)
|
gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num = SEND_DATA_PACK_MAX;
|
else if (gprs_protocol_head_tail_g.gprs_protocol_head.frame_num == gprs_protocol_head_tail_g.gprs_protocol_head.frame_sum)
|
{
|
if ((gprs_save_send_para_g.now_send_data_num % SEND_DATA_PACK_MAX) == 0)
|
gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num = SEND_DATA_PACK_MAX;
|
else
|
gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num = gprs_save_send_para_g.now_send_data_num % SEND_DATA_PACK_MAX;
|
}
|
}
|
#endif
|
/*¼ÆËãÊý¾Ý·¢Ë͵ÄÃ÷Îij¤¶È*/
|
switch (send_type)
|
{
|
case PROTOCOL_NORMAL_SEND_CMD:
|
#if GPRS_PROTOCOL_NORMAL_DATA_PACK_1
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_NORMAL_DATA_HEAD_LENGTH +
|
(PROTOCOL_NORMAL_DATA_PACK_1_LENGTH * gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num);
|
#elif GPRS_PROTOCOL_NORMAL_DATA_PACK_2
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_NORMAL_DATA_HEAD_LENGTH +
|
(PROTOCOL_NORMAL_DATA_PACK_2_LENGTH * gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num);
|
#else
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_NORMAL_DATA_HEAD_LENGTH +
|
(PROTOCOL_NORMAL_DATA_PACK_LENGTH * gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.data_pack_num);
|
#endif
|
break;
|
case PROTOCOL_READ_FUNC_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_FUNC_PARA_LENGTH;
|
break;
|
case PROTOCOL_READ_ALARM_CONTROL_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = SYS_ALARM_CTL_BYTES_TYPE_LENGTH + SYS_ALARM_SEND_BYTES_TYPE_LENGTH + 22;
|
break;
|
case PROTOCOL_READ_SEND_CYCLE_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_SEND_CFG_LENGTH;
|
break;
|
case PROTOCOL_SET_IP_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_SET_CMD_DATA_BACK_LENGTH + PROTOCOL_IP_PARA_LENGTH; // Ïê¼ûÐÒé
|
break;
|
case PROTOCOL_READ_IP_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_IP_PARA_LENGTH;
|
break;
|
case PROTOCOL_CLEAR_COUNT_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_SET_CMD_DATA_BACK_LENGTH + (2 * 16); // Ïê¼ûÐÒé
|
break;
|
case PROTOCOL_READ_TIME_POINT_BACK:
|
gprs_protocol_encrypt_para_p->plaintext_length = 10;
|
break;
|
case PROTOCOL_READ_HISTORY_BACK: //0x0232
|
// gprs_protocol_encrypt_para_p->plaintext_length = platform_record_para_g.records_num * 50 + 2; //Êý¾Ý°ü¸ñʽ 0
|
// gprs_protocol_encrypt_para_p->plaintext_length = platform_record_para_g.records_num * 66 + 2; //Êý¾Ý°ü¸ñʽ 1
|
break;
|
case PROTOCOL_READ_VALVE_RECORD_BACK: //0x0233
|
// gprs_protocol_encrypt_para_p->plaintext_length = platform_valve_ctrl_record_g.valve_records_num * 14;
|
break;
|
case PROTOCOL_READ_MODIFY_ACC_RECORD_BACK: //0x0234
|
// gprs_protocol_encrypt_para_p->plaintext_length = platform_cal_mod_record_g.cul_mod_records_num * 39 + 1;
|
break;
|
case PROTOCOL_READ_BALANCE_CLOSE_VALVE_BACK: //0x0303
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_BALANCE_ALARM_LENGTH;
|
break;
|
case PROTOCOL_READ_CLOSE_VALVE_BACK: //0x0305
|
gprs_protocol_encrypt_para_p->plaintext_length = VALVE_CTL_LEN + 4;
|
break;
|
case PROTOCOL_READ_DONT_REPORT_CLOSE_VALVE_BACK: //0x0307
|
case PROTOCOL_READ_DONT_USE_GAS_DAY_BACK: //0x0309
|
gprs_protocol_encrypt_para_p->plaintext_length = 2;
|
break;
|
case PROTOCOL_READ_NO_COUNT_CLOSE_VALVE_BACK: //0x0311
|
gprs_protocol_encrypt_para_p->plaintext_length = 5;
|
break;
|
case PROTOCOL_PAY_MONEYS_BACK: //0x0401
|
gprs_protocol_encrypt_para_p->plaintext_length = 9;
|
break;
|
case PROTOCOL_READ_PRICE_NOW_INF_BACK: //0x0403
|
gprs_protocol_encrypt_para_p->plaintext_length = SYS_LADDER_PRICE_CFG_FORMAT_SIZE - SIZEOF_OF(LADDER_PRICE_CFG_PARA_T,reserve);
|
break;
|
case PROTOCOL_READ_METER_PARA_BACK: //0x0209
|
break;
|
case PROTOCOL_READ_EQUIP_PARA_BACK: //0x0220
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_DEVICE_INFO_LENGTH;
|
break;
|
case PROTOCOL_SET_RECV_SUCCORFAIL:
|
gprs_protocol_encrypt_para_p->plaintext_length = PROTOCOL_SET_CMD_DATA_BACK_LENGTH;
|
default:
|
break;
|
}
|
if (KEY_VERSION >> 7)
|
gprs_protocol_encrypt_para_p->padding_total_length = PKCS5Padding_like(&gprs_protocol_encrypt_para_p->padding_length, gprs_protocol_encrypt_para_p->plaintext_length);
|
else
|
gprs_protocol_encrypt_para_p->padding_total_length = gprs_protocol_encrypt_para_p->plaintext_length;
|
return PROTOCOL_HEAD_LENGTH + PROTOCOL_TAIL_LENGTH + gprs_protocol_encrypt_para_p->padding_total_length;
|
}
|
|
|
|
|
/************************************** Send Data **************************************************************/
|
/************************************** Send Data **************************************************************/
|
/************************************** Send Data **************************************************************/
|
|
void Gprs_Protocol_SendReadFunHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶Á±í¾ß¹¦ÄܲÎÊý0x0203
|
{
|
gprs_ptl_cmd_union_g.func_para_s.lcd_display_mode = __SYS_STATUS_BYTES_GET(lcd_mode);
|
gprs_ptl_cmd_union_g.func_para_s.virtual_billing_state = __SYS_STATUS_BYTES_GET(virtual_billing);
|
gprs_ptl_cmd_union_g.func_para_s.display_balance = __SYS_FUNC_CFG_BYTES_GET(balance_display_set);
|
gprs_ptl_cmd_union_g.func_para_s.display_price = __SYS_FUNC_CFG_BYTES_GET(price_display_set);
|
memcpy(pData, &gprs_ptl_cmd_union_g.func_para_s, PROTOCOL_FUNC_PARA_LENGTH);
|
}
|
|
void Gprs_Protocol_SendReadAlarmContHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡±¨¾¯¿ØÖÆ×Ö0x0205
|
{
|
memcpy(pData, &sys_alarm_ctl_bytes_g, SYS_ALARM_CTL_BYTES_TYPE_LENGTH);
|
memcpy(&pData[SYS_ALARM_CTL_BYTES_TYPE_LENGTH], &sys_alarm_send_bytes_g, SYS_ALARM_SEND_BYTES_TYPE_LENGTH);
|
}
|
|
void Gprs_Protocol_SendReadSendCycleHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡Éϱ¨ÖÜÆÚ0x0207
|
{
|
gprs_ptl_cmd_union_g.send_cfg_s.extern_pwr_send_period_reserve = 60;
|
gprs_ptl_cmd_union_g.send_cfg_s.extern_pwr_save_period_reserve = 60;
|
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_interval_type = gprs_network_cfg_para_g.gprs_interval_type;
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_send_period_min_time = gprs_network_cfg_para_g.gprs_send_period_min_time;
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_reference_time_bcd[0] = gprs_network_cfg_para_g.gprs_reference_time_bcd[0];
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_reference_time_bcd[1] = gprs_network_cfg_para_g.gprs_reference_time_bcd[1];
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_timed_number = gprs_network_cfg_para_g.gprs_timed_number;
|
memcpy(gprs_ptl_cmd_union_g.send_cfg_s.gprs_timing_time_bcd, gprs_network_cfg_para_g.gprs_timing_time_bcd,
|
sizeof(gprs_ptl_cmd_union_g.send_cfg_s.gprs_timing_time_bcd));
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_timeout = gprs_network_cfg_para_g.gprs_timeout;
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_restart_send_interval_min_time = gprs_network_cfg_para_g.gprs_restart_send_interval_min_time;
|
gprs_ptl_cmd_union_g.send_cfg_s.gprs_restart_number = gprs_network_cfg_para_g.gprs_restart_number;
|
gprs_ptl_cmd_union_g.send_cfg_s.pack_or_independent_data = 0;
|
gprs_ptl_cmd_union_g.send_cfg_s.save_data_period_min_time = gprs_network_cfg_para_g.save_data_period_min_time;
|
gprs_ptl_cmd_union_g.send_cfg_s.save_reference_time_bcd[0] = gprs_ptl_cmd_union_g.send_cfg_s.save_reference_time_bcd[1] = 0;
|
memcpy(pData, &gprs_ptl_cmd_union_g.send_cfg_s, PROTOCOL_SEND_CFG_LENGTH);
|
}
|
|
void Gprs_Protocol_SendReadMeterParaHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡¶Ô½ÓÒDZí²ÎÊý0x0209
|
{
|
pData[0] = ERROR_1;
|
}
|
|
void Gprs_Protocol_SendReadEquipParaHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡É豸ÐÅÏ¢0x0220
|
{
|
memcpy(gprs_ptl_cmd_union_g.device_info_s.device_iccid,gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.iccid,20);
|
memcpy(gprs_ptl_cmd_union_g.device_info_s.device_imei,sim_imei_g,15);
|
gprs_ptl_cmd_union_g.device_info_s.device_net_info = 0;
|
memcpy(gprs_ptl_cmd_union_g.device_info_s.device_hardware_ver_bcd,master_soft_hard_para_g.master_hardware_ver,5);
|
memcpy(gprs_ptl_cmd_union_g.device_info_s.device_software_ver_bcd,master_soft_hard_para_g.master_firmware_ver,4);
|
|
memcpy(pData,&gprs_ptl_cmd_union_g.device_info_s,PROTOCOL_DEVICE_INFO_LENGTH);
|
}
|
|
void Gprs_Protocol_SendSetIpaddrHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // IPµØÖ·ÉèÖ÷µ»Ø0x0222
|
{
|
uint8_t len = SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_ip_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_port_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_link_type_1);
|
pData[0] = set_result_g;
|
gprs_ptl_cmd_union_g.ip_para_s.status_ip_1 = 0;
|
gprs_ptl_cmd_union_g.ip_para_s.status_ip_2 = 1;
|
memcpy(gprs_ptl_cmd_union_g.ip_para_s.gprs_ip_1, gprs_network_cfg_para_g.gprs_ip_1, len);
|
memcpy(gprs_ptl_cmd_union_g.ip_para_s.gprs_ip_2, gprs_network_cfg_para_g.gprs_ip_2, len);
|
memcpy(&pData[1], &gprs_ptl_cmd_union_g.ip_para_s, PROTOCOL_IP_PARA_LENGTH);
|
}
|
|
void Gprs_Protocol_SendReadIpaddrHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡IPµØÖ·ÉèÖÃ0x0223
|
{
|
uint8_t len = SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_ip_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_port_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_link_type_1);
|
gprs_ptl_cmd_union_g.ip_para_s.status_ip_1 = 0;
|
gprs_ptl_cmd_union_g.ip_para_s.status_ip_2 = 1;
|
memcpy(gprs_ptl_cmd_union_g.ip_para_s.gprs_ip_1, gprs_network_cfg_para_g.gprs_ip_1, len);
|
memcpy(gprs_ptl_cmd_union_g.ip_para_s.gprs_ip_2, gprs_network_cfg_para_g.gprs_ip_2, len);
|
memcpy(pData, &gprs_ptl_cmd_union_g.ip_para_s, PROTOCOL_IP_PARA_LENGTH);
|
}
|
|
void Gprs_Protocol_SendClearCountHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ×ÜÁ¿ÇåÁã0x0225
|
{
|
pData[0] = set_result_g;
|
uint64_t cumulate_temp[2];
|
uint8_t len = sizeof(cumulate_temp);
|
cumulate_temp[0] = sys_realtime_data_g.measure_para_s.forward_cumulate_sc * 10000;
|
cumulate_temp[1] = sys_realtime_data_g.measure_para_s.forward_cumulate_wc * 10000;
|
|
memcpy(&pData[1], cumulate_temp, sizeof(cumulate_temp));
|
memset(&pData[1 + len], 0, 16);
|
}
|
|
void Gprs_Protocol_SendReadTimePointHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡ÈÕԼǼ±£´æÊ±¼äµã0x0231
|
{
|
uint8_t temp[10] = {0};
|
temp[0] = save_day_month_timing_g.set_hour_bcd;
|
temp[1] = save_day_month_timing_g.set_minute_bcd;
|
memcpy(pData, temp, sizeof(temp));
|
}
|
|
void Gprs_Protocol_SendReadHistoryHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÀúÊ·¼Ç¼0x0232
|
{
|
}
|
|
void Gprs_Protocol_SendReadValveRecordHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡·§ÃŲÙ×÷¼Ç¼0x0233
|
{
|
}
|
|
void Gprs_Protocol_SendReadModifyAccRecordHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÀÛ»ýÁ¿Ð޸ļǼ0x0234
|
{
|
}
|
|
void Gprs_Protocol_SendReadBalanceCloseValveHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡Óà¶î¹Ø·§0x0303
|
{
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.balance_small_value_1 = billing_alarm_cfg_g.balance_small_value[0] ;
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.balance_small_value_2 = billing_alarm_cfg_g.balance_small_value[1];
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.balance_small_value_3 = billing_alarm_cfg_g.balance_small_value[2];
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.balance_small_value_4 = billing_alarm_cfg_g.balance_small_value[3];
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.balance_small_value_5 = billing_alarm_cfg_g.balance_small_value[4];
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_1_need_close_valve_flag) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_1 = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_1_close_valve_type) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_1 = 1;
|
else
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_1 = 2;
|
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_2_need_close_valve_flag) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_2 = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_2_close_valve_type) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_2 = 1;
|
else
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_2 = 2;
|
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_3_need_close_valve_flag) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_3 = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_3_close_valve_type) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_3 = 1;
|
else
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_3 = 2;
|
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_4_need_close_valve_flag) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_4 = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_4_close_valve_type) == RESET)
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_4 = 1;
|
else
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_4 = 2;
|
gprs_ptl_cmd_union_g.balance_alarm_para_s.valve_cfg_flag_5 = 0;
|
memcpy(pData, &gprs_ptl_cmd_union_g.balance_alarm_para_s, PROTOCOL_BALANCE_ALARM_LENGTH);
|
}
|
|
void Gprs_Protocol_SendSetCloseValveKeyHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡¹Ø·§¿ØÖÆ×Ö0x0305
|
{
|
memcpy(pData, &valve_ctl_bytes_g, VALVE_CTL_LEN);
|
memset(&pData[VALVE_CTL_LEN],0,4);
|
}
|
|
void Gprs_Protocol_SendReadDontReportCloseValveHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÎÞÉϱ¨¹Ø·§ÌìÊý0x0307
|
{
|
pData[0] = billing_alarm_cfg_g.no_gprs_days;
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_gprs_need_close_valve_flag) == RESET)
|
pData[1] = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_gprs_close_valve_type) == RESET)
|
pData[1] = 1;
|
else
|
pData[1] = 2;
|
|
}
|
|
void Gprs_Protocol_SendReadDontUseGasDayHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÎÞÓÃÆø¹Ø·§ÌìÊý0x0309
|
{
|
pData[0] = billing_alarm_cfg_g.no_use_gas_days;
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_use_gas_need_close_valve_flag) == RESET)
|
pData[1] = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_use_gas_close_valve_type) == RESET)
|
pData[1] = 1;
|
else
|
pData[1] = 2;
|
}
|
|
void Gprs_Protocol_SendReadNoCountCloseValveHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÎÞÀÛ»ýÁ¿¹Ø·§0x0311
|
{
|
gprs_ptl_cmd_union_g.cumulate_flow_close_para_s.set_cumulate_flow_value = billing_alarm_cfg_g.cumulate_flow_value;
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,set_cumulate_need_close_valve_flag) == RESET)
|
gprs_ptl_cmd_union_g.cumulate_flow_close_para_s.valve_control_type = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,set_cumulate_close_valve_type) == RESET)
|
gprs_ptl_cmd_union_g.cumulate_flow_close_para_s.valve_control_type = 1;
|
else
|
gprs_ptl_cmd_union_g.cumulate_flow_close_para_s.valve_control_type = 2;
|
memcpy(pData,&gprs_ptl_cmd_union_g.cumulate_flow_close_para_s,PROTOCOL_FLOW_CLOSE_LENGTH);
|
}
|
|
void Gprs_Protocol_SendPayMoneysBackHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ³äǮӦ´ð·µ»Ø0x0401
|
{
|
int64_t balance_now = 0;
|
pData[0] = set_result_g;
|
balance_now = billing_real_para_g.balance_now * 1000;
|
memcpy(&pData[1], &balance_now, sizeof(int64_t));
|
}
|
|
void Gprs_Protocol_SendPriceNowInfHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ¶ÁÈ¡µ±Ç°¼Û¸ñÐÅÏ¢0x0403
|
{
|
uint16_t write_data_length = SYS_LADDER_PRICE_CFG_FORMAT_SIZE - SIZEOF_OF(LADDER_PRICE_CFG_PARA_T,reserve);
|
gprs_ptl_cmd_union_g.price_cfg_s.price_ver = ladder_price_cfg_para_new_g.price_ver;
|
gprs_ptl_cmd_union_g.price_cfg_s.set_price_type_mode = (uint8_t)ladder_price_cfg_para_new_g.set_price_type_mode;
|
gprs_ptl_cmd_union_g.price_cfg_s.normal_price_now = ladder_price_cfg_para_new_g.normal_price_now;
|
memcpy(&gprs_ptl_cmd_union_g.price_cfg_s.period_state,&ladder_price_cfg_para_new_g.period_state,write_data_length - 7);
|
memcpy(pData,&gprs_ptl_cmd_union_g.price_cfg_s,write_data_length);
|
}
|
|
void Gprs_Protocol_SetRecvSuccOrFail(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // ÉèÖýÓÊճɹ¦/ʧ°Ü
|
{
|
/*¹¹ÔìÊý¾Ý°üÊý¾Ý*/
|
pData[0] = set_result_g;
|
}
|
#define ALKA_EFFECTIVE_VOLTAGE_VALUE (60 - 45)
|
void Create_Send_NormalDataPack(GPRS_PROTOCOL_NORMAL_DATA_PACK_T *gprs_protocol_normal_data_pack_p,
|
SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T *send_save_data_p) // ʵʱÊý¾Ý°ü
|
{
|
float alka_per_temp = 100;
|
#if GPRS_HISTORY_OR_REAL_DATA
|
// ÀúÊ·Êý¾Ý
|
memcpy(gprs_protocol_normal_data_pack_p->sample_time, send_save_data_p->record_time, 6);
|
gprs_protocol_normal_data_pack_p->sc_cumulate = send_save_data_p->forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = send_save_data_p->forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = send_save_data_p->instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = send_save_data_p->instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = send_save_data_p->temperature;
|
gprs_protocol_normal_data_pack_p->pressure = send_save_data_p->pressure;
|
gprs_protocol_normal_data_pack_p->balance = send_save_data_p->balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = send_save_data_p->price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = send_save_data_p->lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = lith_bat_real_per_g; // ﮵ç°Ù·Ö±È
|
gprs_protocol_normal_data_pack_p->alka_vcc = send_save_data_p->alka_vcc;
|
alka_per_temp = (float)(send_save_data_p->alka_vcc - 45) / (float)ALKA_EFFECTIVE_VOLTAGE_VALUE * 100;
|
if(alka_per_temp > 100)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 100;
|
else if(alka_per_temp < 0)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 0;
|
else
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = alka_per_temp;
|
memcpy(gprs_protocol_normal_data_pack_p->status, send_save_data_p->sys_state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
#else
|
// ʵʱÊý¾Ý
|
gprs_protocol_normal_data_pack_p->sample_time[0] = calendar_g.year & 0xFF;
|
gprs_protocol_normal_data_pack_p->sample_time[1] = calendar_g.month;
|
gprs_protocol_normal_data_pack_p->sample_time[2] = calendar_g.day;
|
gprs_protocol_normal_data_pack_p->sample_time[3] = calendar_g.hour;
|
gprs_protocol_normal_data_pack_p->sample_time[4] = calendar_g.minute;
|
gprs_protocol_normal_data_pack_p->sample_time[5] = calendar_g.second;
|
gprs_protocol_normal_data_pack_p->sc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = sys_realtime_data_g.measure_para_s.instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = sys_realtime_data_g.measure_para_s.instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = sys_realtime_data_g.measure_para_s.temperature;
|
gprs_protocol_normal_data_pack_p->pressure = sys_realtime_data_g.measure_para_s.pressure;
|
gprs_protocol_normal_data_pack_p->balance = billing_real_para_g.balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = billing_real_para_g.price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = sys_realtime_data_g.state_para_s.lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = lith_bat_real_per_g; // ﮵ç°Ù·Ö±È
|
gprs_protocol_normal_data_pack_p->alka_vcc = sys_realtime_data_g.state_para_s.alka_vcc;
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = (sys_realtime_data_g.state_para_s.alka_vcc - 60) * 100 / ALKA_EFFECTIVE_VOLTAGE_VALUE;
|
memcpy(gprs_protocol_normal_data_pack_p->status, (void *)&sys_admin_g.sys_admin.state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
// gprs_protocol_normal_data_pack_p->reserved[19] = 0xFF;
|
#endif
|
}
|
void Create_Send_NormalDataPack1(GPRS_PROTOCOL_NORMAL_DATA_PACK_1_T *gprs_protocol_normal_data_pack_p,
|
SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T *send_save_data_p) // ʵʱÊý¾Ý°ü1 - Ä£ÄâÊý¾Ý²âÊÔ
|
{
|
float alka_per_temp = 100;
|
#if GPRS_HISTORY_OR_REAL_DATA
|
// ÀúÊ·Êý¾Ý
|
memcpy(gprs_protocol_normal_data_pack_p->sample_time, send_save_data_p->record_time, 6);
|
gprs_protocol_normal_data_pack_p->sc_cumulate = send_save_data_p->forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = send_save_data_p->forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = send_save_data_p->instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = send_save_data_p->instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = send_save_data_p->temperature;
|
gprs_protocol_normal_data_pack_p->pressure = send_save_data_p->pressure;
|
gprs_protocol_normal_data_pack_p->balance = send_save_data_p->balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = send_save_data_p->price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = send_save_data_p->lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = lith_bat_real_per_g;
|
gprs_protocol_normal_data_pack_p->alka_vcc = send_save_data_p->alka_vcc;
|
alka_per_temp = (float)(send_save_data_p->alka_vcc - 45) / (float)ALKA_EFFECTIVE_VOLTAGE_VALUE * 100;
|
if(alka_per_temp > 100)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 100;
|
else if(alka_per_temp < 0)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 0;
|
else
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = alka_per_temp;
|
memcpy(gprs_protocol_normal_data_pack_p->status, send_save_data_p->sys_state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
|
gprs_protocol_normal_data_pack_p->signal_noise_ratio_a1 = send_save_data_p->snr_up;
|
gprs_protocol_normal_data_pack_p->signal_noise_ratio_b1 = send_save_data_p->snr_down;
|
gprs_protocol_normal_data_pack_p->gain_a1 = send_save_data_p->signal_gain_up;
|
gprs_protocol_normal_data_pack_p->gain_b1 = send_save_data_p->signal_gain_down;
|
gprs_protocol_normal_data_pack_p->signal_intensity_a1 = send_save_data_p->signal_intensity_up;
|
gprs_protocol_normal_data_pack_p->signal_intensity_b1 = send_save_data_p->signal_intensity_down;
|
gprs_protocol_normal_data_pack_p->channel_time_a1 = send_save_data_p->tof_up;
|
gprs_protocol_normal_data_pack_p->channel_time_b1 = send_save_data_p->tof_down;
|
gprs_protocol_normal_data_pack_p->Channel_sound_v = send_save_data_p->sound_vel;
|
gprs_protocol_normal_data_pack_p->Channel_flow_rate = send_save_data_p->flow_vel;
|
#else
|
// ʵʱÊý¾Ý
|
gprs_protocol_normal_data_pack_p->sample_time[0] = calendar_g.year & 0xFF;
|
gprs_protocol_normal_data_pack_p->sample_time[1] = calendar_g.month;
|
gprs_protocol_normal_data_pack_p->sample_time[2] = calendar_g.day;
|
gprs_protocol_normal_data_pack_p->sample_time[3] = calendar_g.hour;
|
gprs_protocol_normal_data_pack_p->sample_time[4] = calendar_g.minute;
|
gprs_protocol_normal_data_pack_p->sample_time[5] = calendar_g.second;
|
gprs_protocol_normal_data_pack_p->sc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = sys_realtime_data_g.measure_para_s.instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = sys_realtime_data_g.measure_para_s.instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = sys_realtime_data_g.measure_para_s.temperature;
|
gprs_protocol_normal_data_pack_p->pressure = sys_realtime_data_g.measure_para_s.pressure;
|
gprs_protocol_normal_data_pack_p->balance = billing_real_para_g.balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = billing_real_para_g.price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = sys_realtime_data_g.state_para_s.lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = sys_realtime_data_g.state_para_s.lith_vcc * 100 / 36; // ﮵ç°Ù·Ö±È
|
gprs_protocol_normal_data_pack_p->alka_vcc = sys_realtime_data_g.state_para_s.alka_vcc;
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = sys_realtime_data_g.state_para_s.alka_vcc * 100 / 60;
|
memcpy(gprs_protocol_normal_data_pack_p->status, (void *)&sys_admin_g.sys_admin.state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
#endif
|
}
|
|
void Create_Send_NormalDataPack2(GPRS_PROTOCOL_NORMAL_DATA_PACK_2_T *gprs_protocol_normal_data_pack_p,
|
SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T *send_save_data_p) // ʵʱÊý¾Ý°ü1 - Ä£ÄâÊý¾Ý²âÊÔ
|
{
|
float alka_per_temp = 100;
|
#if GPRS_HISTORY_OR_REAL_DATA
|
// ÀúÊ·Êý¾Ý
|
memcpy(gprs_protocol_normal_data_pack_p->sample_time, send_save_data_p->record_time, 6);
|
gprs_protocol_normal_data_pack_p->sc_cumulate = send_save_data_p->forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = send_save_data_p->forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = send_save_data_p->instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = send_save_data_p->instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = send_save_data_p->temperature;
|
gprs_protocol_normal_data_pack_p->pressure = send_save_data_p->pressure;
|
gprs_protocol_normal_data_pack_p->balance = send_save_data_p->balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = send_save_data_p->price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = send_save_data_p->lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = lith_bat_real_per_g;
|
gprs_protocol_normal_data_pack_p->alka_vcc = send_save_data_p->alka_vcc;
|
alka_per_temp= (float)(send_save_data_p->alka_vcc - 45) / (float)ALKA_EFFECTIVE_VOLTAGE_VALUE * 100;
|
if(alka_per_temp > 100)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 100;
|
else if(alka_per_temp < 0)
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = 0;
|
else
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = alka_per_temp;
|
memcpy(gprs_protocol_normal_data_pack_p->status, send_save_data_p->sys_state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
|
gprs_protocol_normal_data_pack_p->signal_noise_ratio_a3 = send_save_data_p->snr_up;
|
gprs_protocol_normal_data_pack_p->signal_noise_ratio_b3 = send_save_data_p->snr_down;
|
gprs_protocol_normal_data_pack_p->gain_a3 = send_save_data_p->signal_gain_up;
|
gprs_protocol_normal_data_pack_p->gain_b3 = send_save_data_p->signal_gain_down;
|
gprs_protocol_normal_data_pack_p->signal_intensity_a3 = send_save_data_p->signal_intensity_up;
|
gprs_protocol_normal_data_pack_p->signal_intensity_b3 = send_save_data_p->signal_intensity_down;
|
gprs_protocol_normal_data_pack_p->channel_time_a3 = send_save_data_p->tof_up;
|
gprs_protocol_normal_data_pack_p->channel_time_b3 = send_save_data_p->tof_down;
|
gprs_protocol_normal_data_pack_p->Channel_sound_v3 = send_save_data_p->sound_vel;
|
gprs_protocol_normal_data_pack_p->Channel_flow_rate3 = send_save_data_p->flow_vel;
|
#else
|
gprs_protocol_normal_data_pack_p->sample_time[0] = calendar_g.year & 0xFF;
|
gprs_protocol_normal_data_pack_p->sample_time[1] = calendar_g.month;
|
gprs_protocol_normal_data_pack_p->sample_time[2] = calendar_g.day;
|
gprs_protocol_normal_data_pack_p->sample_time[3] = calendar_g.hour;
|
gprs_protocol_normal_data_pack_p->sample_time[4] = calendar_g.minute;
|
gprs_protocol_normal_data_pack_p->sample_time[5] = calendar_g.second;
|
gprs_protocol_normal_data_pack_p->sc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_cumulate = sys_realtime_data_g.measure_para_s.forward_cumulate_wc * 10000;
|
gprs_protocol_normal_data_pack_p->sc_instant = sys_realtime_data_g.measure_para_s.instant_sc * 10000;
|
gprs_protocol_normal_data_pack_p->wc_instant = sys_realtime_data_g.measure_para_s.instant_wc * 10000;
|
gprs_protocol_normal_data_pack_p->temperature = sys_realtime_data_g.measure_para_s.temperature;
|
gprs_protocol_normal_data_pack_p->pressure = sys_realtime_data_g.measure_para_s.pressure;
|
gprs_protocol_normal_data_pack_p->balance = billing_real_para_g.balance_now * 1000;
|
gprs_protocol_normal_data_pack_p->uint_price = billing_real_para_g.price_now;
|
gprs_protocol_normal_data_pack_p->lith_vcc = sys_realtime_data_g.state_para_s.lith_vcc;
|
gprs_protocol_normal_data_pack_p->lith_vcc_per = sys_realtime_data_g.state_para_s.lith_vcc * 100 / 36; // ﮵ç°Ù·Ö±È
|
gprs_protocol_normal_data_pack_p->alka_vcc = sys_realtime_data_g.state_para_s.alka_vcc;
|
gprs_protocol_normal_data_pack_p->alka_vcc_per = sys_realtime_data_g.state_para_s.alka_vcc * 100 / 60;
|
memcpy(gprs_protocol_normal_data_pack_p->status, (void *)&sys_admin_g.sys_admin.state_bytes, SYS_STATUS_BYTES_TYPE_LENGTH);
|
#endif
|
}
|
|
void Gprs_Protocol_SendNormalDataHandler(uint8_t *pData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p) // Êý¾Ý°ü
|
{
|
/*¹¹ÔìÖ¡Í·¿ØÖÆÂë*/
|
gprs_protocol_head_tail_p->gprs_protocol_head.cmd_code_u16 = PROTOCOL_NORMAL_SEND_CMD_U16; // 0x0101ÃüÁî±êʶ
|
/*¹¹ÔìÊý¾Ý°üÍ·*/
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.equipment_type |= (sys_admin_g.sys_admin.state_bytes.billing_type << 6);
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.net_info = 0; // ÍøÂçÐÅÏ¢ 0-δ֪ 0x90-NB 0x40-4G
|
// Èí¼þ°æ±¾ºÅ
|
memcpy(gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.software_version,master_soft_hard_para_g.master_firmware_ver,4);
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.account_state = __SYS_STATUS_BYTES_GET(account_state); // ÕË»§×´Ì¬
|
#if GPRS_PROTOCOL_NORMAL_DATA_PACK_1
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.data_package_format = 1;
|
#elif GPRS_PROTOCOL_NORMAL_DATA_PACK_2
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.data_package_format = 2;
|
#else
|
gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.data_package_format = 0; // ͨÓÃÊý¾Ý°ü¸ñʽ
|
#endif
|
/*¿½±´Êý¾Ý°üÍ·¹Ì¶¨Êý¾Ý*/
|
memcpy(pData, &gprs_protocol_head_tail_p->gprs_protocol_normal_data_head, PROTOCOL_NORMAL_DATA_HEAD_LENGTH);
|
|
for (uint8_t i = 0; i < gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.data_pack_num; i++)
|
{
|
SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T temp_buffer = {0};
|
#if GPRS_HISTORY_OR_REAL_DATA
|
E2p_GPIO_Clk_Init();
|
gprs_save_send_para_g.start_addr = SendFlowData_Read_1_Data((uint8_t *)&temp_buffer, gprs_save_send_para_g.start_addr);
|
#endif
|
/*¹¹ÔìÊý¾Ý°ü¶¯Ì¬Êý¾Ý*/
|
#if GPRS_PROTOCOL_NORMAL_DATA_PACK_1
|
Create_Send_NormalDataPack1(&gprs_protocol_normal_data_pack_1_g, &temp_buffer);
|
/*¿½±´Êý¾Ý¶¯Ì¬Êý¾Ý*/
|
memcpy(&pData[PROTOCOL_NORMAL_DATA_HEAD_LENGTH + (i * PROTOCOL_NORMAL_DATA_PACK_1_LENGTH)],
|
&gprs_protocol_normal_data_pack_1_g, PROTOCOL_NORMAL_DATA_PACK_1_LENGTH);
|
#elif GPRS_PROTOCOL_NORMAL_DATA_PACK_2
|
Create_Send_NormalDataPack2(&gprs_protocol_normal_data_pack_2_g, &temp_buffer);
|
/*¿½±´Êý¾Ý¶¯Ì¬Êý¾Ý*/
|
memcpy(&pData[PROTOCOL_NORMAL_DATA_HEAD_LENGTH + (i * PROTOCOL_NORMAL_DATA_PACK_2_LENGTH)],
|
&gprs_protocol_normal_data_pack_2_g, PROTOCOL_NORMAL_DATA_PACK_2_LENGTH);
|
#else
|
Create_Send_NormalDataPack(&gprs_protocol_normal_data_pack_g, &temp_buffer);
|
/*¿½±´Êý¾Ý¶¯Ì¬Êý¾Ý*/
|
memcpy(&pData[PROTOCOL_NORMAL_DATA_HEAD_LENGTH + (i * PROTOCOL_NORMAL_DATA_PACK_LENGTH)],
|
&gprs_protocol_normal_data_pack_g, PROTOCOL_NORMAL_DATA_PACK_LENGTH);
|
#endif
|
}
|
// ·¢ËÍÍêÒªÇå³ý·¢ËÍÊý¾Ý½á¹¹ÌåÖб¨¾¯×ֺ͹ط§ÔÒò×Ö
|
if (gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.valve_close_reason != AV_NORMAL)
|
memset(&gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.valve_close_reason, AV_NORMAL, sizeof(gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.valve_close_reason));
|
for (uint8_t i = 0; i < 7; i++)
|
{
|
if (gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.alarm_word[i] != 0)
|
memset(&gprs_protocol_head_tail_p->gprs_protocol_normal_data_head.alarm_word[i], 0, sizeof(uint16_t));
|
}
|
}
|
|
/*GPRSÐÒé·¢ËÍÊý¾ÝÅäÖÃ*/
|
void Gprs_Protocol_SendDataConfig(uint8_t send_type, uint8_t *pSendData, GPRS_PROTOCOL_HEAD_TAIL_T *gprs_protocol_head_tail_p)
|
{
|
uint8_t i = 0;
|
/*¹¹ÔìÐÒé°üÍ·*/
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[0] = calendar_g.Year; // ʱ¼ä
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[1] = calendar_g.Month;
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[2] = calendar_g.Date;
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[3] = calendar_g.Hour;
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[4] = calendar_g.Minute;
|
gprs_protocol_head_tail_p->gprs_protocol_head.device_time[5] = calendar_g.Second;
|
/*Õý³£·¢ËÍÊý¾ÝÄÚÈÝ×ÜÖ¡ÊýÐèÒªµ¥¶À¼ÆËã*/
|
if (send_type != PROTOCOL_NORMAL_SEND_CMD)
|
gprs_protocol_head_tail_p->gprs_protocol_head.frame_num = gprs_protocol_head_tail_p->gprs_protocol_head.frame_sum = 1;
|
/*¹¹ÔìÊý¾ÝÄÚÈݳ¤¶È*/
|
gprs_protocol_head_tail_p->gprs_protocol_head.data_content_length = gprs_protocol_encrypt_para_g.padding_total_length;
|
/*Ñ¡Ôñ·¢ËÍÊý¾ÝÖ¡ÀàÐÍ*/
|
for (i = 0; i < GPRS_PROTOCOL_SEND_FUNC_TABLE_NUM; i++)
|
{
|
/*²é±í*/
|
if (gprs_protocol_send_tab_func[i].gprs_protocol_cmd_table == send_type && gprs_protocol_send_tab_func[i].GprsProtocolSendFuncHandler != NULL)
|
{
|
gprs_protocol_send_tab_func[i].GprsProtocolSendFuncHandler(&pSendData[PROTOCOL_HEAD_LENGTH], gprs_protocol_head_tail_p);
|
if (KEY_VERSION >> 7)
|
Gprs_Send_Data_Aes128_Ecb_Encrypt_Padding(&pSendData[PROTOCOL_HEAD_LENGTH], &gprs_protocol_encrypt_para_g); // Ìî³äºÍ¼ÓÃÜ221124
|
break;
|
}
|
}
|
/*¿½±´Í·²¿¹Ì¶¨Êý¾ÝÖÁ·¢ËÍÊý×é*/
|
memcpy(pSendData, &gprs_protocol_head_tail_p->gprs_protocol_head, PROTOCOL_HEAD_LENGTH); // ¿½±´Êý¾ÝÖ¡Í·²¿Êý¾Ý
|
/*crcУÑé*/
|
gprs_protocol_head_tail_p->gprs_protocol_tail.check_crc = usMBCRC16(0xFFFF,pSendData, PROTOCOL_HEAD_LENGTH + gprs_protocol_encrypt_para_g.padding_total_length); // CRCУÑé
|
|
/*¿½±´Î²²¿¹Ì¶¨Êý¾ÝÖÁ·¢ËÍÊý×é*/
|
memcpy(&pSendData[PROTOCOL_HEAD_LENGTH + gprs_protocol_encrypt_para_g.padding_total_length], &gprs_protocol_head_tail_p->gprs_protocol_tail, PROTOCOL_TAIL_LENGTH);
|
}
|
|
/************************************** Recv Data **************************************************************/
|
/************************************** Recv Data **************************************************************/
|
/************************************** Recv Data **************************************************************/
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvNormalDataHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉϸæÊý¾ÝÖ¡0x0101
|
{
|
gprs_protocol_head_tail_g.gprs_protocol_head.frame_num++;
|
if (gprs_save_send_para_g.last_remain_data_num >= SEND_DATA_PACK_MAX)
|
gprs_save_send_para_g.last_remain_data_num -= SEND_DATA_PACK_MAX;
|
else
|
gprs_save_send_para_g.last_remain_data_num = 0;
|
return PROTOCOL_NORMAL_SEND_CMD;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvEndHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ½áÊøÖ¡0x0102
|
{
|
uint8_t real_time[6] = {calendar_g.Year, calendar_g.Month, calendar_g.Date, calendar_g.Hour, calendar_g.Minute, calendar_g.Second}; // µ±Ç°Ê±¼ä
|
int difference_value = Datecmp(pGprs_ptl_cmd_union->union_buff, real_time);
|
difference_value = abs(difference_value); // ¾ø¶ÔÖµ
|
if (difference_value >= AUTO_CALI_TIME_SEC_MAX)
|
{
|
/*ÀúÊ·¼Ç¼¹¹Ôì*/
|
timing_log_g.record_time_before[0] = calendar_g.Year;
|
timing_log_g.record_time_before[1] = calendar_g.Month;
|
timing_log_g.record_time_before[2] = calendar_g.Date;
|
timing_log_g.record_time_before[3] = calendar_g.Hour;
|
timing_log_g.record_time_before[4] = calendar_g.Minute;
|
timing_log_g.record_time_before[5] = calendar_g.Second;
|
timing_log_g.timing_cause = TC_AUTO;
|
Set_Sys_Rtc_Time(pGprs_ptl_cmd_union->union_buff[0], pGprs_ptl_cmd_union->union_buff[1], pGprs_ptl_cmd_union->union_buff[2],
|
pGprs_ptl_cmd_union->union_buff[3], pGprs_ptl_cmd_union->union_buff[4], pGprs_ptl_cmd_union->union_buff[5],1);
|
Get_Sys_Rtc_Time(&calendar_g); //ÉèÖÃÍêʱ¼äºóÁ¢Âí¸üÐÂÒ»ÏÂʱ¼ä
|
RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g);//´¢´æ
|
__PERIOD_FIRST_CALC_FLAG_SET(gprs_send_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(alka_get_power_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(lith_get_power_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(mcu_get_temperature_period);
|
}
|
gprs_save_send_para_g.last_remain_data_num = 0;
|
return PROTOCOL_END_STATUS;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvOperaKeyHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // Ï·¢ÔËÓªÃÜÔ¿0x0103
|
{
|
/*8×éÕýʽÃÜÔ¿£¬Ã¿×é16×Ö½Ú*/
|
memcpy(gprs_network_cfg_para_g.aes128_secret_key[1], pGprs_ptl_cmd_union->secret_keys, sizeof(pGprs_ptl_cmd_union->secret_keys));
|
memcpy(KVer_AES_128,gprs_network_cfg_para_g.aes128_secret_key[1],sizeof(KVer_AES_128));
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_GPRS_NETWORK_CFG],1); // ´æ´¢
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvBackSettleInfoHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÍÆËͺǫ́½áËãÐÅÏ¢0x0104
|
{
|
uint8_t i = 0,j = 0;
|
int64_t balance_temp_int = billing_real_para_g.balance_now * 1000,
|
cumulate_sc_temp_int = sys_realtime_data_g.measure_para_s.forward_cumulate_sc * 100;
|
cumulate_sc_temp_int *= 100;//·Å´ó10000±¶£¬µ«±£Áô2λСÊý
|
if(billing_real_para_g.price_type_mode_now != pGprs_ptl_cmd_union->settle_data_s.settle_ladder)
|
{
|
billing_real_para_g.price_type_mode_now = pGprs_ptl_cmd_union->settle_data_s.settle_ladder;
|
i++;
|
}
|
switch(pGprs_ptl_cmd_union->settle_data_s.settle_ladder)
|
{
|
case BPM_NORMAL:
|
if(ladder_price_cfg_para_true_g.normal_price_now != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.normal_price_now = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
case BPM_LADDER_1:
|
if(ladder_price_cfg_para_true_g.set_ladder_price[0] != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.set_ladder_price[0] = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
case BPM_LADDER_2:
|
if(ladder_price_cfg_para_true_g.set_ladder_price[1] != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.set_ladder_price[1] = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
case BPM_LADDER_3:
|
if(ladder_price_cfg_para_true_g.set_ladder_price[2] != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.set_ladder_price[2] = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
case BPM_LADDER_4:
|
if(ladder_price_cfg_para_true_g.set_ladder_price[3] != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.set_ladder_price[3] = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
case BPM_LADDER_5:
|
if(ladder_price_cfg_para_true_g.set_ladder_price[4] != pGprs_ptl_cmd_union->settle_data_s.settle_price)
|
{
|
billing_real_para_g.price_now = ladder_price_cfg_para_true_g.set_ladder_price[4] = pGprs_ptl_cmd_union->settle_data_s.settle_price;
|
j++;
|
}
|
break;
|
default:break;
|
}
|
if (balance_temp_int != pGprs_ptl_cmd_union->settle_data_s.settle_balance)
|
{
|
if((__SYS_STATUS_BYTES_GET(virtual_billing) == SET) &&
|
(cumulate_sc_temp_int > pGprs_ptl_cmd_union->settle_data_s.settle_cumulate_sc)) //µ±Ç°ÀÛ»ýÁ¿ > ½áËãµÄÀÛ»ýÁ¿£¬ÐèÓà¶îͬ²½
|
{
|
//ÐéÄâ¼Æ·ÑÓà¶î = Ï·¢Óà¶î - ((ʵ¼ÊÀÛ»ýÁ¿ - ½áËãÀÛ»ýÁ¿) * Ï·¢µ¥¼Û)
|
billing_real_para_g.balance_now = (pGprs_ptl_cmd_union->settle_data_s.settle_balance * 0.001) -
|
(((cumulate_sc_temp_int - pGprs_ptl_cmd_union->settle_data_s.settle_cumulate_sc) * 0.0001) * (billing_real_para_g.price_now * 0.0001));
|
}
|
else
|
billing_real_para_g.balance_now = pGprs_ptl_cmd_union->settle_data_s.settle_balance * 0.001;
|
i++;
|
}
|
// if (pGprs_ptl_cmd_union->settle_data_s.settle_balance_small_state & 0x01)
|
// __SYS_STATUS_ALARM_BYTES_SET(balance_small_1);
|
// else if (pGprs_ptl_cmd_union->settle_data_s.settle_balance_small_state & 0x02)
|
// __SYS_STATUS_ALARM_BYTES_SET(balance_small_2);
|
// else if (pGprs_ptl_cmd_union->settle_data_s.settle_balance_small_state & 0x04)
|
// __SYS_STATUS_ALARM_BYTES_SET(balance_small_3);
|
// else if (pGprs_ptl_cmd_union->settle_data_s.settle_balance_small_state & 0x08)
|
// __SYS_STATUS_ALARM_BYTES_SET(balance_small_4);
|
/*´¢´æ*/
|
if(j)
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_LADDER_PRICE_CFG_TRUE],1);
|
if(i == 0)
|
set_result_g = SUCCESS_0;
|
else
|
set_result_g = RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvStartEndCountHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // Æô¡¢Í£ÓÃ0x0201
|
{
|
if (pGprs_ptl_cmd_union->account_state == 1) // ÆôÓÃ
|
{
|
sys_admin_g.sys_admin.state_bytes.account_state = sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.account_state = SET;
|
billing_real_para_g.balance_now = 0;
|
set_result_g = (ErrorStatus_STM32)(Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_FUNC_CFG_BYTES],1) |
|
RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g)); // ´æ´¢,²¢·µ»Ø½á¹û
|
}
|
else if (pGprs_ptl_cmd_union->account_state == 2) // Í£ÓÃ
|
{
|
sys_admin_g.sys_admin.state_bytes.account_state = sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.account_state = RESET;
|
// billing_real_para_g.balance_now = 10;
|
// /*¹Ø·§¿ØÖÆ×ÖÈ«²¿½ûÓÃ*/
|
// memset(&valve_ctl_bytes_g, 0, VALVE_CTL_LEN);
|
// set_result_g = (ErrorStatus_STM32)(Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_FUNC_CFG_BYTES],1) |
|
// RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g));
|
set_result_g = SUCCESS_0;
|
}
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetFunParaHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖù¦ÄܲÎÊý0x0202
|
{
|
uint8_t i = 0;
|
if (pGprs_ptl_cmd_union->func_para_s.lcd_display_mode != sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.lcd_mode)
|
{
|
i++;
|
sys_admin_g.sys_admin.state_bytes.lcd_mode = sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.lcd_mode =
|
pGprs_ptl_cmd_union->func_para_s.lcd_display_mode;
|
}
|
if (pGprs_ptl_cmd_union->func_para_s.virtual_billing_state != sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.virtual_billing)
|
{
|
i++;
|
sys_admin_g.sys_admin.state_bytes.virtual_billing = sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.virtual_billing =
|
pGprs_ptl_cmd_union->func_para_s.virtual_billing_state;
|
}
|
if(pGprs_ptl_cmd_union->func_para_s.display_balance != __SYS_FUNC_CFG_BYTES_GET(balance_display_set))
|
{
|
i++;
|
sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.balance_display_set = pGprs_ptl_cmd_union->func_para_s.display_balance;
|
}
|
if(pGprs_ptl_cmd_union->func_para_s.display_price != __SYS_FUNC_CFG_BYTES_GET(price_display_set))
|
{
|
i++;
|
sys_func_cfg_bytes_g.sys_func_cfg_bytes_s.price_display_set = pGprs_ptl_cmd_union->func_para_s.display_price;
|
}
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
if(i != 0)
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_FUNC_CFG_BYTES],1); // ´æ´¢
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetAlarmContHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖñ¨¾¯¿ØÖÆ×Ö0x0204
|
{
|
uint16_t temp_alarm_ctl_byte_2 = sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1] & 0xFFFC,
|
temp_alarm_send_byte_2 = sys_alarm_send_bytes_g.alarm_ctl_send_union[1] & 0xFFFC;
|
/*before*/
|
memcpy(para_amend_log_g.para_amend_union.sys_alarm_ctl_bytes_amend_s.alarm_ctl_bytes_before,&sys_alarm_ctl_bytes_g,SYS_ALARM_CTL_BYTES_TYPE_LENGTH);
|
memcpy(para_amend_log_g.para_amend_union.sys_alarm_ctl_bytes_amend_s.alarm_send_bytes_before,&sys_alarm_send_bytes_g,SYS_ALARM_SEND_BYTES_TYPE_LENGTH);
|
/*now*/
|
/*ÓÉÓÚ¡°¼Æ·ÑÓë·§±¨¾¯¿ØÖÆ/Éϱ¨×Ö¡±µ¥¶ÀÔÚ¸÷ÖÖÓà¶î/Ìõ¼þ¹Ø·§ÃüÁîÖÐÐ޸ģ¬ËùÒÔÔÚ´Ë´¦ÃüÁî²»ÐÞ¸Ä*/
|
memcpy(&sys_alarm_ctl_bytes_g,pGprs_ptl_cmd_union->union_buff,2);
|
sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1] = temp_alarm_ctl_byte_2 | (pGprs_ptl_cmd_union->union_buff[2] & 0x03);
|
memcpy(&sys_alarm_ctl_bytes_g.alarm_ctl_send_union[2], &pGprs_ptl_cmd_union->union_buff[4], SYS_ALARM_CTL_BYTES_TYPE_LENGTH - 4);
|
|
memcpy(&sys_alarm_send_bytes_g,&pGprs_ptl_cmd_union->union_buff[SYS_ALARM_CTL_BYTES_TYPE_LENGTH],2);
|
sys_alarm_send_bytes_g.alarm_ctl_send_union[1] = temp_alarm_send_byte_2 | (pGprs_ptl_cmd_union->union_buff[SYS_ALARM_CTL_BYTES_TYPE_LENGTH + 2] & 0x03);
|
memcpy(&sys_alarm_send_bytes_g.alarm_ctl_send_union[2], &pGprs_ptl_cmd_union->union_buff[SYS_ALARM_CTL_BYTES_TYPE_LENGTH + 4], SYS_ALARM_SEND_BYTES_TYPE_LENGTH - 4);
|
|
memcpy(para_amend_log_g.para_amend_union.sys_alarm_ctl_bytes_amend_s.alarm_ctl_bytes_now,&sys_alarm_ctl_bytes_g,SYS_ALARM_CTL_BYTES_TYPE_LENGTH);
|
memcpy(para_amend_log_g.para_amend_union.sys_alarm_ctl_bytes_amend_s.alarm_send_bytes_now,&sys_alarm_send_bytes_g,SYS_ALARM_SEND_BYTES_TYPE_LENGTH);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = ALARM_CTL_SEND_BYTES_AMEND;
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
set_result_g = (ErrorStatus_STM32)(Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_CTL_BYTES],1) |
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_SEND_BYTES],1)); // ´æ´¢
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetSendCycleHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // Éϱ¨ÖÜÆÚÉèÖÃ0x0206
|
{
|
uint8_t i = 0;
|
if(gprs_network_cfg_para_g.gprs_interval_type != pGprs_ptl_cmd_union->send_cfg_s.gprs_interval_type)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_interval_type = (GPRS_INTERVAL_MEANS)pGprs_ptl_cmd_union->send_cfg_s.gprs_interval_type;
|
}
|
if(gprs_network_cfg_para_g.gprs_send_period_min_time != pGprs_ptl_cmd_union->send_cfg_s.gprs_send_period_min_time)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_send_period_min_time = pGprs_ptl_cmd_union->send_cfg_s.gprs_send_period_min_time;
|
__PERIOD_FIRST_CALC_FLAG_SET(gprs_send_period);
|
}
|
if(memcmp(gprs_network_cfg_para_g.gprs_reference_time_bcd,pGprs_ptl_cmd_union->send_cfg_s.gprs_reference_time_bcd,2) != 0)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_reference_time_bcd[0] = pGprs_ptl_cmd_union->send_cfg_s.gprs_reference_time_bcd[0];
|
gprs_network_cfg_para_g.gprs_reference_time_bcd[1] = pGprs_ptl_cmd_union->send_cfg_s.gprs_reference_time_bcd[1];
|
}
|
if(gprs_network_cfg_para_g.gprs_timed_number != pGprs_ptl_cmd_union->send_cfg_s.gprs_timed_number)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_timed_number = pGprs_ptl_cmd_union->send_cfg_s.gprs_timed_number;
|
}
|
if(memcmp(gprs_network_cfg_para_g.gprs_timing_time_bcd,pGprs_ptl_cmd_union->send_cfg_s.gprs_timing_time_bcd,
|
sizeof(pGprs_ptl_cmd_union->send_cfg_s.gprs_timing_time_bcd)) != 0)
|
{
|
i++;
|
memcpy(gprs_network_cfg_para_g.gprs_timing_time_bcd, pGprs_ptl_cmd_union->send_cfg_s.gprs_timing_time_bcd,
|
sizeof(pGprs_ptl_cmd_union->send_cfg_s.gprs_timing_time_bcd));
|
}
|
if(gprs_network_cfg_para_g.gprs_timeout != pGprs_ptl_cmd_union->send_cfg_s.gprs_timeout)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_timeout = pGprs_ptl_cmd_union->send_cfg_s.gprs_timeout;
|
}
|
if(gprs_network_cfg_para_g.gprs_restart_send_interval_min_time != pGprs_ptl_cmd_union->send_cfg_s.gprs_restart_send_interval_min_time)
|
{
|
i++;
|
gprs_network_cfg_para_g.gprs_restart_send_interval_min_time = pGprs_ptl_cmd_union->send_cfg_s.gprs_restart_send_interval_min_time;
|
}
|
gprs_network_cfg_para_g.gprs_restart_number = pGprs_ptl_cmd_union->send_cfg_s.gprs_restart_number;
|
pGprs_ptl_cmd_union->send_cfg_s.pack_or_independent_data = 0; // 1 = ´ò°üÉÏ·¢ 0 = ʵʱÉÏ·¢
|
if(gprs_network_cfg_para_g.save_data_period_min_time != pGprs_ptl_cmd_union->send_cfg_s.save_data_period_min_time)
|
{
|
i++;
|
gprs_network_cfg_para_g.save_data_period_min_time = pGprs_ptl_cmd_union->send_cfg_s.save_data_period_min_time;
|
}
|
// pGprs_ptl_cmd_union->send_cfg_s.save_reference_time_bcd; //²É¼¯¡°·¢ËÍÊý¾Ý¡±µÄ»ù׼ʱ¼ä
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
if(i != 0)
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_GPRS_NETWORK_CFG],1); // ´æ´¢
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetMeterParaHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖöԽÓÒDZí²ÎÊý0x0208
|
{
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetTimeHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // УʱÈÎÎñ0x0221
|
{
|
if (Set_Sys_Rtc_Time(pGprs_ptl_cmd_union->union_buff[0], pGprs_ptl_cmd_union->union_buff[1], pGprs_ptl_cmd_union->union_buff[2],
|
pGprs_ptl_cmd_union->union_buff[3], pGprs_ptl_cmd_union->union_buff[4], pGprs_ptl_cmd_union->union_buff[5],1) == SUCCESS_0)
|
{
|
/*ÀúÊ·¼Ç¼¹¹Ôì*/
|
timing_log_g.record_time_before[0] = calendar_g.Year;
|
timing_log_g.record_time_before[1] = calendar_g.Month;
|
timing_log_g.record_time_before[2] = calendar_g.Date;
|
timing_log_g.record_time_before[3] = calendar_g.Hour;
|
timing_log_g.record_time_before[4] = calendar_g.Minute;
|
timing_log_g.record_time_before[5] = calendar_g.Second;
|
timing_log_g.timing_cause = TC_GPRS;
|
Get_Sys_Rtc_Time(&calendar_g); //ÉèÖÃÍêʱ¼äºóÁ¢Âí¸üÐÂÒ»ÏÂʱ¼ä
|
__PERIOD_FIRST_CALC_FLAG_SET(gprs_send_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(alka_get_power_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(lith_get_power_period);
|
__PERIOD_FIRST_CALC_FLAG_SET(mcu_get_temperature_period);
|
set_result_g = RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g);//´¢´æ
|
}
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetIpaddrHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // IPµØÖ·ÉèÖÃ0x0222
|
{
|
uint8_t len = SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_ip_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_port_1) +
|
SIZEOF_OF(GPRS_NETWORK_CFG_PARA_T, gprs_link_type_1);
|
// pGprs_ptl_cmd_union->ip_para_s.status_ip_1;//Æô¶¯×´Ì¬
|
// pGprs_ptl_cmd_union->ip_para_s.status_ip_2;
|
memcpy(gprs_network_cfg_para_g.gprs_ip_1, pGprs_ptl_cmd_union->ip_para_s.gprs_ip_1, len);
|
memcpy(gprs_network_cfg_para_g.gprs_ip_2, pGprs_ptl_cmd_union->ip_para_s.gprs_ip_2, len);
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_GPRS_NETWORK_CFG],1); // ´æ´¢
|
return PROTOCOL_SET_IP_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvClearExceptionHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // Çå³ýÒì³£0x0224
|
{
|
uint8_t i = 0;
|
if(pGprs_ptl_cmd_union->union_buff[0] & 0x04)
|
{
|
i++;
|
__SYS_STATUS_BYTES_STATUS(valve_state,VALVE_OP, AV_NORMAL);
|
}
|
if(pGprs_ptl_cmd_union->union_buff[0] & 0x08)
|
{
|
i++;
|
__SYS_STATUS_BYTES_STATUS(gas_leakage,RESET, AV_LEAKAGE);
|
}
|
if(i != 0)
|
set_result_g = SUCCESS_0;
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvClearCountHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ×ÜÁ¿ÇåÁã0x0225
|
{
|
if (pGprs_ptl_cmd_union->union_buff[0] == 2 || pGprs_ptl_cmd_union->union_buff[1] == 2)
|
{
|
/*Ð޸ļǼÊý¾Ý´¦Àíbefore*/
|
sys_para_amend_log_flag_g = GAS_CUMULATE_PARA_AMEND;
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_sc_before = sys_realtime_data_g.measure_para_s.forward_cumulate_sc;
|
para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_wc_before = sys_realtime_data_g.measure_para_s.forward_cumulate_wc;
|
/*×ÜÁ¿ÇåÁã*/
|
if(pGprs_ptl_cmd_union->union_buff[0] == 2)
|
sys_realtime_data_g.measure_para_s.forward_cumulate_sc = 0;
|
if(pGprs_ptl_cmd_union->union_buff[1] == 2)
|
sys_realtime_data_g.measure_para_s.forward_cumulate_wc = 0;
|
/*Ð޸ļǼÊý¾Ý´¦Àíafter*/
|
para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_sc_after = sys_realtime_data_g.measure_para_s.forward_cumulate_sc;
|
para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_wc_after = sys_realtime_data_g.measure_para_s.forward_cumulate_wc;
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
set_result_g = RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g);
|
}
|
return PROTOCOL_CLEAR_COUNT_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSaveTimePointHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÈÕԼǼ±£´æÊ±¼äµãÉèÖÃ0x0230
|
{
|
save_day_month_timing_g.set_minute_bcd = pGprs_ptl_cmd_union->union_buff[1];
|
save_day_month_timing_g.set_hour_bcd = pGprs_ptl_cmd_union->union_buff[0];
|
/*´æ´¢ÕýÈ·£¬·µ»Ø³É¹¦*/
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_SAVE_DATA_START_TIME],1); // ´æ´¢(ÔÝδȷ¶¨)
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvReadHistoryHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ¶ÁÀúÊ·¼Ç¼0x0232
|
{
|
// memcpy(&platform_record_para_g,(uint8_t*)pGprs_ptl_cmd_union->union_buff,sizeof(PLATFORM_DISTRIBUTION_RECORD_PARA_T));
|
return PROTOCOL_READ_HISTORY_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvReadValveRecordHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ¶ÁÈ¡·§ÃŲÙ×÷¼Ç¼0x0233
|
{
|
// memcpy(&platform_valve_ctrl_record_g, (uint8_t*)pGprs_ptl_cmd_union->union_buff,sizeof(PLATFORM_VALVE_CTRL_RECORD_PARA_T));
|
return PROTOCOL_READ_VALVE_RECORD_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvReadModifyAccRecordHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ¶ÁÀÛ»ýÁ¿Ð޸ļǼ0x0234
|
{
|
// memcpy(&platform_cal_mod_record_g, (uint8_t*)pGprs_ptl_cmd_union->union_buff, sizeof(PLATFPRM_CUL_MOD_RECORD_PARA_T));
|
return PROTOCOL_READ_MODIFY_ACC_RECORD_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvContValveHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ·§ÃÅ¿ØÖÆ0x0301
|
{
|
set_result_g = SUCCESS_0;
|
if ((pGprs_ptl_cmd_union->union_buff[0] == 0) && (__SYS_STATUS_BYTES_GET(valve_lock) == SET)) // ¿ª·§½âËø
|
{
|
__VALVE_WORK_TYPE_SET(VWT_UNLOCK); // ½âËø£¨ÓÃÓÚ´æ´¢¼Ç¼£©
|
__SYS_STATUS_BYTES_STATUS(valve_lock, RESET, AV_NORMAL); // ½âËø£¨ÓÃÓÚÕæÕý¿ØÖÆ£©
|
// op_cl_valve_cause_id = AV_NORMAL; // ûÓпª¹Ø·§ÔÒòID
|
}
|
else if ((pGprs_ptl_cmd_union->union_buff[0] == 1) && (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_OP))
|
sys_valve_ctl_id_g = V_GPRS_CMD_CL;
|
else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetBalanceCloseValveHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖÃÓà¶î¹Ø·§0x0302
|
{
|
uint8_t value_cnt = 0,alarm_ctl_cnt = 0,valve_ctl_cnt = 0;
|
uint8_t valve_ctl_temp = 0;
|
uint16_t write_data_length = SYS_BILLING_ALARM_CFG_FORMAT_SIZE - SIZEOF_OF(BILLING_ALARM_CFG_T,reserve);
|
/*before*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_before,&billing_alarm_cfg_g,write_data_length);
|
|
if(billing_alarm_cfg_g.balance_small_value[0] != pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_1)
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.balance_small_value[0] = pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_1;
|
if(__SYS_ALARM_CTL_BYTES_GET(balance_small_1) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(balance_small_1,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_1_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_1_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_1)
|
{
|
valve_ctl_cnt++;
|
if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_1 == 0) // ²»ÐèÒª¹Ø·§
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_1_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_1_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_1 == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_1_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_1_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_1 == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_1_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_1_close_valve_type, SET);
|
}
|
}
|
if(billing_alarm_cfg_g.balance_small_value[1] != pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_2)
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.balance_small_value[1] = pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_2;
|
if(__SYS_ALARM_CTL_BYTES_GET(balance_small_2) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(balance_small_2,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_2_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_2_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_2)
|
{
|
valve_ctl_cnt++;
|
if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_2 == 0) // ²»ÐèÒª¹Ø·§
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_2_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_2_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_2 == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_2_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_2_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_2 == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_2_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_2_close_valve_type, SET);
|
}
|
}
|
if(billing_alarm_cfg_g.balance_small_value[2] != pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_3)
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.balance_small_value[2] = pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_3;
|
if(__SYS_ALARM_CTL_BYTES_GET(balance_small_3) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(balance_small_3,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_3_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_3_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_3)
|
{
|
valve_ctl_cnt++;
|
if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_3 == 0) // ²»ÐèÒª¹Ø·§
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_3_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_3_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_3 == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_3_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_3_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_3 == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_3_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_3_close_valve_type, SET);
|
}
|
}
|
if(billing_alarm_cfg_g.balance_small_value[3] != pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_4)
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.balance_small_value[3] = pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_4;
|
if(__SYS_ALARM_CTL_BYTES_GET(balance_small_4) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(balance_small_4,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_4_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_2,balance_4_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_4)
|
{
|
valve_ctl_cnt++;
|
if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_4 == 0) // ²»ÐèÒª¹Ø·§
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_4_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_4_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_4 == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_4_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_4_close_valve_type, RESET);
|
}
|
else if (pGprs_ptl_cmd_union->balance_alarm_para_s.valve_cfg_flag_4 == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_2, balance_4_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_2, balance_4_close_valve_type, SET);
|
}
|
}
|
|
billing_alarm_cfg_g.balance_small_value[4] = pGprs_ptl_cmd_union->balance_alarm_para_s.balance_small_value_5;
|
if(alarm_ctl_cnt)
|
{
|
billing_alarm_cfg_g.alarm_ctl_byte_2 = sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1];
|
billing_alarm_cfg_g.alarm_send_byte_2 = sys_alarm_send_bytes_g.alarm_ctl_send_union[1];
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_CTL_BYTES],1);
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_SEND_BYTES],1);
|
}
|
if(valve_ctl_cnt)
|
{
|
memcpy(&billing_alarm_cfg_g.valve_close_ctl[0],&valve_ctl_bytes_g.valve_ctr_2,SIZEOF_OF(VALVE_CTL_BYTES_T,valve_ctr_2));
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_VALVE_CTL_BYTES],1);
|
}
|
|
if(value_cnt || alarm_ctl_cnt || valve_ctl_cnt)
|
{
|
/*now*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_now,&billing_alarm_cfg_g,write_data_length);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = BILLING_ALARM_CFG_AMEND;
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_BILLING_ALARM_CFG],1);// ´æ´¢
|
}else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetCloseValveHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖùط§¿ØÖƹ¦ÄÜ0x0304
|
{
|
uint16_t temp_valve_ctl_2 = 0;
|
memcpy(&temp_valve_ctl_2,&valve_ctl_bytes_g.valve_ctr_2,2);
|
temp_valve_ctl_2 &= 0xFFFC;
|
/*before*/
|
memcpy(para_amend_log_g.para_amend_union.sys_valve_ctl_bytes_amend_s.valve_ctl_bytes_before,&valve_ctl_bytes_g,VALVE_CTL_LENGTH);
|
/*now*/
|
memcpy(&valve_ctl_bytes_g,pGprs_ptl_cmd_union->union_buff,2);
|
temp_valve_ctl_2 |= (pGprs_ptl_cmd_union->union_buff[2] & 0x03);
|
memcpy(&valve_ctl_bytes_g.valve_ctr_2,&temp_valve_ctl_2,2);
|
memcpy(&valve_ctl_bytes_g.valve_ctr_4, &pGprs_ptl_cmd_union->union_buff[6], VALVE_CTL_LEN - 6);
|
memcpy(para_amend_log_g.para_amend_union.sys_valve_ctl_bytes_amend_s.valve_ctl_bytes_now,pGprs_ptl_cmd_union->union_buff,VALVE_CTL_LENGTH);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = VALVE_CTL_BYTES_AMEND;
|
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_VALVE_CTL_BYTES],1);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetDontReportCloseValveHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖÃÎÞÉϱ¨¹Ø·§ÌìÊý0x0306
|
{
|
uint8_t value_cnt = 0,alarm_ctl_cnt = 0,valve_ctl_cnt = 0;
|
uint8_t valve_ctl_temp = 0;
|
uint16_t write_data_length = SYS_BILLING_ALARM_CFG_FORMAT_SIZE - SIZEOF_OF(BILLING_ALARM_CFG_T,reserve);
|
/*before*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_before,&billing_alarm_cfg_g,write_data_length);
|
|
if(billing_alarm_cfg_g.no_gprs_days != pGprs_ptl_cmd_union->union_buff[0])
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.no_gprs_days = pGprs_ptl_cmd_union->union_buff[0];
|
if(billing_alarm_cfg_g.no_gprs_days == 0 && __SYS_ALARM_CTL_BYTES_GET(no_gprs_date_up_to) == SET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(no_gprs_date_up_to,RESET);
|
}else if(billing_alarm_cfg_g.no_gprs_days != 0 && __SYS_ALARM_CTL_BYTES_GET(no_gprs_date_up_to) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(no_gprs_date_up_to,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_gprs_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_gprs_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->union_buff[1])
|
{
|
valve_ctl_cnt++;
|
if(pGprs_ptl_cmd_union->union_buff[1] == 0)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_gprs_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_gprs_close_valve_type, RESET);
|
}else if(pGprs_ptl_cmd_union->union_buff[1] == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_gprs_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_gprs_close_valve_type, RESET);
|
}
|
else if(pGprs_ptl_cmd_union->union_buff[1] == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_gprs_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_gprs_close_valve_type, SET);
|
}
|
}
|
|
if(alarm_ctl_cnt)
|
{
|
billing_alarm_cfg_g.alarm_ctl_byte_2 = sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1];
|
billing_alarm_cfg_g.alarm_send_byte_2 = sys_alarm_send_bytes_g.alarm_ctl_send_union[1];
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_CTL_BYTES],1);
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_SEND_BYTES],1);
|
}
|
if(valve_ctl_cnt)
|
{
|
memcpy(&billing_alarm_cfg_g.valve_close_ctl[1],&valve_ctl_bytes_g.valve_ctr_3,SIZEOF_OF(VALVE_CTL_BYTES_T,valve_ctr_3));
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_VALVE_CTL_BYTES],1);
|
}
|
if(value_cnt || alarm_ctl_cnt || valve_ctl_cnt)
|
{
|
/*now*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_now,&billing_alarm_cfg_g,write_data_length);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = BILLING_ALARM_CFG_AMEND;
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_BILLING_ALARM_CFG],1);
|
}else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetDontUseGasDayHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖÃÎÞÓÃÆø¹Ø·§ÌìÊý0x0308
|
{
|
uint8_t value_cnt = 0,alarm_ctl_cnt = 0,valve_ctl_cnt = 0;
|
uint8_t valve_ctl_temp = 0;
|
uint16_t write_data_length = SYS_BILLING_ALARM_CFG_FORMAT_SIZE - SIZEOF_OF(BILLING_ALARM_CFG_T,reserve);
|
/*before*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_before,&billing_alarm_cfg_g,write_data_length);
|
|
if(billing_alarm_cfg_g.no_use_gas_days != pGprs_ptl_cmd_union->union_buff[0])
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.no_use_gas_days = pGprs_ptl_cmd_union->union_buff[0];
|
if(billing_alarm_cfg_g.no_use_gas_days == 0 && __SYS_ALARM_CTL_BYTES_GET(no_use_gas_date_up_to) == SET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(no_use_gas_date_up_to,RESET);
|
}else if(billing_alarm_cfg_g.no_use_gas_days != 0 && __SYS_ALARM_CTL_BYTES_GET(no_use_gas_date_up_to) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(no_use_gas_date_up_to,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_use_gas_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,no_use_gas_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->union_buff[1])
|
{
|
valve_ctl_cnt++;
|
if(pGprs_ptl_cmd_union->union_buff[1] == 0)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_use_gas_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_use_gas_close_valve_type, RESET);
|
}else if(pGprs_ptl_cmd_union->union_buff[1] == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_use_gas_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_use_gas_close_valve_type, RESET);
|
}
|
else if(pGprs_ptl_cmd_union->union_buff[1] == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, no_use_gas_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, no_use_gas_close_valve_type, SET);
|
}
|
}
|
if(alarm_ctl_cnt)
|
{
|
billing_alarm_cfg_g.alarm_ctl_byte_2 = sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1];
|
billing_alarm_cfg_g.alarm_send_byte_2 = sys_alarm_send_bytes_g.alarm_ctl_send_union[1];
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_CTL_BYTES],1);
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_SEND_BYTES],1);
|
}
|
if(valve_ctl_cnt)
|
{
|
memcpy(&billing_alarm_cfg_g.valve_close_ctl[1],&valve_ctl_bytes_g.valve_ctr_3,SIZEOF_OF(VALVE_CTL_BYTES_T,valve_ctr_3));
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_VALVE_CTL_BYTES],1);
|
}
|
if(value_cnt || alarm_ctl_cnt || valve_ctl_cnt)
|
{
|
/*now*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_now,&billing_alarm_cfg_g,write_data_length);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = BILLING_ALARM_CFG_AMEND;
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_BILLING_ALARM_CFG],1);
|
}else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvSetCountCloseValveHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ÉèÖÃÀÛ»ýÁ¿¹Ø·§0x0310
|
{
|
uint8_t value_cnt = 0,alarm_ctl_cnt = 0,valve_ctl_cnt = 0;
|
uint8_t valve_ctl_temp = 0;
|
uint16_t write_data_length = SYS_BILLING_ALARM_CFG_FORMAT_SIZE - SIZEOF_OF(BILLING_ALARM_CFG_T,reserve);
|
/*before*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_before,&billing_alarm_cfg_g,write_data_length);
|
|
if(billing_alarm_cfg_g.cumulate_flow_value != pGprs_ptl_cmd_union->cumulate_flow_close_para_s.set_cumulate_flow_value)
|
{
|
value_cnt++;
|
billing_alarm_cfg_g.cumulate_flow_value = pGprs_ptl_cmd_union->cumulate_flow_close_para_s.set_cumulate_flow_value;
|
if(billing_alarm_cfg_g.no_use_gas_days == 0 && __SYS_ALARM_CTL_BYTES_GET(set_cumulate_up_to) == SET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(set_cumulate_up_to,RESET);
|
}else if(billing_alarm_cfg_g.cumulate_flow_value != 0 && __SYS_ALARM_CTL_BYTES_GET(set_cumulate_up_to) == RESET)
|
{
|
alarm_ctl_cnt++;
|
__SYS_ALARM_CTL_SEND_BYTES_SET(set_cumulate_up_to,SET);
|
}
|
}
|
if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,set_cumulate_need_close_valve_flag) == RESET)
|
valve_ctl_temp = 0;
|
else if(__VALVE_CLOSE_BYTES_GET(valve_ctr_3,set_cumulate_close_valve_type) == RESET)
|
valve_ctl_temp = 1;
|
else
|
valve_ctl_temp = 2;
|
if(valve_ctl_temp != pGprs_ptl_cmd_union->cumulate_flow_close_para_s.valve_control_type)
|
{
|
valve_ctl_cnt++;
|
if(pGprs_ptl_cmd_union->cumulate_flow_close_para_s.valve_control_type == 0)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, set_cumulate_need_close_valve_flag, RESET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, set_cumulate_close_valve_type, RESET);
|
}else if(pGprs_ptl_cmd_union->cumulate_flow_close_para_s.valve_control_type == 1)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, set_cumulate_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, set_cumulate_close_valve_type, RESET);
|
}
|
else if(pGprs_ptl_cmd_union->cumulate_flow_close_para_s.valve_control_type == 2)
|
{
|
__VALVE_CLOSE_BYTES_NEED_SET(valve_ctr_3, set_cumulate_need_close_valve_flag, SET);
|
__VALVE_CLOSE_BYTES_MODE_SET(valve_ctr_3, set_cumulate_close_valve_type, SET);
|
}
|
}
|
if(alarm_ctl_cnt)
|
{
|
billing_alarm_cfg_g.alarm_ctl_byte_2 = sys_alarm_ctl_bytes_g.alarm_ctl_send_union[1];
|
billing_alarm_cfg_g.alarm_send_byte_2 = sys_alarm_send_bytes_g.alarm_ctl_send_union[1];
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_CTL_BYTES],1);
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_ALARM_SEND_BYTES],1);
|
}
|
if(valve_ctl_cnt)
|
{
|
memcpy(&billing_alarm_cfg_g.valve_close_ctl[1],&valve_ctl_bytes_g.valve_ctr_3,SIZEOF_OF(VALVE_CTL_BYTES_T,valve_ctr_3));
|
Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_VALVE_CTL_BYTES],1);
|
}
|
if(value_cnt || alarm_ctl_cnt || valve_ctl_cnt)
|
{
|
/*now*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_alarm_cfg_amend_s.billing_alarm_now,&billing_alarm_cfg_g,write_data_length);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = BILLING_ALARM_CFG_AMEND;
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_BILLING_ALARM_CFG],1);
|
}else
|
set_result_g = ERROR_1;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvPayMoneysHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // ½ð¶î³äÖµ0x0401
|
{
|
if (pGprs_ptl_cmd_union->pay_moneys_para_s.pay_moneys_flag == 1)
|
{
|
if (pGprs_ptl_cmd_union->pay_moneys_para_s.pay_moneys_cnt > pay_para_g.pay_cnt)
|
{
|
pay_flag_g = 1;
|
pay_para_g.mender = SDM_GPRS_CMD; // ÐÞ¸ÄȨÏÞ
|
pay_para_g.pay_type = pGprs_ptl_cmd_union->pay_moneys_para_s.pay_moneys_flag; // ³äÖµÀàÐÍ
|
pay_para_g.pay_value = pGprs_ptl_cmd_union->pay_moneys_para_s.pay_value; // ±¾´Î³äÖµÁ¿
|
pay_para_g.pay_value_cumulate += pGprs_ptl_cmd_union->pay_moneys_para_s.pay_value; // ×ܳäÖµÁ¿
|
billing_real_para_g.balance_now += pGprs_ptl_cmd_union->pay_moneys_para_s.pay_value * 0.001; // Ôö¼ÓÓà¶î
|
if (billing_real_para_g.balance_now > (billing_alarm_cfg_g.balance_small_value[0] * 0.01f))
|
{
|
__SYS_STATUS_BYTES_STATUS(balance_small_1, RESET, AV_BALANCE_1);
|
__SYS_STATUS_BYTES_STATUS(balance_small_2, RESET, AV_BALANCE_2);
|
__SYS_STATUS_BYTES_STATUS(balance_small_3, RESET, AV_BALANCE_3);
|
__SYS_STATUS_BYTES_STATUS(balance_small_4, RESET, AV_BALANCE_4);
|
}
|
/*´æ´¢²¢·µ»Ø½á¹û*/
|
set_result_g = RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g); // ´æ´¢
|
}
|
}
|
else if (pGprs_ptl_cmd_union->pay_moneys_para_s.pay_moneys_flag == 2) //Óà¶îÇåÁã
|
{
|
sys_para_amend_log_flag_g = BALANCE_PARA_AMEND;
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
para_amend_log_g.para_amend_union.balance_amend_s.balance_before = billing_real_para_g.balance_now;
|
billing_real_para_g.balance_now = 0;
|
para_amend_log_g.para_amend_union.balance_amend_s.balance_now = billing_real_para_g.balance_now;
|
/*´æ´¢²¢·µ»Ø½á¹û*/
|
set_result_g = RealTimeData_LogStore(&save_realtime_data_g, &sys_realtime_data_g, &billing_real_para_g, &calendar_g); // ´æ´¢
|
}
|
return PROTOCOL_PAY_MONEYS_BACK;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAdjustPriceHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union) // µ÷¼Û0x0402
|
{
|
uint16_t write_data_length = SYS_LADDER_PRICE_CFG_FORMAT_SIZE - SIZEOF_OF(LADDER_PRICE_CFG_PARA_T,reserve);
|
/*before*/
|
memcpy(¶_amend_log_g.para_amend_union.billing_price_amend_s.price_cfg_before,&ladder_price_cfg_para_new_g,write_data_length);
|
/*now*/
|
ladder_price_cfg_para_new_g.price_ver = pGprs_ptl_cmd_union->price_cfg_s.price_ver;
|
ladder_price_cfg_para_new_g.set_price_type_mode = (SET_PRICE_MODE_T)pGprs_ptl_cmd_union->price_cfg_s.set_price_type_mode;
|
ladder_price_cfg_para_new_g.normal_price_now = pGprs_ptl_cmd_union->price_cfg_s.normal_price_now;
|
if(ladder_price_cfg_para_new_g.set_price_type_mode == 1) /*Ïê¼û˼Öþ×ÔÓÃÔ¶´«ÐÒéºÍÈ¼Æø±í²ÎÊý¹¦ÄÜ˵Ã÷Îĵµ*/
|
ladder_price_cfg_para_new_g.set_price_type_mode = SPM_LADDER;
|
else if(ladder_price_cfg_para_new_g.set_price_type_mode == 2)
|
ladder_price_cfg_para_new_g.set_price_type_mode = SPM_TIME;
|
memcpy(&ladder_price_cfg_para_new_g.period_state,&pGprs_ptl_cmd_union->price_cfg_s.period_state,write_data_length - 7);
|
/*Ïê¼û˼Öþ×ÔÓÃÔ¶´«ÐÒéºÍÈ¼Æø±í²ÎÊý¹¦ÄÜ˵Ã÷Îĵµ*/
|
ladder_price_cfg_para_new_g.period_unit += 0x10;
|
ladder_price_cfg_para_new_g.time_unit += 0x10;
|
|
memcpy(¶_amend_log_g.para_amend_union.billing_price_amend_s.price_cfg_now,&ladder_price_cfg_para_new_g,write_data_length);
|
para_amend_log_g.mender = SDM_GPRS_CMD;
|
sys_para_amend_log_flag_g = BILLING_PARA_AMEND;
|
set_result_g = Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[PARA_LADDER_PRICE_CFG_NEW],1);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
//9600
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAppResetHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
RMU->SOFTRST = 0x5C5CAABB; //Èí¼þ¸´Î»
|
set_result_g = SUCCESS_0;
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
//9601
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAppConfigHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
set_result_g = BootLoader_IapConfigSetHander(pGprs_ptl_cmd_union->union_buff,
|
(BOOTLOAT_PARA_SIZE - SIZEOF_OF(BOOTLOAD_PARA_STRUCT,boot_update_flag)));
|
printf("9601_Result = %d\r\n",set_result_g);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
//9602
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAppDiffDataHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
uint32_t offset_addr = (pGprs_ptl_cmd_union->union_buff[3] << 24) | (pGprs_ptl_cmd_union->union_buff[2] << 16) |
|
(pGprs_ptl_cmd_union->union_buff[1] << 8) | pGprs_ptl_cmd_union->union_buff[0];
|
set_result_g = BootLoader_IapDiffDataHandler(&pGprs_ptl_cmd_union->union_buff[4],offset_addr,BOOTLOAD_PAGE_SIZE);
|
printf("9602_Result = %d\r\n",set_result_g);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
//9603
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAppConfigCheckHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
set_result_g = BootLoader_IapConfigCheckHandler();
|
printf("9603_Result = %d\r\n",set_result_g);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
//9604
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvAppDiffMapHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
uint32_t offset_addr = (pGprs_ptl_cmd_union->union_buff[3] << 24) | (pGprs_ptl_cmd_union->union_buff[2] << 16) |
|
(pGprs_ptl_cmd_union->union_buff[1] << 8) | pGprs_ptl_cmd_union->union_buff[0];
|
set_result_g = BootLoader_IapDiffMapSetHandler(&pGprs_ptl_cmd_union->union_buff[4],offset_addr,BOOTLOAD_PAGE_SIZE);
|
printf("9604_Result = %d\r\n",set_result_g);
|
return PROTOCOL_SET_RECV_SUCCORFAIL;
|
}
|
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_Recv_ReadCmdGeneralHandler(GPRS_PTL_CMD_UNION_T *pGprs_ptl_cmd_union)
|
{
|
switch (gprs_protocol_head_tail_g.gprs_protocol_head.cmd_code_u16)
|
{
|
case PROTOCOL_READ_FUN_PARA_U16: // ¶Á±í¾ß¹¦ÄܲÎÊý0x0203
|
return PROTOCOL_READ_FUNC_BACK;
|
case PROTOCOL_READ_ALARM_COUNT_U16: // ¶ÁÈ¡±¨¾¯¿ØÖÆ×Ö0x0205
|
return PROTOCOL_READ_ALARM_CONTROL_BACK;
|
case PROTOCOL_READ_SEND_CYCLE_U16: // ¶ÁÈ¡Éϱ¨ÖÜÆÚ0x0207
|
return PROTOCOL_READ_SEND_CYCLE_BACK;
|
case PROTOCOL_READ_METER_PARA_U16: // ¶ÁÈ¡¶Ô½ÓÒDZí²ÎÊý0x0209
|
return PROTOCOL_READ_METER_PARA_BACK;
|
case PROTOCOL_READ_EQUIP_PARA_U16: // ¶ÁÈ¡É豸ÐÅÏ¢0x0220
|
return PROTOCOL_READ_EQUIP_PARA_BACK;
|
case PROTOCOL_READ_IP_U16: // ¶ÁÈ¡IPµØÖ·ÉèÖÃ0x0223
|
return PROTOCOL_READ_IP_BACK;
|
case PROTOCOL_READ_TIME_POINT_U16: // ¶ÁÈ¡ÈÕԼǼ±£´æÊ±¼äµã0x0231
|
return PROTOCOL_READ_TIME_POINT_BACK;
|
case PROTOCOL_READ_BALANCE_CLOSE_VALVE: // ¶ÁÈ¡Óà¶î¹Ø·§0x0303
|
return PROTOCOL_READ_BALANCE_CLOSE_VALVE_BACK;
|
case PROTOCOL_READ_CLOSE_VALVE: // ¶ÁÈ¡¹Ø·§¿ØÖÆ×Ö0x0305
|
return PROTOCOL_READ_CLOSE_VALVE_BACK;
|
case PROTOCOL_READ_DONT_REPORT_CLOSE_VALVE: // ¶ÁÎÞÉϱ¨¹Ø·§ÌìÊý0x0307
|
return PROTOCOL_READ_DONT_REPORT_CLOSE_VALVE_BACK;
|
case PROTOCOL_READ_DONT_USE_GAS_DAY: // ¶ÁÎÞÓÃÆø¹Ø·§ÌìÊý0x0309
|
return PROTOCOL_READ_DONT_USE_GAS_DAY_BACK;
|
case PROTOCOL_READ_NO_COUNT_CLOSE_VALVE: // ¶ÁÎÞÀÛ»ýÁ¿¹Ø·§0x0311
|
return PROTOCOL_READ_NO_COUNT_CLOSE_VALVE_BACK;
|
case PROTOCOL_READ_PRICE_U16:
|
return PROTOCOL_READ_PRICE_NOW_INF_BACK;
|
default:
|
break;
|
}
|
return PROTOCOL_UNKOWN_STATUS;
|
}
|
|
/*GPRSÐÒé½ÓÊÕÊý¾Ý´¦Àí*/
|
GPRS_PROTOCOL_STATUS Gprs_Protocol_RecvDataConfig(uint8_t *pRecvData, uint16_t recv_data_length)
|
{
|
GPRS_PROTOCOL_STATUS gprs_protocol_cmd_flag = PROTOCOL_UNKOWN_STATUS;
|
uint16_t recv_cmd_code_u16 = pRecvData[18] << 8 | pRecvData[17]; // ÐÒéÃüÁî±êʶ
|
uint16_t recv_checkcrc_calculate = 0, recv_checkcrc = pRecvData[recv_data_length - 3] << 8 | pRecvData[recv_data_length - 2];
|
// uint8_t recv_buffer[recv_data_length - 3];
|
// memcpy(recv_buffer, pRecvData, recv_data_length - 3);
|
recv_checkcrc_calculate = usMBCRC16(0xFFFF,pRecvData, recv_data_length - 3);
|
if (recv_checkcrc == recv_checkcrc_calculate)
|
{
|
set_result_g = ERROR_1; // ÿ´Î½ÓÊÕÏȸøÊ§°Ü
|
/*Ñ¡Ôñ½ÓÊÕÊý¾ÝÖ¡ÀàÐÍ*/
|
for (uint8_t i = 0; i < GPRS_PROTOCOL_RECV_FUNC_TABLE_NUM; i++)
|
{
|
/*²é±í*/
|
if (gprs_protocol_recv_tab_func[i].gprs_protocol_cmd_table_u16 == recv_cmd_code_u16 && gprs_protocol_recv_tab_func[i].GprsProtocolRecvFuncHandler != NULL)
|
{
|
/*Êý¾Ý½âÃÜ*/
|
if (KEY_VERSION >> 7)
|
Gprs_Recv_Data_Aes128_Ecb_Decrypt(&pRecvData[PROTOCOL_HEAD_LENGTH], recv_data_length);
|
E2p_GPIO_Clk_Init();
|
/*¹¹Ôì·µ»ØÖ¡µÄÖ¡Í·¿ØÖÆÂë*/
|
gprs_protocol_head_tail_g.gprs_protocol_head.cmd_code_u16 = recv_cmd_code_u16;
|
gprs_protocol_cmd_flag = gprs_protocol_recv_tab_func[i].GprsProtocolRecvFuncHandler((GPRS_PTL_CMD_UNION_T *)&pRecvData[PROTOCOL_HEAD_LENGTH]);
|
break;
|
}
|
}
|
}
|
return gprs_protocol_cmd_flag;
|
}
|