25 #include "mb96348hs.h"
27 #define CAN5_PING_MSG uint8_t data[4]; data[0] = 'P'; data[1] = 'I'; data[2] = 'N'; data[3] = 'G';
28 #define CAN5_PING_ANS uint8_t data[4]; data[0] = 'P'; data[1] = 'A'; data[2] = 'N'; data[3] = 'S';
33 static void can5_irqHandler(
void);
48 for(i = 0; i < 2; i++)
51 return can4_send(address,CAN5_PORT,data,4,0);
57 if(address > 63)
return 0;
60 if(!can5_internal_ping(address))
return 0;
63 while(((address < 32 ? pings[0] &
_BV(address) : pings[1] &
_BV(address-32)) == 0) || (timeout++ < CAN5_ALIVE_TIMEOUT))
67 if(timeout >= CAN5_ALIVE_TIMEOUT)
return 0;
84 for(i = 0; i < 64; i++) {
85 if(i < 32) check = pings[0] &
_BV(i);
86 else check = pings[1] &
_BV(i-32);
98 static void can5_irqHandler(
void) {
106 if(recdata[0] ==
'P' && recdata[1] ==
'I' && recdata[2] ==
'N' && recdata[3] ==
'G') {
109 }
else if(recdata[0] ==
'P' && recdata[1] ==
'A' && recdata[2] ==
'N' && recdata[3] ==
'S') {
110 if(src < 32) pings[0] |=
_BV(src);
111 else pings[1] |=
_BV(src-32);
uint8_t can3_removeIRQHandler(IRQHandler func)
uint8_t can4_getData(uint8_t port, uint8_t *data, uint8_t *src)
uint8_t can4_open(uint8_t port)
void delay_us(uint16_t us)
uint8_t can4_send(uint8_t dest, uint8_t port, uint8_t *data, uint8_t len, uint8_t interrupt)
uint8_t can3_registerIRQHandler(IRQHandler func)
uint8_t can5_isAlive(uint8_t address)
uint8_t can5_getNewAddress(void)
void can4_close(uint8_t port)
uint8_t can4_init(uint8_t address)
void can3_setAddress(uint8_t addr)