Fork to see if I can get working
Dependencies: BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated
Fork of xDotBridge_update_test20180823 by
Revision 99:83b54c851187, committed 2017-11-29
- Comitter:
- mbriggs_vortex
- Date:
- Wed Nov 29 20:51:33 2017 +0000
- Parent:
- 98:3609f600c2f5
- Child:
- 100:0882cf295f8e
- Commit message:
- Debugged settings via term.; ; Committing for release version 1.03.
Changed in this revision
--- a/xDotBridge/src/BaseboardIO.cpp Tue Nov 28 14:31:54 2017 -0700
+++ b/xDotBridge/src/BaseboardIO.cpp Wed Nov 29 20:51:33 2017 +0000
@@ -143,7 +143,6 @@
// Registering for interrupts
void BaseboardIO::regCCInInt(Callback<void()> func)
{
- sampleUserSwitches();
if (isCCNO()) {
// Pulled high, switched low
mCCIn.fall(func);
@@ -261,17 +260,23 @@
}
void BaseboardIO::setRotarySwitch1(uint8_t val)
{
- if ((val & 0x08) == 1) {
- mPortExpanderVal0 &= ~pEx0Rot1B8;
- }
- if ((val & 0x04) == 1) {
- mPortExpanderVal0 &= ~pEx0Rot1B4;
+ // Clear all then set
+ mPortExpanderVal0 &= ~pEx0Rot1B8;
+ mPortExpanderVal0 &= ~pEx0Rot1B4;
+ mPortExpanderVal0 &= ~pEx0Rot1B2;
+ mPortExpanderVal0 &= ~pEx0Rot1B1;
+
+ if ((val & 0x08) == 0) {
+ mPortExpanderVal0 |= pEx0Rot1B8;
}
- if ((val & 0x02) == 1) {
- mPortExpanderVal0 &= ~pEx0Rot1B2;
+ if ((val & 0x04) == 0) {
+ mPortExpanderVal0 |= pEx0Rot1B4;
}
- if ((val & 0x01) == 1) {
- mPortExpanderVal0 &= ~pEx0Rot1B1;
+ if ((val & 0x02) == 0) {
+ mPortExpanderVal0 |= pEx0Rot1B2;
+ }
+ if ((val & 0x01) == 0) {
+ mPortExpanderVal0 |= pEx0Rot1B1;
}
}
uint8_t BaseboardIO::rotarySwitch2()
--- a/xDotBridge/src/SerialTermMgr.cpp Tue Nov 28 14:31:54 2017 -0700
+++ b/xDotBridge/src/SerialTermMgr.cpp Wed Nov 29 20:51:33 2017 +0000
@@ -91,6 +91,7 @@
mCurrScreen = enterProgModeScreenId;
break;
case '3':
+ seedSaveSettings();
mCurrScreen = settingsScreenId;
break;
// Future
@@ -172,9 +173,9 @@
}
mPc->printf("\r\n\r\n");
mPc->printf("===============================================\r\n");
- mPc->printf("= General Info (ESC to return to main menu) =\r\n", mFwVersion);
+ mPc->printf("= General Info (ESC to return to main menu) =\r\n");
mPc->printf("===============================================\r\n");
- mPc->printf("= Press r to sample user switch values =\r\n"); // FIXME
+ mPc->printf("= Press r to sample user switch values =\r\n");
mPc->printf("===============================================\r\n");
mPc->printf("===============================================\r\n");
mPc->printf("= Firmware version: v%0.2f =\r\n", mFwVersion);
@@ -192,7 +193,8 @@
mPc->printf("= Currently no rotary switches apply for TX =\r\n");
}
else {
- mPc->printf("= Rotary 1 hold setting is %0.1f seconds =\r\n", HoldTimeSetting::rotVal2Sec(mBbio->rotarySwitch1()));
+ mPc->printf("= Rotary 1 hold setting is %05.1f seconds =\r\n",
+ HoldTimeSetting::rotVal2Sec(mBbio->rotarySwitch1()));
mPc->printf("= Rotary 2 currently does not apply for RX =\r\n");
}
mPc->printf("===============================================\r\n");
@@ -217,10 +219,15 @@
break;
case '1':
mSaveIsCCNO = !mSaveIsCCNO;
+ break;
case '2':
mSaveIsTx = !mSaveIsTx;
+ break;
case '3':
- mSaveRot1 = (++mSaveRot1) % 10;
+ if (!mSaveIsTx) {
+ mSaveRot1 = (++mSaveRot1) % 10;
+ }
+ break;
default:
mPc->printf("Invalid key.\r\n");
}
@@ -234,24 +241,24 @@
}
mPc->printf("\r\n\r\n");
mPc->printf("===============================================\r\n");
- mPc->printf("= Settings (ESC to return to main menu) =\r\n", mFwVersion);
+ mPc->printf("= Settings (ESC to return to main menu) =\r\n");
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("= 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",
+ mPc->printf("= Setting [Mod Key]: curr value, save value =\r\n");
+ 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 ");
+ mPc->printf("= WB Mode [2]: %s, %s =\r\n",
+ mBbio->isTx() ? "TX" : "RX",
+ mSaveIsTx ? "TX" : "RX");
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",
+ mPc->printf("= Rotary 1 hold setting [3]: %05.1fs, %05.1fs =\r\n",
HoldTimeSetting::rotVal2Sec(mBbio->rotarySwitch1()),
HoldTimeSetting::rotVal2Sec(mSaveRot1));
mPc->printf("= Rotary 2 currently does not apply for RX =\r\n");
--- a/xDotBridge/src/main.cpp Tue Nov 28 14:31:54 2017 -0700
+++ b/xDotBridge/src/main.cpp Wed Nov 29 20:51:33 2017 +0000
@@ -18,7 +18,7 @@
#define RX_SEQ_LOG 1
-const float BridgeVersion = 1.96; // Bumped 2017/11/TODO
+const float BridgeVersion = 1.03; // Bumped 2017/11/29
// 232 Pins
const PinName SER_TERM_TX = UART_TX;
@@ -242,9 +242,8 @@
// Serial Terminal
if (uartRxFlag) {
- pc.printf("Got RX Int\r\n");
uart1RxIntIn.disable_irq();
-// pc.printf("Got uart flag!!!\r\n");
+ prevCCNormallyOpen = bbio->isCCNO();
uartRxFlag = false;
outPc = new BufferedSerial(SER_TERM_TX, SER_TERM_RX);
outPc->baud(TERM_BAUD);
@@ -261,7 +260,6 @@
bool quit = false;
while(!quit && (time(NULL) < (termLastAction + TERM_TIMEOUT))) {
if (outPc->readable()) {
-// pc.printf("Got %d\r\n", outPc->getc());
quit = serialTermMgr.input();
termLastAction = time(NULL);
}
@@ -272,6 +270,19 @@
else {
outPc->printf("Terminal timeout resuming operation <press any key to reactivate>...\r\n");
}
+ // Update any configuration in case switches have been resampled or
+ // changed via settings
+ if (prevCCNormallyOpen != bbio->isCCNO()) { // Only activate the coil if the setting changed
+ bbio->regCCInInt(ccInIntObj);
+ bbio->relayNormal();
+ }
+ if (bbio->isTx()) {
+ protocol->setTx(true);
+ }
+ else { // RX
+ protocol->setTx(false);
+ }
+
wait(0.01); // Wait for end message to be shifted out
serialTermMgr.regSerial(NULL);
delete outPc;
