Changed hsEventCallback to statusCallback
This commit is contained in:
parent
4e23c5e357
commit
7ff91ccf02
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue