1 %{
2 #include "ctb-0.16/gpib.h"
3 %}
4 
5 %include iobase.i
6 
7 namespace ctb {
8 
9 %typemap(in) void * dcs (Gpib_DCS tmp) {
10 	/* dont check for list */
11 	$1 = &tmp;
12 }
13 
14 enum GpibTimeout
15 {
16     GpibTimeoutNONE = 0,
17     GpibTimeout10us,
18     GpibTimeout30us,
19     GpibTimeout100us,
20     GpibTimeout300us,
21     GpibTimeout1ms,
22     GpibTimeout3ms,
23     GpibTimeout10ms,
24     GpibTimeout30ms,
25     GpibTimeout100ms,
26     GpibTimeout300ms,
27     GpibTimeout1s,
28     GpibTimeout3s,
29     GpibTimeout10s,
30     GpibTimeout30s,
31     GpibTimeout100s,
32     GpibTimeout300s,
33     GpibTimeout1000s
34 };
35 
36 struct Gpib_DCS
37 {
38     int m_address1;
39     int m_address2;
40     GpibTimeout m_timeout;
41     bool m_eot;
42     unsigned char m_eosChar;
43     unsigned char m_eosMode;
44     Gpib_DCS();
45     ~Gpib_DCS();
46     char* GetSettings();
47 };
48 
49 enum {
50     CTB_GPIB_SETADR = CTB_GPIB,
51     CTB_GPIB_GETRSP,
52     CTB_GPIB_GETSTA,
53     CTB_GPIB_GETERR,
54     CTB_GPIB_GETLINES,
55     CTB_GPIB_SETTIMEOUT,
56     CTB_GPIB_GTL,
57     CTB_GPIB_REN,
58     CTB_GPIB_RESET_BUS,
59     CTB_GPIB_SET_EOS_CHAR,
60     CTB_GPIB_GET_EOS_CHAR,
61     CTB_GPIB_SET_EOS_MODE,
62     CTB_GPIB_GET_EOS_MODE
63 };
64 
65 class GpibDevice : public IOBase
66 {
67 protected:
68     int m_board;
69     int m_hd;
70     int m_state;
71     int m_error;
72     int m_count;
73     int m_asyncio;
74     Gpib_DCS m_dcs;
75     int CloseDevice();
76     int OpenDevice(const char* devname, void* dcs);
77     virtual const char* GetErrorString(int error,bool detailed);
78 public:
79     GpibDevice();
80     virtual ~GpibDevice();
81     const char* ClassName();
82     virtual const char* GetErrorDescription(int error);
83     virtual const char* GetErrorNotation(int error);
84     virtual char* GetSettingsAsString();
85     int Ibrd(char* buf,size_t len);
86     int Ibwrt(char* buf,size_t len);
87     virtual int Ioctl(int cmd,void* args);
88     int IsOpen();
89     int Read(char* buf,size_t len);
90     int Write(char* buf,size_t len);
91 
92     static int FindListeners(int board = 0);
93 
94 };
95 
96 };
97