@@ -9,6 +9,7 @@ namespace config { | |||||
void write() { | void write() { | ||||
VERBOSE_FORMAT("writeConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); | VERBOSE_FORMAT("writeConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); | ||||
hardware::i2c::eepromPowerOn(); | hardware::i2c::eepromPowerOn(); | ||||
int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value); | int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value); | ||||
hardware::i2c::eepromPowerOff(); | hardware::i2c::eepromPowerOff(); | ||||
@@ -33,8 +34,9 @@ namespace config { | |||||
hardware::i2c::eepromPowerOn(); | hardware::i2c::eepromPowerOn(); | ||||
hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value); | hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value); | ||||
if (!String(CONFIG_SEED).equals(value.seed)) reset(); | if (!String(CONFIG_SEED).equals(value.seed)) reset(); | ||||
hardware::i2c::eepromPowerOff(); | |||||
VERBOSE_FORMAT("readConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); | VERBOSE_FORMAT("readConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); | ||||
hardware::i2c::eepromPowerOff(); | |||||
} | } | ||||
} | } |
@@ -17,8 +17,6 @@ MENU_ENTRY(GPS_ON, "[G] GPS On"); | |||||
MENU_ENTRY(GPS_OFF, "[g] GPS Off"); | MENU_ENTRY(GPS_OFF, "[g] GPS Off"); | ||||
MENU_ENTRY(GPS_GET, "[L] Get GPS position"); | MENU_ENTRY(GPS_GET, "[L] Get GPS position"); | ||||
MENU_ENTRY(GPS_SET, "[l] Set last GPS position"); | MENU_ENTRY(GPS_SET, "[l] Set last GPS position"); | ||||
MENU_ENTRY(I2C_ON, "[I] I2C devices On"); | |||||
MENU_ENTRY(I2C_OFF, "[i] I2C devices Off"); | |||||
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"); | ||||
@@ -37,8 +35,6 @@ const PROGMEM uint8_t commandIdMapping[] = { | |||||
'g', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_OFF), | 'g', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_OFF), | ||||
'L', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_GET), | 'L', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_GET), | ||||
'l', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET), | 'l', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET), | ||||
'I', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::I2C_ON), | |||||
'i', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::I2C_OFF), | |||||
'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), | ||||
@@ -67,8 +63,6 @@ const char * const MENU_ENTRIES[] PROGMEM = { | |||||
MENU_SEPARATOR, | MENU_SEPARATOR, | ||||
MENU_I2C_ON, | |||||
MENU_I2C_OFF, | |||||
MENU_RTC_SET, | MENU_RTC_SET, | ||||
MENU_RTC_GET, | MENU_RTC_GET, | ||||
@@ -38,8 +38,6 @@ namespace debug { | |||||
GPS_OFF = 6, | GPS_OFF = 6, | ||||
GPS_GET = 7, | GPS_GET = 7, | ||||
GPS_SET = 8, | GPS_SET = 8, | ||||
I2C_ON = 9, | |||||
I2C_OFF = 10, | |||||
RTC_GET = 11, | RTC_GET = 11, | ||||
RTC_SET = 12, | RTC_SET = 12, | ||||
SD_WRITE_TEST = 13, | SD_WRITE_TEST = 13, | ||||
@@ -47,12 +47,6 @@ void loop() { | |||||
case debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET: | case debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET: | ||||
debug::setFakeGpsPosition(); | debug::setFakeGpsPosition(); | ||||
break; | break; | ||||
case debug::GPSTRACKER_DEBUG_COMMAND::I2C_ON: | |||||
rtc::powerOn(); | |||||
break; | |||||
case debug::GPSTRACKER_DEBUG_COMMAND::I2C_OFF: | |||||
rtc::powerOff(); | |||||
break; | |||||
case debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET: | case debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET: | ||||
debug::getAndDisplayRtcTime(); | debug::getAndDisplayRtcTime(); | ||||
break; | break; | ||||
@@ -35,19 +35,28 @@ namespace rtc { | |||||
} | } | ||||
void setup() { | void setup() { | ||||
hardware::i2c::rtcPowerOn(); | |||||
RTC.control(DS3231_12H, DS3231_OFF); //24 hours clock | RTC.control(DS3231_12H, DS3231_OFF); //24 hours clock | ||||
RTC.control(DS3231_INT_ENABLE, DS3231_OFF); //INTCN OFF | RTC.control(DS3231_INT_ENABLE, DS3231_OFF); //INTCN OFF | ||||
hardware::i2c::rtcPowerOff(); | |||||
} | } | ||||
void getTime(tmElements_t &time) { | void getTime(tmElements_t &time) { | ||||
hardware::i2c::rtcPowerOn(); | |||||
RTC.readTime(); | RTC.readTime(); | ||||
hardware::i2c::rtcPowerOff(); | |||||
details::readTimeFromRegisters(time); | details::readTimeFromRegisters(time); | ||||
VERBOSE_FORMAT("getTime", "%d / %d / %d %d:%d : %d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); | |||||
} | } | ||||
void setTime(tmElements_t &time) { | void setTime(tmElements_t &time) { | ||||
VERBOSE_FORMAT("setTime", "%d/%d/%d %d:%d:%d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); | VERBOSE_FORMAT("setTime", "%d/%d/%d %d:%d:%d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); | ||||
details::writeTimeToRegisters(time); | details::writeTimeToRegisters(time); | ||||
hardware::i2c::rtcPowerOn(); | |||||
RTC.writeTime(); | RTC.writeTime(); | ||||
hardware::i2c::rtcPowerOff(); | |||||
} | } | ||||
void setAlarm(uint16_t seconds) { | void setAlarm(uint16_t seconds) { | ||||
@@ -55,26 +64,24 @@ namespace rtc { | |||||
tmElements_t alarmTime; | tmElements_t alarmTime; | ||||
getTime(currentTime); | getTime(currentTime); | ||||
breakTime(makeTimestamp(currentTime) + seconds, alarmTime); | breakTime(makeTimestamp(currentTime) + seconds, alarmTime); | ||||
setAlarm(alarmTime); | setAlarm(alarmTime); | ||||
} | } | ||||
void setAlarm(tmElements_t &time) { | void setAlarm(tmElements_t &time) { | ||||
tmElements_t currentTime; | |||||
getTime(currentTime); | |||||
Log.verbose(F("Current time : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(currentTime.Year), currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Second); | |||||
details::writeTimeToRegisters(time); | details::writeTimeToRegisters(time); | ||||
hardware::i2c::rtcPowerOn(); | |||||
RTC.writeAlarm1(DS3231_ALM_DTHMS); | RTC.writeAlarm1(DS3231_ALM_DTHMS); | ||||
getTime(currentTime); | |||||
Log.notice(F("Set alarm to : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); | |||||
RTC.control(DS3231_A1_FLAG, DS3231_OFF); //reset Alarm 1 flag | RTC.control(DS3231_A1_FLAG, DS3231_OFF); //reset Alarm 1 flag | ||||
RTC.control(DS3231_A1_INT_ENABLE, DS3231_ON); //Alarm 1 ON | RTC.control(DS3231_A1_INT_ENABLE, DS3231_ON); //Alarm 1 ON | ||||
RTC.control(DS3231_INT_ENABLE, DS3231_ON); //INTCN ON | RTC.control(DS3231_INT_ENABLE, DS3231_ON); //INTCN ON | ||||
hardware::i2c::rtcPowerOff(); | |||||
Log.notice(F("Set alarm to : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); | |||||
} | } | ||||
} | } |