瀏覽代碼

Added sleep debug function and NOTICE_XXX macros

tags/v1.2.0
Bertrand Lemasle 7 年之前
父節點
當前提交
ed7a10e47e
共有 7 個檔案被更改,包括 62 行新增26 行删除
  1. +6
    -2
      GpsTracker/Core.cpp
  2. +24
    -12
      GpsTracker/Debug.cpp
  3. +17
    -4
      GpsTracker/Debug.h
  4. +2
    -0
      GpsTracker/Gps.cpp
  5. +6
    -0
      GpsTracker/GpsTracker.ino
  6. +7
    -7
      GpsTracker/MainUnit.cpp
  7. +0
    -1
      GpsTracker/Pins.h

+ 6
- 2
GpsTracker/Core.cpp 查看文件

@@ -8,6 +8,8 @@ namespace core {
uint16_t sleepTime = SLEEP_DEFAULT_TIME_SECONDS;; uint16_t sleepTime = SLEEP_DEFAULT_TIME_SECONDS;;


void main() { void main() {
VERBOSE("main");

gps::powerOn(); gps::powerOn();
SIM808_GPS_STATUS gpsStatus = gps::acquireCurrentPosition(GPS_DEFAULT_TOTAL_TIMEOUT_MS); SIM808_GPS_STATUS gpsStatus = gps::acquireCurrentPosition(GPS_DEFAULT_TOTAL_TIMEOUT_MS);
SIM808ChargingStatus battery = hardware::sim808::device.getChargingState(); SIM808ChargingStatus battery = hardware::sim808::device.getChargingState();
@@ -33,6 +35,8 @@ namespace core {
} }


void setSleepTime(uint8_t velocity) { void setSleepTime(uint8_t velocity) {
sleepTime = SLEEP_DEFAULT_TIME_SECONDS;

for (uint8_t i = 0; i < flash::getArraySize(config::defaultSleepTimings); i++) { for (uint8_t i = 0; i < flash::getArraySize(config::defaultSleepTimings); i++) {
sleepTimings_t timing; sleepTimings_t timing;
flash::read(&config::defaultSleepTimings[i], timing); flash::read(&config::defaultSleepTimings[i], timing);
@@ -40,9 +44,9 @@ namespace core {
if (velocity > timing.speed) continue; if (velocity > timing.speed) continue;


sleepTime = timing.seconds; sleepTime = timing.seconds;
return;
break;
} }


sleepTime = SLEEP_DEFAULT_TIME_SECONDS;
VERBOSE_FORMAT("setSleepTime", "%d", sleepTime);
} }
} }

+ 24
- 12
GpsTracker/Debug.cpp 查看文件

@@ -2,6 +2,8 @@
#include "Flash.h" #include "Flash.h"
#include "Positions.h" #include "Positions.h"


#define LOGGER_NAME "Debug"

#define MENU_ENTRY(name, text) const char MENU_##name[] PROGMEM = text #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,,"; 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_SET, "[T] Get RTC time");
MENU_ENTRY(RTC_GET, "[t] Set RTC time"); MENU_ENTRY(RTC_GET, "[t] Set RTC time");
MENU_ENTRY(SD_WRITE_TEST, "[W] Write to test file"); 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_ENTRIES, "[P] Get EEPROM entries");
MENU_ENTRY(EEPROM_GET_LAST_ENTRY, "[p] Get EEPROM last entry"); MENU_ENTRY(EEPROM_GET_LAST_ENTRY, "[p] Get EEPROM last entry");
MENU_ENTRY(EEPROM_ADD_ENTRY, "[a] Add last entry to EEPROM"); 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, "?"); MENU_ENTRY(QUESTION, "?");


const PROGMEM uint8_t commandIdMapping[] = { const PROGMEM uint8_t commandIdMapping[] = {
@@ -40,12 +44,14 @@ const PROGMEM uint8_t commandIdMapping[] = {
'T', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET), 'T', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET),
't', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET), 't', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET),
'W', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST), 'W', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST),
'S', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONFIG),
's', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_RESET_CONFIG),
'C', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONTENT),
'C', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONFIG),
'c', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_RESET_CONFIG),
'E', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_CONTENT),
'P', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_ENTRIES), 'P', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_ENTRIES),
'p', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_LAST_ENTRY), 'p', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_GET_LAST_ENTRY),
'a', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY), 'a', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY),
'S', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::SLEEP),
's', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::SLEEP_DEEP),
}; };


