@@ -30,7 +30,7 @@ Ganglion::Ganglion (struct BrainFlowInputParams params)
3030 is_valid = true ;
3131 }
3232 use_mac_addr = (params.mac_address .empty ()) ? false : true ;
33- firmware = 0 ;
33+ firmware = get_firmware_from_params (params) ;
3434 is_streaming = false ;
3535 keep_alive = false ;
3636 initialized = false ;
@@ -79,6 +79,25 @@ Ganglion::~Ganglion ()
7979 release_session ();
8080}
8181
82+ int Ganglion::get_firmware_from_params (BrainFlowInputParams ¶ms)
83+ {
84+ if (params.other_info .compare (" fw:auto" ) == 0 )
85+ {
86+ safe_logger (spdlog::level::info, " Autodetecting firmware version..." );
87+ return 0 ;
88+ }
89+ if (params.other_info .compare (" fw:2" ) == 0 )
90+ {
91+ safe_logger (spdlog::level::info, " Setting firmware version to 2" );
92+ return 2 ;
93+ }
94+ else
95+ {
96+ safe_logger (spdlog::level::info, " Setting firmware version to 3" );
97+ return 3 ;
98+ }
99+ }
100+
82101int Ganglion::prepare_session ()
83102{
84103 if (initialized)
@@ -678,9 +697,12 @@ int Ganglion::call_open ()
678697
679698 res = func ((void *)&connection_params);
680699
681- safe_logger (
682- spdlog::level::info, " detected firmware version {}" , connection_params.firmware );
683- firmware = connection_params.firmware ;
700+ if (firmware == 0 )
701+ {
702+ safe_logger (
703+ spdlog::level::info, " detected firmware version {}" , connection_params.firmware );
704+ firmware = connection_params.firmware ;
705+ }
684706 }
685707 else
686708 {
@@ -694,9 +716,12 @@ int Ganglion::call_open ()
694716 safe_logger (
695717 spdlog::level::info, " mac address is not specified, try to find ganglion without it" );
696718
697- res = func ((void *)&firmware);
698719
699- safe_logger (spdlog::level::info, " detected firmware version {}" , firmware);
720+ if (firmware == 0 )
721+ {
722+ res = func ((void *)&firmware);
723+ safe_logger (spdlog::level::info, " detected firmware version {}" , firmware);
724+ }
700725 }
701726 if (res != GanglionLib::CustomExitCodes::STATUS_OK)
702727 {
0 commit comments