EE445M RTOS
Taken at the University of Texas Spring 2015
canpp.hpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset: 4; -*- */
2 #ifndef __canpp__
3 #define __canpp__
4 
9 #define DEFAULT_CAN_MSG_ID 1
10 
11 #include <stdint.h>
12 #include <stdbool.h>
13 
14 #include "interruptable.hpp"
15 #include "semaphorepp.hpp"
16 
17 #include "driverlib/can.h"
18 
19 typedef uint32_t memory_address_t;
20 
21 class can : public interruptable {
22 private:
24  uint32_t interrupt;
25  bool sender;
26 
27  tCANMsgObject sCANMessage;
28 
29  uint32_t errors_tx;
30  uint32_t errors_rx;
31  uint32_t messages_sent;
33 
35  void set_timing(void);
36 
38  void init(void);
39 
41  uint32_t count_message(void);
42 
43 public:
44  can();
46  can(memory_address_t can_base, uint32_t can_interrupt,
47  bool can_sender, uint32_t msg_length);
48 
50  virtual void start(void);
51 
53  virtual void stop(void);
54 
56  virtual uint32_t ack(void);
57 
58  void pack(uint8_t* dest, uint32_t data, uint8_t offset = 0);
59 
61  void transmit(uint8_t* data, uint32_t length, uint32_t id = DEFAULT_CAN_MSG_ID);
62 
64  void get(uint8_t *data);
65 
67  void error_tx(void);
68 
70 };
71 
72 #endif
73 
78 /* Local Variables: */
79 /* firestarter: (compile "make -k -j32 -C ~/workspace/ee445m-labs/build/") */
80 /* End: */
uint32_t errors_tx
Definition: canpp.hpp:29
uint32_t messages_sent
Definition: canpp.hpp:31
uint32_t memory_address_t
Definition: adcpp.hpp:16
virtual void start(void)
Definition: canpp.cpp:85
virtual uint32_t ack(void)
Definition: canpp.cpp:146
semaphore recv_sem
Definition: canpp.hpp:69
uint32_t errors_rx
Definition: canpp.hpp:30
void transmit(uint8_t *data, uint32_t length, uint32_t id=1)
Definition: canpp.cpp:122
tCANMsgObject sCANMessage
Definition: canpp.hpp:27
void pack(uint8_t *dest, uint32_t data, uint8_t offset=0)
Definition: canpp.cpp:111
memory_address_t base
Definition: canpp.hpp:23
uint32_t memory_address_t
Definition: canpp.hpp:19
const bool can_sender
Definition: move-main.cpp:58
void init(void)
Definition: canpp.cpp:17
void set_timing(void)
Definition: canpp.cpp:75
#define DEFAULT_CAN_MSG_ID
Definition: canpp.hpp:9
uint32_t count_message(void)
Definition: canpp.cpp:135
virtual void stop(void)
Definition: canpp.cpp:91
void error_tx(void)
Definition: canpp.cpp:97
uint32_t interrupt
Definition: canpp.hpp:24
Definition: canpp.hpp:21
uint32_t messages_received
Definition: canpp.hpp:32
can()
Definition: canpp.cpp:39
bool sender
Definition: canpp.hpp:25