diff --git a/CHANGELOG.md b/CHANGELOG.md index df3d06cc6..1a8624a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ - Add channel labels for Cyton Digital Channels in GUI CSV files and also label unused channels #1108 - Process all data in the background when widgets are closed and sending over Networking stream #1094 - Update to BrainFlow 5.10.0 -- Update to GUI Helpers 2.0.1 #1187 +- Update to GUI Helpers 3.0.0 #1187 #1191 ### Bug Fixes - Fix BrainFlow error when outputting to BDF and BrainFlow streaming is enabled #1105 diff --git a/OpenBCI_GUI/BoardGanglion.pde b/OpenBCI_GUI/BoardGanglion.pde index 20ab14a63..ff3f3bc3f 100644 --- a/OpenBCI_GUI/BoardGanglion.pde +++ b/OpenBCI_GUI/BoardGanglion.pde @@ -2,27 +2,16 @@ class BoardGanglionNative extends BoardGanglion { private PacketLossTrackerGanglionBLE packetLossTrackerGanglionNative; private String boardName; - private int firmwareVersion = 0; + private int firmwareVersion; public BoardGanglionNative() { super(); } - public BoardGanglionNative(String name, boolean showUpgradePopup) { + public BoardGanglionNative(GanglionDevice device) { super(); - this.boardName = name; - - if (name.indexOf("Ganglion 1.3") != -1) { - this.firmwareVersion = 3; - output("Detected Ganglion firmware version 3"); - } - else { - this.firmwareVersion = 2; - output("Detected Ganglion firmware version 2"); - if (showUpgradePopup) { - PopupMessage msg = new PopupMessage("Warning", "Ganglion firmware version 2 detected. Please update to version 3 for better performance. \n\nhttps://docs.openbci.com/Ganglion/GanglionProgram"); - } - } + this.boardName = device.identifier; + this.firmwareVersion = device.firmware_version; } @Override @@ -64,29 +53,18 @@ class BoardGanglionNative extends BoardGanglion { class BoardGanglionBLE extends BoardGanglion { - private int firmwareVersion = 0; + private int firmwareVersion; private PacketLossTrackerGanglionBLE packetLossTrackerGanglionBLE; public BoardGanglionBLE() { super(); } - public BoardGanglionBLE(String deviceName, String serialPort, String macAddress, boolean showUpgradePopup) { + public BoardGanglionBLE(GanglionDevice device, String serialPort) { super(); this.serialPort = serialPort; - this.macAddress = macAddress; - - if (deviceName.indexOf("Ganglion 1.3") != -1) { - this.firmwareVersion = 3; - output("Detected Ganglion firmware version 3"); - } - else { - this.firmwareVersion = 2; - if (showUpgradePopup) { - PopupMessage msg = new PopupMessage("Warning", "Ganglion firmware version 2 detected. Please update to version 3 for better performance. \n\nhttps://docs.openbci.com/Ganglion/GanglionProgram"); - } - output("Detected Ganglion firmware version 2"); - } + this.macAddress = device.mac_address; + this.firmwareVersion = device.firmware_version; } @Override diff --git a/OpenBCI_GUI/ControlPanel.pde b/OpenBCI_GUI/ControlPanel.pde index cc5a30bd6..adf3f534c 100644 --- a/OpenBCI_GUI/ControlPanel.pde +++ b/OpenBCI_GUI/ControlPanel.pde @@ -17,12 +17,13 @@ import controlP5.*; -import openbci_gui_helpers.*; - import java.io.IOException; import java.util.List; +import openbci_gui_helpers.GUIHelper; import openbci_gui_helpers.GanglionError; +import openbci_gui_helpers.GanglionDevice; + import com.vmichalak.protocol.ssdp.Device; import com.vmichalak.protocol.ssdp.SSDPClient; @@ -625,7 +626,7 @@ class BLEBox { private ControlP5 bleBox_cp5; private MenuList bleList; private Button refreshBLE; - Map bleMACAddrMap = new HashMap(); + GanglionDevice[] ganglionDevices; BLEBox(int _x, int _y, int _w, int _h, int _padding) { x = _x; @@ -688,12 +689,12 @@ private void refreshGanglionNativeList() { bleIsRefreshing = true; try { - bleMACAddrMap = GUIHelper.scan_for_ganglions (3); - for (Map.Entry entry : bleMACAddrMap.entrySet ()) + ganglionDevices = GUIHelper.scan_for_ganglions (3); + for (GanglionDevice device : ganglionDevices) { - bleList.addItem(entry.getKey(), entry.getValue(), ""); + bleList.addItem(device.identifier, device.mac_address, ""); bleList.updateMenu(); - println("Found Ganglion Board: " + entry.getKey() + " " + entry.getValue()); + println("Found Ganglion Board: " + device.identifier + " " + device.mac_address); } } catch (GanglionError e) { @@ -723,10 +724,10 @@ private void refreshGanglionNativeList() { final String comPort = getBLED112Port(); if (comPort != null) { try { - bleMACAddrMap = GUIHelper.scan_for_ganglions (comPort, 3); - for (Map.Entry entry : bleMACAddrMap.entrySet ()) + ganglionDevices = GUIHelper.scan_for_ganglions (comPort, 3); + for (GanglionDevice device : ganglionDevices) { - bleList.addItem(entry.getKey(), comPort, ""); + bleList.addItem(device.identifier, comPort, ""); bleList.updateMenu(); } } catch (GanglionError e) diff --git a/OpenBCI_GUI/OpenBCI_GUI.pde b/OpenBCI_GUI/OpenBCI_GUI.pde index f2ea0f895..9871106ce 100644 --- a/OpenBCI_GUI/OpenBCI_GUI.pde +++ b/OpenBCI_GUI/OpenBCI_GUI.pde @@ -58,6 +58,7 @@ import com.fazecast.jSerialComm.*; //Helps distinguish serial ports on Windows import org.apache.commons.lang3.time.StopWatch; import http.requests.*; import java.util.concurrent.atomic.AtomicBoolean; +import openbci_gui_helpers.GanglionDevice; //------------------------------------------------------------------------ @@ -641,16 +642,44 @@ void initSystem() { } if (selectedProtocol == BoardProtocol.BLED112) { - String ganglionName = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("headline")); - String ganglionPort = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("subline")); - String ganglionMac = controlPanel.bleBox.bleMACAddrMap.get(ganglionName); - println("MAC address for Ganglion is " + ganglionMac); - currentBoard = new BoardGanglionBLE(ganglionName, ganglionPort, ganglionMac, showUpgradePopup); + String name = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("headline")); + String port = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("subline")); + + GanglionDevice device = new GanglionDevice(); + for (GanglionDevice entry : controlPanel.bleBox.ganglionDevices) { + if (entry.identifier.equals(name)) { + device = entry; + break; + } + } + + println("MAC address for Ganglion is " + device.mac_address); + println("Ganglion firmware is " + device.firmware_version); + + if (device.firmware_version == 2 && showUpgradePopup) { + PopupMessage msg = new PopupMessage("Warning", "Ganglion firmware version 2 detected. Please update to version 3 for better performance. \n\nhttps://docs.openbci.com/Ganglion/GanglionProgram"); + } + + currentBoard = new BoardGanglionBLE(device, port); } else if (selectedProtocol == BoardProtocol.NATIVE_BLE) { - String ganglionName = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("headline")); - String ganglionMac = controlPanel.bleBox.bleMACAddrMap.get(ganglionName); - println("MAC address for Ganglion is " + ganglionMac); - currentBoard = new BoardGanglionNative(ganglionName, showUpgradePopup); + String name = (String)(controlPanel.bleBox.bleList.getItem(controlPanel.bleBox.bleList.activeItem).get("headline")); + + GanglionDevice device = new GanglionDevice(); + for (GanglionDevice entry : controlPanel.bleBox.ganglionDevices) { + if (entry.identifier.equals(name)) { + device = entry; + break; + } + } + + println("MAC address for Ganglion is " + device.mac_address); + println("Ganglion firmware is " + device.firmware_version); + + if (device.firmware_version == 2 && showUpgradePopup) { + PopupMessage msg = new PopupMessage("Warning", "Ganglion firmware version 2 detected. Please update to version 3 for better performance. \n\nhttps://docs.openbci.com/Ganglion/GanglionProgram"); + } + + currentBoard = new BoardGanglionNative(device); } break; case DATASOURCE_STREAMING: diff --git a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionNativeScan.dylib b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionNativeScan.dylib index 98609479e..536000180 100644 Binary files a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionNativeScan.dylib and b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionNativeScan.dylib differ diff --git a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionScan.dylib b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionScan.dylib index 472af4583..884170c1e 100644 Binary files a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionScan.dylib and b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/libGanglionScan.dylib differ diff --git a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/openbci_gui_helpers.jar b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/openbci_gui_helpers.jar index 49d29d6a4..a1dfd8d25 100644 Binary files a/OpenBCI_GUI/libraries/openbci_gui_helpers/library/openbci_gui_helpers.jar and b/OpenBCI_GUI/libraries/openbci_gui_helpers/library/openbci_gui_helpers.jar differ