diff --git a/GpsTracker/Core.cpp b/GpsTracker/Core.cpp index f7f952d..185d65a 100644 --- a/GpsTracker/Core.cpp +++ b/GpsTracker/Core.cpp @@ -8,6 +8,8 @@ namespace core { uint16_t sleepTime = SLEEP_DEFAULT_TIME_SECONDS;; void main() { + VERBOSE("main"); + gps::powerOn(); SIM808_GPS_STATUS gpsStatus = gps::acquireCurrentPosition(GPS_DEFAULT_TOTAL_TIMEOUT_MS); SIM808ChargingStatus battery = hardware::sim808::device.getChargingState(); @@ -33,6 +35,8 @@ namespace core { } void setSleepTime(uint8_t velocity) { + sleepTime = SLEEP_DEFAULT_TIME_SECONDS; + for (uint8_t i = 0; i < flash::getArraySize(config::defaultSleepTimings); i++) { sleepTimings_t timing; flash::read(&config::defaultSleepTimings[i], timing); @@ -40,9 +44,9 @@ namespace core { if (velocity > timing.speed) continue; sleepTime = timing.seconds; - return; + break; } - sleepTime = SLEEP_DEFAULT_TIME_SECONDS; + VERBOSE_FORMAT("setSleepTime", "%d", sleepTime); } } \ No newline at end of file diff --git a/GpsTracker/Debug.cpp b/GpsTracker/Debug.cpp index 63eefb3..17e2481 100644 --- a/GpsTracker/Debug.cpp +++ b/GpsTracker/Debug.cpp @@ -2,6 +2,8 @@ #include "Flash.h" #include "Positions.h" +#define LOGGER_NAME "Debug" + #define MENU_ENTRY(name, text) const char MENU_##name[] PROGMEM = text const char FAKE_GPS_ENTRY[] PROGMEM = "1,1,20170924074842.000,49.454862,1.144537,71.900,67.99,172.6,1,,1.3,2.2,1.8,,11,7,,,37,,"; @@ -20,12 +22,14 @@ MENU_ENTRY(GPS_SET, "[l] Set last GPS position"); MENU_ENTRY(RTC_SET, "[T] Get RTC time"); MENU_ENTRY(RTC_GET, "[t] Set RTC time"); MENU_ENTRY(SD_WRITE_TEST, "[W] Write to test file"); -MENU_ENTRY(EEPROM_GET_CONFIG, "[S] Get EEPROM config"); -MENU_ENTRY(EEPROM_RESET_CONFIG, "[s] Reset EEPROM config"); -MENU_ENTRY(EEPROM_GET_CONTENT, "[C] Get EEPROM content"); +MENU_ENTRY(EEPROM_GET_CONFIG, "[C] Get EEPROM config"); +MENU_ENTRY(EEPROM_RESET_CONFIG, "[c] Reset EEPROM config"); +MENU_ENTRY(EEPROM_GET_CONTENT, "[E] Get EEPROM content"); MENU_ENTRY(EEPROM_GET_ENTRIES, "[P] Get EEPROM entries"); MENU_ENTRY(EEPROM_GET_LAST_ENTRY, "[p] Get EEPROM last entry"); MENU_ENTRY(EEPROM_ADD_ENTRY, "[a] Add last entry to EEPROM"); +MENU_ENTRY(SLEEP, "[S] Sleep for 8s"); +MENU_ENTRY(SLEEP_DEEP, "[s] Deep sleep for 10s"); MENU_ENTRY(QUESTION, "?"); const PROGMEM uint8_t commandIdMapping[] = { @@ -40,12 +44,14 @@ const PROGMEM uint8_t commandIdMapping[] = { 'T', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET), 't', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET), 'W', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST), - 'S', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONFIG), - 's', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_RESET_CONFIG), - 'C', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONTENT), + 'C', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONFIG), + 'c', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_RESET_CONFIG), + 'E', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONTENT), 'P', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_ENTRIES), 'p', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_LAST_ENTRY), 'a', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY), + 'S', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::SLEEP), + 's', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::SLEEP_DEEP), }; const char * const MENU_ENTRIES[] PROGMEM = { @@ -83,6 +89,11 @@ const char * const MENU_ENTRIES[] PROGMEM = { MENU_EEPROM_GET_LAST_ENTRY, MENU_EEPROM_ADD_ENTRY, + MENU_SEPARATOR, + + MENU_SLEEP, + MENU_SLEEP_DEEP, + MENU_QUESTION }; @@ -144,12 +155,12 @@ namespace debug { void getAndDisplayGpsPosition() { SIM808_GPS_STATUS gpsStatus = gps::acquireCurrentPosition(GPS_DEFAULT_TOTAL_TIMEOUT_MS); - Log.notice(F("%d %s\n"), gpsStatus, gps::lastPosition); + NOTICE_FORMAT("getAndDisplayGpsPosition", "%d %s", gpsStatus, gps::lastPosition); } void setFakeGpsPosition() { strlcpy_P(gps::lastPosition, FAKE_GPS_ENTRY, GPS_POSITION_SIZE); - Log.notice(F("Last position set to : %s\n"), gps::lastPosition); + NOTICE_FORMAT("setFakeGpsPosition", "Last position set to : %s", gps::lastPosition); } void getAndDisplayBattery() { @@ -157,14 +168,14 @@ namespace debug { SIM808ChargingStatus status = hardware::sim808::device.getChargingState(); hardware::sim808::powerOff(); - Log.notice(F("%d %d%% %dmV\n"), status.state, status.level, status.voltage); + NOTICE_FORMAT("getAndDisplayBattery", "%d %d%% %dmV", status.state, status.level, status.voltage); } void getAndDisplayRtcTime() { tmElements_t time; rtc::getTime(time); - Log.notice(F("%d/%d/%d %d:%d:%d\n"), tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); + NOTICE_FORMAT("getAndDisplayRtcTime", "%d/%d/%d %d:%d:%d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); } void getAndDisplayEepromConfig() { @@ -183,7 +194,8 @@ namespace debug { } Serial.println(); hardware::i2c::powerOff(); - Log.notice(F("Done\n")); + + NOTICE_MSG("getAndDisplayEepromContent", "Done"); } void getAndDisplayEepromPositions() { @@ -219,6 +231,6 @@ namespace debug { gps::getTime(time); rtc::setTime(time); - Log.notice(F("OK\n")); + NOTICE_MSG("setRtcTime", "Done"); } } \ No newline at end of file diff --git a/GpsTracker/Debug.h b/GpsTracker/Debug.h index 41b924e..2a64eac 100644 --- a/GpsTracker/Debug.h +++ b/GpsTracker/Debug.h @@ -8,11 +8,18 @@ #include "Gps.h" #include "Rtc.h" +#define LOG(level, f) Log.level(F("[" LOGGER_NAME "::" f "]\n")) +#define LOG_MSG(level, f, msg) Log.level(F("[" LOGGER_NAME "::" f "] " msg "\n")) +#define LOG_FORMAT(level, f, msg, ...) Log.level(F("[" LOGGER_NAME "::" f "] " msg "\n"), __VA_ARGS__) + #ifdef _DEBUG -#define VERBOSE(f) Log.verbose(F("[" LOGGER_NAME "::" f "]\n")) -#define VERBOSE_MSG(f, msg) Log.verbose(F("[" LOGGER_NAME "::" f "] " msg "\n")) -#define VERBOSE_FORMAT(f, msg, ...) Log.verbose(F("[" LOGGER_NAME "::" f "] " msg "\n"), __VA_ARGS__) +#define VERBOSE(f) LOG(verbose, f) +#define VERBOSE_MSG(f, msg) LOG_MSG(verbose, f, msg) +#define VERBOSE_FORMAT(f, msg, ...) LOG_FORMAT(verbose, f, msg, __VA_ARGS__) +//#define VERBOSE(f) Log.verbose(F("[" LOGGER_NAME "::" f "]\n")) +//#define VERBOSE_MSG(f, msg) Log.verbose(F("[" LOGGER_NAME "::" f "] " msg "\n")) +//#define VERBOSE_FORMAT(f, msg, ...) Log.verbose(F("[" LOGGER_NAME "::" f "] " msg "\n"), __VA_ARGS__) #else @@ -24,6 +31,10 @@ #endif +#define NOTICE(f) LOG(notice, f) +#define NOTICE_MSG(f, msg) LOG_MSG(notice, f, msg) +#define NOTICE_FORMAT(f, msg, ...) LOG_FORMAT(notice, f, msg, __VA_ARGS__) + #define DEBUG_SERIAL_SPEED 115200 namespace debug { @@ -46,7 +57,9 @@ namespace debug { EEPROM_GET_CONTENT = 16, EEPROM_GET_LAST_ENTRY = 17, EEPROM_GET_ENTRIES = 18, - EEPROM_ADD_ENTRY = 19 + EEPROM_ADD_ENTRY = 19, + SLEEP = 20, + SLEEP_DEEP = 21 }; void waitForSerial(); diff --git a/GpsTracker/Gps.cpp b/GpsTracker/Gps.cpp index aa046ca..1d047f9 100644 --- a/GpsTracker/Gps.cpp +++ b/GpsTracker/Gps.cpp @@ -46,6 +46,8 @@ namespace gps { void getVelocity(uint8_t &velocity) { hardware::sim808::device.getGpsField(lastPosition, SIM808_GPS_FIELD::SPEED, &velocity); + + VERBOSE_FORMAT("getVelocity", "%d", velocity); } void getTime(tmElements_t &time) { diff --git a/GpsTracker/GpsTracker.ino b/GpsTracker/GpsTracker.ino index bc58e67..12e2968 100644 --- a/GpsTracker/GpsTracker.ino +++ b/GpsTracker/GpsTracker.ino @@ -68,6 +68,12 @@ void loop() { case debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY: debug::addLastPositionToEeprom(); break; + case debug::GPSTRACKER_DEBUG_COMMAND::SLEEP: + mainunit::sleep(period_t::SLEEP_8S); + break; + case debug::GPSTRACKER_DEBUG_COMMAND::SLEEP_DEEP: + mainunit::deepSleep(10); + break; case debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST: default: Serial.println(F("Unsupported command !")); diff --git a/GpsTracker/MainUnit.cpp b/GpsTracker/MainUnit.cpp index e276d3a..4dbb9c7 100644 --- a/GpsTracker/MainUnit.cpp +++ b/GpsTracker/MainUnit.cpp @@ -3,6 +3,7 @@ #include "Pins.h" #include "Debug.h" +#define LOGGER_NAME "MainUnit" const char WOKE_UP[] PROGMEM = "Woke up from sleep\n"; namespace mainunit { @@ -19,19 +20,18 @@ namespace mainunit { } void sleep(period_t period) { - Log.notice(F("Sleeping for period : %d\n"), period); - + NOTICE_FORMAT("sleep", "Sleeping for period : %d", period); + delay(5); LowPower.powerDown(period, ADC_OFF, BOD_OFF); - - Log.verbose(reinterpret_cast(WOKE_UP)); + NOTICE_MSG("sleep", "Woke up"); } void deepSleep(uint16_t seconds) { - Log.notice(F("Deep sleeping for %d seconds\n"), seconds); - + NOTICE_FORMAT("deepSleep", "Deep sleeping for %d seconds", seconds); interruptIn(seconds); + delay(5); LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); - Log.verbose(reinterpret_cast(WOKE_UP)); + NOTICE_MSG("deepSleep", "Woke up"); } } \ No newline at end of file diff --git a/GpsTracker/Pins.h b/GpsTracker/Pins.h index 9903d55..81796ec 100644 --- a/GpsTracker/Pins.h +++ b/GpsTracker/Pins.h @@ -7,7 +7,6 @@ #define SIM_STATUS 8 #define I2C_PWR A0 -#define EEPROM_PWR A0 #define SD_SS SS #define SIM_RI 2