This commit is contained in:
Dominocs 2024-09-13 11:54:03 +08:00
parent 2cae153413
commit 629af5d0dc
11 changed files with 23612 additions and 23382 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
c4fff1c05db4174745ad45bc9c522f506c91eed9
b5e5a8929eba441379b5f1a349324ee6e743c64d

View File

@ -467,7 +467,7 @@
]
},
"defines": [
"PLATFORMIO=60113",
"PLATFORMIO=60115",
"ARDUINO_ESP32_DEV",
"BOARD_HAS_PSRAM",
"HAVE_CONFIG_H",

View File

@ -11,7 +11,7 @@ IPAddress peerAddr;
bool bHeartbeatTimeout = true;
unsigned long heartBeatTimer = 0;
uint8_t ucFlag2;
#define AP_NAME "Cymple_Face"
static void onPacketCallBack(AsyncUDPPacket packet){
if(!packet.available()){
return;
@ -46,6 +46,20 @@ static void onPacketCallBack(AsyncUDPPacket packet){
Serial.printf("Switch fresh rate: flag2:%d\n", ucFlag2);
break;
}
case MSG_CONFIG_WIFI_E:{
if(msgLen != sizeof(MSG_WLAN_WIFI_CONFIG_S)){
Serial.printf("Sizeof MSG_WLAN_WIFI_CONFIG_S dismatch: rcv: %u, local %u", msgLen, sizeof(MSG_WLAN_WIFI_CONFIG_S));
}else{
MSG_WLAN_WIFI_CONFIG_S *tmp = (MSG_WLAN_WIFI_CONFIG_S *)pstMsgHdr;
tmp->SSID[SSID_LENGTH - 1] = '\0';
tmp->password[WIFI_PASSWORD_LENGTH - 1] = '\0';
WiFi.mode(WIFI_STA);
WiFi.persistent(false);
pwlanMsgObj->tryConCount = 0;
pwlanMsgObj->connect(tmp->SSID, tmp->password);
}
}
default:
Serial.printf("Invalid msg type%u, msg len:%d\n", pstMsgHdr->uiType, msgLen);
break;
@ -94,11 +108,19 @@ void wlanMsgClass::connect(const char *SSID, const char *password){
networkApi::connect(acSSID, acPassword);
}
}
void wlanMsgClass::connect(){
Serial.printf("Connecting to %s\n", acSSID);
networkApi::connect(acSSID, acPassword);
}
void wlanMsgClass::APMode(){
WiFi.mode(WIFI_AP);
WiFi.persistent(false);
WiFi.softAP(AP_NAME);
}
void wlanMsgClass::send(uint8_t *data, size_t len, IPAddress ip, uint16_t port){
if(len > CONFIG_TCP_MSS){
Serial.printf("wlanMsgClass::send: data too large:%u\n", len);
@ -112,6 +134,14 @@ void wlanMsgClass::send(uint8_t *data, size_t len){
}
int wlanMsgClass::runFrame(unsigned long currentT){
if(tryConCount > 2){
if(3 == tryConCount){
Serial.println("Wating to config WIFI");
APMode();
tryConCount++;
}
return 1;
}
long long deltaT = (long long)currentT - heartBeatTimer;
deltaT = abs(deltaT);
if((!bHeartbeatTimeout) && (deltaT > WLAN_HEARTBEAT_TIMEOUT)){
@ -120,6 +150,7 @@ int wlanMsgClass::runFrame(unsigned long currentT){
if(bHeartbeatTimeout){
if(!WiFi.isConnected()){
Serial.println("Wlan disconnected");
tryConCount++;
connect();
delay(3000);
return 1;

View File

@ -7,6 +7,8 @@ enum{
MSG_IMAGE_E,
MSG_POSITION_CFG_E,
MSG_REFRESH_RATE_CFT_E,
MSG_CONFIG_WIFI_E,
MSG_MAX_E,
};
/* 标定参数结构体发送给tracker */
@ -27,20 +29,29 @@ typedef struct{
uint8_t ucPosition;
}MSG_WLAN_POSIOTN_CONFIG_S;
typedef struct{
TLV_S tlv;
char SSID[SSID_LENGTH];
char password[WIFI_PASSWORD_LENGTH];
}MSG_WLAN_WIFI_CONFIG_S;
class wlanMsgClass{
private:
char acSSID[SSID_LENGTH];
char acPassword[WIFI_PASSWORD_LENGTH];
uint32_t uiTxBufferSize = 0;
AsyncUDP udpClient;
AsyncUDP udpClient;
bool isConnected = false;
public:
uint8_t tryConCount = 0;
wlanMsgClass();
void connect(const char *SSID, const char *password);
void connect();
void send(uint8_t *data, size_t len, IPAddress ip, uint16_t port);
void send(uint8_t *data, size_t len);
int runFrame(unsigned long currentT);
void APMode();
};
extern wlanMsgClass *pwlanMsgObj;