diff --git a/.gitignore b/.gitignore index b702641..0797487 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,7 @@ Temporary Items # CLion IDE files .idea/ +CMakeLists.txt + +# VSCode +.vscode/ diff --git a/src/Arduino_Alvik.cpp b/src/Arduino_Alvik.cpp index 569bb9a..ac83f95 100644 --- a/src/Arduino_Alvik.cpp +++ b/src/Arduino_Alvik.cpp @@ -371,6 +371,8 @@ int Arduino_Alvik::parse_message(){ case 0x7E: while (!xSemaphoreTake(version_semaphore, 5)){} packeter->unpacketC3B(code, fw_version[0], fw_version[1], fw_version[2]); + hw_version = fw_version[0] >> 4; + fw_version[0] = fw_version[1] & 0x0F; xSemaphoreGive(version_semaphore); break; @@ -1010,19 +1012,34 @@ void Arduino_Alvik::set_behaviour(const uint8_t behaviour){ } void Arduino_Alvik::get_version(uint8_t & upper, uint8_t & middle, uint8_t & lower, String version){ + if ((version=="fw")||(version=="FW")||(version=="firmware")){ get_fw_version(upper,middle,lower); + return; } - else{ - if ((version=="lib")||(version=="LIB")){ - get_lib_version(upper,middle,lower); - } - else{ - upper = 0; - middle = 0; - lower = 0; - } + + if ((version=="hw")||(version=="HW")||(version=="hardware")){ + get_hw_version(upper); + middle = 0; + lower = 0; + return; } + + if ((version=="lib")||(version=="LIB")){ + get_lib_version(upper,middle,lower); + return; + } + + upper = 0; + middle = 0; + lower = 0; + +} + +void Arduino_Alvik::get_hw_version(uint8_t & v){ + while (!xSemaphoreTake(version_semaphore, 5)){} + v = hw_version; + xSemaphoreGive(version_semaphore); } void Arduino_Alvik::get_fw_version(uint8_t & upper, uint8_t & middle, uint8_t & lower){ diff --git a/src/Arduino_Alvik.h b/src/Arduino_Alvik.h index 9ee6aa8..2e9b5b1 100644 --- a/src/Arduino_Alvik.h +++ b/src/Arduino_Alvik.h @@ -45,6 +45,7 @@ class Arduino_Alvik{ SemaphoreHandle_t version_semaphore; uint8_t fw_version[3]; + uint8_t hw_version; uint8_t lib_version[3]; uint8_t led_state; @@ -271,6 +272,7 @@ class Arduino_Alvik{ void get_version(uint8_t & upper, uint8_t & middle, uint8_t & lower, const String version="fw"); void get_fw_version(uint8_t & upper, uint8_t & middle, uint8_t & lower); + void get_hw_version(uint8_t & v); void get_lib_version(uint8_t & upper, uint8_t & middle, uint8_t & lower); void get_required_fw_version(uint8_t & upper, uint8_t & middle, uint8_t & lower); bool check_firmware_compatibility(); diff --git a/src/definitions.h b/src/definitions.h index 3b4b68d..d7204aa 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -15,7 +15,10 @@ #include "Arduino.h" - +#define HW0 0 +#define HW_REVISION_1_4 HW0 +#define HW1 1 +#define HW_REVISION_1_6 HW1 #define LIB_VER_UP 1 #define LIB_VER_MID 1