From 3153b14d00d0227d65e8413109653e5c25b459ec Mon Sep 17 00:00:00 2001 From: thomfischer <13784757+thomfischer@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:43:48 +0200 Subject: [PATCH 1/3] restart button --- gui/latency_gui.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gui/latency_gui.py b/gui/latency_gui.py index d408e78..6442ce6 100644 --- a/gui/latency_gui.py +++ b/gui/latency_gui.py @@ -228,7 +228,14 @@ def display_progress(self, line_id, line): if int(line_id) == Constants.NUM_TEST_ITERATIONS: self.ui.label_press_button_again.setText('Measurement finished. Analysing and saving data...') + def reset_page_three(self): + self.ui.label_press_button_again.setText("Press the button of your device one more time to start the measurement") + self.ui.progressBar.setValue(0) + self.ui.label_progress.setText("0/100") + self.ui.label_last_measured_time.setText("0.0ms") + def thread_finished(self): + self.reset_page_three() print('Thread finished') @pyqtSlot('QString') @@ -260,20 +267,21 @@ def init_ui_page_four(self): # User interface for page five (Page that askes the user if he wants to upload the measurements) def init_ui_page_five(self): - self.ui.setButtonText(QtWidgets.QWizard.NextButton, 'Continue to Upload Results') + self.ui.setButtonText(QtWidgets.QWizard.NextButton, 'Upload Results') self.ui.button(QtWidgets.QWizard.NextButton).clicked.disconnect(self.init_ui_page_five) self.ui.button(QtWidgets.QWizard.NextButton).clicked.connect(self.init_ui_page_six) - self.ui.setButtonText(QtWidgets.QWizard.CancelButton, 'Exit application without uploading results') + self.ui.setButtonText(QtWidgets.QWizard.CancelButton, 'Exit without uploading') #TODO: Add custom button to restart the application to conduct a new measurement - #self.setOption(QtWidgets.QWizard.HaveCustomButton1, True) - #self.ui.setButtonText(QtWidgets.QWizard.CustomButton1, 'Start a new measurement without uploading results') - #self.button(QtWidgets.QWizard.CustomButton1).clicked.connect(self.restart_application) + self.setOption(QtWidgets.QWizard.HaveCustomButton1, True) + self.ui.setButtonText(QtWidgets.QWizard.CustomButton1, 'Restart without uploading') + self.button(QtWidgets.QWizard.CustomButton1).clicked.connect(self.restart_application) def restart_application(self): self.ui.button(QtWidgets.QWizard.NextButton).clicked.disconnect(self.init_ui_page_six) self.setOption(QtWidgets.QWizard.HaveCustomButton1, False) + self.reset_all_data() self.init_ui_page_one() QtWidgets.QWizard.restart(self) From 565c00dcca454f063dd9397b51a3e489270801cf Mon Sep 17 00:00:00 2001 From: thomfischer <13784757+thomfischer@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:13:03 +0100 Subject: [PATCH 2/3] Replace deprecated wiringPi library --- src/inputLatencyMeasureTool.c | 30 ++++++++++++++++++++---------- src/inputLatencyMeasureTool.h | 2 +- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/inputLatencyMeasureTool.c b/src/inputLatencyMeasureTool.c index 40f0210..70ffc3c 100644 --- a/src/inputLatencyMeasureTool.c +++ b/src/inputLatencyMeasureTool.c @@ -36,10 +36,12 @@ #include #include +// apt install libgpiod +#include + // Project includes #include "inputLatencyMeasureTool.h" #include "joystickControl.h" -#include #include "fileLog.h" enum INPUT_DEVICES inputDevice; @@ -57,6 +59,10 @@ const char* DEVICE_TYPES[3] = { "Keyboard" }; +const char *chipname = "gpiochip0"; +struct gpiod_chip *chip; +struct gpiod_line *lineAutoMode; + int g_iChannelCircId = -1; int g_iButtonCode = 0; // ID of GP button which will be tested @@ -98,7 +104,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) for (int i = 0; i < iterations; i++) { debug("iteration %d \n", i); - digitalWrite(PIN_AUTO_MODE, LOW); + gpiod_line_set_value(PIN_AUTO_MODE, 0); while (1) @@ -116,7 +122,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) usleep(delayList[i]); dStartTime = getCurTime_microseconds(CLOCK_REALTIME); - digitalWrite(PIN_AUTO_MODE, HIGH); + gpiod_line_set_value(PIN_AUTO_MODE, 1); while (1) { @@ -134,7 +140,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) results[i] = data; - //digitalWrite(PIN_AUTO_MODE, LOW); //clear pin + //gpiod_line_set_value(PIN_AUTO_MODE, 0);; //clear pin break; } @@ -148,7 +154,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) usleep(10); } - digitalWrite(PIN_AUTO_MODE, LOW); + gpiod_line_set_value(PIN_AUTO_MODE, 0); } int checkButtonState(long long* timestamp) @@ -254,9 +260,9 @@ void testPin(int pin) { for(int i = 0; i < 1000; i++) { - digitalWrite(pin, HIGH); + gpiod_line_set_value(pin, 1); usleep(1000000); - digitalWrite(pin, LOW); + gpiod_line_set_value(pin, 0); usleep(1000000); } } @@ -264,8 +270,10 @@ void testPin(int pin) void setupPins() { debug("setting up pins...\n"); - pinMode(PIN_AUTO_MODE, OUTPUT); - digitalWrite(PIN_AUTO_MODE, LOW); + + lineAutoMode = gpiod_chip_get_line(chip, PIN_AUTO_MODE); + gpiod_line_request_output(PIN_AUTO_MODE, "foo", 0); + gpiod_line_set_value(PIN_AUTO_MODE, 1); } // swap array elements @@ -329,7 +337,9 @@ int main(int argc, char *argv[]) { srand(time(NULL)); - wiringPiSetup(); + // wiringPiSetup(); + // Open GPIO chip + chip = gpiod_chip_open_by_name(chipname); setupPins(); diff --git a/src/inputLatencyMeasureTool.h b/src/inputLatencyMeasureTool.h index 350d781..a1a7341 100644 --- a/src/inputLatencyMeasureTool.h +++ b/src/inputLatencyMeasureTool.h @@ -19,7 +19,7 @@ #define CHANNEL_BUTTON_RIGHT 4 #define SPI_CHANNEL 0 -#define PIN_AUTO_MODE 11 //pin used for auto-mode +#define PIN_AUTO_MODE 21 //pin used for auto-mode #define POLARITY_THRESHOLD 500 //Threshold for checking the logic of a game-pad #define AF_BASE 100 From 8d8ca0dbcbcf140275098f5959d8b8a0d6984ddf Mon Sep 17 00:00:00 2001 From: thomfischer <13784757+thomfischer@users.noreply.github.com> Date: Sat, 10 Feb 2024 00:58:27 +0100 Subject: [PATCH 3/3] fixup C program working, GUI still making problems --- gui/latency_gui.py | 9 +-------- src/Makefile | 4 ++-- src/inputLatencyMeasureTool.c | 18 +++++++++--------- src/inputLatencyMeasureTool.h | 2 ++ src/joystickControl.h | 1 + 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/gui/latency_gui.py b/gui/latency_gui.py index 6442ce6..3ad682c 100644 --- a/gui/latency_gui.py +++ b/gui/latency_gui.py @@ -19,8 +19,6 @@ import DataPlotter # Accepts a .csv file of a LagBox measurement and returns a dataplot and statistical data -import RPi.GPIO as GPIO - class Constants: UI_FILE = 'latency_gui_800x480.ui' @@ -41,7 +39,7 @@ class Constants: TEXT_INPUT_MAX_CHARS = 64 # Max number of chars of the input fields - GPIO_PIN_ID = 7 # ID of the GPIO Pin where the optocoupler is connected to the Raspberry Pi + GPIO_PIN_ID = 21 # ID of the GPIO Pin where the optocoupler is connected to the Raspberry Pi class LatencyGUI(QtWidgets.QWizard): @@ -70,15 +68,10 @@ class LatencyGUI(QtWidgets.QWizard): def __init__(self): super().__init__() - self.reset_gpio_pins() self.init_ui() # Make sure that the GPIO pin where the raspberry Pi is connected to the optocoupler is set to LOW on startup # Otherwise this could cause unwanted button presses. - def reset_gpio_pins(self): - GPIO.setmode(GPIO.BCM) - GPIO.setup(Constants.GPIO_PIN_ID, GPIO.OUT) - GPIO.output(Constants.GPIO_PIN_ID, GPIO.LOW) def init_ui(self): self.ui = uic.loadUi(Constants.UI_FILE, self) diff --git a/src/Makefile b/src/Makefile index b0aa11b..c04d7a3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,10 +3,10 @@ CFLAGS=-Wall main: inputLatencyMeasureTool.c -mkdir ../bin - $(CC) -Wall -c inputLatencyMeasureTool.c -lwiringPi -lrt -o ../bin/inputLatencyMeasureTool.o -std=gnu99 + $(CC) -Wall -c inputLatencyMeasureTool.c -lgpiod -lrt -o ../bin/inputLatencyMeasureTool.o -std=gnu99 $(CC) -Wall -c joystickControl.c -o ../bin/joystickControl.o -std=c99 $(CC) -Wall -c fileLog.c -o ../bin/fileLog.o -std=c99 - $(CC) ../bin/inputLatencyMeasureTool.o ../bin/joystickControl.o ../bin/fileLog.o -lm -lwiringPi -lrt -lpthread -o ../bin/inputLatencyMeasureTool + $(CC) ../bin/inputLatencyMeasureTool.o ../bin/joystickControl.o ../bin/fileLog.o -lm -lgpiod -lrt -lpthread -o ../bin/inputLatencyMeasureTool clean: -rm -rf ../bin diff --git a/src/inputLatencyMeasureTool.c b/src/inputLatencyMeasureTool.c index 70ffc3c..3985d74 100644 --- a/src/inputLatencyMeasureTool.c +++ b/src/inputLatencyMeasureTool.c @@ -104,7 +104,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) for (int i = 0; i < iterations; i++) { debug("iteration %d \n", i); - gpiod_line_set_value(PIN_AUTO_MODE, 0); + gpiod_line_set_value(lineAutoMode, 0); while (1) @@ -122,7 +122,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) usleep(delayList[i]); dStartTime = getCurTime_microseconds(CLOCK_REALTIME); - gpiod_line_set_value(PIN_AUTO_MODE, 1); + gpiod_line_set_value(lineAutoMode, 1); while (1) { @@ -140,7 +140,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) results[i] = data; - //gpiod_line_set_value(PIN_AUTO_MODE, 0);; //clear pin + //gpiod_line_set_value(lineAutoMode, 0); //clear pin break; } @@ -154,7 +154,7 @@ void autoMode(struct AutoModeData *results, unsigned int iterations) usleep(10); } - gpiod_line_set_value(PIN_AUTO_MODE, 0); + gpiod_line_set_value(lineAutoMode, 0); } int checkButtonState(long long* timestamp) @@ -260,9 +260,9 @@ void testPin(int pin) { for(int i = 0; i < 1000; i++) { - gpiod_line_set_value(pin, 1); + gpiod_line_set_value(lineAutoMode, 1); usleep(1000000); - gpiod_line_set_value(pin, 0); + gpiod_line_set_value(lineAutoMode, 0); usleep(1000000); } } @@ -272,8 +272,8 @@ void setupPins() debug("setting up pins...\n"); lineAutoMode = gpiod_chip_get_line(chip, PIN_AUTO_MODE); - gpiod_line_request_output(PIN_AUTO_MODE, "foo", 0); - gpiod_line_set_value(PIN_AUTO_MODE, 1); + gpiod_line_request_output(lineAutoMode, "foo", 0); + gpiod_line_set_value(lineAutoMode, 1); } // swap array elements @@ -335,9 +335,9 @@ void debug(const char* format, ...) int main(int argc, char *argv[]) { + printf("foo"); srand(time(NULL)); - // wiringPiSetup(); // Open GPIO chip chip = gpiod_chip_open_by_name(chipname); diff --git a/src/inputLatencyMeasureTool.h b/src/inputLatencyMeasureTool.h index a1a7341..32aa17c 100644 --- a/src/inputLatencyMeasureTool.h +++ b/src/inputLatencyMeasureTool.h @@ -2,6 +2,8 @@ #define inputLatencyMeasureTool_h__ #include +#include + // Defines // MCP Params diff --git a/src/joystickControl.h b/src/joystickControl.h index 581d2bf..970101e 100644 --- a/src/joystickControl.h +++ b/src/joystickControl.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include