Преглед на файлове

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;;

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);
}
}

+ 24
- 12
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<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET),
't', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET),
'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_LAST_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 = {
@@ -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");
}
}

+ 17
- 4
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();


+ 2
- 0
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) {


+ 6
- 0
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 !"));


+ 7
- 7
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<const __FlashStringHelper *>(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<const __FlashStringHelper *>(WOKE_UP));
NOTICE_MSG("deepSleep", "Woke up");
}
}

+ 0
- 1
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


Зареждане…
Отказ
Запис