1136 lines
36 KiB
C
1136 lines
36 KiB
C
|
|
/********************************** (C) COPYRIGHT ******************************
|
|||
|
|
* File Name : MQTT_Sub.c
|
|||
|
|
* Author : WCH
|
|||
|
|
* Version : V1.0
|
|||
|
|
* Date : 2018/12/01
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP/IP<EFBFBD><EFBFBD>MQTTЭ<EFBFBD><EFBFBD>ͨѶ<EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ٶȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʺź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* (1)<EFBFBD><EFBFBD>CH579 Examples by KEIL;
|
|||
|
|
* (2)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ,115200bps,<EFBFBD><EFBFBD><EFBFBD>߹رյ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IDE<EFBFBD>궨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
* (3)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP/IP<EFBFBD><EFBFBD>MQTTЭ<EFBFBD><EFBFBD>ͨѶ<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾSUB<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* log 202204211400 <EFBFBD><EFBFBD>ӡMQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ӻظ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ļظ<EFBFBD>
|
|||
|
|
* 202204231151 MQTT<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
*******************************************************************************/
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/******************************************************************************/
|
|||
|
|
/* ͷ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
#include <stdio.h>
|
|||
|
|
#include <string.h>
|
|||
|
|
#include "net.h"
|
|||
|
|
#include "aLiYun.h"
|
|||
|
|
#include "mqtt.h"
|
|||
|
|
#include "SPI_SRAM.h"
|
|||
|
|
#include "DBG.h"
|
|||
|
|
#include "PC_DeviceTest_Fun.h"
|
|||
|
|
#include "flash.h"
|
|||
|
|
#include "rtc.h"
|
|||
|
|
|
|||
|
|
#include "includes.h"
|
|||
|
|
|
|||
|
|
#define KEEPLIVE_ENABLE 1 /* <20><><EFBFBD><EFBFBD>KEEPLIVE<56><45><EFBFBD><EFBFBD> */
|
|||
|
|
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD> */
|
|||
|
|
#define RECE_BUF_LEN 536 /* <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С */
|
|||
|
|
/* CH57xNET<45><54>TCP<43><50>MSS<53><53><EFBFBD><EFBFBD>Ϊ536<33>ֽڣ<D6BD><DAA3><EFBFBD>һ<EFBFBD><D2BB>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>Ϊ536<33>ֽ<EFBFBD> */
|
|||
|
|
/* TCPЭ<50><D0AD>ջ<EFBFBD><D5BB><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪsocket<65>Ľ<EFBFBD><C4BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>趨 */
|
|||
|
|
/* RX_QUEUE_ENTRIESʱҪ<CAB1><D2AA><EFBFBD><EFBFBD>MSS<53>ʹ<EFBFBD><CDB4><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ĺ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>細<EFBFBD><E7B4B0>ֵΪ4*MSS<53><53><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>һ<EFBFBD>λᷢ<CEBB><E1B7A2> */
|
|||
|
|
/* 4<><34>TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESС<53><D0A1>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ᵼ<EFBFBD><E1B5BC><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>ͨѶЧ<D1B6>ʽ<EFBFBD><CABD><EFBFBD> */
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESҪ<53><D2AA><EFBFBD><EFBFBD>( <20><><EFBFBD><EFBFBD>/MSS ),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>socketͬʱ<CDAC><CAB1><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD> */
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>RX_QUEUE_ENTRIESҪ<53><D2AA><EFBFBD><EFBFBD>(( <20><><EFBFBD><EFBFBD>/MSS )*socket<65><74><EFBFBD><EFBFBD>) <20>ڶ<EFBFBD><DAB6><EFBFBD>socketͬʱ<CDAC><CAB1><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ʱ */
|
|||
|
|
/* Ϊ<>˽<EFBFBD>ԼRAM<41><4D><EFBFBD>뽫<EFBFBD><EBBDAB><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪMSS */
|
|||
|
|
#if MQTT_EN
|
|||
|
|
#define MQTT_NORMALDATA_UP_FLAG 0x01
|
|||
|
|
#endif
|
|||
|
|
UINT16 aport=1000; /* CH579Դ<39>˿<EFBFBD> */
|
|||
|
|
|
|||
|
|
#if MQTT_EN
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ*/
|
|||
|
|
uint8_t MQTT_NoramlData_Up(void);
|
|||
|
|
uint8_t MQTT_WxLock_Ctrl(uint8_t *buf);
|
|||
|
|
void MQTT_Dev_Ctrl(uint8_t *buf);
|
|||
|
|
void TimeSetUseStamp(uint32_t TimeStamp);
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
|
|||
|
|
MQTT_INFO mqtt_info = {
|
|||
|
|
.init_flag = 0, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
.con_flag = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
|
|||
|
|
.pub_flag = 1, /* <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ự<EFBFBD><E1BBB0>Ϣ<EFBFBD><CFA2>־λ */
|
|||
|
|
.sub_flag = 0, /* <20>Ѷ<EFBFBD><D1B6>ĻỰ<C4BB><E1BBB0>־λ */
|
|||
|
|
.tout_flag = 0, /* <20><>ʱ<EFBFBD><CAB1>־λ */
|
|||
|
|
.domain_dns = 0, //mqtt<74><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
.reconnect = 3, //ʧ<><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
.keepAliveInterval = 60, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
.packetid = 0, /* <20><>ID */
|
|||
|
|
.username = /*USER_NAME*/NULL, /* <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>豸Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD> */
|
|||
|
|
.password = /*PASSWORD*/NULL, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD> */
|
|||
|
|
.sub_topic = /*SUB_TOPIC*/NULL, /* <20><><EFBFBD>ĵĻỰ<C4BB><E1BBB0><EFBFBD><EFBFBD> */
|
|||
|
|
.pub_topic = /*PUB_TOPIC*/NULL, /* <20><><EFBFBD><EFBFBD><EFBFBD>ĻỰ*/
|
|||
|
|
.mqtt_socket = 0, //<2F><><EFBFBD><EFBFBD>mqtt <20><EFBFBD><D7BD><EFBFBD>
|
|||
|
|
.MyBuf = {0},
|
|||
|
|
.Sram_write_addr = SRAM_MQTT_RECEIVE_START, //
|
|||
|
|
.Sram_read_addr = SRAM_MQTT_RECEIVE_START, //
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if MQTT_EN
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Transport_Open
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8* dis_ip<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ip,
|
|||
|
|
|
|||
|
|
UINT32 sour_port<EFBFBD><EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
UINT8 Transport_Open(MQTT_INFO* Mqtt_info, UINT8* des_ip, UINT32 sour_port)
|
|||
|
|
{
|
|||
|
|
UINT8 i,s;
|
|||
|
|
SOCK_INF TmpSocketInf; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱsocket<65><74><EFBFBD><EFBFBD> */
|
|||
|
|
if(Mqtt_info == NULL) return 0xFF;
|
|||
|
|
memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF)); /* <20><><EFBFBD>ڲ<EFBFBD><DAB2>Ὣ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
memcpy((void *)TmpSocketInf.IPAddr, des_ip, 4); /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ */
|
|||
|
|
TmpSocketInf.DesPort = 1883; /* <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6> */
|
|||
|
|
TmpSocketInf.SourPort = /*aport++*/sour_port; /* <20><><EFBFBD><EFBFBD>Դ<EFBFBD>˿<EFBFBD> */
|
|||
|
|
TmpSocketInf.ProtoType = PROTO_TYPE_TCP; /* <20><><EFBFBD><EFBFBD>socekt<6B><74><EFBFBD><EFBFBD> */
|
|||
|
|
TmpSocketInf.RecvStartPoint = (UINT32)/*SocketRecvBuf*/&Mqtt_info->MyBuf[0]; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
TmpSocketInf.RecvBufLen = RECE_BUF_LEN ; /* <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ճ<EFBFBD><D5B3><EFBFBD> */
|
|||
|
|
i = CH57xNET_SocketCreat(&s, &TmpSocketInf); /* <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SocketId<49><64> */
|
|||
|
|
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|
|||
|
|
i = CH57xNET_SocketConnect(s); /* TCP<43><50><EFBFBD><EFBFBD> */
|
|||
|
|
mStopIfError(i); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Transport_Close
|
|||
|
|
* Description : <EFBFBD>ر<EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD>Ҫ<EFBFBD>رյ<EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
UINT8 Transport_Close(UINT8 S)
|
|||
|
|
{
|
|||
|
|
UINT8 i;
|
|||
|
|
i=CH57xNET_SocketClose(S, TCP_CLOSE_NORMAL);
|
|||
|
|
mStopIfError(i);
|
|||
|
|
return i;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Transport_SendPacket
|
|||
|
|
* Description : <EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UINT8 *buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڵ<EFBFBD>ַ
|
|||
|
|
UINT32 len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Transport_SendPacket(UINT8 S, UINT8 *buf, UINT32 len)
|
|||
|
|
{
|
|||
|
|
UINT32 totallen;
|
|||
|
|
UINT8 *p=buf;
|
|||
|
|
UINT8 ReNum=0; //ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD> 2022-07-07
|
|||
|
|
totallen=len;
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
len = totallen;
|
|||
|
|
CH57xNET_SocketSend(S, p, &len); /* <20><>MyBuf<75>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> */
|
|||
|
|
totallen -= len; /* <20><><EFBFBD>ܳ<EFBFBD><DCB3>ȼ<EFBFBD>ȥ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵij<CFB5><C4B3><EFBFBD> */
|
|||
|
|
p += len; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ƫ<EFBFBD><C6AB>*/
|
|||
|
|
if(totallen)
|
|||
|
|
{
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"ʣ<EFBFBD><EFBFBD>totallen<EFBFBD><EFBFBD>%d", totallen);
|
|||
|
|
ReNum++;
|
|||
|
|
if(ReNum>3){ break;} //ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD> 2022-07-07
|
|||
|
|
continue; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
}
|
|||
|
|
break; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>˳<EFBFBD> */
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Connect
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char* clientID<EFBFBD><EFBFBD>clientID
|
|||
|
|
char *username <EFBFBD>豸<EFBFBD><EFBFBD>
|
|||
|
|
char *password <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int keepAliveInterval :<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Connect(UINT8 S, char* clientID, char *username, char *password, int keepAliveInterval)
|
|||
|
|
{
|
|||
|
|
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
|
|||
|
|
if(clientID == NULL || username == NULL || password == NULL)
|
|||
|
|
{
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"MQTT<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>\r\n");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
UINT32 len = strlen(clientID) + strlen(username) + strlen(password) + 25;
|
|||
|
|
UINT8* buf = malloc(len);
|
|||
|
|
if(buf == NULL) return;
|
|||
|
|
|
|||
|
|
//data.clientID.cstring = "11";
|
|||
|
|
data.clientID.cstring = clientID;
|
|||
|
|
data.keepAliveInterval = keepAliveInterval;
|
|||
|
|
data.cleansession = 1;
|
|||
|
|
data.username.cstring = username;
|
|||
|
|
data.password.cstring = password;
|
|||
|
|
|
|||
|
|
len=MQTTSerialize_connect(buf, len, &data);
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD>ȣ<EFBFBD>%d\r\n", len);
|
|||
|
|
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"Send Buff:",buf, len);
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
free(buf);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Subscribe
|
|||
|
|
* Description : MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char *topic <EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Subscribe(UINT8 S, char *topic)
|
|||
|
|
{
|
|||
|
|
MQTTString topicString = MQTTString_initializer;
|
|||
|
|
if(topic == NULL) return;
|
|||
|
|
|
|||
|
|
UINT32 len = strlen(topic)+ 10;
|
|||
|
|
UINT8* buf = malloc(len);
|
|||
|
|
if(buf == NULL) return;
|
|||
|
|
|
|||
|
|
int req_qos=0;
|
|||
|
|
UINT32 msgid=1;
|
|||
|
|
|
|||
|
|
topicString.cstring=topic;
|
|||
|
|
len=MQTTSerialize_subscribe(buf, len, 0, msgid, 1, &topicString, &req_qos);
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>ȣ<EFBFBD>%d\r\n SocketId:%d", len, S);
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
free(buf);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Unsubscribe
|
|||
|
|
* Description : MQTTȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char *topic ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Unsubscribe(UINT8 S, char *topic)
|
|||
|
|
{
|
|||
|
|
MQTTString topicString = MQTTString_initializer;
|
|||
|
|
if(topic == NULL) return;
|
|||
|
|
|
|||
|
|
UINT32 len = strlen(topic)+ 20;
|
|||
|
|
UINT8* buf = malloc(len);
|
|||
|
|
if(buf == NULL) return;
|
|||
|
|
UINT32 msgid=1;
|
|||
|
|
|
|||
|
|
topicString.cstring=topic;
|
|||
|
|
len=MQTTSerialize_unsubscribe(buf, len, 0, msgid, 1, &topicString);
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>ȣ<EFBFBD>%d\r\n", len);
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
free(buf);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Publish
|
|||
|
|
* Description : MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char *topic <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int qos<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ȼ<EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Publish(UINT8 S, char *topic, UINT8 *payload, int payloadlen, int qos)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
|
|||
|
|
|
|||
|
|
MQTTString topicString = MQTTString_initializer;
|
|||
|
|
|
|||
|
|
if(topic == NULL || payload == NULL) return;
|
|||
|
|
|
|||
|
|
UINT32 len = strlen(topic) + payloadlen + 10;
|
|||
|
|
UINT8* buf = malloc(len);
|
|||
|
|
if(buf == NULL) return;
|
|||
|
|
|
|||
|
|
topicString.cstring = topic;
|
|||
|
|
len= MQTTSerialize_publish(buf, len, 0, qos, 0, mqtt_info.packetid++, topicString, payload, payloadlen);
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>%d\r\n S:%d", len, S);
|
|||
|
|
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"data :",buf,len);
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
free(buf);
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Pingreq
|
|||
|
|
* Description : MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Pingreq(UINT8 S)
|
|||
|
|
{
|
|||
|
|
UINT32 len;
|
|||
|
|
UINT8 buf[20];
|
|||
|
|
|
|||
|
|
len=MQTTSerialize_pingreq(buf,sizeof(buf));
|
|||
|
|
Dbg_Print(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>%d\r\n", len);
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Disconnect
|
|||
|
|
* Description : <EFBFBD>Ͽ<EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : UINT8 S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Disconnect(UINT8 S)
|
|||
|
|
{
|
|||
|
|
UINT32 len;
|
|||
|
|
UINT8 buf[50];
|
|||
|
|
len=MQTTSerialize_disconnect(buf,sizeof(buf));
|
|||
|
|
Transport_SendPacket(S, buf, len);
|
|||
|
|
LOG_NET_COMM_Send_Record(S,mqtt_info.des_ip,1883,&buf[0],len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Init
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>MQTT
|
|||
|
|
* Input : domain_name<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ip<EFBFBD><EFBFBD>дNULL (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* des_ip: MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* clientID: clientID (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* username: <EFBFBD>豸<EFBFBD><EFBFBD> (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* password<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
sublish: <EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>free<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* keepAliveInterval<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
UINT8 MQTT_Init(MQTT_INFO* Mqtt_info, char* domain_name, UINT8* des_ip, char* clientID, char *username, char *password, char* sublish, int keepAliveInterval)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
if(Mqtt_info == NULL || clientID ==NULL || username == NULL || password == NULL || sublish == NULL) return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
if(des_ip == NULL) //Ŀ<><C4BF>ipΪ<70><CEAA>
|
|||
|
|
{
|
|||
|
|
if(domain_name == NULL) return 1; //<2F><><EFBFBD><EFBFBD>ҲΪ<D2B2><CEAA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// if(server_info.net_sta != NET_COMPLETE) return 2; //<2F><><EFBFBD>緱æ
|
|||
|
|
Mqtt_info->dns_en = 1; //DNS<4E><53><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD>
|
|||
|
|
// server_info.dns_sta = DNS_INIT;
|
|||
|
|
// server_info.net_sta = NET_DNS; //״̬<D7B4><CCAC>Ϊ NET_DNS
|
|||
|
|
|
|||
|
|
if(Mqtt_info->domain_name)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->domain_name);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Mqtt_info->domain_name = domain_name;
|
|||
|
|
// server_info.dns_domian_name = domain_name;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
memcpy(&Mqtt_info->des_ip, des_ip, 4);
|
|||
|
|
// if(server_info.net_sta != NET_COMPLETE) return 1;
|
|||
|
|
// server_info.net_sta = NET_MQTT_INIT; //״̬<D7B4><CCAC>Ϊ,NET_MQTT_INIT
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(Mqtt_info->clientID)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->clientID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if(Mqtt_info->username)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->username);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if(Mqtt_info->password)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->password);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(Mqtt_info->sub_topic)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->sub_topic);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Mqtt_info->clientID = clientID;
|
|||
|
|
Mqtt_info->username = username;
|
|||
|
|
Mqtt_info->password = password;
|
|||
|
|
Mqtt_info->sub_topic = sublish;
|
|||
|
|
Mqtt_info->keepAliveInterval = keepAliveInterval;
|
|||
|
|
Mqtt_info->init_flag = 1;
|
|||
|
|
Mqtt_info->reconnect = 3;
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_SET_SUB_Topic
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>MQTT_<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : topic<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_SET_SUB_Topic(MQTT_INFO* Mqtt_info, char* topic)
|
|||
|
|
{
|
|||
|
|
if(topic != NULL)
|
|||
|
|
{
|
|||
|
|
Mqtt_info->sub_topic = topic;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_SET_PUB_Topic
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>MQTT_<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : topic<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_SET_PUB_Topic(MQTT_INFO* Mqtt_info, char* topic)
|
|||
|
|
{
|
|||
|
|
if(topic != NULL)
|
|||
|
|
{
|
|||
|
|
Mqtt_info->pub_topic = topic;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Flash_Parameter_Init
|
|||
|
|
* Description : <EFBFBD><EFBFBD>flash<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>mqtt
|
|||
|
|
* Input : topic<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
UINT8 MQTT_Flash_Parameter_Init(MQTT_INFO* Mqtt_info)
|
|||
|
|
{
|
|||
|
|
if(Mqtt_info == NULL) return 1;
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>*/
|
|||
|
|
MQTT_DATA mqtt_data;
|
|||
|
|
|
|||
|
|
mqtt_data.mqtt_basic_info = malloc(sizeof(MQTT_BASIC_INFO));
|
|||
|
|
if(mqtt_data.mqtt_basic_info == NULL)
|
|||
|
|
{
|
|||
|
|
return 2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
UINT8 ret = 0;
|
|||
|
|
UINT16 keepAlive = 0;
|
|||
|
|
char* domain_name = NULL;
|
|||
|
|
char* clientID = NULL;
|
|||
|
|
char* userName = NULL;
|
|||
|
|
char* passWord = NULL;
|
|||
|
|
char* sublish = NULL;
|
|||
|
|
char* publish = NULL;
|
|||
|
|
|
|||
|
|
Flash_Read((UINT8*)&mqtt_data ,sizeof(MQTT_DATA)-4, FLASH_MCU_MQTT_START_ADDRESS + sizeof(ALIYUN_INFO) -4-2);
|
|||
|
|
Flash_Read((UINT8*)mqtt_data.mqtt_basic_info ,sizeof(MQTT_BASIC_INFO), FLASH_MCU_MQTT_START_ADDRESS + sizeof(ALIYUN_INFO)-4);
|
|||
|
|
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"keepAliveInterval:%d", mqtt_data.keepAliveInterval);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"sublish:%s", mqtt_data.mqtt_basic_info->mqtt_theme.sublish);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"publish:%s", mqtt_data.mqtt_basic_info->mqtt_theme.publish);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"domain_name:%s", mqtt_data.mqtt_basic_info->domain_name);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"clientID:%s", mqtt_data.mqtt_basic_info->clientID);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"username:%s", mqtt_data.mqtt_basic_info->username);
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"password:%s", mqtt_data.mqtt_basic_info->password);
|
|||
|
|
|
|||
|
|
if(mqtt_data.keepAliveInterval < 0xFFFF)
|
|||
|
|
{
|
|||
|
|
keepAlive = mqtt_data.keepAliveInterval;
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>ֵ
|
|||
|
|
{
|
|||
|
|
keepAlive = 120;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->mqtt_theme.sublish[0] != 0xFF && mqtt_data.mqtt_basic_info->mqtt_theme.sublish[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->mqtt_theme.sublish)+1;
|
|||
|
|
sublish = malloc(len);
|
|||
|
|
if(sublish == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 2;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(sublish, 0, len);
|
|||
|
|
strcpy(sublish, (char*)mqtt_data.mqtt_basic_info->mqtt_theme.sublish);
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ret = 3;
|
|||
|
|
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->domain_name[0] != 0xFF && mqtt_data.mqtt_basic_info->domain_name[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->domain_name)+1;
|
|||
|
|
domain_name = malloc(len);
|
|||
|
|
if(domain_name == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 2;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(domain_name, 0, len);
|
|||
|
|
strcpy(domain_name, (char*)mqtt_data.mqtt_basic_info->domain_name);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ret = 3;
|
|||
|
|
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->clientID[0] != 0xFF && mqtt_data.mqtt_basic_info->clientID[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->clientID)+1;
|
|||
|
|
clientID = malloc(len);
|
|||
|
|
if(clientID == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 2;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(clientID, 0, len);
|
|||
|
|
strcpy(clientID, (char*)mqtt_data.mqtt_basic_info->clientID);
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ret = 3;
|
|||
|
|
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->username[0] != 0xFF && mqtt_data.mqtt_basic_info->username[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->username)+1;
|
|||
|
|
userName = malloc(len);
|
|||
|
|
if(userName == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 2;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(userName, 0, len);
|
|||
|
|
strcpy(userName, (char*)mqtt_data.mqtt_basic_info->username);
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ret = 3;
|
|||
|
|
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->password[0] != 0xFF && mqtt_data.mqtt_basic_info->password[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->password)+1;
|
|||
|
|
passWord = malloc(len);
|
|||
|
|
if(passWord == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 2;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(passWord, 0, len);
|
|||
|
|
strcpy(passWord, (char*)mqtt_data.mqtt_basic_info->password);
|
|||
|
|
}
|
|||
|
|
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ret = 3;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(mqtt_data.mqtt_basic_info->mqtt_theme.publish[0] != 0xFF && mqtt_data.mqtt_basic_info->mqtt_theme.publish[0] != 0x00)
|
|||
|
|
{
|
|||
|
|
UINT8 len = strlen((char*)mqtt_data.mqtt_basic_info->mqtt_theme.publish)+1;
|
|||
|
|
publish = malloc(len);
|
|||
|
|
if(publish == NULL)
|
|||
|
|
{
|
|||
|
|
ret = 4;
|
|||
|
|
goto reault;
|
|||
|
|
}
|
|||
|
|
memset(publish, 0, len);
|
|||
|
|
strcpy(publish, (char*)mqtt_data.mqtt_basic_info->mqtt_theme.publish);
|
|||
|
|
|
|||
|
|
if(Mqtt_info->pub_topic)
|
|||
|
|
{
|
|||
|
|
free(Mqtt_info->pub_topic);
|
|||
|
|
}
|
|||
|
|
Mqtt_info->pub_topic = publish;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
reault:
|
|||
|
|
switch(ret)
|
|||
|
|
{
|
|||
|
|
case 0: //<2F><EFBFBD><DEB4><EFBFBD>
|
|||
|
|
case 4: //publish<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
free(mqtt_data.mqtt_basic_info); //<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
|||
|
|
return MQTT_Init(Mqtt_info, domain_name, NULL, clientID, userName, passWord, sublish, keepAlive); //<2F><>ʼ<EFBFBD><CABC>MQTT
|
|||
|
|
|
|||
|
|
default: //<2F>д<EFBFBD><D0B4><EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_Debug_STATUS_bit,"MQTT_Flash_Parameter err");
|
|||
|
|
free(mqtt_data.mqtt_basic_info);
|
|||
|
|
if(domain_name) free(domain_name);
|
|||
|
|
if(clientID) free(clientID);
|
|||
|
|
if(userName) free(userName);
|
|||
|
|
if(passWord) free(passWord);
|
|||
|
|
if(sublish) free(sublish);
|
|||
|
|
if(publish) free(publish);
|
|||
|
|
return ret;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*------------------------------------------------------------*/
|
|||
|
|
/* MQTT<54>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*------------------------------------------------------------*/
|
|||
|
|
|
|||
|
|
void MQTT_CMD_A5(UINT8 S, char* topic, UINT8 cmdhead, UINT8* cmdID, UINT8 result) //<2F>β<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
uint32_t timetemp;
|
|||
|
|
UINT8 Cmd_buff[19] = {0};
|
|||
|
|
|
|||
|
|
timetemp = RTC_Conversion_To_Unix(&RTC_Raw_Data);
|
|||
|
|
|
|||
|
|
Cmd_buff[0] = 0xA5; //<2F>̶<EFBFBD>A5<41><35><EFBFBD><EFBFBD>
|
|||
|
|
Cmd_buff[1] = cmdhead;
|
|||
|
|
memcpy(&Cmd_buff[2],cmdID,CmdID_LEN); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
memcpy(&Cmd_buff[2+CmdID_LEN], MACAddr, DeviceID_LEN); //<2F><><EFBFBD>豸MAC<41><43>ַ
|
|||
|
|
HtolCpy((&Cmd_buff[2+CmdID_LEN+DeviceID_LEN]), timetemp);
|
|||
|
|
|
|||
|
|
Cmd_buff[17] = result;
|
|||
|
|
MQTT_Publish(S, topic, Cmd_buff, 19, 0);
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if MQTT_NORMALDATA_UP_FLAG
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
* @param <EFBFBD><EFBFBD>
|
|||
|
|
* @retval 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
* @attention <EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|||
|
|
*/
|
|||
|
|
uint8_t MQTT_CMD_A6(void) //u8* cmdID, u8 * DeviceID,u8* UTCTime
|
|||
|
|
{
|
|||
|
|
uint8_t Ret = 0x00;
|
|||
|
|
#if MQTT_EN
|
|||
|
|
uint32_t timetemp = RTC_Conversion_To_Unix(&RTC_Raw_Data); //TIMESTAMP
|
|||
|
|
Device_Public_Information_G BUS_Public;
|
|||
|
|
RS485_WxLock_INFO Rs485WxLockInfo;
|
|||
|
|
uint8_t Cmd_buff[200];
|
|||
|
|
uint8_t KeepFlag = 0x00;
|
|||
|
|
uint32_t dev_addr;
|
|||
|
|
|
|||
|
|
if(NULL == DevActionGlobal.DevLockAddr) //HostRunInfo.CfgDevAddWxLock
|
|||
|
|
{
|
|||
|
|
return Ret; //
|
|||
|
|
}
|
|||
|
|
dev_addr = DevActionGlobal.DevLockAddr;
|
|||
|
|
// Rs485WxLockInfo = HostRunInfo.CfgDevAddWxLock->DevDataStruct;
|
|||
|
|
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr);
|
|||
|
|
SRAM_DMA_Read_Buff((uint8_t *)&Rs485WxLockInfo,sizeof(RS485_WxLock_INFO),dev_addr+Dev_Privately);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(0x01 == Rs485WxLockInfo.WeixinUpSendFlag) //<><CDB8><EFBFBD><EFBFBD>־
|
|||
|
|
{
|
|||
|
|
Rs485WxLockInfo.WeixinUpSendFlag = 0x00;
|
|||
|
|
KeepFlag = 0x01;
|
|||
|
|
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN] = Rs485WxLockInfo.WeixinUpMessageLen;//
|
|||
|
|
memcpy(&Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+0x01], Rs485WxLockInfo.WeixinUpMessage, Rs485WxLockInfo.WeixinUpMessageLen);
|
|||
|
|
Ret = 0x01;
|
|||
|
|
Cmd_buff[0] = 0xA6;
|
|||
|
|
// MacAddrCpy(&Cmd_buff[1]); //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ID<49><44><EFBFBD><EFBFBD>mac<61><63>ַ 6<><36><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
memcpy(&Cmd_buff[1], MACAddr, DeviceID_LEN); //<2F><><EFBFBD>豸MAC<41><43>ַ
|
|||
|
|
|
|||
|
|
HtolCpy((&Cmd_buff[1+DeviceID_LEN]), timetemp);
|
|||
|
|
MQTT_Publish(mqtt_info.mqtt_socket, mqtt_info.pub_topic, Cmd_buff, 1+Rs485WxLockInfo.WeixinUpMessageLen+1+DeviceID_LEN+UTCTime_LEN, 0);
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A6 <><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"A6 <><CDB8> Send Buff:",Cmd_buff,1+Rs485WxLockInfo.WeixinUpMessageLen+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
|
|||
|
|
// MQTT_PublishQs0(PTopicName,(char *)Cmd_buff ,1+Rs485WxLockInfo->WeixinUpMessageLen+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
}
|
|||
|
|
else if(0x01 == Rs485WxLockInfo.WeixinAskLockFlag)
|
|||
|
|
{
|
|||
|
|
Rs485WxLockInfo.WeixinAskLockFlag = 0x00;
|
|||
|
|
KeepFlag = 0x01;
|
|||
|
|
Cmd_buff[0] = 0xAA;
|
|||
|
|
Ret = 0x01;
|
|||
|
|
memcpy(&Cmd_buff[1], MACAddr, DeviceID_LEN); //<2F><><EFBFBD>豸MAC<41><43>ַ
|
|||
|
|
// MacAddrCpy(&Cmd_buff[1]); //<2F><><EFBFBD><EFBFBD><EFBFBD>豸ID<49><44><EFBFBD><EFBFBD>mac<61><63>ַ 6<><36><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
HtolCpy((&Cmd_buff[1+DeviceID_LEN]), timetemp);
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN] = 0x01; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
MQTT_Publish(mqtt_info.mqtt_socket, mqtt_info.pub_topic, Cmd_buff, 0x01+1+DeviceID_LEN+UTCTime_LEN, 0);
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>AA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit,"AA <20><><EFBFBD><EFBFBD>Send Buff:",Cmd_buff,0x01+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
|
|||
|
|
// MQTT_PublishQs0(PTopicName,(char *)Cmd_buff ,0x01+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
}
|
|||
|
|
if(0x01 == KeepFlag)
|
|||
|
|
{
|
|||
|
|
BUS_Public.check = 0x00;
|
|||
|
|
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485WxLockInfo, sizeof(RS485_WxLock_INFO));
|
|||
|
|
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff((uint8_t *)&Rs485WxLockInfo,sizeof(RS485_WxLock_INFO),dev_addr+Dev_Privately);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
return Ret;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//#define MqttDevNumMax 50 //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define Cmd_Buff_LEN (CFG_Dev_Freego_Map_MAX*24+20)
|
|||
|
|
/*<2A>ϱ<EFBFBD><CFB1>豸<EFBFBD>б<EFBFBD>*/
|
|||
|
|
void MQTT_CMD_A7(UINT8 S, char* topic) //<2F>ϱ<EFBFBD><CFB1>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>(uint8_t *)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
|
|||
|
|
uint16_t len = 0;
|
|||
|
|
uint32_t timetemp;
|
|||
|
|
UINT8 Cmd_buff[Cmd_Buff_LEN];
|
|||
|
|
timetemp = RTC_Conversion_To_Unix(&RTC_Raw_Data); //+ -8*3600
|
|||
|
|
|
|||
|
|
memset(Cmd_buff, 0x00, Cmd_Buff_LEN); //<2F><>0
|
|||
|
|
len = MQTT_DevList_Get(&Cmd_buff[1+DeviceID_LEN+UTCTime_LEN]); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ沢<DAB4><E6B2A2>ȡ<EFBFBD>豸<EFBFBD>б<EFBFBD>
|
|||
|
|
if(len == 0) return;
|
|||
|
|
Cmd_buff[0] = 0xA7;
|
|||
|
|
memcpy(&Cmd_buff[1], MACAddr, DeviceID_LEN);
|
|||
|
|
HtolCpy((&Cmd_buff[1+DeviceID_LEN]), timetemp);
|
|||
|
|
|
|||
|
|
MQTT_Publish(S, topic, Cmd_buff, len+1+DeviceID_LEN+UTCTime_LEN, 0);
|
|||
|
|
// free(Cmd_buff);
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A7<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
|
|||
|
|
// memset(test_buff,0,sizeof(test_buff));
|
|||
|
|
// HexToStr(test_buff,Cmd_buff,len+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
// printf("%s\n",(char *)Cmd_buff);
|
|||
|
|
// printf("\r\n<><6E><EFBFBD><EFBFBD>A7<41><37><EFBFBD><EFBFBD>\r\n ");
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @name MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬<EFBFBD>õ<EFBFBD>
|
|||
|
|
* @param
|
|||
|
|
* p <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @retval <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @attention <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
uint16_t MQTT_DevCoreStateGet(uint8_t *p)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
return 0x00;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @name MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
* @param
|
|||
|
|
* buf <EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ÿ<EFBFBD><EFBFBD>ֻ<EFBFBD>ϱ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣָ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬<EFBFBD>仯 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬<EFBFBD>仯
|
|||
|
|
* @attention <EFBFBD><EFBFBD><EFBFBD>ݹ̶<EFBFBD> (FreegoDevStateLen*DevSum+1)<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ϢID<EFBFBD><EFBFBD>4B<EFBFBD><EFBFBD><EFBFBD>豸ID<EFBFBD><EFBFBD>6B<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTCʱ<EFBFBD>䣨4B<EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* [0] [1][2][3][4][5][6]
|
|||
|
|
*/
|
|||
|
|
uint16_t MQTT_CoreDev_Up(uint8_t *buf)
|
|||
|
|
{
|
|||
|
|
// Service_INFOP ServiceInfo;
|
|||
|
|
// uint8_t i; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еķ<D0B5><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
uint16_t Ret = 0x00;
|
|||
|
|
uint16_t DevSum = 0x00;
|
|||
|
|
{
|
|||
|
|
DevSum = MQTT_DevCoreStateGet(&buf[1]); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
buf[0] = DevSum;
|
|||
|
|
if(0x00 != DevSum) //
|
|||
|
|
{
|
|||
|
|
Ret = DevSum*0x06+0x01; //<2F>̶<EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return Ret;
|
|||
|
|
}
|
|||
|
|
/*MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>,<2C><><EFBFBD>ݽṹ<DDBD><E1B9B9>A8<41>ϱ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ȫһ<C8AB><D2BB>*/
|
|||
|
|
uint8_t MQTT_CoreData_Up(void)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
|
|||
|
|
uint32_t timetemp; //ָ<><D6B8>ʱ<EFBFBD><CAB1>
|
|||
|
|
// uint16_t MqttDevContLen;
|
|||
|
|
uint8_t Cmd_buff[50]; //
|
|||
|
|
static uint32_t CoreDataUpTick;
|
|||
|
|
|
|||
|
|
if( SysTick_1ms - CoreDataUpTick > 60*1000) //1<><31><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>һ<EFBFBD><D2BB>
|
|||
|
|
{
|
|||
|
|
CoreDataUpTick = SysTick_1ms;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
return 0x00;
|
|||
|
|
}
|
|||
|
|
// MqttDevContLen = MQTT_CoreDev_Up(&Cmd_buff[1+DeviceID_LEN+UTCTime_LEN]);//MQTT_Dev_Up(&Cmd_buff[1+DeviceID_LEN+UTCTime_LEN]);
|
|||
|
|
// if(0x00 == MqttDevContLen)
|
|||
|
|
// {
|
|||
|
|
// return 0x00; //û<>к<EFBFBD><D0BA><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
|
|||
|
|
// }
|
|||
|
|
timetemp = RTC_Conversion_To_Unix(&RTC_Raw_Data) ; // TIMESTAMP;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Cmd_buff[0] = 0xA8; //<2F>̶<EFBFBD>A8<41><38><EFBFBD><EFBFBD>
|
|||
|
|
// Cmd_buff[1] = cmdhead;
|
|||
|
|
// memcpy(&Cmd_buff[2],cmdID,CmdID_LEN); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
memcpy(&Cmd_buff[1], MACAddr, DeviceID_LEN); //<2F><><EFBFBD>豸MAC<41><43>ַ
|
|||
|
|
HtolCpy((&Cmd_buff[1+DeviceID_LEN]), timetemp);
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN] = 0x01; //<2F>ϱ<EFBFBD>1<EFBFBD><31><EFBFBD>豸
|
|||
|
|
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+1] = 0x04; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+2] = 0x00;
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+3] = 0x00; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>·<EFBFBD><C2B7>ַ
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+4] = 0x00;
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+5] = DevActionGlobal.DevActionU64Cond.EleState; //״̬
|
|||
|
|
Cmd_buff[1+DeviceID_LEN+UTCTime_LEN+6] = 0x00;
|
|||
|
|
|
|||
|
|
MQTT_Publish(mqtt_info.mqtt_socket, mqtt_info.pub_topic, Cmd_buff, 20, 0);
|
|||
|
|
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʼ\r\n");
|
|||
|
|
// memset(test_buff,0,sizeof(test_buff));
|
|||
|
|
// HexToStr(test_buff,Cmd_buff,MqttDevContLen+1+DeviceID_LEN+UTCTime_LEN);
|
|||
|
|
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>A8<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
#endif
|
|||
|
|
return 0x01;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @name MQTT<EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>ǿյ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param
|
|||
|
|
* buf һ<EFBFBD>δ<EFBFBD>7<EFBFBD><EFBFBD><EFBFBD>ֽڹ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
|
* @attention <EFBFBD><EFBFBD>3<EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD>
|
|||
|
|
* <EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>豸<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ȿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* [0] [1] [2] [3] [4][5][6]
|
|||
|
|
*/
|
|||
|
|
void MQTT_Dev_Ctrl(uint8_t *buf)
|
|||
|
|
{
|
|||
|
|
// CFG_Freego_Map_AddP CfgMapAdd;
|
|||
|
|
// uint8_t DevCtrl[6];
|
|||
|
|
uint8_t i; //<2F>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ƶ<EFBFBD>3·<33><C2B7><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
for(i = 0; i < buf[0]; i++)
|
|||
|
|
{
|
|||
|
|
switch(buf[1])
|
|||
|
|
{
|
|||
|
|
case Dev_Host_Invalid: //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
default: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>ֻҪ<D6BB><D2AA>·<EFBFBD><C2B7>Ϊ0<CEAA><30><EFBFBD>ͼ<EFBFBD>1
|
|||
|
|
if(0x00 != buf[3]) //<2F><>·<EFBFBD><C2B7>Ϊ0
|
|||
|
|
{
|
|||
|
|
buf[3]--;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
DevActionCtrl(&buf[1], 6);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*<2A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
void TimeSetUseStamp(uint32_t TimeStamp)
|
|||
|
|
{
|
|||
|
|
// uint32_t temp_unix;
|
|||
|
|
|
|||
|
|
S_RTC write_rtc;
|
|||
|
|
memset(&write_rtc,0,sizeof(write_rtc));
|
|||
|
|
Unix_Conversion_To_RTC(&write_rtc,TimeStamp);
|
|||
|
|
RTC_WriteDate(write_rtc);
|
|||
|
|
DevActionGlobal.TimeGetFlag++;
|
|||
|
|
|
|||
|
|
SRAM_Write_DW(TimeStamp,SRAM_Register_Start_ADDRESS + Register_CurrentUsageTime_OFFSET);
|
|||
|
|
// Retain_Flash_Register_Data();
|
|||
|
|
}
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : FRG_Data_Processing
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : S: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
topic<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ʱ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
data<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
datalen<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
qos: <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void FREEG_Data_Processing(UINT8 S, char* topic, UINT8* data, uint16_t datalen, int qos)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
// UINT8 crc168_val = 0; //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>CRC_168У<38><D0A3><EFBFBD><EFBFBD>ֵ
|
|||
|
|
if(topic == NULL) return;
|
|||
|
|
if((data[datalen-1] == CRC_168(data, datalen-1)) || (0xA4 == data[CMD_PKT]))
|
|||
|
|
{
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT_Revice_crc success");
|
|||
|
|
if(memcmp(MACAddr, &data[DEVICE_ID_PKT], 6) == 0) //<2F>豸IDһ<44><D2BB>
|
|||
|
|
{
|
|||
|
|
switch(data[CMD_PKT])
|
|||
|
|
{
|
|||
|
|
case 0xA0: //ʱ<><CAB1>ͬ<EFBFBD><CDAC>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT_Time_Update");
|
|||
|
|
{
|
|||
|
|
uint32_t seccount=0;
|
|||
|
|
uint8_t DecUTCTime[4]; //<2F>·<EFBFBD><C2B7><EFBFBD>utcʱ<63><CAB1>
|
|||
|
|
memcpy(DecUTCTime, &data[1+CmdID_LEN+DeviceID_LEN], 4);
|
|||
|
|
seccount = (DecUTCTime[0]<<24) + (DecUTCTime[1]<<16) + (DecUTCTime[2]<<8) + DecUTCTime[3];
|
|||
|
|
// seccount += TIME_MISS;
|
|||
|
|
|
|||
|
|
TimeSetUseStamp(seccount); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
}
|
|||
|
|
MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_SUCCESS); //ָ<><D6B8>ִ<EFBFBD>гɹ<D0B3>
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
case 0xA1: //ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT_Config");
|
|||
|
|
|
|||
|
|
switch(data[PRAM_PKT])
|
|||
|
|
{
|
|||
|
|
case 0x01:
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>\r\n");
|
|||
|
|
break;
|
|||
|
|
case 0x02:
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>\r\n");
|
|||
|
|
break;
|
|||
|
|
case 0x03:
|
|||
|
|
{
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
// MQTT_Ele_Ctrl_Open();
|
|||
|
|
// UINT8 control[6] = {0};
|
|||
|
|
// control[0] = 0x04;
|
|||
|
|
// control[1] = 0x00;
|
|||
|
|
// control[2] = LOOPCH01;
|
|||
|
|
// control[3] = 0x00;
|
|||
|
|
// control[4] = 0x01;
|
|||
|
|
// control[5] = 0x00;
|
|||
|
|
// DevActionCtrl(control, 6); //ȡ<><C8A1> <20><>
|
|||
|
|
Ele_Ctrl_OpenClose(0x01);//ȡ<><C8A1> <20><>
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 0x04:
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>\r\n");
|
|||
|
|
// SRAM_Write_Byte(0x02,SRAM_Service_Take_Electricity_State); //ȡ<><C8A1> <20><>
|
|||
|
|
// UINT8 control[6] = {0};
|
|||
|
|
// control[0] = 0x04;
|
|||
|
|
// control[1] = 0x00;
|
|||
|
|
// control[2] = LOOPCH01;
|
|||
|
|
// control[3] = 0x00;
|
|||
|
|
// control[4] = 0x02;
|
|||
|
|
// control[5] = 0x00;
|
|||
|
|
// DevActionCtrl(control, 6);
|
|||
|
|
Ele_Ctrl_OpenClose(0x02);//ȡ<><C8A1> <20><>
|
|||
|
|
// Dbg_Println(DBG_BIT_NET_STATUS_bit,"Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>:%d", DevAddrCtr(NULL, control, 6)); //ȡ<><C8A1> <20><>
|
|||
|
|
break;
|
|||
|
|
case 0x05: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n ");
|
|||
|
|
break;
|
|||
|
|
case 0x06: //<2F><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>ַ<EFBFBD>б<EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A7<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n ");
|
|||
|
|
MQTT_CMD_A7(S, topic);
|
|||
|
|
return;
|
|||
|
|
case 0x07: //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ָ<EFBFBD><EFBFBD><EEB6A8>
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_SUCCESS); //ָ<><D6B8>ִ<EFBFBD>гɹ<D0B3>
|
|||
|
|
break;
|
|||
|
|
case 0xA3: //RCU<43>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT_Device_Control");
|
|||
|
|
MQTT_Dev_Ctrl(&data[1+CmdID_LEN+DeviceID_LEN+UTCTime_LEN]);
|
|||
|
|
MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_SUCCESS); //ָ<><D6B8>ִ<EFBFBD>гɹ<D0B3>
|
|||
|
|
break;
|
|||
|
|
case 0xA4: //<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT Door Lock transport");
|
|||
|
|
{
|
|||
|
|
uint8_t WxLockSendLen;
|
|||
|
|
WxLockSendLen = datalen - (1+CmdID_LEN+DeviceID_LEN+UTCTime_LEN)-0x01;
|
|||
|
|
// if(WxLockSendLen == Server_Datahex[1+CmdID_LEN+DeviceID_LEN+UTCTime_LEN]) //<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
{
|
|||
|
|
data[1+CmdID_LEN+DeviceID_LEN+UTCTime_LEN] = WxLockSendLen;
|
|||
|
|
MQTT_WxLock_Ctrl(&data[1+CmdID_LEN+DeviceID_LEN+UTCTime_LEN]);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_SUCCESS); //ָ<><D6B8>ִ<EFBFBD>гɹ<D0B3>
|
|||
|
|
|
|||
|
|
}//
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT cmd err");
|
|||
|
|
MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_HEAD_ERROR); //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
// MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_DEC_ERROR);
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"DeviceID err");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
// MQTT_CMD_A5(S, topic, data[CMD_PKT], &data[CMDID_PKT], CMD_CRC_ERROR);
|
|||
|
|
Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT crc ERR<52><52>%X CRC_168:%X", data[datalen-1], CRC_168(data, datalen-1));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @name MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param
|
|||
|
|
* buf һ<EFBFBD>δ<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>ֽڹ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @retval 0x00 <EFBFBD><EFBFBD>ʾʧ<EFBFBD><EFBFBD> 0x01 <EFBFBD><EFBFBD>ʾ<EFBFBD>ɹ<EFBFBD>
|
|||
|
|
* @attention <EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* [0] N
|
|||
|
|
*/
|
|||
|
|
uint8_t MQTT_WxLock_Ctrl(uint8_t *buf)
|
|||
|
|
{
|
|||
|
|
uint8_t Ret = 0x00;
|
|||
|
|
#if MQTT_EN
|
|||
|
|
Device_Public_Information_G BUS_Public;
|
|||
|
|
RS485_WxLock_INFO Rs485WxLockInfo;
|
|||
|
|
uint32_t dev_addr;
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(buf[0] > WXLOCKDOWNMESSAGELEN) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return Ret;
|
|||
|
|
}
|
|||
|
|
if(NULL == DevActionGlobal.DevLockAddr)//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
|
{
|
|||
|
|
return Ret;
|
|||
|
|
}
|
|||
|
|
Ret = 0x01;
|
|||
|
|
dev_addr = DevActionGlobal.DevLockAddr;
|
|||
|
|
// Rs485WxLockInfo = HostRunInfo.CfgDevAddWxLock->DevDataStruct;
|
|||
|
|
SRAM_DMA_Read_Buff((uint8_t *)&BUS_Public,sizeof(Device_Public_Information_G),dev_addr);
|
|||
|
|
SRAM_DMA_Read_Buff((uint8_t *)&Rs485WxLockInfo,sizeof(RS485_WxLock_INFO),dev_addr+Dev_Privately);
|
|||
|
|
|
|||
|
|
Rs485WxLockInfo.WeixinDownSendFlag = 0x01; //<2F>·<EFBFBD><C2B7><EFBFBD>־<EFBFBD><D6BE>λ
|
|||
|
|
Rs485WxLockInfo.WeixinDownSendCnt = WxLockCtrlSendMax;
|
|||
|
|
Rs485WxLockInfo.WeixinDownMessageLen = buf[0];
|
|||
|
|
memcpy(Rs485WxLockInfo.WeixinDownMessage, &buf[1], Rs485WxLockInfo.WeixinDownMessageLen); //<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
BUS_Public.check = 0x00;
|
|||
|
|
BUS_Public.check = DoubleData_CheckSum((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G), (uint8_t *)&Rs485WxLockInfo, sizeof(RS485_WxLock_INFO));
|
|||
|
|
SRAM_DMA_Write_Buff((uint8_t *)&BUS_Public, sizeof(Device_Public_Information_G),dev_addr);/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff((uint8_t *)&Rs485WxLockInfo,sizeof(RS485_WxLock_INFO),dev_addr+Dev_Privately);
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
return Ret ;
|
|||
|
|
}
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MQTT_Receive_Processing
|
|||
|
|
* Description : MQTT<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : None
|
|||
|
|
* Output : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MQTT_Receive_Processing(void)
|
|||
|
|
{
|
|||
|
|
#if MQTT_EN
|
|||
|
|
if(0x01 != mqtt_info.con_flag)
|
|||
|
|
{
|
|||
|
|
// Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT Con Faild");
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
if(0x01 != mqtt_info.sub_flag)
|
|||
|
|
{
|
|||
|
|
// Dbg_Println(DBG_BIT_NET_STATUS_bit,"MQTT Sub Faild");
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
MQTT_CoreData_Up(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
MQTT_NoramlData_Up(); //ÿ<>ζ<EFBFBD><CEB6><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>жϣ<D0B6><CFA3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
if(mqtt_info.Sram_read_addr != mqtt_info.Sram_write_addr)
|
|||
|
|
{
|
|||
|
|
int DataLen = SRAM_Read_Word(mqtt_info.Sram_read_addr);
|
|||
|
|
uint8_t* Data = malloc(DataLen);
|
|||
|
|
if(Data == NULL) return;
|
|||
|
|
SRAM_Read_Buff(Data, DataLen, mqtt_info.Sram_read_addr +2);
|
|||
|
|
|
|||
|
|
// MQTT_Publish(mqtt_info.mqtt_socket, mqtt_info.pub_topic, Data, DataLen, 0);
|
|||
|
|
FREEG_Data_Processing(mqtt_info.mqtt_socket, mqtt_info.pub_topic, Data, DataLen, 0);
|
|||
|
|
free(Data);
|
|||
|
|
|
|||
|
|
mqtt_info.Sram_read_addr += SRAM_MQTT_RECEIVE_LEN;
|
|||
|
|
if(mqtt_info.Sram_read_addr >= SRAM_MQTT_RECEIVE_END)
|
|||
|
|
{
|
|||
|
|
mqtt_info.Sram_read_addr = SRAM_MQTT_RECEIVE_START;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if MQTT_NORMALDATA_UP_FLAG
|
|||
|
|
/**
|
|||
|
|
* @name MQTT<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD>
|
|||
|
|
* @para <EFBFBD><EFBFBD>
|
|||
|
|
* @return <EFBFBD><EFBFBD>
|
|||
|
|
* @brief ÿ<EFBFBD><EFBFBD>ֻ<EFBFBD>ϱ<EFBFBD>һ<EFBFBD><EFBFBD>״̬
|
|||
|
|
* @attention <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
uint8_t MQTT_NoramlData_Up(void)
|
|||
|
|
{
|
|||
|
|
uint8_t Ret = 0x00;
|
|||
|
|
|
|||
|
|
// if(0x01 == MQTT_CMD_A8())
|
|||
|
|
// {
|
|||
|
|
// Ret = 0x01;
|
|||
|
|
// }else
|
|||
|
|
if(0x01 == MQTT_CMD_A6())
|
|||
|
|
{
|
|||
|
|
Ret = 0x01;
|
|||
|
|
}
|
|||
|
|
// else if(0x01 == MQTT_CMD_A9())
|
|||
|
|
// {
|
|||
|
|
// Ret = 0x01;
|
|||
|
|
// }
|
|||
|
|
return Ret;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
/*********************************** endfile **********************************/
|