@@ -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 ];
0 commit comments