43,7 → 43,7 |
****************************/ |
static unsigned com_irq[] = {COM1_IRQ, COM2_IRQ, COM3_IRQ, COM4_IRQ}; |
|
struct SCom_Access_Type SCom_Access[4]; |
struct SCom_Access_Type SCom_Access; |
|
unsigned SCom_Error[4]; |
|
157,15 → 157,15 |
|
} |
|
void com_set_functions(unsigned port, void (*confirm)(unsigned port, BYTE msg_status),void (*indication)(unsigned port, BYTE data)) |
void com_set_functions(void (*confirm)(unsigned port, BYTE msg_status),void (*indication)(unsigned port, BYTE data)) |
{ |
SYS_FLAGS f; |
|
f = kern_fsave(); |
|
SCom_Access[port].confirm = confirm; |
SCom_Access[port].request = com_send_msg; |
SCom_Access[port].indication = indication; |
SCom_Access.confirm = confirm; |
SCom_Access.request = com_send_msg; |
SCom_Access.indication = indication; |
|
kern_frestore(f); |
|
199,17 → 199,17 |
{ |
if (SCom_TX_data[port].ptr < SCom_TX_data[port].len) |
com_write(port, THR, SCom_TX_data[port].buf[SCom_TX_data[port].ptr++]); |
else SCom_Access[port].confirm(port, COM_OK); |
else SCom_Access.confirm(port, COM_OK); |
} |
|
void RBRF_handler (unsigned port) /* Receive Data Register Full */ |
{ |
SCom_Access[port].indication(port, com_read(port, RBR)); |
SCom_Access.indication(port, com_read(port, RBR)); |
} |
|
void LSR_handler (unsigned port) /* break = 8, frame = 4, parity = 2, RBR overrun = 1*/ |
{ |
SCom_Error[port] = (com_read(port, LSR) & (bit4|bit3|bit2|bit1) ) >> 1; |
SCom_Access[port].confirm(port, COM_ERROR); |
SCom_Access.confirm(port, COM_ERROR); |
} |
|