]> rtime.felk.cvut.cz Git - orte.git/blobdiff - orte/include/protos.h
Document gAVL declaration
[orte.git] / orte / include / protos.h
index ba9dbe45d8deddf45fb8ee03ea06a00530a95b70..4750b237e79d125e952fbfecbe5797ca42fe5cb8 100644 (file)
@@ -1,9 +1,18 @@
 /*
  *  $Id: protos.h,v 0.0.0.1             2003/08/21 
  *
- *  AUTHOR: Petr Smolik                 petr.smolik@wo.cz
- *
- *  ORTE - OCERA Real-Time Ethernet     http://www.ocera.org/
+ *  -------------------------------------------------------------------  
+ *                                ORTE                                 
+ *                      Open Real-Time Ethernet                       
+ *                                                                    
+ *                      Copyright (C) 2001-2006                       
+ *  Department of Control Engineering FEE CTU Prague, Czech Republic  
+ *                      http://dce.felk.cvut.cz                       
+ *                      http://www.ocera.org                          
+ *                                                                    
+ *  Author:             Petr Smolik    petr@smoliku.cz             
+ *  Advisor:            Pavel Pisa                                   
+ *  Project Responsible: Zdenek Hanzalek                              
  *  --------------------------------------------------------------------
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -36,30 +45,24 @@ sock_init_udp(sock_t *sock);
 extern void
 sock_cleanup(sock_t *sock);
 extern int
-sock_setsockopt(sock_t *sock,int optname,const char *optval, int optlen);
+sock_setsockopt(sock_t *sock,int level,int optname,const char *optval, int optlen);
 extern int
-sock_getsockopt(sock_t *sock,int optname,char *optval, int *optlen);
+sock_getsockopt(sock_t *sock,int level,int optname,char *optval, int *optlen);
 extern int
-sock_bind(sock_t *sock,u_int16_t port);
+sock_bind(sock_t *sock,uint16_t port, IPAddress listen);
 extern int
 sock_recvfrom(sock_t *sock, void *buf, int max_len,struct sockaddr_in *des,int des_len);
 extern int
 sock_sendto(sock_t *sock, void *buf, int len,struct sockaddr_in *des,int des_len);
 extern int
-sock_ioctl(sock_t *sock, int cmd, int *arg);
+sock_ioctl(sock_t *sock, long cmd, unsigned long *arg);
 extern int
 sock_get_local_interfaces(sock_t *sock,ORTEIFProp *IFProp,char *IFCount);
 
 ///////////////////////////////////////////////////////////////////////////////
 // conv.c
-extern void 
-conv_u16(u_int16_t *x,char ef);
-extern void 
-conv_u32(u_int32_t *x,char ef);
-extern void 
-conv_sn(SequenceNumber *sn,char ef);
-extern void 
-conv_ntp(NtpTime *ntp,char ef);
+extern int
+getStringPart(char *string,char divChar,int *iterator,char *buff);
 
 ///////////////////////////////////////////////////////////////////////////////
 // htimerNtp.c
@@ -139,6 +142,9 @@ fnmatch(const char *__pattern,const char *__string,int __flags);
 
 ///////////////////////////////////////////////////////////////////////////////
 // objectEntry.c
+UL_LIST_CUST_DEC(ObjectEntryMulticast,
+                 ObjectEntryOID,CSTRemoteReader,
+                multicastRemoteReaders,multicastNode);
 GAVL_CUST_NODE_INT_DEC(ObjectEntryHID, ObjectEntry, ObjectEntryHID, HostId,
     objRoot, hidNode, hid, gavl_cmp_int)
 GAVL_CUST_NODE_INT_DEC(ObjectEntryAID, ObjectEntryHID, ObjectEntryAID, AppId,
@@ -152,7 +158,7 @@ objectEntryFind(ORTEDomain *d,GUID_RTPS *guid);
 extern ObjectEntryOID *
 objectEntryAdd(ORTEDomain *d,GUID_RTPS *guid,void *params);
 extern int
-objectEntryDelete(ORTEDomain *d,ObjectEntryOID *objectEntryOID);
+objectEntryDelete(ORTEDomain *d,ObjectEntryOID *objectEntryOID,Boolean destroy);
 extern void
 objectEntryDeleteAll(ORTEDomain *d,ObjectEntry *objectEntry);
 extern void
@@ -173,7 +179,16 @@ generateEvent(ORTEDomain *d,GUID_RTPS *guid,void *params,Boolean live);
 extern Boolean
 getTypeApp(ORTEDomain *d,AppParams *ap,IPAddress senderIPAddress);
 extern void 
-appSelfParamChanged(ORTEDomain *d,Boolean lock,Boolean unlock,Boolean forWM);
+appSelfParamChanged(ORTEDomain *d,Boolean lock,Boolean unlock,
+   Boolean forWM,Boolean alive);
+extern Boolean
+matchMulticastAddresses(ObjectEntryOID *o1,ObjectEntryOID *o2);
+extern ObjectEntryOID *
+getAppO2SRemoteReader(ORTEDomain *d,ObjectEntryOID *objectEntryOID,
+    AppParams *ap);
+extern ObjectEntryOID *
+getSubsO2SRemoteReader(ORTEDomain *d,ObjectEntryOID *objectEntryOID,
+    ORTESubsProp *sp);
 
 ///////////////////////////////////////////////////////////////////////////////
 // event.c
@@ -193,13 +208,13 @@ UL_LIST_CUST_DEC(CSChangeAttributes,
                  CSChange,ParameterSequence,
                  attributes,node);
 extern int
+parameterGetDataLength(CSChange *csChange);
+extern int
 parameterDelete(CSChange *csChange);
 extern int
-parameterCodeStreamFromCSChange(CSChange *csChange,
-    u_int8_t *rtps_msg,u_int32_t max_msg_len);
+parameterCodeCodecFromCSChange(CSChange *csChange,CDR_Codec *cdrCodec);
 extern int
-parameterDecodeStreamToCSChange(CSChange *csChange,u_int8_t *rtps_msg,
-    u_int16_t submsg_len,u_int8_t needByteSwap);
+parameterDecodeCodecToCSChange(CSChange *csChange,CDR_Codec *cdrCodec);
 extern int
 parameterUpdateCSChange(
      CSChange *csChange,AppParams *ap,Boolean Manager);
@@ -223,118 +238,121 @@ objectEntryExpirationTimer(ORTEDomain *d,void *vobjectEntryOID);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTETypeRegister.c
-GAVL_CUST_NODE_INT_DEC(ORTEType, TypeEntry, TypeNode, char *,
+GAVL_CUST_NODE_INT_DEC(ORTEType, TypeEntry, TypeNode, const char *,
     types, node, typeRegister.typeName, gavl_cmp_str)
 
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEThreadUtils.c
 extern void
-ORTEDomainWakeUpReceivingThread(ORTEDomain *d,sock_t *sock,u_int16_t port);
+ORTEDomainWakeUpReceivingThread(ORTEDomain *d,sock_t *sock,uint16_t port);
 extern void
 ORTEDomainWakeUpSendingThread(ObjectEntry *objectEntry);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEAppRecvMetatrafficThread.c
 extern void 
-ORTEAppRecvMetatrafficThread(ORTEDomain *d);
+ORTEAppRecvThread(TaskProp *tp);
 
-///////////////////////////////////////////////////////////////////////////////
-// ORTEAppRecvUserdataThread.c
-extern void 
-ORTEAppRecvUserdataThread(ORTEDomain *d);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEAppSendThread.c
 extern void 
 ORTESendData(ORTEDomain *d,ObjectEntryAID *objectEntryAID,Boolean meta);
+extern void 
+ORTEAppSendThread(TaskProp *tp);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSHeader.c
-extern int16_t 
-RTPSHeaderCreate(u_int8_t *msg,HostId hid,AppId aid);
-extern int16_t 
-RTPSHeaderCheck(u_int8_t *msg,int32_t len,MessageInterpret *mi);
+extern int
+RTPSHeaderCreate(CDR_Codec *cdrCodec,HostId hid,AppId aid);
+extern int 
+RTPSHeaderCheck(CDR_Codec *cdrCodec,int32_t len,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSPad.c
 extern void 
-RTPSPad(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSPad(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoDST.c
 extern void 
-RTPSInfoDST(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoDST(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoREPLY.c
-extern void 
-RTPSInfoREPLY(u_int8_t *rtps_msg,MessageInterpret *mi);
+extern int 
+RTPSInfoREPLYCreate(CDR_Codec *cdrCodec,IPAddress ipaddress,Port port);
+void 
+RTPSInfoREPLY(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
-// RTPSInfoREPLY.c
-extern int32_t 
-RTPSInfoREPLYCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
-    IPAddress ipaddress,Port port);
+// RTPSInfoSRC.c
 extern void 
-RTPSInfoSRC(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoSRC(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSInfoTS.c
-extern int32_t 
-RTPSInfoTSCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,NtpTime time);
+extern int
+RTPSInfoTSCreate(CDR_Codec *cdrCodec,NtpTime time);
 extern void 
-RTPSInfoTS(u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSInfoTS(CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSVar.c
+extern int 
+RTPSVarCreate(CDR_Codec *cdrCodec,ObjectId roid,ObjectId woid,CSChange *csChange);
 extern void 
-RTPSVar(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSVar(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSAck.c
-extern int32_t 
-RTPSAckCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
+extern int
+RTPSAckCreate(CDR_Codec *cdrCodec,
     SequenceNumber *seqNumber,
     ObjectId roid,ObjectId woid,Boolean f_bit);
 extern void 
-RTPSAck(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSAck(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSHeardBeat.c
 extern int 
-RTPSHeardBeatCreate(u_int8_t *rtps_msg,u_int32_t max_msg_len,
-    SequenceNumber *firstSeqNumber,SequenceNumber *lastSeqNumber,
-    ObjectId woid,ObjectId roid,Boolean f_bit);
+RTPSHeartBeatCreate(CDR_Codec *cdrCodec,
+    SequenceNumber *fsn,SequenceNumber *lsn,
+    ObjectId roid,ObjectId woid,Boolean f_bit);
 extern void 
-RTPSHeardBeat(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi);
+RTPSHeartBeat(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSGap.c
-extern void 
-RTPSGap(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+extern int 
+RTPSGapCreate(CDR_Codec *cdrCodec,ObjectId roid,ObjectId woid,CSChange *csChange);
+void 
+RTPSGap(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSIssue.c
-extern int32_t
-RTPSIssueCreateHeader(u_int8_t *rtps_msg,u_int32_t max_msg_len,u_int32_t length,
+extern int
+RTPSIssueCreateHeader(CDR_Codec *cdrCodec,uint32_t length,
     ObjectId roid,ObjectId woid,SequenceNumber sn);
 extern void 
-RTPSIssue(ORTEDomain *d,u_int8_t *rtps_msg,MessageInterpret *mi,IPAddress senderIPAddress);
+RTPSIssue(ORTEDomain *d,CDR_Codec *cdrCodec,MessageInterpret *mi,IPAddress senderIPAddress);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSUtils.c
 extern int gavl_cmp_ntp_time(const NtpTime *a,const NtpTime *b);
 extern int gavl_cmp_sn(const SequenceNumber *a, const SequenceNumber *b); 
 extern int gavl_cmp_guid(const GUID_RTPS *a, const GUID_RTPS *b); 
-extern int gavl_cmp_str(char *const *a,char *const *b);
-extern int getMaxMessageLength(ORTEDomain *d);
+extern int gavl_cmp_str(const char *const *a,const char *const *b);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSCSTWriter.c
 UL_LIST_CUST_DEC(CSTWriterCSChange,
                  CSTWriter,CSChange,
                  csChanges,nodeList);
+UL_LIST_CUST_DEC(CSChangeParticipant,
+                 CSChange,CSChangeForReader,
+                writerParticipants,participantNode);
 GAVL_CUST_NODE_INT_DEC(CSTWriter, 
                        CSTPublications, CSTWriter, GUID_RTPS,
                        cstWriter, node, guid, gavl_cmp_guid);
@@ -350,9 +368,9 @@ CSTWriterInit(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
     ObjectId oid,CSTWriterParams *params,ORTETypeRegister *typeRegister);
 extern void 
 CSTWriterDelete(ORTEDomain *d,CSTWriter *cstWriter);
-extern void
-CSTWriterAddRemoteReader(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *object,
-    ObjectId oid);
+extern CSTRemoteReader *
+CSTWriterAddRemoteReader(ORTEDomain *d,CSTWriter *cstWriter,ObjectEntryOID *pobject,
+    ObjectId oid,ObjectEntryOID *sobject);
 extern void 
 CSTWriterDestroyRemoteReader(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
 extern void
@@ -360,17 +378,23 @@ CSTWriterMakeGAP(ORTEDomain *d,CSTWriter *cstWriter,GUID_RTPS *guid);
 extern void
 CSTWriterAddCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
 extern void
-CSTWriterDestroyCSChangeForReader(CSTRemoteReader *cstRemoteReader,
-    CSChangeForReader   *csChangeForReader,Boolean destroyCSChange);
+CSTWriterDestroyCSChangeForReader(CSChangeForReader *csChangeForReader,
+   Boolean destroyCSChange);
 extern void 
 CSTWriterDestroyCSChange(ORTEDomain *d,CSTWriter *cstWriter,CSChange *csChange);
 extern Boolean
 CSTWriterTryDestroyBestEffortIssue(CSTWriter *cstWriter);
 extern void
 CSTWriterRefreshAllCSChanges(ORTEDomain *d,CSTRemoteReader *cstRemoteReader);
+extern int
+CSTWriterCSChangeForReaderNewState(CSChangeForReader *csChangeForReader);
+extern void
+CSTWriterMulticast(CSChangeForReader *csChangeForReader);
 
 ///////////////////////////////////////////////////////////////////////////////
 // RTPSCSTWriterTimer.c
+extern int 
+CSTWriterRegistrationTimer(ORTEDomain *d,void *vcstWriter);
 extern int
 CSTWriterRefreshTimer(ORTEDomain *d,void *vcstWriter);
 extern int 
@@ -389,9 +413,14 @@ CSTWriterSendTimer(ORTEDomain *d,void *vcstRemoteReader);
 UL_LIST_CUST_DEC(CSTReaderCSChange,
                  CSTReader,CSChange,
                  csChanges,nodeList);
-GAVL_CUST_NODE_INT_DEC(CSTReader, 
-                       CSTSubscriptions, CSTReader, GUID_RTPS,
-                       cstReader, node, guid, gavl_cmp_guid);
+GAVL_CUST_NODE_INT_DEC(CSTReader,         /* prefix */
+                      CSTSubscriptions,  /* root_t */
+                      CSTReader,         /* item_t */
+                      GUID_RTPS,         /* key_t */
+                      cstReader,         /* root_node */
+                      node,              /* item_node */
+                      guid,              /* item_key */
+                      gavl_cmp_guid);    /* cmp_fnc */
 GAVL_CUST_NODE_INT_DEC(CSTRemoteWriter, 
                        CSTReader, CSTRemoteWriter, GUID_RTPS,
                        cstRemoteWriter, node, guid, gavl_cmp_guid);
