diff --git a/Simulator/include/BoardDef/BoardDefs/Uno.h b/Simulator/include/BoardDef/BoardDefs/Uno.h index e9579255..d0b4952b 100644 --- a/Simulator/include/BoardDef/BoardDefs/Uno.h +++ b/Simulator/include/BoardDef/BoardDefs/Uno.h @@ -1,6 +1,17 @@ #define NUM_PINS 32 +#define PB2 10 #define SS 10 #define MOSI 11 #define MISO 12 -#define SCK 13 \ No newline at end of file +#define SCK 13 + +#define A0 14 +#define A1 15 +#define A2 16 +#define A3 17 +#define A4 18 +#define A5 19 + +#define SDA 27 +#define SCL 28 diff --git a/Simulator/include/MockCAN/MockCAN.h b/Simulator/include/MockCAN/MockCAN.h index 0e395eee..e78e0f87 100644 --- a/Simulator/include/MockCAN/MockCAN.h +++ b/Simulator/include/MockCAN/MockCAN.h @@ -16,7 +16,7 @@ class MockCAN { static inline void write(const CAN_message_t& msg) { vehicle_inbox.push(msg); } static inline void vehicle_write(const CAN_message_t &msg) { vehicle_outbox.push(msg); } static inline size_t vehicle_avail() { return vehicle_inbox.size(); } - static void teardown(); + static inline void teardown() { vehicle_inbox = std::queue(); vehicle_outbox = std::queue(); } private: static std::queue vehicle_inbox; static std::queue vehicle_outbox; diff --git a/Simulator/include/Time/TimeLib.h b/Simulator/include/Time/TimeLib.h index 024ab86d..b0759c22 100644 --- a/Simulator/include/Time/TimeLib.h +++ b/Simulator/include/Time/TimeLib.h @@ -1,22 +1,17 @@ #pragma once #include #include +#include "HTException.h" typedef enum { timeNotSet, timeNeedsSync, timeSet } timeStatus_t; typedef time_t(*getExternalTime)(); class teensy3_clock_class { public: - inline static time_t get() { return rtcTime; } - inline static void set(time_t t) { if (valid) rtcTime = t; } - inline static void teardown() { valid = rtcTime = 0; } - - friend uint16_t year(); - friend uint16_t month(); - friend uint16_t day(); - friend uint16_t hour(); - friend uint16_t minute(); - friend uint16_t second(); + inline static time_t get() { if (!valid) throw HTException("RTC Exception", "RTC not configured"); return std::time(0); } + inline static void set(time_t t) {} + inline static void teardown() { valid = false; } + friend void setSyncProvider(getExternalTime sync); private: @@ -26,12 +21,15 @@ class teensy3_clock_class { extern teensy3_clock_class Teensy3Clock; -uint16_t year() { return localtime(&Teensy3Clock.rtcTime)->tm_year; } -uint16_t month() { return localtime(&Teensy3Clock.rtcTime)->tm_mon; } -uint16_t day() { return localtime(&Teensy3Clock.rtcTime)->tm_mday; } -uint16_t hour() { return localtime(&Teensy3Clock.rtcTime)->tm_hour; } -uint16_t minute() { return localtime(&Teensy3Clock.rtcTime)->tm_min; } -uint16_t second() { return localtime(&Teensy3Clock.rtcTime)->tm_sec; } +inline uint16_t year() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_year + 1900; } +inline uint16_t month() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_mon; } +inline uint16_t day() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_mday; } +inline uint16_t hour() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_hour; } +inline uint16_t minute() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_min; } +inline uint16_t second() { time_t t = Teensy3Clock.get(); return localtime(&t)->tm_sec; } + +#define RTC_TSR (second()) +#define RTC_TPR (0) inline void setSyncProvider(getExternalTime sync) { Teensy3Clock.valid = (sync == teensy3_clock_class::get); diff --git a/Simulator/src/Time/CMakeLists.txt b/Simulator/src/Time/CMakeLists.txt index e429bcf2..1542f8c9 100644 --- a/Simulator/src/Time/CMakeLists.txt +++ b/Simulator/src/Time/CMakeLists.txt @@ -1,2 +1,3 @@ add_library ( TIME SHARED TimeLib.cpp ) -target_include_directories ( TIME PUBLIC ${INC}/Time ) \ No newline at end of file +target_include_directories ( TIME PUBLIC ${INC}/Time ) +target_link_libraries ( TIME PUBLIC CORE ) \ No newline at end of file