]> sigrok.org Git - sigrok-firmware-fx2lafw.git/commitdiff
fx2lafw: Factor out LED control.
authorMaciej Kurc <redacted>
Wed, 24 Jan 2018 18:39:04 +0000 (19:39 +0100)
committerUwe Hermann <redacted>
Wed, 24 Jan 2018 18:41:08 +0000 (19:41 +0100)
Also, make the LED polarity compile-time configurable.

[Note: This is a slightly modified version of a patch from Maciej Kurc.]

fx2lafw.c
include/fx2lafw.h

index d601e277a6983bcbbc609dae6c86d88ebb68afc9..1035713da4f560736af1dd4e6ab1c6a3eac8d746 100644 (file)
--- a/fx2lafw.c
+++ b/fx2lafw.c
@@ -215,7 +215,7 @@ void ibn_isr(void) __interrupt IBN_ISR
         */
        if ((IBNIRQ & bmEP2IBN) && (gpif_acquiring == PREPARED)) {
                ledcounter = 1;
-               PA1 = 0;
+               LED_OFF();
                gpif_acquisition_start();
        }
 
@@ -246,11 +246,11 @@ void timer2_isr(void) __interrupt TF2_ISR
        /* Blink LED during acquisition, keep it on otherwise. */
        if (gpif_acquiring == RUNNING) {
                if (--ledcounter == 0) {
-                       PA1 = !PA1;
+                       LED_TOGGLE();
                        ledcounter = 1000;
                }
        } else if (gpif_acquiring == STOPPED) {
-               PA1 = 1; /* LED on. */
+               LED_ON();
        }
        TF2 = 0;
 }
@@ -276,10 +276,8 @@ void fx2lafw_init(void)
        ENABLE_HISPEED();
        ENABLE_USBRESET();
 
-       /* PA1 (LED) is an output. */
-       PORTACFG = 0;
-       OEA = (1 << 1);
-       PA1 = 1; /* LED on. */
+       LED_INIT();
+       LED_ON();
 
        /* Init timer2. */
        RCAP2L = -500 & 0xff;
index 7a24cf66240dfc0030044b37e2ad1adc5524b9fc..07f378f063687fae4829abb3b84a37ae2c1f2dd3 100644 (file)
 #define FX2LAFW_VERSION_MAJOR  1
 #define FX2LAFW_VERSION_MINOR  2
 
+#define LED_POLARITY           1 /* 1: active-high, 0: active-low */
+
+#define LED_INIT()             do { PORTACFG = 0; OEA = (1 << 1); } while (0)
+#define LED_ON()               do { PA1 = LED_POLARITY; } while (0)
+#define LED_OFF()              do { PA1 = !LED_POLARITY; } while (0)
+#define LED_TOGGLE()           do { PA1 = !PA1; } while (0)
+
 #endif