/*---------------------------------------------------------------------------*/ PROCESS_THREAD(announce_blink_process, ev, data) { PROCESS_BEGIN(); /* XXX the Sentilla JCreate has 8 LEDs, and we need to set the ports correctly. */ #if CONTIKI_TARGET_SKY LEDS_PxDIR = 0xff; LEDS_PxOUT = 0xff; #endif /* CONTIKI_TARGET_SKY */ announcement_register(&announcement, 80, 0, received_announcement); list_init(neighbor_table); memb_init(&neighbor_mem); #if CONTIKI_TARGET_NATIVE { int i; for(i = 0; i < 10; ++i) { rimeaddr_t r; r.u8[0] = r.u8[1] = i; received_announcement(NULL, &r, 0, 0); received_announcement(NULL, &r, 0, 0); } } #endif /* CONTIKI_TARGET_NATIVE */ #if CONTIKI_TARGET_SKY acc_sensor.activate(); /* Lower the transmission power for the announcements so that only close-range neighbors are noticed. (Makes for a nicer visual effect.) */ xmac_set_announcement_radio_txpower(1); #endif /* CONTIKI_TARGET_SKY */ while(1) { static struct etimer e; static uint16_t last_value; etimer_set(&e, CLOCK_SECOND / 8); PROCESS_WAIT_EVENT(); #if CONTIKI_TARGET_SKY if(acc_sensor.value(1) / 256 != last_value) { last_value = acc_sensor.value(1) / 256; announcement_listen(1); } #endif /* CONTIKI_TARGET_SKY */ } PROCESS_END(); }
/* * Received a message */ static void message_received_cb (G_GNUC_UNUSED GSSDPClient *client, G_GNUC_UNUSED const char *from_ip, G_GNUC_UNUSED gushort from_port, _GSSDPMessageType type, SoupMessageHeaders *headers, gpointer user_data) { GSSDPResourceBrowser *resource_browser; GSSDPResourceBrowserPrivate *priv; resource_browser = GSSDP_RESOURCE_BROWSER (user_data); priv = gssdp_resource_browser_get_instance_private (resource_browser); if (!priv->active) return; switch (type) { case _GSSDP_DISCOVERY_RESPONSE: received_discovery_response (resource_browser, headers); break; case _GSSDP_ANNOUNCEMENT: received_announcement (resource_browser, headers); break; case _GSSDP_DISCOVERY_REQUEST: /* Should not happend */ break; default: break; } }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(announce_blink_process, ev, data) { PROCESS_BEGIN(); announcement_register(&announcement, 80, received_announcement); list_init(neighbor_table); memb_init(&neighbor_mem); { int i; for(i = 0; i < 10; ++i) { rimeaddr_t r; r.u8[0] = r.u8[1] = i; received_announcement(NULL, &r, 0, 0); received_announcement(NULL, &r, 0, 0); } } SENSORS_ACTIVATE(acc_sensor); /* Lower the transmission power for the announcements so that only close-range neighbors are noticed. (Makes for a nicer visual effect.) */ xmac_set_announcement_radio_txpower(1); while(1) { static struct etimer e; static uint16_t last_value; etimer_set(&e, CLOCK_SECOND / 8); PROCESS_WAIT_EVENT(); if(acc_sensor.value(1) / 256 != last_value) { last_value = acc_sensor.value(1) / 256; announcement_listen(1); } } PROCESS_END(); }