CanInterface Dispatcher, it depends on MyThread (MyThings lib)

Dependents:   PYRN

Committer:
clemounet
Date:
Tue Apr 14 13:26:18 2015 +0000
Revision:
1:b9201bec01bf
Parent:
0:3ca0a6d1e2a1
.up

Who changed what in which revision?

UserRevisionLine numberNew contents of line
clemounet 0:3ca0a6d1e2a1 1
clemounet 0:3ca0a6d1e2a1 2 #ifndef CAN_INTERFACE_H
clemounet 0:3ca0a6d1e2a1 3 #define CAN_INTERFACE_H
clemounet 0:3ca0a6d1e2a1 4
clemounet 0:3ca0a6d1e2a1 5 #include "MyThread.h"
clemounet 0:3ca0a6d1e2a1 6 #include "MyCallBack.h"
clemounet 0:3ca0a6d1e2a1 7 #include "CAN.h"
clemounet 0:3ca0a6d1e2a1 8 #include "CANFifoMessage.h"
clemounet 0:3ca0a6d1e2a1 9
clemounet 0:3ca0a6d1e2a1 10 #define CAN_ID_PROMISCUOUS_MODE 0xffffffff
clemounet 0:3ca0a6d1e2a1 11
clemounet 0:3ca0a6d1e2a1 12 #define CAN_SIMULTANEOUS_CBS 8
clemounet 0:3ca0a6d1e2a1 13 #define CAN_SIMULTANEOUS_MSG 15
clemounet 0:3ca0a6d1e2a1 14
clemounet 0:3ca0a6d1e2a1 15 class CANInterface: public MyThread {
clemounet 0:3ca0a6d1e2a1 16 protected:
clemounet 0:3ca0a6d1e2a1 17 typedef struct _idCbEntry{
clemounet 0:3ca0a6d1e2a1 18 uint32_t id; // 29b and 11b can ids are supported
clemounet 0:3ca0a6d1e2a1 19 MyCallBack *cb;
clemounet 0:3ca0a6d1e2a1 20 } idCbEntry;
clemounet 0:3ca0a6d1e2a1 21
clemounet 0:3ca0a6d1e2a1 22 Mutex idCbTableMutex;
clemounet 0:3ca0a6d1e2a1 23 Mutex sendMutex;
clemounet 0:3ca0a6d1e2a1 24
clemounet 0:3ca0a6d1e2a1 25 uint8_t nCurrentCbs; // How much entries we got in our table
clemounet 0:3ca0a6d1e2a1 26 idCbEntry idCbTable[CAN_SIMULTANEOUS_CBS]; // This mean that we allow at most 8 sensors to receive events simultaneously
clemounet 0:3ca0a6d1e2a1 27
clemounet 0:3ca0a6d1e2a1 28 CAN *bus1;
clemounet 0:3ca0a6d1e2a1 29 CAN *bus2;
clemounet 0:3ca0a6d1e2a1 30
clemounet 0:3ca0a6d1e2a1 31 bool rxOvf;
clemounet 0:3ca0a6d1e2a1 32 CANFifoMessage fifoRxMsg;
clemounet 0:3ca0a6d1e2a1 33 CANMessage msgTx;
clemounet 0:3ca0a6d1e2a1 34
clemounet 0:3ca0a6d1e2a1 35 public:
clemounet 0:3ca0a6d1e2a1 36 CANInterface();
clemounet 0:3ca0a6d1e2a1 37 virtual void Configure(uint8_t ifaceNumber, int speed);
clemounet 0:3ca0a6d1e2a1 38 virtual void AddCallBackForId(int id, MyCallBack *cb);
clemounet 0:3ca0a6d1e2a1 39 virtual void DellCallBackForId(int id);
clemounet 0:3ca0a6d1e2a1 40 virtual void DispatchCANMessage(CANMessage *msg);
clemounet 0:3ca0a6d1e2a1 41 virtual int Send(uint8_t ifaceNumber,int id, char *data, uint8_t len);
clemounet 0:3ca0a6d1e2a1 42 virtual void Main();
clemounet 0:3ca0a6d1e2a1 43
clemounet 0:3ca0a6d1e2a1 44 virtual void RxCbCan1(void);
clemounet 0:3ca0a6d1e2a1 45 virtual void RxCbCan2(void);
clemounet 0:3ca0a6d1e2a1 46
clemounet 0:3ca0a6d1e2a1 47 virtual CAN *GetCan1() { return bus1; }
clemounet 0:3ca0a6d1e2a1 48 virtual CAN *GetCan2() { return bus2; }
clemounet 0:3ca0a6d1e2a1 49 };
clemounet 0:3ca0a6d1e2a1 50
clemounet 0:3ca0a6d1e2a1 51 #endif