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

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