srcp
 Alle Datenstrukturen Dateien Funktionen Variablen Makrodefinitionen Seiten
srcp.h
gehe zur Dokumentation dieser Datei
1 #ifndef SRCP_H
2 #define SRCP_H
3 
12 #include <boolean.h>
13 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 /* SRCP V7 */
21 
22 #define SRCP_V7_TARGET_GL_GENERIC_LOCO 1
23 #define SRCP_V7_TARGET_GA_GENERIC_ACCESSORY 2
24 #define SRCP_V7_TARGET_FB_FEEDBACK 3
25 #define SRCP_V7_TARGET_TIME 4
26 #define SRCP_V7_TARGET_POWER 5
27 #define SRCP_V7_TARGET_UNKNOWN 6
28 #define SRCP_V7_TARGET_ERROR 7
29 
30 #define SRCP_V7_ERRNO_ERROR_NOT_SUPPORTED -1
31 #define SRCP_V7_ERRNO_ERROR_NO_INFORMATION -2
32 #define SRCP_V7_ERRNO_ERROR_TIMEOUT -3
33 
34 #define SRCP_V7_STR_ANTWORT_INFO "INFO %d"
35 
36 typedef struct {
37  union {
38  struct {
39  char Protocol[10];
40  char Type[5];
41  int Addr;
42  int Value;
43  int Direction;
44  int V;
45  int VMax;
46  int NumF;
47  int f[16];
48  } GlParams;
49  struct {
50  char Protocol[10];
51  char Type[5];
52  int Addr;
53  int Port;
54  int Value;
55  int Delay;
56  } GaParams;
57  struct {
58  char ModuleType[5];
59  int Addr;
60  int Value;
61  int Timeout;
62  } FbParams;
63  struct {
64  int JulDay;
65  int Hour;
66  int Minute;
67  int Second;
68  int Fx;
69  int Fy;
70  } TimeParams;
71  struct {
72  BOOL PowerOn;
73  } PowerParams;
74  } TargetParms;
76 
77 int SrcpV7EncAnswer(char *Buf, int Error);
78 int SrcpV7DecSet(char *Line, int Length, SrcpV7ParamType *Params);
79 int SrcpV7DecGet(char *Line, int Length, SrcpV7ParamType *Params);
80 int SrcpV7DecInit(char *Line, int Length, SrcpV7ParamType *Params);
81 int SrcpV7DecWait(char *Line, int Length, SrcpV7ParamType *Params);
82 int SrcpV7DecTerm(char *Line, int Length, SrcpV7ParamType *Params);
83 int SrcpV7DecVerify(char *Line, int Length, SrcpV7ParamType *Params);
84 int SrcpV7DecWrite(char *Line, int Length, SrcpV7ParamType *Params);
85 int SrcpV7DecRead(char *Line, int Length, SrcpV7ParamType *Params);
86 
87 
88 /* SRCP > V7 */
89 
90 #define SRCP_HANDSHAKE_OK 0
91 #define SRCP_HANDSHAKE_MODE_INFO 1
92 #define SRCP_HANDSHAKE_MODE_COMMAND 2
93 #define SRCP_HANDSHAKE_ERROR 3
94 
95 #define SRCP_CMD_ERROR 0
96 #define SRCP_CMD_SET 1
97 #define SRCP_CMD_GET 2
98 #define SRCP_CMD_WAIT 3
99 #define SRCP_CMD_INIT 4
100 #define SRCP_CMD_TERM 5
101 #define SRCP_CMD_VERIFY 6
102 #define SRCP_CMD_RESET 7
103 #define SRCP_CMD_GO 8
104 #define SRCP_CMD_WRITE 9
105 #define SRCP_CMD_READ 10
106 
107 #define SRCP_V8_DEVICE_GROUP_GL_GENERIC_LOCO 1
108 #define SRCP_V8_DEVICE_GROUP_GA_GENERIC_ACCESSORY 2
109 #define SRCP_V8_DEVICE_GROUP_FB_FEEDBACK_SENSOR 3
110 #define SRCP_V8_DEVICE_GROUP_TIME 4
111 #define SRCP_V8_DEVICE_GROUP_POWER 5
112 #define SRCP_V8_DEVICE_GROUP_UNKNOWN 6
113 #define SRCP_V8_DEVICE_GROUP_ERROR 7
114 #define SRCP_V8_DEVICE_GROUP_GM_GENERIC_MESSAGE 8
115 #define SRCP_V8_DEVICE_GROUP_LOCK 9
116 #define SRCP_V8_DEVICE_GROUP_SERVER 10
117 #define SRCP_V8_DEVICE_GROUP_SESSION 11
118 #define SRCP_V8_DEVICE_GROUP_SM_SERVICE_MODE 12
119 #define SRCP_V8_DEVICE_GROUP_DESCRIPTION 13
120 
121 #define SRCP_ANTWORT_HANDSHAKE_GO_OK 0
122 #define SRCP_ANTWORT_HANDSHAKE_PROTO_OK 1
123 #define SRCP_ANTWORT_HANDSHAKE_CONMODE_OK 2
124 #define SRCP_ANTWORT_HANDSHAKE_PROTO_ERR 3
125 #define SRCP_ANTWORT_HANDSHAKE_CONMODE_ERR 4
126 #define SRCP_ANTWORT_HANDSHAKE_INSUFFD_ERR 5
127 #define SRCP_ANTWORT_HANDSHAKE_NORES_ERR 6
128 
129 #define SRCP_ANTWORT_COMMAND_INFO_OK 0
130 #define SRCP_ANTWORT_COMMAND_INFOINIT_OK 1
131 #define SRCP_ANTWORT_COMMAND_INFOTERM_OK 2
132 
133 #define SRCP_ANTWORT_COMMAND_OK 0
134 #define SRCP_ANTWORT_COMMAND_UNKNOWN_ERR 1
135 #define SRCP_ANTWORT_COMMAND_UNVAL_ERR 2
136 #define SRCP_ANTWORT_COMMAND_WRVAL_ERR 3
137 #define SRCP_ANTWORT_COMMAND_DEVLOCK 4
138 #define SRCP_ANTWORT_COMMAND_FORBID_ERR 5
139 #define SRCP_ANTWORT_COMMAND_NODATA_ERR 6
140 #define SRCP_ANTWORT_COMMAND_TIMEOUT 7
141 #define SRCP_ANTWORT_COMMAND_TOLONG_ERR 8
142 #define SRCP_ANTWORT_COMMAND_TOSHORT_ERR 9
143 #define SRCP_ANTWORT_COMMAND_UNPROT_ERR 10
144 #define SRCP_ANTWORT_COMMAND_UNDEV_ERR 11
145 #define SRCP_ANTWORT_COMMAND_UNGRP_ERR 12
146 #define SRCP_ANTWORT_COMMAND_UNOP_ERR 13
147 #define SRCP_ANTWORT_COMMAND_REINIT_ERR 14
148 #define SRCP_ANTWORT_COMMAND_UNSUPP_ERR 15
149 #define SRCP_ANTWORT_COMMAND_ERR 16
150 
151 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_GO_OK 200
152 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_PROTO_OK 201
153 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_CONMODE_OK 202
154 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_PROTO_ERR 400
155 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_CONMODE_ERR 401
156 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_INSUFFD_ERR 402
157 #define SRCP_ERRNO_ANTWORT_HANDSHAKE_NORES_ERR 500
158 #define SRCP_ERRNO_ANTWORT_COMMAND_INFO_OK 100
159 #define SRCP_ERRNO_ANTWORT_COMMAND_INFOINIT_OK 101
160 #define SRCP_ERRNO_ANTWORT_COMMAND_INFOTERM_OK 102
161 #define SRCP_ERRNO_ANTWORT_COMMAND_OK 200
162 #define SRCP_ERRNO_ANTWORT_COMMAND_UNKNOWN_ERR 410
163 #define SRCP_ERRNO_ANTWORT_COMMAND_UNVAL_ERR 411
164 #define SRCP_ERRNO_ANTWORT_COMMAND_WRVAL_ERR 412
165 #define SRCP_ERRNO_ANTWORT_COMMAND_DEVLOCK 414
166 #define SRCP_ERRNO_ANTWORT_COMMAND_FORBID_ERR 415
167 #define SRCP_ERRNO_ANTWORT_COMMAND_NODATA_ERR 416
168 #define SRCP_ERRNO_ANTWORT_COMMAND_TIMEOUT 417
169 #define SRCP_ERRNO_ANTWORT_COMMAND_TOLONG_ERR 418
170 #define SRCP_ERRNO_ANTWORT_COMMAND_TOSHORT_ERR 419
171 #define SRCP_ERRNO_ANTWORT_COMMAND_UNPROT_ERR 420
172 #define SRCP_ERRNO_ANTWORT_COMMAND_UNDEV_ERR 421
173 #define SRCP_ERRNO_ANTWORT_COMMAND_UNGRP_ERR 422
174 #define SRCP_ERRNO_ANTWORT_COMMAND_UNOP_ERR 423
175 #define SRCP_ERRNO_ANTWORT_COMMAND_REINIT_ERR 424
176 #define SRCP_ERRNO_ANTWORT_COMMAND_UNSUPP_ERR 425
177 #define SRCP_ERRNO_ANTWORT_COMMAND_ERR 499
178 
179 #define SRCP_STR_ANTWORT_HANDSHAKE_GO_OK "200 OK GO %s"
180 #define SRCP_STR_ANTWORT_HANDSHAKE_PROTO_OK "201 OK PROTOCOL SRCP"
181 #define SRCP_STR_ANTWORT_HANDSHAKE_CONMODE_OK "202 OK CONNECTIONMODE"
182 #define SRCP_STR_ANTWORT_HANDSHAKE_PROTO_ERR "400 ERROR unsupported protocol"
183 #define SRCP_STR_ANTWORT_HANDSHAKE_CONMODE_ERR "401 ERROR unsupported connection mode"
184 #define SRCP_STR_ANTWORT_HANDSHAKE_INSUFFD_ERR "402 ERROR insufficient data"
185 #define SRCP_STR_ANTWORT_HANDSHAKE_NORES_ERR "500 ERROR out of resources"
186 #define SRCP_STR_ANTWORT_COMMAND_INFO_OK "100 INFO %s"
187 #define SRCP_STR_ANTWORT_COMMAND_INFOINIT_OK "101 INFO %s"
188 #define SRCP_STR_ANTWORT_COMMAND_INFOTERM_OK "102 INFO %s"
189 #define SRCP_STR_ANTWORT_COMMAND_OK "200 OK"
190 #define SRCP_STR_ANTWORT_COMMAND_UNKNOWN_ERR "410 ERROR unknown command"
191 #define SRCP_STR_ANTWORT_COMMAND_UNVAL_ERR "411 ERROR unknown value"
192 #define SRCP_STR_ANTWORT_COMMAND_WRVAL_ERR "412 ERROR wrong value"
193 #define SRCP_STR_ANTWORT_COMMAND_DEVLOCK "414 ERROR device locked"
194 #define SRCP_STR_ANTWORT_COMMAND_FORBID_ERR "415 ERROR forbidden"
195 #define SRCP_STR_ANTWORT_COMMAND_NODATA_ERR "416 ERROR no data"
196 #define SRCP_STR_ANTWORT_COMMAND_TIMEOUT "417 ERROR timeout"
197 #define SRCP_STR_ANTWORT_COMMAND_TOLONG_ERR "418 ERROR list too long"
198 #define SRCP_STR_ANTWORT_COMMAND_TOSHORT_ERR "419 ERROR list too short"
199 #define SRCP_STR_ANTWORT_COMMAND_UNPROT_ERR "420 ERROR unsupported device protocol"
200 #define SRCP_STR_ANTWORT_COMMAND_UNDEV_ERR "421 ERROR unsupported device"
201 #define SRCP_STR_ANTWORT_COMMAND_UNGRP_ERR "422 ERROR unsupported device group"
202 #define SRCP_STR_ANTWORT_COMMAND_UNOP_ERR "423 ERROR unsupported operation"
203 #define SRCP_STR_ANTWORT_COMMAND_REINIT_ERR "424 ERROR device reinitialized"
204 #define SRCP_STR_ANTWORT_COMMAND_UNSUPP_ERR "425 ERROR not supported"
205 #define SRCP_STR_ANTWORT_COMMAND_ERR "499 ERROR unspecified error"
206 
207 
208 typedef struct {
209  int Bus;
210  union {
211  struct {
212  int Addr;
214  int V;
215  int VMax;
216  int NumF;
217  int f[16];
218  } GlParams;
219  struct {
220  int Addr;
221  int Port;
222  int Value;
223  int Delay;
224  } GaParams;
225  struct {
226  int Addr;
227  int Value;
228  int Timeout;
229  } FbParams;
230  struct {
231  int SendTo;
232  int ReplyTo;
233  } GmParams;
234  struct {
236  } SmParams;
237  struct {
238  int JulDay;
239  int Hour;
240  int Minute;
241  int Second;
242  } TimeParams;
243  struct {
245  int Addr;
246  int Duration;
247  } LockParams;
248  struct {
249  BOOL PowerOn;
250  } PowerParams;
251  struct {
253  } SessionParams;
254  } DeviceGroupParms;
256 
257 
258 int SrcpEncAnswerHandshake(char *Buf, int Answer, char *Param);
259 #define SrcpEncAnswerHandshakeGoOk(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_GO_OK,Param)
260 #define SrcpEncAnswerHandshakeProtoOk(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_PROTO_OK,(char *)NULL)
261 #define SrcpEncAnswerHandshakeConmodeOk(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_CONMODE_OK,(char *)NULL)
262 #define SrcpEncAnswerHandshakeProtoErr(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_PROTO_ERR,(char *)NULL)
263 #define SrcpEncAnswerHandshakeConmodeErr(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_CONMODE_ERR,(char *)NULL)
264 #define SrcpEncAnswerHandshakeInsuffdErr(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_INSUFFD_ERR(char *)NULL)
265 #define SrcpEncAnswerHandshakeNoresErr(Buf,Param) SrcpEncAnswerHandshake(Buf,SRCP_ANTWORT_HANDSHAKE_NORES_ERR,(char *)NULL)
266 
267 int SrcpEncAnswerCommandInfo(char *Buf, int Answer, char *Param);
268 #define SrcpEncAnswerCommandInfoOk(Buf,Param) SrcpEncAnswerCommandInfo(Buf,SRCP_ANTWORT_COMMAND_INFO_OK,Param)
269 #define SrcpEncAnswerCommandInfoinitOk(Buf,Param) SrcpEncAnswerCommandInfo(Buf,SRCP_ANTWORT_COMMAND_INFOINIT_OK,Param)
270 #define SrcpEncAnswerCommandInfotermOk(Buf,Param) SrcpEncAnswerCommandInfo(Buf,SRCP_ANTWORT_COMMAND_INFOTERM_OK,Param)
271 
272 int SrcpEncAnswerCommand(char *Buf, int Answer);
273 #define SrcpEncAnswerCommandOk(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_OK)
274 #define SrcpEncAnswerCommandUnknownErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNKNOWN_ERR)
275 #define SrcpEncAnswerCommandUnvalErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNVAL_ERR)
276 #define SrcpEncAnswerCommandWrvalErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_WRVAL_ERR)
277 #define SrcpEncAnswerCommandDevlock(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_DEVLOCK)
278 #define SrcpEncAnswerCommandForbidErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_FORBID_ERR)
279 #define SrcpEncAnswerCommandNodataErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_NODATA_ERR)
280 #define SrcpEncAnswerCommandTimeout(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_TIMEOUT)
281 #define SrcpEncAnswerCommandTolongErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_TOLONG_ERR)
282 #define SrcpEncAnswerCommandToshortErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_TOSHORT_ERR)
283 #define SrcpEncAnswerCommandUnprotErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNPROT_ERR)
284 #define SrcpEncAnswerCommandUndevErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNDEV_ERR)
285 #define SrcpEncAnswerCommandUngrpErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNGRP_ERR)
286 #define SrcpEncAnswerCommandUnopErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNOP_ERR)
287 #define SrcpEncAnswerCommandReinitErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_REINIT_ERR)
288 #define SrcpEncAnswerCommandUnsuppErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_UNSUPP_ERR)
289 #define SrcpEncAnswerCommandErr(Buf) SrcpEncAnswerCommand(Buf,SRCP_ANTWORT_COMMAND_ERR)
290 
291 int SrcpDecHandshake(char *Line, int Length);
292 int SrcpDecGetCmd(char *Line, int Length);
293 
294 int SrcpV8DecCheck(char *Line, int Length, SrcpV8ParamType *Params);
295 int SrcpV8DecGet(char *Line, int Length, SrcpV8ParamType *Params);
296 int SrcpV8DecWait(char *Line, int Length, SrcpV8ParamType *Params);
297 int SrcpV8DecInit(char *Line, int Length, SrcpV8ParamType *Params);
298 int SrcpV8DecReset(char *Line, int Length, SrcpV8ParamType *Params);
299 int SrcpV8DecSet(char *Line, int Length, SrcpV8ParamType *Params);
300 int SrcpV8DecTerm(char *Line, int Length, SrcpV8ParamType *Params);
301 int SrcpV8DecVerify(char *Line, int Length, SrcpV8ParamType *Params);
302 int SrcpV8DecWait(char *Line, int Length, SrcpV8ParamType *Params);
303 
304 #ifdef __cplusplus
305 }
306 #endif
307 
308 #endif