summaryrefslogtreecommitdiff
path: root/openpicc/application/led.c
diff options
context:
space:
mode:
Diffstat (limited to 'openpicc/application/led.c')
-rw-r--r--openpicc/application/led.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/openpicc/application/led.c b/openpicc/application/led.c
new file mode 100644
index 0000000..c414e92
--- /dev/null
+++ b/openpicc/application/led.c
@@ -0,0 +1,90 @@
+/***************************************************************
+ *
+ * OpenBeacon.org - LED support
+ *
+ * Copyright 2007 Milosch Meriac <meriac@openbeacon.de>
+ *
+ ***************************************************************
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+*/
+#include <FreeRTOS.h>
+#include <AT91SAM7.h>
+#include <lib_AT91SAM7.h>
+#include <string.h>
+#include <board.h>
+#include <task.h>
+#include "led.h"
+/**********************************************************************/
+
+void vLedSetRed(bool_t on)
+{
+ if(on)
+ AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED_RED );
+ else
+ AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_RED );
+}
+/**********************************************************************/
+
+extern void vLedSetGreen(bool_t on)
+{
+ if(on)
+ AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED_GREEN );
+ else
+ AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_GREEN );
+}
+/**********************************************************************/
+
+void vLedHaltBlinking(int reason)
+{
+ volatile u_int32_t i=0;
+ while(1)
+ {
+ AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED_MASK );
+ for(i=0; i<MCK/40; i++) ;
+
+ switch(reason) {
+ case 1:
+ vLedSetGreen(1);
+ vLedSetRed(0);
+ break;
+ case 2:
+ vLedSetGreen(0);
+ vLedSetRed(1);
+ break;
+ case 3:
+ vLedSetGreen(1);
+ vLedSetRed(1);
+ break;
+ case 0:
+ default:
+ vLedSetGreen(0);
+ vLedSetRed(0);
+ break;
+ }
+ for(i=0; i<MCK/20; i++) ;
+
+ AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
+ for(i=0; i<MCK/40; i++) ;
+ }
+}
+/**********************************************************************/
+
+void vLedInit(void)
+{
+ // turn off LED's
+ AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
+ AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
+}
personal git repositories of Harald Welte. Your mileage may vary