2024-08-20 19:34:19 +08:00
|
|
|
|
/*
|
|
|
|
|
* wjh_OTAUpgrades.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: 2024<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>29<EFBFBD><EFBFBD>
|
|
|
|
|
* Author: wu
|
|
|
|
|
*/
|
|
|
|
|
#include "wjh_OTAConfig.h"
|
|
|
|
|
#include "uartctrl.h"
|
|
|
|
|
#include "timer_hard.h"
|
|
|
|
|
|
|
|
|
|
static u8 OTA_DEVICE_TYPE_NAME[][30] = {
|
|
|
|
|
"",
|
|
|
|
|
"handset",//<2F>ֳ<EFBFBD><D6B3>豸
|
|
|
|
|
"cabinet",//<2F><><EFBFBD><EFBFBD><EFBFBD>豸
|
|
|
|
|
"sensor"//<2F><><EFBFBD><EFBFBD><EFBFBD>豸
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static void timerisr(struct Timer *timer)
|
|
|
|
|
{
|
|
|
|
|
printf("10<EFBFBD>뵽<EFBFBD><EFBFBD>");
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
struct W0802WifiMqttSendMessageInfo messageInfo;
|
|
|
|
|
u8 topicName[WIFI_MQTT_TOPIC_MAX_LENGTH];
|
|
|
|
|
sprintf(topicName,OTA_MQTT_SEND_INFO_TOPIC,OTA_DEVICE_SN_DEFAULT);
|
|
|
|
|
// u8 message[WIFI_MQTT_MESSAGE_MAX_LENGTH];
|
|
|
|
|
// gbkTOutf8(message,OTA_DEVICE_SN_DEFAULT);
|
|
|
|
|
messageInfo.topicName = topicName;
|
|
|
|
|
messageInfo.qos = 1;
|
|
|
|
|
messageInfo.message = OTA_DEVICE_SN_DEFAULT;
|
|
|
|
|
messageInfo.keepState = WIFI_MQTT_KEEP_MESSAGE_CLOSE;
|
|
|
|
|
WifiMqttSendLongMessage(&messageInfo,1000,4);
|
|
|
|
|
|
|
|
|
|
u32 num = 0;
|
|
|
|
|
struct W0802WifiMqttMessage getMess[5];
|
|
|
|
|
WifiMqttGetMessage(&num,&getMess,5,1000);
|
|
|
|
|
if(num != 0){
|
|
|
|
|
wjh_TipCreate("<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
for(u32 i = 0;i < num;i ++){
|
|
|
|
|
printf("%s",getMess[i].topicName);
|
|
|
|
|
u8 responseTopic[80];
|
|
|
|
|
sprintf(responseTopic,OTA_MQTT_RECEIVE_COMMAND_TOPIC,OTA_DEVICE_TYPE_NAME[OTA_DEVICE_TYPE_DEFAULT],OTA_DEVICE_SN_DEFAULT);
|
|
|
|
|
if(strcmp(getMess[i].topicName,responseTopic) == 0){
|
|
|
|
|
u8 idString[80];
|
|
|
|
|
u8 *p = strstr(getMess[i].message,"id");
|
|
|
|
|
p += 5;
|
|
|
|
|
u32 ws = 0;
|
|
|
|
|
while(*p != '\"'){
|
|
|
|
|
idString[ws ++] = *p ++;
|
|
|
|
|
}
|
|
|
|
|
idString[ws] = 0;
|
|
|
|
|
OTA_MQTT_DeviceResponse(idString,"0TA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ִ<EFBFBD>гɹ<EFBFBD>!");
|
|
|
|
|
|
|
|
|
|
u8 hashCode[80];
|
|
|
|
|
p = strstr(getMess[i].message,"binHashCode");
|
|
|
|
|
p += 16;
|
|
|
|
|
ws = 0;
|
|
|
|
|
while(*p != '\"'&&*p != '\\'){
|
|
|
|
|
hashCode[ws ++] = *p ++;
|
|
|
|
|
}
|
|
|
|
|
hashCode[ws] = 0;
|
|
|
|
|
wjh_TipChange("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
OTA_HTTP_GetOTAFile(hashCode);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// =============================================================================
|
|
|
|
|
// <20><><EFBFBD>ܣ<EFBFBD>OTA<54><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>WIFIģ<49><C4A3><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WIFI<46><49><EFBFBD>ڵĴ<DAB5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// <20><><EFBFBD>أ<EFBFBD>true<75><65><EFBFBD><EFBFBD><EFBFBD>سɹ<D8B3><C9B9><EFBFBD>false<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>
|
|
|
|
|
// =============================================================================
|
|
|
|
|
bool_t OTA_Initialize(void){
|
|
|
|
|
|
|
|
|
|
wjh_TipCreate("<EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD>");
|
2024-08-20 21:58:46 +08:00
|
|
|
|
WifiInit("/dev/UART0", CN_UART_BAUD_115200, CN_UART_DATABITS_8, CN_UART_STOPBITS_1, CN_UART_PARITY_NONE);
|
2024-08-20 19:34:19 +08:00
|
|
|
|
wjh_TipChange("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WIFI");
|
|
|
|
|
//wifi<66><69><EFBFBD><EFBFBD>
|
|
|
|
|
OTA_WIFI_Connect(OTA_WIFI_NAME_DEFAULT,OTA_WIFI_PWD_DEFAULT);
|
|
|
|
|
wjh_TipChange("WIFI<EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>");
|
|
|
|
|
printf("wifi<EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>");
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
struct OTA_DEVICE_REGISTER requestInfo;
|
|
|
|
|
requestInfo.deviceName = OTA_DEVICE_NAME_DEFAULT;
|
|
|
|
|
requestInfo.deviceType = OTA_DEVICE_TYPE_DEFAULT;
|
|
|
|
|
requestInfo.SN = OTA_DEVICE_SN_DEFAULT;
|
|
|
|
|
requestInfo.runningStatus = 1;
|
|
|
|
|
while(!OTA_HTTP_DeviceRegister(requestInfo)){
|
|
|
|
|
printf("ע<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
DJY_EventDelay(500 * 1000);
|
|
|
|
|
}
|
|
|
|
|
printf("ע<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
wjh_TipChange("<EFBFBD>豸ע<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
|
|
|
|
|
u8 clientId[WIFI_MQTT_CLIENT_MAX_LENGTH];
|
|
|
|
|
sprintf(clientId,OTA_MQTT_CLIENTID_DEFAULT,OTA_DEVICE_SN_DEFAULT);
|
|
|
|
|
//MQTT<54>ͻ<EFBFBD><CDBB><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|
|
|
|
while(!OTA_MQTT_ClientConfig(clientId,OTA_MQTT_USERNAME_DEFAULT,OTA_MQTT_PWD_DEFAULT)){
|
|
|
|
|
printf("<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
DJY_EventDelay(500 * 1000);
|
|
|
|
|
}
|
|
|
|
|
wjh_TipChange("MQTT<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ijɹ<EFBFBD>");
|
|
|
|
|
// DJY_EventDelay(2000 * 1000);
|
|
|
|
|
//MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
while(!OTA_MQTT_Connect(OTA_MQTT_ADDRESS_DEFAULT,OTA_MQTT_PORT_DEFAULT,OTA_MQTT_REQUEST_MODE)){
|
|
|
|
|
printf("MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
DJY_EventDelay(500 * 1000);
|
|
|
|
|
}
|
|
|
|
|
wjh_TipChange("MQTT<EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>");
|
|
|
|
|
DJY_EventDelay(2000 * 1000);
|
|
|
|
|
|
|
|
|
|
u8 topicName1[WIFI_MQTT_TOPIC_MAX_LENGTH];
|
|
|
|
|
sprintf(topicName1,OTA_MQTT_RECEIVE_COMMAND_TOPIC,OTA_DEVICE_TYPE_NAME[OTA_DEVICE_TYPE_DEFAULT],OTA_DEVICE_SN_DEFAULT);
|
|
|
|
|
while(!WifiMqttSubscribe(topicName1,WIFI_MQTT_QOS_1,1000)){
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
DJY_EventDelay(500 * 1000);
|
|
|
|
|
}
|
|
|
|
|
wjh_TipChange("MQTT<EFBFBD><EFBFBD><EFBFBD>ijɹ<EFBFBD>");
|
|
|
|
|
DJY_EventDelay(2000 * 1000);
|
|
|
|
|
|
|
|
|
|
printf("mqtt<EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
wjh_TipChange("OTA<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
|
|
|
|
|
DJY_EventDelay(2000 * 1000);
|
|
|
|
|
wjh_TipDelete();
|
|
|
|
|
|
|
|
|
|
struct Timer *timer;
|
|
|
|
|
timer = Timer_Create("Timer1",OTA_WIFI_POLL_TIME,timerisr);
|
|
|
|
|
Timer_Ctrl(timer,EN_TIMER_STARTCOUNT,0);
|
|
|
|
|
}
|
|
|
|
|
|