|
8 | 8 |
|
9 | 9 | #define GANGLION_WRITE_CHAR "2d30c083-f39f-4ce6-923f-3484ea480596"
|
10 | 10 | #define GANGLION_NOTIFY_CHAR "2d30c082-f39f-4ce6-923f-3484ea480596"
|
| 11 | +#define GANGLION_SOFTWARE_REVISION "00002a28-0000-1000-8000-00805f9b34fb" |
11 | 12 |
|
12 | 13 |
|
13 | 14 | static void ganglion_adapter_1_on_scan_start (simpleble_adapter_t adapter, void *board)
|
@@ -108,7 +109,6 @@ int GanglionNative::prepare_session ()
|
108 | 109 | lk, params.timeout * sec, [this] { return this->ganglion_peripheral != NULL; }))
|
109 | 110 | {
|
110 | 111 | safe_logger (spdlog::level::info, "Found GanglionNative device");
|
111 |
| - safe_logger (spdlog::level::info, "Detected firmware version {}", firmware); |
112 | 112 | }
|
113 | 113 | else
|
114 | 114 | {
|
@@ -162,11 +162,21 @@ int GanglionNative::prepare_session ()
|
162 | 162 | res = (int)BrainFlowExitCodes::BOARD_NOT_READY_ERROR;
|
163 | 163 | }
|
164 | 164 |
|
165 |
| - safe_logger (spdlog::level::trace, "found servce {}", service.uuid.value); |
| 165 | + safe_logger (spdlog::level::trace, "found service {}", service.uuid.value); |
166 | 166 | for (size_t j = 0; j < service.characteristic_count; j++)
|
167 | 167 | {
|
168 |
| - safe_logger (spdlog::level::trace, "found characteristic {}", |
169 |
| - service.characteristics[j].uuid.value); |
| 168 | + // Read the software revision characteristic to get the firmware version |
| 169 | + if (strcmp (service.characteristics[j].uuid.value, GANGLION_SOFTWARE_REVISION) == 0) |
| 170 | + { |
| 171 | + uint8_t *data; |
| 172 | + size_t data_length; |
| 173 | + simpleble_peripheral_read (ganglion_peripheral, service.uuid, |
| 174 | + service.characteristics[j].uuid, &data, &data_length); |
| 175 | + |
| 176 | + // Data should be in the form x.x.x stored as ASCII values in the data buffer |
| 177 | + firmware = (data[0] == '3') ? 3 : 2; |
| 178 | + safe_logger (spdlog::level::info, "Detected firmware version {}", firmware); |
| 179 | + } |
170 | 180 |
|
171 | 181 | if (strcmp (service.characteristics[j].uuid.value,
|
172 | 182 | GANGLION_WRITE_CHAR) == 0) // Write Characteristics
|
@@ -444,7 +454,6 @@ void GanglionNative::adapter_1_on_scan_found (
|
444 | 454 |
|
445 | 455 | if (found)
|
446 | 456 | {
|
447 |
| - firmware = strncmp (peripheral_identified, "Ganglion 1.3", 12) == 0 ? 3 : 2; |
448 | 457 | {
|
449 | 458 | std::lock_guard<std::mutex> lk (m);
|
450 | 459 | ganglion_peripheral = peripheral;
|
|
0 commit comments