#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; }