//check gate state (STATE_SCAN or STATE_OPEN_GATE)
switch(STATE){
caseSTATE_OPEN_GATE:
// nothing to do
printIBeacon(device);// DEBUG
Serial.printf(" - gate is open\n");// DEBUG
updateRSSItab(getRSSI(device));// TODO : to delete to reopen gate after 4 sec ?
STATE=STATE_OPEN_GATE;
break;
caseSTATE_SCAN:
default:
RSSInewRSSI=getRSSI(device);
intavRSSI=averageRSSI(newRSSI);
if(avRSSI>RSSI_THRESHOLD_OPEN_GATE){
printIBeacon(device);// DEBUG
Serial.printf(" - RSSI average OK:%d\n",avRSSI);// DEBUG
openGate();
updateRSSItab(newRSSI);
STATE=STATE_OPEN_GATE;
}
else{
printIBeacon(device);// DEBUG
Serial.printf(" - RSSI average too low:%d\n",avRSSI);// DEBUG
updateRSSItab(newRSSI);
}
break;
}
}
}
private:
private:
structtimevaltv;
// ***** compute average RSSI *****
time_tt;
intaverageRSSI(RSSInewRSSI){
structtm*info;
charbuffer[64];
if((newRSSI.time-tabRSSI[0].time)>3){// if last trame was detected more than 3 sec ago, return an average RSSI of -100 // TODO compare epochtime insted