#ifndef __DOWNLINK_H__ #define __DOWNLINK_H__ #include "stm32f10x.h" #include "../network_mgr/net_proc.h" #define COLLECT_MAX_NUM 16 #define TAX_MAX_NUM 2 #define GUN_MAX_NUM 8 #define DOWNLINK_CONFIG_TYPE 0x10 //0x65 #define CONFIG_ADDR 0X100 #define CONFIG_WRITE 0x01 //typedef struct _tax_conf //{ // uint8_t tax_id; //报税口编号 // uint8_t gun_num; //加油枪数量 // uint8_t gunid[GUN_MAX_NUM]; //加油枪编号 // uint8_t alrd_sn; //是否查询过加油机的信息 // uint8_t factory; /*厂家 1:英泰 2:拓盛 */ // uint8_t status; // 报税口的状态 ,是否连接 // uint8_t encryption; // 报税口的加密状态 ,由服务器下发的,暂停没有用于 // uint8_t monitor_serino[16]; //序列号 //}__attribute__((packed)) tax_conf_t; // //typedef struct _collect_conf //{ // uint32_t collect_no; //采集器编号 // uint8_t tax_num; //报税口数量 // uint8_t tax_type; //报税口类型,明文或密文 // uint8_t collect_status; // 采集器的状态 在线或是离线 0 离线 1:在线 // uint8_t coll_send_num; // 采集器发送的次数 // tax_conf_t tax_conf[TAX_MAX_NUM]; //}__attribute__((packed)) collect_conf_t; typedef struct _downlink_config { uint8_t config_flag; //采集器配置标记 uint32_t gateway_id; //网关id // uint8_t collect_num; //采集器数量 // collect_conf_t collect_conf[COLLECT_MAX_NUM]; }__attribute__((packed)) downlink_config_t; extern downlink_config_t downlink_config; /*==============================================================*/ /* 以下是服务器下发 需要用到的解析*/ /* 升级信息下行 0x1001 */ typedef struct _downlink_system_cmd_0x1001 { uint16_t targetType; // 设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器) uint32_t sn; // sn 编号 uint16_t taskNo; // 任务号 uint8_t urlLen; // URL长度 char url[128]; // url地址 }__attribute__((packed)) downlinkSysCmd0x1001; /* 切换mqtt IP地址 0x1003 */ typedef struct _downlink_system_cmd_0x1003 { uint32_t gateway_sn; // 网关SN uint16_t targettype; // 类型 0x0101网关 0x0201:采集器 0x0301:液位仪 uint8_t iplen; // ip地址长度 uint8_t portlen; // 端口长度 uint8_t userlen; // 用户名长度 uint8_t pwdlen; // 密码长度 // char port[6]; // 端口号 // char ip[32]; //IP地址 // char admin[8]; // 用户名 // char password[16]; // 密码 uint8_t str[76]; }__attribute__((packed)) downlinkSysCmd0x1003; /* 采集器路由信息初始化 0x1011 */ typedef struct _configmsg_{ uint32_t collectSn; uint8_t comEncrypt[2]; //报税口的加密状态 }__attribute__((packed)) configMsg; typedef struct _downlink_system_cmd_0x1011 { uint32_t gateway_id; //网关SN uint8_t collect_num; //采集器数量 configMsg cfigMsg[16]; }__attribute__((packed)) downlinkSysCmd0x1011; /* 刷新税控序列号 0x1012*/ typedef struct _downlink_system_cmd_0x1012_{ uint32_t gateway_sn; // 网关SN uint32_t coll_sn; // 采集器编号 uint8_t tax_no; // 报税口编号 }__attribute__((packed)) downlinkSysCmd0x1012; /* 设备重新启动 0x1021*/ typedef struct _downlink_system_cmd_0x1021_{ uint16_t targetType; // 设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器) uint32_t sn; // 设备sn号 }__attribute__((packed)) downlinkSysCmd0x1021; /* 状态信息 固件信息下行 0x1001*/ typedef struct _downlink_status_cmd_0x1001_{ uint32_t gateway_sn; // 网关ID uint16_t targetType; // 设备类型(0x0101:网关;0x0201;采集器:0x0301:液位仪采集器;0x0401:屏采集器) uint32_t sn; // 设备编号 }__attribute__((packed)) downlinkStatusCmd0x1001; typedef struct _downlink_data_oil_cmd_0x1021_{ uint32_t gateway_sn; // 网关编号 }__attribute__((packed)) downlinkDataOilCmd0x1021; typedef struct _downlink_sys_oil_cmd_0x1031_{ uint32_t gateway_sn; // 网关编号 uint16_t paraLen; // 参数长度 char param[48]; // 参数 }__attribute__((packed)) downlinkSysOilCmd0x1031; void downlink_init(void); int downlink_gateway_analyze(uint8_t *data, uint16_t len); #endif