@@ -438,16 +467,23 @@ extern int
 CSTReaderPersistenceTimer(ORTEDomain *d,void *vcstReader);
 
 ///////////////////////////////////////////////////////////////////////////////
-// ORTEDomainApp.c
-UL_LIST_CUST_DEC(SubscriptionPattern,
-                 PatternEntry,SubscriptionPatternNode,
-                 subscription,node);
-
+// ORTEDomain.c
+ORTEDomain * 
+ORTEDomainCreate(int domain, ORTEDomainProp *prop,
+               ORTEDomainAppEvents *events,Boolean manager);
+Boolean
+ORTEDomainDestroy(ORTEDomain *d,Boolean manager);
 
+///////////////////////////////////////////////////////////////////////////////
+// ORTEDomainApp.c
+UL_LIST_CUST_DEC(Pattern,
+                 PatternEntry,PatternNode,
+                 patterns,node);
+                                                   
 ///////////////////////////////////////////////////////////////////////////////
 // ORTETypeRegister.c
 extern Boolean
-ORTETypeRegisterFind(ORTEDomain *d,char *typeName);
+ORTETypeRegisterFind(ORTEDomain *d,const char *typeName);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEPublication.c
@@ -455,7 +491,13 @@ GAVL_CUST_NODE_INT_DEC(PublicationList,
                        PSEntry, ObjectEntryOID, GUID_RTPS,
                        publications, psNode, guid, gavl_cmp_guid);
 extern int
-ORTEPublicationSendLocked(ORTEPublication *cstWriter);
+ORTEPublicationSendLocked(ORTEPublication *cstWriter,
+    ORTEPublicationSendParam *psp);
+
+///////////////////////////////////////////////////////////////////////////////
+// ORTESubcription.c
+extern int
+ORTESubscriptionDestroyLocked(ORTESubscription *cstReader);
 
 ///////////////////////////////////////////////////////////////////////////////
 // ORTEPublicationTimer.c