cook-c100/src/app/Module/wjh_OTAUpgrades.c

133 lines
4.4 KiB
C
Raw Normal View History

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 20:59:19 +08:00
WifiInit("/dev/UART1", 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);
}