@ -1,13 +1,14 @@
# include "DSP2833x_Device.h"
# include <cstddef>
# include "CAN.h"
namespace canSpace {
void CAN : : transmitMsg ( Uint16 boxNumber , const CANMessage & message ) {
if ( boxNumber > 31 ) return ;
Uint32 mboxControl ( 0 ) ;
mboxControl = 1ul < < boxNumber ;
volatile MBOX * p_MailBox ( NULL ) ;
volatile MBOX * p_MailBox ( 0 ) ;
p_MailBox = & ( p_CanMBoxes_ - > MBOX0 ) + boxNumber ;
p_MailBox - > MDH . all = 0x0 ;
@ -22,8 +23,9 @@ void CAN::transmitMsg(Uint16 boxNumber, const CANMessage& message){
CanShadow_ . CANTRS . all | = mboxControl ;
p_CanRegs_ - > CANTRS . all = CanShadow_ . CANTRS . all ;
do { CanShadow_ . CANTA . all = p_CanRegs_ - > CANTA . all ; } // TODO add tx error somewhere here
while ( ( CanShadow_ . CANTA . all & mboxControl ) = = 0 ) ; // Wait for TA bit to be set
// Wait for TA bit to be set
do { CanShadow_ . CANTA . all = p_CanRegs_ - > CANTA . all ; }
while ( ( CanShadow_ . CANTA . all & mboxControl ) = = 0 ) ;
// Clear TA (transmit acknowledge bit)
CanShadow_ . CANTA . all = 0 ;
@ -38,7 +40,7 @@ void CAN::updateTXMessage(Uint16 boxNumber, const CANMessage& message){ // TODO
// then transmitted.
if ( boxNumber > 31 ) return ;
volatile MBOX * p_MailBox ( NULL ) ;
volatile MBOX * p_MailBox ( 0 ) ;
p_MailBox = & ( p_CanMBoxes_ - > MBOX0 ) + boxNumber ;
// Set change data request (CDR bit + MBOX number)
@ -56,7 +58,7 @@ void CAN::updateTXMessage(Uint16 boxNumber, const CANMessage& message){ // TODO
void CAN : : sendRemoteRequest ( Uint16 boxNumber ) {
if ( boxNumber > 31 ) return ;
volatile MBOX * p_MailBox ( NULL ) ;
volatile MBOX * p_MailBox ( 0 ) ;
p_MailBox = & ( p_CanMBoxes_ - > MBOX0 ) + boxNumber ;
Uint32 mboxControl ( 0 ) ;
@ -87,7 +89,7 @@ bool CAN::receiveMsg(Uint16 boxNumber, CANMessage& rxMessage){ // TODO faults ju
Uint32 mboxControl ( 0 ) ;
mboxControl = 1ul < < boxNumber ;
volatile MBOX * p_MailBox ( NULL ) ;
volatile MBOX * p_MailBox ( 0 ) ;
p_MailBox = & ( p_CanMBoxes_ - > MBOX0 ) + boxNumber ;
bool isNewMessageInBox = p_CanRegs_ - > CANRMP . all & mboxControl ;
@ -107,7 +109,6 @@ bool CAN::receiveMsg(Uint16 boxNumber, CANMessage& rxMessage){ // TODO faults ju
if ( newMessage | | lostMessage ) {
return - 1 ;
// set_fault();
}
return 0 ;