Beispiel #1
0
void
cyg_hal_plf_sci_init(int sci_index, int comm_index, 
                     int rcv_vect, cyg_uint8* base)
{
    channel_data_t* chan = &channels[sci_index];
    hal_virtual_comm_table_t* comm;
    int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);

    // Initialize channel table
    chan->base = base;
    chan->isr_vector = rcv_vect;
    chan->msec_timeout = 1000;

    // Disable interrupts.
    HAL_INTERRUPT_MASK(chan->isr_vector);

    // Init channel
    
    cyg_hal_plf_sci_init_channel(chan);

    // Setup procs in the vector table

    // Initialize channel procs
    CYGACC_CALL_IF_SET_CONSOLE_COMM(comm_index);
    comm = CYGACC_CALL_IF_CONSOLE_PROCS();
    CYGACC_COMM_IF_CH_DATA_SET(*comm, chan);
    CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_sci_write);
    CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_sci_read);
    CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_sci_putc);
    CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_sci_getc);
    CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_sci_control);
    CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_sci_isr);
    CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_sci_getc_timeout);

    // Restore original console
    CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
}
Beispiel #2
0
void hal_diag_init(void)
{
    cyg_hal_plf_sci_init_channel(&channel);
}