From 0723116db04d5b7add0985bfb68eee793161aea3 Mon Sep 17 00:00:00 2001 From: Chris Esposito Date: Sun, 5 Jul 2020 12:28:08 +1000 Subject: [PATCH] Gobindar detection --- Desktop_Interface/genericusbdriver.cpp | 21 +++++++++++++++++++++ Desktop_Interface/genericusbdriver.h | 2 ++ Desktop_Interface/resources/AppRun | 1 + Desktop_Interface/rules.d/69-labrador.rules | 1 + 4 files changed, 25 insertions(+) diff --git a/Desktop_Interface/genericusbdriver.cpp b/Desktop_Interface/genericusbdriver.cpp index 9a7391b5..6370482d 100644 --- a/Desktop_Interface/genericusbdriver.cpp +++ b/Desktop_Interface/genericusbdriver.cpp @@ -357,6 +357,17 @@ void genericUsbDriver::requestFirmwareVariant(void){ variant = *((unsigned char *) inBuffer); } +#include +#include + +void genericUsbDriver::deGobindarise() +{ + while(1) + { + qDebug() << "Gobindar board detected!!!"; + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } +} void genericUsbDriver::saveState(int *_out_deviceMode, double *_out_scopeGain, double *_out_currentPsuVoltage, int *_out_digitalPinState){ *(_out_deviceMode) = deviceMode; @@ -373,6 +384,16 @@ void genericUsbDriver::checkConnection(){ qDebug() << "CHECKING CONNECTION!"; connected = !(usbInit(BOARD_VID, BOARD_PID)); qDebug() << "Connected"; + + if (! connected) + { + bool isGobindar = !(usbInit(BOARD_VID, GOBINDAR_PID)); + if (isGobindar) + { + deGobindarise(); + } + } + return; } connectTimer->stop(); diff --git a/Desktop_Interface/genericusbdriver.h b/Desktop_Interface/genericusbdriver.h index fd1060e9..2f5d1eb9 100644 --- a/Desktop_Interface/genericusbdriver.h +++ b/Desktop_Interface/genericusbdriver.h @@ -49,6 +49,7 @@ #define RECOVERY_PERIOD 1000 #define BOARD_VID 0x03eb #define BOARD_PID 0xba94 +#define GOBINDAR_PID 0xa000 //genericUsbDriver handles the parts of the USB stack that are not platform-dependent. @@ -100,6 +101,7 @@ protected: //Generic Functions void requestFirmwareVersion(void); void requestFirmwareVariant(void); + void deGobindarise(); virtual unsigned char usbInit(unsigned long VIDin, unsigned long PIDin) = 0; virtual int usbIsoInit(void) = 0; virtual int flashFirmware(void) = 0; diff --git a/Desktop_Interface/resources/AppRun b/Desktop_Interface/resources/AppRun index 9b19f9c5..30e6cc5f 100644 --- a/Desktop_Interface/resources/AppRun +++ b/Desktop_Interface/resources/AppRun @@ -46,6 +46,7 @@ cat > /tmp/roothelper <<\EOoF #!/bin/bash cat > /etc/udev/rules.d/69-labrador.rules <<\EOF ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="ba94", SYMLINK="EspoTek_Labrador", MODE="0666" +ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="a000", SYMLINK="EspoTek_Labrador", MODE="0666" ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="2fe4", SYMLINK="ATXMEGA32A4U DFU Bootloader", MODE="0666" EOF udevadm trigger diff --git a/Desktop_Interface/rules.d/69-labrador.rules b/Desktop_Interface/rules.d/69-labrador.rules index d52fc7d6..e0fb9d96 100644 --- a/Desktop_Interface/rules.d/69-labrador.rules +++ b/Desktop_Interface/rules.d/69-labrador.rules @@ -1,2 +1,3 @@ ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="ba94", SYMLINK="EspoTek_Labrador", MODE="0666" +ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="a000", SYMLINK="EspoTek_Labrador", MODE="0666" ENV{ID_VENDOR_ID}=="03eb", ENV{ID_MODEL_ID}=="2fe4", SYMLINK="ATXMEGA32A4U DFU Bootloader", MODE="0666"