From 3997d66cdee88ff60a7a7663fb5caa36471bf27b Mon Sep 17 00:00:00 2001 From: Richard Bowman Date: Wed, 22 Feb 2023 12:05:48 +0000 Subject: [PATCH] Merge in com port switching from sangaboard v4 I've refactored the use of the serial port, to store the current serial port in a global variable in a module. This is set to the most recent port to receive data, and so we should always be replying to the port that was used to initiate a command. If SECONDARY_SERIAL_PORT is not defined, this should result in no change - if it is, we should be able to communicate on either port. --- lib/ComPort/ComPort.cpp | 4 + lib/ComPort/ComPort.h | 9 +++ src/boards.h | 17 +++-- src/main.cpp | 46 +++++++---- src/main.h | 3 +- src/modules/endstops/endstops.cpp | 35 ++++----- src/modules/help/help.cpp | 93 ++++++++++++----------- src/modules/illumination/illumination.cpp | 19 ++--- src/modules/light_sensor/light_sensor.cpp | 47 ++++++------ src/modules/stage/stage.cpp | 39 +++++----- src/modules/stepstick/stepstick.cpp | 9 ++- test/test_argument_parsing.cpp | 4 +- 12 files changed, 180 insertions(+), 145 deletions(-) create mode 100644 lib/ComPort/ComPort.cpp create mode 100644 lib/ComPort/ComPort.h diff --git a/lib/ComPort/ComPort.cpp b/lib/ComPort/ComPort.cpp new file mode 100644 index 0000000..94443bb --- /dev/null +++ b/lib/ComPort/ComPort.cpp @@ -0,0 +1,4 @@ +#include + +// Actually define the variable and default to the USB Serial port +HardwareSerial* comPort = (HardwareSerial*) &Serial; \ No newline at end of file diff --git a/lib/ComPort/ComPort.h b/lib/ComPort/ComPort.h new file mode 100644 index 0000000..a5af2ac --- /dev/null +++ b/lib/ComPort/ComPort.h @@ -0,0 +1,9 @@ +#ifndef COMPORT_H +#define COMPORT_H + +#include + +// comPort is a Serial-like object that we can switch. +extern HardwareSerial* comPort; + +#endif \ No newline at end of file diff --git a/src/boards.h b/src/boards.h index ef93337..42699c1 100644 --- a/src/boards.h +++ b/src/boards.h @@ -28,7 +28,7 @@ #define ENDSTOPS_PULLUPS true #define WIRING_ENDSTOPS_MIN {A0,A1,A2} #define WIRING_ENDSTOPS_MAX {A3,A4,A5} - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #elif defined(BOARD_SANGABOARDv2) @@ -40,7 +40,7 @@ #define ENDSTOPS_PULLUPS true #define WIRING_ENDSTOPS_MIN {A0,A1,A2} #define WIRING_ENDSTOPS_MAX {A3,A4,A5} - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #elif defined(BOARD_CUSTOM_BLUEPILL) @@ -52,7 +52,7 @@ #define ENDSTOPS_PULLUPS true #define WIRING_ENDSTOPS_MIN {A0,A1,A2} #define WIRING_ENDSTOPS_MAX {A3,A4,A5} - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #elif defined(BOARD_CUSTOM_PICO) @@ -67,7 +67,7 @@ #define ADDITIONAL_STEPPERS 1 #define WIRING_ADDITIONAL_STEPPERS = {{0, 1, 22, 23}} #define WIRING_STEPSTICK {13,14,15} //enable, step, dir todo: move to boards.h - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #elif defined(BOARD_SANGABOARDv5) @@ -85,9 +85,10 @@ #define WIRING_SERIAL_TX 8 #define WIRING_SERIAL_RX 9 #ifdef USB_SERIAL - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #else - #define SERIAL_PORT Serial2 + #define PRIMARY_SERIAL_PORT Serial + #define SECONDARY_SERIAL_PORT Serial2 #endif #define PWM_NUM 2 #define WIRING_PWM_LEDS {25, 29} @@ -103,7 +104,7 @@ #define WIRING_ENDSTOPS_MIN {A0,A1,A2} #define WIRING_ENDSTOPS_MAX {A3,A4,A5} #define WIRING_STEPSTICK {13,12,27} - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #elif defined(BOARD_CUSTOM) @@ -118,7 +119,7 @@ #define ADDITIONAL_STEPPERS 1 #define WIRING_ADDITIONAL_STEPPERS = {{0, 1, 22, 23}} #define WIRING_STEPSTICK {8,9,10} //enable, step, dir todo: move to boards.h - #define SERIAL_PORT Serial + #define PRIMARY_SERIAL_PORT Serial #define PWM_NUM 0 #define WIRING_PWM_LEDS {} #endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c8a19ab..fc56122 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,7 @@ #include "config.h" #include #include +#include #ifdef HELP #include "modules/help/help.h" @@ -73,9 +74,9 @@ void handle_command(String received_command) } #ifdef HELP - SERIAL_PORT.println(F("Type 'help' for a list of commands.")); + comPort->println(F("Type 'help' for a list of commands.")); #else - SERIAL_PORT.println(F("Invalid command")); + comPort->println(F("Invalid command")); #endif } @@ -104,32 +105,32 @@ uint8_t parse_arguments(char **arguments, String command, uint8_t max_args) void get_version(String) { - SERIAL_PORT.println(F(VERSION_STRING)); + comPort->println(F(VERSION_STRING)); return; } void get_modules(String) { #if defined(LIGHTSENSOR) && defined(LIGHT_SENSOR_ADAFRUIT_TSL2591) - SERIAL_PORT.println(F("Light Sensor: TSL2591")); + comPort->println(F("Light Sensor: TSL2591")); #elif defined(LIGHTSENSOR) && defined(LIGHT_SENSOR_ADAFRUIT_ADS1115) - SERIAL_PORT.println(F("Light Sensor: ADS1115")); + comPort->println(F("Light Sensor: ADS1115")); #endif #if defined(ENDSTOPS) - SERIAL_PORT.print("Endstops:"); + comPort->print("Endstops:"); #ifdef ENDSTOPS_MIN - SERIAL_PORT.print(" min"); + comPort->print(" min"); #endif #ifdef ENDSTOPS_MAX - SERIAL_PORT.print(" max"); + comPort->print(" max"); #endif #ifdef ENDSTOPS_SOFT - SERIAL_PORT.print(" soft"); + comPort->print(" soft"); #endif - SERIAL_PORT.println(); + comPort->println(); #endif - SERIAL_PORT.println("--END--"); + comPort->println("--END--"); } #ifndef UNIT_TEST @@ -141,9 +142,15 @@ void setup() Serial2.setRX(WIRING_SERIAL_RX); #endif - SERIAL_PORT.begin(115200); - while (!SERIAL_PORT) + comPort = (HardwareSerial*) &PRIMARY_SERIAL_PORT; + PRIMARY_SERIAL_PORT->begin(115200); + while (!PRIMARY_SERIAL_PORT) delay(1); + #if defined(SECONDARY_SERIAL_PORT) + SECONDARY_SERIAL_PORT->begin(115200); + while (!SECONDARY_SERIAL_PORT) + delay(1); + #endif register_module(core_commands, NULL); @@ -173,14 +180,21 @@ void setup() #endif registered_commands[registered_commands_count] = &end_command; - SERIAL_PORT.println(F(VERSION_STRING)); + comPort->println(F(VERSION_STRING)); } void loop() { - if (SERIAL_PORT.available()) + if (PRIMARY_SERIAL_PORT.available()) { - handle_command(SERIAL_PORT.readStringUntil('\n')); + comPort = (HardwareSerial*) &PRIMARY_SERIAL_PORT; + handle_command(comPort->readStringUntil('\n')); + } + #if defined(SECONDARY_SERIAL_PORT) + if (SECONDARY_SERIAL_PORT.available()) + { + comPort = (HardwareSerial*) &SECONDARY_SERIAL_PORT; + handle_command(comPort->readStringUntil('\n')); } for (int i = 0; i < registered_loop_fn_count; i++) diff --git a/src/main.h b/src/main.h index e69ec23..2ca26a8 100644 --- a/src/main.h +++ b/src/main.h @@ -1,8 +1,9 @@ #ifndef MAIN_H #include "config.h" #include +#include #ifdef DEBUG_ON -#define D(x) Serial.println(x) +#define D(x) comPort->println(x) #else #define D(x) #endif diff --git a/src/modules/endstops/endstops.cpp b/src/modules/endstops/endstops.cpp index 330c1c9..ada01ff 100644 --- a/src/modules/endstops/endstops.cpp +++ b/src/modules/endstops/endstops.cpp @@ -2,6 +2,7 @@ #ifdef ENDSTOPS #include "endstops.h" #include "../stage/stage.h" +#include #ifdef SUPPORT_EEPROM #include #else @@ -99,7 +100,7 @@ void endstops_loop() homing_final = false; min_step_delay = previous_step_delay; home_retreat(); - SERIAL_PORT.println("done."); + comPort->println("done."); return; } } @@ -121,8 +122,8 @@ int8_t endstops_check() if (endstop_break != 0 && stage_moving) { - SERIAL_PORT.print(F("Endstop hit:")); - SERIAL_PORT.println(endstop_break); + comPort->print(F("Endstop hit:")); + comPort->println(endstop_break); //if we have both min/max endstops, axis_max is adjusted to the correct value //if we only have min, we go from 0 -> predefined axis_max //if we only have max, we go from 0 -> predefined axis_max @@ -154,16 +155,16 @@ void endstops_status(String command) EACH_MOTOR { if (i > 0) - SERIAL_PORT.print(" "); + comPort->print(" "); if (endstop_triggered(i, -1)) - SERIAL_PORT.print("-1"); + comPort->print("-1"); else if (endstop_triggered(i, 1)) - SERIAL_PORT.print("1"); + comPort->print("1"); else - SERIAL_PORT.print("0"); + comPort->print("0"); } - SERIAL_PORT.println(); + comPort->println(); } void print_axes_max(String command) @@ -171,10 +172,10 @@ void print_axes_max(String command) EACH_MOTOR { if (i > 0) - SERIAL_PORT.print(" "); - SERIAL_PORT.print(axis_max[i]); + comPort->print(" "); + comPort->print(axis_max[i]); } - SERIAL_PORT.println(); + comPort->println(); } void home_start(uint8_t axes, int8_t direction) @@ -226,7 +227,7 @@ void home_final() void endstops_home_min(String command) { #ifndef ENDSTOPS_MIN - SERIAL_PORT.println(F("Min endstops not installed")); + comPort->println(F("Min endstops not installed")); return; #endif if (command.equals("home_min")) @@ -241,7 +242,7 @@ void endstops_home_min(String command) void endstops_home_max(String command) { #ifndef ENDSTOPS_MAX - SERIAL_PORT.println(F("Max endstops not installed")); + comPort->println(F("Max endstops not installed")); return; #endif if (command.equals("home_max")) @@ -293,10 +294,10 @@ void endstops_setup() } //endstops? - get triggered endstops in (1,0,-1) format for max, none, min")); -// SERIAL_PORT.println(F("home_min - home given (00000zyx byte, e.g. 1 for x) or all axes to their min position")); -// SERIAL_PORT.println(F("home_max - home given (00000zyx byte, e.g. 3 for x and y) or all axes to their max position")); -// SERIAL_PORT.println(F("max_p? - return positions of max endstops")); -// SERIAL_PORT.println(F("max +// comPort->println(F("home_min - home given (00000zyx byte, e.g. 1 for x) or all axes to their min position")); +// comPort->println(F("home_max - home given (00000zyx byte, e.g. 3 for x and y) or all axes to their max position")); +// comPort->println(F("max_p? - return positions of max endstops")); +// comPort->println(F("max extern const Command endstops_commands[] = { {"endstops?", endstops_status}, {"home_min", endstops_home_min}, diff --git a/src/modules/help/help.cpp b/src/modules/help/help.cpp index c530481..dbc8027 100644 --- a/src/modules/help/help.cpp +++ b/src/modules/help/help.cpp @@ -1,6 +1,7 @@ #include "config.h" #ifdef HELP #include "help.h" +#include void help_setup() { @@ -9,78 +10,78 @@ void help_setup() void help(String command) { - SERIAL_PORT.println(""); - SERIAL_PORT.print("Board: "); - SERIAL_PORT.println(F(BOARD_STRING)); + comPort->println(""); + comPort->print("Board: "); + comPort->println(F(BOARD_STRING)); #ifdef LIGHT_SENSOR #if defined ADAFRUIT_TSL2591 - SERIAL_PORT.println(F("Compiled with Adafruit TSL2591 support")); + comPort->println(F("Compiled with Adafruit TSL2591 support")); #elif defined ADAFRUIT_ADS1115 - SERIAL_PORT.println(F("Compiled with Adafruit ADS1115 support")); + comPort->println(F("Compiled with Adafruit ADS1115 support")); #endif #endif //LIGHT_SENSOR #ifdef ENDSTOPS #ifdef ENDSTOPS_MIN - SERIAL_PORT.println(F("Compiled with min endstops support")); + comPort->println(F("Compiled with min endstops support")); #endif #ifdef ENDSTOPS_MAX - SERIAL_PORT.println(F("Compiled with max endstops support")); + comPort->println(F("Compiled with max endstops support")); #endif #endif //ENDSTOPS - SERIAL_PORT.println(""); - SERIAL_PORT.println(F("Commands (terminated by a newline character):")); + comPort->println(""); + comPort->println(F("Commands (terminated by a newline character):")); #ifdef STAGE - SERIAL_PORT.println(F("mrx - relative move in x")); - SERIAL_PORT.println(F("mry - relative move in y")); - SERIAL_PORT.println(F("mrz - relative move in z")); - SERIAL_PORT.println(F("mr - relative move in all 3 axes")); - SERIAL_PORT.println(F("release - de-energise all motors")); - SERIAL_PORT.println(F("p? - print position (3 space-separated integers")); - SERIAL_PORT.println(F("ramp_time - set the time taken to accelerate/decelerate in us")); - SERIAL_PORT.println(F("min_step_delay - set the minimum time between steps in us.")); - SERIAL_PORT.println(F("dt - set the minimum time between steps in us.")); - SERIAL_PORT.println(F("ramp_time? - get the time taken to accelerate/decelerate in us")); - SERIAL_PORT.println(F("min_step_delay? - get the minimum time between steps in us.")); - SERIAL_PORT.println(F("zero - set the current position to zero.")); - SERIAL_PORT.println(F("stop - stop a move in progress.")); - SERIAL_PORT.println(F("blocking_moves? - get blocking moves enabled")); - SERIAL_PORT.println(F("blocking_moves - enable/disable blocking moves")); - SERIAL_PORT.println(F("moving? - check if a move is in progress")); - SERIAL_PORT.println(F("notify_on_stop - respond with stopped when current move finishes")); + comPort->println(F("mrx - relative move in x")); + comPort->println(F("mry - relative move in y")); + comPort->println(F("mrz - relative move in z")); + comPort->println(F("mr - relative move in all 3 axes")); + comPort->println(F("release - de-energise all motors")); + comPort->println(F("p? - print position (3 space-separated integers")); + comPort->println(F("ramp_time - set the time taken to accelerate/decelerate in us")); + comPort->println(F("min_step_delay - set the minimum time between steps in us.")); + comPort->println(F("dt - set the minimum time between steps in us.")); + comPort->println(F("ramp_time? - get the time taken to accelerate/decelerate in us")); + comPort->println(F("min_step_delay? - get the minimum time between steps in us.")); + comPort->println(F("zero - set the current position to zero.")); + comPort->println(F("stop - stop a move in progress.")); + comPort->println(F("blocking_moves? - get blocking moves enabled")); + comPort->println(F("blocking_moves - enable/disable blocking moves")); + comPort->println(F("moving? - check if a move is in progress")); + comPort->println(F("notify_on_stop - respond with stopped when current move finishes")); #endif //STAGE #ifdef LIGHT_SENSOR - SERIAL_PORT.println(F("light_sensor_gain - set the gain of the light sensor")); - SERIAL_PORT.println(F("light_sensor_gain? - get the gain of the light sensor")); - SERIAL_PORT.println(F("light_sensor_gain_values? - get the allowable gain values of the light sensor")); - SERIAL_PORT.println(F("light_sensor_integration_time? - get the integration time in milliseconds")); - SERIAL_PORT.println(F("light_sensor_intensity? - read the current value from the full spectrum diode")); + comPort->println(F("light_sensor_gain - set the gain of the light sensor")); + comPort->println(F("light_sensor_gain? - get the gain of the light sensor")); + comPort->println(F("light_sensor_gain_values? - get the allowable gain values of the light sensor")); + comPort->println(F("light_sensor_integration_time? - get the integration time in milliseconds")); + comPort->println(F("light_sensor_intensity? - read the current value from the full spectrum diode")); #endif //LIGHT_SENSOR #if defined(ENDSTOPS_MIN) || defined(ENDSTOPS_MAX) - SERIAL_PORT.println(F("endstops? - get triggered endstops in (1,0,-1) format for max, none, min")); - SERIAL_PORT.println(F("home_min - home given (00000zyx byte, e.g. 1 for x) or all axes to their min position")); - SERIAL_PORT.println(F("home_max - home given (00000zyx byte, e.g. 3 for x and y) or all axes to their max position")); - SERIAL_PORT.println(F("max_p? - return positions of max endstops")); - SERIAL_PORT.println(F("max - set maximum positions")); + comPort->println(F("endstops? - get triggered endstops in (1,0,-1) format for max, none, min")); + comPort->println(F("home_min - home given (00000zyx byte, e.g. 1 for x) or all axes to their min position")); + comPort->println(F("home_max - home given (00000zyx byte, e.g. 3 for x and y) or all axes to their max position")); + comPort->println(F("max_p? - return positions of max endstops")); + comPort->println(F("max - set maximum positions")); #endif #ifdef STEPSTICK - SERIAL_PORT.println(F("stepstick_move - move stepper by with max speed ")); - SERIAL_PORT.println(F("stepstick_release - release stepstick stepper")); - SERIAL_PORT.println(F("stepstick_stop - abort stepstick move")); + comPort->println(F("stepstick_move - move stepper by with max speed ")); + comPort->println(F("stepstick_release - release stepstick stepper")); + comPort->println(F("stepstick_stop - abort stepstick move")); #endif - //SERIAL_PORT.println(F("test_mode - set test_mode ")); - SERIAL_PORT.println(F("version - get firmware version string")); - SERIAL_PORT.println(""); - SERIAL_PORT.println("Input Key:"); - SERIAL_PORT.println(F(" - a decimal integer.")); - SERIAL_PORT.println(""); - SERIAL_PORT.println("--END--"); + //comPort->println(F("test_mode - set test_mode ")); + comPort->println(F("version - get firmware version string")); + comPort->println(""); + comPort->println("Input Key:"); + comPort->println(F(" - a decimal integer.")); + comPort->println(""); + comPort->println("--END--"); } #endif //HELP \ No newline at end of file diff --git a/src/modules/illumination/illumination.cpp b/src/modules/illumination/illumination.cpp index c82a825..e5b6c26 100644 --- a/src/modules/illumination/illumination.cpp +++ b/src/modules/illumination/illumination.cpp @@ -1,6 +1,7 @@ #include "config.h" #ifdef ILLUMINATION #include "illumination.h" +#include #ifdef SUPPORT_EEPROM #include #else @@ -16,11 +17,11 @@ void illumination_pwm_freq(String command) analogWriteFreq(atol(args[0]));//32khz seems sensible analogWriteRange(65535); - SERIAL_PORT.print("Frequency set: "); - SERIAL_PORT.print(atol(args[0])); - SERIAL_PORT.println("Hz"); + comPort->print("Frequency set: "); + comPort->print(atol(args[0])); + comPort->println("Hz"); #else - SERIAL_PORT.println("Feature not supported"); + comPort->println("Feature not supported"); #endif free(args[0]); @@ -35,7 +36,7 @@ void illumination_pwm(String command) uint8_t index = atoi(args[0]); if (index >= PWM_NUM) { - Serial.println("Invalid index"); + comPort->println("Invalid index"); } float val = atof(args[1]); @@ -50,8 +51,8 @@ void illumination_pwm(String command) #endif analogWrite(pwm_led_pins[index], pwm_val); - SERIAL_PORT.print("Illumination set"); - SERIAL_PORT.println(pwm_val); + comPort->print("Illumination set"); + comPort->println(pwm_val); free(args[0]); free(args[1]); @@ -117,10 +118,10 @@ void cc_set(String command) delayMicroseconds(stepd); digitalWrite(WIRING_CC_LED, HIGH); delayMicroseconds(td); - Serial.println("Stepping CC"); //TODO remove debug print + comPort->println("Stepping CC"); //TODO remove debug print } #else - SERIAL_PORT.println("CC LED not supported"); + comPort->println("CC LED not supported"); #endif } diff --git a/src/modules/light_sensor/light_sensor.cpp b/src/modules/light_sensor/light_sensor.cpp index 70b89e6..b4f33c1 100644 --- a/src/modules/light_sensor/light_sensor.cpp +++ b/src/modules/light_sensor/light_sensor.cpp @@ -1,4 +1,5 @@ #include "config.h" +#include #ifdef LIGHT_SENSOR #include "light_sensor.h" #include "config.h" @@ -54,35 +55,35 @@ void setup_light_sensor_device() } else { - SERIAL_PORT.println(F("No light sensor found. NB your board will start up faster if you recompile without light sensor support.")); + comPort->println(F("No light sensor found. NB your board will start up faster if you recompile without light sensor support.")); } } void print_light_sensor_gain() { // Print the current gain value of the light sensor - SERIAL_PORT.print(F("light sensor gain ")); + comPort->print(F("light sensor gain ")); tsl2591Gain_t gain = tsl.getGain(); switch (gain) { case TSL2591_GAIN_LOW: - SERIAL_PORT.println(F("1x (Low)")); + comPort->println(F("1x (Low)")); break; case TSL2591_GAIN_MED: - SERIAL_PORT.println(F("25x (Medium)")); + comPort->println(F("25x (Medium)")); break; case TSL2591_GAIN_HIGH: - SERIAL_PORT.println(F("428x (High)")); + comPort->println(F("428x (High)")); break; case TSL2591_GAIN_MAX: - SERIAL_PORT.println(F("9876x (Max)")); + comPort->println(F("9876x (Max)")); break; } } void light_sensor_gain_values(String command) { // Print the allowable gain values of the light sensor - SERIAL_PORT.println(F("light sensor gains: 1x, 25x, 428x, 9876x")); + comPort->println(F("light sensor gains: 1x, 25x, 428x, 9876x")); } void set_light_sensor_gain(int newgain) @@ -103,7 +104,7 @@ void set_light_sensor_gain(int newgain) tsl.setGain(TSL2591_GAIN_MAX); break; default: - SERIAL_PORT.println(F("Error: gain may only be 1, 25, 428, or 9876.")); + comPort->println(F("Error: gain may only be 1, 25, 428, or 9876.")); return; } print_light_sensor_gain(); @@ -112,16 +113,16 @@ void set_light_sensor_gain(int newgain) void light_sensor_integration_time(String command) { // Print the current integration time in milliseconds. - SERIAL_PORT.print(F("light sensor integration time ")); - SERIAL_PORT.print((tsl.getTiming() + 1) * 100, DEC); - SERIAL_PORT.println(F(" ms")); + comPort->print(F("light sensor integration time ")); + comPort->print((tsl.getTiming() + 1) * 100, DEC); + comPort->println(F(" ms")); } void light_sensor_intensity(String command) { // Print the current light value uint16_t x = tsl.getLuminosity(TSL2591_FULLSPECTRUM); - SERIAL_PORT.println(x, DEC); + comPort->println(x, DEC); } #endif // ADAFRUIT_TSL2591 @@ -137,34 +138,34 @@ void setup_light_sensor_device() void print_light_sensor_gain() { // Print the current gain value of the light sensor - SERIAL_PORT.print(F("light sensor gain ")); + comPort->print(F("light sensor gain ")); adsGain_t gain = ads.getGain(); switch (gain) { case GAIN_TWOTHIRDS: - SERIAL_PORT.println(F("0.66x (specify 0)")); + comPort->println(F("0.66x (specify 0)")); break; case GAIN_ONE: - SERIAL_PORT.println(F("1x")); + comPort->println(F("1x")); break; case GAIN_TWO: - SERIAL_PORT.println(F("2x")); + comPort->println(F("2x")); break; case GAIN_FOUR: - SERIAL_PORT.println(F("4x")); + comPort->println(F("4x")); break; case GAIN_EIGHT: - SERIAL_PORT.println(F("8x")); + comPort->println(F("8x")); break; case GAIN_SIXTEEN: - SERIAL_PORT.println(F("16x")); + comPort->println(F("16x")); break; } } void light_sensor_gain_values(String command) { // Print the allowable gain values of the light sensor - SERIAL_PORT.println(F("light sensor gains: 0.66x (specify 0), 1x, 2x, 4x, 8x, 16x")); + comPort->println(F("light sensor gains: 0.66x (specify 0), 1x, 2x, 4x, 8x, 16x")); } void set_light_sensor_gain(int newgain) @@ -191,7 +192,7 @@ void set_light_sensor_gain(int newgain) ads.setGain(GAIN_SIXTEEN); break; default: - SERIAL_PORT.println(F("Error: gain may only be 0, 1, 2, 4, 8, 16 (0 means 2/3).")); + comPort->println(F("Error: gain may only be 0, 1, 2, 4, 8, 16 (0 means 2/3).")); return; } print_light_sensor_gain(); @@ -200,7 +201,7 @@ void set_light_sensor_gain(int newgain) void light_sensor_integration_time(String command) { // Print the current integration time in milliseconds. - SERIAL_PORT.println(F("integration time not supported for ADS1115")); + comPort->println(F("integration time not supported for ADS1115")); } void light_sensor_intensity(String command) @@ -215,7 +216,7 @@ void light_sensor_intensity(String command) uint16_t x = ads.readADC_SingleEnded(ch); //single ended measurement on pin ch (0-3) //uint16_t x = ads.readADC_Differential_0_1(); //differential measurement on pins 0,1 - SERIAL_PORT.println(x, DEC); + comPort->println(x, DEC); } #endif // ADAFRUIT_ADS1115 #endif \ No newline at end of file diff --git a/src/modules/stage/stage.cpp b/src/modules/stage/stage.cpp index b7b8a51..c228c86 100644 --- a/src/modules/stage/stage.cpp +++ b/src/modules/stage/stage.cpp @@ -8,6 +8,7 @@ #include "dummyEEPROM.h" #endif #include "main.h" +#include // The array below has 3 stepper objects, for X,Y,Z respectively const uint8_t n_motors = STAGE_N_MOTORS; @@ -76,10 +77,10 @@ void print_position() EACH_MOTOR { if (i > 0) - SERIAL_PORT.print(" "); - SERIAL_PORT.print(current_pos[i]); + comPort->print(" "); + comPort->print(current_pos[i]); } - SERIAL_PORT.println(); + comPort->println(); } unsigned long move_start_time = 0; @@ -124,7 +125,7 @@ void start_move(long displ[n_motors]) } else { - SERIAL_PORT.println("done."); + comPort->println("done."); } } @@ -183,7 +184,7 @@ void stage_loop() if (!stage_moving && notify_on_stop) { - SERIAL_PORT.println("stopped"); + comPort->println("stopped"); notify_on_stop = false; } } @@ -233,7 +234,7 @@ void stage_release(String command) { releaseMotor(i); } - SERIAL_PORT.println("done"); + comPort->println("done"); } void stage_p(String command) @@ -247,14 +248,14 @@ void stage_min_step_delay(String command) parse_arguments(args, command, 1); if (args[0][0] == '?') { - SERIAL_PORT.print("minimum step delay "); - SERIAL_PORT.println(min_step_delay); + comPort->print("minimum step delay "); + comPort->println(min_step_delay); } else { min_step_delay = atol(args[0]); EEPROM.put(min_step_delay_eeprom, min_step_delay); - SERIAL_PORT.println("done."); + comPort->println("done."); } free(args[0]); } @@ -265,14 +266,14 @@ void stage_ramp_time(String command) parse_arguments(args, command, 1); if (args[0][0] == '?') { - SERIAL_PORT.print("ramp_time "); - SERIAL_PORT.println(ramp_time); + comPort->print("ramp_time "); + comPort->println(ramp_time); } else { ramp_time = atol(args[0]); EEPROM.put(ramp_time_eeprom, ramp_time); - SERIAL_PORT.println("done."); + comPort->println("done."); } free(args[0]); } @@ -283,41 +284,41 @@ void update_blocking_moves(String command) parse_arguments(args, command, 1); if (args[0][0] == '?') { - SERIAL_PORT.print("blocking_moves "); - SERIAL_PORT.println(non_blocking_moves ? "false" : "true"); + comPort->print("blocking_moves "); + comPort->println(non_blocking_moves ? "false" : "true"); } else { non_blocking_moves = !(args[0][0] == 't'); EEPROM.put(non_blocking_moves_eeprom, non_blocking_moves); - SERIAL_PORT.println("done."); + comPort->println("done."); } } void stage_zero(String command) { EACH_MOTOR current_pos[i] = 0; - SERIAL_PORT.println(F("position reset to 0 0 0")); + comPort->println(F("position reset to 0 0 0")); EEPROM.put(0, current_pos); } void stage_stop(String command) { stage_moving = false; - SERIAL_PORT.println("Move aborted"); + comPort->println("Move aborted"); } void is_stage_moving(String command) { //TODO: should I bother checking for a ? - SERIAL_PORT.println(stage_moving ? "true" : "false"); + comPort->println(stage_moving ? "true" : "false"); } void activate_notify_on_stop(String command) { if (!stage_moving) { - SERIAL_PORT.println("Error: stage is not moving"); + comPort->println("Error: stage is not moving"); } else { diff --git a/src/modules/stepstick/stepstick.cpp b/src/modules/stepstick/stepstick.cpp index 6a26c8a..d364fd3 100644 --- a/src/modules/stepstick/stepstick.cpp +++ b/src/modules/stepstick/stepstick.cpp @@ -1,6 +1,7 @@ #include "config.h" #ifdef STEPSTICK #include "stepstick.h" +#include #ifdef SUPPORT_EEPROM #include #else @@ -16,13 +17,13 @@ bool moving = false; void stepstick_release(String command) { digitalWrite(stepstick_pins[0], HIGH);//start with motor disabled - SERIAL_PORT.println("Stepstick released"); + comPort->println("Stepstick released"); } void stepstick_stop(String command) { stepper.stop(); - SERIAL_PORT.println("Stepstick stopping"); + comPort->println("Stepstick stopping"); } void stepstick_move(String command) @@ -37,7 +38,7 @@ void stepstick_move(String command) stepper.moveTo(stepper.currentPosition() + distance); free(args[0]); free(args[1]); - SERIAL_PORT.println("Stepstick started"); + comPort->println("Stepstick started"); moving = true; } @@ -55,7 +56,7 @@ void stepstick_loop() if (stepper.distanceToGo() == 0 && moving) { moving = false; - SERIAL_PORT.println("Stepstick stopped"); + comPort->println("Stepstick stopped"); } } diff --git a/test/test_argument_parsing.cpp b/test/test_argument_parsing.cpp index f8b01ba..f7c5e68 100644 --- a/test/test_argument_parsing.cpp +++ b/test/test_argument_parsing.cpp @@ -70,9 +70,9 @@ void test_multiple_argument_parsing(void) void setup() { - Serial.begin(115200); + comPort->begin(115200); // NOTE!!! Wait for >2 secs - // if board doesn't support software reset via Serial.DTR/RTS + // if board doesn't support software reset via comPort->DTR/RTS delay(2000); UNITY_BEGIN(); // IMPORTANT LINE! //bizzare string issues caused this to fail in specific sequences, so we run it multiple times