altos: Add LED test command to pca9922 driver
authorKeith Packard <keithp@keithp.com>
Tue, 13 May 2014 05:50:41 +0000 (22:50 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 13 May 2014 05:50:41 +0000 (22:50 -0700)
This lets you control the LEDs from the command line to test things.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_pca9922.c

index d376b9681194fc94d00d394781f74b19a75ace98..6d1b5fae6b6267d1a6457d3066490888d72e8084 100644 (file)
@@ -66,6 +66,24 @@ ao_led_set_mask(uint8_t colors, uint8_t mask)
        ao_led_apply();
 }
 
+#define LED_TEST       1
+#if LED_TEST
+static void
+ao_led_test(void)
+{
+       ao_cmd_hexbyte();
+       if (ao_cmd_status != ao_cmd_success)
+               return;
+       ao_led_set(ao_cmd_lex_i);
+       printf("LEDs set to %02x\n", ao_cmd_lex_i);
+}
+
+static const struct ao_cmds ao_led_cmds[] = {
+       { ao_led_test,  "l <value>\0Set LEDs to <value>" },
+       { 0, NULL }
+};
+#endif
+
 void
 ao_led_toggle(uint8_t colors)
 {
@@ -86,4 +104,7 @@ ao_led_init(uint8_t enable)
 {
        (void) enable;
        ao_enable_output(AO_PCA9922_CS_PORT, AO_PCA9922_CS_PIN, AO_PCA9922_CS, 1);
+#if LED_TEST
+       ao_cmd_register(&ao_led_cmds[0]);
+#endif
 }