contiki-stk501-main.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #include <avr/pgmspace.h>
00045 #include <stdio.h>
00046 #include "net/uip_arp.h"
00047
00048 #include "contiki-stk501.h"
00049
00050 #include "cfs/cfs.h"
00051 #include "dev/eeprom.h"
00052 #include "lib/mmem.h"
00053 #include "loader/symbols-def.h"
00054 #include "loader/symtab.h"
00055 #include "../apps/codeprop/codeprop.h"
00056 #include "sys/mt.h"
00057
00058
00059
00060
00061
00062
00063 #if UIP_CONF_IPV6
00064 PROCINIT(&etimer_process, &tcpip_process);
00065 #else
00066 PROCINIT(&etimer_process, &tcpip_process, &uip_fw_process);
00067 #endif
00068
00069 #ifdef MT_DEMO
00070 static struct mt_thread threads[3];
00071
00072 static
00073 void thread_handler1 (void* data) {
00074 while (1) {
00075 rs232_print_p (RS232_PORT_1, PSTR ("Thread 1. Data: ") );
00076 rs232_printf (RS232_PORT_1, "0x%x, %d\n", data, *(uint8_t*)data );
00077 mt_yield ();
00078 }
00079 }
00080
00081 static
00082 void thread_handler2 (void* data) {
00083 while (1) {
00084 rs232_print_p (RS232_PORT_1, PSTR ("Thread 2. Data: "));
00085 rs232_printf (RS232_PORT_1, "0x%x, %d\n", data, *(uint8_t*)data );
00086 mt_yield ();
00087 }
00088 }
00089 #endif
00090
00091 PROCESS(contiki_stk501_main_init_process, "Contiki STK501 init process");
00092 PROCESS_THREAD(contiki_stk501_main_init_process, ev, data)
00093 {
00094 PROCESS_BEGIN();
00095
00096
00097 init_net();
00098
00099
00100 mmem_init ();
00101
00102
00103
00104
00105
00106
00107 #ifdef MT_DEMO
00108 mt_init ();
00109 #endif
00110
00111 PROCESS_END();
00112 }
00113
00114 #ifdef MT_DEMO
00115 static uint8_t d1=1, d2=2, d3=3;
00116 #endif
00117
00118 int
00119 main(void)
00120 {
00121
00122
00123
00124 asm volatile ("clr r1");
00125
00126
00127 init_lowlevel();
00128
00129
00130 clock_init();
00131
00132
00133 process_init();
00134
00135
00136 procinit_init();
00137
00138
00139 process_start(&contiki_stk501_main_init_process, NULL);
00140
00141 rs232_print_p (RS232_PORT_1, PSTR ("Initialized.\n"));
00142
00143 #ifdef MT_DEMO
00144 mt_start (&threads[0], thread_handler1, &d1);
00145 mt_start (&threads[1], thread_handler2, &d2);
00146 mt_start (&threads[2], thread_handler2, &d3);
00147
00148 uint8_t i;
00149 #endif
00150
00151
00152 while(1) {
00153
00154 process_run();
00155
00156 #ifdef MT_DEMO
00157 for (i=0; i<3; ++i) {
00158 mt_exec (&threads[i]);
00159 }
00160 #endif
00161 }
00162
00163 return 0;
00164 }