Add support for KISS tnc SlotTime command

pull/15/head
sh123 2020-12-09 12:05:48 +02:00
rodzic 052ebde17d
commit 10edae2b75
2 zmienionych plików z 13 dodań i 1 usunięć

Wyświetl plik

@ -6,6 +6,7 @@ Service::Service()
: kissState_(KissState::Void)
, kissCmd_(KissCmd::NoCmd)
, csmaP_(CfgCsmaPersistence)
, csmaSlotTime_(CfgCsmaSlotTimeMs)
, serialBt_()
{
}
@ -162,7 +163,7 @@ void Service::loop()
}
}
else {
delay(CfgCsmaSlotTimeMs);
delay(csmaSlotTime_);
}
}
delay(CfgPollDelayMs);
@ -359,6 +360,10 @@ void Service::onBtDataAvailable()
kissCmd_ = (KissCmd)rxByte;
kissState_ = KissState::GetP;
}
else if (rxByte == KissCmd::SlotTime) {
kissCmd_ = (KissCmd)rxByte;
kissState_ = KissState::GetSlotTime;
}
else {
kissResetState();
}
@ -368,6 +373,10 @@ void Service::onBtDataAvailable()
csmaP_ = rxByte;
kissState_ = KissState::GetData;
break;
case KissState::GetSlotTime:
csmaSlotTime_ = (long)rxByte * 10;
kissState_ = KissState::GetData;
break;
case KissState::GetData:
if (rxByte == KissMarker::Fesc) {
kissState_ = KissState::Escape;

Wyświetl plik

@ -58,12 +58,14 @@ private:
GetCmd,
GetData,
GetP,
GetSlotTime,
Escape
};
enum KissCmd {
Data = 0x00,
P = 0x02,
SlotTime = 0x03,
NoCmd = 0x80
};
@ -107,6 +109,7 @@ private:
KissCmd kissCmd_;
long previousBeaconMs_;
byte csmaP_;
long csmaSlotTime_;
// peripherals
BluetoothSerial serialBt_;