PROCESS_THREAD(tcp_process, ev, data) { static char incoming[10]; static struct psock ps; PROCESS_BEGIN(); uart0_set_br(1000000); tcp_listen(UIP_HTONS(2020)); while(1) { PROCESS_YIELD(); } { /* wait for tcp connection */ PROCESS_WAIT_EVENT_UNTIL(ev==tcpip_event && uip_connected()); /* start estimator process and init psock connection handler */ process_start(&ahrs_process, NULL); PSOCK_INIT(&ps,incoming,sizeof(incoming)); /* loop until connection is closed */ while (!(uip_aborted() || uip_closed() || uip_timedout())) { PROCESS_YIELD_UNTIL(ev==tcpip_event); handle_connection(&ps); } /* stop ahrs process */ process_exit(&ahrs_process); } PROCESS_END(); }
PROCESS_THREAD(udp_process, ev, data) { static struct uip_udp_conn *s; static struct etimer et; PROCESS_BEGIN(); uart0_set_br(1000000); /* setup udp connection */ s = udp_broadcast_new(UIP_HTONS(2020),NULL); // incoming udp_bind(s,UIP_HTONS(2020)); // outgoing /* start estimator process and init psock connection handler */ process_start(&ahrs_process, NULL); etimer_set(&et, SEND_INTERVAL); while(1) { PROCESS_WAIT_EVENT_UNTIL(ev==PROCESS_EVENT_TIMER); uip_udp_packet_send(s,msg,strlen(msg)); etimer_restart(&et); } PROCESS_END(); }
void uart0_init(unsigned long br) { vAHI_UartSetRTSCTS(E_AHI_UART_0, false); vAHI_UartEnable(E_AHI_UART_0); vAHI_UartReset(E_AHI_UART_0, true, true); uart0_set_br(br); vAHI_UartSetRTSCTS(E_AHI_UART_0, false); vAHI_Uart0RegisterCallback(irq); vAHI_UartSetInterrupt(E_AHI_UART_0, false, /* modem status */ false, /* rx line error status */ false, /* tx fifo empty */ true, /* rx data there */ E_AHI_UART_FIFO_LEVEL_1); vAHI_UartSetRTSCTS(E_AHI_UART_0, false); vAHI_UartReset(E_AHI_UART_0, false, false); }