Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 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
6 changes: 6 additions & 0 deletions python_package/examples/tests/eego_impedances_and_eeg.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import time
import json

from brainflow.board_shim import BoardShim, BrainFlowInputParams, BoardIds

Expand All @@ -7,6 +8,11 @@
board = BoardShim(BoardIds.ANT_NEURO_EE_411_BOARD, params) # 8 channel amplifier
board.prepare_session()

# Get amplifier info
info = json.loads(board.config_board('get_info'))
for key, value in info.items():
print(f" - {key}: {value}")

# Get impedance data
board.config_board('impedance_mode:1')
board.start_stream()
Expand Down
70 changes: 69 additions & 1 deletion src/board_controller/ant_neuro/ant_neuro.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
#include <unistd.h>
#endif

#include <sstream>

#include <algorithm>
#include <chrono>

Expand Down Expand Up @@ -346,6 +348,7 @@ int AntNeuroBoard::config_board (std::string config, std::string &response)
std::string rv_prefix = "reference_range:";
std::string bv_prefix = "bipolar_range:";
std::string mode_prefix = "impedance_mode:";
std::string get_info = "get_info";

if (config.find (prefix) != std::string::npos)
{
Expand Down Expand Up @@ -471,8 +474,73 @@ int AntNeuroBoard::config_board (std::string config, std::string &response)
return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR;
}
}
else if (config == get_info) // return stringified JSON with info from ANT board
{
std::ostringstream oss;
oss << "{";

// getType
oss << "\"type\":\"" << amp->getType () << "\",";

// getFirmwareVersion
oss << "\"firmware_version\":" << amp->getFirmwareVersion () << ",";

// getSerialNumber
oss << "\"serial_number\":\"" << amp->getSerialNumber () << "\",";

// getSamplingRatesAvailable
std::vector<int> sampling_rates = amp->getSamplingRatesAvailable ();
oss << "\"sampling_rates\":[";
for (size_t i = 0; i < sampling_rates.size (); ++i)
{
oss << sampling_rates[i];
if (i != sampling_rates.size () - 1)
{
oss << ",";
}
}
oss << "],";

// getReferenceRangesAvailable
std::vector<double> reference_ranges = amp->getReferenceRangesAvailable ();
oss << "\"reference_ranges\":[";
for (size_t i = 0; i < reference_ranges.size (); ++i)
{
oss << reference_ranges[i];
if (i != reference_ranges.size () - 1)
{
oss << ",";
}
}
oss << "],";

// getBipolarRangesAvailable
std::vector<double> bipolar_ranges = amp->getBipolarRangesAvailable ();
oss << "\"bipolar_ranges\":[";
for (size_t i = 0; i < bipolar_ranges.size (); ++i)
{
oss << bipolar_ranges[i];
if (i != bipolar_ranges.size () - 1)
{
oss << ",";
}
}
oss << "],";

// getPowerState
amplifier::power_state power_state = amp->getPowerState ();
oss << "\"power_state\":{";
oss << "\"is_powered\":" << power_state.is_powered << ",";
oss << "\"is_charging\":" << power_state.is_charging << ",";
oss << "\"charging_level\":" << power_state.charging_level;
oss << "}";

safe_logger (spdlog::level::err, "format is '{}value'", prefix.c_str ());
oss << "}";

response = oss.str ();
return (int)BrainFlowExitCodes::STATUS_OK;
}
safe_logger (spdlog::level::err, "format is '{}value' or 'get_info'", prefix.c_str ());
return (int)BrainFlowExitCodes::INVALID_ARGUMENTS_ERROR;
}

Expand Down
Loading