Changed hsEventCallback to statusCallback

This commit is contained in:
HomeSpan 2022-10-24 19:03:15 -04:00
parent 4e23c5e357
commit 7ff91ccf02
3 changed files with 48 additions and 54 deletions

View File

@ -195,13 +195,13 @@ void Span::pollTask() {
} else { } else {
Serial.print("YOU MAY CONFIGURE BY TYPING 'W <RETURN>'.\n\n"); Serial.print("YOU MAY CONFIGURE BY TYPING 'W <RETURN>'.\n\n");
statusLED->start(LED_WIFI_NEEDED); statusLED->start(LED_WIFI_NEEDED);
if(hsEventCallback) if(statusCallback)
hsEventCallback(HS_WIFI_NEEDED); statusCallback(HS_WIFI_NEEDED);
} }
} else { } else {
statusLED->start(LED_WIFI_CONNECTING); statusLED->start(LED_WIFI_CONNECTING);
if(hsEventCallback) if(statusCallback)
hsEventCallback(HS_WIFI_CONNECTING); statusCallback(HS_WIFI_CONNECTING);
} }
if(controlButton) if(controlButton)
@ -332,7 +332,7 @@ int Span::getFreeSlot(){
void Span::commandMode(){ void Span::commandMode(){
if(!statusDevice && !hsEventCallback){ if(!statusDevice && !statusCallback){
Serial.print("*** ERROR: CAN'T ENTER COMMAND MODE WITHOUT A DEFINED STATUS LED OR EVENT HANDLER CALLBACK***\n\n"); Serial.print("*** ERROR: CAN'T ENTER COMMAND MODE WITHOUT A DEFINED STATUS LED OR EVENT HANDLER CALLBACK***\n\n");
return; return;
} }
@ -341,8 +341,8 @@ void Span::commandMode(){
int mode=1; int mode=1;
boolean done=false; boolean done=false;
statusLED->start(500,0.3,mode,1000); statusLED->start(500,0.3,mode,1000);
if(hsEventCallback) if(statusCallback)
hsEventCallback(HS_CONFIG_MODE_EXIT); statusCallback(HS_CONFIG_MODE_EXIT);
unsigned long alarmTime=millis()+comModeLife; unsigned long alarmTime=millis()+comModeLife;
while(!done){ while(!done){
@ -361,8 +361,8 @@ void Span::commandMode(){
if(mode==6) if(mode==6)
mode=1; mode=1;
statusLED->start(500,0.3,mode,1000); statusLED->start(500,0.3,mode,1000);
if(hsEventCallback) if(statusCallback)
hsEventCallback((HS_EVENT)(HS_CONFIG_MODE_EXIT+mode-1)); statusCallback((HS_STATUS)(HS_CONFIG_MODE_EXIT+mode-1));
} else { } else {
done=true; done=true;
} }
@ -376,28 +376,7 @@ void Span::commandMode(){
case 1: case 1:
Serial.print("*** NO ACTION\n\n"); Serial.print("*** NO ACTION\n\n");
if(strlen(network.wifiData.ssid)==0){ resetStatus();
statusLED->start(LED_WIFI_NEEDED);
if(hsEventCallback)
hsEventCallback(HS_WIFI_NEEDED);
}
else
if(WiFi.status()!=WL_CONNECTED){
statusLED->start(LED_WIFI_CONNECTING);
if(hsEventCallback)
hsEventCallback(HS_WIFI_CONNECTING);
}
else
if(!HAPClient::nAdminControllers()){
statusLED->start(LED_PAIRING_NEEDED);
if(hsEventCallback)
hsEventCallback(HS_PAIRING_NEEDED);
}
else{
statusLED->on();
if(hsEventCallback)
hsEventCallback(HS_PAIRED);
}
break; break;
case 2: case 2:
@ -434,8 +413,8 @@ void Span::checkConnect(){
waitTime=60000; waitTime=60000;
alarmConnect=0; alarmConnect=0;
statusLED->start(LED_WIFI_CONNECTING); statusLED->start(LED_WIFI_CONNECTING);
if(hsEventCallback) if(statusCallback)
hsEventCallback(HS_WIFI_CONNECTING); statusCallback(HS_WIFI_CONNECTING);
} }
if(WiFi.status()!=WL_CONNECTED){ if(WiFi.status()!=WL_CONNECTED){
@ -462,17 +441,7 @@ void Span::checkConnect(){
return; return;
} }
if(!HAPClient::nAdminControllers()){ resetStatus();
statusLED->start(LED_PAIRING_NEEDED);
if(hsEventCallback)
hsEventCallback(HS_PAIRING_NEEDED);
}
else{
statusLED->on();
if(hsEventCallback)
hsEventCallback(HS_PAIRED);
}
connected++; connected++;
addWebLog(true,"WiFi Connected! IP Address = %s",WiFi.localIP().toString().c_str()); addWebLog(true,"WiFi Connected! IP Address = %s",WiFi.localIP().toString().c_str());
@ -796,10 +765,7 @@ void Span::processSerialCommand(const char *c){
Serial.print("\nDEVICE NOT YET PAIRED -- PLEASE PAIR WITH HOMEKIT APP\n\n"); 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) mdns_service_txt_item_set("_hap","_tcp","sf","1"); // set Status Flag = 1 (Table 6-8)
if(strlen(network.wifiData.ssid)==0) resetStatus();
statusLED->start(LED_WIFI_NEEDED);
else
statusLED->start(LED_PAIRING_NEEDED);
} }
break; break;
@ -1150,6 +1116,33 @@ void Span::processSerialCommand(const char *c){
/////////////////////////////// ///////////////////////////////
void Span::resetStatus(){
if(strlen(network.wifiData.ssid)==0){
statusLED->start(LED_WIFI_NEEDED);
if(statusCallback)
statusCallback(HS_WIFI_NEEDED);
}
else
if(WiFi.status()!=WL_CONNECTED){
statusLED->start(LED_WIFI_CONNECTING);
if(statusCallback)
statusCallback(HS_WIFI_CONNECTING);
}
else
if(!HAPClient::nAdminControllers()){
statusLED->start(LED_PAIRING_NEEDED);
if(statusCallback)
statusCallback(HS_PAIRING_NEEDED);
}
else{
statusLED->on();
if(statusCallback)
statusCallback(HS_PAIRED);
}
}
///////////////////////////////
void Span::setWifiCredentials(const char *ssid, const char *pwd){ void Span::setWifiCredentials(const char *ssid, const char *pwd){
sprintf(network.wifiData.ssid,"%.*s",MAX_SSID,ssid); sprintf(network.wifiData.ssid,"%.*s",MAX_SSID,ssid);
sprintf(network.wifiData.pwd,"%.*s",MAX_PWD,pwd); sprintf(network.wifiData.pwd,"%.*s",MAX_PWD,pwd);

View File

@ -67,7 +67,7 @@ enum {
/////////////////////////////// ///////////////////////////////
enum HS_EVENT { enum HS_STATUS {
HS_WIFI_NEEDED, HS_WIFI_NEEDED,
HS_WIFI_CONNECTING, HS_WIFI_CONNECTING,
HS_PAIRING_NEEDED, HS_PAIRING_NEEDED,
@ -217,7 +217,7 @@ class Span{
void (*pairCallback)(boolean isPaired)=NULL; // optional callback function to invoke when pairing is established (true) or lost (false) void (*pairCallback)(boolean isPaired)=NULL; // optional callback function to invoke when pairing is established (true) or lost (false)
boolean autoStartAPEnabled=false; // enables auto start-up of Access Point when WiFi Credentials not found boolean autoStartAPEnabled=false; // enables auto start-up of Access Point when WiFi Credentials not found
void (*apFunction)()=NULL; // optional function to invoke when starting Access Point void (*apFunction)()=NULL; // optional function to invoke when starting Access Point
void (*hsEventCallback)(HS_EVENT hsEvent)=NULL; // optional callback for various HomeSpan events void (*statusCallback)(HS_STATUS status)=NULL; // optional callback when HomeSpan status changes
WiFiServer *hapServer; // pointer to the HAP Server connection WiFiServer *hapServer; // pointer to the HAP Server connection
Blinker *statusLED; // indicates HomeSpan status Blinker *statusLED; // indicates HomeSpan status
@ -241,6 +241,7 @@ class Span{
int getFreeSlot(); // returns free HAPClient slot number. HAPClients slot keep track of each active HAPClient connection int getFreeSlot(); // returns free HAPClient slot number. HAPClients slot keep track of each active HAPClient connection
void checkConnect(); // check WiFi connection; connect if needed void checkConnect(); // check WiFi connection; connect if needed
void commandMode(); // allows user to control and reset HomeSpan settings with the control button void commandMode(); // allows user to control and reset HomeSpan settings with the control button
void resetStatus(); // resets statusLED and calls statusCallback based on current HomeSpan status
int sprintfAttributes(char *cBuf, int flags=GET_VALUE|GET_META|GET_PERMS|GET_TYPE|GET_DESC); // prints Attributes JSON database into buf, unless buf=NULL; return number of characters printed, excluding null terminator int sprintfAttributes(char *cBuf, int flags=GET_VALUE|GET_META|GET_PERMS|GET_TYPE|GET_DESC); // prints Attributes JSON database into buf, unless buf=NULL; return number of characters printed, excluding null terminator
@ -299,7 +300,7 @@ class Span{
void setApFunction(void (*f)()){apFunction=f;} // sets an optional user-defined function to call when activating the WiFi Access Point void setApFunction(void (*f)()){apFunction=f;} // sets an optional user-defined function to call when activating the WiFi Access Point
void enableAutoStartAP(){autoStartAPEnabled=true;} // enables auto start-up of Access Point when WiFi Credentials not found void enableAutoStartAP(){autoStartAPEnabled=true;} // enables auto start-up of Access Point when WiFi Credentials not found
void setWifiCredentials(const char *ssid, const char *pwd); // sets WiFi Credentials void setWifiCredentials(const char *ssid, const char *pwd); // sets WiFi Credentials
void setEventCallback(void (*f)(HS_EVENT hsEvent)){hsEventCallback=f;} // sets an optional user-defined function to call for various HomeSpan Events void setStatusCallback(void (*f)(HS_STATUS status)){statusCallback=f;} // sets an optional user-defined function to call when HomeSpan status changes
void setPairingCode(const char *s){sprintf(pairingCodeCommand,"S %9s",s);} // sets the Pairing Code - use is NOT recommended. Use 'S' from CLI instead void setPairingCode(const char *s){sprintf(pairingCodeCommand,"S %9s",s);} // sets the Pairing Code - use is NOT recommended. Use 'S' from CLI instead
void deleteStoredValues(){processSerialCommand("V");} // deletes stored Characteristic values from NVS void deleteStoredValues(){processSerialCommand("V");} // deletes stored Characteristic values from NVS

View File

@ -44,7 +44,7 @@ void setup() {
homeSpan.setSketchVersion("OTA Test 8"); homeSpan.setSketchVersion("OTA Test 8");
homeSpan.setWifiCallback(wifiEstablished); homeSpan.setWifiCallback(wifiEstablished);
homeSpan.setEventCallback(hsEvents); homeSpan.setStatusCallback(statusUpdate);
new SpanUserCommand('d',"- My Description",userCom1); new SpanUserCommand('d',"- My Description",userCom1);
new SpanUserCommand('e',"- My second Description",userCom2); new SpanUserCommand('e',"- My second Description",userCom2);
@ -167,6 +167,6 @@ void userCom2(const char *v){
////////////////////////////////////// //////////////////////////////////////
void hsEvents(HS_EVENT event){ void statusUpdate(HS_STATUS status){
Serial.printf("\n*** HOMESPAN EVENT: %d\n",event); Serial.printf("\n*** HOMESPAN STATUS CHANGE: %d\n",status);
} }