Fork to see if I can get working
Dependencies: BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated
Fork of xDotBridge_update_test20180823 by
Revision 98:3609f600c2f5, committed 2017-11-28
- Comitter:
- mbriggs_vortex
- Date:
- Tue Nov 28 14:31:54 2017 -0700
- Parent:
- 97:594e47206604
- Child:
- 99:83b54c851187
- Commit message:
- Adding first cut of term settings.
Changed in this revision
--- a/xDotBridge/inc/BaseboardIO.h Tue Nov 28 16:19:57 2017 +0000
+++ b/xDotBridge/inc/BaseboardIO.h Tue Nov 28 14:31:54 2017 -0700
@@ -202,6 +202,10 @@
*/
bool isCCNO();
+ void setIsCCNO(bool val);
+
+ void setIsCCNC(bool val) {setIsCCNO(!val);}
+
/**
* @brief Returns the current state of the NO/NC switch
*
@@ -236,6 +240,10 @@
*/
bool isRx();
+ void setIsRx(bool val);
+
+ void setIsTx(bool val) {setIsRx(!val);}
+
/**
* @brief Returns the current state of the Rx/Tx switch
*
@@ -297,6 +305,8 @@
*/
uint8_t rotarySwitch1();
+ void setRotarySwitch1(uint8_t val);
+
/**
* @brief Returns value of a rotary switch (TODO give board location)
*
@@ -309,6 +319,8 @@
*/
uint8_t rotarySwitch2();
+// void setRotarySwitch2(uint8_t val);
+
////////////
// Output //
////////////
--- a/xDotBridge/inc/SerialTermMgr.h Tue Nov 28 16:19:57 2017 +0000
+++ b/xDotBridge/inc/SerialTermMgr.h Tue Nov 28 14:31:54 2017 -0700
@@ -45,10 +45,19 @@
BufferedSerial *mPc;
WinbondSPIFlash *mFlash;
+ // Hold for seeding new values
+ bool mSaveIsCCNO;
+ bool mSaveIsTx;
+ uint8_t mSaveRot1;
+
bool inputMainPage(char in);
void printMainScreen();
void inputGenInfo (char in);
void printGenInfo();
+ void inputSettings (char in);
+ void printSettings();
+ void seedSaveSettings();
+ void applySaveSettings();
void inputEnterProgMode (char in);
void printEnterProgMode();
bool xmodem2Flash();
--- a/xDotBridge/src/BaseboardIO.cpp Tue Nov 28 16:19:57 2017 +0000
+++ b/xDotBridge/src/BaseboardIO.cpp Tue Nov 28 14:31:54 2017 -0700
@@ -210,11 +210,31 @@
// When DIP switch is not closed (i.e. value reads high) assume NO
return (mPortExpanderVal1 & pEx1NoNcSel) != 0; // Open NO, closed NC
}
+void BaseboardIO::setIsCCNO(bool val)
+{
+ // When DIP switch is not closed (i.e. value reads high) assume NO
+ if (val) {
+ mPortExpanderVal1 |= pEx1NoNcSel; // Set bit
+ }
+ else {
+ mPortExpanderVal1 &= ~pEx1NoNcSel; // Clear bit
+ }
+}
bool BaseboardIO::isRx()
{
// When DIP switch is not closed (i.e. value reads high) assume RX
return (mPortExpanderVal1 & pEx1RxTxSel) != 0;
}
+void BaseboardIO::setIsRx(bool val)
+{
+ // When DIP switch is not closed (i.e. value reads high) assume RX
+ if (val) {
+ mPortExpanderVal1 |= pEx1RxTxSel; // Set bit
+ }
+ else {
+ mPortExpanderVal1 &= ~pEx1RxTxSel; // Clear bit
+ }
+}
bool BaseboardIO::isLoRaWANMode()
{
// When DIP switch is not closed (i.e. value reads high) assume P2P not WAN
@@ -239,6 +259,21 @@
val |= 0x01;
return val;
}
+void BaseboardIO::setRotarySwitch1(uint8_t val)
+{
+ if ((val & 0x08) == 1) {
+ mPortExpanderVal0 &= ~pEx0Rot1B8;
+ }
+ if ((val & 0x04) == 1) {
+ mPortExpanderVal0 &= ~pEx0Rot1B4;
+ }
+ if ((val & 0x02) == 1) {
+ mPortExpanderVal0 &= ~pEx0Rot1B2;
+ }
+ if ((val & 0x01) == 1) {
+ mPortExpanderVal0 &= ~pEx0Rot1B1;
+ }
+}
uint8_t BaseboardIO::rotarySwitch2()
{
// If a bit of a nibble is asserted then the port expander line is switched low.
--- a/xDotBridge/src/SerialTermMgr.cpp Tue Nov 28 16:19:57 2017 +0000
+++ b/xDotBridge/src/SerialTermMgr.cpp Tue Nov 28 14:31:54 2017 -0700
@@ -22,7 +22,6 @@
mCurrScreen = mainScreenId;
mBbio = bbio;
mFlash = flash;
-
}
void SerialTermMgr::printScreen()
{
@@ -34,6 +33,8 @@
printGenInfo();
break;
case settingsScreenId:
+ printSettings();
+ break;
case statsScreenId:
case errorLogScreenId:
case liveLogScreenId:
@@ -65,6 +66,8 @@
inputGenInfo(c);
break;
case settingsScreenId:
+ inputSettings(c);
+ break;
case statsScreenId:
case errorLogScreenId:
case liveLogScreenId:
@@ -88,8 +91,7 @@
mCurrScreen = enterProgModeScreenId;
break;
case '3':
- mPc->printf("\r\nNot implemented yet.\r\n");
-// mCurrScreen = settingsScreenId;
+ mCurrScreen = settingsScreenId;
break;
// Future
// case '4':
@@ -196,6 +198,81 @@
mPc->printf("===============================================\r\n");
}
+void SerialTermMgr::inputSettings (char in) {
+ if (mPc == NULL) {
+ return;
+ }
+ switch (in) {
+ case 0x1B: // esc
+ mCurrScreen = mainScreenId;
+ break;
+ case 0x13: // ctrl-s
+ applySaveSettings();
+ mPc->printf("Settings saved \r\n");
+ mCurrScreen = mainScreenId;
+ break;
+ case 'r':
+ mBbio->sampleUserSwitches();
+ mPc->printf("User switches sampled.\r\n");
+ break;
+ case '1':
+ mSaveIsCCNO = !mSaveIsCCNO;
+ case '2':
+ mSaveIsTx = !mSaveIsTx;
+ case '3':
+ mSaveRot1 = (++mSaveRot1) % 10;
+ default:
+ mPc->printf("Invalid key.\r\n");
+ }
+ printScreen();
+}
+
+void SerialTermMgr::printSettings()
+{
+ if (mPc == NULL) {
+ return;
+ }
+ mPc->printf("\r\n\r\n");
+ mPc->printf("===============================================\r\n");
+ mPc->printf("= Settings (ESC to return to main menu) =\r\n", mFwVersion);
+ mPc->printf("===============================================\r\n");
+ mPc->printf("= Press r to sample user switch values =\r\n");
+ mPc->printf("= Press <ctrl>-s to save values =\r\n");
+ mPc->printf("===============================================\r\n");
+ mPc->printf("===============================================\r\n");
+ mPc->printf("= Setting: current value [Modify Key], save value =\r\n", mFwVersion);
+ mPc->printf("= Contact closure [1]: %s, %s =\r\n",
+ mBbio->isCCNO() ? "NO" : "NC",
+ mSaveIsCCNO ? "NO" : "NC");
+ mPc->printf("= WB Mode [2]: %s, %s =\r\n",
+ mBbio->isTx() ? "Transmitter" : "Receiver ",
+ mSaveIsTx ? "Transmitter" : "Receiver ");
+ if (mSaveIsTx) {
+ mPc->printf("= Currently no rotary switches apply for TX =\r\n");
+ }
+ else {
+ mPc->printf("= Rotary 1 hold setting: %0.1f secs, %0.1f =\r\n",
+ HoldTimeSetting::rotVal2Sec(mBbio->rotarySwitch1()),
+ HoldTimeSetting::rotVal2Sec(mSaveRot1));
+ mPc->printf("= Rotary 2 currently does not apply for RX =\r\n");
+ }
+ mPc->printf("===============================================\r\n");
+}
+
+void SerialTermMgr::seedSaveSettings()
+{
+ mSaveIsCCNO = mBbio->isCCNO();
+ mSaveIsTx = mBbio->isTx();
+ mSaveRot1 = mBbio->rotarySwitch1();
+}
+
+void SerialTermMgr::applySaveSettings()
+{
+ mBbio->setIsCCNO(mSaveIsCCNO);
+ mBbio->setIsTx(mSaveIsTx);
+ mBbio->setRotarySwitch1(mSaveRot1);
+}
+
void SerialTermMgr::printEnterProgMode()
{
if (mPc == NULL) {
