sys-tst.c
00001 #include <AT91SAM7S64.h>
00002 #include <stdio.h>
00003 #include <sys/process.h>
00004 #include <sys/procinit.h>
00005 #include <sys/etimer.h>
00006 #include <dev/leds.h>
00007 #include <debug-uart.h>
00008 #include <interrupt-utils.h>
00009
00010 volatile const char * volatile input_line = NULL;
00011 volatile unsigned int input_line_len = 0;
00012
00013 static void
00014 recv_input(const char *str, unsigned int len)
00015 {
00016
00017
00018 input_line = str;
00019 input_line_len = len;
00020 }
00021 PROCESS(blink_process, "LED blink process");
00022
00023 PROCESS_THREAD(blink_process, ev , data)
00024 {
00025 static struct etimer timer;
00026 PROCESS_BEGIN();
00027 etimer_set(&timer, CLOCK_SECOND/2);
00028 while(1) {
00029 PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_EXIT ||
00030 ev== PROCESS_EVENT_TIMER);
00031 if (ev == PROCESS_EVENT_EXIT) break;
00032 leds_invert(LEDS_RED);
00033 #if 0
00034 {
00035 DISABLE_FIFOP_INT();
00036 printf("FSMSTATE: %04x",cc2420_getreg(CC2420_FSMSTATE));
00037 ENABLE_FIFOP_INT();
00038 if (SFD_IS_1) printf(" SFD");
00039 if (FIFO_IS_1) printf(" FIFO");
00040 if (FIFOP_IS_1) printf(" FIFOP");
00041 putchar('\n');
00042 }
00043 #endif
00044 etimer_reset(&timer);
00045 }
00046 printf("Ended process\n");
00047 PROCESS_END();
00048 }
00049 PROCINIT(&etimer_process, &blink_process);
00050 int
00051 main()
00052 {
00053 disableIRQ();
00054 disableFIQ();
00055 *AT91C_AIC_IDCR = 0xffffffff;
00056 *AT91C_PMC_PCDR = 0xffffffff;
00057 *AT91C_PMC_PCER = (1 << AT91C_ID_PIOA);
00058
00059 dbg_setup_uart();
00060 printf("Initialising\n");
00061 dbg_set_input_handler(recv_input);
00062 leds_arch_init();
00063 clock_init();
00064
00065 process_init();
00066 printf("Started\n");
00067
00068 procinit_init();
00069 enableIRQ();
00070 printf("Processes running\n");
00071 while(1) {
00072 do {
00073
00074 } while(process_run() > 0);
00075
00076
00077 *AT91C_PMC_SCDR |= AT91C_PMC_PCK;
00078 }
00079 return 0;
00080 }