Skip to content

Commit 146ec60

Browse files
committed
moved new ANT logic out of third party folder
1 parent e831dff commit 146ec60

3 files changed

Lines changed: 53 additions & 29 deletions

File tree

src/board_controller/ant_neuro/ant_neuro.cpp

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,56 @@ int AntNeuroBoard::prepare_session ()
9696
safe_logger (spdlog::level::info, "eego sdk version is: {}.{}.{}.{}",
9797
fact->getVersion ().major, fact->getVersion ().minor, fact->getVersion ().micro,
9898
fact->getVersion ().build);
99-
amp = fact->getAmplifier (board_descr["default"]["name"], params.serial_number);
99+
100+
// Iterate through connected amplifiers
101+
std::vector<amplifier *> amplifier_list = fact->getAmplifiers ();
102+
if (amplifier_list.empty ())
103+
{
104+
throw exceptions::notFound ("no ANT amplifiers found.");
105+
}
106+
107+
std::string expected_board_name = board_descr["default"]["name"];
108+
std::string expected_serial_number = params.serial_number;
109+
110+
std::vector<amplifier *>::iterator iter = amplifier_list.begin ();
111+
for (; iter != amplifier_list.end (); ++iter)
112+
{
113+
amplifier *current_amp = *iter;
114+
std::string current_board_name = "AntNeuro" + current_amp->getType ();
115+
std::string current_serial = current_amp->getSerialNumber ();
116+
117+
if ((!expected_board_name.empty () && current_board_name != expected_board_name) ||
118+
(!expected_serial_number.empty () && current_serial != expected_serial_number))
119+
{
120+
safe_logger (spdlog::level::info, "Found non-matching amplifier (board name {}, serial {})",
121+
current_board_name, current_serial);
122+
delete current_amp;
123+
continue;
124+
}
125+
126+
// Found the matching amplifier
127+
safe_logger (spdlog::level::info, "Found amplifier (board name {}, serial {})!",
128+
current_board_name, current_serial);
129+
amp = current_amp;
130+
break;
131+
}
132+
133+
// Check if amplifier is found
134+
if (amp == NULL)
135+
{
136+
throw exceptions::notFound ("No amplifier matched the given board name and serial number.");
137+
}
138+
139+
// Clean up remaining amplifiers after the selected one
140+
while (++iter != amplifier_list.end ())
141+
{
142+
amplifier *current_amp = *iter;
143+
std::string current_board_name = "AntNeuro" + current_amp->getType ();
144+
std::string current_serial = current_amp->getSerialNumber ();
145+
safe_logger (spdlog::level::info, "Found non-matching amplifier (board name {}, serial {})",
146+
current_board_name, current_serial);
147+
delete current_amp;
148+
}
100149

101150
reference_range = amp->getReferenceRangesAvailable ()[0];
102151
bipolar_range = amp->getBipolarRangesAvailable ()[0];

third_party/ant_neuro/eemagine/sdk/factory.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ namespace eemagine
107107
* if no amplifiers are found.
108108
* @return pointer to an available amplifier
109109
*/
110-
eemagine::sdk::amplifier *getAmplifier (
111-
const std::string &board_name = "",
112-
const std::string &serial_number = "");
110+
eemagine::sdk::amplifier *getAmplifier ();
113111
///////////////////////////////////////////////////////////////////////////////
114112
/**
115113
* Returns a pointer to a virtual amplifier.

third_party/ant_neuro/eemagine/sdk/wrapper.cc

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -921,9 +921,7 @@ std::vector<eemagine::sdk::amplifier *> eemagine::sdk::factory::getAmplifiers ()
921921
}
922922

923923
///////////////////////////////////////////////////////////////////////////////
924-
eemagine::sdk::amplifier *eemagine::sdk::factory::getAmplifier (
925-
const std::string &board_name,
926-
const std::string &serial_number)
924+
eemagine::sdk::amplifier *eemagine::sdk::factory::getAmplifier ()
927925
{
928926
eemagine::sdk::amplifier *rv = NULL;
929927
std::vector<eemagine::sdk::amplifier *> amplifier_list = getAmplifiers ();
@@ -934,28 +932,7 @@ eemagine::sdk::amplifier *eemagine::sdk::factory::getAmplifier (
934932
}
935933

936934
std::vector<eemagine::sdk::amplifier *>::iterator iter = amplifier_list.begin ();
937-
for (; iter != amplifier_list.end (); ++iter)
938-
{
939-
eemagine::sdk::amplifier *amp = *iter;
940-
941-
// Check board name and serial number
942-
std::string amp_board_name = "AntNeuro" + amp->getType ();
943-
if ((!board_name.empty () && amp_board_name != board_name) ||
944-
(!serial_number.empty () && amp->getSerialNumber () != serial_number))
945-
{
946-
delete amp;
947-
continue;
948-
}
949-
950-
rv = amp;
951-
break;
952-
}
953-
954-
if (rv == NULL)
955-
{
956-
throw (eemagine::sdk::exceptions::notFound("no amplifier matching the given criteria"));
957-
}
958-
935+
rv = *iter;
959936
// clean references
960937
while (++iter != amplifier_list.end ())
961938
{

0 commit comments

Comments
 (0)