Completed integration of apConfigure()

The 'A' command now resets any existing WiFi functionality so that it can start an Access Point without needing to first reboot.

To Do:  Add a method to cancel out of apConfigure() and reboot by pressing control button.

To Do:  Create time-out for commandMode()
This commit is contained in:
Gregg 2020-10-09 07:57:30 -05:00
parent 5cb09b6ad8
commit 7e4df498db
3 changed files with 25 additions and 18 deletions

View File

@ -59,18 +59,6 @@ void Span::begin(Category catID, char *displayName, char *hostNameBase, char *mo
Serial.print(homeSpan.displayName);
Serial.print("\n\n");
/*
if(!digitalRead(controlPin)){ // factory reset pin is low upon start-up
Serial.print("** CONTROL BUTTON PRESSED DURING STARTUP! PERFORMING FACTORY RESET **\n\n");
statusLED.start(LED_ALERT);
nvs_flash_erase(); // erase NVS storage
delay(5000);
Serial.print("Re-starting...\n\n");
statusLED.off();
ESP.restart();
}
*/
} // begin
///////////////////////////////
@ -195,6 +183,7 @@ void Span::poll() {
if(controlButton.triggered(3000,10000)){
statusLED.off();
if(controlButton.longPress()){
controlButton.wait();
processSerialCommand("F"); // FACTORY RESET
} else {
commandMode(); // COMMAND MODE
@ -238,7 +227,7 @@ void Span::commandMode(){
} // while
statusLED.start(LED_ALERT);
delay(2000);
controlButton.wait();
switch(mode){
@ -473,7 +462,11 @@ void Span::processSerialCommand(char *c){
Serial.print("\nDEVICE NOT YET PAIRED -- PLEASE PAIR WITH HOMEKIT APP\n\n");
mdns_service_txt_item_set("_hap","_tcp","sf","1"); // set Status Flag = 1 (Table 6-8)
statusLED.start(LED_PAIRING_NEEDED);
if(strlen(network.wifiData.ssid)==0)
statusLED.start(LED_WIFI_NEEDED);
else
statusLED.start(LED_PAIRING_NEEDED);
}
break;
@ -489,9 +482,12 @@ void Span::processSerialCommand(char *c){
case 'A': {
if(strlen(network.wifiData.ssid)>0){
processSerialCommand("X");
ESP.restart();
Serial.print("*** Stopping all current WiFi services...\n\n");
hapServer.end();
MDNS.end();
WiFi.disconnect();
}
network.apConfigure(hostName);
nvs_set_blob(HAPClient::wifiNVS,"WIFIDATA",&network.wifiData,sizeof(network.wifiData)); // update data
nvs_commit(HAPClient::wifiNVS); // commit to NVS
@ -606,10 +602,11 @@ void Span::processSerialCommand(char *c){
Serial.print(" d - print attributes database\n");
Serial.print(" i - print detailed info about configuration\n");
Serial.print(" U - unpair device by deleting all Controller data\n");
Serial.print(" X - disconnect from WiFi and delete WiFi credentials\n");
Serial.print(" X - delete WiFi credentials and restart\n");
Serial.print(" W - configure WiFi credentials and connect\n");
Serial.print(" A - start Access Point\n");
Serial.print(" H - delete stored HomeKit Pairing data and restart\n");
Serial.print(" F - factory reset\n");
Serial.print(" F - factory reset and restart\n");
Serial.print(" E - delete all stored data and restart\n");
Serial.print(" ? - print this list of commands\n");
Serial.print(" L <level> - change Log Level to <level>\n");

View File

@ -141,6 +141,12 @@ boolean PushButton::longPress(){
//////////////////////////////////////
void PushButton::wait(){
while(!digitalRead(pin));
}
//////////////////////////////////////
void PushButton::reset(){
status=0;
}

View File

@ -97,6 +97,10 @@ class PushButton{
// Returns true if last trigger event was a Long Press, or false if last trigger was a Short Press
void wait();
// Waits for button to be released. Use after Long Press if button release confirmation is desired
};
////////////////////////////////