aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulian Oes <julian@oes.ch>2013-08-15 17:34:49 +0200
committerJulian Oes <julian@oes.ch>2013-08-15 17:34:49 +0200
commit0c4e3dce0ef82ea3a7dd2b7bed8b23108f34205d (patch)
tree99000c24de681415db725fe01d779193448a7faf /src
parentf51320d1afac836085ee4d9dbdaeda7af18bcbda (diff)
downloadpx4-firmware-0c4e3dce0ef82ea3a7dd2b7bed8b23108f34205d.tar.gz
px4-firmware-0c4e3dce0ef82ea3a7dd2b7bed8b23108f34205d.tar.bz2
px4-firmware-0c4e3dce0ef82ea3a7dd2b7bed8b23108f34205d.zip
Added LED_TOGGLE for normal LEDs
Diffstat (limited to 'src')
-rw-r--r--src/drivers/boards/px4fmu-v1/px4fmu_led.c19
-rw-r--r--src/drivers/boards/px4fmu-v2/px4fmu2_led.c12
-rw-r--r--src/drivers/drv_led.h1
-rw-r--r--src/drivers/led/led.cpp6
4 files changed, 38 insertions, 0 deletions
diff --git a/src/drivers/boards/px4fmu-v1/px4fmu_led.c b/src/drivers/boards/px4fmu-v1/px4fmu_led.c
index aa83ec130..ea91f34ad 100644
--- a/src/drivers/boards/px4fmu-v1/px4fmu_led.c
+++ b/src/drivers/boards/px4fmu-v1/px4fmu_led.c
@@ -57,6 +57,7 @@ __BEGIN_DECLS
extern void led_init();
extern void led_on(int led);
extern void led_off(int led);
+extern void led_toggle(int led);
__END_DECLS
__EXPORT void led_init()
@@ -94,3 +95,21 @@ __EXPORT void led_off(int led)
stm32_gpiowrite(GPIO_LED2, true);
}
}
+
+__EXPORT void led_toggle(int led)
+{
+ if (led == 0)
+ {
+ if (stm32_gpioread(GPIO_LED1))
+ stm32_gpiowrite(GPIO_LED1, false);
+ else
+ stm32_gpiowrite(GPIO_LED1, true);
+ }
+ if (led == 1)
+ {
+ if (stm32_gpioread(GPIO_LED2))
+ stm32_gpiowrite(GPIO_LED2, false);
+ else
+ stm32_gpiowrite(GPIO_LED2, true);
+ }
+}
diff --git a/src/drivers/boards/px4fmu-v2/px4fmu2_led.c b/src/drivers/boards/px4fmu-v2/px4fmu2_led.c
index 5ded4294e..a856ccb02 100644
--- a/src/drivers/boards/px4fmu-v2/px4fmu2_led.c
+++ b/src/drivers/boards/px4fmu-v2/px4fmu2_led.c
@@ -57,6 +57,7 @@ __BEGIN_DECLS
extern void led_init();
extern void led_on(int led);
extern void led_off(int led);
+extern void led_toggle(int led);
__END_DECLS
__EXPORT void led_init()
@@ -83,3 +84,14 @@ __EXPORT void led_off(int led)
stm32_gpiowrite(GPIO_LED1, true);
}
}
+
+__EXPORT void led_toggle(int led)
+{
+ if (led == 1)
+ {
+ if (stm32_gpioread(GPIO_LED1))
+ stm32_gpiowrite(GPIO_LED1, false);
+ else
+ stm32_gpiowrite(GPIO_LED1, true);
+ }
+}
diff --git a/src/drivers/drv_led.h b/src/drivers/drv_led.h
index 97f2db107..4ce04696e 100644
--- a/src/drivers/drv_led.h
+++ b/src/drivers/drv_led.h
@@ -54,6 +54,7 @@
#define LED_ON _IOC(_LED_BASE, 0)
#define LED_OFF _IOC(_LED_BASE, 1)
+#define LED_TOGGLE _IOC(_LED_BASE, 2)
__BEGIN_DECLS
diff --git a/src/drivers/led/led.cpp b/src/drivers/led/led.cpp
index fe307223f..a37eaca53 100644
--- a/src/drivers/led/led.cpp
+++ b/src/drivers/led/led.cpp
@@ -52,6 +52,7 @@ __BEGIN_DECLS
extern void led_init();
extern void led_on(int led);
extern void led_off(int led);
+extern void led_toggle(int led);
__END_DECLS
class LED : device::CDev
@@ -98,6 +99,11 @@ LED::ioctl(struct file *filp, int cmd, unsigned long arg)
led_off(arg);
break;
+ case LED_TOGGLE:
+ led_toggle(arg);
+ break;
+
+
default:
result = CDev::ioctl(filp, cmd, arg);
}