1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。 2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
167 lines
5.8 KiB
C
167 lines
5.8 KiB
C
#ifndef _MQTT_H
|
||
#define _MQTT_H
|
||
|
||
#include "CH57x_common.h" //CH57X 库包含头文件
|
||
#include "MQTTPacket.H"
|
||
#include "net.h"
|
||
#include "check_fun.h"
|
||
#include "SRAM_Variable_Address.h"
|
||
#include "BLV_Dev_Action.h"
|
||
|
||
#ifndef MQTT_EN
|
||
#define MQTT_EN 1
|
||
#endif
|
||
|
||
#define USER_NAME "34D0B8108D15&a1STn6qUB4r"
|
||
#define PASSWORD "d9c0248ec19854b56d7bb79c30e34c54d68875a6"
|
||
#define DOMAIN_NAME "a1STn6qUB4r.iot-as-mqtt.cn-shanghai.aliyuncs.com"
|
||
#define CLIENT_ID "34D0B8108D15|securemode=3,signmethod=hmacsha1|"
|
||
|
||
#define SUB_TOPIC "sub_topic"
|
||
#define PUB_TOPIC "pub_topic"
|
||
|
||
#define SRAM_MQTT_RECEIVE_START 0x030000 //MQTT接收缓存起始地址
|
||
#define SRAM_MQTT_RECEIVE_END 0x030FFF //MQTT接收缓存结束地址
|
||
#define SRAM_MQTT_RECEIVE_LEN 0x400 //MQTT单个接收缓存长度
|
||
|
||
|
||
#define CmdID_LEN 4
|
||
#define DeviceID_LEN 6
|
||
#define UTCTime_LEN 6
|
||
|
||
#define CMD_HEAD_ERROR 0x00 //指令头错误
|
||
#define CMD_SUCCESS 0x01 //执行成功
|
||
#define CMD_CRC_ERROR 0x02 //CRC验证失败
|
||
#define CMD_DEC_ERROR 0x03 //解密失败
|
||
#define CMD_DEV_NO 0xe1 //设备未激活
|
||
|
||
#define SRAM_MQTT_DEVICE_LIST_START 0x031000
|
||
#define SRAM_MQTT_DEVICE_LIST_END 0x0313FF
|
||
|
||
#define Struct_CFG_Dev_Freego_Name_Len 20 //名称长度限制
|
||
#define Struct_CFG_Dev_Freego_Map_LEN 24 //新增设备结构体长度 不包括参数类型02
|
||
#define CFG_Dev_Freego_Map_MAX 40 //支持的最大设备数 分配内存和tcp发送有1K的限制
|
||
#define HtolCpy(pdata, datau32) {pdata[0] = (datau32>>24)&0x000000ff;pdata[1] = (datau32>>16)&0x000000ff; \
|
||
pdata[2] = (datau32>>8)&0x000000ff;pdata[3] = (datau32>>0)&0x000000ff;pdata[4] = ((SysTick_1ms%1000)>>8); \
|
||
pdata[5] = (SysTick_1ms%1000);}//将u32的数按高字节存放在pdata
|
||
|
||
typedef enum
|
||
{
|
||
CMD_PKT,
|
||
CMDID_PKT,
|
||
DEVICE_ID_PKT = 5,
|
||
UTC_PKT = 11,
|
||
PRAM_PKT = 17,
|
||
}FREEG_PKT_E;
|
||
|
||
#pragma pack(1)
|
||
|
||
typedef struct
|
||
{
|
||
UINT8 init_flag:1; /* 初始化标志位 */
|
||
UINT8 con_flag:1; /* 已连接MQTT服务器标志位 */
|
||
UINT8 pub_flag:1; /* 已发布会话消息标志位 */
|
||
UINT8 sub_flag:1; /* 已订阅会话标志位 */
|
||
UINT8 tout_flag:1; /* 超时标志位 */
|
||
UINT8 domain_dns:1; //mqtt域名解析标志
|
||
UINT8 reconnect:2; //超时重连次数
|
||
|
||
UINT8 dns_en:1; //使能域名解析
|
||
UINT8 mqtt_socket:7; //存放mqtt 套接字
|
||
|
||
UINT16 packetid; /* 包ID */
|
||
|
||
UINT8 MyBuf[RECE_BUF_LEN]; /* 定义一个临时缓冲区 */
|
||
|
||
UINT8 des_ip[4]; //目标ip
|
||
uint16_t keepAliveInterval; //保持在线时间
|
||
UINT32 sour_port; //源端口
|
||
|
||
char* domain_name; //域名
|
||
char* clientID; //clientID
|
||
char *username; /* 用户名 */
|
||
char *password; /* 服务器登陆密码 */
|
||
char *sub_topic; /* 订阅的会话名,为了自发自收,应与发布的会话名相同 */
|
||
char *pub_topic; /* 发布的会话*/
|
||
|
||
UINT32 Sram_read_addr; //MQTT接收处理地址
|
||
UINT32 Sram_write_addr; //MQTT接收地址
|
||
|
||
uint8_t mqtt_sta; //2023-03-17
|
||
uint32_t wait_cot; //2023-03-17
|
||
uint8_t mqtt_cfail_num; //2023-03-17
|
||
|
||
}MQTT_INFO;
|
||
|
||
typedef struct
|
||
{
|
||
UINT8 publish[65]; //发布会话名
|
||
|
||
UINT8 sublish[65]; //订阅会话名
|
||
|
||
}MQTT_THEME; //mqtt主题
|
||
|
||
typedef struct
|
||
{
|
||
MQTT_THEME mqtt_theme; //主题
|
||
|
||
UINT8 domain_name[65]; //域名
|
||
|
||
UINT8 clientID[65]; //clientID
|
||
|
||
UINT8 username[65]; /* 用户名 */
|
||
|
||
UINT8 password[65]; /* 服务器登陆密码 */
|
||
|
||
}MQTT_BASIC_INFO; //mqtt基本参数
|
||
|
||
typedef struct
|
||
{
|
||
uint16_t keepAliveInterval; //保持在线时间
|
||
|
||
MQTT_BASIC_INFO* mqtt_basic_info; //mqtt基本参数
|
||
|
||
}MQTT_DATA;
|
||
|
||
|
||
//typedef struct CFG_Freego_Map_Add* CFG_Freego_Map_AddP; //新增映射表指针
|
||
|
||
//包括下一个节点指针 结构体大小是18个字节
|
||
typedef struct CFG_Freego_Map_Add
|
||
{
|
||
/*配置数据自带参数开始*/
|
||
uint8_t ServerDevType; //u8的设备类型,包括本地自带设备和485设备
|
||
uint8_t ServerDevAddr; //u8的设备地址,本地自带设备地址默认为0,485设备地址需要填相应设备的实际地址
|
||
uint16_t FreegoDevOutputLoop; //回路地址 非场景 低字节为非零; 场景 高字节为非零
|
||
// uint8_t DevLoopAddr[4]; //设备回路地址 分别对应设备类型 设备地址 回路地址L 回路地址H
|
||
uint8_t DevLoopName[20]; //设备回路地址的别名
|
||
|
||
}__attribute__ ((__packed__))Struct_CFG_Freego_Map_Add; //配置数据新增映射表结构体
|
||
|
||
#pragma pack()
|
||
|
||
#if MQTT_EN
|
||
extern MQTT_INFO mqtt_info;
|
||
//extern MQTT_INFO mqtt_info2;
|
||
#endif
|
||
|
||
UINT8 Transport_Open(MQTT_INFO* Mqtt_info, UINT8* des_ip, UINT32 sour_port);
|
||
UINT8 Transport_Close(UINT8 S);
|
||
//void MQTT_Connect(UINT8 S, char *username,char *password);
|
||
void MQTT_Connect(UINT8 S, char* clientID, char *username, char *password, int keepAliveInterval);
|
||
void MQTT_Subscribe(UINT8 S, char *topic);
|
||
void MQTT_Unsubscribe(UINT8 S, char *topic);
|
||
//void MQTT_Publish(UINT8 S, char *topic, char *payload);
|
||
void MQTT_Publish(UINT8 S, char *topic, UINT8 *payload, int payloadlen, int qos);
|
||
void MQTT_Pingreq(UINT8 S);
|
||
void MQTT_Disconnect(UINT8 S);
|
||
void CH57xNET_CreatTcpSocket(void);
|
||
|
||
UINT8 MQTT_Init(MQTT_INFO* Mqtt_info, char* domain_name, UINT8* des_ip, char* clientID, char *username, char *password, char* sublish, int keepAliveInterval);
|
||
UINT8 MQTT_Flash_Parameter_Init(MQTT_INFO* Mqtt_info);
|
||
|
||
void MQTT_SET_SUB_Topic(MQTT_INFO* Mqtt_info, char* topic);
|
||
void MQTT_SET_PUB_Topic(MQTT_INFO* Mqtt_info, char* topic);
|
||
void MQTT_Receive_Processing(void);
|
||
#endif
|