Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@ Temporary Items

# CLion IDE files
.idea/
CMakeLists.txt

# VSCode
.vscode/
35 changes: 26 additions & 9 deletions src/Arduino_Alvik.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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){
Expand Down
2 changes: 2 additions & 0 deletions src/Arduino_Alvik.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down
5 changes: 4 additions & 1 deletion src/definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down