#ifndef _SYS_PROCESSOR_H_ #define _SYS_PROCESSOR_H_ #include "sys_config.h" #if UPLOAD_MODE_1 #include "type.h" #include "UWater_rtcc_driver.h" #pragma pack(1) //1字节对齐 typedef struct { u8 retry_num; //重发次数 u8 Step_send_report;//add by wm 2017.07.19 上报步骤 1是周期上报 2是密集上报 3是补包 u8 Flag_Send_DATA;//add by wm 2017.07.19 发送指令标志 1是发送开始 u8 Supplemental_send_NO;//补包查询过程变量,表示当前正在补哪一条记录,在补包上送成功后,要清除该记录bit u8 Save_histroy_FLAG; u8 Save_histroy_step; u8 Read_histroy_FLAG; }FRAME_SEND_CONTROL; typedef enum { NB_HistroyReadIndex = 0, //历史数据的读指针 NB_UploadFailTimes = 1,//失败次数 NB_SendData_Msg = 2,//NB需要发送数据消息 NB_SS_FormatError = 3, //数据格式错误 } NB_SS_ControlParaTypeDef; //日最高流量和持续时间 typedef union{ struct{ mtype32_ pulse_max_flow; //持续流量 mtype16_ pulse_continue_time; //持续时间 u8 pulse_flow_time[8]; //产生时间 }; u8 byte[14]; }IES_PULSE_DAY_MAX_FLOW; //日最高流量 ///**********************************************************周期上报模式判断**********************/ #define UPLOAD_MODE_HOUR 1 //小时上报模式 #define UPLOAD_MODE_DAY 2 //天上报模式 #define UPLOAD_MODE_WEEK 3 //周上报模式 #define UPLOAD_MODE_MONTH 4 //月上报模式 ///**********************************************************上报类型定义**************************/ #define UPLOAD_TYPE_FIX_TIME 0 //0:自动定时 #define UPLOAD_TYPE_HAND_KEY 1 //1:手动按键 #define UPLOAD_TYPE_FRAME_ORDER 2 //2: 规约命令发起上传 #define UPLOAD_TYPE_RETRY_AGAIN 3 //3: 重新上传 #define UPLOAD_TYPE_VALVE_CLOSE 4 //4: 阀门关闭上传 #define UPLOAD_TYPE_VALVE_ACTIVE 5 //5: 阀门动作上传 #define UPLOAD_TYPE_SET_IP 6 //6: 设置IP上传 #define UPLOAD_TYPE_TOUCH_KEY 7 //7: 触摸按键上传 #define UPLOAD_TYPE_WARNING 8 //8: 及时报警上传 #define UPLOAD_TYPE_FACTORY 9 //9: 厂区上报 #define UPLOAD_TYPE_OTHER 255 //255:其他 #define UPLOAD_EVENT_NUM 10 //同时支持10个上报事件 #define VALVE_CLOSE_UPLOAD_MAX 250 //关阀后最大上报次数 #define VALVE_CLOSE_UPLOAD_MIN 48 //关阀后最小上报次数 typedef struct { u8 upload_type[UPLOAD_EVENT_NUM]; u8 event_cnt; u8 upload_cnt; } EVENT_UPLOAD_; //事件 ///**********************************************************重试间隔定义**************************/ #define JIANGE_20_MIN 1 //采用间隔20min ///**********************************************************数据上报状态机************************/ typedef enum{ SS_STATE_S0 = 0, SS_STATE_S1, SS_STATE_S2, SS_STATE_S3, SS_STATE_S4, SS_STATE_S5, SS_STATE_S6, SS_STATE_S7, SS_STATE_S8, SS_STATE_S9, SS_STATE_S10, SS_STATE_S11, SS_STATE_S20, SS_STATE_S21, SS_STATE_S22, SS_STATE_S23, SS_STATE_S30, SS_STATE_S31, SS_STATE_S40, SS_STATE_WAIT }TYP_STATE_SS; #define UPLOAD_BUF_SIZE UP_BUF_SIZE //与上行缓冲区大小一致 //等待时间设置 #define NB_LAUNCH_TIME 3000 //NB登录时间-----300秒 #define NB_TOTAL_WORK_TIME 3600 //NB总运行时间---360秒 #define NB_WAIT_5S 50 #define NB_WAIT_10S 100 //上报状态机状态 typedef enum{ TIME_UPLOAD_S0 = 0, TIME_UPLOAD_S1, TIME_UPLOAD_S10, TIME_UPLOAD_S11, TIME_UPLOAD_S2, TIME_UPLOAD_S20, TIME_UPLOAD_S3, TIME_UPLOAD_S4, TIME_UPLOAD_S5, TIME_UPLOAD_S6, TIME_UPLOAD_S7, TIME_UPLOAD_S8, TIME_UPLOAD_S9, TIME_UPLOAD_UDP_S1, TIME_UPLOAD_UDP_S2, TIME_UPLOAD_UDP_S3, TIME_UPLOAD_UDP_S4, TIME_UPLOAD_UDP_S5, TIME_UPLOAD_UDP_S6, TIME_UPLOAD_UDP_S7, // TIME_UPLOAD_PRO_S4, // TIME_UPLOAD_PRO_S5, // TIME_UPLOAD_PRO_S6, // TIME_UPLOAD_PRO_S7, TIME_UPLOAD_PsmSleep, TIME_UPLOAD_PsmSleepWait, TIME_UPLOAD_PowerDown, TIME_UPLOAD_PowerDownWait, TIME_UPLOAD_PowerDownEnd, TIME_UPLOAD_END }TYP_STATE_UPLOAD; typedef enum{ UPLOAD_S0 = 0, UPLOAD_S1, UPLOAD_S2 }TYP_MAIN_STATE_UPLOAD; //存冻结数据状态机状态 enum{ SAVE_FREEZE_S0 = 0, SAVE_FREEZE_S1, SAVE_FREEZE_S2, SAVE_FREEZE_S3, SAVE_FREEZE_S4, SAVE_FREEZE_S5, SAVE_FREEZE_S6, SAVE_FREEZE_S7 }; /**************************************冻结数据存储状态机****************************/ #define UPLOAD_DATA_IDLE 0 #define UPLOAD_DATA_READ_HIS 1 #define UPLOAD_DATA_STEP_FLOW 2 #define UPLOAD_DATA_RENEW_CURRENT 3 #define UPLOAD_DATA_SAVE_DATA 4 #define UPLOAD_DATA_SAVE_INDEX 5 #define UPLOAD_DATA_SAVE_BUBAOFLAG 6 #define UPLOAD_DATA_CLOSE_DEBUG 7 #define UPLOAD_DATA_EEP_WAIT 8 /**************************************根据不同规约组上报帧**************************/ #if PRODUCT_SS //主上报流程 #define GetUploadDataMachine GetUploadDataMachine_SS #define GetUploadDataResetState GetUploadDataResetState_SS #define GetUploadDataCheckIdle GetUploadDataCheckIdle_SS #define GetUploadDataCheckTask GetUploadDataCheckTask_SS //副上报流程 #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #elif PRODUCT_JS #define GetUploadDataMachine GetUploadDataMachine_JX #define GetUploadDataResetState GetUploadDataResetState_JX #define GetUploadDataCheckIdle GetUploadDataCheckIdle_JX #define GetUploadDataCheckTask GetUploadDataCheckTask_JX #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #elif PRODUCT_SY #define GetUploadDataMachine GetUploadDataMachine_ShenYangUDP #define GetUploadDataResetState GetUploadDataResetState_ShenYangUDP #define GetUploadDataCheckIdle GetUploadDataCheckIdle_ShenYangUDP #define GetUploadDataCheckTask GetUploadDataCheckTask_ShenYangUDP #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #elif PRODUCT_SHTCP #define GetUploadDataMachine GetUploadDataMachine_SH #define GetUploadDataResetState GetUploadDataResetState_SH #define GetUploadDataCheckIdle GetUploadDataCheckIdle_SH #define GetUploadDataCheckTask GetUploadDataCheckTask_SH #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #elif PRODUCT_WHYW #define GetUploadDataMachine GetUploadDataMachine_WHYW #define GetUploadDataResetState GetUploadDataResetState_WHYW #define GetUploadDataCheckIdle GetUploadDataCheckIdle_WHYW #define GetUploadDataCheckTask GetUploadDataCheckTask_WHYW #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #elif PRODUCT_GS #define GetUploadDataMachine GetUploadDataMachine_GS #define GetUploadDataResetState GetUploadDataResetState_GS #define GetUploadDataCheckIdle GetUploadDataCheckIdle_GS #define GetUploadDataCheckTask GetUploadDataCheckTask_GS #define GetUploadDataMachine_UDP GetUploadDataMachine_IesUDP #define GetUploadDataResetState_UDP GetUploadDataResetState_IesUDP #define GetUploadDataCheckIdle_UDP GetUploadDataCheckIdle_IesUDP #define GetUploadDataCheckTask_UDP GetUploadDataCheckTask_IesUDP #endif //生产规约组上报帧 #define GetUploadDataMachineProduction GetUploadDataMachine_Product #define GetUploadDataResetStateProduction GetUploadDataResetState_Product #define GetUploadDataCheckIdleProduction GetUploadDataCheckIdle_Product #define GetUploadDataCheckTaskProduction GetUploadDataCheckTask_Product /**************************************上报帧组帧标志*****************************/ #define UPLOAD_FRAME_REQUEST_NEW 0x01 #define UPLOAD_FRAME_UPLOAD_OK 0x02 #define UPLOAD_FRAME_UPLOAD_RETRY 0x03 #define UPLOAD_FRAME_ONLINE_FAIL 0xF1 u8 NB_SS_Control_GetPara(NB_SS_ControlParaTypeDef paraType); void NB_SS_Control_SetPara(NB_SS_ControlParaTypeDef paraType, u8 data); u8 GetEventUploadType(void); void SystemGetUploadTime(DateTime *pDT); void SystemClearUploadAgain(void); void SystemAddUploadAgain(void); void SystemProcessor(void); void SystemProcessorInit(void); u8 SystemProcessorIfSleep(void); u8 FixedTimeNbIoTUploadIfIdle(void); void RtccCheck_Hight_Flow(u8 **addr); void SysDealAppPreSleep(void); #elif UPLOAD_MODE_2 #include "sys_processor_ble.h" #endif #endif