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

Wyświetl plik

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