unsigned char CAN_Read(CanTransfer *pTransfer) { AT91PS_CAN base_can; if (pTransfer->state != CAN_IDLE) { return CAN_STATUS_LOCKED; } TRACE_DEBUG("CAN_Read\n\r"); pTransfer->state = CAN_RECEIVING; if( pTransfer->can_number == 0 ) { base_can = AT91C_BASE_CAN0; } #ifdef AT91C_BASE_CAN1 else { base_can = AT91C_BASE_CAN1; } #endif // enable interrupt base_can->CAN_IER = pTransfer->mailbox_in_use; return CAN_STATUS_SUCCESS; }