Skip to content
Merged
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
37 changes: 31 additions & 6 deletions src/board_controller/openbci/ganglion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Ganglion::Ganglion (struct BrainFlowInputParams params)
is_valid = true;
}
use_mac_addr = (params.mac_address.empty ()) ? false : true;
firmware = 0;
firmware = get_firmware_from_params (params);
is_streaming = false;
keep_alive = false;
initialized = false;
Expand Down Expand Up @@ -79,6 +79,25 @@ Ganglion::~Ganglion ()
release_session ();
}

int Ganglion::get_firmware_from_params (BrainFlowInputParams &params)
{
if (params.other_info.compare ("fw:auto") == 0)
{
safe_logger (spdlog::level::info, "Autodetecting firmware version...");
return 0;
}
if (params.other_info.compare ("fw:2") == 0)
{
safe_logger (spdlog::level::info, "Setting firmware version to 2");
return 2;
}
else
{
safe_logger (spdlog::level::info, "Setting firmware version to 3");
return 3;
}
}

int Ganglion::prepare_session ()
{
if (initialized)
Expand Down Expand Up @@ -678,9 +697,12 @@ int Ganglion::call_open ()

res = func ((void *)&connection_params);

safe_logger (
spdlog::level::info, "detected firmware version {}", connection_params.firmware);
firmware = connection_params.firmware;
if (firmware == 0)
{
safe_logger (
spdlog::level::info, "detected firmware version {}", connection_params.firmware);
firmware = connection_params.firmware;
}
}
else
{
Expand All @@ -694,9 +716,12 @@ int Ganglion::call_open ()
safe_logger (
spdlog::level::info, "mac address is not specified, try to find ganglion without it");

res = func ((void *)&firmware);

safe_logger (spdlog::level::info, "detected firmware version {}", firmware);
if (firmware == 0)
{
res = func ((void *)&firmware);
safe_logger (spdlog::level::info, "detected firmware version {}", firmware);
}
}
if (res != GanglionLib::CustomExitCodes::STATUS_OK)
{
Expand Down
24 changes: 22 additions & 2 deletions src/board_controller/openbci/ganglion_native.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ GanglionNative::GanglionNative (struct BrainFlowInputParams params)
is_streaming = false;
start_command = "b";
stop_command = "s";
firmware = 0;
firmware = get_firmware_from_params (params);
}

GanglionNative::~GanglionNative ()
Expand All @@ -51,6 +51,25 @@ GanglionNative::~GanglionNative ()
release_session ();
}

int GanglionNative::get_firmware_from_params (BrainFlowInputParams &params)
{
if (params.other_info.compare ("fw:auto") == 0)
{
safe_logger (spdlog::level::info, "Autodetecting firmware version...");
return 0;
}
if (params.other_info.compare ("fw:2") == 0)
{
safe_logger (spdlog::level::info, "Setting firmware version to 2");
return 2;
}
else
{
safe_logger (spdlog::level::info, "Setting firmware version to 3");
return 3;
}
}

int GanglionNative::prepare_session ()
{
if (initialized)
Expand Down Expand Up @@ -167,7 +186,8 @@ int GanglionNative::prepare_session ()
for (size_t j = 0; j < service.characteristic_count; j++)
{
// Read the software revision characteristic to get the firmware version
if (strcmp (service.characteristics[j].uuid.value, GANGLION_SOFTWARE_REVISION) == 0)
if (firmware == 0 &&
strcmp (service.characteristics[j].uuid.value, GANGLION_SOFTWARE_REVISION) == 0)
{
uint8_t *data;
size_t data_length;
Expand Down
3 changes: 3 additions & 0 deletions src/board_controller/openbci/inc/ganglion.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,7 @@ class Ganglion : public Board
double *acceleration, double *package);
void decompress_firmware_2 (struct GanglionLib::GanglionData *data, float *last_data,
double *acceleration, double *package);

private:
int get_firmware_from_params (BrainFlowInputParams &params);
};
3 changes: 3 additions & 0 deletions src/board_controller/openbci/inc/ganglion_native.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,7 @@ class GanglionNative : public BLELibBoard

void decompress_firmware_3 (const uint8_t *data, double *package);
void decompress_firmware_2 (const uint8_t *data, double *package);

private:
int get_firmware_from_params (BrainFlowInputParams &params);
};
Loading