Commanders
Arduino buttons/bus library
CANCommander.hpp
1 //-------------------------------------------------------------------
2 #ifndef __canCommander_H__
3 #define __canCommander_H__
4 //-------------------------------------------------------------------
5 
6 #include <Commanders.h>
7 
8 #ifndef NO_CANCOMMANDER
9 
10 #include <mcp_can.h>
11 
12 #define CANCommander CANCommanderClass::GetCurrent()
13 
34 {
35  private:
36  static CANCommanderClass *pCANCommander;
37  MCP_CAN *pCan;
38 
39  // Global variables for reading and writing messages.
40  uint8_t IdR; // Id for CAN_recup()
41  unsigned char lenR = 0; // Current length of the message
42  unsigned char bufR[8]; // Receiving buffer.
43  unsigned char bufS[8]; // Sending buffer.
44 
45  // Global variables for the circular buffer.
46  unsigned char Circule[256]; // Circular buffer for read messages, handled by interrupt.
47  int indexW, indexR, Ncan; // Index of writing and reading buffer, and byte number to read.
48  uint8_t CANoverflow = 0; // flag overflow (Circular buffer full)
49 
50  void CAN_recup();
51 
52  public:
54  inline CANCommanderClass() : Commander() {}
55 
84  void begin(uint8_t inSPIpin, uint8_t inSpeed, uint8_t inInterrupt, uint16_t inId);
86  unsigned long loop();
87 
88  public:
92  static inline CANCommanderClass &GetCurrent()
93  {
94  if (pCANCommander == NULL)
95  pCANCommander = new CANCommanderClass();
96 
97  return *(CANCommanderClass::pCANCommander);
98  }
99 #ifdef COMMANDERS_PRINT_COMMANDERS
100  private:
101  uint8_t SPIpin;
102  uint8_t Speed;
103  uint8_t Interrupt;
104  uint16_t Id;
105  public:
109  void printCommander();
110 #endif
111 };
112 
113 //-------------------------------------------------------------------
114 #endif
115 #endif
116 //-------------------------------------------------------------------
unsigned long loop()
Definition: CANCommander.cpp:123
void begin(uint8_t inSPIpin, uint8_t inSpeed, uint8_t inInterrupt, uint16_t inId)
Definition: CANCommander.cpp:30
CANCommanderClass()
Definition: CANCommander.hpp:54
static CANCommanderClass & GetCurrent()
Definition: CANCommander.hpp:92
Definition: Commander.hpp:23
Definition: CANCommander.hpp:33