Fork to see if I can get working

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

Fork of xDotBridge_update_test20180823 by Matt Briggs

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SerialTermMgr.h Source File

SerialTermMgr.h

00001 /*
00002  * SerialTermMgr.h
00003  *
00004  *  Created on: May 8, 2017
00005  *      Author: mbriggs
00006  */
00007 
00008 #ifndef XDOTBRIDGE_INC_SERIALTERMMGR_H_
00009 #define XDOTBRIDGE_INC_SERIALTERMMGR_H_
00010 
00011 #include "mbed.h"
00012 #include "BufferedSerial.h"
00013 #include "WinbondSPIFlash.h"
00014 #include "BaseboardIO.h"
00015 
00016 const uint32_t TERM_BAUD = 115200;
00017 const uint8_t TERM_TIMEOUT = 30; // In seconds
00018 
00019 const float XMODEM_TIMEOUT = 10.0;
00020 const unsigned char MAX_TIMEOUTS = 6; // multiple by TIMEOUT above.  60 total seconds
00021 const uint16_t FLASH_BIN_OFFSET = 256; // Skip first flash page
00022 const uint16_t XMODEM_PACKET_SIZE = 128;
00023 const char NEW_CODE [] = "NEWCODE0";
00024 const char END0LINE [] = "END0LINE";
00025 const char VORTEX_UPDATE_KEY [] = "V0RT3XUPDATE";
00026 
00027 enum ScreenId {
00028     mainScreenId,
00029     genInfoScreenId,
00030     settingsScreenId,
00031     statsScreenId,
00032     errorLogScreenId,
00033     liveLogScreenId,
00034     enterSerialBridgeScreenId,
00035     enterProgModeScreenId
00036 };
00037 
00038 
00039 class SerialTermMgr
00040 {
00041 private:
00042     ScreenId mCurrScreen; // Current selection
00043     float mFwVersion;
00044     BaseboardIO *mBbio; // Handle for reading states
00045     BufferedSerial *mPc;
00046     WinbondSPIFlash *mFlash;
00047 
00048     // Hold for seeding new values
00049     bool mSaveIsCCNO;
00050     bool mSaveIsTx;
00051     uint8_t mSaveRot1;
00052 
00053     bool inputMainPage(char in);
00054     void printMainScreen();
00055     void inputGenInfo (char in);
00056     void printGenInfo();
00057     void inputSettings (char in);
00058     void printSettings();
00059     void seedSaveSettings();
00060     void applySaveSettings();
00061     void inputEnterProgMode (char in);
00062     void printEnterProgMode();
00063     bool xmodem2Flash();
00064     void writeBootloaderCtrlPage(uint32_t nBytes);
00065 public:
00066     SerialTermMgr(BaseboardIO *bbio, WinbondSPIFlash *flash, float fwVersion);
00067     void regSerial (BufferedSerial *pc) {
00068         mPc = pc;
00069     }
00070     ScreenId getCurrentScreenId() {
00071         return mCurrScreen;
00072     }
00073     void printScreen();
00074     bool input();
00075 };
00076 
00077 #endif /* XDOTBRIDGE_INC_SERIALTERMMGR_H_ */