1 | #ifndef CAN2515_H
|
2 | #define CAN2515_H
|
3 |
|
4 | #include "spi.h"
|
5 | #include <util/delay.h>
|
6 | #include <math.h>
|
7 | #include <stdlib.h>
|
8 | #include "regs.h"
|
9 | #include <avr/io.h>
|
10 |
|
11 |
|
12 | #define MESSAGE_IN_BUFFER_0 0
|
13 | #define MESSAGE_IN_BUFFER_1 1
|
14 | #define NO_MESSAGE 2
|
15 | #define RTR_MESSAGE 3
|
16 |
|
17 |
|
18 | // Message Identifier
|
19 |
|
20 | //CAN Bootloader
|
21 | #define FLASH_REQUEST 0
|
22 | #define FLASH_REQUEST_CONFIRM 1
|
23 | #define FLASH_REQUEST_DENY 2
|
24 | #define FLASH_DATA_CLEAR_TO_SEND 3
|
25 | #define FLASH_COMPLETE 4
|
26 | #define FLASH_COMPLETE_CONFIRM 6
|
27 | #define FLASH_DATA 5
|
28 | #define BOOTLOADER_MESSAGE 7
|
29 | #define BOOTLOADER_MESSAGE_CLEAR_TO_SEND 8
|
30 |
|
31 |
|
32 | typedef struct {
|
33 | uint16_t id;
|
34 | char data[8];
|
35 | uint8_t length;
|
36 | uint8_t rtr;
|
37 | } Message;
|
38 |
|
39 | void controller_reset();
|
40 | void controller_normal_mode();
|
41 | void init_receiver();
|
42 | void init_transmitter();
|
43 | void init_bittiming();
|
44 | uint8_t handle_interrupt(Message *message);
|
45 | void get_message_from_buffer(uint8_t buffer, Message * message);
|
46 | void write_message_to_can(uint16_t id, uint8_t length, char *data);
|
47 | char *byte_as_bits(int length, uint16_t val);
|
48 |
|
49 | #endif
|