Added a "carbon rod" to moderate enthusiastic OEM controllers to Bluetooth.
Updated Android app to better deal with blue wire comms situations, also added warning of limited control when an OEM controller is in the mix, disabling the temperature and fixed/thermo modes.
This commit is contained in:
parent
ea8af6db09
commit
ca853a1ac5
2 changed files with 25 additions and 4 deletions
BIN
AppInventor/BluetoothHeaterBTCsmartError.aia
Normal file
BIN
AppInventor/BluetoothHeaterBTCsmartError.aia
Normal file
Binary file not shown.
|
@ -130,11 +130,20 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CModeratedFrame : public CProtocol {
|
||||||
|
unsigned long lastTime;
|
||||||
|
public:
|
||||||
|
CModeratedFrame() { lastTime = 0; };
|
||||||
|
void setTime() { lastTime = millis(); };
|
||||||
|
unsigned long elapsedTime() { return millis() - lastTime; };
|
||||||
|
};
|
||||||
|
|
||||||
CommStates CommState;
|
CommStates CommState;
|
||||||
CTxManage TxManage(TxEnbPin, BlueWireSerial);
|
CTxManage TxManage(TxEnbPin, BlueWireSerial);
|
||||||
CProtocol OEMCtrlFrame; // data packet received from heater in response to OEM controller packet
|
//CProtocol OEMCtrlFrame; // data packet received from heater in response to OEM controller packet
|
||||||
CProtocol HeaterFrame1; // data packet received from heater in response to OEM controller packet
|
//CProtocol HeaterFrame1; // data packet received from heater in response to OEM controller packet
|
||||||
|
CModeratedFrame OEMCtrlFrame; // data packet received from heater in response to OEM controller packet
|
||||||
|
CModeratedFrame HeaterFrame1; // data packet received from heater in response to OEM controller packet
|
||||||
CProtocol HeaterFrame2; // data packet received from heater in response to our packet
|
CProtocol HeaterFrame2; // data packet received from heater in response to our packet
|
||||||
CProtocol DefaultBTCParams(CProtocol::CtrlMode); // defines the default parameters, used in case of no OEM controller
|
CProtocol DefaultBTCParams(CProtocol::CtrlMode); // defines the default parameters, used in case of no OEM controller
|
||||||
CSmartError SmartError;
|
CSmartError SmartError;
|
||||||
|
@ -307,7 +316,13 @@ void loop()
|
||||||
else if( CommState.is(CommStates::OEMCtrlReport) ) {
|
else if( CommState.is(CommStates::OEMCtrlReport) ) {
|
||||||
// filled OEM controller frame, report
|
// filled OEM controller frame, report
|
||||||
// echo received OEM controller frame over Bluetooth, using [OEM] header
|
// echo received OEM controller frame over Bluetooth, using [OEM] header
|
||||||
Bluetooth_SendFrame("[OEM]", OEMCtrlFrame, true);
|
if(OEMCtrlFrame.elapsedTime() > 700) {
|
||||||
|
Bluetooth_SendFrame("[OEM]", OEMCtrlFrame, true);
|
||||||
|
OEMCtrlFrame.setTime();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DebugPort.println("Suppressed delivery of OEM frame");
|
||||||
|
}
|
||||||
CommState.set(CommStates::HeaterRx1);
|
CommState.set(CommStates::HeaterRx1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,7 +343,13 @@ void loop()
|
||||||
SmartError.monitor(HeaterFrame1);
|
SmartError.monitor(HeaterFrame1);
|
||||||
|
|
||||||
// echo heater reponse data to Bluetooth client
|
// echo heater reponse data to Bluetooth client
|
||||||
Bluetooth_SendFrame("[HTR]", HeaterFrame1);
|
if(HeaterFrame1.elapsedTime() > 700) {
|
||||||
|
Bluetooth_SendFrame("[HTR]", HeaterFrame1);
|
||||||
|
HeaterFrame1.setTime();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DebugPort.println("Suppressed delivery of OEM heater response frame");
|
||||||
|
}
|
||||||
|
|
||||||
if(digitalRead(ListenOnlyPin)) {
|
if(digitalRead(ListenOnlyPin)) {
|
||||||
bool isBTCmaster = false;
|
bool isBTCmaster = false;
|
||||||
|
|
Loading…
Reference in a new issue