void update_keyboard() { SDL_Event e; SDL_KeyboardEvent* ke; SDL_MouseButtonEvent* me; while (SDL_PollEvent(&e)) { // why not SDL_PeepEvents(&e, 1, SDL_GETEVENT, SDL_KEYDOWNMASK|SDL_KEYUPMASK)>0)? switch (e.type) { case SDL_KEYDOWN: ke = (SDL_KeyboardEvent*)&e; keyboard[ke->keysym.sym] = 0xff; keybuf = ke->keysym.sym; if (ke->keysym.unicode) unibuf = ke->keysym.unicode; else unibuf = -1; break; case SDL_KEYUP: ke = (SDL_KeyboardEvent*)&e; keyboard[ke->keysym.sym] = 0; break; case SDL_MOUSEBUTTONDOWN: me = (SDL_MouseButtonEvent*)&e; switch (me->button) { case SDL_BUTTON_LEFT: mouse |= 4; break; case SDL_BUTTON_MIDDLE: mouse |= 2; break; case SDL_BUTTON_RIGHT: mouse |= 1; break; } break; case SDL_MOUSEBUTTONUP: me = (SDL_MouseButtonEvent*)&e; switch (me->button) { case SDL_BUTTON_LEFT: mouse &= ~4; break; case SDL_BUTTON_MIDDLE: mouse &= ~2; break; case SDL_BUTTON_RIGHT: mouse &= ~1; break; } break; case SDL_VIDEOEXPOSE: exposed = 1; break; case SDL_QUIT: exithandler(); break; } } }
PROCESS_THREAD(raven_relay_process, ev, data) { uip_ipaddr_t ipaddr; PROCESS_POLLHANDLER(pollhandler()); PROCESS_EXITHANDLER(exithandler()); // see: http://senstools.gforge.inria.fr/doku.php?id=contiki:examples PROCESS_BEGIN(); PRINTF("Relay process startup.\r\n"); // wait 3 second, in order to have the IP addresses well configured etimer_set(&udp_periodic_timer, CLOCK_CONF_SECOND*3); // wait until the timer has expired PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER); // Define Address of the server that receives our heartbeats. // TODO: Make this dynamic #ifdef UDP_ADDR_A uip_ip6addr(&ipaddr, UDP_ADDR_A,UDP_ADDR_B,UDP_ADDR_C,UDP_ADDR_D, UDP_ADDR_E,UDP_ADDR_F,UDP_ADDR_G,UDP_ADDR_H); #else /* UDP_ADDR_A */ uip_ip6addr(&ipaddr,0xbbbb,0,0,0,0xd69a,0x20ff,0xfe07,0x7664); #endif /* UDP_ADDR_A */ udpconn = udp_new(NULL, HTONS(0), NULL); //udpconn = udp_new(&ipaddr, HTONS(0xF0B0+1), NULL); udp_bind(udpconn, HTONS(0xF0B0)); // udp_attach(udpconn, NULL); PRINTF("Created connection with remote peer "); PRINT6ADDR(&udpconn->ripaddr); PRINTF("\r\nlocal/remote port %u/%u\r\n", HTONS(udpconn->lport),HTONS(udpconn->rport)); print_local_addresses(); etimer_set(&udp_periodic_timer, 60*CLOCK_SECOND); while(1){ PRINTF("--- Relay: Waiting for events.\r\n"); // tcpip_poll_udp(udpconn); PROCESS_WAIT_EVENT(); // PROCESS_YIELD(); udphandler(ev, data); } PROCESS_END(); }