| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- #ifndef _GLOBALDEF_H_
- #define _GLOBALDEF_H_
- #include "../_Lib-3.5/CMSIS/stm32f10x.h"
- #include "./network/nettimer.h"
- #include "./network/timeout.h"
- extern uint8_t g_bPrintfDebug;
- #define UP_DEVICE_TYPE_GATE 0x0101 // 网关A
- #define UP_DEVICE_FIRMWARE 0x03 // APP程序
- enum {
- LOG_00 = 0x00, //执行错误
- LOG_01 = 0x01, // 执行成功
- LOG_02 = 0x02, //数据模块忙,稍后再试
- LOG_03 = 0x03, // 监控处理器忙,
- LOG_04 = 0x04, // 监控处理器通讯超时
- LOG_05 = 0x05, // 查询记录不存在
- LOG_10 = 0x10, // 监控处理器序列号不存在
- LOG_11 = 0x11, // 密文数据解密错误
- LOG_CRC = 0xC1, // 校验错误
- LOG_XSP = 0xC2, // 处理显示屏的数据
- LOG_NOTAXID = 0xC3, // 报税口号不存在
- LOG_NOGUNID = 0xC4, // 枪号不存在
- LOG_COLL_TIMOUT = 0xC5, //采集器返回超时
- LOG_COLL_ENCPYST = 0xC6, // 采集器返回明文密文状态错误
- LOG_COLL_BUSY = 0xC7, // 采集判断加油机忙
- LOG_CRC1 = 0xC8, // lora接收检验错误
- LOG_LORA_HEADERROR = 0xC9, // lora接收数据头不是fefe
- };
- enum {
- UPDATE_PROG_NULL = 0x00,
- UPDATE_PROG_FROM_NET = 0x01,
- UPDATE_PROG_FROM_GATEWAY = 0x02,
- };
- extern char g_upLinkTopic[64];
- extern char g_logupLinkTopic[64];
- extern timeout_t g_taxSendTime;
- extern timeout_t g_taxDataTime;
- extern uint8_t g_curSendCmd;
- typedef struct _updata_prog {
- uint32_t sn[64];
- uint32_t appVr[64];
- uint8_t status[64];// 状态码
- uint16_t num;
- uint8_t upCount; // 上报的次数
- uint8_t updateProgFrom; // 升级程序的开源
- timeout_t upStatusOut;
- uint8_t rec0x16; // 接收到16指令,
- OS_TMR update_total_time;
- }updateProg;
- extern updateProg g_updateProg;
- /* LED 灯的记录 */
- #define LED_M_QUICK 1
- #define LED_M_LOW 5
- enum {
- LED_DISP_NULL = 0,
- LED_DISP_VERSION = 1,
- LED_DISP_NOINIT = 2,
- LED_DISP_COLLNUM = 3,
- LED_DISP_CONNET = 4,
- LED_DISP_LORA = 5,
- };
- #pragma pack(push,1)
- typedef union _LED_16_{
- uint16_t status;
- struct {
- uint16_t led01 : 1;
- uint16_t led02 : 1;
- uint16_t led03 : 1;
- uint16_t led04 : 1;
- uint16_t led05 : 1;
- uint16_t led06 : 1;
- uint16_t led07 : 1;
- uint16_t led08 : 1;
- uint16_t led09 : 1;
- uint16_t led10 : 1;
- uint16_t led11 : 1;
- uint16_t led12 : 1;
- uint16_t led13 : 1;
- uint16_t led14 : 1;
- uint16_t led15 : 1;
- uint16_t led16 : 1;
- }__attribute__((packed))led;
- }__attribute__((packed))Led16;
- #pragma pack(pop)
- typedef struct _LED_STATUS_{
- uint8_t ledM; // M灯的情况 快闪还是慢闪
- Led16 led16;
- uint16_t collNum; // 采集器个数
- uint8_t status; // 灯当前的状态
- uint32_t timer; // 持续时间
- }__attribute__((packed)) LedStatus;
- extern LedStatus g_ledStatus;
- /*时间信息记录*/
- typedef struct _CUR_TICK_{
- uint32_t powerTime; // 上电时间
- uint32_t curTime; // 当前时间
- }CurTick;
- extern CurTick g_curTick;
- typedef struct _FIRMWARE_EXPLAIN_{
- uint16_t dd;
- uint8_t ff;
- uint16_t nn;
- }__attribute__((packed)) FirmwareExpl;
- extern FirmwareExpl g_firmwareExpl;
- /*采集器的状态 和软询查每个采集器的次数*/
- typedef struct COLL_RUN_MSG_{
- uint8_t checkNum; // 采集器轮询的次数 超过5次则上报服务器
- uint8_t updateStatus; // 升级的状态码
- int lorastatus;
- }CollRunMsg;
- enum {
- COLL_STATUS_OFFLINE = 0x00 , // 离线线
- COLL_STATUS_ONLINE = 0x01 , // 在线
- };
- typedef union _check_gun_{
- uint8_t status[2]; // 枪是否轮询完成
- uint16_t status1;
- }checkGunStatus;
- typedef struct _gun_status_{
- checkGunStatus gunSta;
- }GunStatus;
- extern GunStatus g_checkGun[16];
- #define UPDATE_COLLECT_TOTALTIME 900000 // 升级总的时间
- #define UPDATE_CONTINUE_TIME 300 // 升级续传每条间隔的时候300毫秒
- #define UPDATE_REPEAT_TIME 7000 // 接收重传超时的时间 2S
- #define UPDATE_READSTATUS_TIME 10000 // 升级完成 到读取升级状态的时间
- #define UPDATE_READSTATUS_TIME_GATEWAY 60000 // 升级完成 到读取升级状态的时间
- typedef struct _lora_info_{
- uint32_t coll_sn; // 采集器的SN
- uint8_t loraindex; // 所在信道
- uint16_t sendNum; //发送的包的个数
- uint16_t rcvNum; //接收的包的个数
- }__attribute__((packed)) loraInfo;
- typedef struct _LORA_COLL_MSG_{ // lora信息切换
- uint8_t collNum; // 采集器的个数
- uint8_t step; // 步骤 第一步:当前信道读取 第二步:切换信道读取, 第三步:
- loraInfo info[16];
- uint16_t lora_rcvCount;
- uint16_t lora_sendCount;
- }__attribute__((packed)) LoraCollMsg;
- extern LoraCollMsg g_loraCollMsg;
- /*运行数据*/
- typedef struct _RUN_DATA_{
- uint8_t factory; // 1:英泰 2:拓盛
- uint8_t ballowRead58; // 时间到了,是否允许向采集器读取58指令 0:允许, 1:不允许
- uint8_t bfirstSend0x56; // 是否是上电第一次发送心跳包,1:是第一次 0:不是
- uint8_t bfirstRead0x83; // 第一次读取83指令 1:第一次读取 0:不是
- uint8_t bRead0x58; // 是否读取0x58指令
- uint8_t bReadData; // 可以读取业务数据了
- uint16_t collstatus; // 所有采集器心跳包是否已经读取,按位判断,那位是1那位就读取过
- uint8_t curCollIndex; // 当前采集器的索引
- uint16_t rssi_lora; // lora信息强度
- uint16_t rssi_4G; // 4G信息强度
- uint8_t timeSendStatus; // 第5分钟发送一次状态信息的标志 0:不发送 1:发送
- uint8_t bsendgatewayfirmMsg; // 发送固件信息
- uint8_t daStatus[16][2][8];
- CollRunMsg collrunMsg[16];
- uint8_t bInitNetProc; // 是否创建网络队列
- uint8_t bServerRead58; // 是否是服务器读取58指令
- uint16_t updateDeviceTyp; // 升级类型 0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器
- uint8_t bUpdate; // 正在升级中
- uint32_t startUpdateTotalTime; // 重传开始时间记录
- uint32_t repeatUpdateTime; // 接收到重传指令型时间记录
- uint32_t readUpdateStatusTime; // 读取升级状态的时间记录
- uint8_t bsendUpdateStatus; // 向服务器发送状态码
- uint8_t bResetUpdate; // 升级完成后,需要上报服务器
- uint8_t bReadMingWenData; // 读取密文的数据
- uint8_t firstReadNum; // 上电第一次按默认时间读取多少次
- uint16_t task_no; // 升级的任务号,给采集使用的
- uint8_t cregStatus; // 网络注册状态
- uint8_t bchangelora; // 当前要执行切换信道的函数
- uint8_t curloraIndex; // 当前的信息编号
- uint8_t nextlorIndex; //要切换的信道的索引
- uint8_t key1disp; // 按键1 显示lora信道
- uint8_t bInstallFinish; // 安装完成
- uint8_t bUpdateHost; //是否是主设备 1:网关升级网关时为主设备 2:网关升级采集器时的主设备 其它为从设备,升级时,从设备不处理0x22指令
- uint16_t collerr; // 不是本网关下,出现采集器的个数
- uint8_t bRef12; // 外部电压是5V还是12V 1:12V 0:5V
- uint8_t bNetCmd;
- }RunData;
- extern RunData g_runData;
- typedef struct _DATA_4G_{
- uint8_t flag; // 重连的次数,根据这个次数,要确定每次重边的时间间隔
- uint8_t bconnect4G; // 是否连接4G
- uint8_t errorTime; // 4G断开的时间 如果断开1小时,则芯片复位重新启动
- }Da4G;
- extern Da4G g_data4G;
- /*采集器固件信息不需要存储到EEPROM中*/
- typedef struct COLL_MSG_{
- uint32_t device_sn; // 采集器的版本号
- uint32_t bootloaderVr; // bootloader版本
- uint32_t appVr; // app版本号
- uint32_t resetNum; // 复位次数
- uint8_t resetType; // 最后一次复位类型
- uint32_t runTime; //运行时长
- uint32_t voltage; // 电压
- uint32_t temperature; // 温度
- uint8_t updateStatus; // 升级状态码
- uint8_t uuid[12]; // 芯片ID号
- }CollMsg;
- /* 网关固件信息存储 这个只有在产测时写入,要程序中不再写入*/
- typedef struct _GATEWAY_HARDWARE_MSG_{
- uint8_t bInit; // 是否初始化过
- uint32_t gateway_sn; // 网关的sn
- uint16_t devicType; // 类型
- uint16_t factoryMsg; // 厂家信息
- uint16_t seqNo ; // 生产批次号
- uint32_t data; // 生产日期
- uint8_t pcbVersion; // 硬件(PCB)版本
- uint32_t sqare; //备用
- }__attribute__((packed)) GateHareWareMsg;
- #pragma pack(push,1)
- typedef union _CONFIG_FLAG_{
- uint8_t value;
- struct {
- uint8_t bConfig_tab : 1; // 是否配置采集器路由表 0位
- uint8_t bConfig_qei : 1; //是否配置编码器 1位
- uint8_t benable_qei : 1; // 是否启用编码器路由表 1位
- uint8_t reserve_01 : 1; // 预留 1位
- uint8_t bConfig_xsp : 1; // 是否配置显示屏
- uint8_t reserve_02 : 3; // 预留 3位
- }__attribute__((packed))bInit;
- }__attribute__((packed))initMsg;
- #pragma pack(pop)
- /* 网关的固件信息存储*/
- typedef struct _GATEWAY_SOFT_MSG_{
- uint8_t configNo; // 配置流水号
- initMsg bInitMsg; // 是否配置过
- uint8_t coll_num; // 此网关对应采集器的数量
- uint16_t time_interval; // 时间轮询
- }__attribute__((packed)) GateConfigMsg;
- /* 网关的版本信息*/
- typedef struct _GATEWAY_VERSION_MSG_{
- uint32_t gate_bootloaderVr; //网关的bootloaderVr
- uint32_t pt_version; // 产测版本
- uint32_t gate_appVr; // appt版本
- uint32_t gate_appVr2; // app2的版本
- uint32_t gate_appVr3; // app3的版本
- }__attribute__((packed)) GateVersionMsg;
- typedef union _VOLTAGE_{
- uint32_t voltage; // 电压
- float fvoltage;
- }voltage;
- typedef union _TEMPERATURE_{
- uint32_t temperature; // 温度
- float ftemperature;
- }temperature;
- typedef struct _GATEWAY_MSG_{
- GateHareWareMsg hardwareMsg; //
- GateConfigMsg configmsg; // 软件信息
- GateVersionMsg verMsg; // 版本信息
- uint32_t gate_resetnum; //复位次数
- uint8_t gate_resetType; //最后一次复位类型
- uint32_t gate_runTime; // 运行时长
- voltage fVol;
- temperature fTemper;
- uint8_t Uuid[12];//UUID
- uint8_t Imei[15]; //IMEI
- uint8_t Iccid1[20];//ICCID1
- uint8_t Iccid2[20];//ICCID2
- uint8_t Iccid3[20];//ICCID3
- uint16_t devicTypeID; // 103 303 这个是读取上来的
- }GateWayMsg;
- /* mqtt IP地址 端口号*/
- typedef struct _MQTT_IP_PORT_{
- uint8_t flag;
- char port[6]; // 端口号
- char ip[32]; //IP地址
- char admin[8]; // 用户名
- char password[16]; // 密码
- }__attribute__((packed)) MqttIdPort;
- typedef struct _FIRMWARE_MSG_{ // 固件信息存储
- GateWayMsg gatewayMsg; // 网关的信息
- CollMsg collMsg[16]; //采集器固件信息
- MqttIdPort mqttidport; // mqtt的IP地址和端口
- }FirmwareMsg;
- extern FirmwareMsg g_firmwareMsg; // 网关 采集器固件信息存储
- /*第一次上电 读取 0x83指令*/
- typedef struct _READ_COLL_CMD_{
- uint8_t nodeCur; // 当前采集器索引
- uint8_t portCur; // 当前报税口索引
- uint8_t checknum[16][2]; // 报税器查询状态
- uint16_t stauts[2]; // 采集器报税口0状态
- }ReadCollcmd;
- extern ReadCollcmd g_readCmd83;
- extern ReadCollcmd g_readCmd58;
- extern ReadCollcmd g_readCmd56;
- typedef struct _da_83_{
- uint32_t sn;
- uint8_t para;
- uint8_t taxNo;
- }__attribute__((packed)) da83;
- typedef struct _cmd_info_0x83_{
- da83 da[16];
- uint8_t front;
- uint8_t rear;
- uint8_t bread83;
- }__attribute__((packed)) cmdInfo83;
- extern cmdInfo83 g_cmdInfo83;
- typedef struct _da_comm_queue_info{
- uint8_t type01; // 一级消息类型
- uint16_t type02; // 二级消息类型
- uint8_t da[128];
- uint8_t size;
- }__attribute__((packed)) commDa;
- #define COMM_QUEUE_SZIE 8
- typedef struct _da_comm_queue{
- uint8_t front;
- uint8_t rear;
- commDa data[COMM_QUEUE_SZIE];
- }__attribute__((packed))dacommQueue;
- extern dacommQueue g_commQueue;
- extern void init_comm_queue(void);
- extern uint8_t save_comme_queue(uint8_t type1, uint16_t type2, uint8_t *data, uint8_t size);
- extern uint16_t read_comm_queue(uint8_t *type1, uint16_t *type2, uint8_t *outda);
- enum {
- ENCONDER_NO = 0,
- ENCONDER_EN = 1,
- };
- typedef struct _encoder_opt_da_{
- uint8_t bhaveEncoder; // 0: 没有编码器 1:带编码器
- uint8_t bEportfinish; // 此报税口下的枪是否读取完成,等于此报税口下的枪数,则为读取完成
- }__attribute__((packed)) EncodeOptDa;
- extern EncodeOptDa g_encoderDa;
- typedef struct _run_mqtt_data_{
- uint8_t bChangeMqtt; // 1:为切换mqtt 服务器
- uint8_t bChangeSuc; // 0:初始值 1: 切换成功 2: 切换连接失败
- uint8_t connectNum; // 连接次数
- uint8_t mqttIdlen;
- uint8_t mqttPortlen;
- uint8_t mqttUserlen;
- uint8_t mqttPwdlen;
- MqttIdPort mqttMsg; // mqtt的IP地址和端口
- }__attribute__((packed)) MqttRunDa;
- extern MqttRunDa g_mqttRunDa;
- typedef struct _config_log_data_{
- uint8_t bEnable; //是否开启 0:不开启 1:开启
- uint32_t settimer; // 上报设定的时间
- timeout_t time; // 超时时间
- uint32_t settimer2; // 只返回原始数据
- timeout_t time2; //
- uint8_t status;
- uint8_t collIndex;
- uint8_t taxInddex;
- uint8_t gunIndex;
- uint8_t curportno;
- uint8_t curgunno;
- }__attribute__((packed)) LogCfigDa;
- extern LogCfigDa g_logCfigDa;
- typedef struct _sm4_key_{
- uint8_t flag[12]; // 标识字符
- uint32_t sn; // SN
- }__attribute__((packed)) sm4Key;
- typedef union _sm4_key_union_{
- uint8_t key[16];
- sm4Key keyda;
- }__attribute__((packed)) Sm4Key;
- extern Sm4Key g_sm4Key;
- extern void get_sm4_key(void);
- extern void init_log_info(void);
- extern void init_queue(cmdInfo83 *da);
- extern uint8_t en_queue_cmd83(cmdInfo83 *da, uint32_t sn, uint8_t para, uint8_t taxNo, uint8_t flag);
- extern uint8_t de_queue_cmd83(cmdInfo83 *inda,da83 *outda);
- #endif
|