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 {
Serial.print("YOU MAY CONFIGURE BY TYPING 'W <RETURN>'.\n\n");
statusLED->start(LED_WIFI_NEEDED);
if(hsEventCallback)
hsEventCallback(HS_WIFI_NEEDED);
if(statusCallback)
statusCallback(HS_WIFI_NEEDED);
}
} else {
statusLED->start(LED_WIFI_CONNECTING);
if(hsEventCallback)
hsEventCallback(HS_WIFI_CONNECTING);
if(statusCallback)
statusCallback(HS_WIFI_CONNECTING);
}
if(controlButton)
@ -332,7 +332,7 @@ int Span::getFreeSlot(){
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");
return;
}
@ -341,8 +341,8 @@ void Span::commandMode(){
int mode=1;
boolean done=false;
statusLED->start(500,0.3,mode,1000);
if(hsEventCallback)
hsEventCallback(HS_CONFIG_MODE_EXIT);
if(statusCallback)
statusCallback(HS_CONFIG_MODE_EXIT);
unsigned long alarmTime=millis()+comModeLife;
while(!done){
@ -361,8 +361,8 @@ void Span::commandMode(){
if(mode==6)
mode=1;
statusLED->start(500,0.3,mode,1000);
if(hsEventCallback)
hsEventCallback((HS_EVENT)(HS_CONFIG_MODE_EXIT+mode-1));
if(statusCallback)
statusCallback((HS_STATUS)(HS_CONFIG_MODE_EXIT+mode-1));
} else {
done=true;
}
@ -376,28 +376,7 @@ void Span::commandMode(){
case 1:
Serial.print("*** NO ACTION\n\n");
if(strlen(network.wifiData.ssid)==0){
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);
}
resetStatus();
break;
case 2:
@ -434,8 +413,8 @@ void Span::checkConnect(){
waitTime=60000;
alarmConnect=0;
statusLED->start(LED_WIFI_CONNECTING);
if(hsEventCallback)
hsEventCallback(HS_WIFI_CONNECTING);
if(statusCallback)
statusCallback(HS_WIFI_CONNECTING);
}
if(WiFi.status()!=WL_CONNECTED){
@ -462,17 +441,7 @@ void Span::checkConnect(){
return;
}
if(!HAPClient::nAdminControllers()){
statusLED->start(LED_PAIRING_NEEDED);
if(hsEventCallback)
hsEventCallback(HS_PAIRING_NEEDED);
}
else{
statusLED->on();
if(hsEventCallback)
hsEventCallback(HS_PAIRED);
}
resetStatus();
connected++;
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");
mdns_service_txt_item_set("_hap","_tcp","sf","1"); // set Status Flag = 1 (Table 6-8)
if(strlen(network.wifiData.ssid)==0)
statusLED->start(LED_WIFI_NEEDED);
else
statusLED->start(LED_PAIRING_NEEDED);
resetStatus();
}
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){
sprintf(network.wifiData.ssid,"%.*s",MAX_SSID,ssid);
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_CONNECTING,
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)
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 (*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
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
void checkConnect(); // check WiFi connection; connect if needed
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
@ -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 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 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 deleteStoredValues(){processSerialCommand("V");} // deletes stored Characteristic values from NVS

View File

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