+tdma_t *tdma_evt;
+tdma_t *tdma_rcv;
+tdma_t *tdma_xmt;
+
+/*********
+ * Tasks *
+ *********/
+
+void task_serial(uint64_t local, uint64_t world)
+{
+ while (sirq_ready(sirq_dbg)) {
+ //sirq_printf("serial recv - dbg\r\n");
+ serial_receive(&parser_dbg, sirq_getc(sirq_dbg));
+ }
+
+ while (sirq_ready(sirq_bbb)) {
+ //sirq_printf("serial recv - bbb\r\n");
+ serial_receive(&parser_bbb, sirq_getc(sirq_bbb));
+ }
+
+ while (sirq_ready(sirq_mbed)) {
+ //sirq_printf("serial recv - mbed\r\n");
+ serial_receive(&parser_mbed, sirq_getc(sirq_mbed));
+ }
+}
+
+void task_events(uint64_t local, uint64_t world)
+{
+ uint64_t event = 0;
+
+#ifdef VERBOSE
+ if (tdma_stamp(tdma_evt, &event)) {
+ sirq_printf("event received - evt\r\n");
+ if (tdma_stamp(tdma_rcv, &event))
+ sirq_printf("event received - rcv\r\n");
+ if (tdma_stamp(tdma_xmt, &event))
+ sirq_printf("event received - xmt\r\n");
+#endif
+
+ if (tdma_stamp(tdma_evt, &event))
+ serial_send_event(0, event);
+ tdma_reset(tdma_evt);
+}
+
+void task_sync(uint64_t local, uint64_t world)
+{
+ serial_send_sync(sirq_bbb, local);
+}
+
+void task_leds(uint64_t local, uint64_t world)
+{
+ static uint32_t which = 0;
+ led1 = (which == 0);
+ led2 = (which == 1);
+ which ^= 1;
+}
+
+void task_debug(uint64_t local, uint64_t world)
+{
+ //tdma_debug(tdma_rcv);
+ sirq_printf("background - %6d.%02d -> %d.%02d\r\n",
+ (uint32_t)(local / NSEC_PER_SEC),
+ (uint32_t)(local % NSEC_PER_SEC / 10000000),
+ (uint32_t)(world / NSEC_PER_SEC),
+ (uint32_t)(world % NSEC_PER_SEC / 10000000));
+}