diff options
Diffstat (limited to 'can.c')
-rw-r--r-- | can.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -4,10 +4,22 @@ */ #define CANA_TIME 0x10080000 #define CANA_DISCOVERY 0x4c080000 +#define CANA_DISCOVERY_F(pg,dst) (CANA_DISCOVERY | (((uint32_t)(pg) & 0xf) << 12) | ((dst) & 0xfff)) #define CANA_LIGHT 0xcc080000 -#define CANA_LIGHT_F(src,dst) (CANA_LIGHT | (((src) << 12) & 0x3f) | ((dst) & 0xfff)) +#define CANA_LIGHT_F(src,dst) (CANA_LIGHT | (((src) & 0x3f) << 12) | ((dst) & 0xfff)) #define CANA_SENSOR 0xe6080000 #define CANA_SENSOR_F(src) (CANA_SENSOR | ((src) & 0xfff)) +#define CANA_DEBUG 0xe7000000 + +#define CANA_PROTOCOL 0xffe80000 + +#define can_rx_isext() (can_rx_addr.b[1] & 0x08) +#define can_rx_ext_rr() (can_rx_dlc & 0x40) +#define can_rx_len() (can_rx_dlc & 0x0f) + +#define can_rx_sublab_proto() ((can_rx_addr.b[0] << 8) | (can_rx_addr.b[1] & 0xe8)) +#define can_rx_sublab_addr() (((can_rx_addr.b[2] & 0x0f) << 8) | can_rx_addr.b[3]) +#define can_rx_sublab_disco_page() ((can_rx_addr.b[2] & 0xf0) >> 4) #ifndef R0KET #define spi_ss(x) PORTB = ((x) << B_SS) | 0x3; @@ -118,7 +130,7 @@ static uint8_t can_CANSTAT(void) * 15- 8 EID 15:8 * 7- 0 EID 7:0 */ -static void can_send(uint32_t daddr, uint8_t len, uint8_t *data) +static void can_send(uint32_t daddr, uint8_t len, const uint8_t *data) { spi_ss(0); spi_wrrd(MCP2515_WRTXB | MCP2515_WRTXB_TXB0); |