Eliminated TimedResets from Library
This is no longer needed since PushButtons can be easily emulated from within a Service loop() as per Example 14. Library is now fully up-to-date: TimedResets and SpanEvents have been fully removed.
This commit is contained in:
parent
258882fe6d
commit
6c5a5835e6
38
src/HAP.cpp
38
src/HAP.cpp
|
|
@ -1185,44 +1185,6 @@ void HAPClient::checkNotifications(){
|
||||||
|
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
|
|
||||||
void HAPClient::checkTimedResets(){
|
|
||||||
|
|
||||||
unsigned long cTime=millis(); // current time
|
|
||||||
vector<SpanBuf> spanBuf; // vector to SpanBuf objects
|
|
||||||
|
|
||||||
for(int i=0;i<homeSpan.TimedResets.size();i++){ // loop through all defined Timed Resets
|
|
||||||
if(!homeSpan.TimedResets[i]->characteristic->value.BOOL){ // characteristic is off
|
|
||||||
homeSpan.TimedResets[i]->start=false; // ensure timer is not started
|
|
||||||
}
|
|
||||||
else if(!homeSpan.TimedResets[i]->start){ // else characteristic is on but timer is not started
|
|
||||||
homeSpan.TimedResets[i]->start=true; // start timer
|
|
||||||
homeSpan.TimedResets[i]->alarmTime=cTime+homeSpan.TimedResets[i]->waitTime; // set alarm time
|
|
||||||
}
|
|
||||||
else if(cTime>homeSpan.TimedResets[i]->alarmTime){ // else characteristic is on, timer is started, and timer is expired
|
|
||||||
|
|
||||||
LOG1("Resetting aid=");
|
|
||||||
LOG1(homeSpan.TimedResets[i]->characteristic->aid);
|
|
||||||
LOG1(" iid=");
|
|
||||||
LOG1(homeSpan.TimedResets[i]->characteristic->iid);
|
|
||||||
LOG1("\n");
|
|
||||||
|
|
||||||
memset(&(homeSpan.TimedResets[i]->characteristic->value),0,sizeof(SpanCharacteristic::UVal));
|
|
||||||
|
|
||||||
SpanBuf sb; // create SpanBuf object
|
|
||||||
sb.characteristic=homeSpan.TimedResets[i]->characteristic; // set characteristic
|
|
||||||
sb.status=StatusCode::OK; // set status
|
|
||||||
sb.val=""; // set dummy "val" so that sprintfNotify knows to consider this "update"
|
|
||||||
spanBuf.push_back(sb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(spanBuf.size()>0) // if updated items are found
|
|
||||||
eventNotify(&spanBuf[0],spanBuf.size()); // transmit EVENT Notifications
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
|
|
||||||
void HAPClient::checkTimedWrites(){
|
void HAPClient::checkTimedWrites(){
|
||||||
|
|
||||||
unsigned long cTime=millis(); // get current time
|
unsigned long cTime=millis(); // get current time
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,6 @@ struct HAPClient {
|
||||||
static void removeControllers(); // removes all Controllers (sets allocated flags to false for all slots)
|
static void removeControllers(); // removes all Controllers (sets allocated flags to false for all slots)
|
||||||
static void removeController(uint8_t *id); // removes specific Controller. If no remaining admin Controllers, remove all others (if any) as per HAP requirements.
|
static void removeController(uint8_t *id); // removes specific Controller. If no remaining admin Controllers, remove all others (if any) as per HAP requirements.
|
||||||
static void printControllers(); // prints IDs of all allocated (paired) Controller
|
static void printControllers(); // prints IDs of all allocated (paired) Controller
|
||||||
static void checkTimedResets(); // checks for Timed Resets and reports to controllers as needed (HAP Section 6.8)
|
|
||||||
static void callServiceLoops(); // call the loop() method for any Service with that over-rode the default method
|
static void callServiceLoops(); // call the loop() method for any Service with that over-rode the default method
|
||||||
static void checkNotifications(); // checks for Event Notifications and reports to controllers as needed (HAP Section 6.8)
|
static void checkNotifications(); // checks for Event Notifications and reports to controllers as needed (HAP Section 6.8)
|
||||||
static void checkTimedWrites(); // checks for expired Timed Write PIDs, and clears any found (HAP Section 6.7.2.4)
|
static void checkTimedWrites(); // checks for expired Timed Write PIDs, and clears any found (HAP Section 6.7.2.4)
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,6 @@ void Span::poll() {
|
||||||
} // process HAP Client
|
} // process HAP Client
|
||||||
} // for-loop over connection slots
|
} // for-loop over connection slots
|
||||||
|
|
||||||
HAPClient::checkTimedResets();
|
|
||||||
HAPClient::callServiceLoops();
|
HAPClient::callServiceLoops();
|
||||||
HAPClient::checkNotifications();
|
HAPClient::checkNotifications();
|
||||||
HAPClient::checkTimedWrites();
|
HAPClient::checkTimedWrites();
|
||||||
|
|
@ -1136,28 +1135,6 @@ int SpanCharacteristic::timeVal(){
|
||||||
return(homeSpan.snapTime-updateTime);
|
return(homeSpan.snapTime-updateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////
|
|
||||||
// SpanTimedReset //
|
|
||||||
///////////////////////////////
|
|
||||||
|
|
||||||
SpanTimedReset::SpanTimedReset(int waitTime){
|
|
||||||
|
|
||||||
if(homeSpan.Accessories.empty() || homeSpan.Accessories.back()->Services.empty() || homeSpan.Accessories.back()->Services.back()->Characteristics.empty() ){
|
|
||||||
Serial.print("*** FATAL ERROR: Can't create new Timed Reset without a defined Characteristic. Program halted!\n\n");
|
|
||||||
while(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!(homeSpan.Accessories.back()->Services.back()->Characteristics.back()->perms&SpanCharacteristic::PW)){
|
|
||||||
Serial.print("*** FATAL ERROR: Can't create new Timed Reset for Read-Only Characteristic. Program halted!\n\n");
|
|
||||||
while(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
this->characteristic=homeSpan.Accessories.back()->Services.back()->Characteristics.back();
|
|
||||||
this->waitTime=waitTime;
|
|
||||||
homeSpan.TimedResets.push_back(this);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// SpanRange //
|
// SpanRange //
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ struct SpanService;
|
||||||
struct SpanCharacteristic;
|
struct SpanCharacteristic;
|
||||||
struct SpanRange;
|
struct SpanRange;
|
||||||
struct SpanBuf;
|
struct SpanBuf;
|
||||||
struct SpanTimedReset;
|
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
|
|
@ -48,7 +47,6 @@ struct Span{
|
||||||
|
|
||||||
SpanConfig hapConfig; // track configuration changes to the HAP Accessory database; used to increment the configuration number (c#) when changes found
|
SpanConfig hapConfig; // track configuration changes to the HAP Accessory database; used to increment the configuration number (c#) when changes found
|
||||||
vector<SpanAccessory *> Accessories; // vector of pointers to all Accessories
|
vector<SpanAccessory *> Accessories; // vector of pointers to all Accessories
|
||||||
vector<SpanTimedReset *> TimedResets; // vector of pointers to all TimedResets
|
|
||||||
vector<SpanService *> Loops; // vector of pointer to all Services that have over-ridden loop() methods
|
vector<SpanService *> Loops; // vector of pointer to all Services that have over-ridden loop() methods
|
||||||
vector<SpanBuf> Notifications; // vector of SpanBuf objects that store info for Characteristics that are updated with setVal() and require a Notification Event
|
vector<SpanBuf> Notifications; // vector of SpanBuf objects that store info for Characteristics that are updated with setVal() and require a Notification Event
|
||||||
unordered_map<uint64_t, uint32_t> TimedWrites; // map of timed-write PIDs and Alarm Times (based on TTLs)
|
unordered_map<uint64_t, uint32_t> TimedWrites; // map of timed-write PIDs and Alarm Times (based on TTLs)
|
||||||
|
|
@ -233,18 +231,6 @@ struct SpanBuf{ // temporary storage buffer for us
|
||||||
SpanCharacteristic *characteristic=NULL; // Characteristic to update (NULL if not found)
|
SpanCharacteristic *characteristic=NULL; // Characteristic to update (NULL if not found)
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////
|
|
||||||
|
|
||||||
struct SpanTimedReset{
|
|
||||||
SpanCharacteristic *characteristic; // characteristic to auto-reset whenever activated
|
|
||||||
int waitTime; // time to wait until auto-reset (in milliseconds)
|
|
||||||
unsigned long alarmTime; // alarm time for trigger to auto-reset
|
|
||||||
boolean start=false; // alarm timer started
|
|
||||||
boolean trigger=false; // alarm timer triggered
|
|
||||||
|
|
||||||
SpanTimedReset(int waitTime);
|
|
||||||
};
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
// Extern Variables
|
// Extern Variables
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue