Fork to see if I can get working
Dependencies: BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated
Fork of xDotBridge_update_test20180823 by
Revision 63:e1efbe3402d9, committed 2017-03-14
- Comitter:
- Matt Briggs
- Date:
- Tue Mar 14 09:54:04 2017 -0600
- Parent:
- 62:9751a8504c82
- Child:
- 64:46c8819c07cc
- Commit message:
- Quick refactor of logging
Changed in this revision
--- a/xDotBridge/inc/CommProtocolPeerBrute.h Tue Mar 14 08:32:55 2017 -0600
+++ b/xDotBridge/inc/CommProtocolPeerBrute.h Tue Mar 14 09:54:04 2017 -0600
@@ -207,6 +207,7 @@
// TODO maybe this should be private
CmdResult configForPairingNetwork();
+ void printDotConfig();
private:
NvmProtocolObj mMemObj;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xDotBridge/inc/MyLog.h Tue Mar 14 09:54:04 2017 -0600
@@ -0,0 +1,104 @@
+#ifndef MYLOG_H
+#define MYLOG_H
+
+#include "MTSLog.h"
+
+//inline const char* className(const std::string& prettyFunction)
+//{
+// size_t colons = prettyFunction.find_last_of("::");
+// if (colons == std::string::npos)
+// return "";
+// size_t begin = prettyFunction.substr(0,colons).rfind(" ") + 1;
+// size_t end = colons - begin;
+//
+// return prettyFunction.substr(begin,end).c_str();
+//}
+//
+//#define __CLASSNAME__ className(__PRETTY_FUNCTION__)
+
+
+#ifdef MTS_DEBUG
+#define logFatal(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__)
+#define logError(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__)
+#define logWarning(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__)
+#define logInfo(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::INFO_LABEL, ##__VA_ARGS__)
+#define logDebug(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__)
+#define logTrace(format, ...) \
+ mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__)
+#else
+#define myLogFatal(format, ...) \
+ MyLog::printMessage(MyLog::FATAL_LEVEL, "[%s] " format "\r\n", MyLog::FATAL_LABEL, ##__VA_ARGS__)
+#define myLogError(format, ...) \
+ MyLog::printMessage(MyLog::ERROR_LEVEL, "[%s] " format "\r\n", MyLog::ERROR_LABEL, ##__VA_ARGS__)
+#define myLogWarning(format, ...) \
+ MyLog::printMessage(MyLog::WARNING_LEVEL, "[%s] " format "\r\n", MyLog::WARNING_LABEL, ##__VA_ARGS__)
+#define myLogInfo(format, ...) \
+ MyLog::printMessage(MyLog::INFO_LEVEL, "[%s] " format "\r\n", MyLog::INFO_LABEL, ##__VA_ARGS__)
+#define myLogDebug(format, ...) \
+ MyLog::printMessage(MyLog::DEBUG_LEVEL, "[%s] " format "\r\n", MyLog::DEBUG_LABEL, ##__VA_ARGS__)
+#define myLogTrace(format, ...) \
+ MyLog::printMessage(MyLog::TRACE_LEVEL, "[%s] " format "\r\n", MyLog::TRACE_LABEL, ##__VA_ARGS__)
+#endif
+
+class MyLog
+{
+public:
+
+ /** Enum of log levels.
+ */
+ enum logLevel {
+ NONE_LEVEL = 0,
+ FATAL_LEVEL = 1,
+ ERROR_LEVEL = 2,
+ WARNING_LEVEL = 3,
+ INFO_LEVEL = 4,
+ DEBUG_LEVEL = 5,
+ TRACE_LEVEL = 6
+ };
+
+ /** Print log message.
+ */
+ static void printMessage(int level, const char* format, ...);
+
+ /** Determine if the given level is currently printable.
+ */
+ static bool printable(int level);
+
+ /** Set log level
+ * Messages with lower priority than the current level will not be printed.
+ * If the level is set to NONE, no messages will print.
+ */
+ static void setLogLevel(int level);
+
+ /** Get the current log level.
+ */
+ static int getLogLevel();
+
+ /** Get string representation of the current log level.
+ */
+ static const char* getLogLevelString();
+
+ static const char* NONE_LABEL;
+ static const char* FATAL_LABEL;
+ static const char* ERROR_LABEL;
+ static const char* WARNING_LABEL;
+ static const char* INFO_LABEL;
+ static const char* DEBUG_LABEL;
+ static const char* TRACE_LABEL;
+
+private:
+
+ /** Constructor
+ */
+ MyLog();
+
+ static int currentLevel;
+
+};
+
+#endif
--- a/xDotBridge/inc/RadioEvent.h Tue Mar 14 08:32:55 2017 -0600
+++ b/xDotBridge/inc/RadioEvent.h Tue Mar 14 09:54:04 2017 -0600
@@ -68,7 +68,7 @@
// print RX data as string
std::string rx((const char*)info->RxBuffer, info->RxBufferSize);
- printf("Rx data: %s\r\n", rx.c_str());
+ mtsLogInfo("Rx data: %s\r\n", rx.c_str());
}
}
}
--- a/xDotBridge/inc/dot_util.h Tue Mar 14 08:32:55 2017 -0600 +++ b/xDotBridge/inc/dot_util.h Tue Mar 14 09:54:04 2017 -0600 @@ -1,11 +1,12 @@ #ifndef __DOT_UTIL_H__ #define __DOT_UTIL_H__ +#include <inc/MyLog.h> #include "../config.h" #include "mbed.h" #include "mDot.h" +#include "MTSText.h" #include "MTSLog.h" -#include "MTSText.h" //#include "ISL29011.h" extern mDot* dot; @@ -38,4 +39,32 @@ void send_data(std::vector<uint8_t> data); +#ifdef MTS_DEBUG +#define logFatal(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) +#define logError(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) +#define logWarning(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) +#define logInfo(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) +#define logDebug(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) +#define logTrace(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "%s:%s:%d| [%s] " format "\r\n", __CLASSNAME__, __func__, __LINE__, mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) +#else +#define mtsLogFatal(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::FATAL_LEVEL, "[%s] " format "\r\n", mts::MTSLog::FATAL_LABEL, ##__VA_ARGS__) +#define mtsLogError(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::ERROR_LEVEL, "[%s] " format "\r\n", mts::MTSLog::ERROR_LABEL, ##__VA_ARGS__) +#define mtsLogWarning(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::WARNING_LEVEL, "[%s] " format "\r\n", mts::MTSLog::WARNING_LABEL, ##__VA_ARGS__) +#define mtsLogInfo(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::INFO_LEVEL, "[%s] " format "\r\n", mts::MTSLog::INFO_LABEL, ##__VA_ARGS__) +#define mtsLogDebug(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::DEBUG_LEVEL, "[%s] " format "\r\n", mts::MTSLog::DEBUG_LABEL, ##__VA_ARGS__) +#define mtsLogTrace(format, ...) \ + mts::MTSLog::printMessage(mts::MTSLog::TRACE_LEVEL, "[%s] " format "\r\n", mts::MTSLog::TRACE_LABEL, ##__VA_ARGS__) #endif + +#endif
--- a/xDotBridge/src/BaseboardIO.cpp Tue Mar 14 08:32:55 2017 -0600
+++ b/xDotBridge/src/BaseboardIO.cpp Tue Mar 14 09:54:04 2017 -0600
@@ -6,9 +6,9 @@
*/
#include "BaseboardIO.h"
-#include "MTSLog.h"
#include "dot_util.h" // FIXME just need the reference to dot somehow
#include "xdot_low_power.h"
+#include "MyLog.h"
// Original
//const float COIL_ON_TIME = 0.030; // 30 ms
@@ -64,37 +64,37 @@
uint8_t val;
// Setup port expanders
if (readInfoFromNVM() == cmdSuccess && !overwriteNvm) {
- logInfo("Stored ROM0 Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
- mNvmObj.mPortExpanderROM0[7],
- mNvmObj.mPortExpanderROM0[6],
- mNvmObj.mPortExpanderROM0[5],
- mNvmObj.mPortExpanderROM0[4],
- mNvmObj.mPortExpanderROM0[3],
- mNvmObj.mPortExpanderROM0[2],
- mNvmObj.mPortExpanderROM0[1],
- mNvmObj.mPortExpanderROM0[0]);
- logInfo("Stored ROM1 Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
- mNvmObj.mPortExpanderROM1[7],
- mNvmObj.mPortExpanderROM1[6],
- mNvmObj.mPortExpanderROM1[5],
- mNvmObj.mPortExpanderROM1[4],
- mNvmObj.mPortExpanderROM1[3],
- mNvmObj.mPortExpanderROM1[2],
- mNvmObj.mPortExpanderROM1[1],
- mNvmObj.mPortExpanderROM1[0]);
- logInfo("BaseboardIO parameters successfully loaded from NVM");
+ myLogInfo("Stored ROM0 Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
+ mNvmObj.mPortExpanderROM0[7],
+ mNvmObj.mPortExpanderROM0[6],
+ mNvmObj.mPortExpanderROM0[5],
+ mNvmObj.mPortExpanderROM0[4],
+ mNvmObj.mPortExpanderROM0[3],
+ mNvmObj.mPortExpanderROM0[2],
+ mNvmObj.mPortExpanderROM0[1],
+ mNvmObj.mPortExpanderROM0[0]);
+ myLogInfo("Stored ROM1 Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
+ mNvmObj.mPortExpanderROM1[7],
+ mNvmObj.mPortExpanderROM1[6],
+ mNvmObj.mPortExpanderROM1[5],
+ mNvmObj.mPortExpanderROM1[4],
+ mNvmObj.mPortExpanderROM1[3],
+ mNvmObj.mPortExpanderROM1[2],
+ mNvmObj.mPortExpanderROM1[1],
+ mNvmObj.mPortExpanderROM1[0]);
+ myLogInfo("BaseboardIO parameters successfully loaded from NVM");
// Check that the ROM Addresses are correct and valid
uint8_t portEx0Ctrl, portEx1Ctrl;
mPortEx0 = new DS2408(&mOWMaster, mNvmObj.mPortExpanderROM0);
mPortEx0->registerReadReliable(0x8D, portEx0Ctrl);
// Gets 0xFF if it is not the correct address
- logInfo("PortEx0 Control register reads %02X", portEx0Ctrl);
+ myLogInfo("PortEx0 Control register reads %02X", portEx0Ctrl);
mPortEx1 = new DS2408(&mOWMaster, mNvmObj.mPortExpanderROM1);
mPortEx1->registerReadReliable(0x8D, portEx1Ctrl);
- logInfo("PortEx1 Control register reads %02X", portEx1Ctrl);
+ myLogInfo("PortEx1 Control register reads %02X", portEx1Ctrl);
if ((portEx0Ctrl == 0xFF) || (portEx1Ctrl == 0xFF)) {
- logError("Stored port expander ROM check failed. Set EEPROM to defaults.");
+ myLogError("Stored port expander ROM check failed. Set EEPROM to defaults.");
}
else {
storedROMsGood = true;
@@ -106,37 +106,37 @@
// Find ROM address and test which one is which. Requires user
// switches to be in known state.
if (identifyPortExpanders() != cmdSuccess) {
- logError("Error identifying port expanders");
+ myLogError("Error identifying port expanders");
return cmdError;
}
if (writeInfoToNVM() == cmdSuccess) {
- logInfo("Baseboard config saved to NVM");
+ myLogInfo("Baseboard config saved to NVM");
}
else {
- logError("Baseboard config failed to save to NVM");
+ myLogError("Baseboard config failed to save to NVM");
}
mPortEx0 = new DS2408(&mOWMaster, mNvmObj.mPortExpanderROM0);
mPortEx0->registerReadReliable(0x8D, val);
// Gets 0xFF if it is not the correct address
- logInfo("PortEx0 Control register reads %02X", val);
+ myLogInfo("PortEx0 Control register reads %02X", val);
mPortEx1 = new DS2408(&mOWMaster, mNvmObj.mPortExpanderROM1);
mPortEx1->registerReadReliable(0x8D, val);
- logInfo("PortEx1 Control register reads %02X", val);
+ myLogInfo("PortEx1 Control register reads %02X", val);
}
if (sampleUserSwitches() != cmdSuccess) {
- logError("Error sampling user switches");
+ myLogError("Error sampling user switches");
return cmdError;
}
// Put relay in known state
if (relayNormal() != cmdSuccess) {
- logError("Error setting relay during init");
+ myLogError("Error setting relay during init");
return cmdError;
}
ledOff();
- logInfo("Baseboard IO initialization successful");
+ myLogInfo("Baseboard IO initialization successful");
return cmdSuccess;
}
@@ -180,12 +180,12 @@
wait(0.001); // Wait 1 ms
if (mPortEx0->pioLogicReliableRead(mPortExpanderVal0) != cmdSuccess) {
disableSwitchedIO();
- logError("Error reading port expander 0.");
+ myLogError("Error reading port expander 0.");
return cmdError;
}
if (mPortEx1->pioLogicReliableRead(mPortExpanderVal1) != cmdSuccess) {
disableSwitchedIO();
- logError("Error reading port expander 1.");
+ myLogError("Error reading port expander 1.");
return cmdError;
}
disableSwitchedIO();
@@ -296,7 +296,7 @@
{
uint8_t val;
if (mPortEx0 == NULL) {
- logError("Error enabling 232. Port expanders not initialized.");
+ myLogError("Error enabling 232. Port expanders not initialized.");
return cmdError;
}
mPortEx0->pioLogicReliableRead(val);
@@ -310,7 +310,7 @@
}
if (mPortEx0->pioLogicReliableWrite(val | ~pEx0OutMask) != cmdSuccess) {
- logError("Error enabling 232");
+ myLogError("Error enabling 232");
return cmdError;
}
return cmdSuccess;
@@ -319,7 +319,7 @@
{
uint8_t val;
if (mPortEx0 == NULL) {
- logError("Error enabling 232 TX. Port expanders not initialized.");
+ myLogError("Error enabling 232 TX. Port expanders not initialized.");
return cmdError;
}
mPortEx0->pioLogicReliableRead(val);
@@ -333,7 +333,7 @@
}
if (mPortEx0->pioLogicReliableWrite(val | ~pEx0OutMask) != cmdSuccess) {
- logError("Error enabling 232 TX");
+ myLogError("Error enabling 232 TX");
return cmdError;
}
return cmdSuccess;
@@ -353,11 +353,11 @@
mNvmObj.fromBytes(data, BASEBOARDIO_NVM_SIZE);
delete [] data;
if (!mNvmObj.validBaseboardIOFlag()) {
- logWarning("Invalid BaseboardIO Flag. Using default values.");
+ myLogWarning("Invalid BaseboardIO Flag. Using default values.");
return cmdError;
}
else if (!mNvmObj.validBaseboardIORev()) {
- logWarning("Invalid BaseboardIO Rev. Using default values.");
+ myLogWarning("Invalid BaseboardIO Rev. Using default values.");
return cmdError;
}
else {
@@ -381,7 +381,7 @@
int i;
// Search Bus
- logInfo("Starting OneWire Search");
+ myLogInfo("Starting OneWire Search");
enableSwitchedIO();
for (int j=0;j<10;j++) { // Try 5 times
i=0;
@@ -394,7 +394,7 @@
if (result != 1) {
break;
}
- logInfo("ROM Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
+ myLogInfo("ROM Addr: %02x:%02x:%02x:%02x:%02x:%02x:%02x%02x found.",
addr[7],addr[6],addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]);
if (i == 0) {
std::memcpy(mNvmObj.mPortExpanderROM0, addr, sizeof(mNvmObj.mPortExpanderROM0));
@@ -410,9 +410,9 @@
}
}
- logInfo("Finished OneWire Search");
+ myLogInfo("Finished OneWire Search");
if (i != 2) {
- logError("Incorrect Number of OneWire devices (Got %d. Expected 2) OneWire port expanders found.", i);
+ myLogError("Incorrect Number of OneWire devices (Got %d. Expected 2) OneWire port expanders found.", i);
return cmdError;
}
@@ -426,14 +426,14 @@
enableSwitchedIO();
if (mPortEx0->pioLogicReliableRead(mPortExpanderVal0) != cmdSuccess) {
- logError("Error during port expander ID. Read failed.");
+ myLogError("Error during port expander ID. Read failed.");
disableSwitchedIO();
delete mPortEx0;
delete mPortEx1;
return cmdError;
}
if (mPortEx1->pioLogicReliableRead(mPortExpanderVal1) != cmdSuccess) {
- logError("Error during port expander ID. Read failed.");
+ myLogError("Error during port expander ID. Read failed.");
disableSwitchedIO();
delete mPortEx0;
delete mPortEx1;
@@ -442,16 +442,16 @@
disableSwitchedIO();
if ((mPortExpanderVal0 == 0xFF) and (mPortExpanderVal1 == 0xF0)) { // Luckily got it right
- logInfo("ROMS Swap Not Needed.");
+ myLogInfo("ROMS Swap Not Needed.");
}
else if ((mPortExpanderVal0 == 0xF0) and (mPortExpanderVal1 == 0xFF)) { // Just need to swap
std::memcpy(addr, mNvmObj.mPortExpanderROM0, sizeof(addr)); // Store Orig ROM0 -> addr
std::memcpy(mNvmObj.mPortExpanderROM0, mNvmObj.mPortExpanderROM1, sizeof(mNvmObj.mPortExpanderROM0)); // Store Orig ROM1 -> ROM0
std::memcpy(mNvmObj.mPortExpanderROM1, addr, sizeof(mNvmObj.mPortExpanderROM1)); // Store Orig ROM0 (addr) -> ROM1
- logInfo("Swapped ROMS.");
+ myLogInfo("Swapped ROMS.");
}
else {
- logError("Error during port expander ID. Port expanders not in "
+ myLogError("Error during port expander ID. Port expanders not in "
"expected states (0xFF and 0xF0). Check user switches. Got %02X and %02X",
mPortExpanderVal0, mPortExpanderVal1);
delete mPortEx0;
@@ -476,7 +476,7 @@
val |= pEx1RlyA; // Turn Relay A off
val |= pEx1RlyB; // Turn Relay B off
mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask); // Write a non assert value just to try to overcome an error
- logError ("Error turning on coil. Turning both coils off.");
+ myLogError ("Error turning on coil. Turning both coils off.");
return cmdError;
}
@@ -487,7 +487,7 @@
if (mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask) != cmdSuccess) {
mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask);
- logError ("Error turning off coils. Trying again.");
+ myLogError ("Error turning off coils. Trying again.");
return cmdError;
}
@@ -504,7 +504,7 @@
val |= pEx1RlyA; // Turn Relay A off
val |= pEx1RlyB; // Turn Relay B off
mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask); // Write a non assert value just to try to overcome an error
- logError ("Error turning on coil. Turning both coils off.");
+ myLogError ("Error turning on coil. Turning both coils off.");
return cmdError;
}
@@ -515,7 +515,7 @@
if (mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask) != cmdSuccess) {
mPortEx1->pioLogicReliableWrite(val | ~pEx1OutMask);
- logError ("Error turning off coils. Trying again.");
+ myLogError ("Error turning off coils. Trying again.");
return cmdError;
}
--- a/xDotBridge/src/CommProtocolPeerBrute.cpp Tue Mar 14 08:32:55 2017 -0600
+++ b/xDotBridge/src/CommProtocolPeerBrute.cpp Tue Mar 14 09:54:04 2017 -0600
@@ -6,8 +6,8 @@
*/
#include "CommProtocolPeerBrute.h"
-#include "MTSLog.h"
#include "dot_util.h"
+#include "MyLog.h"
// wireless bridge protocol
const uint8_t TX_PWR = 20; // 20 dBm
@@ -18,7 +18,7 @@
CommProtocolPeerBrute::CommProtocolPeerBrute()
{
- logInfo("RX_SLEEP_TIME %f, timeOnAir %lu, nTimesToTx %lu", RX_SLEEP_TIME, TX_TIME, nTimesToTx);
+ myLogDebug("RX_SLEEP_TIME %f, timeOnAir %lu, nTimesToTx %lu", RX_SLEEP_TIME, TX_TIME, nTimesToTx);
mIsTx = true; // default to TX
}
@@ -31,7 +31,7 @@
}
result = readInfoFromNVM();
if (result != cmdSuccess) {
- logInfo("Reverting to protocol defaults NVM Read failed");
+ myLogWarning("Reverting to protocol defaults NVM Read failed");
mMemObj.setDefaults();
}
configForSavedNetwork();
@@ -47,7 +47,7 @@
return cmdError;
}
-// logInfo("defaulting Dot configuration");
+// myLogInfo("defaulting Dot configuration");
// dot->resetConfig();
// Common Configuration
@@ -60,11 +60,11 @@
// TODO break out in a utility function
// update configuration if necessary
- logInfo("Setting up peer to peer configuration");
+ myLogDebug("Setting up peer to peer configuration");
if (dot->getJoinMode() != mDot::PEER_TO_PEER) {
- logInfo("changing network join mode to PEER_TO_PEER");
+ myLogDebug("changing network join mode to PEER_TO_PEER");
if (dot->setJoinMode(mDot::PEER_TO_PEER) != mDot::MDOT_OK) {
- logError("failed to set network join mode to PEER_TO_PEER");
+ myLogError("failed to set network join mode to PEER_TO_PEER");
}
}
uint8_t tx_power;
@@ -112,7 +112,7 @@
return cmdError;
}
-// logInfo("defaulting Dot configuration");
+// myLogInfo("defaulting Dot configuration");
// dot->resetConfig();
// Common Configuration
@@ -124,11 +124,11 @@
dot->setPreserveSession(false);
// TODO break out in a utility function
// update configuration if necessary
- logInfo("Setting up peer to peer configuration");
+ myLogDebug("Setting up peer to peer configuration");
if (dot->getJoinMode() != mDot::PEER_TO_PEER) {
- logInfo("changing network join mode to PEER_TO_PEER");
+ myLogDebug("changing network join mode to PEER_TO_PEER");
if (dot->setJoinMode(mDot::PEER_TO_PEER) != mDot::MDOT_OK) {
- logError("failed to set network join mode to PEER_TO_PEER");
+ myLogError("failed to set network join mode to PEER_TO_PEER");
}
}
@@ -186,44 +186,44 @@
// REPLACE WITH NETWORK ADDRESS
// result = genEncypKey(key, 8);
// if (result != cmdSuccess) {
-// logError("Error generating network ID.");
+// myLogError("Error generating network ID.");
// return cmdError;
// }
// if (dot->setNetworkId(key) != mDot::MDOT_OK) {
-// logError("Error setting network ID.");
+// myLogError("Error setting network ID.");
// return cmdError;
// }
result = genEncypKey(key, 4, false);
if (result != cmdSuccess) {
- logError("Error generating network address.");
+ myLogError("Error generating network address.");
return cmdError;
}
mMemObj.setNetworkAddr(key);
// if (dot->setNetworkAddress(key) != mDot::MDOT_OK) {
-// logError("Error setting network address.");
+// myLogError("Error setting network address.");
// return cmdError;
// }
result = genEncypKey(key, 16);
if (result != cmdSuccess) {
- logError("Error generating network encryption keys.");
+ myLogError("Error generating network encryption keys.");
return cmdError;
}
mMemObj.setNetworkSessionKey(key);
// if (dot->setNetworkSessionKey(key) != mDot::MDOT_OK) {
-// logError("Error setting network session key.");
+// myLogError("Error setting network session key.");
// return cmdError;
// }
result = genEncypKey(key, 16);
if (result != cmdSuccess) {
- logError("Error generating data session encryption keys.");
+ myLogError("Error generating data session encryption keys.");
return cmdError;
}
mMemObj.setDataSessionKey(key);
// if (dot->setDataSessionKey(key) != mDot::MDOT_OK) {
-// logError("Error setting data session key.");
+// myLogError("Error setting data session key.");
// return cmdError;
// }
@@ -240,11 +240,11 @@
if (!dot->getNetworkJoinStatus()) {
join_network();
}
- logInfo("Starting TX. Time: %lu", us_ticker_read());
+ myLogDebug("Starting TX. Time: %lu", us_ticker_read());
for(uint8_t i=0;i<nTimesToTx;++i) {
dot->send(msg);
}
- logInfo("Finished TX. Time: %lu", us_ticker_read());
+ myLogDebug("Finished TX. Time: %lu", us_ticker_read());
return cmdError;
}
@@ -329,32 +329,32 @@
// Flag
msg->push_back(0xFD);
msg->push_back(0x02);
- logInfo("flag msg size %d", msg->size());
+ myLogDebug("flag msg size %d", msg->size());
// EUI
std::vector<uint8_t> *eui = new std::vector<uint8_t>(dot->getDeviceId());
msg->insert(msg->end(),eui->begin(), eui->end());
delete eui;
- logInfo("eui msg size %d", msg->size());
+ myLogDebug("eui msg size %d", msg->size());
// Reserved for Freq
for(uint8_t i=0;i<4;i++) {
msg->push_back(0x00);
}
- logInfo("freq msg size %d", msg->size());
+ myLogDebug("freq msg size %d", msg->size());
// Network Address
std::vector<uint8_t> *networkAddr = new std::vector<uint8_t>;
mMemObj.getNetworkAddr(*networkAddr);
msg->insert(msg->end(),networkAddr->begin(), networkAddr->end());
delete networkAddr;
- logInfo("netAddr msg size %d", msg->size());
+ myLogDebug("netAddr msg size %d", msg->size());
// Network session key
std::vector<uint8_t> *networkSessionKey = new std::vector<uint8_t>;
mMemObj.getNetworkSessionKey(*networkSessionKey);
msg->insert(msg->end(),networkSessionKey->begin(), networkSessionKey->end());
delete networkSessionKey;
- logInfo("netSessionKey msg size %d", msg->size());
+ myLogDebug("netSessionKey msg size %d", msg->size());
// Data session key
std::vector<uint8_t> *dataSessionKey = new std::vector<uint8_t>;
@@ -362,7 +362,7 @@
msg->insert(msg->end(),dataSessionKey->begin(), dataSessionKey->end());
delete dataSessionKey;
- logInfo("msg size %d", msg->size());
+ myLogDebug("msg size %d", msg->size());
// Only send once since requester should be listening always
sendResult = mDot::MDOT_OK == dot->send(*msg);
delete msg;
@@ -389,7 +389,7 @@
std::vector<uint8_t> acceptMsg;
dot->recv(acceptMsg);
if (acceptMsg[0] != 0xFD || acceptMsg[1] != 0x02) {
- logError("Invalid accept message flag.");
+ myLogError("Invalid accept message flag.");
return cmdError;
}
@@ -436,12 +436,12 @@
mMemObj.fromBytes(data, PROTOCOL_NVM_SIZE);
delete [] data;
if (!mMemObj.validProtocolFlag()) {
- logWarning("Invalid Protocol Flag. Using default values.");
+ myLogWarning("Invalid Protocol Flag. Using default values.");
mMemObj.setDefaults();
return cmdError;
}
else if (!mMemObj.validProtocolRev()) {
- logWarning("Invalid Protocol Rev. Using default values.");
+ myLogWarning("Invalid Protocol Rev. Using default values.");
mMemObj.setDefaults();
return cmdError;
}
@@ -484,6 +484,47 @@
return cmdSuccess;
}
+void CommProtocolPeerBrute::printDotConfig()
+{
+ // display configuration and library version information
+ myLogInfo("=====================");
+ myLogInfo("general configuration");
+ myLogInfo("=====================");
+ myLogInfo("version ------------------ %s", dot->getId().c_str());
+ myLogInfo("device ID/EUI ------------ %s", mts::Text::bin2hexString(dot->getDeviceId()).c_str());
+ myLogInfo("frequency band ----------- %s", mDot::FrequencyBandStr(dot->getFrequencyBand()).c_str());
+ if (dot->getFrequencySubBand() != mDot::FB_EU868) {
+ myLogInfo("frequency sub band ------- %u", dot->getFrequencySubBand());
+ }
+ myLogInfo("public network ----------- %s", dot->getPublicNetwork() ? "on" : "off");
+ myLogInfo("=========================");
+ myLogInfo("credentials configuration");
+ myLogInfo("=========================");
+ myLogInfo("device class ------------- %s", dot->getClass().c_str());
+ myLogInfo("network join mode -------- %s", mDot::JoinModeStr(dot->getJoinMode()).c_str());
+ if (dot->getJoinMode() == mDot::MANUAL || dot->getJoinMode() == mDot::PEER_TO_PEER) {
+ myLogInfo("network address ---------- %s", mts::Text::bin2hexString(dot->getNetworkAddress()).c_str());
+ myLogInfo("network session key------- %s", mts::Text::bin2hexString(dot->getNetworkSessionKey()).c_str());
+ myLogInfo("data session key---------- %s", mts::Text::bin2hexString(dot->getDataSessionKey()).c_str());
+ } else {
+ myLogInfo("network name ------------- %s", dot->getNetworkName().c_str());
+ myLogInfo("network phrase ----------- %s", dot->getNetworkPassphrase().c_str());
+ myLogInfo("network EUI -------------- %s", mts::Text::bin2hexString(dot->getNetworkId()).c_str());
+ myLogInfo("network KEY -------------- %s", mts::Text::bin2hexString(dot->getNetworkKey()).c_str());
+ }
+ myLogInfo("========================");
+ myLogInfo("communication parameters");
+ myLogInfo("========================");
+ if (dot->getJoinMode() == mDot::PEER_TO_PEER) {
+ myLogInfo("TX frequency ------------- %lu", dot->getTxFrequency());
+ } else {
+ myLogInfo("acks --------------------- %s, %u attempts", dot->getAck() > 0 ? "on" : "off", dot->getAck());
+ }
+ myLogInfo("TX datarate -------------- %s", mDot::DataRateStr(dot->getTxDataRate()).c_str());
+ myLogInfo("TX power ----------------- %lu dBm", dot->getTxPower());
+ myLogInfo("atnenna gain ------------- %u dBm", dot->getAntennaGain());
+}
+
// NvmProtocolObj
NvmProtocolObj::NvmProtocolObj()
{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xDotBridge/src/MyLog.cpp Tue Mar 14 09:54:04 2017 -0600
@@ -0,0 +1,72 @@
+/*
+ * MyLog.cpp
+ *
+ * Heavily borrowed from MTSLog
+ *
+ * Created on: Mar 14, 2017
+ * Author: mbriggs
+ */
+
+#include "MyLog.h"
+
+#include "mbed.h"
+#include <stdarg.h>
+
+using namespace mts;
+
+int MyLog::currentLevel = MyLog::WARNING_LEVEL;
+
+const char* MyLog::NONE_LABEL = "NONE";
+const char* MyLog::FATAL_LABEL = "FATAL";
+const char* MyLog::ERROR_LABEL = "ERROR";
+const char* MyLog::WARNING_LABEL = "WARNING";
+const char* MyLog::INFO_LABEL = "INFO";
+const char* MyLog::DEBUG_LABEL = "DEBUG";
+const char* MyLog::TRACE_LABEL = "TRACE";
+
+void MyLog::printMessage(int level, const char* format, ...) {
+ if (printable(level)) {
+ va_list argptr;
+ va_start(argptr, format);
+ vprintf(format, argptr);
+ va_end(argptr);
+ }
+}
+
+bool MyLog::printable(int level) {
+ return level <= currentLevel;
+}
+
+void MyLog::setLogLevel(int level) {
+ if (level < NONE_LEVEL)
+ currentLevel = NONE_LEVEL;
+ else if (level > TRACE_LEVEL)
+ currentLevel = TRACE_LEVEL;
+ else
+ currentLevel = level;
+}
+
+int MyLog::getLogLevel() {
+ return currentLevel;
+}
+
+const char* MyLog::getLogLevelString() {
+ switch (currentLevel) {
+ case NONE_LEVEL:
+ return NONE_LABEL;
+ case FATAL_LEVEL:
+ return FATAL_LABEL;
+ case ERROR_LEVEL:
+ return ERROR_LABEL;
+ case WARNING_LEVEL:
+ return WARNING_LABEL;
+ case INFO_LEVEL:
+ return INFO_LABEL;
+ case DEBUG_LEVEL:
+ return DEBUG_LABEL;
+ case TRACE_LEVEL:
+ return TRACE_LABEL;
+ default:
+ return "unknown";
+ }
+}
--- a/xDotBridge/src/main.cpp Tue Mar 14 08:32:55 2017 -0600
+++ b/xDotBridge/src/main.cpp Tue Mar 14 09:54:04 2017 -0600
@@ -7,6 +7,7 @@
#include "UserInterface.h"
//#include <xdot_low_power.h>
#include "mDot.h"
+#include "MyLog.h"
#include "BaseboardIO.h"
#include "CommProtocolPeerBrute.h"
@@ -43,27 +44,29 @@
RadioEvent events; // Custom event handler for automatically displaying RX data
mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
+ MyLog::setLogLevel(MyLog::INFO_LEVEL);
dot = mDot::getInstance();
// make sure library logging is turned on
- dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
+ dot->setLogLevel(mts::MTSLog::WARNING_LEVEL);
- logInfo("mbed-os library version: %d", MBED_LIBRARY_VERSION);
- logInfo("libxDot-mbed5 library ID: %s", dot->getId().c_str());
+ myLogInfo("mbed-os library version: %d", MBED_LIBRARY_VERSION);
+ myLogInfo("libxDot-mbed5 library ID: %s", dot->getId().c_str());
// attach the custom events handler
dot->setEvents(&events); // Little bonus event debug information
// Finish radio init
- pc.printf("= Protocol Init Starting =\r\n");
+ myLogInfo("= Protocol Init Starting =\r\n");
protocol->init();
if (result == cmdSuccess) {
- pc.printf("= Protocol Init Finished Successfully =\r\n");
+ myLogInfo("= Protocol Init Finished Successfully =\r\n");
}
else {
- pc.printf("= Protocol Init Finished with Error =\r\n");
+ myLogInfo("= Protocol Init Finished with Error =\r\n");
}
+ protocol->printDotConfig();
// save changes to configuration
// logInfo("saving configuration");
@@ -99,13 +102,13 @@
// display configuration
// display_config();
- pc.printf("= Baseboard Init Starting =\r\n");
+ myLogInfo("= Baseboard Init Starting =\r\n");
result = bbio->init();
if (result == cmdSuccess) {
- pc.printf("= Baseboard Init Finished Successfully =\r\n");
+ myLogInfo("= Baseboard Init Finished Successfully =\r\n");
}
else {
- pc.printf("= Baseboard Init Finished with Error =\r\n");
+ myLogInfo("= Baseboard Init Finished with Error =\r\n");
}
uint16_t txSeqNum=0;
@@ -155,15 +158,16 @@
protocol->sampleDLC();
protocol->configForPairingNetwork();
protocol->sendPairReq();
- logInfo("Sent pair request. Waiting %f secs for accept.", TX_ACCEPT_WAIT_TIME);
+ myLogInfo("Sent pair request. Waiting %f secs for accept.", TX_ACCEPT_WAIT_TIME);
result = protocol->waitForAccept(TX_ACCEPT_WAIT_TIME);
if (result == cmdSuccess) {
- logInfo("Got accept");
+ myLogInfo("Got accept");
}
else {
- logInfo("Did not receive accept");
+ myLogInfo("Did not receive accept");
}
protocol->configForSavedNetwork();
+ protocol->printDotConfig();
}
}
if (protocol->isRx()) {
@@ -171,31 +175,32 @@
protocol->sampleDLC();
protocol->configForPairingNetwork();
bbio->ledOn();
- logInfo("Waiting for pair request for %f seconds", RX_PAIR_WAIT_TIME);
+ myLogInfo("Waiting for pair request for %f seconds", RX_PAIR_WAIT_TIME);
result = protocol->waitForPairing(RX_PAIR_WAIT_TIME);
bbio->ledOff();
if (result == cmdSuccess) {
- logInfo("Got pair request and responded");
+ myLogInfo("Got pair request and responded");
}
else if (result == cmdTimeout) {
- logInfo("Did not receive request");
+ myLogInfo("Did not receive request");
}
else {
- logInfo("Unknown pair error");
+ myLogInfo("Unknown pair error");
}
protocol->configForSavedNetwork();
+ protocol->printDotConfig();
}
else if (pairBtnState == pairBtnLongPress) {
- logInfo("Clearing pair values and generating new ones.");
+ myLogInfo("Clearing pair values and generating new ones.");
protocol->clearPair();
- // Maybe add Nvm save commands here
+ protocol->printDotConfig();
}
}
}
// Alert code
if (protocol->isTx()) {
- logInfo("Loop #%d. CCFlag %d, CCAlertState %d, TamperFlag %d, PairBtnFlag %d",
+ myLogInfo("Loop #%d. CCFlag %d, CCAlertState %d, TamperFlag %d, PairBtnFlag %d",
loopCnt, ccIntFlag, bbio->isCCInAlert(), tamperIntFlag, pairBtnIntFlag);
// TODO add tamper
if (ccIntFlag || // If contact closure in
@@ -210,7 +215,7 @@
data.push_back((txSeqNum >> 8) & 0xFF);
data.push_back(txSeqNum & 0xFF);
std::string dataStr(data.begin(), data.end());
- logInfo("Sent msg num: %d, payload: %s", txSeqNum, dataStr.c_str());
+ myLogInfo("Sent msg num: %d, payload: %s", txSeqNum, dataStr.c_str());
protocol->send(data);
txSeqNum++;
wait(0.5); // Leave the LED on so a person can see it.
@@ -232,12 +237,12 @@
if (protocol->isRx()) {
bool msgPending;
protocol->listen(msgPending);
- logInfo("Loop Cnt %d. Listening.", loopCnt);
+ myLogInfo("Loop Cnt %d. Listening.", loopCnt);
if (msgPending) {
data.clear();
protocol->recv(data);
std::string dataStr(data.begin(), data.end());
- logInfo("Got msg num: %d, payload: %s", rxSeqNum, dataStr.c_str());
+ myLogInfo("Got msg num: %d, payload: %s", rxSeqNum, dataStr.c_str());
bbio->relayAlert();
rxSeqNum++;
#if LED_FEEDBACK
@@ -245,20 +250,19 @@
#endif
// Hold time for alert
// TODO maybe use sleep instead of wait
- logInfo("Holding alert for %f secs", HoldTimeSetting::rotVal2Sec(bbio->rotarySwitch1()));
+ myLogInfo("Holding alert for %f secs", HoldTimeSetting::rotVal2Sec(bbio->rotarySwitch1()));
wait(HoldTimeSetting::rotVal2Sec(bbio->rotarySwitch1()));
bbio->ledOff();
bbio->relayNormal();
}
- logInfo("Sleeping. Time %d", us_ticker_read());
+ myLogInfo("Sleeping. Time %d", us_ticker_read());
protocol->sampleDLC();
bbio->prepareSleep();
dot->sleep(2, mDot::RTC_ALARM_OR_INTERRUPT, false); // Go to sleep until wake button
bbio->exitSleep();
}
- logInfo("\r\n================================");
-// wait(1.0); // May want to remove
+ myLogInfo("\r\n================================");
loopCnt++;
}
