Beispiel #1
0
uint8_t address_exchange(void)
{
    uint8_t  ch;
    uint8_t  id;

    set_led_rgb(0, 0, 255);
    id = eeprom_read_byte((uint8_t *)ee_pump_id_offset);
    if (id == 0 || id == 255)
    {
        // we failed to get a unique number for the pump. just stop.
        set_led_rgb(255, 0, 0);
        for(;;);
    }

    for(;;)
    {
        for(;;)
        {
            if (serial_rx_nb(&ch))
                break;

            if (check_reset())
                return 0xFF;
        }
        if (ch == 0xFF)
            break;
        if (ch == '?')
            serial_tx(id);
    }
    set_led_rgb(0, 255, 0);

    return id;
}
Beispiel #2
0
// return true is a command was read, false if a reset was requested
uint8_t receive_cmd(char *cmd)
{
    uint8_t num = 0, ch;

    dprintf(">");

    *cmd = 0;
    for(; !check_reset();)
    {
        for(;!check_reset() && !serial_rx_nb(&ch);)
            idle();

        if (check_reset())
            return 0;

        serial_tx(ch);
        if (ch == '\r')
        {
            serial_tx('\n');
            cmd[num] = 0;
            return 1;
        }
        cmd[num] = ch;
        num++;
    }
    return 0;
}
Beispiel #3
0
void comm_test(void)
{
    uint8_t ch;

    // disable all interrupts and just echo every character received.
    cli();
    set_led_rgb(0, 255, 255);
    for(; !check_reset();)
        if (serial_rx_nb(&ch))
            for(; !serial_tx_nb(ch) && !check_reset();)
                ;
    sei();
}