]> rtime.felk.cvut.cz Git - orte.git/blob - orte/include/protos.h
added documentation by Zdenek Sebek
[orte.git] / orte / include / protos.h
1 /*
2  *  $Id: protos.h,v 0.0.0.1             2003/08/21 
3  *
4  *  AUTHOR: Petr Smolik                 petr.smolik@wo.cz
5  *
6  *  ORTE - OCERA Real-Time Ethernet     http://www.ocera.org/
7  *  --------------------------------------------------------------------
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License as published by
11  *  the Free Software Foundation; either version 2 of the License, or
12  *  (at your option) any later version.
13  *  
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *  GNU General Public License for more details.
18  *  
19  */
20
21 #ifndef _PROTOS_H
22 #define _PROTOS_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 ///////////////////////////////////////////////////////////////////////////////
29 // sock.c
30 extern int
31 sock_start(void);
32 extern void
33 sock_finish(void);
34 extern int
35 sock_init_udp(sock_t *sock);
36 extern void
37 sock_cleanup(sock_t *sock);
38 extern int
39 sock_setsockopt(sock_t *sock,int optname,const char *optval, int optlen);
40 extern int
41 sock_getsockopt(sock_t *sock,int optname,char *optval, int *optlen);
42 extern int
43 sock_bind(sock_t *sock,u_int16_t port);
44 extern int
45 sock_recvfrom(sock_t *sock, void *buf, int max_len,struct sockaddr_in *des,int des_len);
46 extern int
47 sock_sendto(sock_t *sock, void *buf, int len,struct sockaddr_in *des,int des_len);
48 extern int
49 sock_ioctl(sock_t *sock, int cmd, int *arg);
50 extern int
51 sock_get_local_interfaces(sock_t *sock,ORTEIFProp *IFProp,char *IFCount);
52
53 ///////////////////////////////////////////////////////////////////////////////
54 // conv.c
55 extern void 
56 conv_u16(u_int16_t *x,char ef);
57 extern void 
58 conv_u32(u_int32_t *x,char ef);
59 extern void 
60 conv_sn(SequenceNumber *sn,char ef);
61 extern void 
62 conv_ntp(NtpTime *ntp,char ef);
63 extern int
64 getStringPart(char *string,char divChar,int iterator,char *buff);
65
66 ///////////////////////////////////////////////////////////////////////////////
67 // htimerNtp.c
68 // htimerRoot
69 UL_HTIMER_DEC(htimerRoot, \
70       ObjectEntry, \
71       HTimFncRootNode, \
72       htimRoot, \
73       htim) 
74 extern void
75 htimerRoot_run_expired(ORTEDomain *d, 
76       ul_htim_time_t *pact_time);
77 // htimerUnicastCommon
78 UL_HTIMER_DEC(htimerUnicastCommon, \
79       ObjectEntryAID, \
80       HTimFncUserNode, \
81       htimUnicast.common, \
82       htim) 
83 extern void
84 htimerUnicastCommon_update_root_timer(ObjectEntry *objectEntry,
85       ObjectEntryAID *objectEntryAID);
86 extern void 
87 htimerUnicastCommon_run_expired(ORTEDomain *d,
88       ObjectEntryAID *objectEntryAID, 
89       ul_htim_time_t *pact_time);
90 // htimerUnicastSendMetatraffic
91 UL_HTIMER_DEC(htimerUnicastSendMetatraffic, \
92       ObjectEntryAID, \
93       HTimFncUserNode, \
94       htimUnicast.sendMetatraffic, \
95       htim) 
96 extern void
97 htimerUnicastSendMetatraffic_update_root_timer(ObjectEntry *objectEntry,
98       ObjectEntryAID *objectEntryAID);
99 extern void 
100 htimerUnicastSendMetatraffic_run_expired(ORTEDomain *d,
101       ObjectEntryAID *objectEntryAID, 
102       ul_htim_time_t *pact_time);
103 // htimerUnicastSendUserData
104 UL_HTIMER_DEC(htimerUnicastSendUserData, \
105       ObjectEntryAID, \
106       HTimFncUserNode, \
107       htimUnicast.sendUserData, \
108       htim) 
109 extern void
110 htimerUnicastSendUserData_update_root_timer(ObjectEntry *objectEntry,
111       ObjectEntryAID *objectEntryAID);
112 extern void 
113 htimerUnicastSendUserData_run_expired(ORTEDomain *d,
114       ObjectEntryAID *objectEntryAID, 
115       ul_htim_time_t *pact_time);
116 extern NtpTime
117 getActualNtpTime(void);
118
119
120 ///////////////////////////////////////////////////////////////////////////////
121 // debug.c
122 extern void
123 db_init(const char *logfile, const char *options);
124 extern void
125 debug_options(const char *options);
126 extern void
127 db_print(const char *format,...);
128 extern void
129 debug_open_log(const char *logfile);
130 #ifdef ENABLE_MEM_CHECK
131 extern void * 
132 mem_check_malloc(size_t size);
133 extern void 
134 mem_check_free(void *ptr);
135 #endif
136
137 ///////////////////////////////////////////////////////////////////////////////
138 // fnmatch.c
139 extern int
140 fnmatch(const char *__pattern,const char *__string,int __flags);
141
142 ///////////////////////////////////////////////////////////////////////////////
143 // objectEntry.c
144 GAVL_CUST_NODE_INT_DEC(ObjectEntryHID, ObjectEntry, ObjectEntryHID, HostId,
145     objRoot, hidNode, hid, gavl_cmp_int)
146 GAVL_CUST_NODE_INT_DEC(ObjectEntryAID, ObjectEntryHID, ObjectEntryAID, AppId,
147     aidRoot, aidNode, aid, gavl_cmp_int)
148 GAVL_CUST_NODE_INT_DEC(ObjectEntryOID, ObjectEntryAID, ObjectEntryOID, ObjectId,
149     oidRoot, oidNode, oid, gavl_cmp_int)
150 extern void
151 objectEntryRefreshApp(ORTEDomain *d,ObjectEntryOID *objectEntryOID);
152 extern ObjectEntryOID *
153 objectEntryFind(ORTEDomain *d,GUID_RTPS *guid);
154 extern ObjectEntryOID *
155 objectEntryAdd(ORTEDomain *d,GUID_RTPS *guid,void *params);
156 extern int
157 objectEntryDelete(ORTEDomain *d,ObjectEntryOID *objectEntryOID);
158 extern void
159 objectEntryDeleteAll(ORTEDomain *d,ObjectEntry *objectEntry);
160 extern void
161 objectEntryDump(ObjectEntry *objectEntry);
162
163 ///////////////////////////////////////////////////////////////////////////////
164 // ObjectUtils.c
165 extern void 
166 AppParamsInit(AppParams *ap);
167 extern void 
168 PublParamsInit(ORTEPublProp *sp);
169 extern void 
170 SubsParamsInit(ORTESubsProp *sp);
171 extern void
172 updateORTEAppInfo(AppParams *appParams,ORTEAppInfo *appInfo);
173 extern Boolean
174 generateEvent(ORTEDomain *d,GUID_RTPS *guid,void *params,Boolean live);
175 extern Boolean
176 getTypeApp(ORTEDomain *d,AppParams *ap,IPAddress senderIPAddress);
177 extern void 
178 appSelfParamChanged(ORTEDomain *d,Boolean lock,Boolean unlock,
179    Boolean forWM,Boolean alive);
180
181 ///////////////////////////////////////////////////////////////////////////////
182 // event.c
183 extern int32_t 
184 eventAdd(ORTEDomain *d,ObjectEntryAID *objectEntryAID,HTimFncUserNode *fncNode,
185          int where,const char *name,EVH2 *func,pthread_rwlock_t *lock,
186          void *arg1,NtpTime *when_expire);
187 extern int32_t
188 eventDetach(ORTEDomain *d,               
189             ObjectEntryAID *objectEntryAID,
190             HTimFncUserNode *fncNode,
191             int where);
192
193 ///////////////////////////////////////////////////////////////////////////////
194 // parameter.c
195 UL_LIST_CUST_DEC(CSChangeAttributes,
196                  CSChange,ParameterSequence,
197                  attributes,node);
198 extern int
199 parameterDelete(CSChange *csChange);
200 extern int
201 parameterCodeStreamFromCSChange(CSChange *csChange,
202     u_int8_t *rtps_msg,u_int32_t max_msg_len);
203 extern int
204 parameterDecodeStreamToCSChange(CSChange *csChange,u_int8_t *rtps_msg,
205     u_int16_t submsg_len,u_int8_t needByteSwap);
206 extern int
207 parameterUpdateCSChange(
208      CSChange *csChange,AppParams *ap,Boolean Manager);
209 extern int
210 parameterUpdateCSChangeFromPublication(CSChange *csChange,ORTEPublProp *pp);
211 extern int
212 parameterUpdateCSChangeFromSubscription(CSChange *csChange,ORTESubsProp *sp);
213 extern int
214 parameterUpdateApplication(CSChange *csChange,AppParams *ap);
215 extern int
216 parameterUpdatePublication(CSChange *csChange,ORTEPublProp *pp);
217 extern int
218 parameterUpdateSubscription(CSChange *csChange,ORTESubsProp *sp);
219
220 ///////////////////////////////////////////////////////////////////////////////
221 // objectEntryTimer.c
222 extern int
223 objectEntryPurgeTimer(ORTEDomain *d,void *vobjectEntryOID);
224 extern int
225 objectEntryExpirationTimer(ORTEDomain *d,void *vobjectEntryOID);
226
227 ///////////////////////////////////////////////////////////////////////////////
228 // ORTETypeRegister.c
229 GAVL_CUST_NODE_INT_DEC(ORTEType, TypeEntry, TypeNode, const char *,
230     types, node, typeRegister.typeName, gavl_cmp_str)
231
232
233 ///////////////////////////////////////////////////////////////////////////////
234 // ORTEThreadUtils.c
235 extern void
236 ORTEDomainWakeUpReceivingThread(ORTEDomain *d,sock_t *sock,u_int16_t port);
237 extern void
238 ORTEDomainWakeUpSendingThread(ObjectEntry *objectEntry);
239
240 ///////////////////////////////////////////////////////////////////////////////
241 // ORTEAppRecvMetatrafficThread.c
242 extern void 
243 ORTEAppRecvMetatrafficThread(ORTEDomain *d);
244
245 ///////////////////////////////////////////////////////////////////////////////
246 // ORTEAppRecvUserdataThread.c
247 extern void 
248 ORTEAppRecvUserdataThread(ORTEDomain *d);
249
250 ///////////////////////////////////////////////////////////////////////////////
251 // ORTEAppSendThread.c
252 extern void 
253 ORTESendData(ORTEDomain *d,ObjectEntryAID *objectEntryAID,Boolean meta);
254
255 ///////////////////////////////////////////////////////////////////////////////
256 // RTPSHeader.c
257 extern int16_t 
258 RTPSHeaderCreate(u_int8_t *msg,HostId hid,AppId aid);
259 extern int16_t 
260 RTPSHeaderCheck(u_int8_t *msg,int32_t len,MessageInterpret *mi);
261
262 ///////////////////////////////////////////////////////////////////////////////
263 // RTPSPad.c
264 extern void 
265 RTPSPad(u_int8_t *rtps_msg,MessageInterpret *mi);
266
267 ///////////////////////////////////////////////////////////////////////////////
268 // RTPSInfoDST.c
269 extern void 
270 RTPSInfoDST(u_int8_t *rtps_msg,MessageInterpret *mi);
271
272 ///////////////////////////////////////////////////////////////////////////////
273 // RTPSInfoREPLY.c
274 extern void 
275 RTPSInfoREPLY(u_int8_t *rtps_msg,MessageInterpret *mi);
276
277 ///////////////////////////////////////////////////////////////////////////////
278 // RTPSInfoREPLY.c
279 extern int32_t 
280 RTPSInfoREPLYCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
281     IPAddress ipaddress,Port port);
282 extern void 
283 RTPSInfoSRC(u_int8_t *rtps_msg,MessageInterpret *mi);
284
285 ///////////////////////////////////////////////////////////////////////////////
286 // RTPSInfoTS.c
287 extern int32_t 
288 RTPSInfoTSCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,NtpTime time);
289 extern void 
290 RTPSInfoTS(u_int8_t *rtps_msg,MessageInterpret *mi);
291
292 ///////////////////////////////////////////////////////////////////////////////
293 // RTPSVar.c
294 extern void 
295 RTPSVar(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
296
297 ///////////////////////////////////////////////////////////////////////////////
298 // RTPSAck.c
299 extern int32_t 
300 RTPSAckCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
301     SequenceNumber *seqNumber,
302     ObjectId roid,ObjectId woid,Boolean f_bit);
303 extern void 
304 RTPSAck(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
305
306 ///////////////////////////////////////////////////////////////////////////////
307 // RTPSHeardBeat.c
308 extern int 
309 RTPSHeardBeatCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
310     SequenceNumber *firstSeqNumber,SequenceNumber *lastSeqNumber,
311     ObjectId woid,ObjectId roid,Boolean f_bit);
312 extern void 
313 RTPSHeardBeat(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi);
314
315 ///////////////////////////////////////////////////////////////////////////////
316 // RTPSGap.c
317 extern void 
318 RTPSGap(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
319
320 ///////////////////////////////////////////////////////////////////////////////
321 // RTPSIssue.c
322 extern int32_t
323 RTPSIssueCreateHeader(u_int8_t *rtps_msg,u_int32_t max_msg_len,u_int32_t length,
324     ObjectId roid,ObjectId woid,SequenceNumber sn);
325 extern void 
326 RTPSIssue(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
327
328 ///////////////////////////////////////////////////////////////////////////////
329 // RTPSUtils.c
330 extern int gavl_cmp_ntp_time(const NtpTime *a,const NtpTime *b);
331 extern int gavl_cmp_sn(const SequenceNumber *a, const SequenceNumber *b); 
332 extern int gavl_cmp_guid(const GUID_RTPS *a, const GUID_RTPS *b); 
333 extern int gavl_cmp_str(const char *const *a,const char *const *b);
334 extern int getMaxMessageLength(ORTEDomain *d);
335
336 ///////////////////////////////////////////////////////////////////////////////
337 // RTPSCSTWriter.c
338 UL_LIST_CUST_DEC(CSTWriterCSChange,
339                  CSTWriter,CSChange,
340                  csChanges,nodeList);
341 GAVL_CUST_NODE_INT_DEC(CSTWriter, 
342                        CSTPublications, CSTWriter, GUID_RTPS,
343                        cstWriter, node, guid, gavl_cmp_guid);
344 GAVL_CUST_NODE_INT_DEC(CSTRemoteReader, 
345                        CSTWriter, CSTRemoteReader, GUID_RTPS,
346                        cstRemoteReader, node, guid, gavl_cmp_guid);
347 GAVL_CUST_NODE_INT_DEC(CSChangeForReader,
348                        CSTRemoteReader, CSChangeForReader, SequenceNumber,
349                        csChangeForReader, node, csChange->sn, gavl_cmp_sn);
350
351 extern void
352 CSTWriterInit(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
353     ObjectId oid,CSTWriterParams *params,ORTETypeRegister *typeRegister);
354 extern void 
355 CSTWriterDelete(ORTEDomain *d,CSTWriter *cstWriter);
356 extern void
357 CSTWriterAddRemoteReader(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
358     ObjectId oid);
359 extern void 
360 CSTWriterDestroyRemoteReader(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
361 extern void
362 CSTWriterMakeGAP(ORTEDomain *d,CSTWriter *cstWriter,GUID_RTPS *guid);
363 extern void
364 CSTWriterAddCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
365 extern void
366 CSTWriterDestroyCSChangeForReader(CSTRemoteReader *cstRemoteReader,
367     CSChangeForReader   *csChangeForReader,Boolean destroyCSChange);
368 extern void 
369 CSTWriterDestroyCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
370 extern Boolean
371 CSTWriterTryDestroyBestEffortIssue(CSTWriter *cstWriter);
372 extern void
373 CSTWriterRefreshAllCSChanges(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
374
375 ///////////////////////////////////////////////////////////////////////////////
376 // RTPSCSTWriterTimer.c
377 extern int
378 CSTWriterRefreshTimer(ORTEDomain *d,void *vcstWriter);
379 extern int 
380 CSTWriterAnnounceTimer(ORTEDomain *d,void *vcstRemoteReader);
381 extern int 
382 CSChangeForReaderUnderwayTimer(ORTEDomain *da,void *vcsChangeForReader);
383 extern int
384 CSTWriterSendBestEffortTimer(ORTEDomain *d,void *vcstRemoteReader);
385 extern int
386 CSTWriterSendStrictTimer(ORTEDomain *d,void *vcstRemoteReader);
387 extern int
388 CSTWriterSendTimer(ORTEDomain *d,void *vcstRemoteReader);
389         
390 ///////////////////////////////////////////////////////////////////////////////
391 // RTPSCSTReader.c
392 UL_LIST_CUST_DEC(CSTReaderCSChange,
393                  CSTReader,CSChange,
394                  csChanges,nodeList);
395 GAVL_CUST_NODE_INT_DEC(CSTReader, 
396                        CSTSubscriptions, CSTReader, GUID_RTPS,
397                        cstReader, node, guid, gavl_cmp_guid);
398 GAVL_CUST_NODE_INT_DEC(CSTRemoteWriter, 
399                        CSTReader, CSTRemoteWriter, GUID_RTPS,
400                        cstRemoteWriter, node, guid, gavl_cmp_guid);
401 GAVL_CUST_NODE_INT_DEC(CSChangeFromWriter,
402                        CSTRemoteWriter, CSChangeFromWriter, SequenceNumber,
403                        csChangeFromWriter, node, csChange->sn, gavl_cmp_sn);
404 extern void 
405 CSTReaderInit(ORTEDomain *d,CSTReader *cstReader,ObjectEntryOID *object,
406     ObjectId oid,CSTReaderParams *params,ORTETypeRegister *typeRegister);
407 extern void 
408 CSTReaderDelete(ORTEDomain *d,CSTReader *cstReader);
409 extern CSTRemoteWriter *
410 CSTReaderAddRemoteWriter(ORTEDomain *d,CSTReader *cstReader,ObjectEntryOID *object,
411     ObjectId oid);
412 extern void 
413 CSTReaderDestroyRemoteWriter(ORTEDomain *d,CSTRemoteWriter *cstRemoteWriter);
414 extern void
415 CSTReaderAddCSChange(CSTRemoteWriter *cstRemoteWriter,CSChange *csChange);
416 extern void
417 CSTReaderDestroyCSChangeFromWriter(CSTRemoteWriter *cstRemoteWriter,
418     CSChangeFromWriter *csChangeFromWriter,Boolean keepCSChange);
419 extern void 
420 CSTReaderDestroyCSChange(CSTRemoteWriter *cstRemoteWriter,SequenceNumber *sn,
421     Boolean keepCSChange);
422 extern void 
423 CSTReaderSetupState(CSTRemoteWriter *cstRemoteWriter);
424         
425 ///////////////////////////////////////////////////////////////////////////////
426 // RTPSCSTReaderProc.c
427 extern void 
428 CSTReaderProcCSChanges(ORTEDomain *d,CSTRemoteWriter *cstRemoteWriter);
429 extern void 
430 CSTReaderProcCSChangesIssue(CSTRemoteWriter *cstRemoteWriter,Boolean pullCalled);
431
432 ///////////////////////////////////////////////////////////////////////////////
433 // RTPSCSTReaderTimer.c
434 extern int
435 CSTReaderResponceTimer(ORTEDomain *d,void *vcstRemoteWriter);
436 extern int 
437 CSTReaderQueryTimer(ORTEDomain *d,void *vcstRemoteWriter);
438 extern int 
439 CSTReaderDeadlineTimer(ORTEDomain *d,void *vcstReader);
440 extern int 
441 CSTReaderPersistenceTimer(ORTEDomain *d,void *vcstReader);
442
443 ///////////////////////////////////////////////////////////////////////////////
444 // ORTEDomainApp.c
445 UL_LIST_CUST_DEC(Pattern,
446                  PatternEntry,PatternNode,
447                  patterns,node);
448                                                    
449 ///////////////////////////////////////////////////////////////////////////////
450 // ORTETypeRegister.c
451 extern Boolean
452 ORTETypeRegisterFind(ORTEDomain *d,const char *typeName);
453
454 ///////////////////////////////////////////////////////////////////////////////
455 // ORTEPublication.c
456 GAVL_CUST_NODE_INT_DEC(PublicationList, 
457                        PSEntry, ObjectEntryOID, GUID_RTPS,
458                        publications, psNode, guid, gavl_cmp_guid);
459 extern int
460 ORTEPublicationSendLocked(ORTEPublication *cstWriter);
461
462 ///////////////////////////////////////////////////////////////////////////////
463 // ORTESubcription.c
464 extern int
465 ORTESubscriptionDestroyLocked(ORTESubscription *cstReader);
466
467 ///////////////////////////////////////////////////////////////////////////////
468 // ORTEPublicationTimer.c
469 extern int
470 PublicationCallBackTimer(ORTEDomain *d,void *vcstWriter);
471
472 ///////////////////////////////////////////////////////////////////////////////
473 // ORTESubscription.c
474 GAVL_CUST_NODE_INT_DEC(SubscriptionList, 
475                        PSEntry, ObjectEntryOID, GUID_RTPS,
476                        subscriptions, psNode, guid, gavl_cmp_guid);
477
478                        
479 #ifdef __cplusplus
480 } /* extern "C"*/
481 #endif
482
483 #endif /* _PROTOS_H */