]> sigrok.org Git - sigrok-firmware-fx2lafw.git/commitdiff
scopes: improve C preprocessor macro robustness
authorGerhard Sittig <redacted>
Mon, 18 Dec 2017 13:50:06 +0000 (14:50 +0100)
committerUwe Hermann <redacted>
Thu, 21 Dec 2017 15:13:49 +0000 (16:13 +0100)
For pin and LED control related #define directives use C language
compound statements. This lets call sites use the macros in intended
ways (like regular function calls) without needing to worry about their
implementation details, or suffering from unexpected behaviour.

Strictly speaking the single statement variants don't require the
wrapper, but I've added one for improved future maintenance.

hw/hantek-6022be/fw.c
hw/hantek-6022bl/fw.c
hw/sainsmart-dds120/fw.c

index e61a32e517e66442c5f22018c841ae46c0850fa4..ec88dacea5c672abd038faf6935f97e13e70f511 100644 (file)
 
 #define SET_CALIBRATION_PULSE(x)
 
-#define TOGGLE_CALIBRATION_PIN() PA7 = !PA7
+#define TOGGLE_CALIBRATION_PIN() do { PA7 = !PA7; } while (0)
 
-#define LED_CLEAR() PC0 = 1; PC1 = 1;
-#define LED_GREEN() PC0 = 1; PC1 = 0;
-#define LED_RED()   PC0 = 0; PC1 = 1;
+#define LED_CLEAR() do { PC0 = 1; PC1 = 1; } while (0)
+#define LED_GREEN() do { PC0 = 1; PC1 = 0; } while (0)
+#define LED_RED()   do { PC0 = 0; PC1 = 1; } while (0)
 
 #define TIMER2_VAL 500
 
index b2ac50172513622c247e325b70f5ac167465e03c..a05f4cbde1ed4d18d0e3be505fdb6b672bf76be8 100644 (file)
 #include <delay.h>
 #include <setupdat.h>
 
-#define SET_ANALOG_MODE() PA7 = 1
+#define SET_ANALOG_MODE() do { PA7 = 1; } while (0)
 
 #define SET_COUPLING(x)
 
 #define SET_CALIBRATION_PULSE(x)
 
-#define TOGGLE_CALIBRATION_PIN() PC2 = !PC2
+#define TOGGLE_CALIBRATION_PIN() do { PC2 = !PC2; } while (0)
 
-#define LED_CLEAR() PC0 = 1; PC1 = 1;
-#define LED_GREEN() PC0 = 1; PC1 = 0;
-#define LED_RED()   PC0 = 0; PC1 = 1;
+#define LED_CLEAR() do { PC0 = 1; PC1 = 1; } while (0)
+#define LED_GREEN() do { PC0 = 1; PC1 = 0; } while (0)
+#define LED_RED()   do { PC0 = 0; PC1 = 1; } while (0)
 
 #define TIMER2_VAL 500
 
index d67e7c912f2d80f7fd1904a812bc96f2eaccb8f2..64d88dd7862d16d0365da08ede5304323ccc2866 100644 (file)
 #include <delay.h>
 #include <setupdat.h>
 
-#define SET_ANALOG_MODE() PA7 = 1
+#define SET_ANALOG_MODE() do { PA7 = 1; } while (0)
 
 #define SET_COUPLING(x) set_coupling(x)
 
 #define SET_CALIBRATION_PULSE(x) set_calibration_pulse(x)
 
 /* Note: There's no PE2 as IOE is not bit-addressable (see TRM 15.2). */
-#define TOGGLE_CALIBRATION_PIN() IOE = IOE ^ 0x04
+#define TOGGLE_CALIBRATION_PIN() do { IOE = IOE ^ 0x04; } while (0)
 
 #define LED_CLEAR() NOP
 #define LED_GREEN() NOP