source: trunk/MagicSoft/Cosy/candrv/nodedrv.h@ 1062

Last change on this file since 1062 was 926, checked in by tbretz, 24 years ago
*** empty log message ***
File size: 2.2 KB
Line 
1#ifndef NODEDRV_H
2#define NODEDRV_H
3
4#include "log.h"
5#include "gendef.h"
6
7class Network;
8
9class NodeDrv : public Log
10{
11private:
12 Network *fNetwork;
13 BYTE_t fId;
14
15 char *fName;
16
17 int fError;
18
19protected:
20 void SetError(int err) { fError = err; }
21 void DelError() { fError = 0; }
22 int GetError() { return fError; }
23
24public:
25 NodeDrv(BYTE_t nodeid, const char *name=NULL, MLog &out=gLog);
26 virtual ~NodeDrv();
27
28 BYTE_t GetId() const { return fId; }
29 char *GetNodeName() const { return fName; }
30 Network *GetNetwork() { return fNetwork; }
31
32 virtual void InitDevice(Network *net);
33 virtual void StopDevice() = 0;
34
35 bool HasError() { return fError; }
36
37 virtual void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, struct timeval *tv);
38 virtual void HandleSDOOK(WORD_t idx, BYTE_t subidx);
39 virtual void HandleSDOError(LWORD_t data);
40
41 virtual void HandlePDO1(BYTE_t *data, struct timeval *tv) {};
42 virtual void HandlePDO2(BYTE_t *data, struct timeval *tv) {};
43 virtual void HandlePDO3(BYTE_t *data, struct timeval *tv) {};
44 virtual void HandlePDO4(BYTE_t *data, struct timeval *tv) {};
45
46 void SendPDO1(BYTE_t data[8]);
47 void SendPDO2(BYTE_t data[8]);
48 void SendPDO1(BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
49 BYTE_t m4=0, BYTE_t m5=0, BYTE_t m6=0, BYTE_t m7=0);
50 void SendPDO2(BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
51 BYTE_t m4=0, BYTE_t m5=0, BYTE_t m6=0, BYTE_t m7=0);
52
53 void SendSDO(WORD_t idx, BYTE_t subidx, BYTE_t val, bool store=true);
54 void SendSDO(WORD_t idx, BYTE_t subidx, WORD_t val, bool store=true);
55 void SendSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, bool store=true);
56
57 void SendSDO(WORD_t idx, BYTE_t val);
58 void SendSDO(WORD_t idx, WORD_t val);
59 void SendSDO(WORD_t idx, LWORD_t val=0);
60
61 void SendNMT(BYTE_t cmd);
62
63 void RequestSDO(WORD_t idx, BYTE_t subidx=0);
64
65 void WaitForNextPdo1();
66 void WaitForNextPdo2();
67 void WaitForNextPdo3();
68 void WaitForNextPdo4();
69
70 // void WaitForSdos();
71 void WaitForSdo(WORD_t idx, BYTE_t subidx=0, WORDS_t timeout=500);
72
73 void EnableCanMsg(BYTE_t fcode);
74};
75
76#endif
Note: See TracBrowser for help on using the repository browser.