Skip to content

Commit c1a211e

Browse files
committed
make single json with amplifier info
1 parent d720ee5 commit c1a211e

2 files changed

Lines changed: 58 additions & 70 deletions

File tree

python_package/examples/tests/eego_impedances_and_eeg.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import time
2+
import json
23

34
from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds
45

@@ -8,13 +9,9 @@
89
board.prepare_session()
910

1011
# Get amplifier info
11-
print(f"get_type: {board.config_board('get_type')}")
12-
print(f"get_firmware_version: {board.config_board('get_firmware_version')}")
13-
print(f"get_serial_number: {board.config_board('get_serial_number')}")
14-
print(f"get_sampling_rates_available: {board.config_board('get_sampling_rates_available')}")
15-
print(f"get_reference_ranges_available: {board.config_board('get_reference_ranges_available')}")
16-
print(f"get_bipolar_ranges_available: {board.config_board('get_bipolar_ranges_available')}")
17-
print(f"get_power_state: {board.config_board('get_power_state')}")
12+
info = json.loads(board.config_board('get_info'))
13+
for key, value in info.items():
14+
print(f" - {key}: {value}")
1815

1916
# Get impedance data
2017
board.config_board('impedance_mode:1')

src/board_controller/ant_neuro/ant_neuro.cpp

Lines changed: 54 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -349,14 +349,7 @@ int AntNeuroBoard::config_board (std::string config, std::string &response)
349349
std::string rv_prefix = "reference_range:";
350350
std::string bv_prefix = "bipolar_range:";
351351
std::string mode_prefix = "impedance_mode:";
352-
353-
std::string get_type = "get_type";
354-
std::string get_firmware_version = "get_firmware_version";
355-
std::string get_serial_number = "get_serial_number";
356-
std::string get_sampling_rates_available = "get_sampling_rates_available";
357-
std::string get_reference_ranges_available = "get_reference_ranges_available";
358-
std::string get_bipolar_ranges_available = "get_bipolar_ranges_available";
359-
std::string get_power_state = "get_power_state";
352+
std::string get_info = "get_info";
360353

361354
if (config.find (prefix) != std::string::npos)
362355
{
@@ -482,75 +475,73 @@ int AntNeuroBoard::config_board (std::string config, std::string &response)
482475
return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR;
483476
}
484477
}
485-
// get info from ANT SDK
486-
else if (config == get_type)
487-
{
488-
response = amp->getType ();
489-
return (int)BrainFlowExitCodes::STATUS_OK;
490-
}
491-
else if (config == get_firmware_version)
492-
{
493-
int version = amp->getFirmwareVersion ();
494-
response = std::to_string (version);
495-
return (int)BrainFlowExitCodes::STATUS_OK;
496-
}
497-
else if (config == get_serial_number)
498-
{
499-
response = amp->getSerialNumber ();
500-
return (int)BrainFlowExitCodes::STATUS_OK;
501-
}
502-
else if (config == get_sampling_rates_available)
478+
else if (config == get_info) // return stringified JSON with info from ANT board
503479
{
480+
std::ostringstream oss;
481+
oss << "{";
482+
483+
// getType
484+
oss << "\"type\":\"" << amp->getType () << "\",";
485+
486+
// getFirmwareVersion
487+
oss << "\"firmware_version\":" << amp->getFirmwareVersion () << ",";
488+
489+
// getSerialNumber
490+
oss << "\"serial_number\":\"" << amp->getSerialNumber () << "\",";
491+
492+
// getSamplingRatesAvailable
504493
std::vector<int> sampling_rates = amp->getSamplingRatesAvailable ();
505-
std::ostringstream result;
506-
if (!sampling_rates.empty ())
494+
oss << "\"sampling_rates\":[";
495+
for (int i = 0; i < sampling_rates.size (); ++i)
507496
{
508-
std::copy (sampling_rates.begin (), sampling_rates.end () - 1,
509-
std::ostream_iterator<int> (result, ","));
510-
result << sampling_rates.back (); // no trailing comma
497+
oss << sampling_rates[i];
498+
if (i != sampling_rates.size () - 1)
499+
{
500+
oss << ",";
501+
}
511502
}
512-
response = result.str ();
513-
return (int)BrainFlowExitCodes::STATUS_OK;
514-
}
515-
else if (config == get_reference_ranges_available)
516-
{
503+
oss << "],";
504+
505+
// getReferenceRangesAvailable
517506
std::vector<double> reference_ranges = amp->getReferenceRangesAvailable ();
518-
std::ostringstream result;
519-
if (!reference_ranges.empty ())
507+
oss << "\"reference_ranges\":[";
508+
for (int i = 0; i < reference_ranges.size (); ++i)
520509
{
521-
std::copy (reference_ranges.begin (), reference_ranges.end () - 1,
522-
std::ostream_iterator<double> (result, ","));
523-
result << reference_ranges.back (); // no trailing comma
510+
oss << reference_ranges[i];
511+
if (i != reference_ranges.size() - 1)
512+
{
513+
oss << ",";
514+
}
524515
}
525-
response = result.str ();
526-
return (int)BrainFlowExitCodes::STATUS_OK;
527-
}
528-
else if (config == get_bipolar_ranges_available)
529-
{
516+
oss << "],";
517+
518+
// getBipolarRangesAvailable
530519
std::vector<double> bipolar_ranges = amp->getBipolarRangesAvailable ();
531-
std::ostringstream result;
532-
if (!bipolar_ranges.empty ())
520+
oss << "\"bipolar_ranges\":[";
521+
for (int i = 0; i < bipolar_ranges.size (); ++i)
533522
{
534-
std::copy (bipolar_ranges.begin (), bipolar_ranges.end () - 1,
535-
std::ostream_iterator<double> (result, ","));
536-
result << bipolar_ranges.back (); // no trailing comma
523+
oss << bipolar_ranges[i];
524+
if (i != bipolar_ranges.size () - 1)
525+
{
526+
oss << ",";
527+
}
537528
}
538-
response = result.str ();
539-
return (int)BrainFlowExitCodes::STATUS_OK;
540-
}
541-
else if (config == get_power_state)
542-
{
529+
oss << "],";
530+
531+
// getPowerState
543532
amplifier::power_state power_state = amp->getPowerState ();
544-
std::ostringstream oss;
545-
oss << "is_powered: " << power_state.is_powered
546-
<< ", is_charging: " << power_state.is_charging
547-
<< ", charging_level: " << power_state.charging_level;
548-
response = oss.str ();
533+
oss << "\"power_state\":{";
534+
oss << "\"is_powered\":" << power_state.is_powered << ",";
535+
oss << "\"is_charging\":" << power_state.is_charging << ",";
536+
oss << "\"charging_level\":" << power_state.charging_level;
537+
oss << "}";
538+
539+
oss << "}";
549540

541+
response = oss.str ();
550542
return (int)BrainFlowExitCodes::STATUS_OK;
551543
}
552-
553-
safe_logger (spdlog::level::err, "format is '{}value'", prefix.c_str ());
544+
safe_logger (spdlog::level::err, "format is '{}value' or 'get_info'", prefix.c_str ());
554545
return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR;
555546
}
556547

0 commit comments

Comments
 (0)