const char * const MENU_ENTRIES[] PROGMEM = { const char * const MENU_ENTRIES[] PROGMEM = {
@@ -83,6 +89,11 @@ const char * const MENU_ENTRIES[] PROGMEM = {
MENU_EEPROM_GET_LAST_ENTRY, MENU_EEPROM_GET_LAST_ENTRY,
MENU_EEPROM_ADD_ENTRY, MENU_EEPROM_ADD_ENTRY,


MENU_SEPARATOR,

MENU_SLEEP,
MENU_SLEEP_DEEP,

MENU_QUESTION MENU_QUESTION
}; };


@@ -144,12 +155,12 @@ namespace debug {
void getAndDisplayGpsPosition() { void getAndDisplayGpsPosition() {
SIM808_GPS_STATUS gpsStatus = gps::acquireCurrentPosition(GPS_DEFAULT_TOTAL_TIMEOUT_MS); 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() { void setFakeGpsPosition() {
strlcpy_P(gps::lastPosition, FAKE_GPS_ENTRY, GPS_POSITION_SIZE); 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() { void getAndDisplayBattery() {
@@ -157,14 +168,14 @@ namespace debug {
SIM808ChargingStatus status = hardware::sim808::device.getChargingState(); SIM808ChargingStatus status = hardware::sim808::device.getChargingState();
hardware::sim808::powerOff(); 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() { void getAndDisplayRtcTime() {
tmElements_t time; tmElements_t time;
rtc::getTime(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() { void getAndDisplayEepromConfig() {
@@ -183,7 +194,8 @@ namespace debug {
} }
Serial.println(); Serial.println();
hardware::i2c::powerOff(); hardware::i2c::powerOff();
Log.notice(F("Done\n"));

NOTICE_MSG("getAndDisplayEepromContent", "Done");
} }


void getAndDisplayEepromPositions() { void getAndDisplayEepromPositions() {
@@ -219,6 +231,6 @@ namespace debug {
gps::getTime(time); gps::getTime(time);
rtc::setTime(time); rtc::setTime(time);


Log.notice(F("OK\n"));
NOTICE_MSG("setRtcTime", "Done");
} }
} }

+ 17
- 4
GpsTracker/Debug.h 查看文件

@@ -8,11 +8,18 @@
#include "Gps.h" #include "Gps.h"
#include "Rtc.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 #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 #else


@@ -24,6 +31,10 @@


#endif #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 #define DEBUG_SERIAL_SPEED 115200


namespace debug { namespace debug {
@@ -46,7 +57,9 @@ namespace debug {
EEPROM_GET_CONTENT = 16, EEPROM_GET_CONTENT = 16,
EEPROM_GET_LAST_ENTRY = 17, EEPROM_GET_LAST_ENTRY = 17,
EEPROM_GET_ENTRIES = 18, EEPROM_GET_ENTRIES = 18,
EEPROM_ADD_ENTRY = 19
EEPROM_ADD_ENTRY = 19,
SLEEP = 20,
SLEEP_DEEP = 21
}; };


void waitForSerial(); void waitForSerial();


+ 2
- 0
GpsTracker/Gps.cpp 查看文件

@@ -46,6 +46,8 @@ namespace gps {


void getVelocity(uint8_t &velocity) { void getVelocity(uint8_t &velocity) {
hardware::sim808::device.getGpsField(lastPosition, SIM808_GPS_FIELD::SPEED, &velocity); hardware::sim808::device.getGpsField(lastPosition, SIM808_GPS_FIELD::SPEED, &velocity);

VERBOSE_FORMAT("getVelocity", "%d", velocity);
} }


void getTime(tmElements_t &time) { void getTime(tmElements_t &time) {


+ 6
- 0
GpsTracker/GpsTracker.ino 查看文件

@@ -68,6 +68,12 @@ void loop() {
case debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY: case debug::GPSTRACKER_DEBUG_COMMAND::EEPROM_ADD_ENTRY:
debug::addLastPositionToEeprom(); debug::addLastPositionToEeprom();
break; 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: case debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST:
default: default:
Serial.println(F("Unsupported command !")); Serial.println(F("Unsupported command !"));


+ 7
- 7
GpsTracker/MainUnit.cpp 查看文件

@@ -3,6 +3,7 @@
#include "Pins.h" #include "Pins.h"
#include "Debug.h" #include "Debug.h"


#define LOGGER_NAME "MainUnit"
const char WOKE_UP[] PROGMEM = "Woke up from sleep\n"; const char WOKE_UP[] PROGMEM = "Woke up from sleep\n";


namespace mainunit { namespace mainunit {
@@ -19,19 +20,18 @@ namespace mainunit {
} }


void sleep(period_t period) { 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); LowPower.powerDown(period, ADC_OFF, BOD_OFF);
Log.verbose(reinterpret_cast<const __FlashStringHelper *>(WOKE_UP));
NOTICE_MSG("sleep", "Woke up");


} }


void deepSleep(uint16_t seconds) { 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); interruptIn(seconds);
delay(5);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
Log.verbose(reinterpret_cast<const __FlashStringHelper *>(WOKE_UP));
NOTICE_MSG("deepSleep", "Woke up");
} }
} }

+ 0
- 1
GpsTracker/Pins.h 查看文件

@@ -7,7 +7,6 @@
#define SIM_STATUS 8 #define SIM_STATUS 8


#define I2C_PWR A0 #define I2C_PWR A0
#define EEPROM_PWR A0
#define SD_SS SS #define SD_SS SS


#define SIM_RI 2 #define SIM_RI 2


Loading…
取消
儲存