Beispiel #1
0
static PT_THREAD(thread_uart(struct pt *pt))
{
    PT_BEGIN(pt);

    while(1)
    {
        PT_WAIT_UNTIL(pt, uart_flag);

        led_green_blink(10); /* 10 timer ticks = 100 ms */

        /* does the local node expects an id
         * or do we have to broadcast it? */
        if(timer_reached(TIMER_ID_INPUT, ID_INPUT_TIMEOUT_TICKS))
        {
            send_id_reply(uart_data);
        }
        else
        {
            set_node_id(uart_data);
        }
        uart_flag = 0;
    }

    PT_END(pt);
}
Beispiel #2
0
void frame_process() {
    if(!frame_check_sync())
        return;

    Packet pkt = framebuf.packets[node_id];
    if(!packet_check_checksum(&pkt)) {
        /*leds_set(255, 0, 0);*/
        return;
    }

    switch(pkt.cmd_id) {
        case CMD_SYNC:
            return;
        case CMD_SET_ID:
            set_node_id(&pkt);
            break;
        case CMD_BOOTLOAD:
            bootload(&pkt);
            break;
        default:
            leds_set(pkt.r, pkt.g, pkt.b);
            sound_set(pkt.sound_id, pkt.sound_freq, pkt.sound_mag);
    }
}