227 lines
7.5 KiB
C
227 lines
7.5 KiB
C
|
|
#include "24c02.h"
|
|||
|
|
#include "iic.h"
|
|||
|
|
#include "app_loop.h" /* storage_lock/unlock<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><CABB><EFBFBD> */
|
|||
|
|
#include <string.h>
|
|||
|
|
#include <stdio.h>
|
|||
|
|
|
|||
|
|
/* MQTT <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> <20><> <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB> EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SETMQTT <20><><EFBFBD>룩<EFBFBD><EBA3A9><EFBFBD>̼<EFBFBD><CCBC><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> main.h <EFBFBD>꣬Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SETIP <EFBFBD><EFBFBD> */
|
|||
|
|
uint8_t g_mqtt_configured = 0; /* 1=EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> */
|
|||
|
|
|
|||
|
|
MqttInfo_Str MqttInfoStr = {
|
|||
|
|
.ClientID = "",
|
|||
|
|
.Username = "",
|
|||
|
|
.Passward = "",
|
|||
|
|
.ServerIP = MQTT_SERVER_IP,
|
|||
|
|
.Topic = MQTT_TOPIC,
|
|||
|
|
.ServerPort = MQTT_SERVER_PORT,
|
|||
|
|
.Relay_State = {0},
|
|||
|
|
.Magic = 0, /* <20><><EFBFBD><EFBFBD>д<EFBFBD>루SETMQTT<54><54>ʱ<EFBFBD><CAB1> EEPROM_MAGIC */
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><>ȡAT24C02ָ<32><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ReadAddr:<3A><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ݵĵ<DDB5>ַ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
uint8_t m24c02ReadOneByte(uint8_t ReadAddr) {
|
|||
|
|
uint8_t receive;
|
|||
|
|
uint8_t err = 0;
|
|||
|
|
|
|||
|
|
iicStart();
|
|||
|
|
err |= iicSendByteAck(M24C02_WADDR);
|
|||
|
|
err |= iicSendByteAck(ReadAddr);
|
|||
|
|
iicStart();
|
|||
|
|
err |= iicSendByteAck(M24C02_RADDR);
|
|||
|
|
if (err) {
|
|||
|
|
iicStop();
|
|||
|
|
log_warn("> EE <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> err=0x%02X", err);
|
|||
|
|
return 0xFF;
|
|||
|
|
}
|
|||
|
|
receive=iicReadByte(0);
|
|||
|
|
iicStop();
|
|||
|
|
HAL_Delay(5);
|
|||
|
|
return receive;
|
|||
|
|
}
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:WriteAddr :д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:DataToWrite:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0=<3D>ɹ<EFBFBD>, 1=<3D><>ACK(<28>豸δ<E8B1B8><CEB4>Ӧ) */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
uint8_t m24c02WriteOneByte(uint8_t WriteAddr,uint8_t DataToWrite) {
|
|||
|
|
uint8_t ack_err = 0;
|
|||
|
|
uint8_t retry = 3;
|
|||
|
|
|
|||
|
|
while (retry--) {
|
|||
|
|
ack_err = 0;
|
|||
|
|
iicStart();
|
|||
|
|
ack_err |= iicSendByteAck(M24C02_WADDR);
|
|||
|
|
ack_err |= iicSendByteAck(WriteAddr);
|
|||
|
|
ack_err |= iicSendByteAck(DataToWrite);
|
|||
|
|
iicStop();
|
|||
|
|
HAL_Delay(10);
|
|||
|
|
if (ack_err == 0) break;
|
|||
|
|
log_warn("> EE д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @%u, <20><><EFBFBD><EFBFBD>=%u", WriteAddr, retry);
|
|||
|
|
HAL_Delay(5);
|
|||
|
|
}
|
|||
|
|
return ack_err;
|
|||
|
|
}
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ReadAddr:<3A><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ݵĵ<DDB5>ַ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:Redata:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:Redatalen:<3A><>ȡ<EFBFBD><C8A1><EFBFBD>ݵij<DDB5><C4B3><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0=<3D>ɹ<EFBFBD>, 1=<3D>豸<EFBFBD><E8B1B8>ACK */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
uint8_t m24c02ReadSequential(uint8_t ReadAddr,uint8_t *Redata,uint16_t Redatalen) {
|
|||
|
|
uint16_t i;
|
|||
|
|
uint8_t ack_err = 0;
|
|||
|
|
|
|||
|
|
iicStart();
|
|||
|
|
ack_err |= iicSendByteAck(M24C02_WADDR);
|
|||
|
|
ack_err |= iicSendByteAck(ReadAddr);
|
|||
|
|
iicStart();
|
|||
|
|
ack_err |= iicSendByteAck(M24C02_RADDR);
|
|||
|
|
for(i=0; i<(Redatalen-1); i++) {
|
|||
|
|
Redata[i]=iicReadByte(1);
|
|||
|
|
}
|
|||
|
|
Redata[Redatalen-1]=iicReadByte(0);
|
|||
|
|
iicStop();
|
|||
|
|
HAL_Delay(5);
|
|||
|
|
return ack_err;
|
|||
|
|
}
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEpromָ<6D><D6B8><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:addr:<3A><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ݵĵ<DDB5>ַ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:data:<3A><>ȡ<EFBFBD><C8A1><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:len:Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0=<3D>ɹ<EFBFBD>, 1=<3D>豸<EFBFBD><E8B1B8>ACK */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
uint8_t eepromReadData(uint8_t addr,void *data, uint16_t len) {
|
|||
|
|
uint8_t *ptr;
|
|||
|
|
uint8_t ret;
|
|||
|
|
|
|||
|
|
ptr = data;
|
|||
|
|
storage_lock();
|
|||
|
|
ret = m24c02ReadSequential(addr,ptr,len);
|
|||
|
|
storage_unlock();
|
|||
|
|
return ret;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 24C02 д<><D0B4>ͬһҳ<D2BB>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:WriteAddr:<3A><>ʼ<EFBFBD><CABC>ַ */
|
|||
|
|
/* data :<3A><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/* len :<3A><><EFBFBD><EFBFBD>(<28><><EFBFBD>ÿ<EFBFBD>ҳ, ҳ<><D2B3>С 8 <20>ֽ<EFBFBD>) */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0=<3D>ɹ<EFBFBD>, 1=<3D><>ACK(<28>豸δ<E8B1B8><CEB4>Ӧ) */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
#define M24C02_PAGE_SIZE 8u
|
|||
|
|
static uint8_t m24c02WritePage(uint8_t WriteAddr, const uint8_t *data, uint8_t len) {
|
|||
|
|
uint8_t ack_err = 0;
|
|||
|
|
uint8_t retry = 3;
|
|||
|
|
uint8_t i;
|
|||
|
|
|
|||
|
|
while (retry--) {
|
|||
|
|
ack_err = 0;
|
|||
|
|
iicStart();
|
|||
|
|
ack_err |= iicSendByteAck(M24C02_WADDR);
|
|||
|
|
ack_err |= iicSendByteAck(WriteAddr);
|
|||
|
|
for (i = 0; i < len && ack_err == 0; i++) {
|
|||
|
|
ack_err |= iicSendByteAck(data[i]);
|
|||
|
|
}
|
|||
|
|
iicStop();
|
|||
|
|
HAL_Delay(10);
|
|||
|
|
if (ack_err == 0) break;
|
|||
|
|
log_warn("> EE ҳд<D2B3><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @%u, <20><><EFBFBD><EFBFBD>=%u", WriteAddr, retry);
|
|||
|
|
HAL_Delay(5);
|
|||
|
|
}
|
|||
|
|
return ack_err;
|
|||
|
|
}
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEpromָ<6D><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>ָ<EFBFBD><D6B8><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/* <20><>ҳ<EFBFBD>߽<EFBFBD><DFBD>з<EFBFBD>, ҳд<D2B3><D0B4>, ÿҳһ<D2B3><D2BB>д<EFBFBD><D0B4><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:addr<64><72><EFBFBD><EFBFBD>ַ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:data<74><61>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:len<65><6E>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0=<3D>ɹ<EFBFBD>, 1=<3D><>ҳд<D2B3><D0B4>ʧ<EFBFBD><CAA7> */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
uint8_t eepromWriteData(uint8_t addr, void *data, uint16_t len) {
|
|||
|
|
uint8_t *ptr = data;
|
|||
|
|
uint8_t err = 0;
|
|||
|
|
|
|||
|
|
storage_lock();
|
|||
|
|
while (len > 0) {
|
|||
|
|
/* <20><>ǰ<EFBFBD><C7B0>ַ<EFBFBD><D6B7>ҳ<EFBFBD>߽<EFBFBD><DFBD>ľ<EFBFBD><C4BE><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>ؾ<EFBFBD> */
|
|||
|
|
uint8_t chunk = M24C02_PAGE_SIZE - (addr % M24C02_PAGE_SIZE);
|
|||
|
|
if (chunk > len) chunk = (uint8_t)len;
|
|||
|
|
uint8_t e = m24c02WritePage(addr, ptr, chunk);
|
|||
|
|
if (e) {
|
|||
|
|
log_warn("> EE д<><D0B4>ʧ<EFBFBD><CAA7> @%u, err=0x%02X", addr, e);
|
|||
|
|
}
|
|||
|
|
err |= e;
|
|||
|
|
addr += chunk;
|
|||
|
|
ptr += chunk;
|
|||
|
|
len -= chunk;
|
|||
|
|
}
|
|||
|
|
storage_unlock();
|
|||
|
|
if (err) {
|
|||
|
|
log_warn("> EEPROM д<><D0B4><EFBFBD><EFBFBD> ACK <20><><EFBFBD><EFBFBD>=0x%02X", err);
|
|||
|
|
} else {
|
|||
|
|
log_info("> EEPROM д<><D0B4><EFBFBD>ɹ<EFBFBD>");
|
|||
|
|
}
|
|||
|
|
return err;
|
|||
|
|
}
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEprom<6F><6D>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>֤MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
void eepromReadInfo(void) {
|
|||
|
|
uint8_t read_err;
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5>ֽڶ<D6BD>д̽<D0B4>⣬ȷ<E2A3AC><C8B7>IIC<49><43><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD>쳣ʱ<ECB3A3>ű<EFBFBD><C5B1><EFBFBD> */
|
|||
|
|
uint8_t probe_wr = 0xA5;
|
|||
|
|
m24c02WriteOneByte(250, probe_wr);
|
|||
|
|
uint8_t probe_rd = m24c02ReadOneByte(250);
|
|||
|
|
if (probe_rd != probe_wr) {
|
|||
|
|
log_warn("> EEPROM ̽<><CCBD><EFBFBD>쳣: д=0x%02X, <20><>=0x%02X", probe_wr, probe_rd);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><>EEPROM<4F><4D>ȡ<EFBFBD><C8A1><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>err <20>쳣ʱ<ECB3A3>ű<EFBFBD><C5B1><EFBFBD> */
|
|||
|
|
memset(&MqttInfoStr, 0, MQTT_STRUCT_LEN);
|
|||
|
|
read_err = eepromReadData(0, &MqttInfoStr, MQTT_STRUCT_LEN);
|
|||
|
|
if (read_err != 0) {
|
|||
|
|
log_warn("> EEPROM <20><>ȡ<EFBFBD>쳣 err=%d", read_err);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч = ħ<><C4A7>ƥ<EFBFBD><C6A5> <20><> <20>ͻ<EFBFBD><CDBB><EFBFBD>ID<49>ǿգ<C7BF><D5A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB> EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶԣ<C8B6> */
|
|||
|
|
if (MqttInfoStr.Magic == EEPROM_MAGIC && MqttInfoStr.ClientID[0] != 0) {
|
|||
|
|
g_mqtt_configured = 1;
|
|||
|
|
log_info("EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч, Ver=%u", MqttInfoStr.Ver);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* δ<><CEB4><EFBFBD>ã<EFBFBD><C3A3>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD> SETMQTT <20><><EFBFBD>루<EFBFBD><EBA3A8>д EEPROM<4F><4D> */
|
|||
|
|
g_mqtt_configured = 0;
|
|||
|
|
if (MqttInfoStr.Magic != EEPROM_MAGIC) {
|
|||
|
|
/* ȫ<>°<EFBFBD>/<2F><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>(ȫ0xFF)<29><>ȫ<EFBFBD><C8AB><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD>汾<EFBFBD><E6B1BE>/<2F>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4><CCAC> 0 */
|
|||
|
|
memset(&MqttInfoStr, 0, MQTT_STRUCT_LEN);
|
|||
|
|
strcpy(MqttInfoStr.ServerIP, MQTT_SERVER_IP);
|
|||
|
|
strcpy(MqttInfoStr.Topic, MQTT_TOPIC);
|
|||
|
|
MqttInfoStr.ServerPort = MQTT_SERVER_PORT;
|
|||
|
|
} else {
|
|||
|
|
/* <20><> Magic <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ֻ SETIP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><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>ֵ */
|
|||
|
|
MqttInfoStr.ClientID[0] = 0;
|
|||
|
|
MqttInfoStr.Username[0] = 0;
|
|||
|
|
MqttInfoStr.Passward[0] = 0;
|
|||
|
|
if (MqttInfoStr.ServerIP[0] < '0' || MqttInfoStr.ServerIP[0] > '9') {
|
|||
|
|
strcpy(MqttInfoStr.ServerIP, MQTT_SERVER_IP);
|
|||
|
|
strcpy(MqttInfoStr.Topic, MQTT_TOPIC);
|
|||
|
|
MqttInfoStr.ServerPort = MQTT_SERVER_PORT;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
log_warn("> EEPROM <20><><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SETMQTT <20><><EFBFBD>룩");
|
|||
|
|
}
|
|||
|
|
|