Fork to see if I can get working

Dependencies:   BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated

Fork of xDotBridge_update_test20180823 by Matt Briggs

Files at this revision

API Documentation at this revision

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

xDotBridge/src/BaseboardIO.cpp Show annotated file Show diff for this revision Revisions of this file
xDotBridge/src/SerialTermMgr.cpp Show annotated file Show diff for this revision Revisions of this file
xDotBridge/src/main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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;