Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 8 additions & 30 deletions OpenBCI_GUI/BoardGanglion.pde
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
21 changes: 11 additions & 10 deletions OpenBCI_GUI/ControlPanel.pde
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -625,7 +626,7 @@ class BLEBox {
private ControlP5 bleBox_cp5;
private MenuList bleList;
private Button refreshBLE;
Map<String, String> bleMACAddrMap = new HashMap<String, String>();
GanglionDevice[] ganglionDevices;

BLEBox(int _x, int _y, int _w, int _h, int _padding) {
x = _x;
Expand Down Expand Up @@ -688,12 +689,12 @@ private void refreshGanglionNativeList() {
bleIsRefreshing = true;

try {
bleMACAddrMap = GUIHelper.scan_for_ganglions (3);
for (Map.Entry<String, String> 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)
{
Expand Down Expand Up @@ -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<String, String> 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)
Expand Down
47 changes: 38 additions & 9 deletions OpenBCI_GUI/OpenBCI_GUI.pde
Original file line number Diff line number Diff line change
Expand Up @@ -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;


//------------------------------------------------------------------------
Expand Down Expand Up @@ -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:
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.