TCN TRDP2 D BOM 033 Xx TRDP Reference Manual
TCN-TRDP2-D-BOM-033-xx%20-%20TRDP%20Reference%20Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 406 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- 1 The TRDP Light Library API Specification
- 2 Data Structure Index
- 3 File Index
- 4 Data Structure Documentation
- 4.1 DNS_HEADER Struct Reference
- 4.2 GNU_PACKED Struct Reference
- 4.2.1 Detailed Description
- 4.2.2 Field Documentation
- 4.2.2.1 confVehCnt
- 4.2.2.2 confVehList
- 4.2.2.3 cstList
- 4.2.2.4 cstUUID
- 4.2.2.5 datasetLength
- 4.2.2.6 deviceName
- 4.2.2.7 etbId
- 4.2.2.8 etbTopoCnt
- 4.2.2.9 inhibit
- 4.2.2.10 isLead
- 4.2.2.11 leadDir
- 4.2.2.12 leadVehOfCst
- 4.2.2.13 lifesign
- 4.2.2.14 msgType
- 4.2.2.15 opCstList
- 4.2.2.16 opTrnDirState
- 4.2.2.17 opTrnTopoCnt
- 4.2.2.18 opVehList
- 4.2.2.19 ownOpCstNo
- 4.2.2.20 protocolVersion
- 4.2.2.21 reserved01 [1/2]
- 4.2.2.22 reserved01 [2/2]
- 4.2.2.23 reserved02 [1/2]
- 4.2.2.24 reserved02 [2/2]
- 4.2.2.25 reserved03
- 4.2.2.26 reserved04
- 4.2.2.27 reserved06
- 4.2.2.28 safetyTrail
- 4.2.2.29 trnCstNo
- 4.2.2.30 trnDirState
- 4.2.2.31 trnId
- 4.2.2.32 trnNetDir
- 4.2.2.33 trnOperator
- 4.2.2.34 trnTopoCnt
- 4.2.2.35 trnVehNo
- 4.2.2.36 vehId
- 4.2.2.37 vehOrient
- 4.2.2.38 version
- 4.3 PD_ELE Struct Reference
- 4.4 TAU_MARSHALL_INFO_T Struct Reference
- 4.5 TCN_URI Struct Reference
- 4.6 TRDP_CLTR_CST_INFO_T Struct Reference
- 4.7 TRDP_COMID_DSID_MAP_T Struct Reference
- 4.8 TRDP_CONSIST_INFO_T Struct Reference
- 4.9 TRDP_DATASET Struct Reference
- 4.10 TRDP_DATASET_ELEMENT_T Struct Reference
- 4.11 TRDP_DBG_CONFIG_T Struct Reference
- 4.12 TRDP_DNS_REPLY Struct Reference
- 4.13 TRDP_DNS_REQUEST Struct Reference
- 4.14 TRDP_ETB_INFO_T Struct Reference
- 4.15 TRDP_FUNCTION_INFO_T Struct Reference
- 4.16 TRDP_HANDLE Struct Reference
- 4.17 TRDP_LIST_STATISTICS_T Struct Reference
- 4.18 TRDP_MARSHALL_CONFIG_T Struct Reference
- 4.19 TRDP_MD_CONFIG_T Struct Reference
- 4.20 TRDP_MD_INFO_T Struct Reference
- 4.21 TRDP_MD_STATISTICS_T Struct Reference
- 4.22 TRDP_MEM_CONFIG_T Struct Reference
- 4.23 TRDP_MEM_STATISTICS_T Struct Reference
- 4.24 TRDP_PD_CONFIG_T Struct Reference
- 4.25 TRDP_PD_INFO_T Struct Reference
- 4.26 TRDP_PD_STATISTICS_T Struct Reference
- 4.27 TRDP_PROCESS_CONFIG_T Struct Reference
- 4.28 TRDP_PROP_T Struct Reference
- 4.29 TRDP_PUB_STATISTICS_T Struct Reference
- 4.30 TRDP_RED_STATISTICS_T Struct Reference
- 4.31 TRDP_SDT_PAR_T Struct Reference
- 4.32 TRDP_SEND_PARAM_T Struct Reference
- 4.33 TRDP_SEQ_CNT_ENTRY_T Struct Reference
- 4.34 TRDP_SESSION Struct Reference
- 4.35 TRDP_SOCKET_TCP Struct Reference
- 4.36 TRDP_SOCKETS Struct Reference
- 4.37 TRDP_STATISTICS_REQUEST_T Struct Reference
- 4.38 TRDP_STATISTICS_T Struct Reference
- 4.39 TRDP_SUBS_STATISTICS_T Struct Reference
- 4.40 TRDP_VEHICLE_INFO_T Struct Reference
- 4.41 TRDP_XML_DOC_HANDLE_T Struct Reference
- 4.42 VOS_SOCK_OPT_T Struct Reference
- 4.43 VOS_VERSION_T Struct Reference
- 5 File Documentation
- 5.1 iec61375-2-3.h File Reference
- 5.1.1 Detailed Description
- 5.1.2 Macro Definition Documentation
- 5.1.2.1 ETB_CTRL_COMID
- 5.1.2.2 TRDP_ETBCTRL_DSID
- 5.1.2.3 TRDP_MAX_FILE_NAME_LEN
- 5.1.2.4 TRDP_MAX_LABEL_LEN
- 5.1.2.5 TRDP_MAX_MD_DATA_SIZE
- 5.1.2.6 TRDP_MAX_URI_HOST_LEN
- 5.1.2.7 TRDP_MAX_URI_LEN
- 5.1.2.8 TRDP_MAX_URI_USER_LEN
- 5.1.2.9 TRDP_MD_DEFAULT_REPLY_TIMEOUT
- 5.1.2.10 TRDP_MD_INFINITE_TIME
- 5.1.2.11 TRDP_MIN_PD_HEADER_SIZE
- 5.1.2.12 TRDP_MSG_PD
- 5.1.2.13 TRDP_PD_UDP_PORT
- 5.1.2.14 TRDP_PROCESS_DEFAULT_CYCLE_TIME
- 5.1.2.15 TRDP_USR_URI_SIZE
- 5.1.2.16 TTDB_NET_DIR_REQ_COMID
- 5.1.2.17 TTDB_OP_DIR_INFO_COMID
- 5.1.2.18 TTDB_STAT_CST_REQ_COMID
- 5.1.2.19 TTDB_TRN_DIR_REQ_COMID
- 5.2 tau_cstinfo.c File Reference
- 5.3 tau_ctrl.c File Reference
- 5.4 tau_ctrl.h File Reference
- 5.5 tau_ctrl_types.h File Reference
- 5.6 tau_dnr.c File Reference
- 5.7 tau_dnr.h File Reference
- 5.8 tau_dnr_types.h File Reference
- 5.9 tau_marshall.c File Reference
- 5.10 tau_marshall.h File Reference
- 5.11 tau_tti.c File Reference
- 5.11.1 Detailed Description
- 5.11.2 Macro Definition Documentation
- 5.11.3 Function Documentation
- 5.11.3.1 tau_deInitTTI()
- 5.11.3.2 tau_getCstFctCnt()
- 5.11.3.3 tau_getCstFctInfo()
- 5.11.3.4 tau_getCstInfo()
- 5.11.3.5 tau_getCstVehCnt()
- 5.11.3.6 tau_getOpTrDirectory()
- 5.11.3.7 tau_getOpTrnDirectoryStatusInfo()
- 5.11.3.8 tau_getOwnIds()
- 5.11.3.9 tau_getStaticCstInfo()
- 5.11.3.10 tau_getTrDirectory()
- 5.11.3.11 tau_getTrnCstCnt()
- 5.11.3.12 tau_getTrnVehCnt()
- 5.11.3.13 tau_getTTI()
- 5.11.3.14 tau_getVehInfo()
- 5.11.3.15 tau_getVehOrient()
- 5.11.3.16 tau_initTTIaccess()
- 5.12 tau_tti.h File Reference
- 5.12.1 Detailed Description
- 5.12.2 Function Documentation
- 5.12.2.1 tau_deInitTTI()
- 5.12.2.2 tau_getCstFctCnt()
- 5.12.2.3 tau_getCstFctInfo()
- 5.12.2.4 tau_getCstInfo()
- 5.12.2.5 tau_getCstVehCnt()
- 5.12.2.6 tau_getOpTrDirectory()
- 5.12.2.7 tau_getOpTrnDirectoryStatusInfo()
- 5.12.2.8 tau_getOwnIds()
- 5.12.2.9 tau_getStaticCstInfo()
- 5.12.2.10 tau_getTrDirectory()
- 5.12.2.11 tau_getTrnCstCnt()
- 5.12.2.12 tau_getTrnVehCnt()
- 5.12.2.13 tau_getTTI()
- 5.12.2.14 tau_getVehInfo()
- 5.12.2.15 tau_getVehOrient()
- 5.12.2.16 tau_initTTIaccess()
- 5.13 tau_tti_types.h File Reference
- 5.14 tau_xml.c File Reference
- 5.15 tau_xml.h File Reference
- 5.16 trdp_dllmain.c File Reference
- 5.17 trdp_if.c File Reference
- 5.17.1 Detailed Description
- 5.17.2 Function Documentation
- 5.17.2.1 tlc_closeSession()
- 5.17.2.2 tlc_configSession()
- 5.17.2.3 tlc_getETBTopoCount()
- 5.17.2.4 tlc_getInterval()
- 5.17.2.5 tlc_getOpTrainTopoCount()
- 5.17.2.6 tlc_getOwnIpAddress()
- 5.17.2.7 tlc_getVersion()
- 5.17.2.8 tlc_getVersionString()
- 5.17.2.9 tlc_init()
- 5.17.2.10 tlc_openSession()
- 5.17.2.11 tlc_process()
- 5.17.2.12 tlc_reinitSession()
- 5.17.2.13 tlc_setETBTopoCount()
- 5.17.2.14 tlc_setOpTrainTopoCount()
- 5.17.2.15 tlc_terminate()
- 5.17.2.16 tlp_get()
- 5.17.2.17 tlp_getRedundant()
- 5.17.2.18 tlp_publish()
- 5.17.2.19 tlp_put()
- 5.17.2.20 tlp_republish()
- 5.17.2.21 tlp_request()
- 5.17.2.22 tlp_resubscribe()
- 5.17.2.23 tlp_setRedundant()
- 5.17.2.24 tlp_subscribe()
- 5.17.2.25 tlp_unpublish()
- 5.17.2.26 tlp_unsubscribe()
- 5.17.2.27 trdp_isValidSession()
- 5.17.2.28 trdp_sessionQueue()
- 5.18 trdp_if.h File Reference
- 5.19 trdp_if_light.h File Reference
- 5.19.1 Detailed Description
- 5.19.2 Function Documentation
- 5.19.2.1 tlc_closeSession()
- 5.19.2.2 tlc_configSession()
- 5.19.2.3 tlc_freeBuf()
- 5.19.2.4 tlc_getETBTopoCount()
- 5.19.2.5 tlc_getInterval()
- 5.19.2.6 tlc_getJoinStatistics()
- 5.19.2.7 tlc_getOpTrainTopoCount()
- 5.19.2.8 tlc_getOwnIpAddress()
- 5.19.2.9 tlc_getPubStatistics()
- 5.19.2.10 tlc_getRedStatistics()
- 5.19.2.11 tlc_getStatistics()
- 5.19.2.12 tlc_getSubsStatistics()
- 5.19.2.13 tlc_getTcpListStatistics()
- 5.19.2.14 tlc_getUdpListStatistics()
- 5.19.2.15 tlc_getVersion()
- 5.19.2.16 tlc_getVersionString()
- 5.19.2.17 tlc_init()
- 5.19.2.18 tlc_openSession()
- 5.19.2.19 tlc_process()
- 5.19.2.20 tlc_reinitSession()
- 5.19.2.21 tlc_resetStatistics()
- 5.19.2.22 tlc_setETBTopoCount()
- 5.19.2.23 tlc_setOpTrainTopoCount()
- 5.19.2.24 tlc_terminate()
- 5.19.2.25 tlm_abortSession()
- 5.19.2.26 tlm_addListener()
- 5.19.2.27 tlm_confirm()
- 5.19.2.28 tlm_delListener()
- 5.19.2.29 tlm_notify()
- 5.19.2.30 tlm_readdListener()
- 5.19.2.31 tlm_reply()
- 5.19.2.32 tlm_replyQuery()
- 5.19.2.33 tlm_request()
- 5.19.2.34 tlp_get()
- 5.19.2.35 tlp_getRedundant()
- 5.19.2.36 tlp_publish()
- 5.19.2.37 tlp_put()
- 5.19.2.38 tlp_republish()
- 5.19.2.39 tlp_request()
- 5.19.2.40 tlp_resubscribe()
- 5.19.2.41 tlp_setRedundant()
- 5.19.2.42 tlp_subscribe()
- 5.19.2.43 tlp_unpublish()
- 5.19.2.44 tlp_unsubscribe()
- 5.20 trdp_mdcom.c File Reference
- 5.21 trdp_mdcom.h File Reference
- 5.22 trdp_pdcom.c File Reference
- 5.23 trdp_pdcom.h File Reference
- 5.24 trdp_private.h File Reference
- 5.25 trdp_stats.c File Reference
- 5.26 trdp_stats.h File Reference
- 5.27 trdp_types.h File Reference
- 5.28 trdp_utils.c File Reference
- 5.28.1 Detailed Description
- 5.28.2 Function Documentation
- 5.28.2.1 trdp_checkSequenceCounter()
- 5.28.2.2 trdp_findMCjoins()
- 5.28.2.3 trdp_getCurrentMaxSocketCnt()
- 5.28.2.4 trdp_getSeqCnt()
- 5.28.2.5 trdp_initSockets()
- 5.28.2.6 trdp_isAddressed()
- 5.28.2.7 trdp_isInIPrange()
- 5.28.2.8 trdp_packetSizeMD()
- 5.28.2.9 trdp_packetSizePD()
- 5.28.2.10 trdp_queueAppLast()
- 5.28.2.11 trdp_queueDelElement()
- 5.28.2.12 trdp_queueFindComId()
- 5.28.2.13 trdp_queueFindPubAddr()
- 5.28.2.14 trdp_queueFindSubAddr()
- 5.28.2.15 trdp_queueInsFirst()
- 5.28.2.16 trdp_releaseSocket()
- 5.28.2.17 trdp_requestSocket()
- 5.28.2.18 trdp_resetSequenceCounter()
- 5.28.2.19 trdp_validTopoCounters()
- 5.29 trdp_utils.h File Reference
- 5.29.1 Detailed Description
- 5.29.2 Function Documentation
- 5.29.2.1 trdp_checkSequenceCounter()
- 5.29.2.2 trdp_findMCjoins()
- 5.29.2.3 trdp_getCurrentMaxSocketCnt()
- 5.29.2.4 trdp_getSeqCnt()
- 5.29.2.5 trdp_initSockets()
- 5.29.2.6 trdp_initUncompletedTCP()
- 5.29.2.7 trdp_isAddressed()
- 5.29.2.8 trdp_isInIPrange()
- 5.29.2.9 trdp_packetSizeMD()
- 5.29.2.10 trdp_packetSizePD()
- 5.29.2.11 trdp_queueAppLast()
- 5.29.2.12 trdp_queueDelElement()
- 5.29.2.13 trdp_queueFindComId()
- 5.29.2.14 trdp_queueFindPubAddr()
- 5.29.2.15 trdp_queueFindSubAddr()
- 5.29.2.16 trdp_queueInsFirst()
- 5.29.2.17 trdp_releaseSocket()
- 5.29.2.18 trdp_requestSocket()
- 5.29.2.19 trdp_resetSequenceCounter()
- 5.29.2.20 trdp_validTopoCounters()
- 5.30 trdp_xml.c File Reference
- 5.31 trdp_xml.h File Reference
- 5.32 vos_mem.c File Reference
- 5.32.1 Detailed Description
- 5.32.2 Function Documentation
- 5.32.2.1 vos_bsearch()
- 5.32.2.2 vos_memAlloc()
- 5.32.2.3 vos_memCount()
- 5.32.2.4 vos_memDelete()
- 5.32.2.5 vos_memFree()
- 5.32.2.6 vos_memInit()
- 5.32.2.7 vos_qsort()
- 5.32.2.8 vos_queueCreate()
- 5.32.2.9 vos_queueDestroy()
- 5.32.2.10 vos_queueReceive()
- 5.32.2.11 vos_queueSend()
- 5.32.2.12 vos_strncat()
- 5.32.2.13 vos_strncpy()
- 5.32.2.14 vos_strnicmp()
- 5.33 vos_mem.h File Reference
- 5.33.1 Detailed Description
- 5.33.2 Macro Definition Documentation
- 5.33.3 Function Documentation
- 5.33.3.1 vos_bsearch()
- 5.33.3.2 vos_memAlloc()
- 5.33.3.3 vos_memCount()
- 5.33.3.4 vos_memDelete()
- 5.33.3.5 vos_memFree()
- 5.33.3.6 vos_memInit()
- 5.33.3.7 vos_qsort()
- 5.33.3.8 vos_queueCreate()
- 5.33.3.9 vos_queueDestroy()
- 5.33.3.10 vos_queueReceive()
- 5.33.3.11 vos_queueSend()
- 5.33.3.12 vos_strncat()
- 5.33.3.13 vos_strncpy()
- 5.33.3.14 vos_strnicmp()
- 5.34 vos_shared_mem.h File Reference
- 5.35 vos_sock.h File Reference
- 5.35.1 Detailed Description
- 5.35.2 Macro Definition Documentation
- 5.35.3 Function Documentation
- 5.35.3.1 vos_determineBindAddr()
- 5.35.3.2 vos_dottedIP()
- 5.35.3.3 vos_getInterfaces()
- 5.35.3.4 vos_htonl()
- 5.35.3.5 vos_htonll()
- 5.35.3.6 vos_htons()
- 5.35.3.7 vos_ipDotted()
- 5.35.3.8 vos_isMulticast()
- 5.35.3.9 vos_netIfUp()
- 5.35.3.10 vos_ntohl()
- 5.35.3.11 vos_ntohll()
- 5.35.3.12 vos_ntohs()
- 5.35.3.13 vos_select()
- 5.35.3.14 vos_sockAccept()
- 5.35.3.15 vos_sockBind()
- 5.35.3.16 vos_sockClose()
- 5.35.3.17 vos_sockConnect()
- 5.35.3.18 vos_sockGetMAC()
- 5.35.3.19 vos_sockInit()
- 5.35.3.20 vos_sockJoinMC()
- 5.35.3.21 vos_sockLeaveMC()
- 5.35.3.22 vos_sockListen()
- 5.35.3.23 vos_sockOpenTCP()
- 5.35.3.24 vos_sockOpenUDP()
- 5.35.3.25 vos_sockReceiveTCP()
- 5.35.3.26 vos_sockReceiveUDP()
- 5.35.3.27 vos_sockSendTCP()
- 5.35.3.28 vos_sockSendUDP()
- 5.35.3.29 vos_sockSetMulticastIf()
- 5.35.3.30 vos_sockSetOptions()
- 5.35.3.31 vos_sockTerm()
- 5.36 vos_thread.h File Reference
- 5.36.1 Detailed Description
- 5.36.2 Function Documentation
- 5.36.2.1 vos_addTime()
- 5.36.2.2 vos_clearTime()
- 5.36.2.3 vos_cmpTime()
- 5.36.2.4 vos_cyclicThread()
- 5.36.2.5 vos_divTime()
- 5.36.2.6 vos_getTime()
- 5.36.2.7 vos_getTimeStamp()
- 5.36.2.8 vos_getUuid()
- 5.36.2.9 vos_mulTime()
- 5.36.2.10 vos_mutexCreate()
- 5.36.2.11 vos_mutexDelete()
- 5.36.2.12 vos_mutexLock()
- 5.36.2.13 vos_mutexTryLock()
- 5.36.2.14 vos_mutexUnlock()
- 5.36.2.15 vos_semaCreate()
- 5.36.2.16 vos_semaDelete()
- 5.36.2.17 vos_semaGive()
- 5.36.2.18 vos_semaTake()
- 5.36.2.19 vos_subTime()
- 5.36.2.20 vos_threadCreate()
- 5.36.2.21 vos_threadDelay()
- 5.36.2.22 vos_threadInit()
- 5.36.2.23 vos_threadIsActive()
- 5.36.2.24 vos_threadSelf()
- 5.36.2.25 vos_threadTerm()
- 5.36.2.26 vos_threadTerminate()
- 5.37 vos_types.h File Reference
- 5.38 vos_utils.c File Reference
- 5.39 vos_utils.h File Reference
- 5.1 iec61375-2-3.h File Reference
- Index
TCNOpen TRDP Light
ReleaseV1.4
Generated by Doxygen 1.8.13
Contents
1 The TRDP Light Library API Specification 1
1.1 General Information .......................................... 1
1.1.1 Purpose ............................................ 1
1.1.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.3 Related documents ...................................... 1
1.1.4 Abbreviations and Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Terminology .............................................. 2
1.3 Conventions of the API ........................................ 3
2 Data Structure Index 5
2.1 Data Structures ............................................ 5
3 File Index 7
3.1 File List ................................................ 7
4 Data Structure Documentation 9
4.1 DNS_HEADER Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 GNU_PACKED Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.1 confVehCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.2 confVehList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.3 cstList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2.4 cstUUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

ii CONTENTS
4.2.2.5 datasetLength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2.6 deviceName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2.7 etbId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2.8 etbTopoCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.2.9 inhibit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.10 isLead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.11 leadDir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.12 leadVehOfCst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.13 lifesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.14 msgType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2.15 opCstList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.16 opTrnDirState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.17 opTrnTopoCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.18 opVehList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.19 ownOpCstNo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2.20 protocolVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.21 reserved01 [1/2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.22 reserved01 [2/2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.23 reserved02 [1/2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.24 reserved02 [2/2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.25 reserved03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2.26 reserved04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2.27 reserved06 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2.28 safetyTrail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2.29 trnCstNo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2.30 trnDirState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2.31 trnId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2.32 trnNetDir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2.33 trnOperator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2.34 trnTopoCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Generated by Doxygen

CONTENTS iii
4.2.2.35 trnVehNo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2.36 vehId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2.37 vehOrient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.2.38 version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3 PD_ELE Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3.2.1 pFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4 TAU_MARSHALL_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.5 TCN_URI Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6 TRDP_CLTR_CST_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.7 TRDP_COMID_DSID_MAP_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.8 TRDP_CONSIST_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.8.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.8.2.1 cstId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.8.2.2 cstOwner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.9 TRDP_DATASET Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.10 TRDP_DATASET_ELEMENT_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.11 TRDP_DBG_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.12 TRDP_DNS_REPLY Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.12.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Generated by Doxygen

iv CONTENTS
4.12.2.1 tcnUriCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.13 TRDP_DNS_REQUEST Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.13.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.13.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.13.2.1 tcnUriCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14 TRDP_ETB_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14.2.1 cnCnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.15 TRDP_FUNCTION_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.15.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.15.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.15.2.1 cnId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.15.2.2 cstVehNo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.15.2.3 etbId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.15.2.4 fctId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.16 TRDP_HANDLE Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.17 TRDP_LIST_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.18 TRDP_MARSHALL_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.18.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.19 TRDP_MD_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.19.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.20 TRDP_MD_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.20.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.21 TRDP_MD_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.21.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.22 TRDP_MEM_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.22.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Generated by Doxygen

CONTENTS v
4.23 TRDP_MEM_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.23.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.24 TRDP_PD_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.24.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.25 TRDP_PD_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.25.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.26 TRDP_PD_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.26.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.27 TRDP_PROCESS_CONFIG_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.28 TRDP_PROP_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.29 TRDP_PUB_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.29.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.29.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.29.2.1 destAddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.30 TRDP_RED_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.30.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.31 TRDP_SDT_PAR_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.31.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.32 TRDP_SEND_PARAM_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.32.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.33 TRDP_SEQ_CNT_ENTRY_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.33.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.34 TRDP_SESSION Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.34.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.35 TRDP_SOCKET_TCP Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.35.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.36 TRDP_SOCKETS Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.36.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Generated by Doxygen

vi CONTENTS
4.36.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.36.2.1 usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.37 TRDP_STATISTICS_REQUEST_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . 52
4.37.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.38 TRDP_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.38.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.39 TRDP_SUBS_STATISTICS_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.39.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.39.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.39.2.1 filterAddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.39.2.2 timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.39.2.3 toBehav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.40 TRDP_VEHICLE_INFO_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.40.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.40.2 Field Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.40.2.1 vehId . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.41 TRDP_XML_DOC_HANDLE_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.41.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.42 VOS_SOCK_OPT_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.42.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.43 VOS_VERSION_T Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.43.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Generated by Doxygen

CONTENTS vii
5 File Documentation 59
5.1 iec61375-2-3.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.1 ETB_CTRL_COMID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.2 TRDP_ETBCTRL_DSID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.3 TRDP_MAX_FILE_NAME_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.4 TRDP_MAX_LABEL_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.5 TRDP_MAX_MD_DATA_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.2.6 TRDP_MAX_URI_HOST_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2.7 TRDP_MAX_URI_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2.8 TRDP_MAX_URI_USER_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2.9 TRDP_MD_DEFAULT_REPLY_TIMEOUT . . . . . . . . . . . . . . . . . . . . 65
5.1.2.10 TRDP_MD_INFINITE_TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2.11 TRDP_MIN_PD_HEADER_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2.12 TRDP_MSG_PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.1.2.13 TRDP_PD_UDP_PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.1.2.14 TRDP_PROCESS_DEFAULT_CYCLE_TIME . . . . . . . . . . . . . . . . . . . 66
5.1.2.15 TRDP_USR_URI_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.1.2.16 TTDB_NET_DIR_REQ_COMID . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.1.2.17 TTDB_OP_DIR_INFO_COMID . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.1.2.18 TTDB_STAT_CST_REQ_COMID . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.1.2.19 TTDB_TRN_DIR_REQ_COMID . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2 tau_cstinfo.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.2.1 cstInfoGetPropSize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3 tau_ctrl.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Generated by Doxygen

viii CONTENTS
5.3.2.1 tau_getEcspStat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.2.2 tau_initEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.2.3 tau_requestEcspConfirm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3.2.4 tau_setEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3.2.5 tau_terminateEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.4 tau_ctrl.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.4.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.4.2.1 tau_getEcspStat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.4.2.2 tau_initEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.4.2.3 tau_requestEcspConfirm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4.2.4 tau_setEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4.2.5 tau_terminateEcspCtrl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.5 tau_ctrl_types.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.6 tau_dnr.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.6.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.6.2.1 tau_addr2Uri() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.6.2.2 tau_deInitDnr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6.2.3 tau_DNRstatus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6.2.4 tau_getOwnAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6.2.5 tau_initDnr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.6.2.6 tau_uri2Addr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.7 tau_dnr.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.7.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.7.2.1 tau_addr2Uri() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.7.2.2 tau_deInitDnr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.7.2.3 tau_DNRstatus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Generated by Doxygen

CONTENTS ix
5.7.2.4 tau_getOwnAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.7.2.5 tau_initDnr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.7.2.6 tau_uri2Addr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.8 tau_dnr_types.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.9 tau_marshall.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.9.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.9.2.1 tau_calcDatasetSize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.9.2.2 tau_calcDatasetSizeByComId() . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.9.2.3 tau_initMarshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.9.2.4 tau_marshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.9.2.5 tau_marshallDs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.9.2.6 tau_unmarshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.9.2.7 tau_unmarshallDs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.10 tau_marshall.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.10.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.10.2.1 tau_calcDatasetSize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.10.2.2 tau_calcDatasetSizeByComId() . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.10.2.3 tau_initMarshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.10.2.4 tau_marshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.10.2.5 tau_marshallDs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.10.2.6 tau_unmarshall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.10.2.7 tau_unmarshallDs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.11 tau_tti.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.11.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.11.2.1 TTI_CACHED_CONSISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.11.3 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Generated by Doxygen

x CONTENTS
5.11.3.1 tau_deInitTTI() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.11.3.2 tau_getCstFctCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.11.3.3 tau_getCstFctInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.11.3.4 tau_getCstInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.11.3.5 tau_getCstVehCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.11.3.6 tau_getOpTrDirectory() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.11.3.7 tau_getOpTrnDirectoryStatusInfo() . . . . . . . . . . . . . . . . . . . . . . . . 117
5.11.3.8 tau_getOwnIds() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.11.3.9 tau_getStaticCstInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.11.3.10 tau_getTrDirectory() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.11.3.11 tau_getTrnCstCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.11.3.12 tau_getTrnVehCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.11.3.13 tau_getTTI() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.11.3.14 tau_getVehInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.11.3.15 tau_getVehOrient() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.11.3.16 tau_initTTIaccess() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.12 tau_tti.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.12.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.12.2.1 tau_deInitTTI() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.12.2.2 tau_getCstFctCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.12.2.3 tau_getCstFctInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.12.2.4 tau_getCstInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.12.2.5 tau_getCstVehCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.12.2.6 tau_getOpTrDirectory() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.12.2.7 tau_getOpTrnDirectoryStatusInfo() . . . . . . . . . . . . . . . . . . . . . . . . 130
5.12.2.8 tau_getOwnIds() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.12.2.9 tau_getStaticCstInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.12.2.10 tau_getTrDirectory() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.12.2.11 tau_getTrnCstCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Generated by Doxygen

CONTENTS xi
5.12.2.12 tau_getTrnVehCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.12.2.13 tau_getTTI() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.12.2.14 tau_getVehInfo() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.12.2.15 tau_getVehOrient() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.12.2.16 tau_initTTIaccess() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.13 tau_tti_types.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.13.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.14 tau_xml.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.14.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.14.2.1 TRDP_SDT_DEFAULT_CMTHR . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.14.3 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.14.3.1 tau_freeTelegrams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.14.3.2 tau_freeXmlDatasetConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.14.3.3 tau_freeXmlDoc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.14.3.4 tau_prepareXmlDoc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.14.3.5 tau_readXmlDatasetConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.14.3.6 tau_readXmlDeviceConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.14.3.7 tau_readXmlInterfaceConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.15 tau_xml.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.15.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.15.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.15.2.1 TRDP_DBG_DEFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.15.3 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.15.3.1 TRDP_EXCHG_OPTION_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.15.4 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.15.4.1 tau_freeTelegrams() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.15.4.2 tau_freeXmlDatasetConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.15.4.3 tau_freeXmlDoc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.15.4.4 tau_prepareXmlDoc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Generated by Doxygen

xii CONTENTS
5.15.4.5 tau_readXmlDatasetConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.15.4.6 tau_readXmlDeviceConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.15.4.7 tau_readXmlInterfaceConfig() . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.16 trdp_dllmain.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.17 trdp_if.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.17.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.17.2.1 tlc_closeSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.17.2.2 tlc_configSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.17.2.3 tlc_getETBTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.17.2.4 tlc_getInterval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.17.2.5 tlc_getOpTrainTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.17.2.6 tlc_getOwnIpAddress() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.17.2.7 tlc_getVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.17.2.8 tlc_getVersionString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.17.2.9 tlc_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.17.2.10 tlc_openSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.17.2.11 tlc_process() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.17.2.12 tlc_reinitSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.17.2.13 tlc_setETBTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.17.2.14 tlc_setOpTrainTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.17.2.15 tlc_terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.17.2.16 tlp_get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.17.2.17 tlp_getRedundant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.17.2.18 tlp_publish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.17.2.19 tlp_put() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
5.17.2.20 tlp_republish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.17.2.21 tlp_request() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.17.2.22 tlp_resubscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Generated by Doxygen

CONTENTS xiii
5.17.2.23 tlp_setRedundant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.17.2.24 tlp_subscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.17.2.25 tlp_unpublish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.17.2.26 tlp_unsubscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
5.17.2.27 trdp_isValidSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
5.17.2.28 trdp_sessionQueue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.18 trdp_if.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.18.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.18.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.18.2.1 trdp_isValidSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.18.2.2 trdp_sessionQueue() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.19 trdp_if_light.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.19.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.19.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.19.2.1 tlc_closeSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.19.2.2 tlc_configSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.19.2.3 tlc_freeBuf() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.19.2.4 tlc_getETBTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.19.2.5 tlc_getInterval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.19.2.6 tlc_getJoinStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.19.2.7 tlc_getOpTrainTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.19.2.8 tlc_getOwnIpAddress() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.19.2.9 tlc_getPubStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.19.2.10 tlc_getRedStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.19.2.11 tlc_getStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.19.2.12 tlc_getSubsStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.19.2.13 tlc_getTcpListStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.19.2.14 tlc_getUdpListStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.19.2.15 tlc_getVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.19.2.16 tlc_getVersionString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Generated by Doxygen

xiv CONTENTS
5.19.2.17 tlc_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.19.2.18 tlc_openSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.19.2.19 tlc_process() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.19.2.20 tlc_reinitSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.19.2.21 tlc_resetStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.19.2.22 tlc_setETBTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.19.2.23 tlc_setOpTrainTopoCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.19.2.24 tlc_terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.19.2.25 tlm_abortSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.19.2.26 tlm_addListener() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.19.2.27 tlm_confirm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.19.2.28 tlm_delListener() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.19.2.29 tlm_notify() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
5.19.2.30 tlm_readdListener() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.19.2.31 tlm_reply() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.19.2.32 tlm_replyQuery() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
5.19.2.33 tlm_request() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.19.2.34 tlp_get() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
5.19.2.35 tlp_getRedundant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.19.2.36 tlp_publish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
5.19.2.37 tlp_put() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
5.19.2.38 tlp_republish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
5.19.2.39 tlp_request() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.19.2.40 tlp_resubscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
5.19.2.41 tlp_setRedundant() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
5.19.2.42 tlp_subscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
5.19.2.43 tlp_unpublish() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.19.2.44 tlp_unsubscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
5.20 trdp_mdcom.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
5.20.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Generated by Doxygen

CONTENTS xv
5.20.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5.20.2.1 trdp_mdCall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5.20.2.2 trdp_mdCheckListenSocks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.20.2.3 trdp_mdCheckPending() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.20.2.4 trdp_mdCheckTimeouts() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.20.2.5 trdp_mdConfirm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
5.20.2.6 trdp_mdFreeSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
5.20.2.7 trdp_mdGetTCPSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.20.2.8 trdp_mdReply() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.20.2.9 trdp_mdSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.21 trdp_mdcom.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
5.21.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
5.21.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.21.2.1 trdp_mdCall() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.21.2.2 trdp_mdCheckListenSocks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5.21.2.3 trdp_mdCheckPending() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5.21.2.4 trdp_mdCheckTimeouts() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5.21.2.5 trdp_mdConfirm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.21.2.6 trdp_mdFreeSession() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.21.2.7 trdp_mdGetTCPSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.21.2.8 trdp_mdReply() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
5.21.2.9 trdp_mdSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.22 trdp_pdcom.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.22.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
5.22.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.22.2.1 trdp_pdCheck() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.22.2.2 trdp_pdCheckListenSocks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.22.2.3 trdp_pdCheckPending() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.22.2.4 trdp_pdDistribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.22.2.5 trdp_pdHandleTimeOuts() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Generated by Doxygen

xvi CONTENTS
5.22.2.6 trdp_pdInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.22.2.7 trdp_pdPut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
5.22.2.8 trdp_pdReceive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.22.2.9 trdp_pdSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.22.2.10 trdp_pdSendQueued() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.22.2.11 trdp_pdUpdate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.23 trdp_pdcom.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
5.23.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
5.23.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
5.23.2.1 trdp_pdCheck() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
5.23.2.2 trdp_pdCheckListenSocks() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
5.23.2.3 trdp_pdCheckPending() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
5.23.2.4 trdp_pdDistribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
5.23.2.5 trdp_pdHandleTimeOuts() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
5.23.2.6 trdp_pdInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
5.23.2.7 trdp_pdPut() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
5.23.2.8 trdp_pdReceive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
5.23.2.9 trdp_pdSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
5.23.2.10 trdp_pdSendQueued() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
5.23.2.11 trdp_pdUpdate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5.24 trdp_private.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
5.24.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
5.24.2 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.24.2.1 TRDP_MD_ELE_ST_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.24.2.2 TRDP_SOCK_TYPE_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.25 trdp_stats.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.25.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.25.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.25.2.1 tlc_getJoinStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.25.2.2 tlc_getPubStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Generated by Doxygen

CONTENTS xvii
5.25.2.3 tlc_getRedStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
5.25.2.4 tlc_getStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.25.2.5 tlc_getSubsStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.25.2.6 tlc_resetStatistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
5.25.2.7 trdp_initStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
5.25.2.8 trdp_pdPrepareStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
5.25.2.9 trdp_UpdateStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
5.26 trdp_stats.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
5.26.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.26.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.26.2.1 trdp_initStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.26.2.2 trdp_pdPrepareStats() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
5.27 trdp_types.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
5.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
5.27.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.27.2.1 TRDP_FLAGS_DEFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.27.3 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.27.3.1 TRDP_IP_ADDR_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.27.3.2 TRDP_MARSHALL_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.27.3.3 TRDP_MD_CALLBACK_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.27.3.4 TRDP_PD_CALLBACK_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.27.3.5 TRDP_PRINT_DBG_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.27.3.6 TRDP_TIME_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.27.3.7 TRDP_UNMARSHALL_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
5.27.4 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
5.27.4.1 TRDP_DATA_TYPE_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
5.27.4.2 TRDP_ERR_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
5.27.4.3 TRDP_RED_STATE_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
5.27.4.4 TRDP_REPLY_STATUS_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
5.27.4.5 TRDP_TO_BEHAVIOR_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Generated by Doxygen

xviii CONTENTS
5.28 trdp_utils.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
5.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
5.28.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
5.28.2.1 trdp_checkSequenceCounter() . . . . . . . . . . . . . . . . . . . . . . . . . . 267
5.28.2.2 trdp_findMCjoins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
5.28.2.3 trdp_getCurrentMaxSocketCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . 268
5.28.2.4 trdp_getSeqCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
5.28.2.5 trdp_initSockets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
5.28.2.6 trdp_isAddressed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
5.28.2.7 trdp_isInIPrange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
5.28.2.8 trdp_packetSizeMD() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
5.28.2.9 trdp_packetSizePD() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
5.28.2.10 trdp_queueAppLast() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.28.2.11 trdp_queueDelElement() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.28.2.12 trdp_queueFindComId() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.28.2.13 trdp_queueFindPubAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
5.28.2.14 trdp_queueFindSubAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
5.28.2.15 trdp_queueInsFirst() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.28.2.16 trdp_releaseSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.28.2.17 trdp_requestSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.28.2.18 trdp_resetSequenceCounter() . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
5.28.2.19 trdp_validTopoCounters() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
5.29 trdp_utils.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
5.29.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
5.29.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5.29.2.1 trdp_checkSequenceCounter() . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5.29.2.2 trdp_findMCjoins() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
5.29.2.3 trdp_getCurrentMaxSocketCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . 280
5.29.2.4 trdp_getSeqCnt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.29.2.5 trdp_initSockets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Generated by Doxygen

CONTENTS xix
5.29.2.6 trdp_initUncompletedTCP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
5.29.2.7 trdp_isAddressed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
5.29.2.8 trdp_isInIPrange() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
5.29.2.9 trdp_packetSizeMD() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
5.29.2.10 trdp_packetSizePD() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
5.29.2.11 trdp_queueAppLast() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
5.29.2.12 trdp_queueDelElement() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
5.29.2.13 trdp_queueFindComId() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
5.29.2.14 trdp_queueFindPubAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
5.29.2.15 trdp_queueFindSubAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
5.29.2.16 trdp_queueInsFirst() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
5.29.2.17 trdp_releaseSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
5.29.2.18 trdp_requestSocket() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
5.29.2.19 trdp_resetSequenceCounter() . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
5.29.2.20 trdp_validTopoCounters() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
5.30 trdp_xml.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
5.30.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
5.30.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
5.30.2.1 trdp_XMLClose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
5.30.2.2 trdp_XMLCountStartTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
5.30.2.3 trdp_XMLEnter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
5.30.2.4 trdp_XMLGetAttribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
5.30.2.5 trdp_XMLLeave() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
5.30.2.6 trdp_XMLOpen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
5.30.2.7 trdp_XMLRewind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
5.30.2.8 trdp_XMLSeekStartTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
5.30.2.9 trdp_XMLSeekStartTagAny() . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
5.31 trdp_xml.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
5.31.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
5.31.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Generated by Doxygen

xx CONTENTS
5.31.2.1 trdp_XMLClose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
5.31.2.2 trdp_XMLCountStartTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
5.31.2.3 trdp_XMLEnter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5.31.2.4 trdp_XMLGetAttribute() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5.31.2.5 trdp_XMLLeave() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5.31.2.6 trdp_XMLOpen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
5.31.2.7 trdp_XMLRewind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
5.31.2.8 trdp_XMLSeekStartTag() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
5.31.2.9 trdp_XMLSeekStartTagAny() . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
5.32 vos_mem.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
5.32.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
5.32.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
5.32.2.1 vos_bsearch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
5.32.2.2 vos_memAlloc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
5.32.2.3 vos_memCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
5.32.2.4 vos_memDelete() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
5.32.2.5 vos_memFree() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
5.32.2.6 vos_memInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
5.32.2.7 vos_qsort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
5.32.2.8 vos_queueCreate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
5.32.2.9 vos_queueDestroy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
5.32.2.10 vos_queueReceive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
5.32.2.11 vos_queueSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
5.32.2.12 vos_strncat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
5.32.2.13 vos_strncpy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
5.32.2.14 vos_strnicmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
5.33 vos_mem.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
5.33.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
5.33.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
5.33.2.1 VOS_MEM_BLOCKSIZES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Generated by Doxygen

CONTENTS xxi
5.33.2.2 VOS_MEM_PREALLOCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
5.33.3 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
5.33.3.1 vos_bsearch() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
5.33.3.2 vos_memAlloc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
5.33.3.3 vos_memCount() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
5.33.3.4 vos_memDelete() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
5.33.3.5 vos_memFree() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
5.33.3.6 vos_memInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
5.33.3.7 vos_qsort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
5.33.3.8 vos_queueCreate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
5.33.3.9 vos_queueDestroy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
5.33.3.10 vos_queueReceive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
5.33.3.11 vos_queueSend() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
5.33.3.12 vos_strncat() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
5.33.3.13 vos_strncpy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
5.33.3.14 vos_strnicmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
5.34 vos_shared_mem.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
5.34.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
5.34.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
5.34.2.1 vos_sharedClose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
5.34.2.2 vos_sharedOpen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
5.35 vos_sock.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
5.35.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
5.35.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.35.2.1 VOS_MAX_SOCKET_CNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.35.2.2 VOS_TTL_MULTICAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.35.3 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.35.3.1 vos_determineBindAddr() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.35.3.2 vos_dottedIP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
5.35.3.3 vos_getInterfaces() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Generated by Doxygen

xxii CONTENTS
5.35.3.4 vos_htonl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
5.35.3.5 vos_htonll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
5.35.3.6 vos_htons() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
5.35.3.7 vos_ipDotted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
5.35.3.8 vos_isMulticast() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
5.35.3.9 vos_netIfUp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
5.35.3.10 vos_ntohl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
5.35.3.11 vos_ntohll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
5.35.3.12 vos_ntohs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
5.35.3.13 vos_select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
5.35.3.14 vos_sockAccept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
5.35.3.15 vos_sockBind() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
5.35.3.16 vos_sockClose() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
5.35.3.17 vos_sockConnect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
5.35.3.18 vos_sockGetMAC() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
5.35.3.19 vos_sockInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
5.35.3.20 vos_sockJoinMC() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
5.35.3.21 vos_sockLeaveMC() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
5.35.3.22 vos_sockListen() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
5.35.3.23 vos_sockOpenTCP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
5.35.3.24 vos_sockOpenUDP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
5.35.3.25 vos_sockReceiveTCP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
5.35.3.26 vos_sockReceiveUDP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
5.35.3.27 vos_sockSendTCP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
5.35.3.28 vos_sockSendUDP() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
5.35.3.29 vos_sockSetMulticastIf() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
5.35.3.30 vos_sockSetOptions() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
5.35.3.31 vos_sockTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
5.36 vos_thread.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
5.36.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Generated by Doxygen

CONTENTS xxiii
5.36.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
5.36.2.1 vos_addTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
5.36.2.2 vos_clearTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
5.36.2.3 vos_cmpTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
5.36.2.4 vos_cyclicThread() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
5.36.2.5 vos_divTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
5.36.2.6 vos_getTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
5.36.2.7 vos_getTimeStamp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
5.36.2.8 vos_getUuid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
5.36.2.9 vos_mulTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
5.36.2.10 vos_mutexCreate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
5.36.2.11 vos_mutexDelete() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
5.36.2.12 vos_mutexLock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.36.2.13 vos_mutexTryLock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.36.2.14 vos_mutexUnlock() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
5.36.2.15 vos_semaCreate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
5.36.2.16 vos_semaDelete() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
5.36.2.17 vos_semaGive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
5.36.2.18 vos_semaTake() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
5.36.2.19 vos_subTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
5.36.2.20 vos_threadCreate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
5.36.2.21 vos_threadDelay() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
5.36.2.22 vos_threadInit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5.36.2.23 vos_threadIsActive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5.36.2.24 vos_threadSelf() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
5.36.2.25 vos_threadTerm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
5.36.2.26 vos_threadTerminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
5.37 vos_types.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
5.37.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
5.37.2 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Generated by Doxygen

xxiv CONTENTS
5.37.2.1 VOS_PRINT_DBG_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.37.2.2 VOS_TIMEVAL_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.37.3 Enumeration Type Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.37.3.1 VOS_ERR_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
5.37.3.2 VOS_LOG_T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
5.38 vos_utils.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
5.38.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
5.38.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.38.2.1 vos_crc32() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
5.38.2.2 vos_getErrorString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
5.38.2.3 vos_getVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
5.38.2.4 vos_getVersionString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
5.38.2.5 vos_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.38.2.6 vos_sc32() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.38.2.7 vos_terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
5.39 vos_utils.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
5.39.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
5.39.2 Macro Definition Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.2.1 INITFCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.2.2 VOS_MAX_ERR_STR_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.2.3 VOS_MAX_FRMT_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.2.4 VOS_MAX_PRNT_STR_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.3 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.3.1 vos_crc32() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
5.39.3.2 vos_getErrorString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
5.39.3.3 vos_getVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
5.39.3.4 vos_getVersionString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
5.39.3.5 vos_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
5.39.3.6 vos_sc32() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
5.39.3.7 vos_terminate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Index 369
Generated by Doxygen

Chapter 1
The TRDP Light Library API Specification
1.1 General Information
1.1.1 Purpose
The TRDP protocol has been defined as the standard communication protocol in IP-enabled trains. It allows commu-
nication via process data (periodically transmitted data using UDP/IP) and message data (client - server messaging
using UDP/IP or TCP/IP) This document describes the light API of the TRDP Library.
1.1.2 Scope
The intended audience of this document is the developers and project members of the TRDP project. TRDP Client
Applications are programs using the TRDP protocol library to access the services of TRDP. Programmers developing
such applications are the main target audience for this documentation.
1.1.3 Related documents
TCN-TRDP2-D-BOM-004-01 IEC61375-2-3_CD_ANNEXA Protocol definition of the TRDP standard
1.1.4 Abbreviations and Definitions
-API Application Programming Interface -ECN Ethernet Consist Network -TRDP Train Real-time Data Protocol
-TCMS Train Control Management System

2 The TRDP Light Library API Specification
1.2 Terminology
The API documented here is mainly concerned with three bodies of code:
•TRDP Client Applications (or 'client applications' for short): These are programs using the API to access the
services of TRDP. Programmers developing such applications are the main target audience for this documen-
tation.
•TRDP Light Implementations (or just 'TRDP implementation'): These are libraries realising the API as doc-
umented here. Programmers developing such implementations will find useful definitions about syntax and
semantics of the API wihtin this documentation.
•VOS Subsystem (Virtual Operating System): An OS and hardware abstraction layer which offers memory,
networking, threading, queues and debug functions. The VOS API is documented here.
The following diagram shows how these pieces of software are interrelated.
application process
application process
application process
TLP_publish
TLP_subscribe
TLC_getInterval()
select()
application data handling
TLC_process()
TLP_subscribe()
PD Callback
TLP_publish()
more input
?
No
Main workloop
comID,
status
Received
data handling
Received
data handling
TLP_put()
TLC_openSession
TLC_init
Shutdown
?
TLC_closeSession()
TLC_terminate()
Figure 1.1 Sample client workflow
Generated by Doxygen

1.3 Conventions of the API 3
1.3 Conventions of the API
The API comprises a set of C header files that can also be used from client applications written in C++. These
header files are contained in a directory named trdp/api and a subdirectory called trdp/vos/api with dec-
larations not topical to TRDP but needed by the stack. Client applications shall include these header files like:
#include "trdp_if_light.h"
and, if VOS functions are needed, also the corresponding headers:
#include "vos_thread.h"
for example.
The subdirectory trdp/doc contains files needed for the API documentation.
Generally client application source code including API headers will only compile if the parent directory of the trdp
directory is part of the include path of the used compiler. No other subdirectories of the API should be added to the
compiler's include path.
The client API doesn't support a "catch-all" header file that includes all declarations in one step; rather the client
application has to include individual headers for each feature set it wants to use.
Generated by Doxygen

4 The TRDP Light Library API Specification
Generated by Doxygen
Chapter 2
Data Structure Index
2.1 Data Structures
Here are the data structures with brief descriptions:
DNS_HEADER
DNS header structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
GNU_PACKED
Types for ETB control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
PD_ELE
Queue element for PD packets to send or receive . . . . . . . . . . . . . . . . . . . . . . . . 22
TAU_MARSHALL_INFO_T
Marshalling info, used to and from wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
TCN_URI
TCN-DNS simplified header structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
TRDP_CLTR_CST_INFO_T
Closed train consists information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
TRDP_COMID_DSID_MAP_T
ComId - data set mapping element definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
TRDP_CONSIST_INFO_T
Consist information structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
TRDP_DATASET
Dataset definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
TRDP_DATASET_ELEMENT_T
Dataset element definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
TRDP_DBG_CONFIG_T
Control for debug output device/file on application level . . . . . . . . . . . . . . . . . . . . . 30
TRDP_DNS_REPLY
TCN-DNS Reply telegram TCN_DNS_REP_DS . . . . . . . . . . . . . . . . . . . . . . . . . 31
TRDP_DNS_REQUEST
TCN-DNS Request telegram TCN_DNS_REQ_DS . . . . . . . . . . . . . . . . . . . . . . . 32
TRDP_ETB_INFO_T
Types for train configuration information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
TRDP_FUNCTION_INFO_T
Function/device information structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
TRDP_HANDLE
Hidden handle definition, used as unique addressing item . . . . . . . . . . . . . . . . . . . . 35
TRDP_LIST_STATISTICS_T
Information about a particular MD listener . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
TRDP_MARSHALL_CONFIG_T
Marshaling/unmarshalling configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6 Data Structure Index
TRDP_MD_CONFIG_T
Default MD configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
TRDP_MD_INFO_T
Message data info from received telegram; allows the application to generate responses . . . 39
TRDP_MD_STATISTICS_T
Structure containing all general MD statistics information . . . . . . . . . . . . . . . . . . . . 40
TRDP_MEM_CONFIG_T
Enumeration type for memory pre-fragmentation, reuse of VOS definition . . . . . . . . . . . . 41
TRDP_MEM_STATISTICS_T
Structure containing all general memory statistics information . . . . . . . . . . . . . . . . . . 42
TRDP_PD_CONFIG_T
Default PD configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
TRDP_PD_INFO_T
Process data info from received telegram; allows the application to generate responses . . . . 43
TRDP_PD_STATISTICS_T
Structure containing all general PD statistics information . . . . . . . . . . . . . . . . . . . . 44
TRDP_PROCESS_CONFIG_T
Various flags/general TRDP options for library initialization . . . . . . . . . . . . . . . . . . . 45
TRDP_PROP_T
Application defined properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
TRDP_PUB_STATISTICS_T
Table containing particular PD publishing information . . . . . . . . . . . . . . . . . . . . . . 46
TRDP_RED_STATISTICS_T
A table containing PD redundant group information . . . . . . . . . . . . . . . . . . . . . . . 47
TRDP_SDT_PAR_T
Types to read out the XML configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
TRDP_SEND_PARAM_T
Quality/type of service and time to live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
TRDP_SEQ_CNT_ENTRY_T
Tuples of last received sequence counter per comId . . . . . . . . . . . . . . . . . . . . . . . 49
TRDP_SESSION
Session/application variables store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
TRDP_SOCKET_TCP
TCP parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
TRDP_SOCKETS
Socket item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
TRDP_STATISTICS_REQUEST_T
TRDP statistics type definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
TRDP_STATISTICS_T
Structure containing all general memory, PD and MD statistics information . . . . . . . . . . . 53
TRDP_SUBS_STATISTICS_T
Table containing particular PD subscription information . . . . . . . . . . . . . . . . . . . . . 54
TRDP_VEHICLE_INFO_T
Vehicle information structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
TRDP_XML_DOC_HANDLE_T
Parsed XML document handle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
VOS_SOCK_OPT_T
Common socket options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
VOS_VERSION_T
Version information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Generated by Doxygen
Chapter 3
File Index
3.1 File List
Here is a list of all documented files with brief descriptions:
iec61375-2-3.h
All definitions from IEC 61375-2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
tau_cstinfo.c
Functions for consist information access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
tau_ctrl.c
Functions for train switch control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
tau_ctrl.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
tau_ctrl_types.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
tau_dnr.c
Functions for domain name resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
tau_dnr.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
tau_dnr_types.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
tau_marshall.c
Marshalling functions for TRDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
tau_marshall.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
tau_tti.c
Functions for train topology information access . . . . . . . . . . . . . . . . . . . . . . . . . 112
tau_tti.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
tau_tti_types.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
tau_xml.c
Functions for XML file parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
tau_xml.h
TRDP utility interface definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
trdp_dllmain.c
Windows DLL main function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
trdp_if.c
Functions for ECN communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
trdp_if.h
Typedefs for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

8 File Index
trdp_if_light.h
TRDP Light interface functions (API) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
trdp_mdcom.c
Functions for MD communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
trdp_mdcom.h
Functions for MD communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
trdp_pdcom.c
Functions for PD communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
trdp_pdcom.h
Functions for PD communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
trdp_private.h
Typedefs for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
trdp_stats.c
Statistics functions for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . 245
trdp_stats.h
Statistics for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
trdp_types.h
Typedefs for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
trdp_utils.c
Helper functions for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
trdp_utils.h
Common utilities for TRDP communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
trdp_xml.c
Simple XML parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
trdp_xml.h
Simple XML parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
vos_mem.c
Memory functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
vos_mem.h
Memory and queue functions for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . 309
vos_shared_mem.h
Shared Memory functions for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . 319
vos_sock.h
Typedefs for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
vos_thread.h
Threading functions for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
vos_types.h
Typedefs for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
vos_utils.c
Common functions for VOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
vos_utils.h
Typedefs for OS abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Generated by Doxygen
Chapter 4
Data Structure Documentation
4.1 DNS_HEADER Struct Reference
DNS header structure.
4.1.1 Detailed Description
DNS header structure.
The documentation for this struct was generated from the following file:
•tau_dnr.c
4.2 GNU_PACKED Struct Reference
Types for ETB control.
#include <trdp_private.h>
Data Fields
• UINT8 trnVehNo
vehicle sequence number within the train with vehicle 01 being the first vehicle in ETB reference direction 1 as defined
in IEC61375-2-5 value range: 0..63 a value of 0 indicates that this vehicle has been inserted by correction
• ANTIVALENT8 isLead
vehicle is leading
• UINT8 leadDir
vehicle leading direction 0 = not relevant 1 = leading direction 1 2 = leading direction 2
• UINT8 vehOrient
vehicle orientation 0 = not known (corrected vehicle) 1 = same as operational train direction 2 = inverse to operational
train direction
• TRDP_SHORT_VERSION_T version
telegram version information, main_version = 1, sub_version = 0

10 Data Structure Documentation
• UINT16 reserved01
reserved (=0)
• UINT8 trnCstNo
own TCN consist number (= 1..32)
• UINT8 reserved02
reserved (=0)
• UINT8 ownOpCstNo
own operational address (= 1..32) = 0 if unknown (e.g.
• UINT8 reserved03
reserved (=0)
• UINT32 cstTopoCount
Consist topology counter.
• UINT32 trnTopoCount
Train directory topology counter.
• UINT32 opTrnTopoCount
Operational Train topology counter.
• ANTIVALENT8 wasLead
consist was leading, '01'B = false, '10'B = true
• ANTIVALENT8 reqLead
leading request, '01'B = false, '10'B = true
• UINT8 reqLeadDir
(request) leading direction, '01'B = consist direction 1, '10'B = consist direction 2
• ANTIVALENT8 accLead
accept remote leading request, '01'B = false/not accepted, '10'B = true/accepted
• ANTIVALENT8 clearConfComp
clear confirmed composition, '01'B = false, '10'B = true
• ANTIVALENT8 corrRequest
request confirmation, '01'B = false, '10'B = true
• ANTIVALENT8 corrInfoSet
correction info set, '01'B = false, '10'B = true
• ANTIVALENT8 compStored
corrected composition stored, '01'B = false, '10'B = true
• ANTIVALENT8 sleepRequest
request sleep mode, '01'B = false, '10'B = true
• UINT8 leadVehOfCst
position of leading vehicle in consist, 0..31 (1: first vehicle in consist in Direction 1, 2: second vehicle, etc.)
• UINT8 reserved04
reserved (=0)
• UINT16 reserved05
reserved (=0)
• UINT8 reserved06
reserved (=0)
• UINT8 confVehCnt
number of confirmed vehicles in train (1..63)
• TRDP_CONF_VEHICLE_T confVehList [TRDP_MAX_VEH_CNT]
dynamic ordered list of confirmed vehicles in train, starting with vehicle at train head, see sub-clause 5.3.3.2.6
• TRDP_ETB_CTRL_VDP_T safetyTrail
ETBCTRL-VDP trailer, completely set to 0 == not used.
• UINT8 reserved01
reserved (=0)
•TRDP_NET_LABEL_T deviceName
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 11
function device of ECSC which sends the telegram
• UINT8 inhibit
inauguration inhibit 0 = no inhibit request 1 = inhibit request
• UINT8 leadingReq
leading request 0 = no leading request 1 = leading request
• UINT8 leadingDir
leading direction 0 = no leading request 1 = leading request direction 1 2 = leading request direction 2
• UINT8 sleepReq
sleep request 0 = no sleep request 1 = sleep request
• UINT16 lifesign
wrap-around counter, incremented with each produced datagram.
• UINT8 ecspState
ECSP state indication 0 = ECSP not operational(initial value) 1 = ECSP in operation.
• UINT8 etbInhibit
inauguration inhibit indication 0 = n/a (default) 1 = inhibit not requested on ETB 2 = inhibit set on local ETBN 3 = inhibit
set on remote ETBN 4 = inhibit set on local and remote ETBN
• UINT8 etbLength
indicates train lengthening in case train inauguration is inhibit 0 = no lengthening (default) 1 = lengthening detected
• UINT8 etbShort
indicates train shortening in case train inauguration is inhibit 0 = no shortening (default) 1 = shortening detected
• UINT16 reserved02
reserved (=0)
• UINT8 etbLeadState
indication of local consist leadership 5 = consist not leading (initial value) 6 = consist is leading requesting 9 = consist
is leading 10 = leading conflict other values are not allowed
• UINT8 etbLeadDir
direction of the leading end car in the local consist 0 = unknown (default) 1 = TCN direction 1 2 = TCN direction 2
other values are not allowed
• UINT8 ttdbSrvState
TTDB server state indication 0 = n/a (initial value) 1 = Leader (default) 2 = Follower 3 = Error.
• UINT8 dnsSrvState
DNS server state indication 0 = n/a (initial value) 1 = Leader (default) 2 = Follower 3 = Error.
• UINT8 trnDirState
train directory state 1 = UNCONFIRMED 2 = CONFIRMED other values are not allowed
• UINT8 opTrnDirState
train directory state 1 = INVALID 2 = VALID 4 = SHARED other values are not allowed
• UINT8 sleepCtrlState
sleep control state (option) 0 = option not available 1 = RegularOperation 2 = WaitForSleepMode 3 = PrepareFor←-
SleepMode
• UINT8 sleepReqCnt
number of sleep requests (option) value range: 0..63, not used = 0
• UINT32 opTrnTopoCnt
operational train topology counter
• UINT8 command
confirmation order 1 = confirmation/correction request 2 = un-confirmation request
• UINT16 confVehCnt
number of confirmed vehicles in the train (1..63).
• TRDP_OP_VEHICLE_T confVehList [TRDP_MAX_VEH_CNT]
ordered list of confirmed vehicles in the train, starting with vehicle at train head, see chapter 5.3.3.2.10.
• UINT8 status
status of storing correction info 0 = correctly stored 1 = not stored
Generated by Doxygen

12 Data Structure Documentation
• UINT32 reqSafetyCode
SC-32 value of the request message.
• UINT8 byPassCtrl
ETBN bypass control 0 = no action (keep old state) 1 = no bypass 2 = activate bypass.
• UINT8 txCtrl
ETBN transmission control 0 = no action (keep old state) 1 = activate sending on ETB (default) 2 = stop sending on
ETB.
• UINT8 slCtrl
sleep mode control (option) 0 = no action (keep old state) 1 = deactivate sleep mode 2 = activate sleep mode (line
activity sensing)
• UINT8 etbnState
state indication of the (active) ETBN 0 = ETBN not operational(initial value) 1 = ETBN in operation
• UINT8 etbnInaugState
ETBN inauguration state as defined in IEC61375-2-5 0 = init 1 = not inaugurated 2 = inaugurated 3 = ready for
inauguration.
• UINT8 etbnPosition
position of the ETBN 0 = unknown (default) 1 = single node 2 = middle node 3 = end node TCN direction 1 4 = end
node TCN direction 2
• UINT8 etbnRole
ETBN node role as defined in IEC61375-2-5 0 = undefined 1 = master (redundancy leader) 2 = backup (redundancy
follower) 3 = not redundant.
• BITSET8 etbLineState
indication of ETB line status (FALSE == not trusted, TRUE == trusted) bit0 = line A ETBN direction 1 bit1 = line B
ETBN direction 1 bit2 = line C ETBN direction 1 bit3 = line D ETBN direction 1 bit4 = line A ETBN direction 2 bit5 =
line B ETBN direction 2 bit6 = line C ETBN direction 2 bit7 = line D ETBN direction 2
• UINT8 byPassState
state of bypass function 0 = bypass disabled 1 = bypass enabled
• UINT8 slState
sleep mode state (option) 0 = no sleep mode 1 = sleep mode active (line activity sensing)
• UINT32 etbTopoCnt
ETB topography counter.
• TRDP_TRAIN_NET_DIR_T trnNetDir
dynamic train info
• UINT8 ver
Version - incremented for incompatible changes.
• UINT8 rel
Release - incremented for compatible changes.
• UINT32 reserved01
reserved (=0)
• TRDP_SHORT_VERSION_T userDataVersion
version of the vital ETBCTRL telegram mainVersion = 1, subVersion = 0
• UINT32 safeSeqCount
safe sequence counter, as defined in B.9
• UINT32 safetyCode
checksum, as defined in B.9
•TRDP_UUID_T cstUUID
UUID of the consist, provided by ETBN (TrainNetworkDirectory) Reference to static consist attributes 0 if not available
(e.g.
• UINT32 cstTopoCnt
consist topology counter provided with the CSTINFO 0 if no CSTINFO available
• UINT8 cstOrient
consist orientation '01'B = same as train direction '10'B = inverse to train direction
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 13
• UINT8 cstCnt
number of consists in train; range: 1..63
• TRDP_CONSIST_T cstList [TRDP_MAX_CST_CNT]
consist list.
• UINT32 trnTopoCnt
trnTopoCnt value ctrlType == 0: actual value ctrlType == 1: set to 0
• UINT8 etbId
identification of the ETB the TTDB is computed for bit0: ETB0 (operational network) bit1: ETB1 (multimedia network)
bit2: ETB2 (other network) bit3: ETB3 (other network)
•TRDP_NET_LABEL_T vehId
Unique vehicle identifier, application defined (e.g.
• UINT8 opVehNo
operational vehicle sequence number in train value range 1..63
• UINT8 opCstNo
operational consist number in train (1..63)
• UINT8 opCstOrient
consist orientation '00'B = not known (corrected vehicle) '01'B = same as operational train direction '10'B = inverse to
operational train direction
•TRDP_NET_LABEL_T trnId
train identifier, application defined (e.g.
•TRDP_NET_LABEL_T trnOperator
train operator, e.g.
• UINT32 crc
sc-32 computed over record (seed value: 'FFFFFFFF'H)
• UINT8 opTrnOrient
operational train orientation '00'B = unknown '01'B = same as train direction '10'B = inverse to train direction
• UINT8 opCstCnt
number of consists in train (1..63)
• TRDP_OP_CONSIST_T opCstList [TRDP_MAX_CST_CNT]
operational consist list starting with op.
• UINT8 reserved05
reserved for future use (= 0)
• UINT8 opVehCnt
number of vehicles in train (1..63)
• TRDP_OP_VEHICLE_T opVehList [TRDP_MAX_VEH_CNT]
operational vehicle list starting with op.
• TRDP_OP_TRAIN_DIR_STATE_T state
operational state of the train
• UINT32 cstNetProp
consist network properties bit0..1: consist orientation bit2..7: 0 bit8..13: ETBN Id bit14..15: 0 bit16..21: subnet Id
bit24..29: CN Id bit30..31: 0
• UINT16 entryCnt
number of entries in train network directory
• TRDP_TRAIN_NET_DIR_ENTRY_T trnNetDir [TRDP_MAX_CST_CNT]
train network directory
• TRDP_OP_TRAIN_DIR_T opTrnDir
operational directory
• TRDP_TRAIN_DIR_T trnDir
train directory
• UINT32 sequenceCounter
Unique counter (autom incremented)
Generated by Doxygen

14 Data Structure Documentation
• UINT16 protocolVersion
fix value for compatibility (set by the API)
• UINT16 msgType
of datagram: PD Request (0x5072) or PD_MSG (0x5064)
• UINT32 comId
set by user: unique id
• UINT32 datasetLength
length of the data to transmit 0...1432
• UINT32 reserved
before used for ladder support
• UINT32 replyComId
used in PD request
• UINT32 replyIpAddress
used for PD request
• UINT32 frameCheckSum
CRC32 of header.
• INT32 replyStatus
0 = OK
• UINT8 sessionID [16u]
UUID as a byte stream.
• UINT32 replyTimeout
in us
• UINT8 sourceURI [32u]
User part of URI.
• UINT8 destinationURI [32u]
User part of URI.
• PD_HEADER_T frameHead
Packet header in network byte order.
• UINT8 data [TRDP_MAX_PD_DATA_SIZE]
data ready to be sent or received (with CRCs)
4.2.1 Detailed Description
Types for ETB control.
TRDP PD packet.
TRDP message data header - network order and alignment.
TRDP process data header - network order and alignment.
Complete TTDB structure.
Train network directory structure.
Train network directory entry structure acc.
Operational Train directory status info structure.
Operational train structure.
Operational train directory state.
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 15
Operational consist structure.
Operational vehicle structure.
TCN train directory.
CSTINFO Control telegram.
TCN consist structure.
Version information for communication buffers.
to IEC61375-2-5
4.2.2 Field Documentation
4.2.2.1 confVehCnt
UINT16 GNU_PACKED::confVehCnt
number of confirmed vehicles in the train (1..63).
4.2.2.2 confVehList
TRDP_OP_VEHICLE_T GNU_PACKED::confVehList[TRDP_MAX_VEH_CNT]
ordered list of confirmed vehicles in the train, starting with vehicle at train head, see chapter 5.3.3.2.10.
Parameters 'isLead' and 'leadDir' to be set to 0
4.2.2.3 cstList
TRDP_CONSIST_T GNU_PACKED::cstList
consist list.
consist list ordered list starting with trnCstNo == 1 Note: This is a variable size array, only opCstCnt array elements
are present on the network and for crc computation
If trnCstNo >0 this shall be an ordered list starting with trnCstNo == 1 (exactly the same as in structure TRAIN←-
_DIRECTORY). If trnCstNo == 0 it is not mandatory to list all consists (only consists which should send CSTINFO
telegram). The parameters 'trnCstNo' and 'cstOrient' are optional and can be set to 0.
Generated by Doxygen

16 Data Structure Documentation
4.2.2.4 cstUUID
TRDP_UUID_T GNU_PACKED::cstUUID
UUID of the consist, provided by ETBN (TrainNetworkDirectory) Reference to static consist attributes 0 if not avail-
able (e.g.
unique consist identifier
Reference to static consist attributes, 0 if not available (e.g.
correction)
4.2.2.5 datasetLength
UINT32 GNU_PACKED::datasetLength
length of the data to transmit 0...1432
defined by user: length of data to transmit
4.2.2.6 deviceName
TRDP_NET_LABEL_T GNU_PACKED::deviceName
function device of ECSC which sends the telegram
function device of ED which sends the telegram
4.2.2.7 etbId
UINT8 GNU_PACKED::etbId
identification of the ETB the TTDB is computed for bit0: ETB0 (operational network) bit1: ETB1 (multimedia network)
bit2: ETB2 (other network) bit3: ETB3 (other network)
identification of the ETB the TTDB is computed for 0: ETB0 (operational network) 1: ETB1 (multimedia network) 2:
ETB2 (other network) 3: ETB3 (other network)
4.2.2.8 etbTopoCnt
UINT32 GNU_PACKED::etbTopoCnt
ETB topography counter.
set by user: ETB to use, '0' for consist local traffic
train network directory CRC
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 17
4.2.2.9 inhibit
UINT8 GNU_PACKED::inhibit
inauguration inhibit 0 = no inhibit request 1 = inhibit request
ETBN inhibit 0 = no action (keep old state) 1 = no inhibit request 2 = inhibit request.
4.2.2.10 isLead
ANTIVALENT8 GNU_PACKED::isLead
vehicle is leading
consist contains leading vehicle, '01'B = false, '10'B = true
4.2.2.11 leadDir
UINT8 GNU_PACKED::leadDir
vehicle leading direction 0 = not relevant 1 = leading direction 1 2 = leading direction 2
'vehicle leading direction 0 = not relevant 1 = leading direction 1 2 = leading direction 2
4.2.2.12 leadVehOfCst
UINT8 GNU_PACKED::leadVehOfCst
position of leading vehicle in consist, 0..31 (1: first vehicle in consist in Direction 1, 2: second vehicle, etc.)
position of leading vehicle in consist range 0...32 0 = not defined 1 = first vehicle in consist in direction 1 2 = second
vehicle etc.
4.2.2.13 lifesign
UINT16 GNU_PACKED::lifesign
wrap-around counter, incremented with each produced datagram.
4.2.2.14 msgType
UINT16 GNU_PACKED::msgType
of datagram: PD Request (0x5072) or PD_MSG (0x5064)
of datagram: Mn, Mr, Mp, Mq, Mc or Me
Generated by Doxygen

18 Data Structure Documentation
4.2.2.15 opCstList
TRDP_OP_CONSIST_T GNU_PACKED::opCstList[TRDP_MAX_CST_CNT]
operational consist list starting with op.
consist #1 Note: This is a variable size array, only opCstCnt array elements are present
4.2.2.16 opTrnDirState
UINT8 GNU_PACKED::opTrnDirState
train directory state 1 = INVALID 2 = VALID 4 = SHARED other values are not allowed
Operational train directory status: '01'B == invalid, '10'B == valid, '100'B == shared.
4.2.2.17 opTrnTopoCnt
UINT32 GNU_PACKED::opTrnTopoCnt
operational train topology counter
set by user: direction/side critical, '0' if ignored
operational train topology counter computed as defined in 5.3.3.2.16 (seed value : trnTopoCnt)
operational train topology counter set to 0 if opTrnDirState == invalid
operational train topocounter value of the operational train directory the correction is based on
4.2.2.18 opVehList
TRDP_OP_VEHICLE_T GNU_PACKED::opVehList[TRDP_MAX_VEH_CNT]
operational vehicle list starting with op.
vehicle #1 Note: This is a variable size array, only opCstCnt array elements are present
4.2.2.19 ownOpCstNo
UINT8 GNU_PACKED::ownOpCstNo
own operational address (= 1..32) = 0 if unknown (e.g.
operational consist number the vehicle belongs to
after Inauguration)
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 19
4.2.2.20 protocolVersion
UINT16 GNU_PACKED::protocolVersion
fix value for compatibility (set by the API)
fix value for compatibility
4.2.2.21 reserved01 [1/2]
UINT16 GNU_PACKED::reserved01
reserved (=0)
reserved for future use (= 0)
4.2.2.22 reserved01 [2/2]
UINT8 GNU_PACKED::reserved01
reserved (=0)
reserved for future use (= 0)
4.2.2.23 reserved02 [1/2]
UINT16 GNU_PACKED::reserved02
reserved (=0)
reserved (= 0)
reserved for future use (= 0)
4.2.2.24 reserved02 [2/2]
UINT16 GNU_PACKED::reserved02
reserved (=0)
reserved (= 0)
4.2.2.25 reserved03
UINT8 GNU_PACKED::reserved03
reserved (=0)
reserved for future use (= 0)
Generated by Doxygen

20 Data Structure Documentation
4.2.2.26 reserved04
UINT8 GNU_PACKED::reserved04
reserved (=0)
reserved for future use (= 0)
4.2.2.27 reserved06
UINT8 GNU_PACKED::reserved06
reserved (=0)
reserved for future use (= 0)
4.2.2.28 safetyTrail
TRDP_ETB_CTRL_VDP_T GNU_PACKED::safetyTrail
ETBCTRL-VDP trailer, completely set to 0 == not used.
ETBCTRL-VDP trailer, parameter 'safeSequCount' == 0 completely set to 0 == not used.
ETBCTRL-VDP trailer, parameter 'safeSequCount' == 0 completely set to 0 == SDTv2 not used.
ETBCTRL-VDP trailer, completely set to 0 == SDTv2 not used.
4.2.2.29 trnCstNo
UINT8 GNU_PACKED::trnCstNo
own TCN consist number (= 1..32)
sequence number of consist in train with vehicle 01 being the first vehicle in ETB reference direction 1 as defined in
IEC61375-2-5, value range: 1..63, 0 = inserted by correction
train consist number telegram control type 0 = with trnTopoCnt tracking 1 = without trnTopoCnt tracking
Sequence number of consist in train (1..63)
4.2.2.30 trnDirState
UINT8 GNU_PACKED::trnDirState
train directory state 1 = UNCONFIRMED 2 = CONFIRMED other values are not allowed
TTDB status: '01'B == unconfirmed, '10'B == confirmed.
Generated by Doxygen

4.2 GNU_PACKED Struct Reference 21
4.2.2.31 trnId
TRDP_NET_LABEL_T GNU_PACKED::trnId
train identifier, application defined (e.g.
'ICE75', 'IC346'), informal
4.2.2.32 trnNetDir
TRDP_TRAIN_NET_DIR_T GNU_PACKED::trnNetDir
dynamic train info
network directory
4.2.2.33 trnOperator
TRDP_NET_LABEL_T GNU_PACKED::trnOperator
train operator, e.g.
'trenitalia.it', informal
4.2.2.34 trnTopoCnt
UINT32 GNU_PACKED::trnTopoCnt
trnTopoCnt value ctrlType == 0: actual value ctrlType == 1: set to 0
computed as defined in 5.3.3.2.16 (seed value: etbTopoCnt)
4.2.2.35 trnVehNo
UINT8 GNU_PACKED::trnVehNo
vehicle sequence number within the train with vehicle 01 being the first vehicle in ETB reference direction 1 as
defined in IEC61375-2-5 value range: 0..63 a value of 0 indicates that this vehicle has been inserted by correction
vehicle sequence number within the train with vehicle 01 being the first vehicle in ETB reference direction 1 as
defined in IEC61375-2-5, value range: 1..63, a value of 0 indicates that this vehicle has been inserted by correction
4.2.2.36 vehId
TRDP_NET_LABEL_T GNU_PACKED::vehId
Unique vehicle identifier, application defined (e.g.
UIC Identifier)
Generated by Doxygen

22 Data Structure Documentation
4.2.2.37 vehOrient
UINT8 GNU_PACKED::vehOrient
vehicle orientation 0 = not known (corrected vehicle) 1 = same as operational train direction 2 = inverse to operational
train direction
vehicle orientation, '00'B = not known (corrected vehicle) '01'B = same as operational train direction '10'B = inverse
to operational train direction
4.2.2.38 version
TRDP_SHORT_VERSION_T GNU_PACKED::version
telegram version information, main_version = 1, sub_version = 0
Train info structure version.
TrainDirectoryState data structure version parameter 'mainVersion' shall be set to 1.
TrainDirectory data structure version parameter 'mainVersion' shall be set to 1.
Consist Info Control structure version parameter 'mainVersion' shall be set to 1.
The documentation for this struct was generated from the following files:
•tau_ctrl_types.h
•tau_tti_types.h
•trdp_private.h
4.3 PD_ELE Struct Reference
Queue element for PD packets to send or receive.
#include <trdp_private.h>
Collaboration diagram for PD_ELE:
PD_ELE
pNext
TRDP_SESSION
pSndQueue
pRcvQueue
pfCbFunction
pNext TRDP_PD_CONFIG_T
pfCbFunction
pdDefault
TRDP_SEND_PARAM_T sendParam
TRDP_SOCKETS
sendParam
iface
TRDP_SOCKET_TCP tcpParams
TRDP_MEM_CONFIG_T
memConfig
TRDP_MARSHALL_CONFIG_T
marshall
TRDP_DATASET
pCachedDS
pfCbUnmarshall
pfCbMarshall
TRDP_DATASET_ELEMENT_T
pCachedDS
pElement
TRDP_STATISTICS_T
stats
TRDP_PD_STATISTICS_T
pd
TRDP_MD_STATISTICS_T
tcpMd
udpMd
TRDP_MEM_STATISTICS_T mem
TRDP_HANDLE addr
Generated by Doxygen

4.3 PD_ELE Struct Reference 23
Data Fields
• struct PD_ELE ∗pNext
pointer to next element or NULL
• UINT32 magic
prevent acces through dangeling pointer
•TRDP_ADDRESSES_T addr
handle of publisher/subscriber
•TRDP_IP_ADDR_T lastSrcIP
last source IP a subscribed packet was received from
•TRDP_IP_ADDR_T pullIpAddress
In case of pulling a PD this is the requested Ip.
• UINT32 redId
Redundancy group ID or zero.
• UINT32 curSeqCnt
the last sent or received sequence counter
• UINT32 curSeqCnt4Pull
the last sent sequence counter for PULL
• TRDP_SEQ_CNT_LIST_T ∗pSeqCntList
pointer to list of received sequence numbers per comId
• UINT32 numRxTx
Counter for received packets (statistics)
• UINT32 updPkts
Counter for updated packets (statistics)
• UINT32 getPkts
Counter for read packets (statistics)
• UINT32 numMissed
Counter for skipped sequence number (statistics)
•TRDP_ERR_T lastErr
Last error (timeout)
• TRDP_PRIV_FLAGS_T privFlags
private flags
• TRDP_FLAGS_T pktFlags
flags
•TRDP_TIME_T interval
time out value for received packets or interval for packets to send (set from ms)
•TRDP_TIME_T timeToGo
next time this packet must be sent/rcv
•TRDP_TO_BEHAVIOR_T toBehavior
timeout behavior for packets
• UINT32 dataSize
net data size
• UINT32 grossSize
complete packet size (header, data)
• UINT32 sendSize
data size sent out
•TRDP_DATASET_T ∗pCachedDS
Pointer to dataset element if known.
• INT32 socketIdx
index into the socket list
• const void ∗pUserRef
Generated by Doxygen

24 Data Structure Documentation
from subscribe()
•TRDP_PD_CALLBACK_T pfCbFunction
Pointer to PD callback function.
• PD_PACKET_T ∗pFrame
header ...
4.3.1 Detailed Description
Queue element for PD packets to send or receive.
4.3.2 Field Documentation
4.3.2.1 pFrame
PD_PACKET_T∗PD_ELE::pFrame
header ...
data + FCS...
The documentation for this struct was generated from the following file:
•trdp_private.h
4.4 TAU_MARSHALL_INFO_T Struct Reference
Marshalling info, used to and from wire.
Data Fields
• INT32 level
track recursive level
• UINT8 ∗pSrc
source pointer
• UINT8 ∗pSrcEnd
last source
• UINT8 ∗pDst
destination pointer
• UINT8 ∗pDstEnd
last destination
Generated by Doxygen

4.5 TCN_URI Struct Reference 25
4.4.1 Detailed Description
Marshalling info, used to and from wire.
The documentation for this struct was generated from the following file:
•tau_marshall.c
4.5 TCN_URI Struct Reference
TCN-DNS simplified header structures.
#include <tau_dnr_types.h>
Data Fields
• CHAR8 tcnUriStr [80]
if != 0 use TCN DNS as resolver
• INT16 resolvState
on request: reserved (= 0), on reply: -1 unknown, 0 OK
• UINT32 tcnUriIpAddr
IP address of URI.
• UINT32 tcnUriIpAddr2
if != 0, end IP address of range
4.5.1 Detailed Description
TCN-DNS simplified header structures.
The documentation for this struct was generated from the following file:
•tau_dnr_types.h
4.6 TRDP_CLTR_CST_INFO_T Struct Reference
Closed train consists information.
#include <tau_tti_types.h>
Data Fields
•TRDP_UUID_T cltrCstUUID
closed train consist UUID
• UINT8 cltrCstOrient
closed train consist orientation '01'B = same as closed train direction '10'B = inverse to closed train direction
• UINT8 cltrCstNo
sequence number of the consist within the closed train, value range 1..32
• UINT16 reserved01
reserved for future use (= 0)
Generated by Doxygen

26 Data Structure Documentation
4.6.1 Detailed Description
Closed train consists information.
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.7 TRDP_COMID_DSID_MAP_T Struct Reference
ComId - data set mapping element definition.
#include <trdp_types.h>
Data Fields
• UINT32 comId
comId
• UINT32 datasetId
corresponding dataset Id
4.7.1 Detailed Description
ComId - data set mapping element definition.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.8 TRDP_CONSIST_INFO_T Struct Reference
consist information structure
#include <tau_tti_types.h>
Collaboration diagram for TRDP_CONSIST_INFO_T:
TRDP_CONSIST_INFO_T
TRDP_FUNCTION_INFO_T
pFctInfoList
TRDP_CLTR_CST_INFO_T pCltrCstInfoList
TRDP_VEHICLE_INFO_T
pVehInfoList
TRDP_PROP_T
cstProp
vehProp
TRDP_ETB_INFO_T
pEtbInfoList
Generated by Doxygen

4.8 TRDP_CONSIST_INFO_T Struct Reference 27
Data Fields
• TRDP_SHORT_VERSION_T version
ConsistInfo data structure version, application defined mainVersion = 1, subVersion = 0.
• UINT8 cstClass
consist info classification 1 = (single) consist 2 = closed train 3 = closed train consist
• UINT8 reserved01
reserved for future use (= 0)
•TRDP_NET_LABEL_T cstId
application defined consist identifier, e.g.
•TRDP_NET_LABEL_T cstType
consist type, application defined
•TRDP_NET_LABEL_T cstOwner
consist owner, e.g.
•TRDP_UUID_T cstUUID
consist UUID
• UINT32 reserved02
reserved for future use (= 0)
•TRDP_PROP_T cstProp
static consist properties
• UINT16 reserved03
reserved for future use (= 0)
• UINT16 etbCnt
number of ETB's, range: 1..4
•TRDP_ETB_INFO_T ∗pEtbInfoList
ETB information list for the consist Ordered list starting with lowest etbId.
• UINT16 reserved04
reserved for future use (= 0)
• UINT16 vehCnt
number of vehicles in consist 1..32
•TRDP_VEHICLE_INFO_T ∗pVehInfoList
vehicle info list for the vehicles in the consist Ordered list starting with cstVehNo==1
• UINT16 reserved05
reserved for future use (= 0)
• UINT16 fctCnt
number of consist functions value range 0..1024
•TRDP_FUNCTION_INFO_T ∗pFctInfoList
function info list for the functions in consist lexicographical ordered by fctName
• UINT16 reserved06
reserved for future use (= 0)
• UINT16 cltrCstCnt
number of original consists in closed train value range: 0..32, 0 = consist is no closed train
•TRDP_CLTR_CST_INFO_T ∗pCltrCstInfoList
info on closed train composition Ordered list starting with cltrCstNo == 1
• UINT32 cstTopoCnt
consist topology counter computed as defined in 5.3.3.2.16, seed value: 'FFFFFFFF'H
4.8.1 Detailed Description
consist information structure
Generated by Doxygen

28 Data Structure Documentation
4.8.2 Field Documentation
4.8.2.1 cstId
TRDP_NET_LABEL_T TRDP_CONSIST_INFO_T::cstId
application defined consist identifier, e.g.
UIC identifier
4.8.2.2 cstOwner
TRDP_NET_LABEL_T TRDP_CONSIST_INFO_T::cstOwner
consist owner, e.g.
"trenitalia.it", "sncf.fr", "db.de"
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.9 TRDP_DATASET Struct Reference
Dataset definition.
#include <trdp_types.h>
Collaboration diagram for TRDP_DATASET:
TRDP_DATASET
TRDP_DATASET_ELEMENT_T
pCachedDS pElement
Generated by Doxygen

4.10 TRDP_DATASET_ELEMENT_T Struct Reference 29
Data Fields
• UINT32 id
dataset identifier >1000
• UINT16 reserved1
Reserved for future use, must be zero.
• UINT16 numElement
Number of elements.
•TRDP_DATASET_ELEMENT_T pElement [ ]
Pointer to a dataset element, used as array.
4.9.1 Detailed Description
Dataset definition.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.10 TRDP_DATASET_ELEMENT_T Struct Reference
Dataset element definition.
#include <trdp_types.h>
Collaboration diagram for TRDP_DATASET_ELEMENT_T:
TRDP_DATASET_ELEMENT_T
TRDP_DATASET
pElement pCachedDS
Generated by Doxygen

30 Data Structure Documentation
Data Fields
• UINT32 type
Data type (TRDP_DATA_TYPE_T 1...99) or dataset id >1000.
• UINT32 size
Number of items or TRDP_VAR_SIZE (0)
• CHAR8 ∗name
Name param, on special request (Ticket #211)
• CHAR8 ∗unit
Unit text for visualisation.
• REAL32 scale
Factor for visualisation.
• INT32 offset
Offset for visualisation (val = scale ∗x + offset)
• struct TRDP_DATASET ∗pCachedDS
Used internally for marshalling speed-up.
4.10.1 Detailed Description
Dataset element definition.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.11 TRDP_DBG_CONFIG_T Struct Reference
Control for debug output device/file on application level.
#include <tau_xml.h>
Data Fields
• TRDP_DBG_OPTION_T option
Debug printout options for application use.
• UINT32 maxFileSize
Maximal file size.
• TRDP_FILE_NAME_T fileName
Debug file name and path.
4.11.1 Detailed Description
Control for debug output device/file on application level.
The documentation for this struct was generated from the following file:
•tau_xml.h
Generated by Doxygen

4.12 TRDP_DNS_REPLY Struct Reference 31
4.12 TRDP_DNS_REPLY Struct Reference
TCN-DNS Reply telegram TCN_DNS_REP_DS.
#include <tau_dnr_types.h>
Collaboration diagram for TRDP_DNS_REPLY:
TRDP_DNS_REPLY
TCN_URI
tcnUriList
Data Fields
• TRDP_SHORT_VERSION_T version
1.0
•TRDP_NET_LABEL_T deviceName
function device of ED which sends the telegram
• UINT32 etbTopoCnt
ETB topography counter.
• UINT32 opTrnTopoCnt
operational train topography counter needed for TCN-URIs related to the operational train view = 0 if not used
• UINT8 etbId
identification of the related ETB 0 = ETB0 (operational network) 1 = ETB1 (multimedia network) 2 = ETB2 (other
network) 3 = ETB3 (other network) 255 = don’t care (for access to local DNS server)
• INT8 dnsStatus
0 = OK -1 = DNS Server not ready -2 = Inauguration in progress
• UINT8 tcnUriCnt
number of TCN-URIs to be resolved value range: 0 .
•TCN_URI_T tcnUriList [255]
defined for max size
• TRDP_ETB_CTRL_VDP_T safetyTrail
SDT trailer.
4.12.1 Detailed Description
TCN-DNS Reply telegram TCN_DNS_REP_DS.
Generated by Doxygen

32 Data Structure Documentation
4.12.2 Field Documentation
4.12.2.1 tcnUriCnt
UINT8 TRDP_DNS_REPLY::tcnUriCnt
number of TCN-URIs to be resolved value range: 0 .
. 255
The documentation for this struct was generated from the following file:
•tau_dnr_types.h
4.13 TRDP_DNS_REQUEST Struct Reference
TCN-DNS Request telegram TCN_DNS_REQ_DS.
#include <tau_dnr_types.h>
Collaboration diagram for TRDP_DNS_REQUEST:
TRDP_DNS_REQUEST
TCN_URI
tcnUriList
Data Fields
• TRDP_SHORT_VERSION_T version
1.0
•TRDP_NET_LABEL_T deviceName
function device of ED which sends the telegram
• UINT32 etbTopoCnt
ETB topography counter.
• UINT32 opTrnTopoCnt
operational train topography counter needed for TCN-URIs related to the operational train view = 0 if not used
• UINT8 etbId
identification of the related ETB 0 = ETB0 (operational network) 1 = ETB1 (multimedia network) 2 = ETB2 (other
network) 3 = ETB3 (other network) 255 = don’t care (for access to local DNS server)
• UINT8 tcnUriCnt
number of TCN-URIs to be resolved value range: 0 .
•TCN_URI_T tcnUriList [255]
defined for max size
• TRDP_ETB_CTRL_VDP_T safetyTrail
SDT trailer.
Generated by Doxygen

4.14 TRDP_ETB_INFO_T Struct Reference 33
4.13.1 Detailed Description
TCN-DNS Request telegram TCN_DNS_REQ_DS.
4.13.2 Field Documentation
4.13.2.1 tcnUriCnt
UINT8 TRDP_DNS_REQUEST::tcnUriCnt
number of TCN-URIs to be resolved value range: 0 .
. 255
The documentation for this struct was generated from the following file:
•tau_dnr_types.h
4.14 TRDP_ETB_INFO_T Struct Reference
Types for train configuration information.
#include <tau_tti_types.h>
Data Fields
• UINT8 etbId
identification of train backbone; value range: 0..3
• UINT8 cnCnt
number of CNs within consist connected to this ETB value range 1..16 referring to cnId 0..15 acc.
• UINT16 reserved01
reserved for future use (= 0)
4.14.1 Detailed Description
Types for train configuration information.
ETB information
4.14.2 Field Documentation
Generated by Doxygen

34 Data Structure Documentation
4.14.2.1 cnCnt
UINT8 TRDP_ETB_INFO_T::cnCnt
number of CNs within consist connected to this ETB value range 1..16 referring to cnId 0..15 acc.
IEC61375-2-5
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.15 TRDP_FUNCTION_INFO_T Struct Reference
function/device information structure
#include <tau_tti_types.h>
Data Fields
•TRDP_NET_LABEL_T fctName
function device or group label
• UINT16 fctId
host identification of the function device or group as defined in IEC 61375-2-5, application defined.
• BOOL8 grp
is a function group and will be resolved as IP multicast address
• UINT8 reserved01
reserved for future use (= 0)
• UINT8 cstVehNo
Sequence number of the vehicle in the consist the function belongs to.
• UINT8 etbId
number of connected train backbone.
• UINT8 cnId
identifier of connected consist network in the consist, related to the etbId.
• UINT8 reserved02
reserved for future use (= 0)
4.15.1 Detailed Description
function/device information structure
4.15.2 Field Documentation
Generated by Doxygen

4.16 TRDP_HANDLE Struct Reference 35
4.15.2.1 cnId
UINT8 TRDP_FUNCTION_INFO_T::cnId
identifier of connected consist network in the consist, related to the etbId.
Value range: 0..31
4.15.2.2 cstVehNo
UINT8 TRDP_FUNCTION_INFO_T::cstVehNo
Sequence number of the vehicle in the consist the function belongs to.
Value range: 1..16, 0 = not defined
4.15.2.3 etbId
UINT8 TRDP_FUNCTION_INFO_T::etbId
number of connected train backbone.
Value range: 0..3
4.15.2.4 fctId
UINT16 TRDP_FUNCTION_INFO_T::fctId
host identification of the function device or group as defined in IEC 61375-2-5, application defined.
Value range: 1..16383 (device), 256..16383 (group)
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.16 TRDP_HANDLE Struct Reference
Hidden handle definition, used as unique addressing item.
#include <trdp_private.h>
Generated by Doxygen

36 Data Structure Documentation
Data Fields
• UINT32 comId
comId for packets to send/receive
•TRDP_IP_ADDR_T srcIpAddr
source IP for PD/MD
•TRDP_IP_ADDR_T srcIpAddr2
second source IP for PD/MD
•TRDP_IP_ADDR_T destIpAddr
destination IP for PD
•TRDP_IP_ADDR_T mcGroup
multicast group to join for PD
• UINT32 etbTopoCnt
etb topocount belongs to addressing item
• UINT32 opTrnTopoCnt
opTrn topocount belongs to addressing item
4.16.1 Detailed Description
Hidden handle definition, used as unique addressing item.
The documentation for this struct was generated from the following file:
•trdp_private.h
4.17 TRDP_LIST_STATISTICS_T Struct Reference
Information about a particular MD listener.
#include <trdp_types.h>
Data Fields
• UINT32 comId
ComId to listen to.
• TRDP_URI_USER_T uri
URI user part to listen to.
•TRDP_IP_ADDR_T joinedAddr
Joined IP address.
• UINT32 callBack
Call back function if used.
• UINT32 userRef
User reference if used.
• UINT32 numSessions
Number of sessions.
Generated by Doxygen

4.18 TRDP_MARSHALL_CONFIG_T Struct Reference 37
4.17.1 Detailed Description
Information about a particular MD listener.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.18 TRDP_MARSHALL_CONFIG_T Struct Reference
Marshaling/unmarshalling configuration.
#include <trdp_types.h>
Collaboration diagram for TRDP_MARSHALL_CONFIG_T:
TRDP_MARSHALL_CONFIG_T
TRDP_DATASET
pfCbUnmarshall
pfCbMarshall
TRDP_DATASET_ELEMENT_T
pCachedDS pElement
Data Fields
•TRDP_MARSHALL_T pfCbMarshall
Pointer to marshall callback function.
•TRDP_UNMARSHALL_T pfCbUnmarshall
Pointer to unmarshall callback function.
• void ∗pRefCon
Pointer to user context for call back.
4.18.1 Detailed Description
Marshaling/unmarshalling configuration.
The documentation for this struct was generated from the following file:
•trdp_types.h
Generated by Doxygen

38 Data Structure Documentation
4.19 TRDP_MD_CONFIG_T Struct Reference
Default MD configuration.
#include <trdp_types.h>
Collaboration diagram for TRDP_MD_CONFIG_T:
TRDP_MD_CONFIG_T
TRDP_SESSION
pfCbFunction
pNext
TRDP_PD_CONFIG_T pfCbFunction
PD_ELE
pfCbFunction
pdDefault
TRDP_SEND_PARAM_T sendParam
sendParam
TRDP_SOCKETS
sendParam
pSndQueue
pRcvQueue
pNext
TRDP_HANDLE addr
TRDP_DATASET pCachedDS
TRDP_DATASET_ELEMENT_T
pCachedDS
TRDP_MARSHALL_CONFIG_T
pfCbUnmarshall
pfCbMarshall
pElement
iface
TRDP_SOCKET_TCP tcpParams
TRDP_MEM_CONFIG_T
memConfig
marshall
TRDP_STATISTICS_T stats
TRDP_PD_STATISTICS_T
pd
TRDP_MD_STATISTICS_T
tcpMd
udpMd
TRDP_MEM_STATISTICS_T
mem
Data Fields
•TRDP_MD_CALLBACK_T pfCbFunction
Pointer to MD callback function.
• void ∗pRefCon
Pointer to user context for call back.
•TRDP_SEND_PARAM_T sendParam
Default send parameters.
• TRDP_FLAGS_T flags
Default flags for MD packets.
• UINT32 replyTimeout
Default reply timeout in us.
• UINT32 confirmTimeout
Default confirmation timeout in us.
• UINT32 connectTimeout
Default connection timeout in us.
• UINT32 sendingTimeout
Default sending timeout in us.
• UINT16 udpPort
Port to be used for UDP MD communication.
• UINT16 tcpPort
Port to be used for TCP MD communication.
• UINT32 maxNumSessions
Maximal number of replier sessions.
Generated by Doxygen

4.20 TRDP_MD_INFO_T Struct Reference 39
4.19.1 Detailed Description
Default MD configuration.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.20 TRDP_MD_INFO_T Struct Reference
Message data info from received telegram; allows the application to generate responses.
#include <trdp_types.h>
Data Fields
•TRDP_IP_ADDR_T srcIpAddr
source IP address for filtering
•TRDP_IP_ADDR_T destIpAddr
destination IP address for filtering
• UINT32 seqCount
sequence counter
• UINT16 protVersion
Protocol version.
• TRDP_MSG_T msgType
Protocol ('PD', 'MD', ...)
• UINT32 comId
ComID.
• UINT32 etbTopoCnt
received topocount
• UINT32 opTrnTopoCnt
received topocount
• BOOL8 aboutToDie
session is about to die
• UINT32 numRepliesQuery
number of ReplyQuery received
• UINT32 numConfirmSent
number of Confirm sent
• UINT32 numConfirmTimeout
number of Confirm Timeouts (incremented by listeners
• UINT16 userStatus
error code, user stat
•TRDP_REPLY_STATUS_T replyStatus
reply status
•TRDP_UUID_T sessionId
for response
• UINT32 replyTimeout
reply timeout in us given with the request
Generated by Doxygen

40 Data Structure Documentation
• TRDP_URI_USER_T srcUserURI
source URI user part from MD header
• TRDP_URI_HOST_T srcHostURI
source URI host part (unused)
• TRDP_URI_USER_T destUserURI
destination URI user part from MD header
• TRDP_URI_HOST_T destHostURI
destination URI host part (unused)
• UINT32 numExpReplies
number of expected replies, 0 if unknown
• UINT32 numReplies
actual number of replies for the request
• const void ∗pUserRef
User reference given with the local call.
•TRDP_ERR_T resultCode
error code
4.20.1 Detailed Description
Message data info from received telegram; allows the application to generate responses.
Note: Not all fields are relevant for each message type!
The documentation for this struct was generated from the following file:
•trdp_types.h
4.21 TRDP_MD_STATISTICS_T Struct Reference
Structure containing all general MD statistics information.
#include <trdp_types.h>
Data Fields
• UINT32 defQos
default QoS for MD
• UINT32 defTtl
default TTL for MD
• UINT32 defReplyTimeout
default reply timeout in us for MD
• UINT32 defConfirmTimeout
default confirm timeout in us for MD
• UINT32 numList
number of listeners
• UINT32 numRcv
number of received MD packets
• UINT32 numCrcErr
Generated by Doxygen

4.22 TRDP_MEM_CONFIG_T Struct Reference 41
number of received MD packets with CRC err
• UINT32 numProtErr
number of received MD packets with protocol err
• UINT32 numTopoErr
number of received MD packets with wrong topo count
• UINT32 numNoListener
number of received MD packets without listener
• UINT32 numReplyTimeout
number of reply timeouts
• UINT32 numConfirmTimeout
number of confirm timeouts
• UINT32 numSend
number of sent MD packets
4.21.1 Detailed Description
Structure containing all general MD statistics information.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.22 TRDP_MEM_CONFIG_T Struct Reference
Enumeration type for memory pre-fragmentation, reuse of VOS definition.
#include <trdp_types.h>
Data Fields
• UINT8 ∗p
pointer to static or allocated memory
• UINT32 size
size of static or allocated memory
• UINT32 prealloc [VOS_MEM_NBLOCKSIZES]
memory block structure
4.22.1 Detailed Description
Enumeration type for memory pre-fragmentation, reuse of VOS definition.
Structure describing memory (and its pre-fragmentation)
The documentation for this struct was generated from the following file:
•trdp_types.h
Generated by Doxygen

42 Data Structure Documentation
4.23 TRDP_MEM_STATISTICS_T Struct Reference
Structure containing all general memory statistics information.
#include <trdp_types.h>
Data Fields
• UINT32 total
total memory size
• UINT32 free
free memory size
• UINT32 minFree
minimal free memory size in statistics interval
• UINT32 numAllocBlocks
allocated memory blocks
• UINT32 numAllocErr
allocation errors
• UINT32 numFreeErr
free errors
• UINT32 blockSize [VOS_MEM_NBLOCKSIZES]
preallocated memory blocks
• UINT32 usedBlockSize [VOS_MEM_NBLOCKSIZES]
used memory blocks
4.23.1 Detailed Description
Structure containing all general memory statistics information.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.24 TRDP_PD_CONFIG_T Struct Reference
Default PD configuration.
#include <trdp_types.h>
Collaboration diagram for TRDP_PD_CONFIG_T:
TRDP_PD_CONFIG_T TRDP_SESSION
pdDefault
pfCbFunction
pNext
PD_ELE
pfCbFunction
pSndQueue
pRcvQueue
pNext
TRDP_HANDLE addr
TRDP_DATASET
pCachedDS
TRDP_DATASET_ELEMENT_T
pCachedDS
TRDP_MARSHALL_CONFIG_T
pfCbUnmarshall
pfCbMarshall
pElement
TRDP_SOCKETS
iface
TRDP_SEND_PARAM_T
sendParam
sendParam
TRDP_SOCKET_TCP tcpParams
TRDP_MEM_CONFIG_T
memConfig
marshall
TRDP_STATISTICS_T
stats
TRDP_PD_STATISTICS_T pd
TRDP_MD_STATISTICS_T
tcpMd
udpMd
TRDP_MEM_STATISTICS_T
mem
Generated by Doxygen

4.25 TRDP_PD_INFO_T Struct Reference 43
Data Fields
•TRDP_PD_CALLBACK_T pfCbFunction
Pointer to PD callback function.
• void ∗pRefCon
Pointer to user context for call back.
•TRDP_SEND_PARAM_T sendParam
Default send parameters.
• TRDP_FLAGS_T flags
Default flags for PD packets.
• UINT32 timeout
Default timeout in us.
•TRDP_TO_BEHAVIOR_T toBehavior
Default timeout behavior.
• UINT16 port
Port to be used for PD communication.
4.24.1 Detailed Description
Default PD configuration.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.25 TRDP_PD_INFO_T Struct Reference
Process data info from received telegram; allows the application to generate responses.
#include <trdp_types.h>
Data Fields
•TRDP_IP_ADDR_T srcIpAddr
source IP address for filtering
•TRDP_IP_ADDR_T destIpAddr
destination IP address for filtering
• UINT32 seqCount
sequence counter
• UINT16 protVersion
Protocol version.
• TRDP_MSG_T msgType
Protocol ('PD', 'MD', ...)
• UINT32 comId
ComID.
• UINT32 etbTopoCnt
received ETB topocount
• UINT32 opTrnTopoCnt
Generated by Doxygen

44 Data Structure Documentation
received operational train directory topocount
• UINT32 replyComId
ComID for reply (request only)
•TRDP_IP_ADDR_T replyIpAddr
IP address for reply (request only)
• const void ∗pUserRef
User reference given with the local subscribe.
•TRDP_ERR_T resultCode
error code
• TRDP_URI_HOST_T srcHostURI
source URI host part (unused)
• TRDP_URI_HOST_T destHostURI
destination URI host part (unused)
•TRDP_TO_BEHAVIOR_T toBehavior
callback can decide about handling of data on timeout
4.25.1 Detailed Description
Process data info from received telegram; allows the application to generate responses.
Note: Not all fields are relevant for each message type!
The documentation for this struct was generated from the following file:
•trdp_types.h
4.26 TRDP_PD_STATISTICS_T Struct Reference
Structure containing all general PD statistics information.
#include <trdp_types.h>
Data Fields
• UINT32 defQos
default QoS for PD
• UINT32 defTtl
default TTL for PD
• UINT32 defTimeout
default timeout in us for PD
• UINT32 numSubs
number of subscribed ComId's
• UINT32 numPub
number of published ComId's
• UINT32 numRcv
number of received PD packets
• UINT32 numCrcErr
number of received PD packets with CRC err
Generated by Doxygen

4.27 TRDP_PROCESS_CONFIG_T Struct Reference 45
• UINT32 numProtErr
number of received PD packets with protocol err
• UINT32 numTopoErr
number of received PD packets with wrong topo count
• UINT32 numNoSubs
number of received PD push packets without subscription
• UINT32 numNoPub
number of received PD pull packets without publisher
• UINT32 numTimeout
number of PD timeouts
• UINT32 numSend
number of sent PD packets
• UINT32 numMissed
number of packets skipped
4.26.1 Detailed Description
Structure containing all general PD statistics information.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.27 TRDP_PROCESS_CONFIG_T Struct Reference
Various flags/general TRDP options for library initialization.
#include <trdp_types.h>
Data Fields
• TRDP_LABEL_T hostName
Host name.
• TRDP_LABEL_T leaderName
Leader name dependant on redundancy concept.
• UINT32 cycleTime
TRDP main process cycle time in us.
• UINT32 priority
TRDP main process priority (0-255, 0=default, 255=highest)
• TRDP_OPTION_T options
TRDP options.
4.27.1 Detailed Description
Various flags/general TRDP options for library initialization.
The documentation for this struct was generated from the following file:
•trdp_types.h
Generated by Doxygen

46 Data Structure Documentation
4.28 TRDP_PROP_T Struct Reference
Application defined properties.
#include <tau_tti_types.h>
Data Fields
• TRDP_SHORT_VERSION_T ver
properties version information, application defined
• UINT16 len
properties length in number of octets, application defined, must be a multiple of 4 octets for alignment reasons value
range: 0..32768
• UINT8 prop [1]
properties, application defined
4.28.1 Detailed Description
Application defined properties.
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.29 TRDP_PUB_STATISTICS_T Struct Reference
Table containing particular PD publishing information.
#include <trdp_types.h>
Data Fields
• UINT32 comId
Published ComId.
•TRDP_IP_ADDR_T destAddr
IP address of destination for this publishing.
• UINT32 cycle
Publishing cycle in us.
• UINT32 redId
Redundancy group id.
• UINT32 redState
Redundant state.Leader or Follower.
• UINT32 numPut
Number of packet updates.
• UINT32 numSend
Number of packets sent out.
Generated by Doxygen

4.30 TRDP_RED_STATISTICS_T Struct Reference 47
4.29.1 Detailed Description
Table containing particular PD publishing information.
4.29.2 Field Documentation
4.29.2.1 destAddr
TRDP_IP_ADDR_T TRDP_PUB_STATISTICS_T::destAddr
IP address of destination for this publishing.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.30 TRDP_RED_STATISTICS_T Struct Reference
A table containing PD redundant group information.
#include <trdp_types.h>
Data Fields
• UINT32 id
Redundant Id.
• UINT32 state
Redundant state.Leader or Follower.
4.30.1 Detailed Description
A table containing PD redundant group information.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.31 TRDP_SDT_PAR_T Struct Reference
Types to read out the XML configuration.
#include <tau_xml.h>
Generated by Doxygen

48 Data Structure Documentation
Data Fields
• UINT32 smi1
Safe message identifier - unique for this message at consist level.
• UINT32 smi2
Safe message identifier - unique for this message at consist level.
• UINT32 cmThr
Channel monitoring threshold.
• UINT16 udv
User data version.
• UINT16 rxPeriod
Sink cycle time.
• UINT16 txPeriod
Source cycle time.
• UINT16 nGuard
Initial timeout cycles.
• UINT8 nrxSafe
Timout cycles.
• UINT8 reserved1
Reserved for future use.
• UINT16 reserved2
Reserved for future use.
4.31.1 Detailed Description
Types to read out the XML configuration.
The documentation for this struct was generated from the following file:
•tau_xml.h
4.32 TRDP_SEND_PARAM_T Struct Reference
Quality/type of service and time to live.
#include <trdp_types.h>
Data Fields
• UINT8 qos
Quality of service (default should be 5 for PD and 3 for MD)
• UINT8 ttl
Time to live (default should be 64)
• UINT8 retries
Retries from XML file.
Generated by Doxygen

4.33 TRDP_SEQ_CNT_ENTRY_T Struct Reference 49
4.32.1 Detailed Description
Quality/type of service and time to live.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.33 TRDP_SEQ_CNT_ENTRY_T Struct Reference
Tuples of last received sequence counter per comId.
#include <trdp_private.h>
Data Fields
• UINT32 lastSeqCnt
Sequence counter value for comId.
•TRDP_IP_ADDR_T srcIpAddr
Source IP address.
• TRDP_MSG_T msgType
message type
4.33.1 Detailed Description
Tuples of last received sequence counter per comId.
The documentation for this struct was generated from the following file:
•trdp_private.h
4.34 TRDP_SESSION Struct Reference
Session/application variables store.
#include <trdp_private.h>
Collaboration diagram for TRDP_SESSION:
TRDP_SESSION
pNext
TRDP_PD_CONFIG_T
pfCbFunction
PD_ELE
pfCbFunction
pdDefault
TRDP_SEND_PARAM_T sendParam
TRDP_SOCKETS
sendParam
pSndQueue
pRcvQueue
pNext
TRDP_HANDLE addr
TRDP_DATASET
pCachedDS
TRDP_DATASET_ELEMENT_T
pCachedDS
TRDP_MARSHALL_CONFIG_T
pfCbUnmarshall
pfCbMarshall
pElement
iface
TRDP_SOCKET_TCP tcpParams
TRDP_MEM_CONFIG_T memConfig
marshall
TRDP_STATISTICS_T
stats
TRDP_PD_STATISTICS_T pd
TRDP_MD_STATISTICS_T
tcpMd
udpMd
TRDP_MEM_STATISTICS_T mem
Generated by Doxygen

50 Data Structure Documentation
Data Fields
• struct TRDP_SESSION ∗pNext
Pointer to next session.
•VOS_MUTEX_T mutex
protect this session
•TRDP_IP_ADDR_T realIP
Real IP address.
•TRDP_IP_ADDR_T virtualIP
Virtual IP address.
• UINT32 etbTopoCnt
current valid topocount or zero
• UINT32 opTrnTopoCnt
current valid topocount or zero
•TRDP_TIME_T nextJob
Store for next select interval.
•TRDP_PRINT_DBG_T pPrintDebugString
Pointer to function to print debug information.
•TRDP_MARSHALL_CONFIG_T marshall
Marshalling(unMarshalling configuration.
•TRDP_PD_CONFIG_T pdDefault
Default configuration for process data.
•TRDP_MEM_CONFIG_T memConfig
Internal memory handling configuration.
• TRDP_OPTION_T option
Stack behavior options.
•TRDP_SOCKETS_T iface [VOS_MAX_SOCKET_CNT]
Collection of sockets to use.
•PD_ELE_T ∗pSndQueue
pointer to first element of send queue
•PD_ELE_T ∗pRcvQueue
pointer to first element of rcv queue
• PD_PACKET_T ∗pNewFrame
pointer to received PD frame
•TRDP_TIME_T initTime
initialization time of session
•TRDP_STATISTICS_T stats
statistics of this session
4.34.1 Detailed Description
Session/application variables store.
The documentation for this struct was generated from the following file:
•trdp_private.h
Generated by Doxygen

4.35 TRDP_SOCKET_TCP Struct Reference 51
4.35 TRDP_SOCKET_TCP Struct Reference
TCP parameters.
#include <trdp_private.h>
Data Fields
•TRDP_IP_ADDR_T cornerIp
The other TCP corner Ip.
• BOOL8 notSend
If the message has been sent uncompleted.
•TRDP_TIME_T connectionTimeout
TCP socket connection Timeout.
• BOOL8 sendNotOk
The sending timeout will be start.
•TRDP_TIME_T sendingTimeout
The timeout sending the message.
• BOOL8 addFileDesc
Ready to add the socket in the fd.
• BOOL8 morituri
about to die
4.35.1 Detailed Description
TCP parameters.
The documentation for this struct was generated from the following file:
•trdp_private.h
4.36 TRDP_SOCKETS Struct Reference
Socket item.
#include <trdp_private.h>
Collaboration diagram for TRDP_SOCKETS:
TRDP_SOCKETS
TRDP_SEND_PARAM_T
sendParam
TRDP_SOCKET_TCP
tcpParams
Generated by Doxygen

52 Data Structure Documentation
Data Fields
• SOCKET sock
vos socket descriptor to use
•TRDP_IP_ADDR_T bindAddr
Defines the interface to use.
•TRDP_SEND_PARAM_T sendParam
Send parameters.
•TRDP_SOCK_TYPE_T type
Usage of this socket.
• BOOL8 rcvMostly
Used for receiving.
• INT16 usage
No.
•TRDP_SOCKET_TCP_T tcpParams
Params used for TCP.
•TRDP_IP_ADDR_T mcGroups [VOS_MAX_MULTICAST_CNT]
List of multicast addresses for this socket.
4.36.1 Detailed Description
Socket item.
4.36.2 Field Documentation
4.36.2.1 usage
INT16 TRDP_SOCKETS::usage
No.
of current users of this socket
The documentation for this struct was generated from the following file:
•trdp_private.h
4.37 TRDP_STATISTICS_REQUEST_T Struct Reference
TRDP statistics type definitions.
#include <trdp_types.h>
Generated by Doxygen

4.38 TRDP_STATISTICS_T Struct Reference 53
Data Fields
• UINT32 comId
ComId to request: 35...41.
4.37.1 Detailed Description
TRDP statistics type definitions.
Statistical data regarding the former info provided via SNMP the following information was left out/can be imple-
mented additionally using MD:
• PD subscr table: ComId, sourceIpAddr, destIpAddr, cbFct?, timout, toBehavior, counter
• PD publish table: ComId, destIpAddr, redId, redState cycle, ttl, qos, counter
• PD join table: joined MC address table
• MD listener table: ComId destIpAddr, destUri, cbFct?, counter
• Memory usageStructure containing comId for MD statistics request (ComId 32).
The documentation for this struct was generated from the following file:
•trdp_types.h
4.38 TRDP_STATISTICS_T Struct Reference
Structure containing all general memory, PD and MD statistics information.
#include <trdp_types.h>
Collaboration diagram for TRDP_STATISTICS_T:
TRDP_STATISTICS_T
TRDP_PD_STATISTICS_T
pd
TRDP_MD_STATISTICS_T
tcpMd
udpMd
TRDP_MEM_STATISTICS_T
mem
Generated by Doxygen

54 Data Structure Documentation
Data Fields
• UINT32 version
TRDP version.
• TIMEDATE64 timeStamp
actual time stamp
• TIMEDATE32 upTime
time in sec since last initialisation
• TIMEDATE32 statisticTime
time in sec since last reset of statistics
•TRDP_NET_LABEL_T hostName
host name
•TRDP_NET_LABEL_T leaderName
leader host name
•TRDP_IP_ADDR_T ownIpAddr
own IP address
•TRDP_IP_ADDR_T leaderIpAddr
leader IP address
• UINT32 processPrio
priority of TRDP process
• UINT32 processCycle
cycle time of TRDP process in microseconds
• UINT32 numJoin
number of joins
• UINT32 numRed
number of redundancy groups
•TRDP_MEM_STATISTICS_T mem
memory statistics
•TRDP_PD_STATISTICS_T pd
pd statistics
•TRDP_MD_STATISTICS_T udpMd
UDP md statistics.
•TRDP_MD_STATISTICS_T tcpMd
TCP md statistics.
4.38.1 Detailed Description
Structure containing all general memory, PD and MD statistics information.
The documentation for this struct was generated from the following file:
•trdp_types.h
4.39 TRDP_SUBS_STATISTICS_T Struct Reference
Table containing particular PD subscription information.
#include <trdp_types.h>
Generated by Doxygen

4.39 TRDP_SUBS_STATISTICS_T Struct Reference 55
Data Fields
• UINT32 comId
Subscribed ComId.
•TRDP_IP_ADDR_T joinedAddr
Joined IP address.
•TRDP_IP_ADDR_T filterAddr
Filter IP address, i.e IP address of the sender for this subscription, 0.0.0.0 in case all senders.
• UINT32 callBack
call back function if used
• UINT32 userRef
User reference if used.
• UINT32 timeout
Time-out value in us.
•TRDP_ERR_T status
Receive status information TRDP_NO_ERR, TRDP_TIMEOUT_ERR.
• UINT32 toBehav
Behavior at time-out.
• UINT32 numRecv
Number of packets received for this subscription.
• UINT32 numMissed
number of packets skipped for this subscription
4.39.1 Detailed Description
Table containing particular PD subscription information.
4.39.2 Field Documentation
4.39.2.1 filterAddr
TRDP_IP_ADDR_T TRDP_SUBS_STATISTICS_T::filterAddr
Filter IP address, i.e IP address of the sender for this subscription, 0.0.0.0 in case all senders.
4.39.2.2 timeout
UINT32 TRDP_SUBS_STATISTICS_T::timeout
Time-out value in us.
0 = No time-out supervision
Generated by Doxygen

56 Data Structure Documentation
4.39.2.3 toBehav
UINT32 TRDP_SUBS_STATISTICS_T::toBehav
Behavior at time-out.
Set data to zero / keep last value
The documentation for this struct was generated from the following file:
•trdp_types.h
4.40 TRDP_VEHICLE_INFO_T Struct Reference
vehicle information structure
#include <tau_tti_types.h>
Collaboration diagram for TRDP_VEHICLE_INFO_T:
TRDP_VEHICLE_INFO_T
TRDP_PROP_T
vehProp
Data Fields
•TRDP_NET_LABEL_T vehId
vehicle identifier label,application defined (e.g.
•TRDP_NET_LABEL_T vehType
vehicle type,application defined
• UINT8 vehOrient
vehicle orientation '01'B = same as consist direction '10'B = inverse to consist direction
• UINT8 cstVehNo
Sequence number of vehicle in consist(1..16)
• ANTIVALENT8 tractVeh
vehicle is a traction vehicle '01'B = vehicle is not a traction vehicle '10'B = vehicle is a traction vehicle
• UINT8 reserved01
for future use (= 0)
•TRDP_PROP_T vehProp
static vehicle properties
Generated by Doxygen

4.41 TRDP_XML_DOC_HANDLE_T Struct Reference 57
4.40.1 Detailed Description
vehicle information structure
4.40.2 Field Documentation
4.40.2.1 vehId
TRDP_NET_LABEL_T TRDP_VEHICLE_INFO_T::vehId
vehicle identifier label,application defined (e.g.
UIC vehicle identification number) vehId of vehicle with vehNo==1 is used also as cstId
The documentation for this struct was generated from the following file:
•tau_tti_types.h
4.41 TRDP_XML_DOC_HANDLE_T Struct Reference
Parsed XML document handle.
#include <tau_xml.h>
Data Fields
• struct XML_HANDLE ∗pXmlDocument
XML document context.
4.41.1 Detailed Description
Parsed XML document handle.
The documentation for this struct was generated from the following file:
•tau_xml.h
4.42 VOS_SOCK_OPT_T Struct Reference
Common socket options.
#include <vos_sock.h>
Generated by Doxygen

58 Data Structure Documentation
Data Fields
• UINT8 qos
quality/type of service 0...7
• UINT8 ttl
time to live for unicast (default 64)
• UINT8 ttl_multicast
time to live for multicast
• BOOL8 reuseAddrPort
allow reuse of address and port
• BOOL8 nonBlocking
use non blocking calls
• BOOL8 no_mc_loop
no multicast loop back
• BOOL8 no_udp_crc
supress udp crc computation
4.42.1 Detailed Description
Common socket options.
The documentation for this struct was generated from the following file:
•vos_sock.h
4.43 VOS_VERSION_T Struct Reference
Version information.
#include <vos_types.h>
Data Fields
• UINT8 ver
Version - incremented for incompatible changes.
• UINT8 rel
Release - incremented for compatible changes.
• UINT8 upd
Update - incremented for bug fixes.
• UINT8 evo
Evolution - incremented for build.
4.43.1 Detailed Description
Version information.
The documentation for this struct was generated from the following file:
•vos_types.h
Generated by Doxygen

Chapter 5
File Documentation
5.1 iec61375-2-3.h File Reference
All definitions from IEC 61375-2-3.
This graph shows which files directly or indirectly include this file:
iec61375-2-3.h
trdp_types.h
tau_ctrl.h
tau_ctrl.c
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_marshall.c
tau_xml.h
tau_xml.c
trdp_if_light.h
trdp_pdcom.c
trdp_private.h
tau_cstinfo.c
tau_tti.c
tau_dnr.c trdp_if.c
trdp_stats.h
trdp_stats.c
trdp_if.h
trdp_mdcom.c trdp_utils.c
trdp_utils.h trdp_xml.htrdp_pdcom.htrdp_mdcom.h
trdp_xml.c
Macros
• #define ETB_WAIT_TIMER_VALUE 5u /∗Compute train dir. IEC61375-2-3 Ch. 5.3.2.3 ∗/
Time out values (in seconds)
• #define TRDP_PD_UDP_PORT 17224u
TRDP defines (from former trpd_proto.h)
• #define TRDP_MD_UDP_PORT 17225u
IANA assigned message data UDP port.
• #define TRDP_MD_TCP_PORT 17225u
IANA assigned message data TCP port.
• #define TRDP_PROTO_VER 0x0100u
Protocol version.
• #define TRDP_PROTOCOL_VERSION_CHECK_MASK 0xFF00u
Version check, two digits are relevant.
• #define TRDP_SESS_ID_SIZE 16u
Session ID (UUID) size in MD header.
• #define TRDP_USR_URI_SIZE 32u
max.
• #define TRDP_MD_INFINITE_TIME (0)

60 File Documentation
Definitions for time out behaviour accd.
• #define TRDP_MD_DEFAULT_REPLY_TIMEOUT 5000000u
Default MD communication parameters.
• #define TRDP_MD_DEFAULT_CONFIRM_TIMEOUT 1000000u
[us] default confirm time out 1s
• #define TRDP_MD_DEFAULT_CONNECTION_TIMEOUT 60000000u
[us] Socket connection time out 1min
• #define TRDP_MD_DEFAULT_SENDING_TIMEOUT 5000000u
[us] Socket sending time out 5s
• #define TRDP_PD_DEFAULT_QOS 5u
Default PD communication parameters.
• #define TRDP_PD_DEFAULT_TIMEOUT 100000u
[us] 100ms default PD timeout
• #define TRDP_PROCESS_DEFAULT_CYCLE_TIME 10000u
Default TRDP process options.
• #define TRDP_PROCESS_DEFAULT_PRIORITY 64u
Default priority of TRDP process.
• #define TRDP_PROCESS_DEFAULT_OPTIONS TRDP_OPTION_TRAFFIC_SHAPING
Default options for TRDP process.
• #define TRDP_MIN_PD_HEADER_SIZE sizeof(PD_HEADER_T)
PD packet properties.
• #define TRDP_MAX_PD_DATA_SIZE 1432u
PD data.
• #define TRDP_MAX_MD_DATA_SIZE 65388u
MD packet properties.
• #define TRDP_MAX_MD_RETRIES 2u
Maximum values.
• #define TRDP_MAX_LABEL_LEN 16u
label length incl.
• #define TRDP_MAX_URI_USER_LEN (2u ∗TRDP_MAX_LABEL_LEN)
URI user part excl.
• #define TRDP_MAX_URI_HOST_LEN (4u ∗TRDP_MAX_LABEL_LEN)
URI host part length excl.
• #define TRDP_MAX_URI_LEN ((6u ∗TRDP_MAX_LABEL_LEN) + 8u)
URI length excl.
• #define TRDP_MAX_FILE_NAME_LEN 128u
path and file name length incl.
• #define TRDP_VAR_SIZE 0u
Variable size dataset.
• #define TRDP_MSG_PD 0x5064u
Message Types.
• #define TRDP_MSG_PP 0x5070u
'Pp' PD Data (Pull Reply)
• #define TRDP_MSG_PR 0x5072u
'Pr' PD Request
• #define TRDP_MSG_PE 0x5065u
'Pe' PD Error
• #define TRDP_MSG_MN 0x4D6Eu
'Mn' MD Notification (Request w/o reply)
• #define TRDP_MSG_MR 0x4D72u
'Mr' MD Request with reply
Generated by Doxygen

5.1 iec61375-2-3.h File Reference 61
• #define TRDP_MSG_MP 0x4D70u
'Mp' MD Reply without confirmation
• #define TRDP_MSG_MQ 0x4D71u
'Mq' MD Reply with confirmation
• #define TRDP_MSG_MC 0x4D63u
'Mc' MD Confirm
• #define TRDP_MSG_ME 0x4D65u
'Me' MD Error
• #define ETB0_ALL_END_DEVICES_IP "239.193.0.0"
from Table 22
• #define ETB_CTRL_COMID 1u
Reserved COMIDs in the range 1 ...
• #define ETB_CTRL_CYC 500u
[ms] 0.5s
• #define ETB_CTRL_TO 3000u
[ms]3s
• #define TRDP_ETBCTRL_COMID ETB_CTRL_COMID
alternative name
• #define CSTINFO_COMID 2u
Consist Info telegram (Message data notification 'Mn')
• #define TRDP_CSTINFO_COMID CSTINFO_COMID
alternative name
• #define CSTINFOCTRL_COMID 3u
Consist Info control/request telegram (Message data notification 'Mn')
• #define TRDP_CSTINFOCTRL_COMID CSTINFOCTRL_COMID
alternative name
• #define TRDP_COMID_ECHO 10u
Reserved in Annex D & E.
• #define TTDB_STATUS_COMID 100u
TTDB manager telegram PD.
• #define TTDB_STATUS_CYC 1000u
[ms] Push
• #define TTDB_STATUS_TO 5000u
[ms] 5s
• #define TTDB_OP_DIR_INFO_COMID 101u
TTDB manager telegram MD: Push the OP_TRAIN_DIRECTORY.
• #define TTDB_OP_DIR_INFO_DS "TTDB_OP_TRAIN_DIRECTORY_INFO"
OP_TRAIN_DIRECTORY.
• #define TTDB_TRN_DIR_REQ_COMID 102u
TTDB manager telegram MD: Get the TRAIN_DIRECTORY.
• #define TTDB_TRN_DIR_REQ_TO 3000u
3s timeout
• #define TTDB_TRN_DIR_REP_COMID 103u
MD reply.
• #define TTDB_TRN_DIR_REP_DS "TTDB_TRAIN_DIRECTORY_INFO_REPLY"
TRAIN_DIRECTORY.
• #define TTDB_STAT_CST_REQ_COMID 104u
TTDB manager telegram MD: Get the static consist information.
• #define TTDB_STAT_CST_REQ_TO 3000u
[ms] 3s timeout
• #define TTDB_STAT_CST_REP_DS "TTDB_STATIC_CONSIST_INFO_REPLY"
Generated by Doxygen

62 File Documentation
CONSIST_INFO.
• #define TTDB_NET_DIR_REQ_COMID 106u
TTDB manager telegram MD: Get the NETWORK_TRAIN_DIRECTORY.
• #define TTDB_NET_DIR_REQ_TO 3000u
[ms] 3s timeout
• #define TTDB_NET_DIR_REP_COMID 107u
MD reply.
• #define TTDB_NET_DIR_REP_DS "TTDB_TRAIN_NETWORK_DIRECTORY_INFO_REPLY"
TRAIN_NETWORK_DIRECTORY.
• #define TTDB_OP_DIR_INFO_REQ_COMID 108u
TTDB manager telegram MD: Get the OP_TRAIN_DIRECTORY.
• #define TTDB_OP_DIR_INFO_REQ_TO 3000u
[ms] 3s timeout
• #define TTDB_OP_DIR_INFO_REP_DS "TTDB_OP_TRAIN_DIR_INFO"
OP_TRAIN_DIRECTORY.
• #define TTDB_READ_CMPLT_REQ_COMID 110u
TTDB manager telegram MD: Get the TTDB.
• #define TTDB_READ_CMPLT_REQ_DS "TTDB_READ_COMPLETE_REQUEST"
ETBx.
• #define TTDB_READ_CMPLT_REQ_TO 3000u
[ms] 3s timeout
• #define TTDB_READ_CMPLT_REP_COMID 111u
MD reply.
• #define TTDB_READ_CMPLT_REP_DS "TTDB_READ_COMPLETE_REPLY"
TRDP_READ_COMPLETE_REPLY_T.
• #define ECSP_CTRL_COMID 120u
ECSP Control telegram.
• #define ECSP_CTRL_CYC 1000u
[ms] 1s
• #define ECSP_CTRL_TO 5000u
[ms] 5s
• #define ECSP_CTRL_DEST_URI "devECSP.anyVeh.lCst.lClTrn.lTrn"
10.0.0.1
• #define TRDP_ECSP_CTRL_COMID ECSP_CTRL_COMID
Etb control message.
• #define ECSP_STATUS_COMID 121u
ECSP status telegram.
• #define ECSP_STATUS_CYC 1000u
[ms] 1s
• #define ECSP_STATUS_TO 5000u
[ms] 5s
• #define ECSP_STATUS_DEST_URI "devECSC.anyVeh.lCst.lClTrn.lTrn"
10.0.0.100
• #define ECSP_CONF_REQ_COMID 122u
ECSP Confirmation Request telegram MD:
• #define ECSP_CONF_REQ_TO 3000u
[ms]
• #define ECSP_CONF_REQ_URI "devECSP.anyVeh.lCst.lClTrn.lTrn"
10.0.0.1
• #define ECSP_CONF_REP_TO 3000u
[ms]
Generated by Doxygen

5.1 iec61375-2-3.h File Reference 63
• #define ETBN_CTRL_REQ_COMID 130u
ETBN Control & Status Telegram MD.
• #define ETBN_CTRL_REQ_DS "ETBN_CTRL"
ETBx.
• #define ETBN_CTRL_REQ_TO 3000u
[ms] 3s timeout
• #define ETBN_CTRL_REP_DS "ETBN_STATUS"
ETBN status reply.
• #define ETBN_TRN_NET_DIR_REQ_COMID 132u
ETBN Control Telegram MD.
• #define ETBN_TRN_NET_DIR_REQ_TO 3000u
[ms] 3s timeout
• #define TCN_DNS_REQ_COMID 140u
TCN-DNS Request Telegram MD.
• #define TCN_DNS_REQ_TO 3000u
[ms] 3s timeout
• #define TCN_DNS_REQ_TO_US 3000000u
[us] 3s timeout
• #define TRDP_ETBCTRL_DSID 1u
TRDP reserved data set ids in the range 1 ...
5.1.1 Detailed Description
All definitions from IEC 61375-2-3.
Note
Project: TCNOpen TRDP
Author
Bernd Loehr, NewTec GmbH, 2015-09-11
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was
not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
Id
iec61375-2-3.h 1755 2018-08-07 12:10:03Z bloehr
BL 2018-01-29: Ticket #188 Typo in the TRDP_VAR_SIZE definition
AHW 2017-11-05: Ticket #179 Max. number of retries of a MD request needs to be checked
AHW 2017-05-22: Ticket #159 Infinit timeout at TRDB level is 0 acc. standard
BL 2017-04-28: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h
BL 2017-02-08: Ticket #142: Compiler warnings / MISRA-C 2012 issues
BL 2016-05-04: Ticket #118: Fix defines to match IEC IS 2015
from trdp_proto.h
BL 2017-03-13: Ticket #154 ComIds and DSIds literals (#define TRDP_...) in trdp_proto.h too long
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-08: Ticket #142: Compiler warnings / MISRA-C 2012 issues
BL 2016-11-09: Default PD/MD parameter defines moved from trdp_private.h
BL 2016-06-08: Ticket #120: ComIds for statistics changed to proposed 61375 errata
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
Generated by Doxygen

64 File Documentation
5.1.2 Macro Definition Documentation
5.1.2.1 ETB_CTRL_COMID
#define ETB_CTRL_COMID 1u
Reserved COMIDs in the range 1 ...
1000 ETB Control telegram
5.1.2.2 TRDP_ETBCTRL_DSID
#define TRDP_ETBCTRL_DSID 1u
TRDP reserved data set ids in the range 1 ...
1000
5.1.2.3 TRDP_MAX_FILE_NAME_LEN
#define TRDP_MAX_FILE_NAME_LEN 128u
path and file name length incl.
terminating '0'
5.1.2.4 TRDP_MAX_LABEL_LEN
#define TRDP_MAX_LABEL_LEN 16u
label length incl.
terminating '0'
5.1.2.5 TRDP_MAX_MD_DATA_SIZE
#define TRDP_MAX_MD_DATA_SIZE 65388u
MD packet properties.
MD payload size
Generated by Doxygen

5.1 iec61375-2-3.h File Reference 65
5.1.2.6 TRDP_MAX_URI_HOST_LEN
#define TRDP_MAX_URI_HOST_LEN (4u ∗TRDP_MAX_LABEL_LEN)
URI host part length excl.
terminating '0'
5.1.2.7 TRDP_MAX_URI_LEN
#define TRDP_MAX_URI_LEN ((6u ∗TRDP_MAX_LABEL_LEN) + 8u)
URI length excl.
terminating '0' and 1 padding byte
5.1.2.8 TRDP_MAX_URI_USER_LEN
#define TRDP_MAX_URI_USER_LEN (2u ∗TRDP_MAX_LABEL_LEN)
URI user part excl.
terminating '0'
5.1.2.9 TRDP_MD_DEFAULT_REPLY_TIMEOUT
#define TRDP_MD_DEFAULT_REPLY_TIMEOUT 5000000u
Default MD communication parameters.
[us] default reply timeout 5s
5.1.2.10 TRDP_MD_INFINITE_TIME
#define TRDP_MD_INFINITE_TIME (0)
Definitions for time out behaviour accd.
table A.18
5.1.2.11 TRDP_MIN_PD_HEADER_SIZE
#define TRDP_MIN_PD_HEADER_SIZE sizeof(PD_HEADER_T)
PD packet properties.
PD header size with FCS
Generated by Doxygen

66 File Documentation
5.1.2.12 TRDP_MSG_PD
#define TRDP_MSG_PD 0x5064u
Message Types.
'Pd' PD Data
5.1.2.13 TRDP_PD_UDP_PORT
#define TRDP_PD_UDP_PORT 17224u
TRDP defines (from former trpd_proto.h)
IANA assigned process data UDP port
5.1.2.14 TRDP_PROCESS_DEFAULT_CYCLE_TIME
#define TRDP_PROCESS_DEFAULT_CYCLE_TIME 10000u
Default TRDP process options.
[us] 10ms cycle time for TRDP process
5.1.2.15 TRDP_USR_URI_SIZE
#define TRDP_USR_URI_SIZE 32u
max.
User URI size in MD header
5.1.2.16 TTDB_NET_DIR_REQ_COMID
#define TTDB_NET_DIR_REQ_COMID 106u
TTDB manager telegram MD: Get the NETWORK_TRAIN_DIRECTORY.
MD request
5.1.2.17 TTDB_OP_DIR_INFO_COMID
#define TTDB_OP_DIR_INFO_COMID 101u
TTDB manager telegram MD: Push the OP_TRAIN_DIRECTORY.
MD notification
Generated by Doxygen

5.2 tau_cstinfo.c File Reference 67
5.1.2.18 TTDB_STAT_CST_REQ_COMID
#define TTDB_STAT_CST_REQ_COMID 104u
TTDB manager telegram MD: Get the static consist information.
MD request
5.1.2.19 TTDB_TRN_DIR_REQ_COMID
#define TTDB_TRN_DIR_REQ_COMID 102u
TTDB manager telegram MD: Get the TRAIN_DIRECTORY.
MD request
5.2 tau_cstinfo.c File Reference
Functions for consist information access.
#include <string.h>
#include <stdio.h>
#include "trdp_if_light.h"
#include "tau_tti.h"
#include "vos_sock.h"
Include dependency graph for tau_cstinfo.c:
tau_cstinfo.c
string.h stdio.h
trdp_if_light.h
vos_sock.h
tau_tti.h
trdp_types.h
vos_types.h
vos_mem.h iec61375-2-3.h
stdint.h
vos_thread.hvos_private.h
tau_tti_types.h
Generated by Doxygen

68 File Documentation
This graph shows which files directly or indirectly include this file:
tau_cstinfo.c
tau_tti.c
Functions
• UINT16 cstInfoGetPropSize (TRDP_CONSIST_INFO_T ∗pCstInfo)
Getter function to retrieve a value from the consist info telegram value.
5.2.1 Detailed Description
Functions for consist information access.
Note
Project: TCNOpen TRDP prototype stack
Author
B. Loehr (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2015. All rights reserved.
Id
tau_cstinfo.c 1646 2017-07-05 14:34:41Z bloehr
BL 2017-05-08: Compiler warnings, doxygen comment errors
BL 2017-04-28: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h
BL 2016-02-24: C89 compatibility (thanks to Robert)
5.2.2 Function Documentation
5.2.2.1 cstInfoGetPropSize()
UINT16 cstInfoGetPropSize (
TRDP_CONSIST_INFO_T ∗pCstInfo )
Getter function to retrieve a value from the consist info telegram value.
Generated by Doxygen

5.3 tau_ctrl.c File Reference 69
Parameters
in pCstInfo pointer to packed consist info in network byte order
Return values
len
Here is the call graph for this function:
cstInfoGetPropSize vos_ntohs
5.3 tau_ctrl.c File Reference
Functions for train switch control.
#include <string.h>
#include <stdio.h>
#include "trdp_types.h"
#include "trdp_utils.h"
#include "trdp_if_light.h"
#include "tau_ctrl.h"
Generated by Doxygen

70 File Documentation
Include dependency graph for tau_ctrl.c:
tau_ctrl.c
string.h
stdio.h trdp_types.h
trdp_utils.h
trdp_if_light.h
tau_ctrl.h
vos_types.h
vos_mem.hvos_sock.h iec61375-2-3.h
stdint.h
vos_thread.hvos_private.h
trdp_private.hvos_utils.h
stddef.h
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
Functions
• EXT_DECL TRDP_ERR_T tau_initEcspCtrl (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_←-
TecspIpAddr)
Function to init ECSP control interface.
• EXT_DECL TRDP_ERR_T tau_terminateEcspCtrl (TRDP_APP_SESSION_T appHandle)
Function to close ECSP control interface.
• EXT_DECL TRDP_ERR_T tau_setEcspCtrl (TRDP_APP_SESSION_T appHandle, TRDP_ECSP_CTRL_T
∗pEcspCtrl)
Function to set ECSP control information.
• EXT_DECL TRDP_ERR_T tau_getEcspStat (TRDP_APP_SESSION_T appHandle, TRDP_ECSP_STAT_T
∗pEcspStat, TRDP_PD_INFO_T ∗pPdInfo)
Function to get ECSP status information.
• EXT_DECL TRDP_ERR_T tau_requestEcspConfirm (TRDP_APP_SESSION_T appHandle, const void
∗pUserRef, TRDP_MD_CALLBACK_T pfCbFunction, TRDP_ECSP_CONF_REQUEST_T ∗pEcspConf←-
Request)
Function for ECSP confirmation/correction request, reply will be received via call back.
5.3.1 Detailed Description
Functions for train switch control.
Note
Project: TCNOpen TRDP prototype stack
Generated by Doxygen

5.3 tau_ctrl.c File Reference 71
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_ctrl.c 1711 2018-03-06 16:11:32Z bloehr
BL 2018-03-06: Ticket #101 Optional callback function on PD send
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2017-04-28: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h
5.3.2 Function Documentation
5.3.2.1 tau_getEcspStat()
EXT_DECL TRDP_ERR_T tau_getEcspStat (
TRDP_APP_SESSION_T appHandle,
TRDP_ECSP_STAT_T ∗pEcspStat,
TRDP_PD_INFO_T ∗pPdInfo )
Function to get ECSP status information.
Parameters
in appHandle Application handle
in,out pEcspStat Pointer to the ECSP status structure
in,out pPdInfo Pointer to PD status information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
5.3.2.2 tau_initEcspCtrl()
EXT_DECL TRDP_ERR_T tau_initEcspCtrl (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T ecspIpAddr )
Generated by Doxygen

72 File Documentation
Function to init ECSP control interface.
Generated by Doxygen

5.3 tau_ctrl.c File Reference 73
Parameters
in appHandle Application handle
in ecspIpAddr ECSP address
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
5.3.2.3 tau_requestEcspConfirm()
EXT_DECL TRDP_ERR_T tau_requestEcspConfirm (
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
TRDP_ECSP_CONF_REQUEST_T ∗pEcspConfRequest )
Function for ECSP confirmation/correction request, reply will be received via call back.
Parameters
in appHandle Application Handle
in pUserRef user reference returned with reply
in pfCbFunction Pointer to callback function, NULL for default
in pEcspConfRequest Pointer to confirmation data
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
5.3.2.4 tau_setEcspCtrl()
EXT_DECL TRDP_ERR_T tau_setEcspCtrl (
TRDP_APP_SESSION_T appHandle,
TRDP_ECSP_CTRL_T ∗pEcspCtrl )
Function to set ECSP control information.
Parameters
in appHandle Application handle
in pEcspCtrl Pointer to the ECSP control structure
Generated by Doxygen

74 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
5.3.2.5 tau_terminateEcspCtrl()
EXT_DECL TRDP_ERR_T tau_terminateEcspCtrl (
TRDP_APP_SESSION_T appHandle )
Function to close ECSP control interface.
Parameters
in appHandle Application handle
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_UNKNOWN_ERR undefined error
5.4 tau_ctrl.h File Reference
TRDP utility interface definitions.
#include "trdp_types.h"
#include "tau_tti.h"
#include "tau_ctrl_types.h"
Generated by Doxygen

5.4 tau_ctrl.h File Reference 75
Include dependency graph for tau_ctrl.h:
tau_ctrl.h
trdp_types.h
tau_tti.h
tau_ctrl_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
tau_tti_types.h
Generated by Doxygen

76 File Documentation
This graph shows which files directly or indirectly include this file:
tau_ctrl.h
tau_ctrl.c
Functions
• EXT_DECL TRDP_ERR_T tau_initEcspCtrl (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_←-
TecspIpAddr)
Function to init ECSP control interface.
• EXT_DECL TRDP_ERR_T tau_terminateEcspCtrl (TRDP_APP_SESSION_T appHandle)
Function to close ECSP control interface.
• EXT_DECL TRDP_ERR_T tau_setEcspCtrl (TRDP_APP_SESSION_T appHandle, TRDP_ECSP_CTRL_T
∗pEcspCtrl)
Function to set ECSP control information.
• EXT_DECL TRDP_ERR_T tau_getEcspStat (TRDP_APP_SESSION_T appHandle, TRDP_ECSP_STAT_T
∗pEcspStat, TRDP_PD_INFO_T ∗pPdInfo)
Function to get ECSP status information.
• EXT_DECL TRDP_ERR_T tau_requestEcspConfirm (TRDP_APP_SESSION_T appHandle, const void
∗pUserRef, TRDP_MD_CALLBACK_T pfCbFunction, TRDP_ECSP_CONF_REQUEST_T ∗pEcspConf←-
Request)
Function for ECSP confirmation/correction request, reply will be received via call back.
5.4.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• ETB control
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_ctrl.h 1483 2015-12-16 14:43:30Z bloehr
Generated by Doxygen

5.4 tau_ctrl.h File Reference 77
5.4.2 Function Documentation
5.4.2.1 tau_getEcspStat()
EXT_DECL TRDP_ERR_T tau_getEcspStat (
TRDP_APP_SESSION_T appHandle,
TRDP_ECSP_STAT_T ∗pEcspStat,
TRDP_PD_INFO_T ∗pPdInfo )
Function to get ECSP status information.
Parameters
in appHandle Application Handle
in,out pEcspStat Pointer to the ECSP status structure
in,out pPdInfo Pointer to PD status information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Application handle
in,out pEcspStat Pointer to the ECSP status structure
in,out pPdInfo Pointer to PD status information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
5.4.2.2 tau_initEcspCtrl()
EXT_DECL TRDP_ERR_T tau_initEcspCtrl (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T ecspIpAddr )
Function to init ECSP control interface.
Parameters
in appHandle Application handle
in ecspIpAddr ECSP address
Generated by Doxygen

78 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
5.4.2.3 tau_requestEcspConfirm()
EXT_DECL TRDP_ERR_T tau_requestEcspConfirm (
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
TRDP_ECSP_CONF_REQUEST_T ∗pEcspConfRequest )
Function for ECSP confirmation/correction request, reply will be received via call back.
Parameters
in appHandle Application Handle
in pUserRef user reference returned with reply
in pfCbFunction Pointer to callback function, NULL for default
in pEcspConfRequest Pointer to confirmation data
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
5.4.2.4 tau_setEcspCtrl()
EXT_DECL TRDP_ERR_T tau_setEcspCtrl (
TRDP_APP_SESSION_T appHandle,
TRDP_ECSP_CTRL_T ∗pEcspCtrl )
Function to set ECSP control information.
Parameters
in appHandle Application handle
in pEcspCtrl Pointer to the ECSP control structure
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

5.5 tau_ctrl_types.h File Reference 79
5.4.2.5 tau_terminateEcspCtrl()
EXT_DECL TRDP_ERR_T tau_terminateEcspCtrl (
TRDP_APP_SESSION_T appHandle )
Function to close ECSP control interface.
Parameters
in appHandle Application handle
Return values
TRDP_NO_ERR no error
TRDP_UNKNOWN_ERR undefined error
Parameters
in appHandle Application handle
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR module not initialised
TRDP_UNKNOWN_ERR undefined error
5.5 tau_ctrl_types.h File Reference
TRDP utility interface definitions.
#include "trdp_types.h"
#include "tau_tti.h"
Generated by Doxygen

80 File Documentation
Include dependency graph for tau_ctrl_types.h:
tau_ctrl_types.h
trdp_types.h
tau_tti.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
tau_tti_types.h
Generated by Doxygen

5.5 tau_ctrl_types.h File Reference 81
This graph shows which files directly or indirectly include this file:
tau_ctrl_types.h
tau_ctrl.h
tau_ctrl.c
Data Structures
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
5.5.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following
• ETB control type definitions acc. to IEC61375-2-3
Generated by Doxygen

82 File Documentation
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_ctrl_types.h 1763 2018-09-21 16:03:13Z ahweiss
BL 2017-11-13: Ticket #176 TRDP_LABEL_T breaks field alignment -> TRDP_NET_LABEL_T
BL 2017-03-09: Ticket #131 errata: Last change undone (leadVehOfCst defined in corrigendum)
BL 2017-02-09: Ticket #131 TRDP_ECSP_CTRL_T in the tau_ctrl_types.h should not include the leadVehOfCst field
5.6 tau_dnr.c File Reference
Functions for domain name resolution.
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include "tau_tti.h"
#include "tau_dnr.h"
#include "tau_dnr_types.h"
#include "trdp_utils.h"
#include "trdp_if_light.h"
#include "vos_mem.h"
#include "vos_sock.h"
Include dependency graph for tau_dnr.c:
tau_dnr.c
string.h
stdio.h
ctype.htau_tti.h
vos_mem.hvos_sock.h
tau_dnr.h tau_dnr_types.h
trdp_utils.h trdp_if_light.h
trdp_types.h
tau_tti_types.h
vos_types.h
iec61375-2-3.h
stdint.h
vos_thread.hvos_private.h
trdp_private.hvos_utils.h
stddef.h
Generated by Doxygen

5.6 tau_dnr.c File Reference 83
Data Structures
• struct DNS_HEADER
DNS header structure.
Macros
• #define TAU_MAX_NO_IF 4u
Default interface should be in the first 4.
• #define TAU_DNS_TIME_OUT_LONG 10u
Timeout in seconds for DNS server reply, if no hosts file provided.
• #define TAU_DNS_TIME_OUT_SHORT 1u
Timeout in seconds for DNS server reply, if hosts file was provided.
• #define TAU_MAX_HOST_URI_LEN 80u
Including EOS!
Typedefs
• typedef struct DNS_HEADER TAU_DNS_HEADER_T
DNS header structure.
Functions
• EXT_DECL TRDP_ERR_T tau_initDnr (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T dnsIp←-
Addr, UINT16 dnsPort, const CHAR8 ∗pHostsFileName, TRDP_DNR_OPTS_T dnsOptions)
Function to init the DNR subsystem Initialize the DNR resolver.
• EXT_DECL void tau_deInitDnr (TRDP_APP_SESSION_T appHandle)
Function to deinit DNR.
• EXT_DECL TRDP_DNR_STATE_T tau_DNRstatus (TRDP_APP_SESSION_T appHandle)
Function to get the status of DNR.
• EXT_DECL TRDP_IP_ADDR_T tau_getOwnAddr (TRDP_APP_SESSION_T appHandle)
Function to get the own IP address.
• EXT_DECL TRDP_ERR_T tau_uri2Addr (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T ∗p←-
Addr, const TRDP_URI_T pUri)
Function to convert a URI to an IP address.
• EXT_DECL TRDP_ERR_T tau_addr2Uri (TRDP_APP_SESSION_T appHandle, TRDP_URI_HOST_T pUri,
TRDP_IP_ADDR_T addr)
Function to convert an IP address to a URI.
5.6.1 Detailed Description
Functions for domain name resolution.
Note
Project: TCNOpen TRDP prototype stack
Generated by Doxygen

84 File Documentation
Author
B. Loehr (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_dnr.c 1763 2018-09-21 16:03:13Z ahweiss
BL 2018-08-07: Ticket #183 tau_getOwnIds declared but not defined
BL 2018-08-06: Ticket #210 IF condition for DNS Options incorrect in tau_uri2Addr()
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2018-05-03: Ticket #193 Unused parameter warnings
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2017-07-25: Ticket #125: tau_dnr: TCN DNS support missing
BL 2017-05-08: Compiler warnings
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-08: Ticket #124 tau_dnr: Cache keeps etbTopoCount only
BL 2015-12-14: Ticket #8: DNR client
5.6.2 Function Documentation
5.6.2.1 tau_addr2Uri()
EXT_DECL TRDP_ERR_T tau_addr2Uri (
TRDP_APP_SESSION_T appHandle,
TRDP_URI_HOST_T pUri,
TRDP_IP_ADDR_T addr )
Function to convert an IP address to a URI.
Receives an IP-Address and translates it into the host part of the corresponding URI. Both unicast and multicast
addresses are accepted.
Parameters
in appHandle Handle returned by tlc_openSession()
out pUri Pointer to a string to return the URI host part
in addr IP address, 0==own address
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

5.6 tau_dnr.c File Reference 85
5.6.2.2 tau_deInitDnr()
EXT_DECL void tau_deInitDnr (
TRDP_APP_SESSION_T appHandle )
Function to deinit DNR.
Release any resources allocated by DNR.
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.6.2.3 tau_DNRstatus()
EXT_DECL TRDP_DNR_STATE_T tau_DNRstatus (
TRDP_APP_SESSION_T appHandle )
Function to get the status of DNR.
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
TRDP_DNR_NOT_AVAILABLE no error
TRDP_DNR_UNKNOWN enabled, but cache is empty
TRDP_DNR_ACTIVE enabled, cache has values
TRDP_DNR_HOSTSFILE enabled, hostsfile used (static mode)
5.6.2.4 tau_getOwnAddr()
EXT_DECL TRDP_IP_ADDR_T tau_getOwnAddr (
TRDP_APP_SESSION_T appHandle )
Function to get the own IP address.
Returns the IP address set by openSession. If it was 0 (INADDR_ANY), the address of the default adapter will be
returned.
Generated by Doxygen

86 File Documentation
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
own IP address
5.6.2.5 tau_initDnr()
EXT_DECL TRDP_ERR_T tau_initDnr (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T dnsIpAddr,
UINT16 dnsPort,
const CHAR8 ∗pHostsFileName,
TRDP_DNR_OPTS_T dnsOptions )
Function to init the DNR subsystem Initialize the DNR resolver.
Function to init DNR.
Depending on the supplied options, three operational modes are supported:
1. TRDP_DNR_COMMON_THREAD (default) Expect tlc_process running in a different, separate thread
2. TRDP_DNR_OWN_THREAD For single threaded systems only! Internally call tlc_process()
3. TRDP_DNR_STANDARD_DNS Use standard DNS instead of TCN-DNS. Default dnsPort (= 0) for TCN-DNS
is 17225, for standard DNS it is 53.
Parameters
in appHandle Handle returned by tlc_openSession().
in dnsIpAddr DNS/ECSP IP address.
in dnsPort DNS port number.
in pHostsFileName Optional host file name as ECSP replacement/addition.
in dnsOptions Use existing thread (recommended), use own tlc_process loop or use standard DNS
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
<default DNR/ECSP settings
5.6.2.6 tau_uri2Addr()
EXT_DECL TRDP_ERR_T tau_uri2Addr (
TRDP_APP_SESSION_T appHandle,
Generated by Doxygen

5.7 tau_dnr.h File Reference 87
TRDP_IP_ADDR_T ∗pAddr,
const TRDP_URI_T pUri )
Function to convert a URI to an IP address.
Receives an URI as input variable and translates this URI to an IP-Address. The URI may specify either a unicast
or a multicast IP-Address.
Parameters
in appHandle Handle returned by tlc_openSession()
out pAddr Pointer to return the IP address
in pUri Pointer to an URI or an IP Address string, NULL==own URI
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_UNRESOLVED_ERR Could not resolve error
TRDP_TOPO_ERR Cache/DB entry is invalid
5.7 tau_dnr.h File Reference
TRDP utility interface definitions.
Generated by Doxygen

88 File Documentation
#include "trdp_types.h"
Include dependency graph for tau_dnr.h:
tau_dnr.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
tau_dnr.h
tau_dnr.c tau_tti.c
Functions
• EXT_DECL TRDP_ERR_T tau_initDnr (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T dnsIp←-
Addr, UINT16 dnsPort, const CHAR8 ∗pHostsFileName, TRDP_DNR_OPTS_T dnsOptions)
Generated by Doxygen

5.7 tau_dnr.h File Reference 89
Function to init DNR.
• EXT_DECL void tau_deInitDnr (TRDP_APP_SESSION_T appHandle)
Release any resources allocated by DNR.
• EXT_DECL TRDP_DNR_STATE_T tau_DNRstatus (TRDP_APP_SESSION_T appHandle)
Function to get the status of DNR.
• EXT_DECL TRDP_IP_ADDR_T tau_getOwnAddr (TRDP_APP_SESSION_T appHandle)
Function to get the own IP address.
• EXT_DECL TRDP_ERR_T tau_uri2Addr (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T ∗p←-
Addr, const TRDP_URI_T pUri)
Function to convert a URI to an IP address.
• EXT_DECL TRDP_ERR_T tau_addr2Uri (TRDP_APP_SESSION_T appHandle, TRDP_URI_HOST_T pUri,
TRDP_IP_ADDR_T addr)
Function to convert an IP address to a URI.
5.7.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• IP - URI address translation
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_dnr.h 1755 2018-08-07 12:10:03Z bloehr
BL 2018-08-07: Ticket #183 tau_getOwnIds moved here
BL 2017-07-25: Ticket #125: tau_dnr: TCN DNS support missing
BL 2015-12-14: Ticket #8: DNR client
5.7.2 Function Documentation
5.7.2.1 tau_addr2Uri()
EXT_DECL TRDP_ERR_T tau_addr2Uri (
TRDP_APP_SESSION_T appHandle,
TRDP_URI_HOST_T pUri,
TRDP_IP_ADDR_T addr )
Function to convert an IP address to a URI.
Receives an IP-Address and translates it into the host part of the corresponding URI. Both unicast and multicast
addresses are accepted.
Generated by Doxygen

90 File Documentation
Parameters
in appHandle Handle returned by tlc_openSession().
out pUri Pointer to a string to return the URI host part
in addr IP address, 0==own address
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Receives an IP-Address and translates it into the host part of the corresponding URI. Both unicast and multicast
addresses are accepted.
Parameters
in appHandle Handle returned by tlc_openSession()
out pUri Pointer to a string to return the URI host part
in addr IP address, 0==own address
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.7.2.2 tau_deInitDnr()
EXT_DECL void tau_deInitDnr (
TRDP_APP_SESSION_T appHandle )
Release any resources allocated by DNR.
Parameters
in appHandle Handle returned by tlc_openSession().
Return values
none Release any resources allocated by DNR.
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

5.7 tau_dnr.h File Reference 91
5.7.2.3 tau_DNRstatus()
EXT_DECL TRDP_DNR_STATE_T tau_DNRstatus (
TRDP_APP_SESSION_T appHandle )
Function to get the status of DNR.
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
TRDP_DNR_NOT_AVAILABLE no error
TRDP_DNR_UNKNOWN enabled, but cache is empty
TRDP_DNR_ACTIVE enabled, cache has values
TRDP_DNR_HOSTSFILE enabled, hostsfile used (static mode)
5.7.2.4 tau_getOwnAddr()
EXT_DECL TRDP_IP_ADDR_T tau_getOwnAddr (
TRDP_APP_SESSION_T appHandle )
Function to get the own IP address.
Parameters
in appHandle Handle returned by tlc_openSession().
Return values
own IP address
Returns the IP address set by openSession. If it was 0 (INADDR_ANY), the address of the default adapter will be
returned.
Parameters
in appHandle Handle returned by tlc_openSession()
Return values
own IP address
Generated by Doxygen

92 File Documentation
5.7.2.5 tau_initDnr()
EXT_DECL TRDP_ERR_T tau_initDnr (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T dnsIpAddr,
UINT16 dnsPort,
const CHAR8 ∗pHostsFileName,
TRDP_DNR_OPTS_T dnsOptions )
Function to init DNR.
Parameters
in appHandle Handle returned by tlc_openSession().
in dnsIpAddr DNS/ECSP IP address.
in dnsPort DNS port number.
in pHostsFileName Optional host file name as ECSP replacement/addition.
in dnsOptions Use existing thread (recommended), use own tlc_process loop or use standard DNS
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
Function to init DNR.
Depending on the supplied options, three operational modes are supported:
1. TRDP_DNR_COMMON_THREAD (default) Expect tlc_process running in a different, separate thread
2. TRDP_DNR_OWN_THREAD For single threaded systems only! Internally call tlc_process()
3. TRDP_DNR_STANDARD_DNS Use standard DNS instead of TCN-DNS. Default dnsPort (= 0) for TCN-DNS
is 17225, for standard DNS it is 53.
Parameters
in appHandle Handle returned by tlc_openSession().
in dnsIpAddr DNS/ECSP IP address.
in dnsPort DNS port number.
in pHostsFileName Optional host file name as ECSP replacement/addition.
in dnsOptions Use existing thread (recommended), use own tlc_process loop or use standard DNS
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
<default DNR/ECSP settings
Generated by Doxygen

5.8 tau_dnr_types.h File Reference 93
5.7.2.6 tau_uri2Addr()
EXT_DECL TRDP_ERR_T tau_uri2Addr (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T ∗pAddr,
const TRDP_URI_T pUri )
Function to convert a URI to an IP address.
Receives a URI as input variable and translates this URI to an IP-Address. The URI may specify either a unicast or
a multicast IP-Address. The caller may specify a topographic counter, which will be checked.
Parameters
in appHandle Handle returned by tlc_openSession().
out pAddr Pointer to return the IP address
in pUri Pointer to a URI or an IP Address string, NULL==own URI
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Receives an URI as input variable and translates this URI to an IP-Address. The URI may specify either a unicast
or a multicast IP-Address.
Parameters
in appHandle Handle returned by tlc_openSession()
out pAddr Pointer to return the IP address
in pUri Pointer to an URI or an IP Address string, NULL==own URI
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_UNRESOLVED_ERR Could not resolve error
TRDP_TOPO_ERR Cache/DB entry is invalid
5.8 tau_dnr_types.h File Reference
TRDP utility interface definitions.
Generated by Doxygen

94 File Documentation
#include "trdp_types.h"
Include dependency graph for tau_dnr_types.h:
tau_dnr_types.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
tau_dnr_types.h
tau_dnr.c
Data Structures
• struct TCN_URI
Generated by Doxygen

5.8 tau_dnr_types.h File Reference 95
TCN-DNS simplified header structures.
• struct TRDP_DNS_REQUEST
TCN-DNS Request telegram TCN_DNS_REQ_DS.
• struct TRDP_DNS_REPLY
TCN-DNS Reply telegram TCN_DNS_REP_DS.
Typedefs
• typedef struct TCN_URI TCN_URI_T
TCN-DNS simplified header structures.
• typedef struct TRDP_DNS_REQUEST TRDP_DNS_REQUEST_T
TCN-DNS Request telegram TCN_DNS_REQ_DS.
• typedef struct TRDP_DNS_REPLY TRDP_DNS_REPLY_T
TCN-DNS Reply telegram TCN_DNS_REP_DS.
5.8.1 Detailed Description
TRDP utility interface definitions.
This module provides typedefs to the following utilities
• IP - URI address translation
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Löhr (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
NewTec GmbH, 2017. All rights reserved.
Id
BL 2017-11-13: Ticket #176 TRDP_LABEL_T breaks field alignment -> TRDP_NET_LABEL_T
BL 2017-07-25: Ticket #125: TCN-DNR client
Generated by Doxygen

96 File Documentation
5.9 tau_marshall.c File Reference
Marshalling functions for TRDP.
#include <string.h>
#include "trdp_types.h"
#include "trdp_if_light.h"
#include "trdp_utils.h"
#include "vos_mem.h"
#include "tau_marshall.h"
Include dependency graph for tau_marshall.c:
tau_marshall.c
string.h
trdp_types.h
vos_mem.h
trdp_if_light.h
trdp_utils.htau_marshall.h
vos_types.h
vos_sock.hiec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
stdio.h
trdp_private.h vos_utils.h
stddef.h
Data Structures
• struct TAU_MARSHALL_INFO_T
Marshalling info, used to and from wire.
Functions
• EXT_DECL TRDP_ERR_T tau_initMarshall (void ∗∗ppRefCon, UINT32 numComId, TRDP_COMID_DSID←-
_MAP_T ∗pComIdDsIdMap, UINT32 numDataSet, TRDP_DATASET_T ∗pDataset[ ])
Function to initialise the marshalling/unmarshalling.
• EXT_DECL TRDP_ERR_T tau_marshall (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
marshall function.
• EXT_DECL TRDP_ERR_T tau_unmarshall (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
unmarshall function.
• EXT_DECL TRDP_ERR_T tau_marshallDs (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
marshall data set function.
Generated by Doxygen

5.9 tau_marshall.c File Reference 97
• EXT_DECL TRDP_ERR_T tau_unmarshallDs (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
unmarshall data set function.
• EXT_DECL TRDP_ERR_T tau_calcDatasetSize (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 src←-
Size, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
Calculate data set size by given data set id.
• EXT_DECL TRDP_ERR_T tau_calcDatasetSizeByComId (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, U←-
INT32 srcSize, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
Calculate data set size by given ComId.
5.9.1 Detailed Description
Marshalling functions for TRDP.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_marshall.c 1748 2018-07-13 15:59:36Z bloehr
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
SW 2018-06-12: Ticket #203 Incorrect unmarshalling of datasets containing TIMEDATE64 array
BL 2018-05-17: Ticket #197 Incorrect Marshalling/Unmarshalling for nested datasets
BL 2018-05-15: Wrong source size/range should not lead to marshalling error, check discarded
BL 2018-05-03: Ticket #193 Unused parameter warnings
BL 2018-05-02: Ticket #188 Typo in the TRDP_VAR_SIZE definition
BL 2017-05-08: Compiler warnings, MISRA-C
BL 2017-05-08: Ticket #156 Recursion counter never decremented (+ compiler warnings, MISRA)
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings), alignment casts fixed
BL 2016-02-11: Ticket #108: missing initialisation of size-pointer
BL 2016-02-04: Ticket #109: size_marshall -> size_unmarshall
BL 2016-02-03: Ticket #108: Uninitialized info variable
BL 2015-12-14: Ticket #33: source size check for marshalling
5.9.2 Function Documentation
5.9.2.1 tau_calcDatasetSize()
EXT_DECL TRDP_ERR_T tau_calcDatasetSize (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
Calculate data set size by given data set id.
Generated by Doxygen

98 File Documentation
Parameters
in pRefCon Pointer to user context
in dsId Dataset id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.9.2.2 tau_calcDatasetSizeByComId()
EXT_DECL TRDP_ERR_T tau_calcDatasetSizeByComId (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
Calculate data set size by given ComId.
Parameters
in pRefCon Pointer to user context
in comId ComId id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
Generated by Doxygen

5.9 tau_marshall.c File Reference 99
Return values
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.9.2.3 tau_initMarshall()
EXT_DECL TRDP_ERR_T tau_initMarshall (
void ∗∗ ppRefCon,
UINT32 numComId,
TRDP_COMID_DSID_MAP_T ∗pComIdDsIdMap,
UINT32 numDataSet,
TRDP_DATASET_T ∗pDataset[ ] )
Function to initialise the marshalling/unmarshalling.
Types for marshalling / unmarshalling.
The supplied array must be sorted by ComIds. The array must exist during the use of the marshalling functions
(until tlc_terminate()).
Parameters
in,out ppRefCon Returns a pointer to be used for the reference context of
marshalling/unmarshalling
in numComId Number of datasets found in the configuration
in pComIdDsIdMap Pointer to an array of structures of type TRDP_DATASET_T
in numDataSet Number of datasets found in the configuration
in pDataset Pointer to an array of pointers to structures of type TRDP_DATASET_T
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
5.9.2.4 tau_marshall()
EXT_DECL TRDP_ERR_T tau_marshall (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
marshall function.
Generated by Doxygen

100 File Documentation
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.9.2.5 tau_marshallDs()
EXT_DECL TRDP_ERR_T tau_marshallDs (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
marshall data set function.
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
Generated by Doxygen

5.9 tau_marshall.c File Reference 101
Return values
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.9.2.6 tau_unmarshall()
EXT_DECL TRDP_ERR_T tau_unmarshall (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
unmarshall function.
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.9.2.7 tau_unmarshallDs()
EXT_DECL TRDP_ERR_T tau_unmarshallDs (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
Generated by Doxygen

102 File Documentation
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
unmarshall data set function.
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
5.10 tau_marshall.h File Reference
TRDP utility interface definitions.
Generated by Doxygen

5.10 tau_marshall.h File Reference 103
#include "trdp_types.h"
Include dependency graph for tau_marshall.h:
tau_marshall.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
tau_marshall.h
tau_marshall.c tau_tti.c
Functions
• EXT_DECL TRDP_ERR_T tau_initMarshall (void ∗∗ppRefCon, UINT32 numComId, TRDP_COMID_DSID←-
_MAP_T ∗pComIdDsIdMap, UINT32 numDataSet, TRDP_DATASET_T ∗pDataset[ ])
Generated by Doxygen

104 File Documentation
Types for marshalling / unmarshalling.
• EXT_DECL TRDP_ERR_T tau_marshall (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
marshall function.
• EXT_DECL TRDP_ERR_T tau_marshallDs (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
marshall data set function.
• EXT_DECL TRDP_ERR_T tau_unmarshall (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
unmarshall function.
• EXT_DECL TRDP_ERR_T tau_unmarshallDs (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 srcSize,
UINT8 ∗pDest, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
unmarshall data set function.
• EXT_DECL TRDP_ERR_T tau_calcDatasetSize (void ∗pRefCon, UINT32 dsId, UINT8 ∗pSrc, UINT32 src←-
Size, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
Calculate data set size by given data set id.
• EXT_DECL TRDP_ERR_T tau_calcDatasetSizeByComId (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, U←-
INT32 srcSize, UINT32 ∗pDestSize, TRDP_DATASET_T ∗∗ppDSPointer)
Calculate data set size by given ComId.
5.10.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• marshalling/unmarshalling
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_marshall.h 1479 2015-12-14 14:53:45Z bloehr
BL 2015-12-14: Ticket #33: source size check for marshalling
5.10.2 Function Documentation
Generated by Doxygen

5.10 tau_marshall.h File Reference 105
5.10.2.1 tau_calcDatasetSize()
EXT_DECL TRDP_ERR_T tau_calcDatasetSize (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
Calculate data set size by given data set id.
Parameters
in pRefCon Pointer to user context
in dsId Dataset id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR marshalling not initialised
TRDP_PARAM_ERR data set id not existing
Parameters
in pRefCon Pointer to user context
in dsId Dataset id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

106 File Documentation
5.10.2.2 tau_calcDatasetSizeByComId()
EXT_DECL TRDP_ERR_T tau_calcDatasetSizeByComId (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
Calculate data set size by given ComId.
Parameters
in pRefCon Pointer to user context
in comId ComId id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR marshalling not initialised
TRDP_PARAM_ERR data set id not existing
Parameters
in pRefCon Pointer to user context
in comId ComId id to identify the structure out of a configuration
in pSrc Pointer to received original message
in srcSize size of the source buffer
out pDestSize Pointer to the size of the data set
in,out ppDSPointer pointer to pointer to cached dataset, set NULL if not used, set content NULL if
unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

5.10 tau_marshall.h File Reference 107
5.10.2.3 tau_initMarshall()
EXT_DECL TRDP_ERR_T tau_initMarshall (
void ∗∗ ppRefCon,
UINT32 numComId,
TRDP_COMID_DSID_MAP_T ∗pComIdDsIdMap,
UINT32 numDataSet,
TRDP_DATASET_T ∗pDataset[ ] )
Types for marshalling / unmarshalling.
Function to initialise the marshalling/unmarshalling.
Parameters
in,out ppRefCon Returns a pointer to be used for the reference context of
marshalling/unmarshalling
in numComId Number of datasets found in the configuration
in pComIdDsIdMap Pointer to an array of structures of type TRDP_DATASET_T
in numDataSet Number of datasets found in the configuration
in pDataset Pointer to an array of pointers to structures of type TRDP_DATASET_T
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
Types for marshalling / unmarshalling.
The supplied array must be sorted by ComIds. The array must exist during the use of the marshalling functions
(until tlc_terminate()).
Parameters
in,out ppRefCon Returns a pointer to be used for the reference context of
marshalling/unmarshalling
in numComId Number of datasets found in the configuration
in pComIdDsIdMap Pointer to an array of structures of type TRDP_DATASET_T
in numDataSet Number of datasets found in the configuration
in pDataset Pointer to an array of pointers to structures of type TRDP_DATASET_T
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

108 File Documentation
5.10.2.4 tau_marshall()
EXT_DECL TRDP_ERR_T tau_marshall (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
marshall function.
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_INIT_ERR marshalling not initialised
TRDP_COMID_ERR comid not existing
TRDP_PARAM_ERR Parameter error
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

5.10 tau_marshall.h File Reference 109
5.10.2.5 tau_marshallDs()
EXT_DECL TRDP_ERR_T tau_marshallDs (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
marshall data set function.
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_INIT_ERR marshalling not initialised
TRDP_COMID_ERR comid not existing
TRDP_PARAM_ERR Parameter error
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

110 File Documentation
5.10.2.6 tau_unmarshall()
EXT_DECL TRDP_ERR_T tau_unmarshall (
void ∗pRefCon,
UINT32 comId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
unmarshall function.
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_INIT_ERR marshalling not initialised
TRDP_COMID_ERR comid not existing
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

5.10 tau_marshall.h File Reference 111
5.10.2.7 tau_unmarshallDs()
EXT_DECL TRDP_ERR_T tau_unmarshallDs (
void ∗pRefCon,
UINT32 dsId,
UINT8 ∗pSrc,
UINT32 srcSize,
UINT8 ∗pDest,
UINT32 ∗pDestSize,
TRDP_DATASET_T ∗∗ ppDSPointer )
unmarshall data set function.
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_INIT_ERR marshalling not initialised
TRDP_COMID_ERR comid not existing
Parameters
in pRefCon pointer to user context
in dsId Data set id to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDest pointer to a buffer for the treated message
in,out pDestSize size of the provide buffer / size of the treated message
in,out ppDSPointer pointer to pointer to cached dataset set NULL if not used, set content NULL if unknown
Return values
TRDP_INIT_ERR marshalling not initialised
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR Parameter error
TRDP_STATE_ERR Too deep recursion
TRDP_COMID_ERR comid not existing
TRDP_MARSHALLING_ERR dataset/source size mismatch
Generated by Doxygen

112 File Documentation
5.11 tau_tti.c File Reference
Functions for train topology information access.
#include <string.h>
#include <stdio.h>
#include "trdp_if_light.h"
#include "trdp_utils.h"
#include "tau_marshall.h"
#include "tau_tti.h"
#include "vos_sock.h"
#include "tau_dnr.h"
#include "tau_cstinfo.c"
Include dependency graph for tau_tti.c:
tau_tti.c
string.h
stdio.h
trdp_if_light.h
vos_sock.h
trdp_utils.h
tau_marshall.h
tau_tti.h
tau_dnr.htau_cstinfo.c
trdp_types.h
vos_types.h
vos_mem.h iec61375-2-3.h
stdint.h
vos_thread.hvos_private.h
trdp_private.hvos_utils.h
stddef.h
tau_tti_types.h
Macros
• #define TTI_CACHED_CONSISTS 8u
We hold this number of consist infos (ca.
Functions
• EXT_DECL TRDP_ERR_T tau_initTTIaccess (TRDP_APP_SESSION_T appHandle, VOS_SEMA_T user←-
Action, TRDP_IP_ADDR_T ecspIpAddr, CHAR8 ∗hostsFileName)
Function to init TTI access.
• EXT_DECL void tau_deInitTTI (TRDP_APP_SESSION_T appHandle)
Release any resources allocated by TTI Must be called before closing the session.
• EXT_DECL TRDP_ERR_T tau_getOpTrDirectory (TRDP_APP_SESSION_T appHandle, TRDP_OP_TRA←-
IN_DIR_STATE_T ∗pOpTrnDirState, TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir)
Function to retrieve the operational train directory state.
Generated by Doxygen

5.11 tau_tti.c File Reference 113
• EXT_DECL TRDP_ERR_T tau_getOpTrnDirectoryStatusInfo (TRDP_APP_SESSION_T appHandle, TRD←-
P_OP_TRAIN_DIR_STATUS_INFO_T ∗pOpTrnDirStatusInfo)
Function to retrieve the operational train directory state info.
• EXT_DECL TRDP_ERR_T tau_getTrDirectory (TRDP_APP_SESSION_T appHandle, TRDP_TRAIN_DIR←-
_T ∗pTrnDir)
Function to retrieve the train directory.
• EXT_DECL TRDP_ERR_T tau_getStaticCstInfo (TRDP_APP_SESSION_T appHandle, TRDP_CONSIST←-
_INFO_T ∗pCstInfo, TRDP_UUID_T const cstUUID)
Function to retrieve the consist info.
• EXT_DECL TRDP_ERR_T tau_getTTI (TRDP_APP_SESSION_T appHandle, TRDP_OP_TRAIN_DIR_S←-
TATE_T ∗pOpTrnDirState, TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir, TRDP_TRAIN_DIR_T ∗pTrnDir, TRDP←-
_TRAIN_NET_DIR_T ∗pTrnNetDir)
Function to retrieve the operational train directory.
• EXT_DECL TRDP_ERR_T tau_getTrnCstCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pTrnCstCnt)
Function to retrieve the total number of consists in the train.
• EXT_DECL TRDP_ERR_T tau_getTrnVehCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pTrnVehCnt)
Function to retrieve the total number of vehicles in the train.
• EXT_DECL TRDP_ERR_T tau_getCstVehCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pCstVehCnt,
const TRDP_LABEL_T pCstLabel)
Function to retrieve the total number of vehicles in a consist.
• EXT_DECL TRDP_ERR_T tau_getCstFctCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pCstFctCnt,
const TRDP_LABEL_T pCstLabel)
Function to retrieve the total number of functions in a consist.
• EXT_DECL TRDP_ERR_T tau_getCstFctInfo (TRDP_APP_SESSION_T appHandle, TRDP_FUNCTION_←-
INFO_T ∗pFctInfo, const TRDP_LABEL_T pCstLabel, UINT16 maxFctCnt)
Function to retrieve the function information of the consist.
• EXT_DECL TRDP_ERR_T tau_getVehInfo (TRDP_APP_SESSION_T appHandle, TRDP_VEHICLE_INF←-
O_T ∗pVehInfo, const TRDP_LABEL_T pVehLabel, const TRDP_LABEL_T pCstLabel)
Function to retrieve the vehicle information of a consist's vehicle.
• EXT_DECL TRDP_ERR_T tau_getCstInfo (TRDP_APP_SESSION_T appHandle, TRDP_CONSIST_INF←-
O_T ∗pCstInfo, const TRDP_LABEL_T pCstLabel)
Function to retrieve the consist information of a train's consist.
• EXT_DECL TRDP_ERR_T tau_getVehOrient (TRDP_APP_SESSION_T appHandle, UINT8 ∗pVehOrient,
UINT8 ∗pCstOrient, TRDP_LABEL_T pVehLabel, TRDP_LABEL_T pCstLabel)
Function to retrieve the orientation of the given vehicle.
• EXT_DECL TRDP_ERR_T tau_getOwnIds (TRDP_APP_SESSION_T appHandle, TRDP_LABEL_T ∗p←-
DevId, TRDP_LABEL_T ∗pVehId, TRDP_LABEL_T ∗pCstId)
Who am I ?.
5.11.1 Detailed Description
Functions for train topology information access.
The TTI subsystem maintains a pointer to the TAU_TTDB struct in the TRDP session struct. That TAU_TTDB
struct keeps the subscription and listener handles, the current TTDB directories and a pointer list to consist infos
(in network format). On init, most TTDB data is requested from the ECSP plus the own consist info. This data
is automatically updated if an inauguration is detected. Additional consist infos are requested on demand, only.
Because of the asynchronous behavior of the TTI subsystem, most functions in tau_tti.c may return TRDP_N←-
ODATA_ERR on first invocation. They should be called again after 1...3 seconds (3s is the timeout for most MD
replies).
Generated by Doxygen

114 File Documentation
Note
Project: TCNOpen TRDP prototype stack
Author
B. Loehr (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2016. All rights reserved.
Id
tau_tti.c 1755 2018-08-07 12:10:03Z bloehr
BL 2018-08-07: Ticket #183 tau_getOwnIds declared but not defined
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-13: Ticket #176 TRDP_LABEL_T breaks field alignment -> TRDP_NET_LABEL_T
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2017-05-08: Compiler warnings, doxygen comment errors
BL 2017-04-28: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h
BL 2017-03-13: Ticket #154 ComIds and DSIds literals (#define TRDP_...) in trdp_proto.h too long
BL 2017-02-10: Ticket #129 Found a bug which yields wrong output params and potentially segfaults
BL 2017-02-08: Ticket #142 Compiler warnings / MISRA-C 2012 issues
BL 2016-02-18: Ticket #7: Add train topology information support
5.11.2 Macro Definition Documentation
5.11.2.1 TTI_CACHED_CONSISTS
#define TTI_CACHED_CONSISTS 8u
We hold this number of consist infos (ca.
105kB)
5.11.3 Function Documentation
5.11.3.1 tau_deInitTTI()
EXT_DECL void tau_deInitTTI (
TRDP_APP_SESSION_T appHandle )
Release any resources allocated by TTI Must be called before closing the session.
Function to terminate TTI access.
Generated by Doxygen

5.11 tau_tti.c File Reference 115
Parameters
in appHandle Handle returned by tlc_openSession().
Return values
none
5.11.3.2 tau_getCstFctCnt()
EXT_DECL TRDP_ERR_T tau_getCstFctCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pCstFctCnt,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the total number of functions in a consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstFctCnt Pointer to the number of functions to be returned
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.3 tau_getCstFctInfo()
EXT_DECL TRDP_ERR_T tau_getCstFctInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_FUNCTION_INFO_T ∗pFctInfo,
const TRDP_LABEL_T pCstLabel,
UINT16 maxFctCnt )
Function to retrieve the function information of the consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pFctInfo Pointer to function info list to be returned. Memory needs to be provided by application.
Set NULL if not used.
in pCstLabel Pointer to a consist label. NULL means own consist.
in maxFctCnt Maximal number of functions to be returned in provided buffer.
Generated by Doxygen

116 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.4 tau_getCstInfo()
EXT_DECL TRDP_ERR_T tau_getCstInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_CONSIST_INFO_T ∗pCstInfo,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the consist information of a train's consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstInfo Pointer to the consist info to be returned.
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.5 tau_getCstVehCnt()
EXT_DECL TRDP_ERR_T tau_getCstVehCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pCstVehCnt,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the total number of vehicles in a consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstVehCnt Pointer to the number of vehicles to be returned
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
Generated by Doxygen

5.11 tau_tti.c File Reference 117
5.11.3.6 tau_getOpTrDirectory()
EXT_DECL TRDP_ERR_T tau_getOpTrDirectory (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATE_T ∗pOpTrnDirState,
TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir )
Function to retrieve the operational train directory state.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirState Pointer to an operational train directory state structure to be returned.
out pOpTrnDir Pointer to an operational train directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Data currently not available, try again later
5.11.3.7 tau_getOpTrnDirectoryStatusInfo()
EXT_DECL TRDP_ERR_T tau_getOpTrnDirectoryStatusInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATUS_INFO_T ∗pOpTrnDirStatusInfo )
Function to retrieve the operational train directory state info.
Return a copy of the last received PD 100 telegram. Note: The values are in host endianess! When validating
(SDTv2), network endianess must be ensured.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirStatusInfo Pointer to an operational train directory state structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

118 File Documentation
5.11.3.8 tau_getOwnIds()
EXT_DECL TRDP_ERR_T tau_getOwnIds (
TRDP_APP_SESSION_T appHandle,
TRDP_LABEL_T ∗pDevId,
TRDP_LABEL_T ∗pVehId,
TRDP_LABEL_T ∗pCstId )
Who am I ?.
Realizes a kind of 'Who am I' function. It is used to determine the own identifiers (i.e. the own labels), which may
be used as host part of the own fully qualified domain name.
Parameters
in appHandle Handle returned by tlc_openSession()
out pDevId Returns the device label (host name)
out pVehId Returns the vehicle label
out pCstId Returns the consist label
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Data currently not available, call again
5.11.3.9 tau_getStaticCstInfo()
EXT_DECL TRDP_ERR_T tau_getStaticCstInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_CONSIST_INFO_T ∗pCstInfo,
TRDP_UUID_T const cstUUID )
Function to retrieve the consist info.
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstInfo Pointer to a consist info structure to be returned.
in cstUUID UUID of the consist the consist info is rquested for.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Generated by Doxygen

5.11 tau_tti.c File Reference 119
5.11.3.10 tau_getTrDirectory()
EXT_DECL TRDP_ERR_T tau_getTrDirectory (
TRDP_APP_SESSION_T appHandle,
TRDP_TRAIN_DIR_T ∗pTrnDir )
Function to retrieve the train directory.
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnDir Pointer to a train directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try later
5.11.3.11 tau_getTrnCstCnt()
EXT_DECL TRDP_ERR_T tau_getTrnCstCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pTrnCstCnt )
Function to retrieve the total number of consists in the train.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnCstCnt Pointer to the number of consists to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
5.11.3.12 tau_getTrnVehCnt()
EXT_DECL TRDP_ERR_T tau_getTrnVehCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pTrnVehCnt )
Function to retrieve the total number of vehicles in the train.
Generated by Doxygen

120 File Documentation
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnVehCnt Pointer to the number of vehicles to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
5.11.3.13 tau_getTTI()
EXT_DECL TRDP_ERR_T tau_getTTI (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATE_T ∗pOpTrnDirState,
TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir,
TRDP_TRAIN_DIR_T ∗pTrnDir,
TRDP_TRAIN_NET_DIR_T ∗pTrnNetDir )
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirState Pointer to an operational train directory state structure to be returned.
out pOpTrnDir Pointer to an operational train directory structure to be returned.
out pTrnDir Pointer to a train directory structure to be returned.
out pTrnNetDir Pointer to a train network directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.14 tau_getVehInfo()
EXT_DECL TRDP_ERR_T tau_getVehInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_VEHICLE_INFO_T ∗pVehInfo,
const TRDP_LABEL_T pVehLabel,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the vehicle information of a consist's vehicle.
Generated by Doxygen

5.11 tau_tti.c File Reference 121
Parameters
in appHandle Handle returned by tlc_openSession().
out pVehInfo Pointer to the vehicle info to be returned.
in pVehLabel Pointer to a vehicle label. NULL means own vehicle if cstLabel refers to own consist.
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.15 tau_getVehOrient()
EXT_DECL TRDP_ERR_T tau_getVehOrient (
TRDP_APP_SESSION_T appHandle,
UINT8 ∗pVehOrient,
UINT8 ∗pCstOrient,
TRDP_LABEL_T pVehLabel,
TRDP_LABEL_T pCstLabel )
Function to retrieve the orientation of the given vehicle.
Parameters
in appHandle Handle returned by tlc_openSession().
out pVehOrient Pointer to the vehicle orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
out pCstOrient Pointer to the consist orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
in pVehLabel vehLabel = NULL means own vehicle if cstLabel == NULL, currently ignored.
in pCstLabel cstLabel = NULL means own consist
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.11.3.16 tau_initTTIaccess()
EXT_DECL TRDP_ERR_T tau_initTTIaccess (
TRDP_APP_SESSION_T appHandle,
VOS_SEMA_T userAction,
TRDP_IP_ADDR_T ecspIpAddr,
CHAR8 ∗hostsFileName )
Generated by Doxygen

122 File Documentation
Function to init TTI access.
Subscribe to necessary process data for correct ECSP handling, further calls need DNS!
Generated by Doxygen

5.12 tau_tti.h File Reference 123
Parameters
in appHandle Handle returned by tlc_openSession().
in userAction Semaphore to fire if inauguration took place.
in ecspIpAddr ECSP IP address. Currently not used.
in hostsFileName Optional host file name as ECSP replacement. Currently not implemented.
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
5.12 tau_tti.h File Reference
TRDP utility interface definitions.
#include "trdp_types.h"
#include "tau_tti_types.h"
Generated by Doxygen

124 File Documentation
Include dependency graph for tau_tti.h:
tau_tti.h
trdp_types.h
tau_tti_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
Generated by Doxygen

5.12 tau_tti.h File Reference 125
This graph shows which files directly or indirectly include this file:
tau_tti.h
tau_ctrl.h
tau_ctrl_types.h tau_cstinfo.c
tau_tti.c
tau_dnr.c
tau_ctrl.c
Functions
• EXT_DECL TRDP_ERR_T tau_initTTIaccess (TRDP_APP_SESSION_T appHandle, VOS_SEMA_T user←-
Action, TRDP_IP_ADDR_T ecspIpAddr, CHAR8 ∗hostsFileName)
Function to init TTI access.
• EXT_DECL void tau_deInitTTI (TRDP_APP_SESSION_T appHandle)
Function to terminate TTI access.
• EXT_DECL TRDP_ERR_T tau_getOpTrDirectory (TRDP_APP_SESSION_T appHandle, TRDP_OP_TRA←-
IN_DIR_STATE_T ∗pOpTrDirState, TRDP_OP_TRAIN_DIR_T ∗pOpTrDir)
Function to retrieve the operational train directory state.
• EXT_DECL TRDP_ERR_T tau_getOpTrnDirectoryStatusInfo (TRDP_APP_SESSION_T appHandle, TRD←-
P_OP_TRAIN_DIR_STATUS_INFO_T ∗pOpTrnDirStatusInfo)
Function to retrieve the operational train directory state info.
• EXT_DECL TRDP_ERR_T tau_getTrDirectory (TRDP_APP_SESSION_T appHandle, TRDP_TRAIN_DIR←-
_T ∗pTrDir)
Function to retrieve the operational train directory.
• EXT_DECL TRDP_ERR_T tau_getStaticCstInfo (TRDP_APP_SESSION_T appHandle, TRDP_CONSIST←-
_INFO_T ∗pCstInfo, TRDP_UUID_T const cstUUID)
Function to retrieve the operational train directory.
• EXT_DECL TRDP_ERR_T tau_getTTI (TRDP_APP_SESSION_T appHandle, TRDP_OP_TRAIN_DIR_S←-
TATE_T ∗pOpTrnDirState, TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir, TRDP_TRAIN_DIR_T ∗pTrnDir, TRDP←-
_TRAIN_NET_DIR_T ∗pTrnNetDir)
Function to retrieve the operational train directory.
• EXT_DECL TRDP_ERR_T tau_getTrnCstCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pTrnCstCnt)
Function to retrieve the total number of consists in the train.
• EXT_DECL TRDP_ERR_T tau_getTrnVehCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pTrnVehCnt)
Function to retrieve the total number of vehicles in the train.
• EXT_DECL TRDP_ERR_T tau_getCstVehCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pCstVehCnt,
const TRDP_LABEL_T pCstLabel)
Function to retrieve the total number of vehicles in a consist.
Generated by Doxygen

126 File Documentation
• EXT_DECL TRDP_ERR_T tau_getCstFctCnt (TRDP_APP_SESSION_T appHandle, UINT16 ∗pCstFctCnt,
const TRDP_LABEL_T pCstLabel)
Function to retrieve the total number of functions in a consist.
• EXT_DECL TRDP_ERR_T tau_getCstFctInfo (TRDP_APP_SESSION_T appHandle, TRDP_FUNCTION_←-
INFO_T ∗pFctInfo, const TRDP_LABEL_T pCstLabel, UINT16 maxFctCnt)
Function to retrieve the function information of the consist.
• EXT_DECL TRDP_ERR_T tau_getVehInfo (TRDP_APP_SESSION_T appHandle, TRDP_VEHICLE_INF←-
O_T ∗pVehInfo, const TRDP_LABEL_T pVehLabel, const TRDP_LABEL_T pCstLabel)
Function to retrieve the vehicle information of a consist's vehicle.
• EXT_DECL TRDP_ERR_T tau_getCstInfo (TRDP_APP_SESSION_T appHandle, TRDP_CONSIST_INF←-
O_T ∗pCstInfo, const TRDP_LABEL_T pCstLabel)
Function to retrieve the consist information of a train's consist.
• EXT_DECL TRDP_ERR_T tau_getVehOrient (TRDP_APP_SESSION_T appHandle, UINT8 ∗pVehOrient,
UINT8 ∗pCstOrient, TRDP_LABEL_T pVehLabel, TRDP_LABEL_T pCstLabel)
Function to retrieve the orientation of the given vehicle.
• EXT_DECL TRDP_ERR_T tau_getOwnIds (TRDP_APP_SESSION_T appHandle, TRDP_LABEL_T ∗p←-
DevId, TRDP_LABEL_T ∗pVehId, TRDP_LABEL_T ∗pCstId)
Who am I ?.
5.12.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• train topology information access
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2014. All rights reserved.
Id
tau_tti.h 1755 2018-08-07 12:10:03Z bloehr
BL 2018-08-07: Ticket #183 tau_getOwnIds moved here
BL 2016-02-18: Ticket #7: Add train topology information support
5.12.2 Function Documentation
5.12.2.1 tau_deInitTTI()
EXT_DECL void tau_deInitTTI (
TRDP_APP_SESSION_T appHandle )
Function to terminate TTI access.
Generated by Doxygen

5.12 tau_tti.h File Reference 127
Parameters
in appHandle Handle returned by tlc_openSession().
Return values
none Function to terminate TTI access.
Parameters
in appHandle Handle returned by tlc_openSession().
Return values
none
5.12.2.2 tau_getCstFctCnt()
EXT_DECL TRDP_ERR_T tau_getCstFctCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pCstFctCnt,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the total number of functions in a consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstFctCnt Pointer to the number of functions to be returned
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.3 tau_getCstFctInfo()
EXT_DECL TRDP_ERR_T tau_getCstFctInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_FUNCTION_INFO_T ∗pFctInfo,
const TRDP_LABEL_T pCstLabel,
UINT16 maxFctCnt )
Function to retrieve the function information of the consist.
Generated by Doxygen

128 File Documentation
Parameters
in appHandle Handle returned by tlc_openSession().
out pFctInfo Pointer to function info list to be returned. Memory needs to be provided by application.
Set NULL if not used.
in pCstLabel Pointer to a consist label. NULL means own consist.
in maxFctCnt Maximal number of functions to be returned in provided buffer.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.4 tau_getCstInfo()
EXT_DECL TRDP_ERR_T tau_getCstInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_CONSIST_INFO_T ∗pCstInfo,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the consist information of a train's consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstInfo Pointer to the consist info to be returned.
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.5 tau_getCstVehCnt()
EXT_DECL TRDP_ERR_T tau_getCstVehCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pCstVehCnt,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the total number of vehicles in a consist.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstVehCnt Pointer to the number of vehicles to be returned
in pCstLabel Pointer to a consist label. NULL means own consist.
Generated by Doxygen

5.12 tau_tti.h File Reference 129
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstVehCnt Pointer to the number of vehicles to be returned
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
5.12.2.6 tau_getOpTrDirectory()
EXT_DECL TRDP_ERR_T tau_getOpTrDirectory (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATE_T ∗pOpTrnDirState,
TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir )
Function to retrieve the operational train directory state.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrDirState Pointer to an operational train directory state structure to be returned.
out pOpTrDir Pointer to an operational train directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirState Pointer to an operational train directory state structure to be returned.
out pOpTrnDir Pointer to an operational train directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Data currently not available, try again later
Generated by Doxygen

130 File Documentation
5.12.2.7 tau_getOpTrnDirectoryStatusInfo()
EXT_DECL TRDP_ERR_T tau_getOpTrnDirectoryStatusInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATUS_INFO_T ∗pOpTrnDirStatusInfo )
Function to retrieve the operational train directory state info.
Return a copy of the last received PD 100 telegram. Note: The values are in host endianess! When validating
(SDTv2), network endianess must be ensured.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirStatusInfo Pointer to an operational train directory state structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.8 tau_getOwnIds()
EXT_DECL TRDP_ERR_T tau_getOwnIds (
TRDP_APP_SESSION_T appHandle,
TRDP_LABEL_T ∗pDevId,
TRDP_LABEL_T ∗pVehId,
TRDP_LABEL_T ∗pCstId )
Who am I ?.
Realizes a kind of 'Who am I' function. It is used to determine the own identifiers (i.e. the own labels), which may
be used as host part of the own fully qualified domain name.
Parameters
in appHandle Handle returned by tlc_openSession()
out pDevId Returns the device label (host name)
out pVehId Returns the vehicle label
out pCstId Returns the consist label
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Data currently not available, call again
Generated by Doxygen

5.12 tau_tti.h File Reference 131
5.12.2.9 tau_getStaticCstInfo()
EXT_DECL TRDP_ERR_T tau_getStaticCstInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_CONSIST_INFO_T ∗pCstInfo,
TRDP_UUID_T const cstUUID )
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstInfo Pointer to a consist info structure to be returned.
in cstUUID UUID of the consist the consist info is rquested for.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pCstInfo Pointer to a consist info structure to be returned.
in cstUUID UUID of the consist the consist info is rquested for.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.10 tau_getTrDirectory()
EXT_DECL TRDP_ERR_T tau_getTrDirectory (
TRDP_APP_SESSION_T appHandle,
TRDP_TRAIN_DIR_T ∗pTrnDir )
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrDir Pointer to a train directory structure to be returned.
Generated by Doxygen

132 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnDir Pointer to a train directory structure to be returned.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try later
5.12.2.11 tau_getTrnCstCnt()
EXT_DECL TRDP_ERR_T tau_getTrnCstCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pTrnCstCnt )
Function to retrieve the total number of consists in the train.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnCstCnt Pointer to the number of consists to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnCstCnt Pointer to the number of consists to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
Generated by Doxygen

5.12 tau_tti.h File Reference 133
5.12.2.12 tau_getTrnVehCnt()
EXT_DECL TRDP_ERR_T tau_getTrnVehCnt (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pTrnVehCnt )
Function to retrieve the total number of vehicles in the train.
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnVehCnt Pointer to the number of vehicles to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Handle returned by tlc_openSession().
out pTrnVehCnt Pointer to the number of vehicles to be returned
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
TRDP_NODATA_ERR Try again
5.12.2.13 tau_getTTI()
EXT_DECL TRDP_ERR_T tau_getTTI (
TRDP_APP_SESSION_T appHandle,
TRDP_OP_TRAIN_DIR_STATE_T ∗pOpTrnDirState,
TRDP_OP_TRAIN_DIR_T ∗pOpTrnDir,
TRDP_TRAIN_DIR_T ∗pTrnDir,
TRDP_TRAIN_NET_DIR_T ∗pTrnNetDir )
Function to retrieve the operational train directory.
Parameters
in appHandle Handle returned by tlc_openSession().
out pOpTrnDirState Pointer to an operational train directory state structure to be returned.
out pOpTrnDir Pointer to an operational train directory structure to be returned.
out pTrnDir Pointer to a train directory structure to be returned.
out pTrnNetDir Pointer to a train network directory structure to be returned.
Generated by Doxygen

134 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.14 tau_getVehInfo()
EXT_DECL TRDP_ERR_T tau_getVehInfo (
TRDP_APP_SESSION_T appHandle,
TRDP_VEHICLE_INFO_T ∗pVehInfo,
const TRDP_LABEL_T pVehLabel,
const TRDP_LABEL_T pCstLabel )
Function to retrieve the vehicle information of a consist's vehicle.
Parameters
in appHandle Handle returned by tlc_openSession().
out pVehInfo Pointer to the vehicle info to be returned.
in pVehLabel Pointer to a vehicle label. NULL means own vehicle if cstLabel refers to own consist.
in pCstLabel Pointer to a consist label. NULL means own consist.
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.15 tau_getVehOrient()
EXT_DECL TRDP_ERR_T tau_getVehOrient (
TRDP_APP_SESSION_T appHandle,
UINT8 ∗pVehOrient,
UINT8 ∗pCstOrient,
TRDP_LABEL_T pVehLabel,
TRDP_LABEL_T pCstLabel )
Function to retrieve the orientation of the given vehicle.
Parameters
in appHandle Handle returned by tlc_openSession().
out pVehOrient Pointer to the vehicle orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
out pCstOrient Pointer to the consist orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
in pVehLabel vehLabel = NULL means own vehicle if cstLabel == NULL
in pCstLabel cstLabel = NULL means own consist
Generated by Doxygen

5.12 tau_tti.h File Reference 135
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
Parameters
in appHandle Handle returned by tlc_openSession().
out pVehOrient Pointer to the vehicle orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
out pCstOrient Pointer to the consist orientation to be returned '00'B = not known (corrected vehicle)
'01'B = same as operational train direction '10'B = inverse to operational train direction
in pVehLabel vehLabel = NULL means own vehicle if cstLabel == NULL, currently ignored.
in pCstLabel cstLabel = NULL means own consist
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR Parameter error
5.12.2.16 tau_initTTIaccess()
EXT_DECL TRDP_ERR_T tau_initTTIaccess (
TRDP_APP_SESSION_T appHandle,
VOS_SEMA_T userAction,
TRDP_IP_ADDR_T ecspIpAddr,
CHAR8 ∗hostsFileName )
Function to init TTI access.
Parameters
in appHandle Handle returned by tlc_openSession().
in userAction Semaphore to fire if inauguration took place.
in ecspIpAddr ECSP IP address.
in hostsFileName Optional host file name as ECSP replacement.
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
Subscribe to necessary process data for correct ECSP handling, further calls need DNS!
Parameters
in appHandle Handle returned by tlc_openSession().
in userAction Semaphore to fire if inauguration took place.
in ecspIpAddr ECSP IP address. Currently not used.
Generated by Doxygen

136 File Documentation
Parameters
in hostsFileName Optional host file name as ECSP replacement. Currently not implemented.
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR initialisation error
5.13 tau_tti_types.h File Reference
TRDP utility interface definitions.
#include "trdp_types.h"
Include dependency graph for tau_tti_types.h:
tau_tti_types.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
Generated by Doxygen

5.13 tau_tti_types.h File Reference 137
This graph shows which files directly or indirectly include this file:
tau_tti_types.h
tau_tti.h
tau_ctrl.h
tau_ctrl_types.h tau_cstinfo.c
tau_tti.c
tau_dnr.c
tau_ctrl.c
Data Structures
• struct GNU_PACKED
Types for ETB control.
• struct TRDP_ETB_INFO_T
Types for train configuration information.
• struct TRDP_CLTR_CST_INFO_T
Closed train consists information.
• struct TRDP_PROP_T
Application defined properties.
• struct TRDP_FUNCTION_INFO_T
function/device information structure
• struct TRDP_VEHICLE_INFO_T
vehicle information structure
• struct TRDP_CONSIST_INFO_T
consist information structure
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Generated by Doxygen

138 File Documentation
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
Macros
• #define TRDP_MAX_CST_CNT 63u
max number of consists per train
• #define TRDP_MAX_VEH_CNT 63u
max number of vehicles per train
5.13.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• train topology information access type definitions acc. to IEC61375-2-3
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2014. All rights reserved.
Id
tau_tti_types.h 1763 2018-09-21 16:03:13Z ahweiss
BL 2017-11-13: Ticket #176 TRDP_LABEL_T breaks field alignment -> TRDP_NET_LABEL_T
BL 2017-05-08: Compiler warnings, doxygen comment errors
Generated by Doxygen

5.14 tau_xml.c File Reference 139
5.14 tau_xml.c File Reference
Functions for XML file parsing.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "trdp_types.h"
#include "trdp_utils.h"
#include "tau_xml.h"
#include "trdp_xml.h"
Include dependency graph for tau_xml.c:
tau_xml.c
string.h
stdio.h
stdlib.h
trdp_types.h
trdp_utils.h
tau_xml.h
trdp_xml.h
vos_types.h
vos_mem.hvos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
trdp_private.hvos_utils.h
stddef.h
Macros
• #define TRDP_SDT_DEFAULT_SMI2 0u
Default SDT safe message identifier.
• #define TRDP_SDT_DEFAULT_NRXSAFE 3u
Default SDT timeout cycles.
• #define TRDP_SDT_DEFAULT_NGUARD 100u
Default SDT initial timeout cycles.
• #define TRDP_SDT_DEFAULT_CMTHR 10u
Default SDT chan.
Functions
• EXT_DECL TRDP_ERR_T tau_prepareXmlDoc (const CHAR8 ∗pFileName, TRDP_XML_DOC_HANDLE←-
_T ∗pDocHnd)
Open XML file, prepare XPath context.
• EXT_DECL void tau_freeXmlDoc (TRDP_XML_DOC_HANDLE_T ∗pDocHnd)
Free all the memory allocated by tau_prepareXmlDoc.
Generated by Doxygen

140 File Documentation
• EXT_DECL TRDP_ERR_T tau_readXmlInterfaceConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
const CHAR8 ∗pIfName, TRDP_PROCESS_CONFIG_T ∗pProcessConfig, TRDP_PD_CONFIG_T ∗p←-
PdConfig, TRDP_MD_CONFIG_T ∗pMdConfig, UINT32 ∗pNumExchgPar, TRDP_EXCHG_PAR_T ∗∗pp←-
ExchgPar)
Read the interface relevant telegram parameters (except data set configuration) out of the configuration file .
• EXT_DECL void tau_freeTelegrams (UINT32 numExchgPar, TRDP_EXCHG_PAR_T ∗pExchgPar)
Free array of telegram configurations allocated by tau_readXmlInterfaceConfig.
• EXT_DECL TRDP_ERR_T tau_readXmlDeviceConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
TRDP_MEM_CONFIG_T ∗pMemConfig, TRDP_DBG_CONFIG_T ∗pDbgConfig, UINT32 ∗pNumComPar,
TRDP_COM_PAR_T ∗∗ppComPar, UINT32 ∗pNumIfConfig, TRDP_IF_CONFIG_T ∗∗ppIfConfig)
Function to read the TRDP device configuration parameters out of the XML configuration file.
• EXT_DECL TRDP_ERR_T tau_readXmlDatasetConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
UINT32 ∗pNumComId, TRDP_COMID_DSID_MAP_T ∗∗ppComIdDsIdMap, UINT32 ∗pNumDataset, ap←-
TRDP_DATASET_T ∗apDataset)
Function to read the DataSet configuration out of the XML configuration file.
• EXT_DECL void tau_freeXmlDatasetConfig (UINT32 numComId, TRDP_COMID_DSID_MAP_T ∗pComId←-
DsIdMap, UINT32 numDataset, TRDP_DATASET_T ∗∗ppDataset)
Function to free the memory for the DataSet configuration.
5.14.1 Detailed Description
Functions for XML file parsing.
SOX parsing of XML configuration file
Note
Project: TCNOpen TRDP prototype stack
Author
B. Loehr, NewTec GmbH, Tomas Svoboda, UniControls a.s.
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
NewTec GmbH, 2016. All rights reserved.
Id
tau_xml.c 1770 2018-10-29 10:49:08Z s-bender
SB 2018-10-29: Ticket #214 Incorrect parsing of <source> and <destination> elements
BL 2018-10-01: Some default attribute values for com-parameter tag were missing
BL 2018-09-05: Ticket #211 XML handling: Dataset Name should be stored in TRDP_DATASET_ELEMENT_T
BL 2018-05-03: Ticket #194: Platform independent format specifiers in vos_printLog
BL 2018-01-30: Ticket #189 timeout-value not parsed in tau_xml
BL 2017-06-08: Compiler warning (unused dbgPrint)
BL 2017-05-08: Compiler warnings (static definitions)
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-27: Ticket #142 Compiler warnings / MISRA-C 2012 issues
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-03-21: Ticket #116: Memory corruption using new XML library
BL 2016-03-04: Ticket #113: parsing of dataset element "type" always returns 0
BL 2016-02-11: Ticket #111: unit, scale, offset added
BL 2016-02-11: Ticket #102: Replacing libxml2
BL 2016-01-25: Ticket #106: Callback can be ON, OFF, ALWAYS
Generated by Doxygen

5.14 tau_xml.c File Reference 141
5.14.2 Macro Definition Documentation
5.14.2.1 TRDP_SDT_DEFAULT_CMTHR
#define TRDP_SDT_DEFAULT_CMTHR 10u
Default SDT chan.
monitoring threshold
5.14.3 Function Documentation
5.14.3.1 tau_freeTelegrams()
EXT_DECL void tau_freeTelegrams (
UINT32 numExchgPar,
TRDP_EXCHG_PAR_T ∗pExchgPar )
Free array of telegram configurations allocated by tau_readXmlInterfaceConfig.
Parameters
in numExchgPar Number of telegram configurations in the array
in pExchgPar Pointer to array of telegram configurations
5.14.3.2 tau_freeXmlDatasetConfig()
EXT_DECL void tau_freeXmlDatasetConfig (
UINT32 numComId,
TRDP_COMID_DSID_MAP_T ∗pComIdDsIdMap,
UINT32 numDataset,
TRDP_DATASET_T ∗∗ ppDataset )
Function to free the memory for the DataSet configuration.
Free the memory for the DataSet configuration which was allocated when parsing the XML configuration file.
Parameters
in numComId The number of entries in the ComId DatasetId mapping list
in pComIdDsIdMap Pointer to an array of structures of type TRDP_COMID_DSID_MAP_T
in numDataset The number of datasets found in the configuration
in ppDataset Pointer to an array of pointers to a structures of type TRDP_DATASET_T
Generated by Doxygen

142 File Documentation
Return values
none
5.14.3.3 tau_freeXmlDoc()
EXT_DECL void tau_freeXmlDoc (
TRDP_XML_DOC_HANDLE_T ∗pDocHnd )
Free all the memory allocated by tau_prepareXmlDoc.
Parameters
in pDocHnd Handle of the parsed XML file
5.14.3.4 tau_prepareXmlDoc()
EXT_DECL TRDP_ERR_T tau_prepareXmlDoc (
const CHAR8 ∗pFileName,
TRDP_XML_DOC_HANDLE_T ∗pDocHnd )
Open XML file, prepare XPath context.
Load XML file into DOM tree, prepare XPath context.
Parameters
in pFileName Path and filename of the xml configuration file
out pDocHnd Handle of the parsed XML file
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR File does not exist
5.14.3.5 tau_readXmlDatasetConfig()
EXT_DECL TRDP_ERR_T tau_readXmlDatasetConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
UINT32 ∗pNumComId,
TRDP_COMID_DSID_MAP_T ∗∗ ppComIdDsIdMap,
UINT32 ∗pNumDataset,
apTRDP_DATASET_T ∗apDataset )
Generated by Doxygen

5.14 tau_xml.c File Reference 143
Function to read the DataSet configuration out of the XML configuration file.
Generated by Doxygen

144 File Documentation
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
out pNumComId Pointer to the number of entries in the ComId DatasetId mapping list
out ppComIdDsIdMap Pointer to an array of a structures of type TRDP_COMID_DSID_MAP_T
out pNumDataset Pointer to the number of datasets found in the configuration
out apDataset Pointer to an array of pointers to a structure of type TRDP_DATASET_T
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
5.14.3.6 tau_readXmlDeviceConfig()
EXT_DECL TRDP_ERR_T tau_readXmlDeviceConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
TRDP_MEM_CONFIG_T ∗pMemConfig,
TRDP_DBG_CONFIG_T ∗pDbgConfig,
UINT32 ∗pNumComPar,
TRDP_COM_PAR_T ∗∗ ppComPar,
UINT32 ∗pNumIfConfig,
TRDP_IF_CONFIG_T ∗∗ ppIfConfig )
Function to read the TRDP device configuration parameters out of the XML configuration file.
The user must release the memory for ppComPar and ppIfConfig (using vos_memFree)
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
out pMemConfig Memory configuration
out pDbgConfig Debug printout configuration for application use
out pNumComPar Number of configured com parameters
out ppComPar Pointer to array of com parameters
out pNumIfConfig Number of configured interfaces
out ppIfConfig Pointer to an array of interface parameter sets
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
Generated by Doxygen

5.15 tau_xml.h File Reference 145
5.14.3.7 tau_readXmlInterfaceConfig()
EXT_DECL TRDP_ERR_T tau_readXmlInterfaceConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
const CHAR8 ∗pIfName,
TRDP_PROCESS_CONFIG_T ∗pProcessConfig,
TRDP_PD_CONFIG_T ∗pPdConfig,
TRDP_MD_CONFIG_T ∗pMdConfig,
UINT32 ∗pNumExchgPar,
TRDP_EXCHG_PAR_T ∗∗ ppExchgPar )
Read the interface relevant telegram parameters (except data set configuration) out of the configuration file .
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
in pIfName Interface name
out pProcessConfig TRDP process (session) configuration for the interface
out pPdConfig PD default configuration for the interface
out pMdConfig MD default configuration for the interface
out pNumExchgPar Number of configured telegrams
out ppExchgPar Pointer to array of telegram configurations
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
5.15 tau_xml.h File Reference
TRDP utility interface definitions.
#include "vos_types.h"
#include "trdp_types.h"
Generated by Doxygen

146 File Documentation
Include dependency graph for tau_xml.h:
tau_xml.h
vos_types.h
trdp_types.h
stdint.h
vos_mem.h vos_sock.h iec61375-2-3.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
tau_xml.h
tau_xml.c
Data Structures
• struct TRDP_SDT_PAR_T
Types to read out the XML configuration.
• struct TRDP_DBG_CONFIG_T
Control for debug output device/file on application level.
• struct TRDP_XML_DOC_HANDLE_T
Parsed XML document handle.
Generated by Doxygen

5.15 tau_xml.h File Reference 147
Macros
• #define TRDP_DBG_DEFAULT 0,
Control for debug output format on application level.
• #define TRDP_DBG_OFF 0x01
Printout off.
• #define TRDP_DBG_ERR 0x02
Printout error.
• #define TRDP_DBG_WARN 0x04
Printout warning and error.
• #define TRDP_DBG_INFO 0x08
Printout info, warning and error.
• #define TRDP_DBG_DBG 0x10
Printout debug, info, warning and error.
• #define TRDP_DBG_TIME 0x20
Printout timestamp.
• #define TRDP_DBG_LOC 0x40
Printout file name and line.
• #define TRDP_DBG_CAT 0x80
Printout category (DBG, INFO, WARN, ERR)
Enumerations
• enum TRDP_EXCHG_OPTION_T {
TRDP_EXCHG_UNSET = 0,
TRDP_EXCHG_SOURCE = 1,
TRDP_EXCHG_SINK = 2,
TRDP_EXCHG_SOURCESINK =3}
Type attribute for telegrams.
Functions
• EXT_DECL TRDP_ERR_T tau_prepareXmlDoc (const CHAR8 ∗pFileName, TRDP_XML_DOC_HANDLE←-
_T ∗pDocHnd)
Load XML file into DOM tree, prepare XPath context.
• EXT_DECL void tau_freeXmlDoc (TRDP_XML_DOC_HANDLE_T ∗pDocHnd)
Free all the memory allocated by tau_prepareXmlDoc.
• EXT_DECL TRDP_ERR_T tau_readXmlDeviceConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
TRDP_MEM_CONFIG_T ∗pMemConfig, TRDP_DBG_CONFIG_T ∗pDbgConfig, UINT32 ∗pNumComPar,
TRDP_COM_PAR_T ∗∗ppComPar, UINT32 ∗pNumIfConfig, TRDP_IF_CONFIG_T ∗∗ppIfConfig)
Function to read the TRDP device configuration parameters out of the XML configuration file.
• EXT_DECL TRDP_ERR_T tau_readXmlInterfaceConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
const CHAR8 ∗pIfName, TRDP_PROCESS_CONFIG_T ∗pProcessConfig, TRDP_PD_CONFIG_T ∗p←-
PdConfig, TRDP_MD_CONFIG_T ∗pMdConfig, UINT32 ∗pNumExchgPar, TRDP_EXCHG_PAR_T ∗∗pp←-
ExchgPar)
Read the interface relevant telegram parameters (except data set configuration) out of the configuration file .
• EXT_DECL TRDP_ERR_T tau_readXmlDatasetConfig (const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
UINT32 ∗pNumComId, TRDP_COMID_DSID_MAP_T ∗∗ppComIdDsIdMap, UINT32 ∗pNumDataset, pap←-
TRDP_DATASET_T papDataset)
Function to read the DataSet configuration out of the XML configuration file.
• EXT_DECL void tau_freeXmlDatasetConfig (UINT32 numComId, TRDP_COMID_DSID_MAP_T ∗pComId←-
DsIdMap, UINT32 numDataset, TRDP_DATASET_T ∗∗pNumDataset)
Function to free the memory for the DataSet configuration.
• EXT_DECL void tau_freeTelegrams (UINT32 numExchgPar, TRDP_EXCHG_PAR_T ∗pExchgPar)
Free array of telegram configurations allocated by tau_readXmlInterfaceConfig.
Generated by Doxygen

148 File Documentation
5.15.1 Detailed Description
TRDP utility interface definitions.
This module provides the interface to the following utilities
• read xml configuration interpreter
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss (initial version)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
tau_xml.h 1601 2017-05-08 15:27:38Z bloehr
BL 2017-05-08: Compiler warnings, flag enums -> defines
BL 2016-02-11: Ticket #102: Custom XML parser, libxml2 not needed anymore
5.15.2 Macro Definition Documentation
5.15.2.1 TRDP_DBG_DEFAULT
#define TRDP_DBG_DEFAULT 0,
Control for debug output format on application level.
Printout default
5.15.3 Enumeration Type Documentation
5.15.3.1 TRDP_EXCHG_OPTION_T
enum TRDP_EXCHG_OPTION_T
Type attribute for telegrams.
Generated by Doxygen

5.15 tau_xml.h File Reference 149
Enumerator
TRDP_EXCHG_UNSET default, direction is not defined
TRDP_EXCHG_SOURCE telegram shall be published
TRDP_EXCHG_SINK telegram shall be subscribed
TRDP_EXCHG_SOURCESINK telegram shall be published and subscribed
5.15.4 Function Documentation
5.15.4.1 tau_freeTelegrams()
EXT_DECL void tau_freeTelegrams (
UINT32 numExchgPar,
TRDP_EXCHG_PAR_T ∗pExchgPar )
Free array of telegram configurations allocated by tau_readXmlInterfaceConfig.
Parameters
in numExchgPar Number of telegram configurations in the array
in pExchgPar Pointer to array of telegram configurations
5.15.4.2 tau_freeXmlDatasetConfig()
EXT_DECL void tau_freeXmlDatasetConfig (
UINT32 numComId,
TRDP_COMID_DSID_MAP_T ∗pComIdDsIdMap,
UINT32 numDataset,
TRDP_DATASET_T ∗∗ ppDataset )
Function to free the memory for the DataSet configuration.
Free the memory for the DataSet configuration which was allocated when parsing the XML configuration file.
Parameters
in numComId The number of entries in the ComId DatasetId mapping list
in pComIdDsIdMap Pointer to an array of structures of type TRDP_COMID_DSID_MAP_T
in numDataset The number of datasets found in the configuration
in pNumDataset Pointer to an array of pointers to a structures of type TRDP_DATASET_T
Return values
none Free the memory for the DataSet configuration which was allocated when parsing the XML
configuration file.
Generated by Doxygen

150 File Documentation
Parameters
in numComId The number of entries in the ComId DatasetId mapping list
in pComIdDsIdMap Pointer to an array of structures of type TRDP_COMID_DSID_MAP_T
in numDataset The number of datasets found in the configuration
in ppDataset Pointer to an array of pointers to a structures of type TRDP_DATASET_T
Return values
none
5.15.4.3 tau_freeXmlDoc()
EXT_DECL void tau_freeXmlDoc (
TRDP_XML_DOC_HANDLE_T ∗pDocHnd )
Free all the memory allocated by tau_prepareXmlDoc.
Parameters
in pDocHnd Handle of the parsed XML file
5.15.4.4 tau_prepareXmlDoc()
EXT_DECL TRDP_ERR_T tau_prepareXmlDoc (
const CHAR8 ∗pFileName,
TRDP_XML_DOC_HANDLE_T ∗pDocHnd )
Load XML file into DOM tree, prepare XPath context.
Parameters
in pFileName Path and filename of the xml configuration file
out pDocHnd Handle of the parsed XML file
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR File does not exist
Load XML file into DOM tree, prepare XPath context.
Parameters
in pFileName Path and filename of the xml configuration file
out pDocHnd Handle of the parsed XML file
Generated by Doxygen

5.15 tau_xml.h File Reference 151
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR File does not exist
5.15.4.5 tau_readXmlDatasetConfig()
EXT_DECL TRDP_ERR_T tau_readXmlDatasetConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
UINT32 ∗pNumComId,
TRDP_COMID_DSID_MAP_T ∗∗ ppComIdDsIdMap,
UINT32 ∗pNumDataset,
papTRDP_DATASET_T papDataset )
Function to read the DataSet configuration out of the XML configuration file.
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
out pNumComId Pointer to the number of entries in the ComId DatasetId mapping list
out ppComIdDsIdMap Pointer to an array of a structures of type TRDP_COMID_DSID_MAP_T
out pNumDataset Pointer to the number of datasets found in the configuration
out papDataset Pointer to an array of pointers to a structures of type TRDP_DATASET_T
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
5.15.4.6 tau_readXmlDeviceConfig()
EXT_DECL TRDP_ERR_T tau_readXmlDeviceConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
TRDP_MEM_CONFIG_T ∗pMemConfig,
TRDP_DBG_CONFIG_T ∗pDbgConfig,
UINT32 ∗pNumComPar,
TRDP_COM_PAR_T ∗∗ ppComPar,
UINT32 ∗pNumIfConfig,
TRDP_IF_CONFIG_T ∗∗ ppIfConfig )
Function to read the TRDP device configuration parameters out of the XML configuration file.
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
out pMemConfig Memory configuration
Generated by Doxygen

152 File Documentation
Parameters
out pDbgConfig Debug printout configuration for application use
out pNumComPar Number of configured com parameters
out ppComPar Pointer to array of com parameters
out pNumIfConfig Number of configured interfaces
out ppIfConfig Pointer to an array of interface parameter sets
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
The user must release the memory for ppComPar and ppIfConfig (using vos_memFree)
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
out pMemConfig Memory configuration
out pDbgConfig Debug printout configuration for application use
out pNumComPar Number of configured com parameters
out ppComPar Pointer to array of com parameters
out pNumIfConfig Number of configured interfaces
out ppIfConfig Pointer to an array of interface parameter sets
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
5.15.4.7 tau_readXmlInterfaceConfig()
EXT_DECL TRDP_ERR_T tau_readXmlInterfaceConfig (
const TRDP_XML_DOC_HANDLE_T ∗pDocHnd,
const CHAR8 ∗pIfName,
TRDP_PROCESS_CONFIG_T ∗pProcessConfig,
TRDP_PD_CONFIG_T ∗pPdConfig,
TRDP_MD_CONFIG_T ∗pMdConfig,
UINT32 ∗pNumExchgPar,
TRDP_EXCHG_PAR_T ∗∗ ppExchgPar )
Read the interface relevant telegram parameters (except data set configuration) out of the configuration file .
Parameters
in pDocHnd Handle of the XML document prepared by tau_prepareXmlDoc
Generated by Doxygen

5.16 trdp_dllmain.c File Reference 153
Parameters
in pIfName Interface name
out pProcessConfig TRDP process (session) configuration for the interface
out pPdConfig PD default configuration for the interface
out pMdConfig MD default configuration for the interface
out pNumExchgPar Number of configured telegrams
out ppExchgPar Pointer to array of telegram configurations
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_PARAM_ERR File not existing
5.16 trdp_dllmain.c File Reference
Windows DLL main function.
5.16.1 Detailed Description
Windows DLL main function.
Note
Project: TCNOpen TRDP prototype stack
Author
Armin-H. Weiss, Bombardier
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_dllmain.c 1763 2018-09-21 16:03:13Z ahweiss
Generated by Doxygen

154 File Documentation
5.17 trdp_if.c File Reference
Functions for ECN communication.
#include <string.h>
#include "trdp_if_light.h"
#include "trdp_utils.h"
#include "trdp_pdcom.h"
#include "trdp_stats.h"
#include "vos_sock.h"
#include "vos_mem.h"
#include "vos_utils.h"
Include dependency graph for trdp_if.c:
trdp_if.c
string.h
trdp_if_light.h
vos_mem.h vos_sock.h
trdp_utils.h
vos_utils.h
trdp_pdcom.h trdp_stats.h
trdp_types.h
vos_types.h
iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
stdio.h
trdp_private.h
stddef.h
Functions
• BOOL8 trdp_isValidSession (TRDP_APP_SESSION_T pSessionHandle)
Check if the session handle is valid.
•TRDP_APP_SESSION_T ∗trdp_sessionQueue (void)
Get the session queue head pointer.
• EXT_DECL TRDP_IP_ADDR_T tlc_getOwnIpAddress (TRDP_APP_SESSION_T appHandle)
Get the interface address.
• EXT_DECL TRDP_ERR_T tlc_init (const TRDP_PRINT_DBG_T pPrintDebugString, void ∗pRefCon, const
TRDP_MEM_CONFIG_T ∗pMemConfig)
Initialize the TRDP stack.
Generated by Doxygen

5.17 trdp_if.c File Reference 155
• EXT_DECL TRDP_ERR_T tlc_openSession (TRDP_APP_SESSION_T ∗pAppHandle, TRDP_IP_ADDR←-
_T ownIpAddr, TRDP_IP_ADDR_T leaderIpAddr, const TRDP_MARSHALL_CONFIG_T ∗pMarshall, const
TRDP_PD_CONFIG_T ∗pPdDefault, const TRDP_MD_CONFIG_T ∗pMdDefault, const TRDP_PROCES←-
S_CONFIG_T ∗pProcessConfig)
Open a session with the TRDP stack.
• EXT_DECL TRDP_ERR_T tlc_configSession (TRDP_APP_SESSION_T appHandle, const TRDP_MAR←-
SHALL_CONFIG_T ∗pMarshall, const TRDP_PD_CONFIG_T ∗pPdDefault, const TRDP_MD_CONFIG_T
∗pMdDefault, const TRDP_PROCESS_CONFIG_T ∗pProcessConfig)
(Re-)configure a session.
• EXT_DECL TRDP_ERR_T tlc_closeSession (TRDP_APP_SESSION_T appHandle)
Close a session.
• EXT_DECL TRDP_ERR_T tlc_terminate (void)
Un-Initialize.
• EXT_DECL TRDP_ERR_T tlc_reinitSession (TRDP_APP_SESSION_T appHandle)
Re-Initialize.
• const char ∗tlc_getVersionString (void)
Return a human readable version representation.
• EXT_DECL const TRDP_VERSION_T ∗tlc_getVersion (void)
Return version.
•TRDP_ERR_T tlp_setRedundant (TRDP_APP_SESSION_T appHandle, UINT32 redId, BOOL8 leader)
Do not send non-redundant PDs when we are follower.
• EXT_DECL TRDP_ERR_T tlp_getRedundant (TRDP_APP_SESSION_T appHandle, UINT32 redId, BOOL8
∗pLeader)
Get status of redundant ComIds.
• EXT_DECL TRDP_ERR_T tlc_setETBTopoCount (TRDP_APP_SESSION_T appHandle, UINT32 etbTopo←-
Cnt)
Set new topocount for trainwide communication.
• EXT_DECL TRDP_ERR_T tlc_setOpTrainTopoCount (TRDP_APP_SESSION_T appHandle, UINT32 op←-
TrnTopoCnt)
Set new operational train topocount for direction/orientation sensitive communication.
• EXT_DECL UINT32 tlc_getETBTopoCount (TRDP_APP_SESSION_T appHandle)
Set new topocount for trainwide communication.
• EXT_DECL UINT32 tlc_getOpTrainTopoCount (TRDP_APP_SESSION_T appHandle)
Set new operational train topocount for direction/orientation sensitive communication.
• EXT_DECL TRDP_ERR_T tlp_publish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T ∗pPubHandle,
const void ∗pUserRef, TRDP_PD_CALLBACK_T pfCbFunction, UINT32 comId, UINT32 etbTopoCnt, UIN←-
T32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr, UINT32 interval, UINT32
redId, TRDP_FLAGS_T pktFlags, const TRDP_SEND_PARAM_T ∗pSendParam, const UINT8 ∗pData, U←-
INT32 dataSize)
Prepare for sending PD messages.
• EXT_DECL TRDP_ERR_T tlp_republish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle,
UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr)
Prepare for sending PD messages.
•TRDP_ERR_T tlp_unpublish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle)
Stop sending PD messages.
•TRDP_ERR_T tlp_put (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle, const UINT8 ∗p←-
Data, UINT32 dataSize)
Update the process data to send.
• EXT_DECL TRDP_ERR_T tlc_getInterval (TRDP_APP_SESSION_T appHandle, TRDP_TIME_T ∗pInterval,
TRDP_FDS_T ∗pFileDesc, INT32 ∗pNoDesc)
Get the lowest time interval for PDs.
• EXT_DECL TRDP_ERR_T tlc_process (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pRfds, INT32
∗pCount)
Generated by Doxygen

156 File Documentation
Work loop of the TRDP handler.
• EXT_DECL TRDP_ERR_T tlp_request (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T subHandle,
UINT32 comId, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_AD←-
DR_T destIpAddr, UINT32 redId, TRDP_FLAGS_T pktFlags, const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData, UINT32 dataSize, UINT32 replyComId, TRDP_IP_ADDR_T replyIpAddr)
Initiate sending PD messages (PULL).
• EXT_DECL TRDP_ERR_T tlp_subscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T ∗pSub←-
Handle, const void ∗pUserRef, TRDP_PD_CALLBACK_T pfCbFunction, UINT32 comId, UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr1, TRDP_IP_ADDR_T srcIpAddr2, TRDP_IP_ADD←-
R_T destIpAddr, TRDP_FLAGS_T pktFlags, UINT32 timeout, TRDP_TO_BEHAVIOR_T toBehavior)
Prepare for receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_unsubscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T sub←-
Handle)
Stop receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_resubscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T sub←-
Handle, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr1, TRDP_IP_ADDR_T
srcIpAddr2, TRDP_IP_ADDR_T destIpAddr)
Reprepare for receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_get (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T subHandle, TR←-
DP_PD_INFO_T ∗pPdInfo, UINT8 ∗pData, UINT32 ∗pDataSize)
Get the last valid PD message.
5.17.1 Detailed Description
Functions for ECN communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_if.c 1772 2018-10-30 12:18:12Z bloehr
BL 2018-10-09: Ticket #213 ComId 31 subscription removed (<-- undone!)
BL 2018-06-29: Default settings handling / compiler warnings
SW 2018-06-26: Ticket #205 tlm_addListener() does not acknowledge TRDP_FLAGS_DEFAULT flag
BL 2018-06-25: Ticket #201 tlp_setRedundant return value if redId is 0
BL 2018-06-12: Ticket #204 tlp_publish should take default callback function
BL 2018-05-03: Ticket #199 Setting redId on tlp_request() has no effect
BL 2018-04-20: Ticket #196 setRedundant with redId = 0 stops all publishers
BL 2018-04-18: MD notify: pass optional cb pointer to mdsend
BL 2018-03-06: Ticket #101 Optional callback function on PD send
BL 2018-02-03: Ticket #190 Source filtering (IP-range) for PD subscribe
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
Generated by Doxygen

5.17 trdp_if.c File Reference 157
BL 2017-11-17: superfluous session->redID replaced by sndQueue->redId
BL 2017-11-15: Ticket #1 Unjoin on unsubscribe/delListener (finally ;-)
BL 2017-11-10: Ticket #172 Infinite loop of message sending after PD Pull Request when registered in multicast group
BL 2017-11-10: return error in resultCode of tlp_get()
BL 2017-11-09: Ticket #171 Wrong socket binding for multicast request messages
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2017-07-31: Ticket #168 Unnecessary multicast Join on tlp_publish()
BL 2017-07-12: Ticket #164 Fix for #151 (operator ’&’ instead of xor)
AHW 2017-05-30: Ticket #143 tlm_replyErr() only at TRDP level allowed
AHW 2017-05-22: Ticket #158 Infinit timeout at TRDB level is 0 acc. standard
BL 2017-05-08: Compiler warnings, local prototypes added
BL 2017-03-02: Ticket #151 tlp_request: timeout-flag is not cleared
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-10: Ticket #137 tlc_closeSession should close the tcp socket used for md communication
BL 2017-02-10: Ticket #128 PD: Support of ComId == 0
BL 2017-02-10: Ticket #130 PD Pull: Request is always sent to the same ip address
BL 2017-02-09: Ticket #132 tlp_publish: Check of datasize wrong if using marshaller
BL 2017-02-08: Ticket #142: Compiler warnings / MISRA-C 2012 issues
BL 2017-02-08: Ticket #139: Swap parameter in tlm_reply
BL 2016-07-06: Ticket #122: 64Bit compatibility (+ compiler warnings)
BL 2016-06-08: Ticket #120: ComIds for statistics changed to proposed 61375 errata
BL 2016-06-01: Ticket #119 tlc_getInterval() repeatedly returns 0 after timeout
BL 2016-02-04: Late configuration update/merging
BL 2015-12-22: Mutex optimised in closeSession
BL 2015-12-14: Setter for default configuration added
BL 2015-11-24: Accessor for IP address of session
BL 2015-11-24: Ticket #104: PD telegrams with no data is never sent
BL 2015-09-04: Ticket #99: refCon for tlc_init()
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
BL 2014-06-03: Do not return error on data-less tlp_request
BL 2014-06-02: Ticket #41: Sequence counter handling fixed
Removing receive queue on session close added
BL 2014-02-27: Ticket #24: trdp_if.c won’t compile without MD_SUPPORT
BL 2013-06-24: ID 125: Time-out handling and ready descriptors fixed
BL 2013-02-01: ID 53: Zero datset size fixed for PD
BL 2013-01-25: ID 20: Redundancy handling fixed
BL 2013-01-08: LADDER: Removed/Changed some ladder specific code in tlp_subscribe()
BL 2012-12-03: ID 1: "using uninitialized PD_ELE_T.pullIpAddress variable"
ID 2: "uninitialized PD_ELE_T newPD->pNext in tlp_subscribe()"
5.17.2 Function Documentation
5.17.2.1 tlc_closeSession()
EXT_DECL TRDP_ERR_T tlc_closeSession (
TRDP_APP_SESSION_T appHandle )
Close a session.
Clean up and release all resources of that session
Parameters
in appHandle The handle returned by tlc_openSession
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR handle NULL
Generated by Doxygen

158 File Documentation
5.17.2.2 tlc_configSession()
EXT_DECL TRDP_ERR_T tlc_configSession (
TRDP_APP_SESSION_T appHandle,
const TRDP_MARSHALL_CONFIG_T ∗pMarshall,
const TRDP_PD_CONFIG_T ∗pPdDefault,
const TRDP_MD_CONFIG_T ∗pMdDefault,
const TRDP_PROCESS_CONFIG_T ∗pProcessConfig )
(Re-)configure a session.
tlc_configSession is called by openSession, but may also be called later on to change the defaults. Only the supplied
settings (pointer != NULL) will be evaluated.
Parameters
in appHandle A handle for further calls to the trdp stack
in pMarshall Pointer to marshalling configuration
in pPdDefault Pointer to default PD configuration
in pMdDefault Pointer to default MD configuration
in pProcessConfig Pointer to process configuration only option parameter is used here to define session
behavior all other parameters are only used to feed statistics
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR not yet inited
TRDP_PARAM_ERR parameter error
5.17.2.3 tlc_getETBTopoCount()
EXT_DECL UINT32 tlc_getETBTopoCount (
TRDP_APP_SESSION_T appHandle )
Set new topocount for trainwide communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle the handle returned by tlc_openSession
Return values
etbTopoCnt
Generated by Doxygen

5.17 trdp_if.c File Reference 159
5.17.2.4 tlc_getInterval()
EXT_DECL TRDP_ERR_T tlc_getInterval (
TRDP_APP_SESSION_T appHandle,
TRDP_TIME_T ∗pInterval,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Get the lowest time interval for PDs.
Return the maximum time interval suitable for 'select()' so that we can send due PD packets in time. If the PD send
queue is empty, return zero time
Parameters
in appHandle The handle returned by tlc_openSession
out pInterval pointer to needed interval
in,out pFileDesc pointer to file descriptor set
out pNoDesc pointer to put no of highest used descriptors (for select())
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.17.2.5 tlc_getOpTrainTopoCount()
EXT_DECL UINT32 tlc_getOpTrainTopoCount (
TRDP_APP_SESSION_T appHandle )
Set new operational train topocount for direction/orientation sensitive communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
Return values
opTrnTopoCnt New operational topocount value
Generated by Doxygen

160 File Documentation
5.17.2.6 tlc_getOwnIpAddress()
EXT_DECL TRDP_IP_ADDR_T tlc_getOwnIpAddress (
TRDP_APP_SESSION_T appHandle )
Get the interface address.
Parameters
out appHandle A handle for further calls to the trdp stack
Return values
real←-
IP
5.17.2.7 tlc_getVersion()
EXT_DECL const TRDP_VERSION_T∗tlc_getVersion (
void )
Return version.
Return pointer to version structure
Return values
TRDP_VERSION←-
_T
5.17.2.8 tlc_getVersionString()
const char∗tlc_getVersionString (
void )
Return a human readable version representation.
Return string in the form 'v.r.u.b'
Return values
const string
Generated by Doxygen

5.17 trdp_if.c File Reference 161
5.17.2.9 tlc_init()
EXT_DECL TRDP_ERR_T tlc_init (
const TRDP_PRINT_DBG_T pPrintDebugString,
void ∗pRefCon,
const TRDP_MEM_CONFIG_T ∗pMemConfig )
Initialize the TRDP stack.
Support for message data can only be excluded during compile time!
tlc_init initializes the memory subsystem and takes a function pointer to an output function for logging.
Parameters
in pPrintDebugString Pointer to debug print function
in pRefCon user context
in pMemConfig Pointer to memory configuration
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR memory allocation failed
TRDP_PARAM_ERR initialization error
5.17.2.10 tlc_openSession()
EXT_DECL TRDP_ERR_T tlc_openSession (
TRDP_APP_SESSION_T ∗pAppHandle,
TRDP_IP_ADDR_T ownIpAddr,
TRDP_IP_ADDR_T leaderIpAddr,
const TRDP_MARSHALL_CONFIG_T ∗pMarshall,
const TRDP_PD_CONFIG_T ∗pPdDefault,
const TRDP_MD_CONFIG_T ∗pMdDefault,
const TRDP_PROCESS_CONFIG_T ∗pProcessConfig )
Open a session with the TRDP stack.
tlc_openSession returns in pAppHandle a unique handle to be used in further calls to the stack.
Parameters
out pAppHandle A handle for further calls to the trdp stack
in ownIpAddr Own IP address, can be different for each process in multihoming systems, if zero,
the default interface / IP will be used.
in leaderIpAddr IP address of redundancy leader
in pMarshall Pointer to marshalling configuration
in pPdDefault Pointer to default PD configuration
in pMdDefault Pointer to default MD configuration
in pProcessConfig Pointer to process configuration only option parameter is used here to define session
behavior all other parameters are only used to feed statistics
Generated by Doxygen

162 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR not yet inited
TRDP_PARAM_ERR parameter error
TRDP_SOCK_ERR socket error
5.17.2.11 tlc_process()
EXT_DECL TRDP_ERR_T tlc_process (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Work loop of the TRDP handler.
Search the queue for pending PDs to be sent Search the receive queue for pending PDs (time out)
Parameters
in appHandle The handle returned by tlc_openSession
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.17.2.12 tlc_reinitSession()
EXT_DECL TRDP_ERR_T tlc_reinitSession (
TRDP_APP_SESSION_T appHandle )
Re-Initialize.
Should be called by the application when a link-down/link-up event has occured during normal operation. We need
to re-join the multicast groups...
Parameters
in appHandle The handle returned by tlc_openSession
Return values
TRDP_NO_ERR no error
Generated by Doxygen

5.17 trdp_if.c File Reference 163
Return values
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR handle NULL
5.17.2.13 tlc_setETBTopoCount()
EXT_DECL TRDP_ERR_T tlc_setETBTopoCount (
TRDP_APP_SESSION_T appHandle,
UINT32 etbTopoCnt )
Set new topocount for trainwide communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle the handle returned by tlc_openSession
in etbTopoCnt New etbTopoCnt value
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.17.2.14 tlc_setOpTrainTopoCount()
EXT_DECL TRDP_ERR_T tlc_setOpTrainTopoCount (
TRDP_APP_SESSION_T appHandle,
UINT32 opTrnTopoCnt )
Set new operational train topocount for direction/orientation sensitive communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
in opTrnTopoCnt New operational topocount value
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
Generated by Doxygen

164 File Documentation
5.17.2.15 tlc_terminate()
EXT_DECL TRDP_ERR_T tlc_terminate (
void )
Un-Initialize.
Clean up and close all sessions. Mainly used for debugging/test runs. No further calls to library allowed
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR no error
TRDP_MEM_ERR TrafficStore nothing
TRDP_MUTEX_ERR TrafficStore mutex err
5.17.2.16 tlp_get()
EXT_DECL TRDP_ERR_T tlp_get (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
TRDP_PD_INFO_T ∗pPdInfo,
UINT8 ∗pData,
UINT32 ∗pDataSize )
Get the last valid PD message.
This allows polling of PDs instead of event driven handling by callbacks
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle returned by subscription
in,out pPdInfo pointer to application's info buffer
in,out pData pointer to application's data buffer
in,out pDataSize in: size of buffer, out: size of data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_SUB_ERR not subscribed
TRDP_TIMEOUT_ERR packet timed out
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
Generated by Doxygen

5.17 trdp_if.c File Reference 165
5.17.2.17 tlp_getRedundant()
EXT_DECL TRDP_ERR_T tlp_getRedundant (
TRDP_APP_SESSION_T appHandle,
UINT32 redId,
BOOL8 ∗pLeader )
Get status of redundant ComIds.
Only the status of the first found redundancy group entry will be returned!
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be returned for all ComID's with the given redId
in,out pLeader TRUE if we're sending this redundancy group (leader)
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR redId invalid or not existing
TRDP_NOINIT_ERR handle invalid
5.17.2.18 tlp_publish()
EXT_DECL TRDP_ERR_T tlp_publish (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T ∗pPubHandle,
const void ∗pUserRef,
TRDP_PD_CALLBACK_T pfCbFunction,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
UINT32 interval,
UINT32 redId,
TRDP_FLAGS_T pktFlags,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Prepare for sending PD messages.
Queue a PD message, it will be send when tlc_publish has been called
Parameters
in appHandle the handle returned by tlc_openSession
Generated by Doxygen

166 File Documentation
Parameters
out pPubHandle returned handle for related re/unpublish
in pUserRef user supplied value returned within the info structure of callback function
in pfCbFunction Pointer to pre-send callback function, NULL if not used
in comId comId of packet to send
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in interval frequency of PD packet (>= 10ms) in usec
in redId 0 - Non-redundant, >0 valid redundancy group
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to data packet / dataset, NULL if sending starts later with tlp_put()
in dataSize size of data packet >= 0 and <= TRDP_MAX_PD_DATA_SIZE
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
5.17.2.19 tlp_put()
TRDP_ERR_T tlp_put (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T pubHandle,
const UINT8 ∗pData,
UINT32 dataSize )
Update the process data to send.
Update previously published data. The new telegram will be sent earliest when tlc_process is called.
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by publish
in,out pData pointer to application's data buffer
in,out dataSize size of data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error on uninitialized parameter or changed dataSize compared to
published one
Generated by Doxygen

5.17 trdp_if.c File Reference 167
Return values
TRDP_NOPUB_ERR not published
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
5.17.2.20 tlp_republish()
EXT_DECL TRDP_ERR_T tlp_republish (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T pubHandle,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr )
Prepare for sending PD messages.
Reinitialize and queue a PD message, it will be send when tlc_publish has been called
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle handle for related unpublish
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
5.17.2.21 tlp_request()
EXT_DECL TRDP_ERR_T tlp_request (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
Generated by Doxygen

168 File Documentation
UINT32 redId,
TRDP_FLAGS_T pktFlags,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
UINT32 replyComId,
TRDP_IP_ADDR_T replyIpAddr )
Initiate sending PD messages (PULL).
Send a PD request message
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle from related subscribe
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in redId 0 - Non-redundant, >0 valid redundancy group
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to packet data / dataset
in dataSize size of packet data
in replyComId comId of reply (default comID of subscription)
in replyIpAddr IP for reply
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
TRDP_NOSUB_ERR no matching subscription found
5.17.2.22 tlp_resubscribe()
EXT_DECL TRDP_ERR_T tlp_resubscribe (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr1,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T destIpAddr )
Reprepare for receiving PD messages.
Resubscribe to a specific PD ComID and source IP
Generated by Doxygen

5.17 trdp_if.c File Reference 169
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle for this subscription
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set to 0 if not used
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in destIpAddr IP address to join
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
TRDP_NOINIT_ERR handle invalid
TRDP_SOCK_ERR Resource (socket) not available, subscription canceled
5.17.2.23 tlp_setRedundant()
TRDP_ERR_T tlp_setRedundant (
TRDP_APP_SESSION_T appHandle,
UINT32 redId,
BOOL8 leader )
Do not send non-redundant PDs when we are follower.
Do not send redundant PD's when we are follower.
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be set for all ComID's with the given redId, 0 to change for all redId
in leader TRUE if we send
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error / redId not existing
TRDP_NOINIT_ERR handle invalid
5.17.2.24 tlp_subscribe()
EXT_DECL TRDP_ERR_T tlp_subscribe (
TRDP_APP_SESSION_T appHandle,
Generated by Doxygen

170 File Documentation
TRDP_SUB_T ∗pSubHandle,
const void ∗pUserRef,
TRDP_PD_CALLBACK_T pfCbFunction,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr1,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
UINT32 timeout,
TRDP_TO_BEHAVIOR_T toBehavior )
Prepare for receiving PD messages.
Subscribe to a specific PD ComID and source IP.
Parameters
in appHandle the handle returned by tlc_openSession
out pSubHandle return a handle for this subscription
in pUserRef user supplied value returned within the info structure
in pfCbFunction Pointer to subscriber specific callback function, NULL to use default function
in comId comId of packet to receive
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set to 0 if not used
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in destIpAddr IP address to join
in timeout timeout (>= 10ms) in usec
in toBehavior timeout behavior
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
TRDP_NOINIT_ERR handle invalid
5.17.2.25 tlp_unpublish()
TRDP_ERR_T tlp_unpublish (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T pubHandle )
Stop sending PD messages.
Generated by Doxygen

5.17 trdp_if.c File Reference 171
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by prepare
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOPUB_ERR not published
TRDP_NOINIT_ERR handle invalid
5.17.2.26 tlp_unsubscribe()
EXT_DECL TRDP_ERR_T tlp_unsubscribe (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle )
Stop receiving PD messages.
Unsubscribe to a specific PD ComID
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle for this subscription
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOSUB_ERR not subscribed
TRDP_NOINIT_ERR handle invalid
5.17.2.27 trdp_isValidSession()
BOOL8 trdp_isValidSession (
TRDP_APP_SESSION_T pSessionHandle )
Check if the session handle is valid.
Parameters
in pSessionHandle pointer to packet data (dataset)
Generated by Doxygen

5.18 trdp_if.h File Reference 173
#include "trdp_if_light.h"
Include dependency graph for trdp_if.h:
trdp_if.h
trdp_if_light.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
trdp_if.h
trdp_mdcom.c trdp_pdcom.c trdp_stats.c trdp_utils.c
Functions
• BOOL8 trdp_isValidSession (TRDP_APP_SESSION_T pSessionHandle)
Generated by Doxygen

174 File Documentation
Check if the session handle is valid.
•TRDP_APP_SESSION_T ∗trdp_sessionQueue (void)
Get the session queue head pointer.
5.18.1 Detailed Description
Typedefs for TRDP communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_if.h 1264 2014-07-14 15:54:26Z bloehr
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
5.18.2 Function Documentation
5.18.2.1 trdp_isValidSession()
BOOL8 trdp_isValidSession (
TRDP_APP_SESSION_T pSessionHandle )
Check if the session handle is valid.
Parameters
in pSessionHandle pointer to packet data (dataset)
Return values
TRUE is valid
FALSE is invalid
Generated by Doxygen

5.19 trdp_if_light.h File Reference 175
5.18.2.2 trdp_sessionQueue()
TRDP_APP_SESSION_T∗trdp_sessionQueue (
void )
Get the session queue head pointer.
Return values
&sSession
5.19 trdp_if_light.h File Reference
TRDP Light interface functions (API)
#include "trdp_types.h"
Include dependency graph for trdp_if_light.h:
trdp_if_light.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
Generated by Doxygen

176 File Documentation
This graph shows which files directly or indirectly include this file:
trdp_if_light.h
tau_cstinfo.c
tau_tti.c
tau_ctrl.c tau_dnr.c tau_marshall.c
trdp_if.c
trdp_stats.h
trdp_stats.c
trdp_if.h
trdp_mdcom.ctrdp_pdcom.c trdp_utils.c
Functions
• EXT_DECL TRDP_ERR_T tlc_init (const TRDP_PRINT_DBG_T pPrintDebugString, void ∗pRefCon, const
TRDP_MEM_CONFIG_T ∗pMemConfig)
Support for message data can only be excluded during compile time!
• EXT_DECL TRDP_ERR_T tlc_openSession (TRDP_APP_SESSION_T ∗pAppHandle, TRDP_IP_ADDR←-
_T ownIpAddr, TRDP_IP_ADDR_T leaderIpAddr, const TRDP_MARSHALL_CONFIG_T ∗pMarshall, const
TRDP_PD_CONFIG_T ∗pPdDefault, const TRDP_MD_CONFIG_T ∗pMdDefault, const TRDP_PROCES←-
S_CONFIG_T ∗pProcessConfig)
Open a session with the TRDP stack.
• EXT_DECL TRDP_ERR_T tlc_reinitSession (TRDP_APP_SESSION_T appHandle)
Re-Initialize.
• EXT_DECL TRDP_ERR_T tlc_configSession (TRDP_APP_SESSION_T appHandle, const TRDP_MAR←-
SHALL_CONFIG_T ∗pMarshall, const TRDP_PD_CONFIG_T ∗pPdDefault, const TRDP_MD_CONFIG_T
∗pMdDefault, const TRDP_PROCESS_CONFIG_T ∗pProcessConfig)
(Re-)configure a session.
• EXT_DECL TRDP_ERR_T tlc_closeSession (TRDP_APP_SESSION_T appHandle)
Close a session.
• EXT_DECL TRDP_ERR_T tlc_terminate (void)
Un-Initialize.
• EXT_DECL TRDP_ERR_T tlc_setETBTopoCount (TRDP_APP_SESSION_T appHandle, UINT32 etbTopo←-
Cnt)
Set new topocount for trainwide communication.
• EXT_DECL UINT32 tlc_getETBTopoCount (TRDP_APP_SESSION_T appHandle)
Set new topocount for trainwide communication.
• EXT_DECL TRDP_ERR_T tlc_setOpTrainTopoCount (TRDP_APP_SESSION_T appHandle, UINT32 op←-
TrnTopoCnt)
Set new operational train topocount for direction/orientation sensitive communication.
• EXT_DECL UINT32 tlc_getOpTrainTopoCount (TRDP_APP_SESSION_T appHandle)
Set new operational train topocount for direction/orientation sensitive communication.
• EXT_DECL TRDP_ERR_T tlc_freeBuf (TRDP_APP_SESSION_T appHandle, char ∗pBuf)
Frees the buffer reserved by the TRDP layer.
• EXT_DECL TRDP_ERR_T tlc_getInterval (TRDP_APP_SESSION_T appHandle, TRDP_TIME_T ∗pInterval,
TRDP_FDS_T ∗pFileDesc, INT32 ∗pNoDesc)
Get the lowest time interval for PDs.
• EXT_DECL TRDP_ERR_T tlc_process (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pRfds, INT32
∗pCount)
Work loop of the TRDP handler.
• EXT_DECL TRDP_IP_ADDR_T tlc_getOwnIpAddress (TRDP_APP_SESSION_T appHandle)
Get the interface address.
Generated by Doxygen

5.19 trdp_if_light.h File Reference 177
• EXT_DECL TRDP_ERR_T tlp_publish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T ∗pPubHandle,
const void ∗pUserRef, TRDP_PD_CALLBACK_T pfCbFunction, UINT32 comId, UINT32 etbTopoCnt, UIN←-
T32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr, UINT32 interval, UINT32
redId, TRDP_FLAGS_T pktFlags, const TRDP_SEND_PARAM_T ∗pSendParam, const UINT8 ∗pData, U←-
INT32 dataSize)
Prepare for sending PD messages.
• EXT_DECL TRDP_ERR_T tlp_republish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle,
UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr)
Prepare for sending PD messages.
• EXT_DECL TRDP_ERR_T tlp_unpublish (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle)
Stop sending PD messages.
• EXT_DECL TRDP_ERR_T tlp_put (TRDP_APP_SESSION_T appHandle, TRDP_PUB_T pubHandle, const
UINT8 ∗pData, UINT32 dataSize)
Update the process data to send.
• EXT_DECL TRDP_ERR_T tlp_setRedundant (TRDP_APP_SESSION_T appHandle, UINT32 redId, BOOL8
leader)
Do not send redundant PD's when we are follower.
• EXT_DECL TRDP_ERR_T tlp_getRedundant (TRDP_APP_SESSION_T appHandle, UINT32 redId, BOOL8
∗pLeader)
Get status of redundant ComIds.
• EXT_DECL TRDP_ERR_T tlp_request (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T subHandle,
UINT32 comId, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_AD←-
DR_T destIpAddr, UINT32 redId, TRDP_FLAGS_T pktFlags, const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData, UINT32 dataSize, UINT32 replyComId, TRDP_IP_ADDR_T replyIpAddr)
Initiate sending PD messages (PULL).
• EXT_DECL TRDP_ERR_T tlp_subscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T ∗pSub←-
Handle, const void ∗pUserRef, TRDP_PD_CALLBACK_T pfCbFunction, UINT32 comId, UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr1, TRDP_IP_ADDR_T srcIpAddr2, TRDP_IP_ADD←-
R_T destIpAddr, TRDP_FLAGS_T pktFlags, UINT32 timeout, TRDP_TO_BEHAVIOR_T toBehavior)
Prepare for receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_resubscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T sub←-
Handle, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr1, TRDP_IP_ADDR_T
srcIpAddr2, TRDP_IP_ADDR_T destIpAddr)
Reprepare for receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_unsubscribe (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T sub←-
Handle)
Stop receiving PD messages.
• EXT_DECL TRDP_ERR_T tlp_get (TRDP_APP_SESSION_T appHandle, TRDP_SUB_T subHandle, TR←-
DP_PD_INFO_T ∗pPdInfo, UINT8 ∗pData, UINT32 ∗pDataSize)
Get the last valid PD message.
• EXT_DECL TRDP_ERR_T tlm_notify (TRDP_APP_SESSION_T appHandle, const void ∗pUserRef, TRD←-
P_MD_CALLBACK_T pfCbFunction, UINT32 comId, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_←-
IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr, TRDP_FLAGS_T pktFlags, const TRDP_SEND_←-
PARAM_T ∗pSendParam, const UINT8 ∗pData, UINT32 dataSize, const TRDP_URI_USER_T sourceURI,
const TRDP_URI_USER_T destURI)
Initiate sending MD notification message.
• EXT_DECL TRDP_ERR_T tlm_request (TRDP_APP_SESSION_T appHandle, const void ∗pUserRef, T←-
RDP_MD_CALLBACK_T pfCbFunction, TRDP_UUID_T ∗pSessionId, UINT32 comId, UINT32 etbTopo←-
Cnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr, TRDP_FLA←-
GS_T pktFlags, UINT32 numReplies, UINT32 replyTimeout, const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData, UINT32 dataSize, const TRDP_URI_USER_T sourceURI, const TRDP_URI_USER_T
destURI)
Initiate sending MD request message.
• EXT_DECL TRDP_ERR_T tlm_confirm (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T ∗p←-
SessionId, UINT16 userStatus, const TRDP_SEND_PARAM_T ∗pSendParam)
Generated by Doxygen

178 File Documentation
Initiate sending MD confirm message.
• EXT_DECL TRDP_ERR_T tlm_abortSession (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T
∗pSessionId)
Cancel an open session.
• EXT_DECL TRDP_ERR_T tlm_addListener (TRDP_APP_SESSION_T appHandle, TRDP_LIS_T ∗pListen←-
Handle, const void ∗pUserRef, TRDP_MD_CALLBACK_T pfCbFunction, BOOL8 comIdListener, UINT32
comId, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr1, TRDP_IP_ADDR_←-
TsrcIpAddr2, TRDP_IP_ADDR_T mcDestIpAddr, TRDP_FLAGS_T pktFlags, const TRDP_URI_USER_T
srcURI, const TRDP_URI_USER_T destURI)
Subscribe to MD messages.
• EXT_DECL TRDP_ERR_T tlm_readdListener (TRDP_APP_SESSION_T appHandle, TRDP_LIS_T listen←-
Handle, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_←-
TsrcIpAddr2, TRDP_IP_ADDR_T mcDestIpAddr)
Resubscribe to MD messages.
• EXT_DECL TRDP_ERR_T tlm_delListener (TRDP_APP_SESSION_T appHandle, TRDP_LIS_T listen←-
Handle)
Remove Listener.
•TRDP_ERR_T tlm_reply (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T ∗pSessionId, UINT32
comId, UINT16 userStatus, const TRDP_SEND_PARAM_T ∗pSendParam, const UINT8 ∗pData, UINT32
dataSize)
Send a MD reply message.
•TRDP_ERR_T tlm_replyQuery (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T ∗pSessionId,
UINT32 comId, UINT16 userStatus, UINT32 confirmTimeout, const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData, UINT32 dataSize)
Send a MD reply query message.
• EXT_DECL const CHAR8 ∗tlc_getVersionString (void)
Return a human readable version representation.
• EXT_DECL const TRDP_VERSION_T ∗tlc_getVersion (void)
Return version.
• EXT_DECL TRDP_ERR_T tlc_getStatistics (TRDP_APP_SESSION_T appHandle, TRDP_STATISTICS_T
∗pStatistics)
Return statistics.
• EXT_DECL TRDP_ERR_T tlc_getSubsStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNum←-
Subs, TRDP_SUBS_STATISTICS_T ∗pStatistics)
Return PD subscription statistics.
• EXT_DECL TRDP_ERR_T tlc_getPubStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumPub,
TRDP_PUB_STATISTICS_T ∗pStatistics)
Return PD publish statistics.
• EXT_DECL TRDP_ERR_T tlc_getUdpListStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗p←-
NumList, TRDP_LIST_STATISTICS_T ∗pStatistics)
Return UDP MD listener statistics.
• EXT_DECL TRDP_ERR_T tlc_getTcpListStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNum←-
List, TRDP_LIST_STATISTICS_T ∗pStatistics)
Return TCP MD listener statistics.
• EXT_DECL TRDP_ERR_T tlc_getRedStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumRed,
TRDP_RED_STATISTICS_T ∗pStatistics)
Return redundancy group statistics.
• EXT_DECL TRDP_ERR_T tlc_getJoinStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumJoin,
UINT32 ∗pIpAddr)
Return join statistics.
• EXT_DECL TRDP_ERR_T tlc_resetStatistics (TRDP_APP_SESSION_T appHandle)
Reset statistics.
Generated by Doxygen

5.19 trdp_if_light.h File Reference 179
5.19.1 Detailed Description
TRDP Light interface functions (API)
Low level functions for communicating using the TRDP protocol
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_if_light.h 1711 2018-03-06 16:11:32Z bloehr
BL 2018-03-06: Ticket #101 Optional callback function on PD send
BL 2018-02-03: Ticket #190 Source filtering (IP-range) for PD subscribe
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
AHW 2017-05-30: Ticket #143 tlm_replyErr() only at TRDP level allowed
BL 2015-11-24: Accessor for IP address of session
BL 2015-09-04: Ticket #99: refCon for tlc_init()
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
5.19.2 Function Documentation
5.19.2.1 tlc_closeSession()
EXT_DECL TRDP_ERR_T tlc_closeSession (
TRDP_APP_SESSION_T appHandle )
Close a session.
Clean up and release all resources of that session
Parameters
in appHandle The handle returned by tlc_openSession
Generated by Doxygen

180 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR handle NULL
5.19.2.2 tlc_configSession()
EXT_DECL TRDP_ERR_T tlc_configSession (
TRDP_APP_SESSION_T appHandle,
const TRDP_MARSHALL_CONFIG_T ∗pMarshall,
const TRDP_PD_CONFIG_T ∗pPdDefault,
const TRDP_MD_CONFIG_T ∗pMdDefault,
const TRDP_PROCESS_CONFIG_T ∗pProcessConfig )
(Re-)configure a session.
tlc_configSession is called by openSession, but may also be called later on to change the defaults.
Parameters
in appHandle A handle for further calls to the trdp stack
in pMarshall Pointer to marshalling configuration
in pPdDefault Pointer to default PD configuration
in pMdDefault Pointer to default MD configuration
in pProcessConfig Pointer to process configuration only option parameter is used here to define session
behavior all other parameters are only used to feed statistics
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR not yet inited
TRDP_PARAM_ERR parameter error
tlc_configSession is called by openSession, but may also be called later on to change the defaults. Only the supplied
settings (pointer != NULL) will be evaluated.
Parameters
in appHandle A handle for further calls to the trdp stack
in pMarshall Pointer to marshalling configuration
in pPdDefault Pointer to default PD configuration
in pMdDefault Pointer to default MD configuration
in pProcessConfig Pointer to process configuration only option parameter is used here to define session
behavior all other parameters are only used to feed statistics
Return values
TRDP_NO_ERR no error
Generated by Doxygen

5.19 trdp_if_light.h File Reference 181
Return values
TRDP_INIT_ERR not yet inited
TRDP_PARAM_ERR parameter error
5.19.2.3 tlc_freeBuf()
EXT_DECL TRDP_ERR_T tlc_freeBuf (
TRDP_APP_SESSION_T appHandle,
char ∗pBuf )
Frees the buffer reserved by the TRDP layer.
Parameters
in appHandle The handle returned by tlc_openSession
in pBuf pointer to the buffer to be freed
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR buffer pointer invalid
5.19.2.4 tlc_getETBTopoCount()
EXT_DECL UINT32 tlc_getETBTopoCount (
TRDP_APP_SESSION_T appHandle )
Set new topocount for trainwide communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle the handle returned by tlc_openSession
Return values
etbTopoCnt
Generated by Doxygen

182 File Documentation
5.19.2.5 tlc_getInterval()
EXT_DECL TRDP_ERR_T tlc_getInterval (
TRDP_APP_SESSION_T appHandle,
TRDP_TIME_T ∗pInterval,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Get the lowest time interval for PDs.
Return the maximum time interval suitable for 'select()' so that we can send due PD packets in time. If the PD send
queue is empty, return zero time
Parameters
in appHandle The handle returned by tlc_openSession
out pInterval pointer to needed interval
in,out pFileDesc pointer to file descriptor set
out pNoDesc pointer to put no of used descriptors (for select())
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
Return the maximum time interval suitable for 'select()' so that we can send due PD packets in time. If the PD send
queue is empty, return zero time
Parameters
in appHandle The handle returned by tlc_openSession
out pInterval pointer to needed interval
in,out pFileDesc pointer to file descriptor set
out pNoDesc pointer to put no of highest used descriptors (for select())
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.19.2.6 tlc_getJoinStatistics()
EXT_DECL TRDP_ERR_T tlc_getJoinStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumJoin,
UINT32 ∗pIpAddr )
Return join statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumJoin im-
plicitely.
Generated by Doxygen

5.19 trdp_if_light.h File Reference 183
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumJoin Pointer to the number of joined IP Adresses
out pIpAddr Pointer to a list with the joined IP adresses
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more items than requested
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumJoin Pointer to the number of joined IP Adresses
out pIpAddr Pointer to a list with the joined IP adresses
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more items than requested
5.19.2.7 tlc_getOpTrainTopoCount()
EXT_DECL UINT32 tlc_getOpTrainTopoCount (
TRDP_APP_SESSION_T appHandle )
Set new operational train topocount for direction/orientation sensitive communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
Return values
opTrnTopoCnt New operational topocount value
Generated by Doxygen

184 File Documentation
5.19.2.8 tlc_getOwnIpAddress()
EXT_DECL TRDP_IP_ADDR_T tlc_getOwnIpAddress (
TRDP_APP_SESSION_T appHandle )
Get the interface address.
Parameters
out appHandle A handle for further calls to the trdp stack
Return values
real←-
IP
5.19.2.9 tlc_getPubStatistics()
EXT_DECL TRDP_ERR_T tlc_getPubStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumPub,
TRDP_PUB_STATISTICS_T ∗pStatistics )
Return PD publish statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumPub im-
plicitely.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumPub Pointer to the number of publishers
out pStatistics pointer to a list with the publish statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumPub Pointer to the number of publishers
out pStatistics Pointer to a list with the publish statistics information
Generated by Doxygen

5.19 trdp_if_light.h File Reference 185
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.19.2.10 tlc_getRedStatistics()
EXT_DECL TRDP_ERR_T tlc_getRedStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumRed,
TRDP_RED_STATISTICS_T ∗pStatistics )
Return redundancy group statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumRed im-
plicitely.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumRed Pointer to the number of redundancy groups
out pStatistics Pointer to a list with the redundancy group information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumRed Pointer to the number of redundancy groups
out pStatistics Pointer to a list with the redundancy group information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
Generated by Doxygen

186 File Documentation
5.19.2.11 tlc_getStatistics()
EXT_DECL TRDP_ERR_T tlc_getStatistics (
TRDP_APP_SESSION_T appHandle,
TRDP_STATISTICS_T ∗pStatistics )
Return statistics.
Memory for statistics information must be preserved by the user.
Parameters
in appHandle the handle returned by tlc_openSession
out pStatistics Pointer to statistics for this application session
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
out pStatistics Pointer to statistics for this application session
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
5.19.2.12 tlc_getSubsStatistics()
EXT_DECL TRDP_ERR_T tlc_getSubsStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumSubs,
TRDP_SUBS_STATISTICS_T ∗pStatistics )
Return PD subscription statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumSub im-
plicitely.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumSubs In: The number of subscriptions requested Out: Number of subscriptions returned
in,out pStatistics Pointer to an array with the subscription statistics information
Generated by Doxygen

5.19 trdp_if_light.h File Reference 187
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumSubs In: The number of subscriptions requested Out: Number of subscriptions returned
in,out pStatistics Pointer to an array with the subscription statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.19.2.13 tlc_getTcpListStatistics()
EXT_DECL TRDP_ERR_T tlc_getTcpListStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumList,
TRDP_LIST_STATISTICS_T ∗pStatistics )
Return TCP MD listener statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumLis implicitely.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumList Pointer to the number of listeners
out pStatistics Pointer to a list with the listener statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
Generated by Doxygen

188 File Documentation
5.19.2.14 tlc_getUdpListStatistics()
EXT_DECL TRDP_ERR_T tlc_getUdpListStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumList,
TRDP_LIST_STATISTICS_T ∗pStatistics )
Return UDP MD listener statistics.
Memory for statistics information must be provided by the user. The reserved length is given via pNumLis implicitely.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumList Pointer to the number of listeners
out pStatistics Pointer to a list with the listener statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.19.2.15 tlc_getVersion()
EXT_DECL const TRDP_VERSION_T∗tlc_getVersion (
void )
Return version.
Return pointer to version structure
Return values
const TRDP_VERSION←-
_T
Return pointer to version structure
Return values
TRDP_VERSION←-
_T
Generated by Doxygen

5.19 trdp_if_light.h File Reference 189
5.19.2.16 tlc_getVersionString()
EXT_DECL const CHAR8∗tlc_getVersionString (
void )
Return a human readable version representation.
Return string in the form 'v.r.u.b'
Return values
const string
5.19.2.17 tlc_init()
EXT_DECL TRDP_ERR_T tlc_init (
const TRDP_PRINT_DBG_T pPrintDebugString,
void ∗pRefCon,
const TRDP_MEM_CONFIG_T ∗pMemConfig )
Support for message data can only be excluded during compile time!
Initialize the TRDP stack.
tlc_init initializes the memory subsystem and takes a function pointer to an output function for logging.
Parameters
in pPrintDebugString Pointer to debug print function
in pRefCon user context
in pMemConfig Pointer to memory configuration
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR memory allocation failed
TRDP_PARAM_ERR initialization error
Support for message data can only be excluded during compile time!
tlc_init initializes the memory subsystem and takes a function pointer to an output function for logging.
Parameters
in pPrintDebugString Pointer to debug print function
in pRefCon user context
in pMemConfig Pointer to memory configuration
Generated by Doxygen

190 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR memory allocation failed
TRDP_PARAM_ERR initialization error
5.19.2.18 tlc_openSession()
EXT_DECL TRDP_ERR_T tlc_openSession (
TRDP_APP_SESSION_T ∗pAppHandle,
TRDP_IP_ADDR_T ownIpAddr,
TRDP_IP_ADDR_T leaderIpAddr,
const TRDP_MARSHALL_CONFIG_T ∗pMarshall,
const TRDP_PD_CONFIG_T ∗pPdDefault,
const TRDP_MD_CONFIG_T ∗pMdDefault,
const TRDP_PROCESS_CONFIG_T ∗pProcessConfig )
Open a session with the TRDP stack.
tlc_openSession returns in pAppHandle a unique handle to be used in further calls to the stack.
Parameters
out pAppHandle A handle for further calls to the trdp stack
in ownIpAddr Own IP address, can be different for each process in multihoming systems, if zero,
the default interface / IP will be used.
in leaderIpAddr IP address of redundancy leader
in pMarshall Pointer to marshalling configuration
in pPdDefault Pointer to default PD configuration
in pMdDefault Pointer to default MD configuration
in pProcessConfig Pointer to process configuration only option parameter is used here to define session
behavior all other parameters are only used to feed statistics
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR not yet inited
TRDP_PARAM_ERR parameter error
TRDP_SOCK_ERR socket error
5.19.2.19 tlc_process()
EXT_DECL TRDP_ERR_T tlc_process (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Generated by Doxygen

5.19 trdp_if_light.h File Reference 191
Work loop of the TRDP handler.
Search the queue for pending PDs to be sent Search the receive queue for pending PDs (time out)
Parameters
in appHandle The handle returned by tlc_openSession
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.19.2.20 tlc_reinitSession()
EXT_DECL TRDP_ERR_T tlc_reinitSession (
TRDP_APP_SESSION_T appHandle )
Re-Initialize.
Should be called by the application when a link-down/link-up event has occured during normal operation. We need
to re-join the multicast groups...
Parameters
in appHandle The handle returned by tlc_openSession
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR handle NULL
5.19.2.21 tlc_resetStatistics()
EXT_DECL TRDP_ERR_T tlc_resetStatistics (
TRDP_APP_SESSION_T appHandle )
Reset statistics.
Parameters
in appHandle the handle returned by tlc_openSession
Generated by Doxygen

192 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
5.19.2.22 tlc_setETBTopoCount()
EXT_DECL TRDP_ERR_T tlc_setETBTopoCount (
TRDP_APP_SESSION_T appHandle,
UINT32 etbTopoCnt )
Set new topocount for trainwide communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
in etbTopoCnt New topocount value
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle the handle returned by tlc_openSession
in etbTopoCnt New etbTopoCnt value
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.19.2.23 tlc_setOpTrainTopoCount()
EXT_DECL TRDP_ERR_T tlc_setOpTrainTopoCount (
TRDP_APP_SESSION_T appHandle,
UINT32 opTrnTopoCnt )
Set new operational train topocount for direction/orientation sensitive communication.
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
in opTrnTopoCnt New operational topocount value
Generated by Doxygen

5.19 trdp_if_light.h File Reference 193
This value is used for validating outgoing and incoming packets only!
Parameters
in appHandle The handle returned by tlc_openSession
in opTrnTopoCnt New operational topocount value
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
5.19.2.24 tlc_terminate()
EXT_DECL TRDP_ERR_T tlc_terminate (
void )
Un-Initialize.
Clean up and close all sessions. Mainly used for debugging/test runs. No further calls to library allowed
Return values
TRDP_NO_ERR no error
Clean up and close all sessions. Mainly used for debugging/test runs. No further calls to library allowed
Return values
TRDP_NO_ERR no error
TRDP_INIT_ERR no error
TRDP_MEM_ERR TrafficStore nothing
TRDP_MUTEX_ERR TrafficStore mutex err
5.19.2.25 tlm_abortSession()
EXT_DECL TRDP_ERR_T tlm_abortSession (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId )
Cancel an open session.
Abort an open session; any pending messages will be dropped
Parameters
in appHandle the handle returned by tlc_openSession
in p←-
SessionId
Session ID returned by request
Generated by Doxygen

194 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_NO_SESSION_ERR no such session
TRDP_NOINIT_ERR handle invalid
5.19.2.26 tlm_addListener()
EXT_DECL TRDP_ERR_T tlm_addListener (
TRDP_APP_SESSION_T appHandle,
TRDP_LIS_T ∗pListenHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
BOOL8 comIdListener,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr1,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T mcDestIpAddr,
TRDP_FLAGS_T pktFlags,
const TRDP_URI_USER_T srcURI,
const TRDP_URI_USER_T destURI )
Subscribe to MD messages.
Add a listener to TRDP to get notified when messages are received
Parameters
in appHandle the handle returned by tlc_openSession
out pListenHandle Handle for this listener returned
in pUserRef user supplied value returned with received message
in pfCbFunction Pointer to listener specific callback function, NULL to use default function
in comIdListener set TRUE if comId shall be observed
in comId comId to be observed
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set 0 if not used
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in mcDestIpAddr multicast group to listen on
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_MARSHALL, TRDP_PLAGS_TCP
in srcURI only functional group of source URI, set 0 if not used
in destURI only functional group of destination URI, set 0 if not used
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
Generated by Doxygen

5.19 trdp_if_light.h File Reference 195
Return values
TRDP_NOINIT_ERR handle invalid
5.19.2.27 tlm_confirm()
EXT_DECL TRDP_ERR_T tlm_confirm (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId,
UINT16 userStatus,
const TRDP_SEND_PARAM_T ∗pSendParam )
Initiate sending MD confirm message.
Send a MD confirmation message User reference, source and destination IP addresses as well as topo counts and
packet flags are taken from the session
Parameters
in appHandle the handle returned by tlc_openSession
in pSessionId Session ID returned by request
in userStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NO_SESSION_ERR no such session
TRDP_NOINIT_ERR handle invalid
5.19.2.28 tlm_delListener()
EXT_DECL TRDP_ERR_T tlm_delListener (
TRDP_APP_SESSION_T appHandle,
TRDP_LIS_T listenHandle )
Remove Listener.
Parameters
in appHandle the handle returned by tlc_openSession
out listenHandle Handle for this listener
Generated by Doxygen

196 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOINIT_ERR handle invalid
5.19.2.29 tlm_notify()
EXT_DECL TRDP_ERR_T tlm_notify (
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
const TRDP_URI_USER_T sourceURI,
const TRDP_URI_USER_T destURI )
Initiate sending MD notification message.
Send a MD notification message
Parameters
in appHandle the handle returned by tlc_openSession
in pUserRef user supplied value returned with reply
in pfCbFunction Pointer to listener specific callback function, NULL to use default function
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in pktFlags OPTIONS: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_MARSHALL, TRDP_PLAGS_TCP
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to packet data / dataset
in dataSize size of packet data
in sourceURI only functional group of source URI
in destURI only functional group of destination URI
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
Generated by Doxygen

5.19 trdp_if_light.h File Reference 197
Return values
TRDP_NOINIT_ERR handle invalid
5.19.2.30 tlm_readdListener()
EXT_DECL TRDP_ERR_T tlm_readdListener (
TRDP_APP_SESSION_T appHandle,
TRDP_LIS_T listenHandle,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T mcDestIpAddr )
Resubscribe to MD messages.
Readd a listener after topoCount changes to get notified when messages are received
Parameters
in appHandle the handle returned by tlc_openSession
out listenHandle Handle for this listener
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr Source IP address, lower address in case of address range, set 0 if not used
in srcIpAddr2 upper address in case of address range, set 0 if not used
in mcDestIpAddr multicast group to listen on
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NOINIT_ERR handle invalid
5.19.2.31 tlm_reply()
TRDP_ERR_T tlm_reply (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId,
UINT32 comId,
UINT16 userStatus,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Generated by Doxygen

198 File Documentation
Send a MD reply message.
Send a MD reply message after receiving an request User reference, source and destination IP addresses as well
as topo counts and packet flags are taken from the session
Parameters
in appHandle the handle returned by tlc_openSession
in pSessionId Session ID returned by indication
in comId comId of packet to be sent
in userStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR Out of memory
TRDP_NO_SESSION_ERR no such session
TRDP_NOINIT_ERR handle invalid
5.19.2.32 tlm_replyQuery()
TRDP_ERR_T tlm_replyQuery (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId,
UINT32 comId,
UINT16 userStatus,
UINT32 confirmTimeout,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Send a MD reply query message.
Send a MD reply query message after receiving a request and ask for confirmation. User reference, source and
destination IP addresses as well as topo counts and packet flags are taken from the session
Parameters
in appHandle the handle returned by tlc_openSession
in pSessionId Session ID returned by indication
in comId comId of packet to be sent
in userStatus Info for requester about application errors
in confirmTimeout timeout for confirmation
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
Generated by Doxygen

5.19 trdp_if_light.h File Reference 199
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NO_SESSION_ERR no such session
TRDP_NOINIT_ERR handle invalid
5.19.2.33 tlm_request()
EXT_DECL TRDP_ERR_T tlm_request (
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
TRDP_UUID_T ∗pSessionId,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
UINT32 numReplies,
UINT32 replyTimeout,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
const TRDP_URI_USER_T sourceURI,
const TRDP_URI_USER_T destURI )
Initiate sending MD request message.
Send a MD request message
Parameters
in appHandle the handle returned by tlc_openSession
in pUserRef user supplied value returned with reply
in pfCbFunction Pointer to listener specific callback function, NULL to use default function
out pSessionId return session ID
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in pktFlags OPTIONS: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_MARSHALL, TRDP_PLAGS_TCP
in numReplies number of expected replies, 0 if unknown
in replyTimeout timeout for reply
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
in sourceURI only functional group of source URI
in destURI only functional group of destination URI
Generated by Doxygen

200 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NOINIT_ERR handle invalid
5.19.2.34 tlp_get()
EXT_DECL TRDP_ERR_T tlp_get (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
TRDP_PD_INFO_T ∗pPdInfo,
UINT8 ∗pData,
UINT32 ∗pDataSize )
Get the last valid PD message.
This allows polling of PDs instead of event driven handling by callback
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle returned by subscription
in,out pPdInfo pointer to application's info buffer
in,out pData pointer to application's data buffer
in,out pDataSize in: size of buffer, out: size of data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_SUB_ERR not subscribed
TRDP_TIMEOUT_ERR packet timed out
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
This allows polling of PDs instead of event driven handling by callbacks
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle returned by subscription
in,out pPdInfo pointer to application's info buffer
in,out pData pointer to application's data buffer
in,out pDataSize in: size of buffer, out: size of data
Generated by Doxygen

5.19 trdp_if_light.h File Reference 201
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_SUB_ERR not subscribed
TRDP_TIMEOUT_ERR packet timed out
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
5.19.2.35 tlp_getRedundant()
EXT_DECL TRDP_ERR_T tlp_getRedundant (
TRDP_APP_SESSION_T appHandle,
UINT32 redId,
BOOL8 ∗pLeader )
Get status of redundant ComIds.
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be set for all ComID's with the given redId, 0 for all redId
in,out pLeader TRUE if we send (leader)
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error / redId not existing
TRDP_NOINIT_ERR handle invalid
Only the status of the first found redundancy group entry will be returned!
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be returned for all ComID's with the given redId
in,out pLeader TRUE if we're sending this redundancy group (leader)
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR redId invalid or not existing
TRDP_NOINIT_ERR handle invalid
Generated by Doxygen

202 File Documentation
5.19.2.36 tlp_publish()
EXT_DECL TRDP_ERR_T tlp_publish (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T ∗pPubHandle,
const void ∗pUserRef,
TRDP_PD_CALLBACK_T pfCbFunction,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
UINT32 interval,
UINT32 redId,
TRDP_FLAGS_T pktFlags,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Prepare for sending PD messages.
Queue a PD message, it will be send when tlc_publish has been called
Parameters
in appHandle the handle returned by tlc_openSession
out pPubHandle returned handle for related re/unpublish
in pUserRef user supplied value returned within the info structure of callback function
in pfCbFunction Pointer to pre-send callback function, NULL if not used
in comId comId of packet to send
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in interval frequency of PD packet (>= 10ms) in usec
in redId 0 - Non-redundant, >0 valid redundancy group
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to data packet / dataset, NULL if sending starts later with tlp_put()
in dataSize size of data packet >= 0 and <= TRDP_MAX_PD_DATA_SIZE
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
Generated by Doxygen

5.19 trdp_if_light.h File Reference 203
5.19.2.37 tlp_put()
EXT_DECL TRDP_ERR_T tlp_put (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T pubHandle,
const UINT8 ∗pData,
UINT32 dataSize )
Update the process data to send.
Update previously published data. The new telegram will be sent earliest when tlc_process is called.
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by publish
in,out pData pointer to application's data buffer
in,out dataSize size of data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error on uninitialized parameter or changed dataSize compared to
published one
TRDP_PUB_ERR not published
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
Update previously published data. The new telegram will be sent earliest when tlc_process is called.
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by publish
in,out pData pointer to application's data buffer
in,out dataSize size of data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error on uninitialized parameter or changed dataSize compared to
published one
TRDP_NOPUB_ERR not published
TRDP_NOINIT_ERR handle invalid
TRDP_COMID_ERR ComID not found when marshalling
5.19.2.38 tlp_republish()
EXT_DECL TRDP_ERR_T tlp_republish (
TRDP_APP_SESSION_T appHandle,
Generated by Doxygen

204 File Documentation
TRDP_PUB_T pubHandle,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr )
Prepare for sending PD messages.
Reinitialize and queue a PD message, it will be send when tlc_publish has been called
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle handle for related unpublish
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
5.19.2.39 tlp_request()
EXT_DECL TRDP_ERR_T tlp_request (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
UINT32 redId,
TRDP_FLAGS_T pktFlags,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
UINT32 replyComId,
TRDP_IP_ADDR_T replyIpAddr )
Initiate sending PD messages (PULL).
Send a PD request message
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle from related subscribe
Generated by Doxygen

5.19 trdp_if_light.h File Reference 205
Parameters
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in redId 0 - Non-redundant, >0 valid redundancy group
in pktFlags OPTIONS: TTRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE,
TRDP_FLAGS_MARSHALL, TRDP_FLAGS_CALLBACK
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to packet data / dataset
in dataSize size of packet data
in replyComId comId of reply
in replyIpAddr IP for reply
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
Send a PD request message
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle from related subscribe
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in redId 0 - Non-redundant, >0 valid redundancy group
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in pSendParam optional pointer to send parameter, NULL - default parameters are used
in pData pointer to packet data / dataset
in dataSize size of packet data
in replyComId comId of reply (default comID of subscription)
in replyIpAddr IP for reply
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not insert (out of memory)
TRDP_NOINIT_ERR handle invalid
TRDP_NOSUB_ERR no matching subscription found
Generated by Doxygen

206 File Documentation
5.19.2.40 tlp_resubscribe()
EXT_DECL TRDP_ERR_T tlp_resubscribe (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr1,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T destIpAddr )
Reprepare for receiving PD messages.
Resubscribe to a specific PD ComID and source IP
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle for this subscription
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 IP for source filtering, set 0 if not used
in srcIpAddr2 IP for source filtering range, set 0 if not used
in destIpAddr IP address to join
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
TRDP_NOINIT_ERR handle invalid
Resubscribe to a specific PD ComID and source IP
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle handle for this subscription
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set to 0 if not used
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in destIpAddr IP address to join
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
Generated by Doxygen

5.19 trdp_if_light.h File Reference 207
Return values
TRDP_NOINIT_ERR handle invalid
TRDP_SOCK_ERR Resource (socket) not available, subscription canceled
5.19.2.41 tlp_setRedundant()
EXT_DECL TRDP_ERR_T tlp_setRedundant (
TRDP_APP_SESSION_T appHandle,
UINT32 redId,
BOOL8 leader )
Do not send redundant PD's when we are follower.
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be set for all ComID's with the given redId, 0 to change for all redId
in leader TRUE if we send
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error / redId not existing
TRDP_NOINIT_ERR handle invalid
Do not send redundant PD's when we are follower.
Parameters
in appHandle the handle returned by tlc_openSession
in redId will be set for all ComID's with the given redId, 0 to change for all redId
in leader TRUE if we send
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error / redId not existing
TRDP_NOINIT_ERR handle invalid
5.19.2.42 tlp_subscribe()
EXT_DECL TRDP_ERR_T tlp_subscribe (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T ∗pSubHandle,
Generated by Doxygen

208 File Documentation
const void ∗pUserRef,
TRDP_PD_CALLBACK_T pfCbFunction,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr1,
TRDP_IP_ADDR_T srcIpAddr2,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
UINT32 timeout,
TRDP_TO_BEHAVIOR_T toBehavior )
Prepare for receiving PD messages.
Subscribe to a specific PD ComID and source IP
Parameters
in appHandle the handle returned by tlc_openSession
out pSubHandle return a handle for this subscription
in pUserRef user supplied value returned within the info structure
in pfCbFunction Pointer to subscriber specific callback function, NULL to use default function
in comId comId of packet to receive
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set to 0 if not used
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in destIpAddr IP address to join
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE,
TRDP_FLAGS_MARSHALL, TRDP_FLAGS_CALLBACK
in timeout timeout (>= 10ms) in usec
in toBehavior OPTION: TRDP_TO_DEFAULT, TRDP_TO_SET_TO_ZERO,
TRDP_TO_KEEP_LAST_VALUE
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
TRDP_NOINIT_ERR handle invalid
Subscribe to a specific PD ComID and source IP.
Parameters
in appHandle the handle returned by tlc_openSession
out pSubHandle return a handle for this subscription
in pUserRef user supplied value returned within the info structure
in pfCbFunction Pointer to subscriber specific callback function, NULL to use default function
in comId comId of packet to receive
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr1 Source IP address, lower address in case of address range, set to 0 if not used
Generated by Doxygen

5.19 trdp_if_light.h File Reference 209
Parameters
in srcIpAddr2 upper address in case of address range, set to 0 if not used
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE, TRDP_FLAGS_MARSHALL,
TRDP_FLAGS_CALLBACK
in destIpAddr IP address to join
in timeout timeout (>= 10ms) in usec
in toBehavior timeout behavior
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR could not reserve memory (out of memory)
TRDP_NOINIT_ERR handle invalid
5.19.2.43 tlp_unpublish()
EXT_DECL TRDP_ERR_T tlp_unpublish (
TRDP_APP_SESSION_T appHandle,
TRDP_PUB_T pubHandle )
Stop sending PD messages.
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by publish
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOPUB_ERR not published
TRDP_NOINIT_ERR handle invalid
Parameters
in appHandle the handle returned by tlc_openSession
in pubHandle the handle returned by prepare
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOPUB_ERR not published
TRDP_NOINIT_ERR handle invalid
Generated by Doxygen

210 File Documentation
5.19.2.44 tlp_unsubscribe()
EXT_DECL TRDP_ERR_T tlp_unsubscribe (
TRDP_APP_SESSION_T appHandle,
TRDP_SUB_T subHandle )
Stop receiving PD messages.
Unsubscribe to a specific PD ComID
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle for this subscription
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_SUB_ERR not subscribed
TRDP_NOINIT_ERR handle invalid
Unsubscribe to a specific PD ComID
Parameters
in appHandle the handle returned by tlc_openSession
in subHandle the handle for this subscription
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_NOSUB_ERR not subscribed
TRDP_NOINIT_ERR handle invalid
5.20 trdp_mdcom.c File Reference
Functions for MD communication.
#include <string.h>
#include "trdp_if_light.h"
#include "trdp_if.h"
#include "trdp_utils.h"
Generated by Doxygen

5.20 trdp_mdcom.c File Reference 211
#include "trdp_mdcom.h"
Include dependency graph for trdp_mdcom.c:
trdp_mdcom.c
string.h
trdp_if_light.h
trdp_if.h trdp_utils.htrdp_mdcom.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.hiec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
stdio.h
trdp_private.h vos_utils.h
stddef.h
Functions
•TRDP_ERR_T trdp_mdGetTCPSocket (TRDP_SESSION_PT pSession)
Initialize the specific parameters for message data Open a listening socket.
• void trdp_mdFreeSession (MD_ELE_T ∗pMDSession)
Free memory of session.
•TRDP_ERR_T trdp_mdSend (TRDP_SESSION_PT appHandle)
Sending MD messages Send the messages stored in the sendQueue Call user's callback if needed.
• void trdp_mdCheckPending (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pFileDesc, INT32 ∗p←-
NoDesc)
Check for pending packets, set FD if non blocking.
• void trdp_mdCheckListenSocks (const TRDP_SESSION_PT appHandle, TRDP_FDS_T ∗pRfds, INT32 ∗p←-
Count)
Checking receive connection requests and data Call user's callback if needed.
• void trdp_mdCheckTimeouts (TRDP_SESSION_PT appHandle)
Checking message data timeouts Call user's callback if needed.
•TRDP_ERR_T trdp_mdReply (const TRDP_MSG_T msgType, TRDP_APP_SESSION_T appHandle, TRD←-
P_UUID_T pSessionId, UINT32 comId, UINT32 timeout, INT32 replyStatus, const TRDP_SEND_PARAM_T
∗pSendParam, const UINT8 ∗pData, UINT32 dataSize)
Send a MD reply/reply query message.
•TRDP_ERR_T trdp_mdCall (const TRDP_MSG_T msgType, TRDP_APP_SESSION_T appHandle, const
void ∗pUserRef, TRDP_MD_CALLBACK_T pfCbFunction, TRDP_UUID_T ∗pSessionId, UINT32 comId, U←-
INT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags, UINT32 numExpReplies, UINT32 replyTimeout, INT32 replyStatus, const TR←-
DP_SEND_PARAM_T ∗pSendParam, const UINT8 ∗pData, UINT32 dataSize, const TRDP_URI_USER_T
srcURI, const TRDP_URI_USER_T destURI)
Generated by Doxygen

212 File Documentation
Initiate sending MD request message - private SW level Send a MD request message.
•TRDP_ERR_T trdp_mdConfirm (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T ∗pSessionId,
UINT16 userStatus, const TRDP_SEND_PARAM_T ∗pSendParam)
Initiate sending MD confirm message - private SW level Send a MD confirmation message User reference, source
and destination IP addresses as well as topo counts and packet flags are taken from the session.
5.20.1 Detailed Description
Functions for MD communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Simone Pachera, FARsystems Gari Oiarbide, CAF Michael Koch, Bombardier Transportations Bernd Loehr,
NewTec
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_mdcom.c 1779 2018-11-07 09:49:55Z bloehr
BL 2018-11-07: Ticket #185 MD reply: Infinite timeout wrong handled
BL 2018-11-07: Ticket #220 Message Data - Different behaviour UDP & TCP
BL 2018-11-06: for-loops limited to sCurrentMaxSocketCnt instead VOS_MAX_SOCKET_CNT
BL 2018-06-27: Ticket #206 Message data transmission fails for several test cases (revisited, size handling restored)
SB 2018-10-29: Ticket #216: Message data size and padding wrong if marshalling is used
BL 2018-06-27: Ticket #206 Message data transmission fails for several test cases
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2018-05-14: Ticket #200 Notify ’sender element’ fields, set twice
BL 2018-01-29: Ticket #188 Typo in the TRDP_VAR_SIZE definition
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-15: Ticket #1 Unjoin on unsubscribe/delListener (finally ;-)
BL 2017-11-09: Ticket #174: Receiving fragmented TCP packets
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2017-06-28: Ticket #160: Receiving fragmented TCP packets
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
AHW 2017-05-22: Ticket #158 Infinit timeout at TRDB level is 0 acc. standard
BL 2017-05-08: Compiler warnings, doxygen comment errors
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-27: Ticket #148 Wrong element used in trdp_mdCheckTimeouts() to invoke the callback
BL 2017-02-10: Ticket #138 Erroneous closing of receive md socket
BL 2017-02-10: Ticket #142 Compiler warnings / MISRA-C 2012 issues
BL 2016-07-09: Ticket #127 MD notify message: Invalid session identifier
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-03-10: Ticket #115 MD: Missing parameter pktFlags in tlm_reply() and tlm_replyQuery()
BL 2016-02-04: Ticket #110: Handling of optional marshalling on sending
BL 2015-12-22: Mutex removed
BL 2015-08-31: Ticket #94: TRDP_REDUNDANT flag is evaluated, beQuiet removed
BL 2014-08-28: Ticket #62: Failing TCP communication fixed,
Do not read if there’s nothing to read (’Mc’ has no data!)
BL 2014-08-25: Ticket #57+58: Padding / zero bytes trailing MD & PD packets fixed
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
Ticket #47: Protocol change: no FCS for data part of telegrams
BL 2014-02-28: Ticket #25: CRC32 calculation is not according to IEEE802.3
Generated by Doxygen

5.20 trdp_mdcom.c File Reference 213
5.20.2 Function Documentation
5.20.2.1 trdp_mdCall()
TRDP_ERR_T trdp_mdCall (
const TRDP_MSG_T msgType,
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
TRDP_UUID_T ∗pSessionId,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
UINT32 numExpReplies,
UINT32 replyTimeout,
INT32 replyStatus,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
const TRDP_URI_USER_T srcURI,
const TRDP_URI_USER_T destURI )
Initiate sending MD request message - private SW level Send a MD request message.
Parameters
in msgType TRDP_MSG_MN or TRDP_MSG_MR
in appHandle the handle returned by tlc_init
in pUserRef user supplied value returned with reply
in pfCbFunction Pointer to listener specific callback function, NULL to use default function
out pSessionId return session ID
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE,
TRDP_FLAGS_MARSHALL
in numExpReplies number of expected replies, 0 if unknown
in replyTimeout timeout for reply
in replyStatus status to be returned
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
in srcURI only functional group of source URI
in destURI only functional group of destination URI
Generated by Doxygen

214 File Documentation
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
5.20.2.2 trdp_mdCheckListenSocks()
void trdp_mdCheckListenSocks (
const TRDP_SESSION_PT appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Checking receive connection requests and data Call user's callback if needed.
Parameters
in appHandle session pointer
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
5.20.2.3 trdp_mdCheckPending()
void trdp_mdCheckPending (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Check for pending packets, set FD if non blocking.
Parameters
in appHandle session pointer
in,out pFileDesc pointer to set of ready descriptors
in,out pNoDesc pointer to number of ready descriptors
5.20.2.4 trdp_mdCheckTimeouts()
void trdp_mdCheckTimeouts (
TRDP_SESSION_PT appHandle )
Checking message data timeouts Call user's callback if needed.
Generated by Doxygen

5.20 trdp_mdcom.c File Reference 215
Parameters
in appHandle session pointer
5.20.2.5 trdp_mdConfirm()
TRDP_ERR_T trdp_mdConfirm (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId,
UINT16 userStatus,
const TRDP_SEND_PARAM_T ∗pSendParam )
Initiate sending MD confirm message - private SW level Send a MD confirmation message User reference, source
and destination IP addresses as well as topo counts and packet flags are taken from the session.
Parameters
in appHandle the handle returned by tlc_init
in pSessionId Session ID returned by request
in userStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NOSESSION_ERR no such session
5.20.2.6 trdp_mdFreeSession()
void trdp_mdFreeSession (
MD_ELE_T ∗pMDSession )
Free memory of session.
Parameters
in pMDSession session pointer
Generated by Doxygen

216 File Documentation
Here is the call graph for this function:
trdp_mdFreeSession vos_memFree
5.20.2.7 trdp_mdGetTCPSocket()
TRDP_ERR_T trdp_mdGetTCPSocket (
TRDP_SESSION_PT pSession )
Initialize the specific parameters for message data Open a listening socket.
Parameters
in pSession session parameters
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR initialization error
5.20.2.8 trdp_mdReply()
TRDP_ERR_T trdp_mdReply (
const TRDP_MSG_T msgType,
TRDP_APP_SESSION_T appHandle,
TRDP_UUID_T pSessionId,
UINT32 comId,
UINT32 timeout,
INT32 replyStatus,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Send a MD reply/reply query message.
Send either a MD reply message or a MD reply query message after receiving a request and ask for confirmation.
User reference, source and destination IP addresses as well as topo counts and packet flags are taken from the
session
Generated by Doxygen

5.21 trdp_mdcom.h File Reference 217
Parameters
in msgType TRDP_MSG_MP or TRDP_MSG_MQ
in appHandle the handle returned by tlc_init
in pSessionId Session ID returned by indication
in comId comId of packet to be sent
in timeout time out for confirmations (zero for TRDP_MSG_MP)
in replyStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NO_SESSION_ERR no such session
5.20.2.9 trdp_mdSend()
TRDP_ERR_T trdp_mdSend (
TRDP_SESSION_PT appHandle )
Sending MD messages Send the messages stored in the sendQueue Call user's callback if needed.
Parameters
in appHandle session pointer
5.21 trdp_mdcom.h File Reference
Functions for MD communication.
Generated by Doxygen

218 File Documentation
#include "trdp_private.h"
Include dependency graph for trdp_mdcom.h:
trdp_mdcom.h
trdp_private.h
trdp_types.h
vos_thread.h
vos_sock.h
vos_types.h
vos_mem.hiec61375-2-3.h
stdint.h
vos_private.h
This graph shows which files directly or indirectly include this file:
trdp_mdcom.h
trdp_mdcom.c
Functions
•TRDP_ERR_T trdp_mdGetTCPSocket (TRDP_SESSION_PT pSession)
Generated by Doxygen

5.21 trdp_mdcom.h File Reference 219
Initialize the specific parameters for message data Open a listening socket.
• void trdp_mdFreeSession (MD_ELE_T ∗pMDSession)
Free memory of session.
•TRDP_ERR_T trdp_mdSend (TRDP_SESSION_PT appHandle)
Sending MD messages Send the messages stored in the sendQueue Call user's callback if needed.
• void trdp_mdCheckPending (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pFileDesc, INT32 ∗p←-
NoDesc)
Check for pending packets, set FD if non blocking.
• void trdp_mdCheckListenSocks (const TRDP_SESSION_PT appHandle, TRDP_FDS_T ∗pRfds, INT32 ∗p←-
Count)
Checking receive connection requests and data Call user's callback if needed.
• void trdp_mdCheckTimeouts (TRDP_SESSION_PT appHandle)
Checking message data timeouts Call user's callback if needed.
•TRDP_ERR_T trdp_mdConfirm (TRDP_APP_SESSION_T appHandle, const TRDP_UUID_T ∗pSessionId,
UINT16 userStatus, const TRDP_SEND_PARAM_T ∗pSendParam)
Initiate sending MD confirm message - private SW level Send a MD confirmation message User reference, source
and destination IP addresses as well as topo counts and packet flags are taken from the session.
•TRDP_ERR_T trdp_mdReply (const TRDP_MSG_T msgType, TRDP_APP_SESSION_T appHandle, TRD←-
P_UUID_T pSessionId, UINT32 comId, UINT32 timeout, INT32 replyStatus, const TRDP_SEND_PARAM_T
∗pSendParam, const UINT8 ∗pData, UINT32 dataSize)
Send a MD reply/reply query message.
•TRDP_ERR_T trdp_mdCall (const TRDP_MSG_T msgType, TRDP_APP_SESSION_T appHandle, const
void ∗pUserRef, TRDP_MD_CALLBACK_T pfCbFunction, TRDP_UUID_T ∗pSessionId, UINT32 comId, U←-
INT32 etbTopoCnt, UINT32 opTrnTopoCnt, TRDP_IP_ADDR_T srcIpAddr, TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags, UINT32 numExpReplies, UINT32 replyTimeout, INT32 replyStatus, const TR←-
DP_SEND_PARAM_T ∗pSendParam, const UINT8 ∗pData, UINT32 dataSize, const TRDP_URI_USER_T
srcURI, const TRDP_URI_USER_T destURI)
Initiate sending MD request message - private SW level Send a MD request message.
5.21.1 Detailed Description
Functions for MD communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_mdcom.h 1681 2017-11-09 10:37:16Z ahweiss
AHW 2017-11-08: Ticket #179 Max. number of retries (part of sendParam) of a MD request needs to be checked
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
Ticket #47: Protocol change: no FCS for data part of telegrams
Generated by Doxygen

220 File Documentation
5.21.2 Function Documentation
5.21.2.1 trdp_mdCall()
TRDP_ERR_T trdp_mdCall (
const TRDP_MSG_T msgType,
TRDP_APP_SESSION_T appHandle,
const void ∗pUserRef,
TRDP_MD_CALLBACK_T pfCbFunction,
TRDP_UUID_T ∗pSessionId,
UINT32 comId,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
TRDP_IP_ADDR_T srcIpAddr,
TRDP_IP_ADDR_T destIpAddr,
TRDP_FLAGS_T pktFlags,
UINT32 numExpReplies,
UINT32 replyTimeout,
INT32 replyStatus,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize,
const TRDP_URI_USER_T srcURI,
const TRDP_URI_USER_T destURI )
Initiate sending MD request message - private SW level Send a MD request message.
Parameters
in msgType TRDP_MSG_MN or TRDP_MSG_MR
in appHandle the handle returned by tlc_init
in pUserRef user supplied value returned with reply
in pfCbFunction Pointer to listener specific callback function, NULL to use default function
out pSessionId return session ID
in comId comId of packet to be sent
in etbTopoCnt ETB topocount to use, 0 if consist local communication
in opTrnTopoCnt operational topocount, != 0 for orientation/direction sensitive communication
in srcIpAddr own IP address, 0 - srcIP will be set by the stack
in destIpAddr where to send the packet to
in pktFlags OPTION: TRDP_FLAGS_DEFAULT, TRDP_FLAGS_NONE,
TRDP_FLAGS_MARSHALL
in numExpReplies number of expected replies, 0 if unknown
in replyTimeout timeout for reply
in replyStatus status to be returned
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
in srcURI only functional group of source URI
in destURI only functional group of destination URI
Generated by Doxygen

5.21 trdp_mdcom.h File Reference 221
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
5.21.2.2 trdp_mdCheckListenSocks()
void trdp_mdCheckListenSocks (
const TRDP_SESSION_PT appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Checking receive connection requests and data Call user's callback if needed.
Parameters
in appHandle session pointer
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
5.21.2.3 trdp_mdCheckPending()
void trdp_mdCheckPending (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Check for pending packets, set FD if non blocking.
Parameters
in appHandle session pointer
in,out pFileDesc pointer to set of ready descriptors
in,out pNoDesc pointer to number of ready descriptors
5.21.2.4 trdp_mdCheckTimeouts()
void trdp_mdCheckTimeouts (
TRDP_SESSION_PT appHandle )
Checking message data timeouts Call user's callback if needed.
Generated by Doxygen

222 File Documentation
Parameters
in appHandle session pointer
5.21.2.5 trdp_mdConfirm()
TRDP_ERR_T trdp_mdConfirm (
TRDP_APP_SESSION_T appHandle,
const TRDP_UUID_T ∗pSessionId,
UINT16 userStatus,
const TRDP_SEND_PARAM_T ∗pSendParam )
Initiate sending MD confirm message - private SW level Send a MD confirmation message User reference, source
and destination IP addresses as well as topo counts and packet flags are taken from the session.
Parameters
in appHandle the handle returned by tlc_init
in pSessionId Session ID returned by request
in userStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NOSESSION_ERR no such session
5.21.2.6 trdp_mdFreeSession()
void trdp_mdFreeSession (
MD_ELE_T ∗pMDSession )
Free memory of session.
Parameters
in pMDSession session pointer
Generated by Doxygen

5.21 trdp_mdcom.h File Reference 223
Here is the call graph for this function:
trdp_mdFreeSession vos_memFree
5.21.2.7 trdp_mdGetTCPSocket()
TRDP_ERR_T trdp_mdGetTCPSocket (
TRDP_SESSION_PT pSession )
Initialize the specific parameters for message data Open a listening socket.
Parameters
in pSession session parameters
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR initialization error
5.21.2.8 trdp_mdReply()
TRDP_ERR_T trdp_mdReply (
const TRDP_MSG_T msgType,
TRDP_APP_SESSION_T appHandle,
TRDP_UUID_T pSessionId,
UINT32 comId,
UINT32 timeout,
INT32 replyStatus,
const TRDP_SEND_PARAM_T ∗pSendParam,
const UINT8 ∗pData,
UINT32 dataSize )
Send a MD reply/reply query message.
Send either a MD reply message or a MD reply query message after receiving a request and ask for confirmation.
User reference, source and destination IP addresses as well as topo counts and packet flags are taken from the
session
Generated by Doxygen

224 File Documentation
Parameters
in msgType TRDP_MSG_MP or TRDP_MSG_MQ
in appHandle the handle returned by tlc_init
in pSessionId Session ID returned by indication
in comId comId of packet to be sent
in timeout time out for confirmations (zero for TRDP_MSG_MP)
in replyStatus Info for requester about application errors
in pSendParam Pointer to send parameters, NULL to use default send parameters
in pData pointer to packet data / dataset
in dataSize size of packet data
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR out of memory
TRDP_NO_SESSION_ERR no such session
5.21.2.9 trdp_mdSend()
TRDP_ERR_T trdp_mdSend (
TRDP_SESSION_PT appHandle )
Sending MD messages Send the messages stored in the sendQueue Call user's callback if needed.
Parameters
in appHandle session pointer
5.22 trdp_pdcom.c File Reference
Functions for PD communication.
#include <string.h>
#include "trdp_types.h"
#include "trdp_utils.h"
#include "trdp_pdcom.h"
#include "trdp_if.h"
#include "trdp_stats.h"
#include "vos_sock.h"
#include "vos_mem.h"
Generated by Doxygen

5.22 trdp_pdcom.c File Reference 225
Include dependency graph for trdp_pdcom.c:
trdp_pdcom.c
string.h
trdp_types.h
vos_mem.h vos_sock.h
trdp_utils.htrdp_pdcom.htrdp_if.h trdp_stats.h
vos_types.h
iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
stdio.h
trdp_private.h vos_utils.h
stddef.h
trdp_if_light.h
Functions
• void trdp_pdInit (PD_ELE_T ∗pPacket, TRDP_MSG_T type, UINT32 etbTopoCnt, UINT32 opTrnTopoCnt,
UINT32 replyComId, UINT32 replyIpAddress)
Initialize/construct the packet Set the header infos.
•TRDP_ERR_T trdp_pdPut (PD_ELE_T ∗pPacket, TRDP_MARSHALL_T marshall, void ∗refCon, const UI←-
NT8 ∗pData, UINT32 dataSize)
Copy data Update the data to be sent.
•TRDP_ERR_T trdp_pdGet (PD_ELE_T ∗pPacket, TRDP_UNMARSHALL_T unmarshall, void ∗refCon, const
UINT8 ∗pData, UINT32 ∗pDataSize)
Copy data Set the header infos.
•TRDP_ERR_T trdp_pdSendQueued (TRDP_SESSION_PT appHandle)
Send all due PD messages.
•TRDP_ERR_T trdp_pdReceive (TRDP_SESSION_PT appHandle, SOCKET sock)
Receiving PD messages Read the receive socket for arriving PDs, copy the packet to a new PD_ELE_T Check for
protocol errors and compare the received data to the data in our receive queue.
• void trdp_pdCheckPending (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pFileDesc, INT32 ∗p←-
NoDesc)
Check for pending packets, set FD if non blocking.
• void trdp_pdHandleTimeOuts (TRDP_SESSION_PT appHandle)
Check for time outs.
•TRDP_ERR_T trdp_pdCheckListenSocks (TRDP_SESSION_PT appHandle, TRDP_FDS_T ∗pRfds, INT32
∗pCount)
Checking receive connection requests and data Call user's callback if needed.
• void trdp_pdUpdate (PD_ELE_T ∗pPacket)
Update the header values.
Generated by Doxygen

226 File Documentation
•TRDP_ERR_T trdp_pdCheck (PD_HEADER_T ∗pPacket, UINT32 packetSize)
Check if the PD header values and the CRCs are sane.
•TRDP_ERR_T trdp_pdSend (SOCKET pdSock, PD_ELE_T ∗pPacket, UINT16 port)
Send one PD packet.
•TRDP_ERR_T trdp_pdDistribute (PD_ELE_T ∗pSndQueue)
Distribute send time of PD packets over time.
5.22.1 Detailed Description
Functions for PD communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2015. All rights reserved.
Id
trdp_pdcom.c 1772 2018-10-30 12:18:12Z bloehr
BL 2018-10-29: Ticket #217 PD Pull requests must be subscribed for
BL 2018-08-07: Ticket #207 tlp_put() and variable dataSize
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2018-01-29: Ticket #186 Potential SEGFAULT in case of PD timeout
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-15: Ticket #1 Unjoin on unsubscribe/delListener (finally ;-)
BL 2017-11-10: Ticket #172 Infinite loop of message sending after PD Pull Request when registered in multicast group
BL 2017-07-24: Ticket #166 Bug in trdp_pdReceive for "if data has changed"
BL 2017-03-01: Ticket #136 PD topography counter with faulty behavior
BL 2017-02-27: Ticket #146 On Timeout, PD Callback is always called with no data/datasize == 0
BL 2017-02-10: Ticket #132: tlp_publish: Check of datasize wrong if using marshaller
BL 2017-02-08: Ticket #142: Compiler warnings / MISRA-C 2012 issues
BL 2017-02-08: Ticket #133: Accelerate PD packet reception
BL 2016-06-24: Ticket #121: Callback on first packet after time out
BL 2016-06-08: Ticket #120: ComIds for statistics changed to proposed 61375 errata
BL 2016-06-01: Ticket #119: tlc_getInterval() repeatedly returns 0 after timeout
BL 2016-03-04: Ticket #112: Marshalling sets wrong datasetLength (PD)
IBO 2016-02-03: Ticket #109: vos_ntohs -> vos_ntohl for datasetlength when unmarshalling
BL 2016-01-25: Ticket #106: User needs to be informed on every received PD packet
BL 2015-12-14: Ticket #33: source size check for marshalling
BL 2015-11-24: Ticket #104: PD telegrams with no data is never sent
BL 2015-08-31: Ticket #94: TRDP_REDUNDANT flag is evaluated, beQuiet removed
BL 2015-08-05: Ticket #81: Counts for packet loss
AHW 2015-04-10: Ticket #76: Wrong initialisation of frame pointer in trdp_pdReceive()
AHW 2015-04-10: Ticket #79: handling for dataSize==0/pData== NULL fixed in in trdp_pdPut()
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
Ticket #47: Protocol change: no FCS for data part of telegrams
Ticket #43: Usage of memset() in the trdp_pdReceive() function
BL 2014-06-02: Ticket #41: Sequence counter handling fixed
Ticket #42: memcmp only if callback enabled
BL 2014-02-28: Ticket #25: CRC32 calculation is not according IEEE802.3
BL 2014-02-27: Ticket #23: tlc_getInterval() always returning 10ms
BL 2014-01-09: Ticket #14: Wrong error return in trdp_pdDistribute()
BL 2013-06-24: ID 125: Time-out handling and ready descriptors fixed
BL 2013-04-09: ID 92: Pull request led to reset of push message type
BL 2013-01-25: ID 20: Redundancy handling fixed
Generated by Doxygen

5.22 trdp_pdcom.c File Reference 227
5.22.2 Function Documentation
5.22.2.1 trdp_pdCheck()
TRDP_ERR_T trdp_pdCheck (
PD_HEADER_T ∗pPacket,
UINT32 packetSize )
Check if the PD header values and the CRCs are sane.
Parameters
in pPacket pointer to the packet to check
in packetSize max size to check
Return values
TRDP_NO_ERR
TRDP_CRC_ERR
5.22.2.2 trdp_pdCheckListenSocks()
TRDP_ERR_T trdp_pdCheckListenSocks (
TRDP_SESSION_PT appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Checking receive connection requests and data Call user's callback if needed.
Parameters
in appHandle session pointer
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
Here is the call graph for this function:
trdp_pdCheckListenSocks trdp_pdReceive
Generated by Doxygen

228 File Documentation
5.22.2.3 trdp_pdCheckPending()
void trdp_pdCheckPending (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Check for pending packets, set FD if non blocking.
Parameters
in appHandle session pointer
in,out pFileDesc pointer to set of ready descriptors
in,out pNoDesc pointer to number of ready descriptors
5.22.2.4 trdp_pdDistribute()
TRDP_ERR_T trdp_pdDistribute (
PD_ELE_T ∗pSndQueue )
Distribute send time of PD packets over time.
The duration of PD packets on a 100MBit/s network ranges from 3us to 150us max. Because a cyclic thread
scheduling below 5ms would put a too heavy load on the system, and PD packets cannot get larger than 1432 (+
UDP header), we will not account for differences in packet size. Another factor is the differences in intervals for
different packets: We should only change the starting times of the packets within 1/2 the interval time. Otherwise a
late addition of packets could lead to timeouts of already queued packets. Scheduling will be computed based on
the smallest interval time.
Parameters
in pSndQueue pointer to send queue
Return values
TRDP_NO_ERR
Generated by Doxygen

5.22 trdp_pdcom.c File Reference 229
Here is the call graph for this function:
trdp_pdDistribute
vos_cmpTime
vos_divTime
vos_mulTime
vos_addTime
5.22.2.5 trdp_pdHandleTimeOuts()
void trdp_pdHandleTimeOuts (
TRDP_SESSION_PT appHandle )
Check for time outs.
Parameters
in appHandle application handle
Here is the call graph for this function:
trdp_pdHandleTimeOuts vos_getTime
5.22.2.6 trdp_pdInit()
void trdp_pdInit (
PD_ELE_T ∗pPacket,
Generated by Doxygen

230 File Documentation
TRDP_MSG_T type,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
UINT32 replyComId,
UINT32 replyIpAddress )
Initialize/construct the packet Set the header infos.
Parameters
in pPacket pointer to the packet element to init
in type type the packet
in etbTopoCnt topocount to use for PD frame
in opTrnTopoCnt topocount to use for PD frame
in replyComId Pull request comId
in replyIpAddress Pull request Ip
Here is the call graph for this function:
trdp_pdInit
vos_htons
vos_htonl
5.22.2.7 trdp_pdPut()
TRDP_ERR_T trdp_pdPut (
PD_ELE_T ∗pPacket,
TRDP_MARSHALL_T marshall,
void ∗refCon,
const UINT8 ∗pData,
UINT32 dataSize )
Copy data Update the data to be sent.
Parameters
in pPacket pointer to the packet element to send
in marshall pointer to marshalling function
in refCon reference for marshalling function
in pData pointer to data
in dataSize size of data
Generated by Doxygen

5.22 trdp_pdcom.c File Reference 231
Return values
TRDP_NO_ERR no error other errors
5.22.2.8 trdp_pdReceive()
TRDP_ERR_T trdp_pdReceive (
TRDP_SESSION_PT appHandle,
SOCKET sock )
Receiving PD messages Read the receive socket for arriving PDs, copy the packet to a new PD_ELE_T Check for
protocol errors and compare the received data to the data in our receive queue.
If it is a new packet, check if it is a PD Request (PULL). If it is an update, exchange the existing entry with the new
one Call user's callback if needed
Parameters
in appHandle session pointer
in sock the socket to read from
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_WIRE_ERR protocol error (late packet, version mismatch)
TRDP_QUEUE_ERR not in queue
TRDP_CRC_ERR header checksum
TRDP_TOPOCOUNT_ERR invalid topocount
5.22.2.9 trdp_pdSend()
TRDP_ERR_T trdp_pdSend (
SOCKET pdSock,
PD_ELE_T ∗pPacket,
UINT16 port )
Send one PD packet.
Parameters
in pdSock socket descriptor
in pPacket pointer to packet to be sent
in port port on which to send
Generated by Doxygen

232 File Documentation
Return values
TRDP_NO_ERR
TRDP_IO_ERR
5.22.2.10 trdp_pdSendQueued()
TRDP_ERR_T trdp_pdSendQueued (
TRDP_SESSION_PT appHandle )
Send all due PD messages.
Parameters
in appHandle session pointer
Return values
TRDP_NO_ERR no error
TRDP_IO_ERR socket I/O error
Here is the call graph for this function:
trdp_pdSendQueued
vos_clearTime
vos_getTime
5.22.2.11 trdp_pdUpdate()
void trdp_pdUpdate (
PD_ELE_T ∗pPacket )
Update the header values.
Parameters
in pPacket pointer to the packet to update
Generated by Doxygen

5.23 trdp_pdcom.h File Reference 233
Here is the call graph for this function:
trdp_pdUpdate
vos_htons
vos_htonl
vos_crc32
5.23 trdp_pdcom.h File Reference
Functions for PD communication.
#include "trdp_private.h"
Include dependency graph for trdp_pdcom.h:
trdp_pdcom.h
trdp_private.h
trdp_types.h
vos_thread.h
vos_sock.h
vos_types.h
vos_mem.hiec61375-2-3.h
stdint.h
vos_private.h
Generated by Doxygen

234 File Documentation
This graph shows which files directly or indirectly include this file:
trdp_pdcom.h
trdp_if.c trdp_pdcom.c trdp_stats.c
Functions
• void trdp_pdInit (PD_ELE_T ∗, TRDP_MSG_T, UINT32 topoCount, UINT32 optopoCount, UINT32 reply←-
ComId, UINT32 replyIpAddress)
Initialize/construct the packet Set the header infos.
• void trdp_pdUpdate (PD_ELE_T ∗)
Update the header values.
•TRDP_ERR_T trdp_pdPut (PD_ELE_T ∗,TRDP_MARSHALL_T func, void ∗refCon, const UINT8 ∗pData,
UINT32 dataSize)
Copy data Update the data to be sent.
•TRDP_ERR_T trdp_pdCheck (PD_HEADER_T ∗pPacket, UINT32 packetSize)
Check if the PD header values and the CRCs are sane.
•TRDP_ERR_T trdp_pdSend (SOCKET pdSock, PD_ELE_T ∗pPacket, UINT16 port)
Send one PD packet.
•TRDP_ERR_T trdp_pdGet (PD_ELE_T ∗pPacket, TRDP_UNMARSHALL_T unmarshall, void ∗refCon, const
UINT8 ∗pData, UINT32 ∗pDataSize)
Copy data Set the header infos.
•TRDP_ERR_T trdp_pdSendQueued (TRDP_SESSION_PT appHandle)
Send all due PD messages.
•TRDP_ERR_T trdp_pdReceive (TRDP_SESSION_PT pSessionHandle, SOCKET sock)
Receiving PD messages Read the receive socket for arriving PDs, copy the packet to a new PD_ELE_T Check for
protocol errors and compare the received data to the data in our receive queue.
• void trdp_pdCheckPending (TRDP_APP_SESSION_T appHandle, TRDP_FDS_T ∗pFileDesc, INT32 ∗p←-
NoDesc)
Check for pending packets, set FD if non blocking.
• void trdp_pdHandleTimeOuts (TRDP_SESSION_PT appHandle)
Check for time outs.
•TRDP_ERR_T trdp_pdCheckListenSocks (TRDP_SESSION_PT appHandle, TRDP_FDS_T ∗pRfds, INT32
∗pCount)
Checking receive connection requests and data Call user's callback if needed.
•TRDP_ERR_T trdp_pdDistribute (PD_ELE_T ∗pSndQueue)
Distribute send time of PD packets over time.
Generated by Doxygen

5.23 trdp_pdcom.h File Reference 235
5.23.1 Detailed Description
Functions for PD communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_pdcom.h 1740 2018-06-20 16:03:12Z bloehr
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
Ticket #47: Protocol change: no FCS for data part of telegrams
5.23.2 Function Documentation
5.23.2.1 trdp_pdCheck()
TRDP_ERR_T trdp_pdCheck (
PD_HEADER_T ∗pPacket,
UINT32 packetSize )
Check if the PD header values and the CRCs are sane.
Parameters
in pPacket pointer to the packet to check
in packetSize max size to check
Return values
TRDP_NO_ERR
TRDP_CRC_ERR
Generated by Doxygen

236 File Documentation
5.23.2.2 trdp_pdCheckListenSocks()
TRDP_ERR_T trdp_pdCheckListenSocks (
TRDP_SESSION_PT appHandle,
TRDP_FDS_T ∗pRfds,
INT32 ∗pCount )
Checking receive connection requests and data Call user's callback if needed.
Parameters
in appHandle session pointer
in pRfds pointer to set of ready descriptors
in,out pCount pointer to number of ready descriptors
Here is the call graph for this function:
trdp_pdCheckListenSocks trdp_pdReceive
5.23.2.3 trdp_pdCheckPending()
void trdp_pdCheckPending (
TRDP_APP_SESSION_T appHandle,
TRDP_FDS_T ∗pFileDesc,
INT32 ∗pNoDesc )
Check for pending packets, set FD if non blocking.
Parameters
in appHandle session pointer
in,out pFileDesc pointer to set of ready descriptors
in,out pNoDesc pointer to number of ready descriptors
5.23.2.4 trdp_pdDistribute()
TRDP_ERR_T trdp_pdDistribute (
PD_ELE_T ∗pSndQueue )
Generated by Doxygen

5.23 trdp_pdcom.h File Reference 237
Distribute send time of PD packets over time.
The duration of PD packets on a 100MBit/s network ranges from 3us to 150us max. Because a cyclic thread
scheduling below 5ms would put a too heavy load on the system, and PD packets cannot get larger than 1432 (+
UDP header), we will not account for differences in packet size. Another factor is the differences in intervals for
different packets: We should only change the starting times of the packets within 1/2 the interval time. Otherwise a
late addition of packets could lead to timeouts of already queued packets. Scheduling will be computed based on
the smallest interval time.
Parameters
in pSndQueue pointer to send queue
Return values
TRDP_NO_ERR
Here is the call graph for this function:
trdp_pdDistribute
vos_cmpTime
vos_divTime
vos_mulTime
vos_addTime
5.23.2.5 trdp_pdHandleTimeOuts()
void trdp_pdHandleTimeOuts (
TRDP_SESSION_PT appHandle )
Check for time outs.
Parameters
in appHandle application handle
Generated by Doxygen

238 File Documentation
Here is the call graph for this function:
trdp_pdHandleTimeOuts vos_getTime
5.23.2.6 trdp_pdInit()
void trdp_pdInit (
PD_ELE_T ∗pPacket,
TRDP_MSG_T type,
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
UINT32 replyComId,
UINT32 replyIpAddress )
Initialize/construct the packet Set the header infos.
Parameters
in pPacket pointer to the packet element to init
in type type the packet
in etbTopoCnt topocount to use for PD frame
in opTrnTopoCnt topocount to use for PD frame
in replyComId Pull request comId
in replyIpAddress Pull request Ip
Here is the call graph for this function:
trdp_pdInit
vos_htons
vos_htonl
Generated by Doxygen

5.23 trdp_pdcom.h File Reference 239
5.23.2.7 trdp_pdPut()
TRDP_ERR_T trdp_pdPut (
PD_ELE_T ∗pPacket,
TRDP_MARSHALL_T marshall,
void ∗refCon,
const UINT8 ∗pData,
UINT32 dataSize )
Copy data Update the data to be sent.
Parameters
in pPacket pointer to the packet element to send
in marshall pointer to marshalling function
in refCon reference for marshalling function
in pData pointer to data
in dataSize size of data
Return values
TRDP_NO_ERR no error other errors
5.23.2.8 trdp_pdReceive()
TRDP_ERR_T trdp_pdReceive (
TRDP_SESSION_PT appHandle,
SOCKET sock )
Receiving PD messages Read the receive socket for arriving PDs, copy the packet to a new PD_ELE_T Check for
protocol errors and compare the received data to the data in our receive queue.
If it is a new packet, check if it is a PD Request (PULL). If it is an update, exchange the existing entry with the new
one Call user's callback if needed
Parameters
in appHandle session pointer
in sock the socket to read from
Return values
TRDP_NO_ERR no error
TRDP_PARAM_ERR parameter error
TRDP_WIRE_ERR protocol error (late packet, version mismatch)
TRDP_QUEUE_ERR not in queue
TRDP_CRC_ERR header checksum
TRDP_TOPOCOUNT_ERR invalid topocount
Generated by Doxygen

240 File Documentation
5.23.2.9 trdp_pdSend()
TRDP_ERR_T trdp_pdSend (
SOCKET pdSock,
PD_ELE_T ∗pPacket,
UINT16 port )
Send one PD packet.
Parameters
in pdSock socket descriptor
in pPacket pointer to packet to be sent
in port port on which to send
Return values
TRDP_NO_ERR
TRDP_IO_ERR
5.23.2.10 trdp_pdSendQueued()
TRDP_ERR_T trdp_pdSendQueued (
TRDP_SESSION_PT appHandle )
Send all due PD messages.
Parameters
in appHandle session pointer
Return values
TRDP_NO_ERR no error
TRDP_IO_ERR socket I/O error
Generated by Doxygen

5.24 trdp_private.h File Reference 241
Here is the call graph for this function:
trdp_pdSendQueued
vos_clearTime
vos_getTime
5.23.2.11 trdp_pdUpdate()
void trdp_pdUpdate (
PD_ELE_T ∗pPacket )
Update the header values.
Parameters
in pPacket pointer to the packet to update
Here is the call graph for this function:
trdp_pdUpdate
vos_htons
vos_htonl
vos_crc32
5.24 trdp_private.h File Reference
Typedefs for TRDP communication.
#include "trdp_types.h"
#include "vos_thread.h"
Generated by Doxygen

242 File Documentation
#include "vos_sock.h"
Include dependency graph for trdp_private.h:
trdp_private.h
trdp_types.h
vos_thread.h
vos_sock.h
vos_types.h
vos_mem.hiec61375-2-3.h
stdint.h
vos_private.h
This graph shows which files directly or indirectly include this file:
trdp_private.h
trdp_utils.h trdp_xml.h trdp_pdcom.h
trdp_stats.c
trdp_stats.htrdp_mdcom.h
tau_ctrl.c tau_dnr.c tau_marshall.ctau_tti.c tau_xml.c trdp_if.ctrdp_mdcom.c trdp_pdcom.ctrdp_utils.c trdp_xml.c
Data Structures
• struct TRDP_HANDLE
Hidden handle definition, used as unique addressing item.
• struct TRDP_SEQ_CNT_ENTRY_T
Tuples of last received sequence counter per comId.
• struct TRDP_SOCKET_TCP
TCP parameters.
• struct TRDP_SOCKETS
Socket item.
• struct GNU_PACKED
Types for ETB control.
Generated by Doxygen

5.24 trdp_private.h File Reference 243
• struct GNU_PACKED
Types for ETB control.
• struct GNU_PACKED
Types for ETB control.
• struct PD_ELE
Queue element for PD packets to send or receive.
• struct TRDP_SESSION
Session/application variables store.
Macros
• #define TRDP_TIMER_GRANULARITY 10000u
granularity in us
• #define TRDP_DEBUG_DEFAULT_FILE_SIZE 65536u
Default maximum size of log file.
• #define TRDP_SEQ_CNT_START_ARRAY_SIZE 64u
This should be enough for the start.
• #define TRDP_IF_WAIT_FOR_READY 120u
120 seconds (120 tries each second to bind to an IP address)
• #define TRDP_PRIV_NONE 0u
Internal flags for packets.
• #define TRDP_TIMED_OUT 0x2u
if set, inform the user
• #define TRDP_INVALID_DATA 0x4u
if set, inform the user
• #define TRDP_REQ_2B_SENT 0x8u
if set, the request needs to be sent
• #define TRDP_PULL_SUB 0x10u
if set, its a PULL subscription
• #define TRDP_REDUNDANT 0x20u
if set, packet should not be sent (redundant)
• #define TRDP_CHECK_COMID 0x40u
if set, do filter comId (addListener)
Typedefs
• typedef struct TRDP_HANDLE TRDP_ADDRESSES_T
Hidden handle definition, used as unique addressing item.
• typedef struct TRDP_SOCKET_TCP TRDP_SOCKET_TCP_T
TCP parameters.
• typedef struct TRDP_SOCKETS TRDP_SOCKETS_T
Socket item.
• typedef struct PD_ELE PD_ELE_T
Queue element for PD packets to send or receive.
• typedef struct TRDP_SESSION TRDP_SESSION_T
Session/application variables store.
Generated by Doxygen

244 File Documentation
Enumerations
• enum TRDP_MD_ELE_ST_T {
TRDP_ST_NONE = 0u,
TRDP_ST_TX_NOTIFY_ARM = 1u,
TRDP_ST_TX_REQUEST_ARM = 2u,
TRDP_ST_TX_REPLY_ARM = 3u,
TRDP_ST_TX_REPLYQUERY_ARM = 4u,
TRDP_ST_TX_CONFIRM_ARM = 5u,
TRDP_ST_RX_READY = 6,
TRDP_ST_TX_REQUEST_W4REPLY = 7u,
TRDP_ST_RX_REPLYQUERY_W4C = 8u,
TRDP_ST_RX_REQ_W4AP_REPLY = 9u,
TRDP_ST_TX_REQ_W4AP_CONFIRM = 10u,
TRDP_ST_RX_REPLY_SENT = 11u,
TRDP_ST_RX_NOTIFY_RECEIVED = 12u,
TRDP_ST_TX_REPLY_RECEIVED = 13u,
TRDP_ST_RX_CONF_RECEIVED = 14u }
Internal MD state.
• enum TRDP_SOCK_TYPE_T {
TRDP_SOCK_PD = 0u,
TRDP_SOCK_MD_UDP = 1u,
TRDP_SOCK_MD_TCP = 2u }
Socket usage.
5.24.1 Detailed Description
Typedefs for TRDP communication.
TRDP internal type definitions
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_private.h 1780 2018-11-07 09:51:13Z bloehr
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-17: superfluous session->redID replaced by sndQueue->redId
BL 2017-11-17: undone: Ticket #169 Encapsulate declaration of packed structures within a macro
BL 2017-05-08: Compiler warnings: enum flags to #defines
BL 2017-05-08: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h and here
BL 2017-02-28: Ticket #140 TRDP_TIMER_FOREVER ->
BL 2017-02-28: Ticket #142 Compiler warnings / MISRA-C 2012 issues
BL 2015-08-31: Ticket #94: "beQuiet" removed
BL 2015-08-05: Ticket #81: Counts for packet loss
BL 2014-06-02: Ticket #41: Sequence counter handling fixed
Generated by Doxygen

5.25 trdp_stats.c File Reference 245
5.24.2 Enumeration Type Documentation
5.24.2.1 TRDP_MD_ELE_ST_T
enum TRDP_MD_ELE_ST_T
Internal MD state.
Enumerator
TRDP_ST_NONE neutral value
TRDP_ST_TX_NOTIFY_ARM ready to send notify MD
TRDP_ST_TX_REQUEST_ARM ready to send request MD
TRDP_ST_TX_REPLY_ARM ready to send reply MD
TRDP_ST_TX_REPLYQUERY_ARM ready to send reply with confirm request MD
TRDP_ST_TX_CONFIRM_ARM ready to send confirm MD
TRDP_ST_RX_READY armed listener
TRDP_ST_TX_REQUEST_W4REPLY request sent, wait for reply
TRDP_ST_RX_REPLYQUERY_W4C reply send, with confirm request MD
TRDP_ST_RX_REQ_W4AP_REPLY request received, wait for application reply send
TRDP_ST_TX_REQ_W4AP_CONFIRM reply conf. rq. tx, wait for application conf send
TRDP_ST_RX_REPLY_SENT reply sent
TRDP_ST_RX_NOTIFY_RECEIVED notification received, wait for application to accept
TRDP_ST_TX_REPLY_RECEIVED reply received
TRDP_ST_RX_CONF_RECEIVED confirmation received
5.24.2.2 TRDP_SOCK_TYPE_T
enum TRDP_SOCK_TYPE_T
Socket usage.
Enumerator
TRDP_SOCK_PD Socket is used for UDP process data.
TRDP_SOCK_MD_UDP Socket is used for UDP message data.
TRDP_SOCK_MD_TCP Socket is used for TCP message data.
5.25 trdp_stats.c File Reference
Statistics functions for TRDP communication.
Generated by Doxygen

246 File Documentation
#include <stdio.h>
#include <string.h>
#include "trdp_stats.h"
#include "trdp_if_light.h"
#include "trdp_if.h"
#include "trdp_private.h"
#include "trdp_pdcom.h"
#include "vos_mem.h"
#include "vos_thread.h"
Include dependency graph for trdp_stats.c:
trdp_stats.c
stdio.h
string.htrdp_stats.h
trdp_if_light.h
vos_mem.h
vos_thread.h
trdp_private.h
trdp_if.h trdp_pdcom.h
vos_utils.h
trdp_types.h
vos_types.h
vos_sock.hiec61375-2-3.h
stdint.h
vos_private.h
stddef.h
Functions
• void trdp_UpdateStats (TRDP_APP_SESSION_T appHandle)
Update the statistics.
• void trdp_initStats (TRDP_APP_SESSION_T appHandle)
Init statistics.
• EXT_DECL TRDP_ERR_T tlc_resetStatistics (TRDP_APP_SESSION_T appHandle)
Reset statistics.
• EXT_DECL TRDP_ERR_T tlc_getStatistics (TRDP_APP_SESSION_T appHandle, TRDP_STATISTICS_T
∗pStatistics)
Return statistics.
• EXT_DECL TRDP_ERR_T tlc_getSubsStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNum←-
Subs, TRDP_SUBS_STATISTICS_T ∗pStatistics)
Return PD subscription statistics.
• EXT_DECL TRDP_ERR_T tlc_getPubStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumPub,
TRDP_PUB_STATISTICS_T ∗pStatistics)
Return PD publish statistics.
• EXT_DECL TRDP_ERR_T tlc_getRedStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumRed,
TRDP_RED_STATISTICS_T ∗pStatistics)
Return redundancy group statistics.
Generated by Doxygen

5.25 trdp_stats.c File Reference 247
• EXT_DECL TRDP_ERR_T tlc_getJoinStatistics (TRDP_APP_SESSION_T appHandle, UINT16 ∗pNumJoin,
UINT32 ∗pIpAddr)
Return join statistics.
• void trdp_pdPrepareStats (TRDP_APP_SESSION_T appHandle, PD_ELE_T ∗pPacket)
Fill the statistics packet.
5.25.1 Detailed Description
Statistics functions for TRDP communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_stats.c 1740 2018-06-20 16:03:12Z bloehr
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2017-11-17: superfluous session->redID replaced by sndQueue->redId
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
BL 2017-05-08: Compiler warnings
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-05-04: Ticket #117: PD Status packet is not sent on request
BL 2015-08-05: Ticket #81: Counts for packet loss
5.25.2 Function Documentation
5.25.2.1 tlc_getJoinStatistics()
EXT_DECL TRDP_ERR_T tlc_getJoinStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumJoin,
UINT32 ∗pIpAddr )
Return join statistics.
Memory for statistics information must be provided by the user.
Generated by Doxygen

248 File Documentation
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumJoin Pointer to the number of joined IP Adresses
out pIpAddr Pointer to a list with the joined IP adresses
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more items than requested
5.25.2.2 tlc_getPubStatistics()
EXT_DECL TRDP_ERR_T tlc_getPubStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumPub,
TRDP_PUB_STATISTICS_T ∗pStatistics )
Return PD publish statistics.
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumPub Pointer to the number of publishers
out pStatistics Pointer to a list with the publish statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.25.2.3 tlc_getRedStatistics()
EXT_DECL TRDP_ERR_T tlc_getRedStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumRed,
TRDP_RED_STATISTICS_T ∗pStatistics )
Return redundancy group statistics.
Memory for statistics information must be provided by the user.
Generated by Doxygen

5.25 trdp_stats.c File Reference 249
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumRed Pointer to the number of redundancy groups
out pStatistics Pointer to a list with the redundancy group information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.25.2.4 tlc_getStatistics()
EXT_DECL TRDP_ERR_T tlc_getStatistics (
TRDP_APP_SESSION_T appHandle,
TRDP_STATISTICS_T ∗pStatistics )
Return statistics.
Memory for statistics information must be provided by the user.
Parameters
in appHandle the handle returned by tlc_openSession
out pStatistics Pointer to statistics for this application session
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
5.25.2.5 tlc_getSubsStatistics()
EXT_DECL TRDP_ERR_T tlc_getSubsStatistics (
TRDP_APP_SESSION_T appHandle,
UINT16 ∗pNumSubs,
TRDP_SUBS_STATISTICS_T ∗pStatistics )
Return PD subscription statistics.
Memory for statistics information must be provided by the user.
Generated by Doxygen

250 File Documentation
Parameters
in appHandle the handle returned by tlc_openSession
in,out pNumSubs In: The number of subscriptions requested Out: Number of subscriptions returned
in,out pStatistics Pointer to an array with the subscription statistics information
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
TRDP_MEM_ERR there are more subscriptions than requested
5.25.2.6 tlc_resetStatistics()
EXT_DECL TRDP_ERR_T tlc_resetStatistics (
TRDP_APP_SESSION_T appHandle )
Reset statistics.
Parameters
in appHandle the handle returned by tlc_openSession
Return values
TRDP_NO_ERR no error
TRDP_NOINIT_ERR handle invalid
TRDP_PARAM_ERR parameter error
5.25.2.7 trdp_initStats()
void trdp_initStats (
TRDP_APP_SESSION_T appHandle )
Init statistics.
Clear the stats structure for a session.
Parameters
in appHandle the handle returned by tlc_openSession
<host name
Generated by Doxygen

5.25 trdp_stats.c File Reference 251
<leader host name Here is the call graph for this function:
trdp_initStats tlc_getVersion
5.25.2.8 trdp_pdPrepareStats()
void trdp_pdPrepareStats (
TRDP_APP_SESSION_T appHandle,
PD_ELE_T ∗pPacket )
Fill the statistics packet.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pPacket pointer to the packet to fill
Here is the call graph for this function:
trdp_pdPrepareStats
trdp_UpdateStats
vos_htonl
5.25.2.9 trdp_UpdateStats()
void trdp_UpdateStats (
TRDP_APP_SESSION_T appHandle )
Update the statistics.
Generated by Doxygen

252 File Documentation
Parameters
in appHandle the handle returned by tlc_openSession
5.26 trdp_stats.h File Reference
Statistics for TRDP communication.
#include "trdp_if_light.h"
#include "trdp_private.h"
#include "vos_utils.h"
Include dependency graph for trdp_stats.h:
trdp_stats.h
trdp_if_light.htrdp_private.h vos_utils.h
trdp_types.h
vos_types.h
vos_mem.hvos_sock.h iec61375-2-3.h
stdint.h
vos_thread.hvos_private.h
stdio.h stddef.h
This graph shows which files directly or indirectly include this file:
trdp_stats.h
trdp_if.c trdp_pdcom.c trdp_stats.c
Generated by Doxygen

5.26 trdp_stats.h File Reference 253
Functions
• void trdp_initStats (TRDP_APP_SESSION_T appHandle)
Init statistics.
• void trdp_pdPrepareStats (TRDP_APP_SESSION_T appHandle, PD_ELE_T ∗pPacket)
Fill the statistics packet.
5.26.1 Detailed Description
Statistics for TRDP communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_stats.h 1065 2013-09-06 08:12:09Z aweiss
5.26.2 Function Documentation
5.26.2.1 trdp_initStats()
void trdp_initStats (
TRDP_APP_SESSION_T appHandle )
Init statistics.
Clear the stats structure for a session.
Parameters
in appHandle the handle returned by tlc_openSession
<host name
Generated by Doxygen

254 File Documentation
<leader host name Here is the call graph for this function:
trdp_initStats tlc_getVersion
5.26.2.2 trdp_pdPrepareStats()
void trdp_pdPrepareStats (
TRDP_APP_SESSION_T appHandle,
PD_ELE_T ∗pPacket )
Fill the statistics packet.
Parameters
in appHandle the handle returned by tlc_openSession
in,out pPacket pointer to the packet to fill
Here is the call graph for this function:
trdp_pdPrepareStats
trdp_UpdateStats
vos_htonl
5.27 trdp_types.h File Reference
Typedefs for TRDP communication.
#include "vos_types.h"
#include "vos_mem.h"
#include "vos_sock.h"
Generated by Doxygen

5.27 trdp_types.h File Reference 255
#include "iec61375-2-3.h"
Include dependency graph for trdp_types.h:
trdp_types.h
vos_types.h
vos_mem.h vos_sock.h iec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
This graph shows which files directly or indirectly include this file:
trdp_types.h
tau_ctrl.h
tau_ctrl.c
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_marshall.c
tau_xml.h
tau_xml.c
trdp_if_light.h
trdp_pdcom.c
trdp_private.h
tau_cstinfo.c
tau_tti.c
tau_dnr.c trdp_if.c
trdp_stats.h
trdp_stats.c
trdp_if.h
trdp_mdcom.c trdp_utils.c
trdp_utils.h trdp_xml.htrdp_pdcom.htrdp_mdcom.h
trdp_xml.c
Data Structures
• struct TRDP_PD_INFO_T
Process data info from received telegram; allows the application to generate responses.
• struct TRDP_MD_INFO_T
Message data info from received telegram; allows the application to generate responses.
• struct TRDP_SEND_PARAM_T
Quality/type of service and time to live.
• struct TRDP_DATASET_ELEMENT_T
Dataset element definition.
• struct TRDP_DATASET
Dataset definition.
Generated by Doxygen

256 File Documentation
• struct TRDP_COMID_DSID_MAP_T
ComId - data set mapping element definition.
• struct TRDP_STATISTICS_REQUEST_T
TRDP statistics type definitions.
• struct TRDP_MEM_STATISTICS_T
Structure containing all general memory statistics information.
• struct TRDP_PD_STATISTICS_T
Structure containing all general PD statistics information.
• struct TRDP_MD_STATISTICS_T
Structure containing all general MD statistics information.
• struct TRDP_STATISTICS_T
Structure containing all general memory, PD and MD statistics information.
• struct TRDP_SUBS_STATISTICS_T
Table containing particular PD subscription information.
• struct TRDP_PUB_STATISTICS_T
Table containing particular PD publishing information.
• struct TRDP_LIST_STATISTICS_T
Information about a particular MD listener.
• struct TRDP_RED_STATISTICS_T
A table containing PD redundant group information.
• struct TRDP_MARSHALL_CONFIG_T
Marshaling/unmarshalling configuration.
• struct TRDP_PD_CONFIG_T
Default PD configuration.
• struct TRDP_MD_CONFIG_T
Default MD configuration.
• struct TRDP_MEM_CONFIG_T
Enumeration type for memory pre-fragmentation, reuse of VOS definition.
• struct TRDP_PROCESS_CONFIG_T
Various flags/general TRDP options for library initialization.
Macros
• #define USE_HEAP 0
If this is set, we can allocate dynamically memory.
• #define TRDP_FLAGS_DEFAULT 0u
Various flags for PD and MD packets.
• #define TRDP_FLAGS_NONE 0x01u
No flags set.
• #define TRDP_FLAGS_MARSHALL 0x02u
Optional marshalling/unmarshalling in TRDP stack.
• #define TRDP_FLAGS_CALLBACK 0x04u
Use of callback function.
• #define TRDP_FLAGS_TCP 0x08u
Use TCP for message data.
• #define TRDP_FLAGS_FORCE_CB 0x10u
Force a callback for every received packet.
• #define TRDP_INFINITE_TIMEOUT 0xffffffffu
Infinite reply timeout.
• #define TRDP_TIMER_FOREVER 0xffffffff
Generated by Doxygen

5.27 trdp_types.h File Reference 257
No time out for subscription.
• #define TRDP_BOOL8 TRDP_BITSET8
1 bit relevant (equal to zero = false, not equal to zero = true)
• #define TRDP_ANTIVALENT8 TRDP_BITSET8
2 bit relevant (0x0 = errror, 0x01 = false, 0x02 = true, 0x03 undefined)
• #define TRDP_OPTION_NONE 0u
Various flags/general TRDP options for library initialization.
• #define TRDP_OPTION_BLOCK 0x01u
Default: Use nonblocking I/O calls, polling necessary Set: Read calls will block, use select()
• #define TRDP_OPTION_TRAFFIC_SHAPING 0x02u
Use traffic shaping - distribute packet sending Default: OFF.
• #define TRDP_OPTION_NO_REUSE_ADDR 0x04u
Do not allow re-use of address/port (->no multihoming) Default: Allow.
• #define TRDP_OPTION_NO_MC_LOOP_BACK 0x08u
Do not allow loop back of multicast traffic Default: Allow.
• #define TRDP_OPTION_NO_UDP_CHK 0x10u
Suppress UDP CRC generation Default: Compute UDP CRC.
Typedefs
• typedef VOS_IP4_ADDR_T TRDP_IP_ADDR_T
TRDP general type definitions.
• typedef CHAR8 TRDP_NET_LABEL_T[TRDP_MAX_LABEL_LEN]
Definition for usage in network packets, not necessarily \0 terminated!
• typedef VOS_VERSION_T TRDP_VERSION_T
Version information.
• typedef VOS_TIMEVAL_T TRDP_TIME_T
Timer value compatible with timeval / select.
• typedef VOS_FDS_T TRDP_FDS_T
File descriptor set compatible with fd_set / select.
• typedef VOS_UUID_T TRDP_UUID_T
UUID definition reuses the VOS definition.
• typedef struct TRDP_DATASET TRDP_DATASET_T
Dataset definition.
• typedef TRDP_DATASET_T ∗pTRDP_DATASET_T
Array of pointers to dataset.
• typedef VOS_PRINT_DBG_T TRDP_PRINT_DBG_T
TRDP configuration type definitions.
• typedef VOS_LOG_T TRDP_LOG_T
Categories for logging, reuse of the VOS definition.
• typedef TRDP_ERR_T(∗TRDP_MARSHALL_T) (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32
srcSize, UINT8 ∗pDst, UINT32 ∗pDstSize, TRDP_DATASET_T ∗∗ppCachedDS)
Function type for marshalling .
• typedef TRDP_ERR_T(∗TRDP_UNMARSHALL_T) (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32
srcSize, UINT8 ∗pDst, UINT32 ∗pDstSize, TRDP_DATASET_T ∗∗ppCachedDS)
Function type for unmarshalling.
• typedef void(∗TRDP_PD_CALLBACK_T) (void ∗pRefCon, TRDP_APP_SESSION_T appHandle, const T←-
RDP_PD_INFO_T ∗pMsg, UINT8 ∗pData, UINT32 dataSize)
Callback for receiving indications, timeouts, releases, responses.
• typedef void(∗TRDP_MD_CALLBACK_T) (void ∗pRefCon, TRDP_APP_SESSION_T appHandle, const T←-
RDP_MD_INFO_T ∗pMsg, UINT8 ∗pData, UINT32 dataSize)
Callback for receiving indications, timeouts, releases, responses.
Generated by Doxygen

258 File Documentation
Enumerations
• enum TRDP_ERR_T {
TRDP_NO_ERR = 0,
TRDP_PARAM_ERR = -1,
TRDP_INIT_ERR = -2,
TRDP_NOINIT_ERR = -3,
TRDP_TIMEOUT_ERR = -4,
TRDP_NODATA_ERR = -5,
TRDP_SOCK_ERR = -6,
TRDP_IO_ERR = -7,
TRDP_MEM_ERR = -8,
TRDP_SEMA_ERR = -9,
TRDP_QUEUE_ERR = -10,
TRDP_QUEUE_FULL_ERR = -11,
TRDP_MUTEX_ERR = -12,
TRDP_THREAD_ERR = -13,
TRDP_BLOCK_ERR = -14,
TRDP_INTEGRATION_ERR = -15,
TRDP_NOCONN_ERR = -16,
TRDP_NOSESSION_ERR = -30,
TRDP_SESSION_ABORT_ERR = -31,
TRDP_NOSUB_ERR = -32,
TRDP_NOPUB_ERR = -33,
TRDP_NOLIST_ERR = -34,
TRDP_CRC_ERR = -35,
TRDP_WIRE_ERR = -36,
TRDP_TOPO_ERR = -37,
TRDP_COMID_ERR = -38,
TRDP_STATE_ERR = -39,
TRDP_APP_TIMEOUT_ERR = -40,
TRDP_APP_REPLYTO_ERR = -41,
TRDP_APP_CONFIRMTO_ERR = -42,
TRDP_REPLYTO_ERR = -43,
TRDP_CONFIRMTO_ERR = -44,
TRDP_REQCONFIRMTO_ERR = -45,
TRDP_PACKET_ERR = -46,
TRDP_UNRESOLVED_ERR = -47,
TRDP_XML_PARSER_ERR = -48,
TRDP_INUSE_ERR = -49,
TRDP_MARSHALLING_ERR = -50,
TRDP_UNKNOWN_ERR = -99 }
Return codes for all API functions, -1..-29 taken over from vos.
• enum TRDP_REPLY_STATUS_T
TRDP data transfer type definitions.
• enum TRDP_RED_STATE_T {
TRDP_RED_FOLLOWER = 0u,
TRDP_RED_LEADER = 1u }
Redundancy states.
• enum TRDP_TO_BEHAVIOR_T {
TRDP_TO_DEFAULT = 0u,
TRDP_TO_SET_TO_ZERO = 1u,
TRDP_TO_KEEP_LAST_VALUE = 2u }
How invalid PD shall be handled.
• enum TRDP_DATA_TYPE_T {
TRDP_INVALID = 0u,
TRDP_BITSET8 = 1u,
Generated by Doxygen

5.27 trdp_types.h File Reference 259
TRDP_CHAR8 = 2u,
TRDP_UTF16 = 3u,
TRDP_INT8 = 4u,
TRDP_INT16 = 5u,
TRDP_INT32 = 6u,
TRDP_INT64 = 7u,
TRDP_UINT8 = 8u,
TRDP_UINT16 = 9u,
TRDP_UINT32 = 10u,
TRDP_UINT64 = 11u,
TRDP_REAL32 = 12u,
TRDP_REAL64 = 13u,
TRDP_TIMEDATE32 = 14u,
TRDP_TIMEDATE48 = 15u,
TRDP_TIMEDATE64 = 16u,
TRDP_TYPE_MAX = 30u }
TRDP dataset description definitions.
5.27.1 Detailed Description
Typedefs for TRDP communication.
F
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2015. All rights reserved.
BL 2018-09-05: Ticket #211 XML handling: Dataset Name should be stored in TRDP_DATASET_ELEMENT_T
BL 2018-05-02: Ticket #188 Typo in the TRDP_VAR_SIZE definition
BL 2017-11-13: Ticket #176 TRDP_LABEL_T breaks field alignment -> TRDP_NET_LABEL_T
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
AHW 2017-05-22: Ticket #158 Infinit timeout at TRDB level is 0 acc. standard
BL 2017-05-08: Compiler warnings, doxygen comment errors
BL 2017-04-28: Ticket #155: Kill trdp_proto.h - move definitions to iec61375-2-3.h
BL 2017-03-01: Ticket #149 SourceUri and DestinationUri don’t with 32 characters
BL 2017-02-27: Ticket #142 Compiler warnings / MISRA-C 2012 issues
BL 2016-06-08: Ticket #120: ComIds for statistics changed to proposed 61375 errata
BL 2016-02-11: Ticket #111: ’unit’, ’scale’, ’offset’ attributes added to TRDP_DATASET_ELEMENT
BL 2016-01-25: Ticket #106: User needs to be informed on every received PD packet
BL 2015-12-14: Ticket #33: source size check for marshalling
BL 2015-08-05: Ticket #81: Counts for packet loss
BL 2014-07-14: Ticket #46: Protocol change: operational topocount needed
BL 2014-02-27: Ticket #17: tlp_subscribe() returns wrong *pSubHandle
Generated by Doxygen

260 File Documentation
5.27.2 Macro Definition Documentation
5.27.2.1 TRDP_FLAGS_DEFAULT
#define TRDP_FLAGS_DEFAULT 0u
Various flags for PD and MD packets.
Default value defined in tlc_openDession will be taken
5.27.3 Typedef Documentation
5.27.3.1 TRDP_IP_ADDR_T
typedef VOS_IP4_ADDR_T TRDP_IP_ADDR_T
TRDP general type definitions.
5.27.3.2 TRDP_MARSHALL_T
typedef TRDP_ERR_T(∗TRDP_MARSHALL_T) (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 src←-
Size, UINT8 ∗pDst, UINT32 ∗pDstSize, TRDP_DATASET_T ∗∗ppCachedDS)
Function type for marshalling .
The function must know about the dataset's alignment etc.
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize size of the source buffer
in pDst pointer to a buffer for the treated message
in,out pDstSize size of the provide buffer / size of the treated message
in,out ppCachedDS pointer to pointer of cached dataset
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provided buffer to small
TRDP_COMID_ERR comid not existing
Generated by Doxygen

5.27 trdp_types.h File Reference 261
5.27.3.3 TRDP_MD_CALLBACK_T
typedef void(∗TRDP_MD_CALLBACK_T) (void ∗pRefCon, TRDP_APP_SESSION_T appHandle, const TRDP_M←-
D_INFO_T ∗pMsg, UINT8 ∗pData, UINT32 dataSize)
Callback for receiving indications, timeouts, releases, responses.
Parameters
in appHandle handle returned also by tlc_init
in pRefCon pointer to user context
in pMsg pointer to received message information
in pData pointer to received data
in dataSize size of received data pointer to received data
5.27.3.4 TRDP_PD_CALLBACK_T
typedef void(∗TRDP_PD_CALLBACK_T) (void ∗pRefCon, TRDP_APP_SESSION_T appHandle, const TRDP_P←-
D_INFO_T ∗pMsg, UINT8 ∗pData, UINT32 dataSize)
Callback for receiving indications, timeouts, releases, responses.
Parameters
in pRefCon pointer to user context
in appHandle application handle returned by tlc_openSession
in pMsg pointer to received message information
in pData pointer to received data
in dataSize size of received data pointer to received data
5.27.3.5 TRDP_PRINT_DBG_T
typedef VOS_PRINT_DBG_T TRDP_PRINT_DBG_T
TRDP configuration type definitions.
Callback function definition for error/debug output, reuse of the VOS defined function.
5.27.3.6 TRDP_TIME_T
typedef VOS_TIMEVAL_T TRDP_TIME_T
Timer value compatible with timeval / select.
Relative or absolute date, depending on usage
Generated by Doxygen

262 File Documentation
5.27.3.7 TRDP_UNMARSHALL_T
typedef TRDP_ERR_T(∗TRDP_UNMARSHALL_T) (void ∗pRefCon, UINT32 comId, UINT8 ∗pSrc, UINT32 src←-
Size, UINT8 ∗pDst, UINT32 ∗pDstSize, TRDP_DATASET_T ∗∗ppCachedDS)
Function type for unmarshalling.
The function must know about the dataset's alignment etc.
Parameters
in pRefCon pointer to user context
in comId ComId to identify the structure out of a configuration
in pSrc pointer to received original message
in srcSize data length from TRDP packet header
in pDst pointer to a buffer for the treated message
in,out pDstSize size of the provide buffer / size of the treated message
in,out ppCachedDS pointer to pointer of cached dataset
Return values
TRDP_NO_ERR no error
TRDP_MEM_ERR provide buffer to small
TRDP_COMID_ERR comid not existing
5.27.4 Enumeration Type Documentation
5.27.4.1 TRDP_DATA_TYPE_T
enum TRDP_DATA_TYPE_T
TRDP dataset description definitions.
Dataset element definition
Enumerator
TRDP_INVALID Invalid/unknown.
TRDP_BITSET8 =UINT8
TRDP_CHAR8 char, can be used also as UTF8
TRDP_UTF16 Unicode UTF-16 character.
TRDP_INT8 Signed integer, 8 bit.
TRDP_INT16 Signed integer, 16 bit.
TRDP_INT32 Signed integer, 32 bit.
TRDP_INT64 Signed integer, 64 bit.
TRDP_UINT8 Unsigned integer, 8 bit.
TRDP_UINT16 Unsigned integer, 16 bit.
Generated by Doxygen

5.27 trdp_types.h File Reference 263
Enumerator
TRDP_UINT32 Unsigned integer, 32 bit.
TRDP_UINT64 Unsigned integer, 64 bit.
TRDP_REAL32 Floating point real, 32 bit.
TRDP_REAL64 Floating point real, 64 bit.
TRDP_TIMEDATE32 32 bit UNIX time
TRDP_TIMEDATE48 48 bit TCN time (32 bit UNIX time and 16 bit ticks)
TRDP_TIMEDATE64 32 bit UNIX time + 32 bit microseconds
TRDP_TYPE_MAX Values greater are considered nested datasets.
5.27.4.2 TRDP_ERR_T
enum TRDP_ERR_T
Return codes for all API functions, -1..-29 taken over from vos.
Enumerator
TRDP_NO_ERR No error.
TRDP_PARAM_ERR Parameter missing or out of range.
TRDP_INIT_ERR Call without valid initialization.
TRDP_NOINIT_ERR Call with invalid handle.
TRDP_TIMEOUT_ERR Timout.
TRDP_NODATA_ERR Non blocking mode: no data received.
TRDP_SOCK_ERR Socket error / option not supported.
TRDP_IO_ERR Socket IO error, data can't be received/sent.
TRDP_MEM_ERR No more memory available.
TRDP_SEMA_ERR Semaphore not available.
TRDP_QUEUE_ERR Queue empty.
TRDP_QUEUE_FULL_ERR Queue full.
TRDP_MUTEX_ERR Mutex not available.
TRDP_THREAD_ERR Thread error.
TRDP_BLOCK_ERR System call would have blocked in blocking mode.
TRDP_INTEGRATION_ERR Alignment or endianess for selected target wrong.
TRDP_NOCONN_ERR No TCP connection.
TRDP_NOSESSION_ERR No such session.
TRDP_SESSION_ABORT_ERR Session aborted.
TRDP_NOSUB_ERR No subscriber.
TRDP_NOPUB_ERR No publisher.
TRDP_NOLIST_ERR No listener.
TRDP_CRC_ERR Wrong CRC.
TRDP_WIRE_ERR Wire.
TRDP_TOPO_ERR Invalid topo count.
TRDP_COMID_ERR Unknown ComId.
TRDP_STATE_ERR Call in wrong state.
TRDP_APP_TIMEOUT_ERR Application Timeout.
TRDP_APP_REPLYTO_ERR Application Reply Sent Timeout.
Generated by Doxygen

264 File Documentation
Enumerator
TRDP_APP_CONFIRMTO_ERR Application Confirm Sent Timeout.
TRDP_REPLYTO_ERR Protocol Reply Timeout.
TRDP_CONFIRMTO_ERR Protocol Confirm Timeout.
TRDP_REQCONFIRMTO_ERR Protocol Confirm Timeout (Request sender)
TRDP_PACKET_ERR Incomplete message data packet.
TRDP_UNRESOLVED_ERR DNR: address could not be resolved.
TRDP_XML_PARSER_ERR Returned by the tau_xml subsystem.
TRDP_INUSE_ERR Resource is still in use.
TRDP_MARSHALLING_ERR Source size exceeded, dataset mismatch.
TRDP_UNKNOWN_ERR Unspecified error.
5.27.4.3 TRDP_RED_STATE_T
enum TRDP_RED_STATE_T
Redundancy states.
Enumerator
TRDP_RED_FOLLOWER Redundancy follower - redundant PD will be not sent out.
TRDP_RED_LEADER Redundancy leader - redundant PD will be sent out.
5.27.4.4 TRDP_REPLY_STATUS_T
enum TRDP_REPLY_STATUS_T
TRDP data transfer type definitions.
Reply status messages
5.27.4.5 TRDP_TO_BEHAVIOR_T
enum TRDP_TO_BEHAVIOR_T
How invalid PD shall be handled.
Enumerator
TRDP_TO_DEFAULT Default value defined in tlc_openDession will be taken.
TRDP_TO_SET_TO_ZERO If set, data will be reset to zero on time out.
TRDP_TO_KEEP_LAST_VALUE If set, last received values will be returned.
Generated by Doxygen

5.28 trdp_utils.c File Reference 265
5.28 trdp_utils.c File Reference
Helper functions for TRDP communication.
#include <string.h>
#include "trdp_if.h"
#include "trdp_utils.h"
Include dependency graph for trdp_utils.c:
trdp_utils.c
string.h trdp_if.h trdp_utils.h
trdp_if_light.h
trdp_types.h
vos_types.h
vos_mem.h vos_sock.hiec61375-2-3.h
stdint.h
vos_thread.h vos_private.h
stdio.h
trdp_private.h vos_utils.h
stddef.h
Functions
• INT32 trdp_getCurrentMaxSocketCnt ()
Return the largest number of the socket index.
•TRDP_IP_ADDR_T trdp_findMCjoins (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T mcGroup)
Check an MC group not used by other sockets / subscribers/ listeners.
• UINT32 trdp_packetSizePD (UINT32 dataSize)
Get the packet size from the raw data size.
• UINT32 trdp_packetSizeMD (UINT32 dataSize)
Get the packet size from the raw data size.
•PD_ELE_T ∗trdp_queueFindComId (PD_ELE_T ∗pHead, UINT32 comId)
Return the element with same comId.
•PD_ELE_T ∗trdp_queueFindPubAddr (PD_ELE_T ∗pHead, TRDP_ADDRESSES_T ∗addr)
Return the element with same comId and IP addresses.
•PD_ELE_T ∗trdp_queueFindSubAddr (PD_ELE_T ∗pHead, TRDP_ADDRESSES_T ∗addr)
Return the element with same comId and IP addresses.
• void trdp_queueDelElement (PD_ELE_T ∗∗ppHead, PD_ELE_T ∗pDelete)
Generated by Doxygen

266 File Documentation
Delete an element.
• BOOL8 trdp_validTopoCounters (UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, UINT32 etbTopoCntFilter, U←-
INT32 opTrnTopoCntFilter)
Check topography counters The applied conformance pattern follows Table A.5/A.21 (positive match): Telegram to be
sent Locally stored value (appSession) Case etbTopoCnt opTrnTopoCnt etbTopoCntFilter opTrnTopoCntFilter 1 any
any 0 0 2 any equal 0 equal 3 equal any equal 0 4 equal equal equal equal.
• void trdp_queueAppLast (PD_ELE_T ∗∗ppHead, PD_ELE_T ∗pNew)
Append an element at end of queue.
• void trdp_queueInsFirst (PD_ELE_T ∗∗ppHead, PD_ELE_T ∗pNew)
Insert an element at front of queue.
• void trdp_initSockets (TRDP_SOCKETS_T iface[ ])
Handle the socket pool: Initialize it.
•TRDP_ERR_T trdp_requestSocket (TRDP_SOCKETS_T iface[ ], UINT16 port, const TRDP_SEND_PA←-
RAM_T ∗params, TRDP_IP_ADDR_T srcIP, TRDP_IP_ADDR_T mcGroup, TRDP_SOCK_TYPE_T type,
TRDP_OPTION_T options, BOOL8 rcvMostly, SOCKET useSocket, INT32 ∗pIndex, TRDP_IP_ADDR_←-
TcornerIp)
Handle the socket pool: Request a socket from our socket pool First we loop through the socket pool and check if
there is already a socket which would suit us.
• void trdp_releaseSocket (TRDP_SOCKETS_T iface[ ], INT32 lIndex, UINT32 connectTimeout, BOOL8
checkAll, TRDP_IP_ADDR_T mcGroupUsed)
Handle the socket pool: if a received TCP socket is unused, the socket connection timeout is started.
• UINT32 trdp_getSeqCnt (UINT32 comId, TRDP_MSG_T msgType, TRDP_IP_ADDR_T srcIpAddr)
Get the initial sequence counter for the comID/message type and subnet (source IP).
• void trdp_resetSequenceCounter (PD_ELE_T ∗pElement, TRDP_IP_ADDR_T srcIP, TRDP_MSG_T msg←-
Type)
remove the sequence counter for the comID/source IP.
• int trdp_checkSequenceCounter (PD_ELE_T ∗pElement, UINT32 sequenceCounter, TRDP_IP_ADDR_←-
TsrcIP, TRDP_MSG_T msgType)
check and update the sequence counter for the comID/source IP.
• BOOL8 trdp_isAddressed (const TRDP_URI_USER_T listUri, const TRDP_URI_USER_T destUri)
Check if listener URI is in addressing range of destination URI.
• BOOL8 trdp_isInIPrange (TRDP_IP_ADDR_T receivedSrcIP, TRDP_IP_ADDR_T listenedSourceIPlow, T←-
RDP_IP_ADDR_T listenedSourceIPhigh)
Check if received IP is in addressing range of listener's IPs.
5.28.1 Detailed Description
Helper functions for TRDP communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Generated by Doxygen

5.28 trdp_utils.c File Reference 267
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_utils.c 1779 2018-11-07 09:49:55Z bloehr
BL 2018-11-06: for-loops limited to sCurrentMaxSocketCnt instead VOS_MAX_SOCKET_CNT
BL 2018-11-06: Ticket #219: PD Sequence Counter is not synched correctly
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2018-02-03: Ticket #190 Source filtering (IP-range) for PD subscribe
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-15: Ticket #1 Unjoin on unsubscribe/delListener (finally ;-)
BL 2017-11-15: Ticket #175 PD: Handling of sequence counter
BL 2017-11-09: Ticket #181/182 Missing padding bytes in user dataset of PD/MD-PDU
BL 2017-11-06: Ticket #178 trdp_releaseSocket does not cleanup tcpParams
BL 2017-11-06: Ticket #174 Socket is closed, even if in use
BL 2017-06-07: Undoing setting of usage (came in with #126 fix!)
BL 2017-05-08: Ticket #126 Opened UDP socket is not released if join or bind failed in trdp_requestSocket()
BL 2017-05-08: Compiler warnings, static definitions
BL 2017-03-01: Ticket #136 PD topography counter with faulty behavior
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-03-01: Setting correct multicast TTL for PDs
BL 2014-08-25: Ticket #57+58: Padding / zero bytes trailing MD & PD packets fixed
BL 2014-06-02: Ticket #41: Sequence counter handling fixed
5.28.2 Function Documentation
5.28.2.1 trdp_checkSequenceCounter()
int trdp_checkSequenceCounter (
PD_ELE_T ∗pElement,
UINT32 sequenceCounter,
TRDP_IP_ADDR_T srcIP,
TRDP_MSG_T msgType )
check and update the sequence counter for the comID/source IP.
If the comID/srcIP is not found, update it and return 0 - else if already received, return 1 On memory error, return -1
Parameters
in pElement subscription element
in sequenceCounter sequence counter to check
in srcIP Source IP address
in msgType type of the message
Return values
0- no duplicate 1 - duplicate or old sequence counter -1 - memory error
Generated by Doxygen

268 File Documentation
Here is the call graph for this function:
trdp_checkSequenceCounter
vos_memAlloc
vos_ipDotted
vos_memFree
5.28.2.2 trdp_findMCjoins()
TRDP_IP_ADDR_T trdp_findMCjoins (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T mcGroup )
Check an MC group not used by other sockets / subscribers/ listeners.
Parameters
in appHandle the handle returned by tlc_openSession
in mcGroup multicast group to look for
Return values
multi cast group if unused VOS_INADDR_ANY if used
5.28.2.3 trdp_getCurrentMaxSocketCnt()
INT32 trdp_getCurrentMaxSocketCnt (
void )
Return the largest number of the socket index.
Returns
maxSocketCount
Generated by Doxygen

5.28 trdp_utils.c File Reference 269
5.28.2.4 trdp_getSeqCnt()
UINT32 trdp_getSeqCnt (
UINT32 comId,
TRDP_MSG_T msgType,
TRDP_IP_ADDR_T srcIpAddr )
Get the initial sequence counter for the comID/message type and subnet (source IP).
If the comID/srcIP is not found elsewhere, return 0 - else return its current sequence number (the redundant packet
needs the same seqNo)
Note: The standard demands that sequenceCounter is managed per comID/msgType at each publisher, but shall
be the same for redundant telegrams (subnet/srcIP).
Parameters
in comId comID to look for
in msgType PD/MD type
in srcIpAddr Source IP address
Return values
return the sequence number
5.28.2.5 trdp_initSockets()
void trdp_initSockets (
TRDP_SOCKETS_T iface[ ] )
Handle the socket pool: Initialize it.
Parameters
in iface pointer to the socket pool
5.28.2.6 trdp_isAddressed()
BOOL8 trdp_isAddressed (
const TRDP_URI_USER_T listUri,
const TRDP_URI_USER_T destUri )
Check if listener URI is in addressing range of destination URI.
Parameters
in listUri Null terminated listener URI string to compare
in destUri Null terminated destination URI string to compare
Generated by Doxygen

270 File Documentation
Return values
FALSE - not in addressing range
TRUE - listener URI is in addressing range of destination URI
5.28.2.7 trdp_isInIPrange()
BOOL8 trdp_isInIPrange (
TRDP_IP_ADDR_T receivedSrcIP,
TRDP_IP_ADDR_T listenedSourceIPlow,
TRDP_IP_ADDR_T listenedSourceIPhigh )
Check if received IP is in addressing range of listener's IPs.
Parameters
in receivedSrcIP Received IP address
in listenedSourceIPlow Lower bound IP
in listenedSourceIPhigh Upper bound IP
Return values
FALSE - not in addressing range
TRUE - received IP is in addressing range of listener
5.28.2.8 trdp_packetSizeMD()
UINT32 trdp_packetSizeMD (
UINT32 dataSize )
Get the packet size from the raw data size.
Parameters
in dataSize net data size (without padding)
Return values
packet size the size of the complete packet to be sent or received
5.28.2.9 trdp_packetSizePD()
UINT32 trdp_packetSizePD (
Generated by Doxygen

5.28 trdp_utils.c File Reference 271
UINT32 dataSize )
Get the packet size from the raw data size.
Parameters
in dataSize net data size (without padding)
Return values
packet size the size of the complete packet to be sent or received
5.28.2.10 trdp_queueAppLast()
void trdp_queueAppLast (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pNew )
Append an element at end of queue.
Parameters
in ppHead pointer to pointer to head of queue
in pNew pointer to element to append
5.28.2.11 trdp_queueDelElement()
void trdp_queueDelElement (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pDelete )
Delete an element.
Parameters
in ppHead pointer to pointer to head of queue
in pDelete pointer to element to delete
5.28.2.12 trdp_queueFindComId()
PD_ELE_T∗trdp_queueFindComId (
PD_ELE_T ∗pHead,
UINT32 comId )
Generated by Doxygen

272 File Documentation
Return the element with same comId.
Generated by Doxygen

5.28 trdp_utils.c File Reference 273
Parameters
in pHead pointer to head of queue
in comId ComID to search for
Return values
!= NULL pointer to PD element
NULL No PD element found
5.28.2.13 trdp_queueFindPubAddr()
PD_ELE_T∗trdp_queueFindPubAddr (
PD_ELE_T ∗pHead,
TRDP_ADDRESSES_T ∗addr )
Return the element with same comId and IP addresses.
Parameters
in pHead pointer to head of queue
in addr Pub/Sub handle (Address, ComID, srcIP & dest IP) to search for
Return values
!= NULL pointer to PD element
NULL No PD element found
5.28.2.14 trdp_queueFindSubAddr()
PD_ELE_T∗trdp_queueFindSubAddr (
PD_ELE_T ∗pHead,
TRDP_ADDRESSES_T ∗addr )
Return the element with same comId and IP addresses.
Parameters
in pHead pointer to head of queue
in addr Pub/Sub handle (Address, ComID, srcIP & dest IP) to search for
Return values
!= NULL pointer to PD element
NULL No PD element found
Generated by Doxygen

274 File Documentation
5.28.2.15 trdp_queueInsFirst()
void trdp_queueInsFirst (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pNew )
Insert an element at front of queue.
Parameters
in ppHead pointer to pointer to head of queue
in pNew pointer to element to insert
5.28.2.16 trdp_releaseSocket()
void trdp_releaseSocket (
TRDP_SOCKETS_T iface[ ],
INT32 lIndex,
UINT32 connectTimeout,
BOOL8 checkAll,
TRDP_IP_ADDR_T mcGroupUsed )
Handle the socket pool: if a received TCP socket is unused, the socket connection timeout is started.
Handle the socket pool: Release a socket from our socket pool.
In Udp, Release a socket from our socket pool
Parameters
in,out iface socket pool
in lIndex index of socket to release
in connectTimeout time out
in checkAll release all TCP pending sockets
in mcGroupUsed release MC group subscription
5.28.2.17 trdp_requestSocket()
TRDP_ERR_T trdp_requestSocket (
TRDP_SOCKETS_T iface[ ],
UINT16 port,
const TRDP_SEND_PARAM_T ∗params,
TRDP_IP_ADDR_T srcIP,
Generated by Doxygen

5.28 trdp_utils.c File Reference 275
TRDP_IP_ADDR_T mcGroup,
TRDP_SOCK_TYPE_T type,
TRDP_OPTION_T options,
BOOL8 rcvMostly,
SOCKET useSocket,
INT32 ∗pIndex,
TRDP_IP_ADDR_T cornerIp )
Handle the socket pool: Request a socket from our socket pool First we loop through the socket pool and check if
there is already a socket which would suit us.
If a multicast group should be joined, we do that on an otherwise suitable socket - up to 20 multicast goups can
be joined per socket. If a socket for multicast publishing is requested, we also use the source IP to determine the
interface for outgoing multicast traffic.
Parameters
in,out iface socket pool
in port port to use
in params parameters to use
in srcIP IP to bind to (0 = any address)
in mcGroup MC group to join (0 = do not join)
in type type determines port to bind to (PD, MD/UDP, MD/TCP)
in options blocking/nonblocking
in rcvMostly primarily used for receiving (tbd: bind on sender, too?)
out useSocket socket to use, do not open a new one
out pIndex returned index of socket pool
in cornerIp only used for receiving
Return values
TRDP_NO_ERR
TRDP_PARAM_ERR
5.28.2.18 trdp_resetSequenceCounter()
void trdp_resetSequenceCounter (
PD_ELE_T ∗pElement,
TRDP_IP_ADDR_T srcIP,
TRDP_MSG_T msgType )
remove the sequence counter for the comID/source IP.
The sequence counter should be reset if there was a packet time out.
Parameters
in pElement subscription element
in srcIP Source IP address
in msgType message type
Generated by Doxygen

276 File Documentation
Return values
none
5.28.2.19 trdp_validTopoCounters()
BOOL8 trdp_validTopoCounters (
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
UINT32 etbTopoCntFilter,
UINT32 opTrnTopoCntFilter )
Check topography counters The applied conformance pattern follows Table A.5/A.21 (positive match): Telegram to
be sent Locally stored value (appSession) Case etbTopoCnt opTrnTopoCnt etbTopoCntFilter opTrnTopoCntFilter 1
any any 0 0 2 any equal 0 equal 3 equal any equal 0 4 equal equal equal equal.
Parameters
in etbTopoCnt ETB topography counter to be checked
in opTrnTopoCnt Operational topography counter to be checked
in etbTopoCntFilter ETB topography counter filter value
in opTrnTopoCntFilter Operational topography counter filter value
Return values
TRUE Filter criteria matched FALSE Filter criteria not matched
5.29 trdp_utils.h File Reference
Common utilities for TRDP communication.
#include <stdio.h>
#include "trdp_private.h"
#include "vos_utils.h"
#include "vos_sock.h"
Generated by Doxygen

5.29 trdp_utils.h File Reference 277
Include dependency graph for trdp_utils.h:
trdp_utils.h
stdio.h
trdp_private.h
vos_sock.h
vos_utils.h
trdp_types.h
vos_thread.h
vos_types.h
vos_mem.h iec61375-2-3.h
stdint.h
vos_private.h
stddef.h
This graph shows which files directly or indirectly include this file:
trdp_utils.h
tau_ctrl.c tau_dnr.c tau_marshall.c tau_tti.c tau_xml.c trdp_if.c trdp_mdcom.c trdp_pdcom.c trdp_utils.c
Functions
•PD_ELE_T ∗trdp_queueFindComId (PD_ELE_T ∗pHead, UINT32 comId)
Return the element with same comId.
•PD_ELE_T ∗trdp_queueFindSubAddr (PD_ELE_T ∗pHead, TRDP_ADDRESSES_T ∗pAddr)
Return the element with same comId and IP addresses.
•PD_ELE_T ∗trdp_queueFindPubAddr (PD_ELE_T ∗pHead, TRDP_ADDRESSES_T ∗addr)
Return the element with same comId and IP addresses.
• void trdp_queueDelElement (PD_ELE_T ∗∗pHead, PD_ELE_T ∗pDelete)
Delete an element.
• void trdp_queueAppLast (PD_ELE_T ∗∗pHead, PD_ELE_T ∗pNew)
Append an element at end of queue.
• void trdp_queueInsFirst (PD_ELE_T ∗∗pHead, PD_ELE_T ∗pNew)
Insert an element at front of queue.
• INT32 trdp_getCurrentMaxSocketCnt (void)
Generated by Doxygen

278 File Documentation
Return the largest number of the socket index.
• void trdp_initSockets (TRDP_SOCKETS_T iface[ ])
Handle the socket pool: Initialize it.
• void trdp_initUncompletedTCP (TRDP_APP_SESSION_T appHandle)
???
• void trdp_resetSequenceCounter (PD_ELE_T ∗pElement, TRDP_IP_ADDR_T srcIP, TRDP_MSG_T msg←-
Type)
remove the sequence counter for the comID/source IP.
•TRDP_IP_ADDR_T trdp_findMCjoins (TRDP_APP_SESSION_T appHandle, TRDP_IP_ADDR_T mcGroup)
Check an MC group not used by other sockets / subscribers/ listeners.
•TRDP_ERR_T trdp_requestSocket (TRDP_SOCKETS_T iface[ ], UINT16 port, const TRDP_SEND_PA←-
RAM_T ∗params, TRDP_IP_ADDR_T srcIP, TRDP_IP_ADDR_T mcGroup, TRDP_SOCK_TYPE_T type,
TRDP_OPTION_T options, BOOL8 rcvMostly, SOCKET useSocket, INT32 ∗pIndex, TRDP_IP_ADDR_←-
TcornerIp)
Handle the socket pool: Request a socket from our socket pool First we loop through the socket pool and check if
there is already a socket which would suit us.
• void trdp_releaseSocket (TRDP_SOCKETS_T iface[ ], INT32 lIndex, UINT32 connectTimeout, BOOL8
checkAll, TRDP_IP_ADDR_T mcGroupUsed)
Handle the socket pool: Release a socket from our socket pool.
• UINT32 trdp_packetSizePD (UINT32 dataSize)
Get the packet size from the raw data size.
• UINT32 trdp_packetSizeMD (UINT32 dataSize)
Get the packet size from the raw data size.
• UINT32 trdp_getSeqCnt (UINT32 comID, TRDP_MSG_T msgType, TRDP_IP_ADDR_T srcIP)
Get the initial sequence counter for the comID/message type and subnet (source IP).
• int trdp_checkSequenceCounter (PD_ELE_T ∗pElement, UINT32 sequenceCounter, TRDP_IP_ADDR_←-
TsrcIP, TRDP_MSG_T msgType)
check and update the sequence counter for the comID/source IP.
• BOOL8 trdp_isAddressed (const TRDP_URI_USER_T listUri, const TRDP_URI_USER_T destUri)
Check if listener URI is in addressing range of destination URI.
• BOOL8 trdp_validTopoCounters (UINT32 etbTopoCnt, UINT32 opTrnTopoCnt, UINT32 etbTopoCntFilter, U←-
INT32 opTrnTopoCntFilter)
Check topography counters The applied conformance pattern follows Table A.5/A.21 (positive match): Telegram to be
sent Locally stored value (appSession) Case etbTopoCnt opTrnTopoCnt etbTopoCntFilter opTrnTopoCntFilter 1 any
any 0 0 2 any equal 0 equal 3 equal any equal 0 4 equal equal equal equal.
• BOOL8 trdp_isInIPrange (TRDP_IP_ADDR_T receivedSrcIP, TRDP_IP_ADDR_T listenedSourceIPlow, T←-
RDP_IP_ADDR_T listenedSourceIPhigh)
Check if received IP is in addressing range of listener's IPs.
5.29.1 Detailed Description
Common utilities for TRDP communication.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Generated by Doxygen

5.29 trdp_utils.h File Reference 279
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
trdp_utils.h 1779 2018-11-07 09:49:55Z bloehr
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2017-11-28: Ticket #180 Filtering rules for DestinationURI does not follow the standard
BL 2017-11-15: Ticket #1 Unjoin on unsubscribe/delListener (finally ;-)
BL 2017-05-08: Doxygen comment errors
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
5.29.2 Function Documentation
5.29.2.1 trdp_checkSequenceCounter()
int trdp_checkSequenceCounter (
PD_ELE_T ∗pElement,
UINT32 sequenceCounter,
TRDP_IP_ADDR_T srcIP,
TRDP_MSG_T msgType )
check and update the sequence counter for the comID/source IP.
If the comID/srcIP is not found, update it and return 0 - else if already received, return 1 On memory error, return -1
Parameters
in pElement subscription element
in sequenceCounter sequence counter to check
in srcIP Source IP address
in msgType type of the message
Return values
0- no duplicate 1 - duplicate sequence counter -1 - memory error
If the comID/srcIP is not found, update it and return 0 - else if already received, return 1 On memory error, return -1
Parameters
in pElement subscription element
in sequenceCounter sequence counter to check
in srcIP Source IP address
in msgType type of the message
Generated by Doxygen

280 File Documentation
Return values
0- no duplicate 1 - duplicate or old sequence counter -1 - memory error
Here is the call graph for this function:
trdp_checkSequenceCounter
vos_memAlloc
vos_ipDotted
vos_memFree
5.29.2.2 trdp_findMCjoins()
TRDP_IP_ADDR_T trdp_findMCjoins (
TRDP_APP_SESSION_T appHandle,
TRDP_IP_ADDR_T mcGroup )
Check an MC group not used by other sockets / subscribers/ listeners.
Parameters
in appHandle the handle returned by tlc_openSession
in mcGroup multicast group to look for
Return values
multi cast group if unused VOS_INADDR_ANY if used
5.29.2.3 trdp_getCurrentMaxSocketCnt()
INT32 trdp_getCurrentMaxSocketCnt (
void )
Return the largest number of the socket index.
Generated by Doxygen

5.29 trdp_utils.h File Reference 281
Returns
maxSocketCount
5.29.2.4 trdp_getSeqCnt()
UINT32 trdp_getSeqCnt (
UINT32 comId,
TRDP_MSG_T msgType,
TRDP_IP_ADDR_T srcIpAddr )
Get the initial sequence counter for the comID/message type and subnet (source IP).
If the comID/srcIP is not found elsewhere, return 0 - else return its current sequence number (the redundant packet
needs the same seqNo)
Note: The standard demands that sequenceCounter is managed per comID/msgType at each publisher, but shall
be the same for redundant telegrams (subnet/srcIP).
Parameters
in comID comID to look for
in msgType PD/MD type
in srcIP Source IP address
Return values
return the sequence number
If the comID/srcIP is not found elsewhere, return 0 - else return its current sequence number (the redundant packet
needs the same seqNo)
Note: The standard demands that sequenceCounter is managed per comID/msgType at each publisher, but shall
be the same for redundant telegrams (subnet/srcIP).
Parameters
in comId comID to look for
in msgType PD/MD type
in srcIpAddr Source IP address
Return values
return the sequence number
5.29.2.5 trdp_initSockets()
void trdp_initSockets (
Generated by Doxygen

282 File Documentation
TRDP_SOCKETS_T iface[ ] )
Handle the socket pool: Initialize it.
Parameters
in iface pointer to the socket pool
5.29.2.6 trdp_initUncompletedTCP()
void trdp_initUncompletedTCP (
TRDP_APP_SESSION_T appHandle )
???
Parameters
in appHandle session handle
5.29.2.7 trdp_isAddressed()
BOOL8 trdp_isAddressed (
const TRDP_URI_USER_T listUri,
const TRDP_URI_USER_T destUri )
Check if listener URI is in addressing range of destination URI.
Parameters
in listUri Null terminated listener URI string to compare
in destUri Null terminated destination URI string to compare
Return values
FALSE - not in addressing range
TRUE - listener URI is in addressing range of destination URI
5.29.2.8 trdp_isInIPrange()
BOOL8 trdp_isInIPrange (
TRDP_IP_ADDR_T receivedSrcIP,
TRDP_IP_ADDR_T listenedSourceIPlow,
TRDP_IP_ADDR_T listenedSourceIPhigh )
Generated by Doxygen

5.29 trdp_utils.h File Reference 283
Check if received IP is in addressing range of listener's IPs.
Generated by Doxygen

284 File Documentation
Parameters
in receivedSrcIP Received IP address
in listenedSourceIPlow Lower bound IP
in listenedSourceIPhigh Upper bound IP
Return values
FALSE - not in addressing range
TRUE - received IP is in addressing range of listener
5.29.2.9 trdp_packetSizeMD()
UINT32 trdp_packetSizeMD (
UINT32 dataSize )
Get the packet size from the raw data size.
Parameters
in dataSize net data size
Return values
packet size the size of the complete packet to be sent or received
Parameters
in dataSize net data size (without padding)
Return values
packet size the size of the complete packet to be sent or received
5.29.2.10 trdp_packetSizePD()
UINT32 trdp_packetSizePD (
UINT32 dataSize )
Get the packet size from the raw data size.
Parameters
in dataSize net data size
Generated by Doxygen

5.29 trdp_utils.h File Reference 285
Return values
packet size the size of the complete packet to be sent or received
Parameters
in dataSize net data size (without padding)
Return values
packet size the size of the complete packet to be sent or received
5.29.2.11 trdp_queueAppLast()
void trdp_queueAppLast (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pNew )
Append an element at end of queue.
Parameters
in ppHead pointer to pointer to head of queue
in pNew pointer to element to append
5.29.2.12 trdp_queueDelElement()
void trdp_queueDelElement (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pDelete )
Delete an element.
Parameters
in ppHead pointer to pointer to head of queue
in pDelete pointer to element to delete
5.29.2.13 trdp_queueFindComId()
PD_ELE_T∗trdp_queueFindComId (
PD_ELE_T ∗pHead,
UINT32 comId )
Generated by Doxygen

286 File Documentation
Return the element with same comId.
Parameters
in pHead pointer to head of queue
in comId ComID to search for
Return values
!= NULL pointer to PD element
NULL No PD element found
5.29.2.14 trdp_queueFindPubAddr()
PD_ELE_T∗trdp_queueFindPubAddr (
PD_ELE_T ∗pHead,
TRDP_ADDRESSES_T ∗addr )
Return the element with same comId and IP addresses.
Parameters
in pHead pointer to head of queue
in addr Pub/Sub handle (Address, ComID, srcIP & dest IP) to search for
Return values
!= NULL pointer to PD element
NULL No PD element found
5.29.2.15 trdp_queueFindSubAddr()
PD_ELE_T∗trdp_queueFindSubAddr (
PD_ELE_T ∗pHead,
TRDP_ADDRESSES_T ∗addr )
Return the element with same comId and IP addresses.
Parameters
in pHead pointer to head of queue
in addr Pub/Sub handle (Address, ComID, srcIP & dest IP) to search for
Return values
!= NULL pointer to PD element
Generated by Doxygen

5.29 trdp_utils.h File Reference 287
Return values
NULL No PD element found
5.29.2.16 trdp_queueInsFirst()
void trdp_queueInsFirst (
PD_ELE_T ∗∗ ppHead,
PD_ELE_T ∗pNew )
Insert an element at front of queue.
Parameters
in ppHead pointer to pointer to head of queue
in pNew pointer to element to insert
5.29.2.17 trdp_releaseSocket()
void trdp_releaseSocket (
TRDP_SOCKETS_T iface[ ],
INT32 lIndex,
UINT32 connectTimeout,
BOOL8 checkAll,
TRDP_IP_ADDR_T mcGroupUsed )
Handle the socket pool: Release a socket from our socket pool.
Parameters
in,out iface socket pool
in lIndex index of socket to release
in connectTimeout timeout value
in checkAll release all TCP pending sockets
in mcGroupUsed release MC group subscription
Handle the socket pool: Release a socket from our socket pool.
In Udp, Release a socket from our socket pool
Parameters
in,out iface socket pool
in lIndex index of socket to release
in connectTimeout time out
in checkAll release all TCP pending sockets
in mcGroupUsed release MC group subscription
Generated by Doxygen

288 File Documentation
5.29.2.18 trdp_requestSocket()
TRDP_ERR_T trdp_requestSocket (
TRDP_SOCKETS_T iface[ ],
UINT16 port,
const TRDP_SEND_PARAM_T ∗params,
TRDP_IP_ADDR_T srcIP,
TRDP_IP_ADDR_T mcGroup,
TRDP_SOCK_TYPE_T type,
TRDP_OPTION_T options,
BOOL8 rcvMostly,
SOCKET useSocket,
INT32 ∗pIndex,
TRDP_IP_ADDR_T cornerIp )
Handle the socket pool: Request a socket from our socket pool First we loop through the socket pool and check if
there is already a socket which would suit us.
If a multicast group should be joined, we do that on an otherwise suitable socket - up to 20 multicast goups can
be joined per socket. If a socket for multicast publishing is requested, we also use the source IP to determine the
interface for outgoing multicast traffic.
Parameters
in,out iface socket pool
in port port to use
in params parameters to use
in srcIP IP to bind to (0 = any address)
in mcGroup MC group to join (0 = do not join)
in type type determines port to bind to (PD, MD/UDP, MD/TCP)
in options blocking/nonblocking
in rcvMostly only used for receiving
out useSocket socket to use, do not open a new one
out pIndex returned index of socket pool
in cornerIp only used for receiving
Return values
TRDP_NO_ERR
TRDP_PARAM_ERR If a multicast group should be joined, we do that on an otherwise suitable socket - up to
20 multicast goups can be joined per socket. If a socket for multicast publishing is
requested, we also use the source IP to determine the interface for outgoing multicast
traffic.
Parameters
in,out iface socket pool
in port port to use
in params parameters to use
in srcIP IP to bind to (0 = any address)
in mcGroup MC group to join (0 = do not join)
Generated by Doxygen

5.29 trdp_utils.h File Reference 289
Parameters
in type type determines port to bind to (PD, MD/UDP, MD/TCP)
in options blocking/nonblocking
in rcvMostly primarily used for receiving (tbd: bind on sender, too?)
out useSocket socket to use, do not open a new one
out pIndex returned index of socket pool
in cornerIp only used for receiving
Return values
TRDP_NO_ERR
TRDP_PARAM_ERR
5.29.2.19 trdp_resetSequenceCounter()
void trdp_resetSequenceCounter (
PD_ELE_T ∗pElement,
TRDP_IP_ADDR_T srcIP,
TRDP_MSG_T msgType )
remove the sequence counter for the comID/source IP.
The sequence counter should be reset if there was a packet time out.
Parameters
in pElement subscription element
in srcIP Source IP address
in msgType message type
Return values
none
5.29.2.20 trdp_validTopoCounters()
BOOL8 trdp_validTopoCounters (
UINT32 etbTopoCnt,
UINT32 opTrnTopoCnt,
UINT32 etbTopoCntFilter,
UINT32 opTrnTopoCntFilter )
Check topography counters The applied conformance pattern follows Table A.5/A.21 (positive match): Telegram to
be sent Locally stored value (appSession) Case etbTopoCnt opTrnTopoCnt etbTopoCntFilter opTrnTopoCntFilter 1
any any 0 0 2 any equal 0 equal 3 equal any equal 0 4 equal equal equal equal.
Generated by Doxygen

290 File Documentation
Parameters
in etbTopoCnt ETB topography counter to be checked
in opTrnTopoCnt Operational topography counter to be checked
in etbTopoCntFilter ETB topography counter filter value
in opTrnTopoCntFilter Operational topography counter filter value
Return values
TRUE Filter criteria matched FALSE Filter criteria not matched
5.30 trdp_xml.c File Reference
Simple XML parser.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "trdp_xml.h"
Include dependency graph for trdp_xml.c:
trdp_xml.c
stdio.h
stdlib.h string.h sys/types.htrdp_xml.h
trdp_private.hvos_utils.h
trdp_types.h
vos_thread.h
vos_sock.h
vos_types.h
vos_mem.h iec61375-2-3.h
stdint.h
vos_private.h
stddef.h
Functions
•TRDP_ERR_T trdp_XMLOpen (XML_HANDLE_T ∗pXML, const char ∗file)
Opens the XML parsing.
Generated by Doxygen

5.30 trdp_xml.c File Reference 291
• void trdp_XMLRewind (XML_HANDLE_T ∗pXML)
Rewind to start.
• void trdp_XMLClose (XML_HANDLE_T ∗pXML)
Closes the XML parsng.
• int trdp_XMLSeekStartTagAny (XML_HANDLE_T ∗pXML, char ∗tag, int maxlen)
Seek next tag on starting depth and return it in provided buffer.
• int trdp_XMLSeekStartTag (XML_HANDLE_T ∗pXML, const char ∗tag)
Seek a specific tag.
• int trdp_XMLCountStartTag (XML_HANDLE_T ∗pXML, const char ∗tag)
Count a specific tag.
• void trdp_XMLEnter (XML_HANDLE_T ∗pXML)
Enter level in XML file.
• void trdp_XMLLeave (XML_HANDLE_T ∗pXML)
Leave level in XML file.
• XML_TOKEN_T trdp_XMLGetAttribute (XML_HANDLE_T ∗pXML, CHAR8 ∗attribute, UINT32 ∗pValueInt,
CHAR8 ∗value)
Get value of next attribute, as string and if possible as integer.
5.30.1 Detailed Description
Simple XML parser.
Hint: Missing optional elements must be handled using the count-function, otherwise following elements will be
following ignored!
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH; based on code by Peter Brander, Bombardier
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was
not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
Id
trdp_xml.c 1778 2018-11-07 08:31:57Z s-bender
SB 2018-11-07: Ticket #221 readXmlDatasets failed
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-02-24: missing include (thanks to Robert)
BL 2016-02-11: Ticket #102: Replacing libxml2
5.30.2 Function Documentation
5.30.2.1 trdp_XMLClose()
void trdp_XMLClose (
XML_HANDLE_T ∗pXML )
Closes the XML parsng.
Generated by Doxygen

292 File Documentation
Parameters
in pXML Pointer to local data
Return values
none
5.30.2.2 trdp_XMLCountStartTag()
int trdp_XMLCountStartTag (
XML_HANDLE_T ∗pXML,
const char ∗tag )
Count a specific tag.
Parameters
in pXML Pointer to local data
in tag Tag to count
Return values
0if found !=0 if not found
5.30.2.3 trdp_XMLEnter()
void trdp_XMLEnter (
XML_HANDLE_T ∗pXML )
Enter level in XML file.
Parameters
in pXML Pointer to local data
Return values
none
5.30.2.4 trdp_XMLGetAttribute()
XML_TOKEN_T trdp_XMLGetAttribute (
Generated by Doxygen

5.30 trdp_xml.c File Reference 293
XML_HANDLE_T ∗pXML,
CHAR8 ∗attribute,
UINT32 ∗pValueInt,
CHAR8 ∗value )
Get value of next attribute, as string and if possible as integer.
Parameters
in pXML Pointer to local data
in attribute Pointer to attribute
out pValueInt Pointer to resulting integer value
out value Pointer to resulting string value
Return values
TOK_ATTRIBUTE if found token if not found
5.30.2.5 trdp_XMLLeave()
void trdp_XMLLeave (
XML_HANDLE_T ∗pXML )
Leave level in XML file.
Parameters
in pXML Pointer to local data
Return values
none
5.30.2.6 trdp_XMLOpen()
TRDP_ERR_T trdp_XMLOpen (
XML_HANDLE_T ∗pXML,
const char ∗file )
Opens the XML parsing.
Parameters
in pXML Pointer to local data
in file Pathname of XML file
Generated by Doxygen

294 File Documentation
Return values
none
5.30.2.7 trdp_XMLRewind()
void trdp_XMLRewind (
XML_HANDLE_T ∗pXML )
Rewind to start.
Parameters
in pXML Pointer to local data
Return values
none
5.30.2.8 trdp_XMLSeekStartTag()
int trdp_XMLSeekStartTag (
XML_HANDLE_T ∗pXML,
const char ∗tag )
Seek a specific tag.
Parameters
in pXML Pointer to local data
in tag Tag to be found
Return values
0if found !=0 if not found
5.30.2.9 trdp_XMLSeekStartTagAny()
int trdp_XMLSeekStartTagAny (
XML_HANDLE_T ∗pXML,
char ∗tag,
int maxlen )
Generated by Doxygen

5.31 trdp_xml.h File Reference 295
Seek next tag on starting depth and return it in provided buffer.
Start tags on deeper depths are ignored.
Parameters
in pXML Pointer to local data
in,out tag Buffer for found tag
in maxlen Length of buffer
Return values
0if found !=0 if not found
5.31 trdp_xml.h File Reference
Simple XML parser.
#include <stdio.h>
#include "trdp_private.h"
#include "vos_utils.h"
Include dependency graph for trdp_xml.h:
trdp_xml.h
stdio.h
trdp_private.h vos_utils.h
trdp_types.h
vos_thread.h
vos_sock.h
vos_types.h
vos_mem.h iec61375-2-3.h
stdint.h
vos_private.h
stddef.h
Generated by Doxygen

296 File Documentation
This graph shows which files directly or indirectly include this file:
trdp_xml.h
tau_xml.c trdp_xml.c
Functions
•TRDP_ERR_T trdp_XMLOpen (XML_HANDLE_T ∗pXML, const char ∗file)
Opens the XML parsing.
• void trdp_XMLClose (XML_HANDLE_T ∗pXML)
Closes the XML parsng.
• int trdp_XMLCountStartTag (XML_HANDLE_T ∗pXML, const char ∗tag)
Count a specific tag.
• int trdp_XMLSeekStartTagAny (XML_HANDLE_T ∗pXML, char ∗tag, int maxlen)
Seek next tag on starting depth and return it in provided buffer.
• int trdp_XMLSeekStartTag (XML_HANDLE_T ∗pXML, const char ∗tag)
Seek a specific tag.
• XML_TOKEN_T trdp_XMLGetAttribute (XML_HANDLE_T ∗pXML, CHAR8 ∗attribute, UINT32 ∗pValueInt,
CHAR8 ∗value)
Get value of next attribute, as string and if possible as integer.
• void trdp_XMLRewind (XML_HANDLE_T ∗pXML)
Rewind to start.
• void trdp_XMLEnter (XML_HANDLE_T ∗pXML)
Enter level in XML file.
• void trdp_XMLLeave (XML_HANDLE_T ∗pXML)
Leave level in XML file.
5.31.1 Detailed Description
Simple XML parser.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Generated by Doxygen

5.31 trdp_xml.h File Reference 297
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
NewTec GmbH or its subsidiaries and others, 2016. All rights reserved.
Id
trdp_xml.h 1581 2017-02-08 17:39:38Z bloehr
BL 2016-02-11: Ticket #102: Replacing libxml2
5.31.2 Function Documentation
5.31.2.1 trdp_XMLClose()
void trdp_XMLClose (
XML_HANDLE_T ∗pXML )
Closes the XML parsng.
Parameters
in pXML Pointer to local data
Return values
none
5.31.2.2 trdp_XMLCountStartTag()
int trdp_XMLCountStartTag (
XML_HANDLE_T ∗pXML,
const char ∗tag )
Count a specific tag.
Parameters
in pXML Pointer to local data
in tag Tag to count
Return values
0if found !=0 if not found
Generated by Doxygen

298 File Documentation
5.31.2.3 trdp_XMLEnter()
void trdp_XMLEnter (
XML_HANDLE_T ∗pXML )
Enter level in XML file.
Parameters
in pXML Pointer to local data
Return values
none
5.31.2.4 trdp_XMLGetAttribute()
XML_TOKEN_T trdp_XMLGetAttribute (
XML_HANDLE_T ∗pXML,
CHAR8 ∗attribute,
UINT32 ∗pValueInt,
CHAR8 ∗value )
Get value of next attribute, as string and if possible as integer.
Parameters
in pXML Pointer to local data
in attribute Pointer to attribute
out pValueInt Pointer to resulting integer value
out value Pointer to resulting string value
Return values
TOK_ATTRIBUTE if found token if not found
5.31.2.5 trdp_XMLLeave()
void trdp_XMLLeave (
XML_HANDLE_T ∗pXML )
Leave level in XML file.
Generated by Doxygen

5.31 trdp_xml.h File Reference 299
Parameters
in pXML Pointer to local data
Return values
none
5.31.2.6 trdp_XMLOpen()
TRDP_ERR_T trdp_XMLOpen (
XML_HANDLE_T ∗pXML,
const char ∗file )
Opens the XML parsing.
Parameters
in pXML Pointer to local data
in file Pathname of XML file
Return values
none
5.31.2.7 trdp_XMLRewind()
void trdp_XMLRewind (
XML_HANDLE_T ∗pXML )
Rewind to start.
Parameters
in pXML Pointer to local data
Return values
none
5.31.2.8 trdp_XMLSeekStartTag()
int trdp_XMLSeekStartTag (
Generated by Doxygen

300 File Documentation
XML_HANDLE_T ∗pXML,
const char ∗tag )
Seek a specific tag.
Parameters
in pXML Pointer to local data
in tag Tag to be found
Return values
0if found !=0 if not found
5.31.2.9 trdp_XMLSeekStartTagAny()
int trdp_XMLSeekStartTagAny (
XML_HANDLE_T ∗pXML,
char ∗tag,
int maxlen )
Seek next tag on starting depth and return it in provided buffer.
Start tags on deeper depths are ignored.
Parameters
in pXML Pointer to local data
in,out tag Buffer for found tag
in maxlen Length of buffer
Return values
0if found !=0 if not found
5.32 vos_mem.c File Reference
Memory functions.
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include "vos_types.h"
#include "vos_utils.h"
Generated by Doxygen

5.32 vos_mem.c File Reference 301
#include "vos_mem.h"
#include "vos_thread.h"
#include "vos_private.h"
Include dependency graph for vos_mem.c:
vos_mem.c
stdio.h stddef.h
stdint.h
stdlib.h errno.h string.h
vos_types.h
vos_utils.h vos_mem.h
vos_thread.h
vos_private.h
Functions
• EXT_DECL VOS_ERR_T vos_memInit (UINT8 ∗pMemoryArea, UINT32 size, const UINT32 fragMem[VO←-
S_MEM_NBLOCKSIZES])
Initialize the memory unit.
• EXT_DECL void vos_memDelete (UINT8 ∗pMemoryArea)
Delete the memory area.
• EXT_DECL UINT8 ∗vos_memAlloc (UINT32 size)
Allocate a block of memory (from memory area above).
• EXT_DECL void vos_memFree (void ∗pMemBlock)
Deallocate a block of memory (from memory area above).
• EXT_DECL VOS_ERR_T vos_memCount (UINT32 ∗pAllocatedMemory, UINT32 ∗pFreeMemory, UINT32
∗pMinFree, UINT32 ∗pNumAllocBlocks, UINT32 ∗pNumAllocErr, UINT32 ∗pNumFreeErr, UINT32 block←-
Size[VOS_MEM_NBLOCKSIZES], UINT32 usedBlockSize[VOS_MEM_NBLOCKSIZES])
Return used and available memory (of memory area above).
• EXT_DECL void vos_qsort (void ∗pBuf, UINT32 num, UINT32 size, int(∗compare)(const void ∗, const void
∗))
Sort an array.
• EXT_DECL void ∗vos_bsearch (const void ∗pKey, const void ∗pBuf, UINT32 num, UINT32 size,
int(∗compare)(const void ∗, const void ∗))
Binary search in a sorted array.
• EXT_DECL INT32 vos_strnicmp (const CHAR8 ∗pStr1, const CHAR8 ∗pStr2, UINT32 count)
Case insensitive string compare.
• EXT_DECL void vos_strncpy (CHAR8 ∗pStrDst, const CHAR8 ∗pStrSrc, UINT32 count)
String copy with length limitation.
• EXT_DECL void vos_strncat (CHAR8 ∗pStrDst, UINT32 count, const CHAR8 ∗pStrSrc)
String concatenation with length limitation.
• EXT_DECL VOS_ERR_T vos_queueCreate (VOS_QUEUE_POLICY_T queueType, UINT32 maxNoOfMsg,
VOS_QUEUE_T ∗pQueueHandle)
Initialize a message queue.
• EXT_DECL VOS_ERR_T vos_queueSend (VOS_QUEUE_T queueHandle, UINT8 ∗pData, UINT32 size)
Send a message.
Generated by Doxygen

302 File Documentation
• EXT_DECL VOS_ERR_T vos_queueReceive (VOS_QUEUE_T queueHandle, UINT8 ∗∗ppData, UINT32
∗pSize, UINT32 usTimeout)
Get a message.
• EXT_DECL VOS_ERR_T vos_queueDestroy (VOS_QUEUE_T queueHandle)
Destroy a message queue.
5.32.1 Detailed Description
Memory functions.
OS abstraction of memory access and control
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_mem.c 1768 2018-10-25 09:59:45Z ahweiss
Changes: BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead
of INT32) BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings) BL 2016-02-10: Debug print: tabs
before size output BL 2012-12-03: ID 1: "using uninitialized PD_ELE_T.pullIpAddress variable" ID 2: "uninitialized
PD_ELE_T newPD->pNext in tlp_subscribe()"
5.32.2 Function Documentation
5.32.2.1 vos_bsearch()
EXT_DECL void∗vos_bsearch (
const void ∗pKey,
const void ∗pBuf,
UINT32 num,
UINT32 size,
int(∗)(const void ∗, const void ∗)compare )
Binary search in a sorted array.
This is just a wrapper for the standard bsearch function.
Generated by Doxygen

5.32 vos_mem.c File Reference 303
Parameters
in pKey Key to search for
in pBuf Pointer to the array to search
in num number of elements
in size size of one element
in compare Pointer to compare function return -n if arg1 <arg2, return 0 if arg1 == arg2, return +n if arg1
>arg2 where n is an integer != 0
Return values
Pointer to found element or NULL
5.32.2.2 vos_memAlloc()
EXT_DECL UINT8∗vos_memAlloc (
UINT32 size )
Allocate a block of memory (from memory area above).
Parameters
in size Size of requested block
Return values
Pointer to memory area
NULL if no memory available
5.32.2.3 vos_memCount()
EXT_DECL VOS_ERR_T vos_memCount (
UINT32 ∗pAllocatedMemory,
UINT32 ∗pFreeMemory,
UINT32 ∗pMinFree,
UINT32 ∗pNumAllocBlocks,
UINT32 ∗pNumAllocErr,
UINT32 ∗pNumFreeErr,
UINT32 blockSize[VOS_MEM_NBLOCKSIZES],
UINT32 usedBlockSize[VOS_MEM_NBLOCKSIZES] )
Return used and available memory (of memory area above).
Parameters
out pAllocatedMemory Pointer to allocated memory size
Generated by Doxygen

304 File Documentation
Parameters
out pFreeMemory Pointer to free memory size
out pMinFree Pointer to minimal free memory size in statistics interval
out pNumAllocBlocks Pointer to number of allocated memory blocks
out pNumAllocErr Pointer to number of allocation errors
out pNumFreeErr Pointer to number of free errors
out blockSize Pointer to list of memory block sizes
out usedBlockSize Pointer to list of used memoryblocks
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
5.32.2.4 vos_memDelete()
EXT_DECL void vos_memDelete (
UINT8 ∗pMemoryArea )
Delete the memory area.
This will eventually invalidate any previously allocated memory blocks! It should be called last before the application
quits. No further access to the memory blocks is allowed after this call.
Parameters
in pMemoryArea Pointer to memory area used
5.32.2.5 vos_memFree()
EXT_DECL void vos_memFree (
void ∗pMemBlock )
Deallocate a block of memory (from memory area above).
Parameters
in pMemBlock Pointer to memory block to be freed
5.32.2.6 vos_memInit()
EXT_DECL VOS_ERR_T vos_memInit (
Generated by Doxygen

5.32 vos_mem.c File Reference 305
UINT8 ∗pMemoryArea,
UINT32 size,
const UINT32 fragMem[VOS_MEM_NBLOCKSIZES] )
Initialize the memory unit.
Init a supplied block of memory and prepare it for use with vos_memAlloc and vos_memFree. The used block
sizes can be supplied and will be preallocated. If half of the overall size of the requested memory area would be
pre-allocated, either by the default pre-allocation table or a provided one, no pre-allocation takes place.
Parameters
in pMemoryArea Pointer to memory area to use
in size Size of provided memory area
in fragMem Pointer to list of preallocated block sizes, used to fragment memory for large blocks
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_MEM_ERR no memory available
VOS_MUTEX_ERR no mutex available
5.32.2.7 vos_qsort()
EXT_DECL void vos_qsort (
void ∗pBuf,
UINT32 num,
UINT32 size,
int(∗)(const void ∗, const void ∗)compare )
Sort an array.
This is just a wrapper for the standard qsort function.
Parameters
in,out pBuf Pointer to the array to sort
in num number of elements
in size size of one element
in compare Pointer to compare function return -n if arg1 <arg2, return 0 if arg1 == arg2, return +n
if arg1 >arg2 where n is an integer != 0
Return values
none
Generated by Doxygen

306 File Documentation
5.32.2.8 vos_queueCreate()
EXT_DECL VOS_ERR_T vos_queueCreate (
VOS_QUEUE_POLICY_T queueType,
UINT32 maxNoOfMsg,
VOS_QUEUE_T ∗pQueueHandle )
Initialize a message queue.
Returns a handle for further calls
Parameters
in queueType Define queue type (1 = FIFO, 2 = LIFO, 3 = PRIO)
in maxNoOfMsg Maximum number of messages
out pQueueHandle Handle of created queue
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_INIT_ERR not supported
VOS_QUEUE_ERR error creating queue
5.32.2.9 vos_queueDestroy()
EXT_DECL VOS_ERR_T vos_queueDestroy (
VOS_QUEUE_T queueHandle )
Destroy a message queue.
Free all resources used by this queue
Parameters
in queueHandle Queue handle
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
Generated by Doxygen

5.32 vos_mem.c File Reference 307
5.32.2.10 vos_queueReceive()
EXT_DECL VOS_ERR_T vos_queueReceive (
VOS_QUEUE_T queueHandle,
UINT8 ∗∗ ppData,
UINT32 ∗pSize,
UINT32 usTimeout )
Get a message.
Parameters
in queueHandle Queue handle
out ppData Pointer to data pointer to be received
out pSize Size of receive data
in usTimeout Maximum time to wait for a message (in usec)
Return values
VOSNO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_QUEUE_ERR queue is empty
5.32.2.11 vos_queueSend()
EXT_DECL VOS_ERR_T vos_queueSend (
VOS_QUEUE_T queueHandle,
UINT8 ∗pData,
UINT32 size )
Send a message.
Parameters
in queueHandle Queue handle
in pData Pointer to data to be sent
in size Size of data to be sent
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_INIT_ERR not supported
VOS_QUEUE_ERR error creating queue
Generated by Doxygen

308 File Documentation
5.32.2.12 vos_strncat()
EXT_DECL void vos_strncat (
CHAR8 ∗pStrDst,
UINT32 count,
const CHAR8 ∗pStrSrc )
String concatenation with length limitation.
Parameters
in pStrDst Destination string
in count Size of destination buffer
in pStrSrc Null terminated string to append
Return values
none
5.32.2.13 vos_strncpy()
EXT_DECL void vos_strncpy (
CHAR8 ∗pStrDst,
const CHAR8 ∗pStrSrc,
UINT32 count )
String copy with length limitation.
Parameters
in pStrDst Destination string
in pStrSrc Null terminated string to copy
in count Maximum number of characters to copy
Return values
none
5.32.2.14 vos_strnicmp()
EXT_DECL INT32 vos_strnicmp (
const CHAR8 ∗pStr1,
Generated by Doxygen

5.33 vos_mem.h File Reference 309
const CHAR8 ∗pStr2,
UINT32 count )
Case insensitive string compare.
Parameters
in pStr1 Null terminated string to compare
in pStr2 Null terminated string to compare
in count Maximum number of characters to compare
Return values
0- equal
<0- string1 less than string 2
>0- string 1 greater than string 2
5.33 vos_mem.h File Reference
Memory and queue functions for OS abstraction.
#include "vos_types.h"
#include "vos_thread.h"
Include dependency graph for vos_mem.h:
vos_mem.h
vos_types.h
vos_thread.h
stdint.h
Generated by Doxygen

310 File Documentation
This graph shows which files directly or indirectly include this file:
vos_mem.h
trdp_types.h
tau_dnr.ctau_marshall.c trdp_if.c trdp_pdcom.ctrdp_stats.c
vos_shared_mem.h vos_mem.c vos_utils.c
tau_ctrl.h
tau_ctrl.c
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_xml.h
tau_xml.c
trdp_if_light.h trdp_private.h
tau_cstinfo.c
tau_tti.c
trdp_stats.htrdp_if.h
trdp_mdcom.c trdp_utils.c
trdp_utils.h trdp_xml.h trdp_pdcom.htrdp_mdcom.h
trdp_xml.c
Macros
• #define VOS_MEM_MAX_PREALLOCATE 10u
Max blocks to pre-allocate.
• #define VOS_MEM_NBLOCKSIZES 15u
No of pre-defined block sizes.
• #define VOS_MEM_BLOCKSIZES
We internally allocate memory always by these block sizes.
• #define VOS_MEM_PREALLOCATE {0u, 0u, 0u, 0u, 0u, 0u, 0u, 4u, 0u, 0u, 0u, 0u, 0u, 0u, 0u}
Default pre-allocation of free memory blocks.
Typedefs
• typedef struct VOS_QUEUE ∗VOS_QUEUE_T
Opaque queue define.
Enumerations
• enum VOS_QUEUE_POLICY_T
Queue policy matching pthread/Posix defines.
Functions
• EXT_DECL VOS_ERR_T vos_memInit (UINT8 ∗pMemoryArea, UINT32 size, const UINT32 fragMem[VO←-
S_MEM_NBLOCKSIZES])
Initialize the memory unit.
• EXT_DECL void vos_memDelete (UINT8 ∗pMemoryArea)
Delete the memory area.
• EXT_DECL UINT8 ∗vos_memAlloc (UINT32 size)
Allocate a block of memory (from memory area above).
• EXT_DECL void vos_memFree (void ∗pMemBlock)
Deallocate a block of memory (from memory area above).
• EXT_DECL VOS_ERR_T vos_memCount (UINT32 ∗pAllocatedMemory, UINT32 ∗pFreeMemory, UINT32
∗pMinFree, UINT32 ∗pNumAllocBlocks, UINT32 ∗pNumAllocErr, UINT32 ∗pNumFreeErr, UINT32 block←-
Size[VOS_MEM_NBLOCKSIZES], UINT32 usedBlockSize[VOS_MEM_NBLOCKSIZES])
Return used and available memory (of memory area above).
• EXT_DECL void vos_qsort (void ∗pBuf, UINT32 num, UINT32 size, int(∗compare)(const void ∗, const void
∗))
Sort an array.
Generated by Doxygen

5.33 vos_mem.h File Reference 311
• EXT_DECL void ∗vos_bsearch (const void ∗pKey, const void ∗pBuf, UINT32 num, UINT32 size,
int(∗compare)(const void ∗, const void ∗))
Binary search in a sorted array.
• EXT_DECL INT32 vos_strnicmp (const CHAR8 ∗pStr1, const CHAR8 ∗pStr2, UINT32 count)
Case insensitive string compare.
• EXT_DECL void vos_strncpy (CHAR8 ∗pStrDst, const CHAR8 ∗pStrSrc, UINT32 count)
String copy with length limitation.
• EXT_DECL void vos_strncat (CHAR8 ∗pStrDst, UINT32 count, const CHAR8 ∗pStrSrc)
String concatenation with length limitation.
• EXT_DECL VOS_ERR_T vos_queueCreate (VOS_QUEUE_POLICY_T queueType, UINT32 maxNoOfMsg,
VOS_QUEUE_T ∗pQueueHandle)
Initialize a message queue.
• EXT_DECL VOS_ERR_T vos_queueSend (VOS_QUEUE_T queueHandle, UINT8 ∗pData, UINT32 size)
Send a message.
• EXT_DECL VOS_ERR_T vos_queueReceive (VOS_QUEUE_T queueHandle, UINT8 ∗∗ppData, UINT32
∗pSize, UINT32 usTimeout)
Get a message.
• EXT_DECL VOS_ERR_T vos_queueDestroy (VOS_QUEUE_T queueHandle)
Destroy a message queue.
5.33.1 Detailed Description
Memory and queue functions for OS abstraction.
This module provides memory control supervison
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH Peter Brander (Memory scheme)
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_mem.h 1631 2017-05-31 12:03:26Z bloehr
BL 2017-05-08: Compiler warnings, doxygen comment errors
5.33.2 Macro Definition Documentation
Generated by Doxygen

312 File Documentation
5.33.2.1 VOS_MEM_BLOCKSIZES
#define VOS_MEM_BLOCKSIZES
Value:
{34u, 48u, 128u, 180u, 256u, 512u, 1024u, 1480u, 2048u, \
4096u, 11520u, 16384u, 32768u, 65536u, 131072u}
We internally allocate memory always by these block sizes.
The largest available block is 524288 Bytes, provided the overal size of the used memory allocation area is larger.
5.33.2.2 VOS_MEM_PREALLOCATE
#define VOS_MEM_PREALLOCATE {0u, 0u, 0u, 0u, 0u, 0u, 0u, 4u, 0u, 0u, 0u, 0u, 0u, 0u, 0u}
Default pre-allocation of free memory blocks.
To avoid problems with too many small blocks and no large one. Specify how many of each block size that should
be pre-allocated (and freed!) to pre-segment the memory area.
5.33.3 Function Documentation
5.33.3.1 vos_bsearch()
EXT_DECL void∗vos_bsearch (
const void ∗pKey,
const void ∗pBuf,
UINT32 num,
UINT32 size,
int(∗)(const void ∗, const void ∗)compare )
Binary search in a sorted array.
This is just a wrapper for the standard bsearch function.
Parameters
in pKey Key to search for
in pBuf Pointer to the array to search
in num number of elements
in size size of one element
in compare Pointer to compare function return -n if arg1 <arg2, return 0 if arg1 == arg2, return +n if arg1
>arg2 where n is an integer != 0
Generated by Doxygen

5.33 vos_mem.h File Reference 313
Return values
Pointer to found element or NULL
5.33.3.2 vos_memAlloc()
EXT_DECL UINT8∗vos_memAlloc (
UINT32 size )
Allocate a block of memory (from memory area above).
Parameters
in size Size of requested block
Return values
Pointer to memory area
NULL if no memory available
5.33.3.3 vos_memCount()
EXT_DECL VOS_ERR_T vos_memCount (
UINT32 ∗pAllocatedMemory,
UINT32 ∗pFreeMemory,
UINT32 ∗pMinFree,
UINT32 ∗pNumAllocBlocks,
UINT32 ∗pNumAllocErr,
UINT32 ∗pNumFreeErr,
UINT32 blockSize[VOS_MEM_NBLOCKSIZES],
UINT32 usedBlockSize[VOS_MEM_NBLOCKSIZES] )
Return used and available memory (of memory area above).
Parameters
out pAllocatedMemory Pointer to allocated memory size
out pFreeMemory Pointer to free memory size
out pMinFree Pointer to minimal free memory size in statistics interval
out pNumAllocBlocks Pointer to number of allocated memory blocks
out pNumAllocErr Pointer to number of allocation errors
out pNumFreeErr Pointer to number of free errors
out blockSize Pointer to list of memory block sizes
out usedBlockSize Pointer to list of used memoryblocks
Generated by Doxygen

314 File Documentation
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
5.33.3.4 vos_memDelete()
EXT_DECL void vos_memDelete (
UINT8 ∗pMemoryArea )
Delete the memory area.
This will eventually invalidate any previously allocated memory blocks! It should be called last before the application
quits. No further access to the memory blocks is allowed after this call.
Parameters
in pMemoryArea Pointer to memory area to use
This will eventually invalidate any previously allocated memory blocks! It should be called last before the application
quits. No further access to the memory blocks is allowed after this call.
Parameters
in pMemoryArea Pointer to memory area used
5.33.3.5 vos_memFree()
EXT_DECL void vos_memFree (
void ∗pMemBlock )
Deallocate a block of memory (from memory area above).
Parameters
in pMemBlock Pointer to memory block to be freed
5.33.3.6 vos_memInit()
EXT_DECL VOS_ERR_T vos_memInit (
UINT8 ∗pMemoryArea,
UINT32 size,
const UINT32 fragMem[VOS_MEM_NBLOCKSIZES] )
Generated by Doxygen

5.33 vos_mem.h File Reference 315
Initialize the memory unit.
Init a supplied block of memory and prepare it for use with vos_alloc and vos_dealloc. The used block sizes can be
supplied and will be preallocated.
Parameters
in pMemoryArea Pointer to memory area to use
in size Size of provided memory area
in fragMem Pointer to list of preallocate block sizes, used to fragment memory for large blocks
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_MEM_ERR no memory available
Init a supplied block of memory and prepare it for use with vos_memAlloc and vos_memFree. The used block
sizes can be supplied and will be preallocated. If half of the overall size of the requested memory area would be
pre-allocated, either by the default pre-allocation table or a provided one, no pre-allocation takes place.
Parameters
in pMemoryArea Pointer to memory area to use
in size Size of provided memory area
in fragMem Pointer to list of preallocated block sizes, used to fragment memory for large blocks
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_MEM_ERR no memory available
VOS_MUTEX_ERR no mutex available
5.33.3.7 vos_qsort()
EXT_DECL void vos_qsort (
void ∗pBuf,
UINT32 num,
UINT32 size,
int(∗)(const void ∗, const void ∗)compare )
Sort an array.
This is just a wrapper for the standard qsort function.
Parameters
in,out pBuf Pointer to the array to sort
in num number of elements
in size size of one element
in compare Pointer to compare function return -n if arg1 <arg2, return 0 if arg1 == arg2, return +n
if arg1 >arg2 where n is an integer != 0
Generated by Doxygen

316 File Documentation
Return values
none
5.33.3.8 vos_queueCreate()
EXT_DECL VOS_ERR_T vos_queueCreate (
VOS_QUEUE_POLICY_T queueType,
UINT32 maxNoOfMsg,
VOS_QUEUE_T ∗pQueueHandle )
Initialize a message queue.
Returns a handle for further calls
Parameters
in queueType Define queue type (1 = FIFO, 2 = LIFO, 3 = PRIO)
in maxNoOfMsg Maximum number of messages
out pQueueHandle Handle of created queue
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_INIT_ERR not supported
VOS_QUEUE_ERR error creating queue
5.33.3.9 vos_queueDestroy()
EXT_DECL VOS_ERR_T vos_queueDestroy (
VOS_QUEUE_T queueHandle )
Destroy a message queue.
Free all resources used by this queue
Parameters
in queueHandle Queue handle
Return values
VOS_NO_ERR no error
Generated by Doxygen

5.33 vos_mem.h File Reference 317
Return values
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
5.33.3.10 vos_queueReceive()
EXT_DECL VOS_ERR_T vos_queueReceive (
VOS_QUEUE_T queueHandle,
UINT8 ∗∗ ppData,
UINT32 ∗pSize,
UINT32 usTimeout )
Get a message.
Parameters
in queueHandle Queue handle
out ppData Pointer to data pointer to be received
out pSize Size of receive data
in usTimeout Maximum time to wait for a message (in usec)
Return values
VOSNO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_QUEUE_ERR queue is empty
5.33.3.11 vos_queueSend()
EXT_DECL VOS_ERR_T vos_queueSend (
VOS_QUEUE_T queueHandle,
UINT8 ∗pData,
UINT32 size )
Send a message.
Parameters
in queueHandle Queue handle
in pData Pointer to data to be sent
in size Size of data to be sent
Generated by Doxygen

318 File Documentation
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_INIT_ERR not supported
VOS_QUEUE_ERR error creating queue
5.33.3.12 vos_strncat()
EXT_DECL void vos_strncat (
CHAR8 ∗pStrDst,
UINT32 count,
const CHAR8 ∗pStrSrc )
String concatenation with length limitation.
Parameters
in pStrDst Destination string
in count Size of destination buffer
in pStrSrc Null terminated string to append
Return values
none
5.33.3.13 vos_strncpy()
EXT_DECL void vos_strncpy (
CHAR8 ∗pStrDst,
const CHAR8 ∗pStrSrc,
UINT32 count )
String copy with length limitation.
Parameters
in pStrDst Destination string
in pStrSrc Null terminated string to copy
in count Maximum number of characters to copy
Return values
none
Generated by Doxygen

5.34 vos_shared_mem.h File Reference 319
5.33.3.14 vos_strnicmp()
EXT_DECL INT32 vos_strnicmp (
const CHAR8 ∗pStr1,
const CHAR8 ∗pStr2,
UINT32 count )
Case insensitive string compare.
Parameters
in pStr1 Null terminated string to compare
in pStr2 Null terminated string to compare
in count Maximum number of characters to compare
Return values
0- equal
<0- string1 less than string 2
>0- string 1 greater than string 2
5.34 vos_shared_mem.h File Reference
Shared Memory functions for OS abstraction.
#include "vos_types.h"
#include "vos_mem.h"
#include "vos_private.h"
Generated by Doxygen

320 File Documentation
Include dependency graph for vos_shared_mem.h:
vos_shared_mem.h
vos_types.h
vos_mem.h vos_private.h
stdint.h
vos_thread.h
Functions
• EXT_DECL VOS_ERR_T vos_sharedOpen (const CHAR8 ∗pKey, VOS_SHRD_T ∗pHandle, UINT8 ∗∗pp←-
MemoryArea, UINT32 ∗pSize)
Create a shared memory area or attach to existing one.
• EXT_DECL VOS_ERR_T vos_sharedClose (VOS_SHRD_T handle, const UINT8 ∗pMemoryArea)
Close connection to the shared memory area.
5.34.1 Detailed Description
Shared Memory functions for OS abstraction.
This module provides shared memory control supervison
Note
Project: TCNOpen TRDP prototype stack
Author
Kazumasa Aiba, TOSHIBA
Generated by Doxygen

5.34 vos_shared_mem.h File Reference 321
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
TOSHIBA, Japan, 2013.
Id
vos_mem.h 282 2013-01-11 07:08:44Z 97029
5.34.2 Function Documentation
5.34.2.1 vos_sharedClose()
EXT_DECL VOS_ERR_T vos_sharedClose (
VOS_SHRD_T handle,
const UINT8 ∗pMemoryArea )
Close connection to the shared memory area.
If the area was created by the calling process, the area will be closed (freed). If the area was attached, it will be
detached. This function is not available in each target implementation.
Parameters
in handle Returned handle
in pMemoryArea Pointer to memory area
Return values
VOS_NO_ERR no error
VOS_MEM_ERR no memory available
5.34.2.2 vos_sharedOpen()
EXT_DECL VOS_ERR_T vos_sharedOpen (
const CHAR8 ∗pKey,
VOS_SHRD_T ∗pHandle,
UINT8 ∗∗ ppMemoryArea,
UINT32 ∗pSize )
Create a shared memory area or attach to existing one.
The first call with the a specified key will create a shared memory area with the supplied size and will return a handle
and a pointer to that area. If the area already exists, the area will be opened. This function is not available in each
target implementation.
Generated by Doxygen

322 File Documentation
Parameters
in pKey Unique identifier (file name)
out pHandle Pointer to returned handle
out ppMemoryArea Pointer to pointer to memory area
in,out pSize Pointer to size of area to allocate, on return actual size after attach
Return values
VOS_NO_ERR no error
VOS_MEM_ERR no memory available
5.35 vos_sock.h File Reference
Typedefs for OS abstraction.
#include "vos_types.h"
#include "vos_private.h"
Include dependency graph for vos_sock.h:
vos_sock.h
vos_types.h vos_private.h
stdint.h
This graph shows which files directly or indirectly include this file:
vos_sock.h
trdp_types.h
tau_cstinfo.c
tau_tti.c
tau_dnr.c trdp_if.ctrdp_pdcom.c
trdp_private.h
trdp_utils.h
vos_utils.c
tau_ctrl.h
tau_ctrl.c
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_marshall.c
tau_xml.h
tau_xml.c
trdp_if_light.h
trdp_stats.h
trdp_stats.c
trdp_if.h
trdp_mdcom.c trdp_utils.c
trdp_xml.h trdp_pdcom.htrdp_mdcom.h
trdp_xml.c
Generated by Doxygen

5.35 vos_sock.h File Reference 323
Data Structures
• struct VOS_SOCK_OPT_T
Common socket options.
Macros
• #define VOS_MAX_SOCKET_CNT 4
The maximum number of sockets influences memory usage; for small systems we should define a smaller set.
• #define VOS_MAX_MULTICAST_CNT 5
The maximum number of multicast groups one socket can join.
• #define VOS_TTL_MULTICAST 64
The maximum number of hops a multicast packet can take.
• #define VOS_MAX_IF_NAME_SIZE 16
The maximum number of IP interface adapters that can be handled by VOS.
• #define VOS_MAX_NUM_IF 8
The maximum number of unicast addresses that can be handled by VOS.
• #define VOS_MAX_NUM_UNICAST 10
The MAC size supported by VOS.
• #define VOS_MAC_SIZE 6
Size of socket send and receive buffer.
• #define VOS_INVALID_SOCKET -1
Invalid socket number.
Functions
• EXT_DECL UINT16 vos_htons (UINT16 val)
Byte swapping 2 Bytes.
• EXT_DECL UINT16 vos_ntohs (UINT16 val)
Byte swapping 2 Bytes.
• EXT_DECL UINT32 vos_htonl (UINT32 val)
Byte swapping 4 Bytes.
• EXT_DECL UINT32 vos_ntohl (UINT32 val)
Byte swapping 4 Bytes.
• EXT_DECL UINT64 vos_htonll (UINT64 val)
Byte swapping 8å Bytes.
• EXT_DECL UINT64 vos_ntohll (UINT64 val)
Byte swapping 8 Bytes.
• EXT_DECL UINT32 vos_dottedIP (const CHAR8 ∗pDottedIP)
Convert IP address from dotted dec.
• EXT_DECL const CHAR8 ∗vos_ipDotted (UINT32 ipAddress)
Convert IP address to dotted dec.
• EXT_DECL BOOL8 vos_isMulticast (UINT32 ipAddress)
Check if the supplied address is a multicast group address.
• EXT_DECL VOS_ERR_T vos_getInterfaces (UINT32 ∗pAddrCnt, VOS_IF_REC_T ifAddrs[ ])
Get a list of interface addresses The caller has to provide an array of interface records to be filled.
• EXT_DECL BOOL8 vos_netIfUp (VOS_IP4_ADDR_T ifAddress)
Get the state of an interface.
• EXT_DECL INT32 vos_select (SOCKET highDesc, VOS_FDS_T ∗pReadableFD, VOS_FDS_T ∗p←-
WriteableFD, VOS_FDS_T ∗pErrorFD, VOS_TIMEVAL_T ∗pTimeOut)
Generated by Doxygen

324 File Documentation
select function.
• EXT_DECL VOS_ERR_T vos_sockInit (void)
Initialize the socket library.
• EXT_DECL void vos_sockTerm (void)
De-Initialize the socket library.
• EXT_DECL VOS_ERR_T vos_sockGetMAC (UINT8 pMAC[VOS_MAC_SIZE])
Return the MAC address of the default adapter.
• EXT_DECL VOS_ERR_T vos_sockOpenUDP (SOCKET ∗pSock, const VOS_SOCK_OPT_T ∗pOptions)
Create an UDP socket.
• EXT_DECL VOS_ERR_T vos_sockOpenTCP (SOCKET ∗pSock, const VOS_SOCK_OPT_T ∗pOptions)
Create a TCP socket.
• EXT_DECL VOS_ERR_T vos_sockClose (SOCKET sock)
Close a socket.
• EXT_DECL VOS_ERR_T vos_sockSetOptions (SOCKET sock, const VOS_SOCK_OPT_T ∗pOptions)
Set socket options.
• EXT_DECL VOS_ERR_T vos_sockJoinMC (SOCKET sock, UINT32 mcAddress, UINT32 ipAddress)
Join a multicast group.
• EXT_DECL VOS_ERR_T vos_sockLeaveMC (SOCKET sock, UINT32 mcAddress, UINT32 ipAddress)
Leave a multicast group.
• EXT_DECL VOS_ERR_T vos_sockSendUDP (SOCKET sock, const UINT8 ∗pBuffer, UINT32 ∗pSize, UIN←-
T32 ipAddress, UINT16 port)
Send UDP data.
• EXT_DECL VOS_ERR_T vos_sockReceiveUDP (SOCKET sock, UINT8 ∗pBuffer, UINT32 ∗pSize, UINT32
∗pSrcIPAddr, UINT16 ∗pSrcIPPort, UINT32 ∗pDstIPAddr, BOOL8 peek)
Receive UDP data.
• EXT_DECL VOS_ERR_T vos_sockBind (SOCKET sock, UINT32 ipAddress, UINT16 port)
Bind a socket to an address and port.
• EXT_DECL VOS_ERR_T vos_sockListen (SOCKET sock, UINT32 backlog)
Listen for incoming TCP connections.
• EXT_DECL VOS_ERR_T vos_sockAccept (SOCKET sock, SOCKET ∗pSock, UINT32 ∗pIPAddress, UINT16
∗pPort)
Accept an incoming TCP connection.
• EXT_DECL VOS_ERR_T vos_sockConnect (SOCKET sock, UINT32 ipAddress, UINT16 port)
Open a TCP connection.
• EXT_DECL VOS_ERR_T vos_sockSendTCP (SOCKET sock, const UINT8 ∗pBuffer, UINT32 ∗pSize)
Send TCP data.
• EXT_DECL VOS_ERR_T vos_sockReceiveTCP (SOCKET sock, UINT8 ∗pBuffer, UINT32 ∗pSize)
Receive TCP data.
• EXT_DECL VOS_ERR_T vos_sockSetMulticastIf (SOCKET sock, UINT32 mcIfAddress)
Set Using Multicast I/F.
• EXT_DECL VOS_IP4_ADDR_T vos_determineBindAddr (VOS_IP4_ADDR_T srcIP, VOS_IP4_ADDR_←-
T mcGroup, VOS_IP4_ADDR_T rcvMostly)
Determines the address to bind to since the behaviour in the different OS is different.
5.35.1 Detailed Description
Typedefs for OS abstraction.
This is the declaration for the OS independend socket interface
Generated by Doxygen

5.35 vos_sock.h File Reference 325
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_sock.h 1765 2018-10-04 12:18:54Z ahweiss
BL 2018-06-20: Ticket #184: Building with VS 2015: WIN64 and Windows threads (SOCKET instead of INT32)
BL 2018-03-06: 64Bit endian swap added
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
5.35.2 Macro Definition Documentation
5.35.2.1 VOS_MAX_SOCKET_CNT
#define VOS_MAX_SOCKET_CNT 4
The maximum number of sockets influences memory usage; for small systems we should define a smaller set.
The maximum number of concurrent usable sockets per application session
5.35.2.2 VOS_TTL_MULTICAST
#define VOS_TTL_MULTICAST 64
The maximum number of hops a multicast packet can take.
The maximum size for the interface name
5.35.3 Function Documentation
5.35.3.1 vos_determineBindAddr()
EXT_DECL VOS_IP4_ADDR_T vos_determineBindAddr (
VOS_IP4_ADDR_T srcIP,
VOS_IP4_ADDR_T mcGroup,
VOS_IP4_ADDR_T rcvMostly )
Determines the address to bind to since the behaviour in the different OS is different.
Generated by Doxygen

326 File Documentation
Parameters
in srcIP IP to bind to (0 = any address)
in mcGroup MC group to join (0 = do not join)
in rcvMostly primarily used for receiving (tbd: bind on sender, too?)
Return values
Address to bind to
5.35.3.2 vos_dottedIP()
EXT_DECL UINT32 vos_dottedIP (
const CHAR8 ∗pDottedIP )
Convert IP address from dotted dec.
to !host! endianess
Parameters
in p←-
DottedIP
IP address as dotted decimal.
Return values
address in UINT32 in host endianess
5.35.3.3 vos_getInterfaces()
EXT_DECL VOS_ERR_T vos_getInterfaces (
UINT32 ∗pAddrCnt,
VOS_IF_REC_T ifAddrs[ ] )
Get a list of interface addresses The caller has to provide an array of interface records to be filled.
Parameters
in,out pAddrCnt in: pointer to array size of interface record out: pointer to number of interface records read
in,out ifAddrs array of interface records
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR pAddrCnt and/or ifAddrs == NULL
VOS_MEM_ERR memory allocation error
Generated by Doxygen

5.35 vos_sock.h File Reference 327
Return values
VOS_SOCK_ERR GetAdaptersInfo() error
5.35.3.4 vos_htonl()
EXT_DECL UINT32 vos_htonl (
UINT32 val )
Byte swapping 4 Bytes.
Parameters
in val Initial value.
Return values
swapped value
5.35.3.5 vos_htonll()
EXT_DECL UINT64 vos_htonll (
UINT64 val )
Byte swapping 8å Bytes.
Parameters
in val Initial value.
Return values
swapped value
5.35.3.6 vos_htons()
EXT_DECL UINT16 vos_htons (
UINT16 val )
Byte swapping 2 Bytes.
Generated by Doxygen

328 File Documentation
Parameters
in val Initial value.
Return values
swapped value
5.35.3.7 vos_ipDotted()
EXT_DECL const CHAR8∗vos_ipDotted (
UINT32 ipAddress )
Convert IP address to dotted dec.
from !host! endianess
Parameters
in ipAddress address in UINT32 in host endianess
Return values
IP address as dotted decimal.
5.35.3.8 vos_isMulticast()
EXT_DECL BOOL8 vos_isMulticast (
UINT32 ipAddress )
Check if the supplied address is a multicast group address.
Parameters
in ipAddress IP address to check.
Return values
TRUE address is a multicast address
FALSE address is not a multicast address
Generated by Doxygen

5.35 vos_sock.h File Reference 329
5.35.3.9 vos_netIfUp()
EXT_DECL BOOL8 vos_netIfUp (
VOS_IP4_ADDR_T ifAddress )
Get the state of an interface.
Parameters
in ifAddress address of interface to check
Return values
TRUE interface is up and ready FALSE interface is down / not ready
5.35.3.10 vos_ntohl()
EXT_DECL UINT32 vos_ntohl (
UINT32 val )
Byte swapping 4 Bytes.
Parameters
in val Initial value.
Return values
swapped value
5.35.3.11 vos_ntohll()
EXT_DECL UINT64 vos_ntohll (
UINT64 val )
Byte swapping 8 Bytes.
Parameters
in val Initial value.
Return values
swapped value
Generated by Doxygen

330 File Documentation
5.35.3.12 vos_ntohs()
EXT_DECL UINT16 vos_ntohs (
UINT16 val )
Byte swapping 2 Bytes.
Parameters
in val Initial value.
Return values
swapped value
5.35.3.13 vos_select()
EXT_DECL INT32 vos_select (
SOCKET highDesc,
VOS_FDS_T ∗pReadableFD,
VOS_FDS_T ∗pWriteableFD,
VOS_FDS_T ∗pErrorFD,
VOS_TIMEVAL_T ∗pTimeOut )
select function.
Set the ready sockets in the supplied sets. Note: Some target systems might define this function as NOP.
Parameters
in highDesc max. socket descriptor + 1
in,out pReadableFD pointer to readable socket set
in,out pWriteableFD pointer to writeable socket set
in,out pErrorFD pointer to error socket set
in pTimeOut pointer to time out value
Return values
number of ready file descriptors
5.35.3.14 vos_sockAccept()
EXT_DECL VOS_ERR_T vos_sockAccept (
SOCKET sock,
Generated by Doxygen

5.35 vos_sock.h File Reference 331
SOCKET ∗pSock,
UINT32 ∗pIPAddress,
UINT16 ∗pPort )
Accept an incoming TCP connection.
Accept incoming connections on the provided socket. May block and will return a new socket descriptor when
accepting a connection. The original socket ∗pSock, remains open.
Parameters
in sock Socket descriptor
out pSock Pointer to socket descriptor, on exit new socket
out pIPAddress source IP to receive on, 0 for any
out pPort port to receive on, 17224 for PD
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR NULL parameter, parameter error
VOS_UNKNOWN_ERR sock descriptor unknown error
5.35.3.15 vos_sockBind()
EXT_DECL VOS_ERR_T vos_sockBind (
SOCKET sock,
UINT32 ipAddress,
UINT16 port )
Bind a socket to an address and port.
Parameters
in sock socket descriptor
in ipAddress source IP to receive from, 0 for any
in port port to receive from
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_IO_ERR Input/Output error
VOS_MEM_ERR resource error
5.35.3.16 vos_sockClose()
EXT_DECL VOS_ERR_T vos_sockClose (
Generated by Doxygen

332 File Documentation
SOCKET sock )
Close a socket.
Release any resources aquired by this socket
Parameters
in sock socket descriptor
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR pSock == NULL
5.35.3.17 vos_sockConnect()
EXT_DECL VOS_ERR_T vos_sockConnect (
SOCKET sock,
UINT32 ipAddress,
UINT16 port )
Open a TCP connection.
Parameters
in sock socket descriptor
in ipAddress destination IP
in port destination port
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_IO_ERR Input/Output error
5.35.3.18 vos_sockGetMAC()
EXT_DECL VOS_ERR_T vos_sockGetMAC (
UINT8 pMAC[VOS_MAC_SIZE] )
Return the MAC address of the default adapter.
Parameters
out pMAC return MAC address.
Generated by Doxygen

5.35 vos_sock.h File Reference 333
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR pMAC == NULL
VOS_SOCK_ERR socket not available or option not supported
5.35.3.19 vos_sockInit()
EXT_DECL VOS_ERR_T vos_sockInit (
void )
Initialize the socket library.
Must be called once before any other call
Return values
VOS_NO_ERR no error
VOS_SOCK_ERR sockets not supported
5.35.3.20 vos_sockJoinMC()
EXT_DECL VOS_ERR_T vos_sockJoinMC (
SOCKET sock,
UINT32 mcAddress,
UINT32 ipAddress )
Join a multicast group.
Note: Some target systems might not support this option.
Parameters
in sock socket descriptor
in mcAddress multicast group to join
in ipAddress depicts interface on which to join, default 0 for any
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_SOCK_ERR option not supported
Generated by Doxygen

334 File Documentation
5.35.3.21 vos_sockLeaveMC()
EXT_DECL VOS_ERR_T vos_sockLeaveMC (
SOCKET sock,
UINT32 mcAddress,
UINT32 ipAddress )
Leave a multicast group.
Note: Some target systems might not support this option.
Parameters
in sock socket descriptor
in mcAddress multicast group to join
in ipAddress depicts interface on which to leave, default 0 for any
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_SOCK_ERR option not supported
5.35.3.22 vos_sockListen()
EXT_DECL VOS_ERR_T vos_sockListen (
SOCKET sock,
UINT32 backlog )
Listen for incoming TCP connections.
Parameters
in sock socket descriptor
in backlog maximum connection attempts if system is busy
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_IO_ERR Input/Output error
VOS_MEM_ERR resource error
Generated by Doxygen

5.35 vos_sock.h File Reference 335
5.35.3.23 vos_sockOpenTCP()
EXT_DECL VOS_ERR_T vos_sockOpenTCP (
SOCKET ∗pSock,
const VOS_SOCK_OPT_T ∗pOptions )
Create a TCP socket.
Return a socket descriptor for further calls. The socket options are optional and can be applied later.
Parameters
out pSock pointer to socket descriptor returned
in pOptions pointer to socket options (optional)
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR pSock == NULL
VOS_SOCK_ERR socket not available or option not supported
5.35.3.24 vos_sockOpenUDP()
EXT_DECL VOS_ERR_T vos_sockOpenUDP (
SOCKET ∗pSock,
const VOS_SOCK_OPT_T ∗pOptions )
Create an UDP socket.
Return a socket descriptor for further calls. The socket options are optional and can be applied later. Note: Some
target systems might not support every option.
Parameters
out pSock pointer to socket descriptor returned
in pOptions pointer to socket options (optional)
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR pSock == NULL
VOS_SOCK_ERR socket not available or option not supported
5.35.3.25 vos_sockReceiveTCP()
EXT_DECL VOS_ERR_T vos_sockReceiveTCP (
SOCKET sock,
Generated by Doxygen

336 File Documentation
UINT8 ∗pBuffer,
UINT32 ∗pSize )
Receive TCP data.
The caller must provide a sufficient sized buffer. If the supplied buffer is smaller than the bytes received, ∗pSize will
reflect the number of copied bytes and the call should be repeated until ∗pSize is 0 (zero). If the socket was created
in blocking-mode (default), then this call will block and will only return if data has been received or the socket was
closed or an error occured. If called in non-blocking mode, and no data is available, VOS_NODATA_ERR will be
returned.
Parameters
in sock socket descriptor
out pBuffer pointer to applications data buffer
in,out pSize pointer to the received data size
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR sock descriptor unknown, parameter error
VOS_IO_ERR data could not be read
VOS_NODATA_ERR no data in non-blocking
VOS_BLOCK_ERR call would have blocked in blocking mode
5.35.3.26 vos_sockReceiveUDP()
EXT_DECL VOS_ERR_T vos_sockReceiveUDP (
SOCKET sock,
UINT8 ∗pBuffer,
UINT32 ∗pSize,
UINT32 ∗pSrcIPAddr,
UINT16 ∗pSrcIPPort,
UINT32 ∗pDstIPAddr,
BOOL8 peek )
Receive UDP data.
The caller must provide a sufficient sized buffer. If the supplied buffer is smaller than the bytes received, ∗pSize will
reflect the number of copied bytes and the call should be repeated until ∗pSize is 0 (zero). If the socket was created
in blocking-mode (default), then this call will block and will only return if data has been received or the socket was
closed or an error occured. If called in non-blocking mode, and no data is available, VOS_NODATA_ERR will be
returned. If pointers are provided, source IP, source port and destination IP will be reported on return.
Parameters
in sock socket descriptor
out pBuffer pointer to applications data buffer
in,out pSize pointer to the received data size
out pSrcIPAddr pointer to source IP
out pSrcIPPort pointer to source port
out pDstIPAddr pointer to dest IP
in peek if true, leave data in queue Generated by Doxygen

5.35 vos_sock.h File Reference 337
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR sock descriptor unknown, parameter error
VOS_IO_ERR data could not be read
VOS_NODATA_ERR no data
VOS_BLOCK_ERR Call would have blocked in blocking mode
5.35.3.27 vos_sockSendTCP()
EXT_DECL VOS_ERR_T vos_sockSendTCP (
SOCKET sock,
const UINT8 ∗pBuffer,
UINT32 ∗pSize )
Send TCP data.
Send data to the supplied address and port.
Parameters
in sock socket descriptor
in pBuffer pointer to data to send
in,out pSize In: size of the data to send, Out: no of bytes sent
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR sock descriptor unknown, parameter error
VOS_IO_ERR data could not be sent
VOS_NOCONN_ERR no TCP connection
VOS_BLOCK_ERR call would have blocked in blocking mode, data partially sent
5.35.3.28 vos_sockSendUDP()
EXT_DECL VOS_ERR_T vos_sockSendUDP (
SOCKET sock,
const UINT8 ∗pBuffer,
UINT32 ∗pSize,
UINT32 ipAddress,
UINT16 port )
Send UDP data.
Send data to the given address and port.
Generated by Doxygen

338 File Documentation
Parameters
in sock socket descriptor
in pBuffer pointer to data to send
in,out pSize In: size of the data to send, Out: no of bytes sent
in ipAddress destination IP
in port destination port
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
VOS_IO_ERR data could not be sent
VOS_BLOCK_ERR Call would have blocked in blocking mode
5.35.3.29 vos_sockSetMulticastIf()
EXT_DECL VOS_ERR_T vos_sockSetMulticastIf (
SOCKET sock,
UINT32 mcIfAddress )
Set Using Multicast I/F.
Parameters
in sock socket descriptor
in mcIfAddress using Multicast I/F Address
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR sock descriptor unknown, parameter error
5.35.3.30 vos_sockSetOptions()
EXT_DECL VOS_ERR_T vos_sockSetOptions (
SOCKET sock,
const VOS_SOCK_OPT_T ∗pOptions )
Set socket options.
Note: Some target systems might not support each option.
Parameters
in sock socket descriptor
in pOptions pointer to socket options (optional)
Generated by Doxygen

5.36 vos_thread.h File Reference 339
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
5.35.3.31 vos_sockTerm()
EXT_DECL void vos_sockTerm (
void )
De-Initialize the socket library.
Must be called after last socket call
5.36 vos_thread.h File Reference
Threading functions for OS abstraction.
#include "vos_types.h"
Include dependency graph for vos_thread.h:
vos_thread.h
vos_types.h
stdint.h
This graph shows which files directly or indirectly include this file:
vos_thread.h
trdp_private.h
trdp_stats.c
vos_mem.h
vos_mem.c vos_utils.c
trdp_utils.htrdp_xml.htrdp_pdcom.h trdp_stats.h trdp_mdcom.h
tau_ctrl.c
tau_dnr.c tau_marshall.c
tau_tti.c
tau_xml.ctrdp_if.c trdp_mdcom.ctrdp_pdcom.c trdp_utils.ctrdp_xml.c
trdp_types.hvos_shared_mem.h
tau_ctrl.h
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_xml.htrdp_if_light.h
tau_cstinfo.c
trdp_if.h
Generated by Doxygen

340 File Documentation
Macros
• #define VOS_MAX_THREAD_CNT 100
The maximum number of concurrent usable threads.
• #define VOS_SEMA_WAIT_FOREVER 0xFFFFFFFFU
Timeout value to wait forever for a semaphore.
Typedefs
• typedef UINT8 VOS_THREAD_PRIORITY_T
Thread priority range from 1 (highest) to 255 (lowest), 0 default of the target system.
• typedef void(__cdecl ∗VOS_THREAD_FUNC_T) (void ∗pArg)
Thread function definition.
• typedef struct VOS_MUTEX ∗VOS_MUTEX_T
Hidden mutex handle definition.
• typedef struct VOS_SEMA ∗VOS_SEMA_T
Hidden semaphore handle definition.
• typedef void ∗VOS_THREAD_T
Hidden thread handle definition.
Enumerations
• enum VOS_THREAD_POLICY_T
Thread policy matching pthread/Posix defines.
• enum VOS_SEMA_STATE_T
State of the semaphore.
Functions
• EXT_DECL VOS_ERR_T vos_threadInit (void)
Initialize the thread library.
• EXT_DECL void vos_threadTerm (void)
De-Initialize the thread library.
• EXT_DECL VOS_ERR_T vos_threadCreate (VOS_THREAD_T ∗pThread, const CHAR8 ∗pName, VOS_←-
THREAD_POLICY_T policy, VOS_THREAD_PRIORITY_T priority, UINT32 interval, UINT32 stackSize, V←-
OS_THREAD_FUNC_T pFunction, void ∗pArguments)
Create a thread.
• EXT_DECL void vos_cyclicThread (UINT32 interval, VOS_THREAD_FUNC_T pFunction, void ∗pArguments)
Cyclic thread functions.
• EXT_DECL VOS_ERR_T vos_threadTerminate (VOS_THREAD_T thread)
Terminate a thread.
• EXT_DECL VOS_ERR_T vos_threadIsActive (VOS_THREAD_T thread)
Is the thread still active? This call will return VOS_NO_ERR if the thread is still active, VOS_PARAM_ERR in case it
ran out.
• EXT_DECL VOS_ERR_T vos_threadDelay (UINT32 delay)
Delay the execution of the current thread by the given delay in us.
• EXT_DECL VOS_ERR_T vos_threadSelf (VOS_THREAD_T ∗pThread)
Return thread handle of calling task.
• EXT_DECL void vos_getTime (VOS_TIMEVAL_T ∗pTime)
Generated by Doxygen

5.36 vos_thread.h File Reference 341
Return the current time in sec and us.
• EXT_DECL const CHAR8 ∗vos_getTimeStamp (void)
Get a time-stamp string.
• EXT_DECL void vos_clearTime (VOS_TIMEVAL_T ∗pTime)
Clear the time stamp.
• EXT_DECL void vos_addTime (VOS_TIMEVAL_T ∗pTime, const VOS_TIMEVAL_T ∗pAdd)
Add the second to the first time stamp, return sum in first.
• EXT_DECL void vos_subTime (VOS_TIMEVAL_T ∗pTime, const VOS_TIMEVAL_T ∗pSub)
Subtract the second from the first time stamp, return diff in first.
• EXT_DECL INT32 vos_cmpTime (const VOS_TIMEVAL_T ∗pTime, const VOS_TIMEVAL_T ∗pCmp)
Compare the second from the first time stamp, return diff in first.
• EXT_DECL void vos_divTime (VOS_TIMEVAL_T ∗pTime, UINT32 divisor)
Divide the first time by the second, return quotient in first.
• EXT_DECL void vos_mulTime (VOS_TIMEVAL_T ∗pTime, UINT32 mul)
Multiply the first time by the second, return product in first.
• EXT_DECL void vos_getUuid (VOS_UUID_T pUuID)
Get a universal unique identifier according to RFC 4122 time based version.
• EXT_DECL VOS_ERR_T vos_mutexCreate (VOS_MUTEX_T ∗pMutex)
Create a mutex.
• EXT_DECL void vos_mutexDelete (VOS_MUTEX_T pMutex)
Delete a mutex.
• EXT_DECL VOS_ERR_T vos_mutexLock (VOS_MUTEX_T pMutex)
Take a mutex.
• EXT_DECL VOS_ERR_T vos_mutexTryLock (VOS_MUTEX_T pMutex)
Try to take a mutex.
• EXT_DECL VOS_ERR_T vos_mutexUnlock (VOS_MUTEX_T pMutex)
Release a mutex.
• EXT_DECL VOS_ERR_T vos_semaCreate (VOS_SEMA_T ∗pSema, VOS_SEMA_STATE_T initialState)
Create a semaphore.
• EXT_DECL void vos_semaDelete (VOS_SEMA_T sema)
Delete a semaphore.
• EXT_DECL VOS_ERR_T vos_semaTake (VOS_SEMA_T sema, UINT32 timeout)
Take a semaphore.
• EXT_DECL void vos_semaGive (VOS_SEMA_T sema)
Give a semaphore.
5.36.1 Detailed Description
Threading functions for OS abstraction.
Thread-, semaphore- and time-handling functions
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Generated by Doxygen

342 File Documentation
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2014. All rights reserved.
Id
vos_thread.h 1763 2018-09-21 16:03:13Z ahweiss
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
5.36.2 Function Documentation
5.36.2.1 vos_addTime()
EXT_DECL void vos_addTime (
VOS_TIMEVAL_T ∗pTime,
const VOS_TIMEVAL_T ∗pAdd )
Add the second to the first time stamp, return sum in first.
Parameters
in,out pTime Pointer to time value
in pAdd Pointer to time value
5.36.2.2 vos_clearTime()
EXT_DECL void vos_clearTime (
VOS_TIMEVAL_T ∗pTime )
Clear the time stamp.
Parameters
out pTime Pointer to time value
5.36.2.3 vos_cmpTime()
EXT_DECL INT32 vos_cmpTime (
const VOS_TIMEVAL_T ∗pTime,
const VOS_TIMEVAL_T ∗pCmp )
Generated by Doxygen

5.36 vos_thread.h File Reference 343
Compare the second from the first time stamp, return diff in first.
Generated by Doxygen

344 File Documentation
Parameters
in,out pTime Pointer to time value
in pCmp Pointer to time value to compare
Return values
0pTime == pCmp
-1 pTime <pCmp
1pTime >pCmp
5.36.2.4 vos_cyclicThread()
EXT_DECL void vos_cyclicThread (
UINT32 interval,
VOS_THREAD_FUNC_T pFunction,
void ∗pArguments )
Cyclic thread functions.
Wrapper for cyclic threads. The thread function will be called cyclically with interval.
Parameters
in interval Interval for cyclic threads in us (incl. runtime)
in pFunction Pointer to the thread function
in pArguments Pointer to the thread function parameters
Return values
void
5.36.2.5 vos_divTime()
EXT_DECL void vos_divTime (
VOS_TIMEVAL_T ∗pTime,
UINT32 divisor )
Divide the first time by the second, return quotient in first.
Parameters
in,out pTime Pointer to time value
in divisor Divisor
Generated by Doxygen

5.36 vos_thread.h File Reference 345
5.36.2.6 vos_getTime()
EXT_DECL void vos_getTime (
VOS_TIMEVAL_T ∗pTime )
Return the current time in sec and us.
Parameters
out pTime Pointer to time value
5.36.2.7 vos_getTimeStamp()
EXT_DECL const CHAR8∗vos_getTimeStamp (
void )
Get a time-stamp string.
Get a time-stamp string for debugging in the form "yyyymmdd-hh:mm:ss.ms" Depending on the used OS / hardware
the time might not be a real-time stamp but relative from start of system.
Return values
timestamp "yyyymmdd-hh:mm:ss.ms"
5.36.2.8 vos_getUuid()
EXT_DECL void vos_getUuid (
VOS_UUID_T pUuID )
Get a universal unique identifier according to RFC 4122 time based version.
Parameters
out pUuID Pointer to a universal unique identifier
5.36.2.9 vos_mulTime()
EXT_DECL void vos_mulTime (
VOS_TIMEVAL_T ∗pTime,
UINT32 mul )
Generated by Doxygen

346 File Documentation
Multiply the first time by the second, return product in first.
Parameters
in,out pTime Pointer to time value
in mul Factor
5.36.2.10 vos_mutexCreate()
EXT_DECL VOS_ERR_T vos_mutexCreate (
VOS_MUTEX_T ∗pMutex )
Create a mutex.
Return a mutex handle. The mutex will be available at creation.
Parameters
out pMutex Pointer to mutex handle
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_PARAM_ERR pMutex == NULL
VOS_MUTEX_ERR no mutex available
5.36.2.11 vos_mutexDelete()
EXT_DECL void vos_mutexDelete (
VOS_MUTEX_T pMutex )
Delete a mutex.
Release the resources taken by the mutex.
Parameters
in pMutex mutex handle
Return values
VOS_NO_ERR no error
Generated by Doxygen

5.36 vos_thread.h File Reference 347
5.36.2.12 vos_mutexLock()
EXT_DECL VOS_ERR_T vos_mutexLock (
VOS_MUTEX_T pMutex )
Take a mutex.
Wait for the mutex to become available (lock).
Parameters
in pMutex mutex handle
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
5.36.2.13 vos_mutexTryLock()
EXT_DECL VOS_ERR_T vos_mutexTryLock (
VOS_MUTEX_T pMutex )
Try to take a mutex.
If mutex is can't be taken VOS_MUTEX_ERR is returned.
Parameters
in pMutex mutex handle
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_MUTEX_ERR no mutex available
5.36.2.14 vos_mutexUnlock()
EXT_DECL VOS_ERR_T vos_mutexUnlock (
VOS_MUTEX_T pMutex )
Release a mutex.
Unlock the mutex.
Generated by Doxygen

348 File Documentation
Parameters
in pMutex mutex handle
5.36.2.15 vos_semaCreate()
EXT_DECL VOS_ERR_T vos_semaCreate (
VOS_SEMA_T ∗pSema,
VOS_SEMA_STATE_T initialState )
Create a semaphore.
Return a semaphore handle. Depending on the initial state the semaphore will be available on creation or not.
Parameters
out pSema Pointer to semaphore handle
in initialState The initial state of the sempahore
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_PARAM_ERR parameter out of range/invalid
VOS_SEMA_ERR no semaphore available
5.36.2.16 vos_semaDelete()
EXT_DECL void vos_semaDelete (
VOS_SEMA_T sema )
Delete a semaphore.
This will eventually release any processes waiting for the semaphore.
Parameters
in sema semaphore handle
5.36.2.17 vos_semaGive()
EXT_DECL void vos_semaGive (
VOS_SEMA_T sema )
Generated by Doxygen

5.36 vos_thread.h File Reference 349
Give a semaphore.
Release (increase) a semaphore.
Parameters
in sema semaphore handle
5.36.2.18 vos_semaTake()
EXT_DECL VOS_ERR_T vos_semaTake (
VOS_SEMA_T sema,
UINT32 timeout )
Take a semaphore.
Try to get (decrease) a semaphore.
Parameters
in sema semaphore handle
in timeout Max. time in us to wait, 0 means no wait
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
VOS_SEMA_ERR could not get semaphore in time
5.36.2.19 vos_subTime()
EXT_DECL void vos_subTime (
VOS_TIMEVAL_T ∗pTime,
const VOS_TIMEVAL_T ∗pSub )
Subtract the second from the first time stamp, return diff in first.
Parameters
in,out pTime Pointer to time value
in pSub Pointer to time value
Generated by Doxygen

350 File Documentation
5.36.2.20 vos_threadCreate()
EXT_DECL VOS_ERR_T vos_threadCreate (
VOS_THREAD_T ∗pThread,
const CHAR8 ∗pName,
VOS_THREAD_POLICY_T policy,
VOS_THREAD_PRIORITY_T priority,
UINT32 interval,
UINT32 stackSize,
VOS_THREAD_FUNC_T pFunction,
void ∗pArguments )
Create a thread.
Create a thread and return a thread handle for further requests. Not each parameter may be supported by all target
systems!
Parameters
out pThread Pointer to returned thread handle
in pName Pointer to name of the thread (optional)
in policy Scheduling policy (FIFO, Round Robin or other)
in priority Scheduling priority (1...255 (highest), default 0)
in interval Interval for cyclic threads in us (optional)
in stackSize Minimum stacksize, default 0: 16kB
in pFunction Pointer to the thread function
in pArguments Pointer to the thread function parameters
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
5.36.2.21 vos_threadDelay()
EXT_DECL VOS_ERR_T vos_threadDelay (
UINT32 delay )
Delay the execution of the current thread by the given delay in us.
Parameters
in delay Delay in us
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
Generated by Doxygen

5.36 vos_thread.h File Reference 351
5.36.2.22 vos_threadInit()
EXT_DECL VOS_ERR_T vos_threadInit (
void )
Initialize the thread library.
Must be called once before any other call
Return values
VOS_NO_ERR no error
VOS_INIT_ERR threading not supported
5.36.2.23 vos_threadIsActive()
EXT_DECL VOS_ERR_T vos_threadIsActive (
VOS_THREAD_T thread )
Is the thread still active? This call will return VOS_NO_ERR if the thread is still active, VOS_PARAM_ERR in case
it ran out.
Parameters
in thread Thread handle
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
5.36.2.24 vos_threadSelf()
EXT_DECL VOS_ERR_T vos_threadSelf (
VOS_THREAD_T ∗pThread )
Return thread handle of calling task.
Parameters
out pThread pointer to thread handle
Generated by Doxygen

352 File Documentation
Return values
VOS_NO_ERR no error
VOS_PARAM_ERR parameter out of range/invalid
5.36.2.25 vos_threadTerm()
EXT_DECL void vos_threadTerm (
void )
De-Initialize the thread library.
Must be called after last thread/timer call
5.36.2.26 vos_threadTerminate()
EXT_DECL VOS_ERR_T vos_threadTerminate (
VOS_THREAD_T thread )
Terminate a thread.
This call will terminate the thread with the given threadId and release all resources. Depending on the underlying
architectures, it may just block until the thread ran out.
Parameters
in thread Thread handle (or NULL if current thread)
Return values
VOS_NO_ERR no error
VOS_INIT_ERR module not initialised
VOS_NOINIT_ERR invalid handle
VOS_PARAM_ERR parameter out of range/invalid
5.37 vos_types.h File Reference
Typedefs for OS abstraction.
Generated by Doxygen

5.37 vos_types.h File Reference 353
#include <stdint.h>
Include dependency graph for vos_types.h:
vos_types.h
stdint.h
This graph shows which files directly or indirectly include this file:
vos_types.h
trdp_types.h
tau_xml.h
vos_mem.h
vos_shared_mem.h vos_mem.c
vos_thread.h
vos_sock.h vos_utils.h
tau_ctrl.h
tau_ctrl.c
tau_tti.h
tau_ctrl_types.h
tau_tti_types.h
tau_dnr.h
tau_dnr_types.h
tau_marshall.h
tau_marshall.c tau_xml.c
trdp_if_light.h
trdp_pdcom.c
trdp_private.h
tau_cstinfo.c
tau_tti.c
tau_dnr.c trdp_if.c
trdp_stats.h
trdp_stats.c
trdp_if.h
trdp_mdcom.c trdp_utils.c
trdp_utils.h trdp_xml.htrdp_pdcom.htrdp_mdcom.h
trdp_xml.c
vos_utils.c
Data Structures
• struct VOS_VERSION_T
Version information.
Macros
• #define INLINE inline
inline macros
• #define AV_ERROR 0x00
ANTIVALENT8 values.
• #define TR_DIR1 0x01
Directions/Orientations.
Typedefs
• typedef UINT8 VOS_UUID_T[16]
universal unique identifier according to RFC 4122, time based version
• typedef struct timeval VOS_TIMEVAL_T
Timer value compatible with timeval / select.
• typedef void(∗VOS_PRINT_DBG_T) (void ∗pRefCon, VOS_LOG_T category, const CHAR8 ∗pTime, const
CHAR8 ∗pFile, UINT16 LineNumber, const CHAR8 ∗pMsgStr)
Function definition for error/debug output.
Generated by Doxygen

354 File Documentation
Enumerations
• enum VOS_ERR_T {
VOS_NO_ERR = 0,
VOS_PARAM_ERR = -1,
VOS_INIT_ERR = -2,
VOS_NOINIT_ERR = -3,
VOS_TIMEOUT_ERR = -4,
VOS_NODATA_ERR = -5,
VOS_SOCK_ERR = -6,
VOS_IO_ERR = -7,
VOS_MEM_ERR = -8,
VOS_SEMA_ERR = -9,
VOS_QUEUE_ERR = -10,
VOS_QUEUE_FULL_ERR = -11,
VOS_MUTEX_ERR = -12,
VOS_THREAD_ERR = -13,
VOS_BLOCK_ERR = -14,
VOS_INTEGRATION_ERR = -15,
VOS_NOCONN_ERR = -16,
VOS_INUSE_ERR = -49,
VOS_UNKNOWN_ERR = -99 }
Return codes for all VOS API functions.
• enum VOS_LOG_T {
VOS_LOG_ERROR = 0,
VOS_LOG_WARNING = 1,
VOS_LOG_INFO = 2,
VOS_LOG_DBG = 3,
VOS_LOG_USR =4}
Categories for logging.
5.37.1 Detailed Description
Typedefs for OS abstraction.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_types.h 1763 2018-09-21 16:03:13Z ahweiss
BL 2018-06-25: Ticket #202: vos_mutexTrylock return value
BL 2018-05-03: no inline if < C99
BL 2017-11-17: Undone: Ticket #169 Encapsulate declaration of packed structures within a macro
BL 2017-11-10: Additional log type: VOS_LOG_USR
BL 2017-05-22: Ticket #122: Addendum for 64Bit compatibility (VOS_TIME_T -> VOS_TIMEVAL_T)
BL 2017-05-08: Doxygen comment errors
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
Generated by Doxygen

5.37 vos_types.h File Reference 355
5.37.2 Typedef Documentation
5.37.2.1 VOS_PRINT_DBG_T
typedef void(∗VOS_PRINT_DBG_T) (void ∗pRefCon, VOS_LOG_T category, const CHAR8 ∗pTime, const
CHAR8 ∗pFile, UINT16 LineNumber, const CHAR8 ∗pMsgStr)
Function definition for error/debug output.
The function will be called for logging and error message output. The user can decide, what kind of info will be
logged by filtering the category.
Parameters
in pRefCon pointer to user context
in category Log category (Error, Warning, Info etc.)
in pTime pointer to NULL-terminated string of time stamp
in pFile pointer to NULL-terminated string of source module
in LineNumber Line number
in pMsgStr pointer to NULL-terminated string
5.37.2.2 VOS_TIMEVAL_T
typedef struct timeval VOS_TIMEVAL_T
Timer value compatible with timeval / select.
Relative or absolute date, depending on usage Assume 32 Bit system, if not defined
5.37.3 Enumeration Type Documentation
5.37.3.1 VOS_ERR_T
enum VOS_ERR_T
Return codes for all VOS API functions.
Enumerator
VOS_NO_ERR No error.
VOS_PARAM_ERR Necessary parameter missing or out of range.
VOS_INIT_ERR Call without valid initialization.
Generated by Doxygen

356 File Documentation
Enumerator
VOS_NOINIT_ERR The supplied handle/reference is not valid.
VOS_TIMEOUT_ERR Timout.
VOS_NODATA_ERR Non blocking mode: no data received.
VOS_SOCK_ERR Socket option not supported.
VOS_IO_ERR Socket IO error, data can't be received/sent.
VOS_MEM_ERR No more memory available.
VOS_SEMA_ERR Semaphore not available.
VOS_QUEUE_ERR Queue empty.
VOS_QUEUE_FULL_ERR Queue full.
VOS_MUTEX_ERR Mutex not available.
VOS_THREAD_ERR Thread creation error.
VOS_BLOCK_ERR System call would have blocked in blocking mode.
VOS_INTEGRATION_ERR Alignment or endianess for selected target wrong.
VOS_NOCONN_ERR No TCP connection.
VOS_INUSE_ERR Resource is still in use.
VOS_UNKNOWN_ERR Unknown error.
5.37.3.2 VOS_LOG_T
enum VOS_LOG_T
Categories for logging.
Enumerator
VOS_LOG_ERROR This is a critical error.
VOS_LOG_WARNING This is a warning.
VOS_LOG_INFO This is an info.
VOS_LOG_DBG This is a debug info.
VOS_LOG_USR This is a user info.
5.38 vos_utils.c File Reference
Common functions for VOS.
#include <string.h>
#include "vos_utils.h"
#include "vos_sock.h"
#include "vos_thread.h"
#include "vos_mem.h"
#include "vos_private.h"
Generated by Doxygen

5.38 vos_utils.c File Reference 357
Include dependency graph for vos_utils.c:
vos_utils.c
string.h vos_utils.h vos_sock.h
vos_private.h vos_thread.h
vos_mem.h
stdio.h stddef.h
vos_types.h
stdint.h
Functions
•VOS_ERR_T vos_init (void ∗pRefCon, VOS_PRINT_DBG_T pDebugOutput)
Initialize the virtual operating system.
• EXT_DECL void vos_terminate (void)
DeInitialize the vos library.
• UINT32 vos_crc32 (UINT32 crc, const UINT8 ∗pData, UINT32 dataLen)
Compute crc32 according to IEEE802.3.
• UINT32 vos_sc32 (UINT32 crc, const UINT8 ∗pData, UINT32 dataLen)
Compute crc32 according to IEC 61375-2-3 B.7.
• const char ∗vos_getVersionString (void)
Return a human readable version representation.
• EXT_DECL const VOS_VERSION_T ∗vos_getVersion (void)
Return version.
• EXT_DECL const CHAR8 ∗vos_getErrorString (VOS_ERR_T error)
Return a human readable error representation.
5.38.1 Detailed Description
Common functions for VOS.
Common functions of the abstraction layer. Mainly debugging support.
Note
Project: TCNOpen TRDP prototype stack
Generated by Doxygen

358 File Documentation
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_utils.c 1761 2018-09-18 15:54:02Z bloehr
BL 2017-05-08: Compiler warnings
BL 2017-02-27: #142 Compiler warnings / MISRA-C 2012 issues
BL 2016-08-17: parentheses added (compiler warning)
BL 2016-07-06: Ticket #122 64Bit compatibility (+ compiler warnings)
BL 2016-03-10: Ticket #114 SC-32
BL 2016-02-10: ifdef DEBUG for some functions
BL 2014-02-28: Ticket #25: CRC32 calculation is not according IEEE802.3
5.38.2 Function Documentation
5.38.2.1 vos_crc32()
UINT32 vos_crc32 (
UINT32 crc,
const UINT8 ∗pData,
UINT32 dataLen )
Compute crc32 according to IEEE802.3.
Calculate CRC for the given buffer and length.
/ to IEC 61375-2-3 A.3 Note: Returned CRC is inverted
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
crc32 according to
IEEE802.3
Generated by Doxygen

5.38 vos_utils.c File Reference 359
5.38.2.2 vos_getErrorString()
EXT_DECL const CHAR8∗vos_getErrorString (
VOS_ERR_T error )
Return a human readable error representation.
Parameters
in error The TRDP or VOS error code
Return values
const string pointer to error string
5.38.2.3 vos_getVersion()
EXT_DECL const VOS_VERSION_T∗vos_getVersion (
void )
Return version.
Return pointer to version structure
Return values
VOS_VERSION←-
_T
5.38.2.4 vos_getVersionString()
const char∗vos_getVersionString (
void )
Return a human readable version representation.
Return string in the form 'v.r.u.b'
Return values
const string
Generated by Doxygen

360 File Documentation
5.38.2.5 vos_init()
VOS_ERR_T vos_init (
void ∗pRefCon,
VOS_PRINT_DBG_T pDebugOutput )
Initialize the virtual operating system.
Initialize the vos library.
Parameters
in pRefCon context for debug output function
in pDebugOutput Pointer to debug output function.
Return values
VOS_NO_ERR no error VOS_INTEGRATION_ERR if endianess/alignment mismatch VOS_SOCK_ERR
sockets not supported VOS_UNKNOWN_ERR initialisation error
5.38.2.6 vos_sc32()
UINT32 vos_sc32 (
UINT32 crc,
const UINT8 ∗pData,
UINT32 dataLen )
Compute crc32 according to IEC 61375-2-3 B.7.
Compute crc32 according to IEC 61375-2-3 B.7 Note: Returned CRC is inverted.
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
sc32 according to IEC 61375-2-3
5.38.2.7 vos_terminate()
EXT_DECL void vos_terminate (
void )
DeInitialize the vos library.
Should be called last after TRDP stack/application does not use any VOS function anymore.
Generated by Doxygen

5.39 vos_utils.h File Reference 361
5.39 vos_utils.h File Reference
Typedefs for OS abstraction.
#include <stdio.h>
#include <stddef.h>
#include "vos_types.h"
Include dependency graph for vos_utils.h:
vos_utils.h
stdio.h stddef.h vos_types.h
stdint.h
This graph shows which files directly or indirectly include this file:
vos_utils.h
trdp_utils.h
trdp_if.c
trdp_xml.h trdp_stats.h vos_mem.c vos_utils.c
tau_ctrl.c tau_dnr.c tau_marshall.ctau_tti.c tau_xml.ctrdp_mdcom.c trdp_pdcom.ctrdp_utils.c trdp_xml.c trdp_stats.c
Macros
• #define VOS_MAX_PRNT_STR_SIZE 256u
String size definitions for the debug output functions.
• #define VOS_MAX_FRMT_SIZE 64u
Max.
• #define VOS_MAX_ERR_STR_SIZE (VOS_MAX_PRNT_STR_SIZE -VOS_MAX_FRMT_SIZE)
Max.
• #define VOS_DIR_SEP '/'
This is a helper define for separating a path in debug output.
• #define vos_snprintf(str, size, format, args ...) snprintf(str, size, format, ## args) /∗lint !e586 logging output
needed ∗/
Safe printf function.
• #define vos_printLogStr(level, string)
Debug output macro without formatting options.
Generated by Doxygen

362 File Documentation
• #define vos_printLog(level, format, args ...)
Debug output macro with formatting options.
• #define ALIGNOF(type) ((UINT32)offsetof(struct { char c; type member; }, member))
Alignment macros.
• #define INITFCS 0xffffffffu
CRC/FCS constants.
• #define SIZE_OF_FCS 4u
for better understanding of address calculations
• #define L_ENDIAN
Define endianess if not already done by compiler.
Functions
• EXT_DECL UINT32 vos_crc32 (UINT32 crc, const UINT8 ∗pData, UINT32 dataLen)
Calculate CRC for the given buffer and length.
• EXT_DECL UINT32 vos_sc32 (UINT32 crc, const UINT8 ∗pData, UINT32 dataLen)
Compute crc32 according to IEC 61375-2-3 B.7 Note: Returned CRC is inverted.
• EXT_DECL VOS_ERR_T vos_init (void ∗pRefCon, VOS_PRINT_DBG_T pDebugOutput)
Initialize the vos library.
• EXT_DECL void vos_terminate (void)
DeInitialize the vos library.
• EXT_DECL const CHAR8 ∗vos_getVersionString (void)
Return a human readable version representation.
• EXT_DECL const VOS_VERSION_T ∗vos_getVersion (void)
Return version.
• EXT_DECL const CHAR8 ∗vos_getErrorString (VOS_ERR_T error)
Return a human readable error representation.
5.39.1 Detailed Description
Typedefs for OS abstraction.
Note
Project: TCNOpen TRDP prototype stack
Author
Bernd Loehr, NewTec GmbH
Remarks
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Copyright
Bombardier Transportation Inc. or its subsidiaries and others, 2013. All rights reserved.
Id
vos_utils.h 1763 2018-09-21 16:03:13Z ahweiss
BL 2017-05-08: Compiler warnings, doxygen comment errors
BL 2017-02-08: Ticket #142: Compiler warnings / MISRA-C 2012 issues
BL 2016-03-10: Ticket #114 SC-32
BL 2014-02-28: Ticket #25: CRC32 calculation is not according IEEE802.3
Generated by Doxygen

5.39 vos_utils.h File Reference 363
5.39.2 Macro Definition Documentation
5.39.2.1 INITFCS
#define INITFCS 0xffffffffu
CRC/FCS constants.
Initial FCS value
5.39.2.2 VOS_MAX_ERR_STR_SIZE
#define VOS_MAX_ERR_STR_SIZE (VOS_MAX_PRNT_STR_SIZE -VOS_MAX_FRMT_SIZE)
Max.
size of the error part
5.39.2.3 VOS_MAX_FRMT_SIZE
#define VOS_MAX_FRMT_SIZE 64u
Max.
size of the 'format' part
5.39.2.4 VOS_MAX_PRNT_STR_SIZE
#define VOS_MAX_PRNT_STR_SIZE 256u
String size definitions for the debug output functions.
Max. size of the debug/error string of debug function
5.39.3 Function Documentation
5.39.3.1 vos_crc32()
EXT_DECL UINT32 vos_crc32 (
UINT32 crc,
const UINT8 ∗pData,
UINT32 dataLen )
Calculate CRC for the given buffer and length.
For TRDP FCS CRC calculation the CRC32 according to IEEE802.3 with start value 0xffffffff is used.
Generated by Doxygen

364 File Documentation
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
crc32 according to
IEEE802.3
Calculate CRC for the given buffer and length.
/ to IEC 61375-2-3 A.3 Note: Returned CRC is inverted
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
crc32 according to
IEEE802.3
5.39.3.2 vos_getErrorString()
EXT_DECL const CHAR8∗vos_getErrorString (
VOS_ERR_T error )
Return a human readable error representation.
Parameters
in error The TRDP or VOS error code
Return values
const string pointer to error string
5.39.3.3 vos_getVersion()
EXT_DECL const VOS_VERSION_T∗vos_getVersion (
void )
Generated by Doxygen

5.39 vos_utils.h File Reference 365
Return version.
Return pointer to version structure
Return values
const VOS_VERSION←-
_T
Return pointer to version structure
Return values
VOS_VERSION←-
_T
5.39.3.4 vos_getVersionString()
EXT_DECL const CHAR8∗vos_getVersionString (
void )
Return a human readable version representation.
Return string in the form 'v.r.u.b'
Return values
const string
5.39.3.5 vos_init()
EXT_DECL VOS_ERR_T vos_init (
void ∗pRefCon,
VOS_PRINT_DBG_T pDebugOutput )
Initialize the vos library.
This is used to set the output function for all VOS error and debug output.
Parameters
in pRefCon user context
in pDebugOutput pointer to debug output function
Return values
VOS_NO_ERR no error
Generated by Doxygen

366 File Documentation
Return values
VOS_INIT_ERR unsupported
Initialize the vos library.
Parameters
in pRefCon context for debug output function
in pDebugOutput Pointer to debug output function.
Return values
VOS_NO_ERR no error VOS_INTEGRATION_ERR if endianess/alignment mismatch VOS_SOCK_ERR
sockets not supported VOS_UNKNOWN_ERR initialisation error
5.39.3.6 vos_sc32()
EXT_DECL UINT32 vos_sc32 (
UINT32 crc,
const UINT8 ∗pData,
UINT32 dataLen )
Compute crc32 according to IEC 61375-2-3 B.7 Note: Returned CRC is inverted.
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
crc32 according to IEC 61375-2-3
Compute crc32 according to IEC 61375-2-3 B.7 Note: Returned CRC is inverted.
Parameters
in crc Initial value.
in,out pData Pointer to data.
in dataLen length in bytes of data.
Return values
sc32 according to IEC 61375-2-3
Generated by Doxygen

5.39 vos_utils.h File Reference 367
5.39.3.7 vos_terminate()
EXT_DECL void vos_terminate (
void )
DeInitialize the vos library.
Should be called last after TRDP stack/application does not use any VOS function anymore.
Generated by Doxygen

368 File Documentation
Generated by Doxygen
Index
cnCnt
TRDP_ETB_INFO_T, 33
cnId
TRDP_FUNCTION_INFO_T, 34
confVehCnt
GNU_PACKED, 15
confVehList
GNU_PACKED, 15
cstId
TRDP_CONSIST_INFO_T, 28
cstInfoGetPropSize
tau_cstinfo.c, 68
cstList
GNU_PACKED, 15
cstOwner
TRDP_CONSIST_INFO_T, 28
cstUUID
GNU_PACKED, 15
cstVehNo
TRDP_FUNCTION_INFO_T, 35
DNS_HEADER, 9
datasetLength
GNU_PACKED, 16
destAddr
TRDP_PUB_STATISTICS_T, 47
deviceName
GNU_PACKED, 16
ETB_CTRL_COMID
iec61375-2-3.h, 64
etbId
GNU_PACKED, 16
TRDP_FUNCTION_INFO_T, 35
etbTopoCnt
GNU_PACKED, 16
fctId
TRDP_FUNCTION_INFO_T, 35
filterAddr
TRDP_SUBS_STATISTICS_T, 55
GNU_PACKED, 9
confVehCnt, 15
confVehList, 15
cstList, 15
cstUUID, 15
datasetLength, 16
deviceName, 16
etbId, 16
etbTopoCnt, 16
inhibit, 16
isLead, 17
leadDir, 17
leadVehOfCst, 17
lifesign, 17
msgType, 17
opCstList, 17
opTrnDirState, 18
opTrnTopoCnt, 18
opVehList, 18
ownOpCstNo, 18
protocolVersion, 18
reserved01, 19
reserved02, 19
reserved03, 19
reserved04, 19
reserved06, 20
safetyTrail, 20
trnCstNo, 20
trnDirState, 20
trnId, 20
trnNetDir, 21
trnOperator, 21
trnTopoCnt, 21
trnVehNo, 21
vehId, 21
vehOrient, 21
version, 22
INITFCS
vos_utils.h, 363
iec61375-2-3.h, 59
ETB_CTRL_COMID, 64
TRDP_ETBCTRL_DSID, 64
TRDP_MAX_FILE_NAME_LEN, 64
TRDP_MAX_LABEL_LEN, 64
TRDP_MAX_MD_DATA_SIZE, 64
TRDP_MAX_URI_HOST_LEN, 64
TRDP_MAX_URI_LEN, 65
TRDP_MAX_URI_USER_LEN, 65
TRDP_MD_DEFAULT_REPLY_TIMEOUT, 65
TRDP_MD_INFINITE_TIME, 65
TRDP_MIN_PD_HEADER_SIZE, 65
TRDP_MSG_PD, 65
TRDP_PD_UDP_PORT, 66
TRDP_PROCESS_DEFAULT_CYCLE_TIME, 66
TRDP_USR_URI_SIZE, 66
TTDB_NET_DIR_REQ_COMID, 66
TTDB_OP_DIR_INFO_COMID, 66

370 INDEX
TTDB_STAT_CST_REQ_COMID, 66
TTDB_TRN_DIR_REQ_COMID, 67
inhibit
GNU_PACKED, 16
isLead
GNU_PACKED, 17
leadDir
GNU_PACKED, 17
leadVehOfCst
GNU_PACKED, 17
lifesign
GNU_PACKED, 17
msgType
GNU_PACKED, 17
opCstList
GNU_PACKED, 17
opTrnDirState
GNU_PACKED, 18
opTrnTopoCnt
GNU_PACKED, 18
opVehList
GNU_PACKED, 18
ownOpCstNo
GNU_PACKED, 18
PD_ELE, 22
pFrame, 24
pFrame
PD_ELE, 24
protocolVersion
GNU_PACKED, 18
reserved01
GNU_PACKED, 19
reserved02
GNU_PACKED, 19
reserved03
GNU_PACKED, 19
reserved04
GNU_PACKED, 19
reserved06
GNU_PACKED, 20
safetyTrail
GNU_PACKED, 20
TAU_MARSHALL_INFO_T, 24
TCN_URI, 25
TRDP_CLTR_CST_INFO_T, 25
TRDP_COMID_DSID_MAP_T, 26
TRDP_CONSIST_INFO_T, 26
cstId, 28
cstOwner, 28
TRDP_DATA_TYPE_T
trdp_types.h, 262
TRDP_DATASET_ELEMENT_T, 29
TRDP_DATASET, 28
TRDP_DBG_CONFIG_T, 30
TRDP_DBG_DEFAULT
tau_xml.h, 148
TRDP_DNS_REPLY, 31
tcnUriCnt, 32
TRDP_DNS_REQUEST, 32
tcnUriCnt, 33
TRDP_ERR_T
trdp_types.h, 263
TRDP_ETB_INFO_T, 33
cnCnt, 33
TRDP_ETBCTRL_DSID
iec61375-2-3.h, 64
TRDP_EXCHG_OPTION_T
tau_xml.h, 148
TRDP_FLAGS_DEFAULT
trdp_types.h, 260
TRDP_FUNCTION_INFO_T, 34
cnId, 34
cstVehNo, 35
etbId, 35
fctId, 35
TRDP_HANDLE, 35
TRDP_IP_ADDR_T
trdp_types.h, 260
TRDP_LIST_STATISTICS_T, 36
TRDP_MARSHALL_CONFIG_T, 37
TRDP_MARSHALL_T
trdp_types.h, 260
TRDP_MAX_FILE_NAME_LEN
iec61375-2-3.h, 64
TRDP_MAX_LABEL_LEN
iec61375-2-3.h, 64
TRDP_MAX_MD_DATA_SIZE
iec61375-2-3.h, 64
TRDP_MAX_URI_HOST_LEN
iec61375-2-3.h, 64
TRDP_MAX_URI_LEN
iec61375-2-3.h, 65
TRDP_MAX_URI_USER_LEN
iec61375-2-3.h, 65
TRDP_MD_CALLBACK_T
trdp_types.h, 261
TRDP_MD_CONFIG_T, 38
TRDP_MD_DEFAULT_REPLY_TIMEOUT
iec61375-2-3.h, 65
TRDP_MD_ELE_ST_T
trdp_private.h, 245
TRDP_MD_INFINITE_TIME
iec61375-2-3.h, 65
TRDP_MD_INFO_T, 39
TRDP_MD_STATISTICS_T, 40
TRDP_MEM_CONFIG_T, 41
TRDP_MEM_STATISTICS_T, 42
TRDP_MIN_PD_HEADER_SIZE
iec61375-2-3.h, 65
TRDP_MSG_PD
iec61375-2-3.h, 65
Generated by Doxygen

INDEX 371
TRDP_PD_CALLBACK_T
trdp_types.h, 261
TRDP_PD_CONFIG_T, 42
TRDP_PD_INFO_T, 43
TRDP_PD_STATISTICS_T, 44
TRDP_PD_UDP_PORT
iec61375-2-3.h, 66
TRDP_PRINT_DBG_T
trdp_types.h, 261
TRDP_PROCESS_CONFIG_T, 45
TRDP_PROCESS_DEFAULT_CYCLE_TIME
iec61375-2-3.h, 66
TRDP_PROP_T, 46
TRDP_PUB_STATISTICS_T, 46
destAddr, 47
TRDP_RED_STATE_T
trdp_types.h, 264
TRDP_RED_STATISTICS_T, 47
TRDP_REPLY_STATUS_T
trdp_types.h, 264
TRDP_SDT_DEFAULT_CMTHR
tau_xml.c, 141
TRDP_SDT_PAR_T, 47
TRDP_SEND_PARAM_T, 48
TRDP_SEQ_CNT_ENTRY_T, 49
TRDP_SESSION, 49
TRDP_SOCK_TYPE_T
trdp_private.h, 245
TRDP_SOCKET_TCP, 51
TRDP_SOCKETS, 51
usage, 52
TRDP_STATISTICS_REQUEST_T, 52
TRDP_STATISTICS_T, 53
TRDP_SUBS_STATISTICS_T, 54
filterAddr, 55
timeout, 55
toBehav, 55
TRDP_TIME_T
trdp_types.h, 261
TRDP_TO_BEHAVIOR_T
trdp_types.h, 264
TRDP_UNMARSHALL_T
trdp_types.h, 261
TRDP_USR_URI_SIZE
iec61375-2-3.h, 66
TRDP_VEHICLE_INFO_T, 56
vehId, 57
TRDP_XML_DOC_HANDLE_T, 57
TTDB_NET_DIR_REQ_COMID
iec61375-2-3.h, 66
TTDB_OP_DIR_INFO_COMID
iec61375-2-3.h, 66
TTDB_STAT_CST_REQ_COMID
iec61375-2-3.h, 66
TTDB_TRN_DIR_REQ_COMID
iec61375-2-3.h, 67
TTI_CACHED_CONSISTS
tau_tti.c, 114
tau_DNRstatus
tau_dnr.c, 85
tau_dnr.h, 91
tau_addr2Uri
tau_dnr.c, 84
tau_dnr.h, 89
tau_calcDatasetSize
tau_marshall.c, 97
tau_marshall.h, 104
tau_calcDatasetSizeByComId
tau_marshall.c, 98
tau_marshall.h, 105
tau_cstinfo.c, 67
cstInfoGetPropSize, 68
tau_ctrl.c, 69
tau_getEcspStat, 71
tau_initEcspCtrl, 71
tau_requestEcspConfirm, 73
tau_setEcspCtrl, 73
tau_terminateEcspCtrl, 74
tau_ctrl.h, 74
tau_getEcspStat, 77
tau_initEcspCtrl, 77
tau_requestEcspConfirm, 78
tau_setEcspCtrl, 78
tau_terminateEcspCtrl, 79
tau_ctrl_types.h, 79
tau_deInitDnr
tau_dnr.c, 84
tau_dnr.h, 90
tau_deInitTTI
tau_tti.c, 114
tau_tti.h, 126
tau_dnr.c, 82
tau_DNRstatus, 85
tau_addr2Uri, 84
tau_deInitDnr, 84
tau_getOwnAddr, 85
tau_initDnr, 86
tau_uri2Addr, 86
tau_dnr.h, 87
tau_DNRstatus, 91
tau_addr2Uri, 89
tau_deInitDnr, 90
tau_getOwnAddr, 91
tau_initDnr, 91
tau_uri2Addr, 92
tau_dnr_types.h, 93
tau_freeTelegrams
tau_xml.c, 141
tau_xml.h, 149
tau_freeXmlDatasetConfig
tau_xml.c, 141
tau_xml.h, 149
tau_freeXmlDoc
tau_xml.c, 142
tau_xml.h, 150
tau_getCstFctCnt
Generated by Doxygen

372 INDEX
tau_tti.c, 115
tau_tti.h, 127
tau_getCstFctInfo
tau_tti.c, 115
tau_tti.h, 127
tau_getCstInfo
tau_tti.c, 116
tau_tti.h, 128
tau_getCstVehCnt
tau_tti.c, 116
tau_tti.h, 128
tau_getEcspStat
tau_ctrl.c, 71
tau_ctrl.h, 77
tau_getOpTrDirectory
tau_tti.c, 117
tau_tti.h, 129
tau_getOpTrnDirectoryStatusInfo
tau_tti.c, 117
tau_tti.h, 130
tau_getOwnAddr
tau_dnr.c, 85
tau_dnr.h, 91
tau_getOwnIds
tau_tti.c, 117
tau_tti.h, 130
tau_getStaticCstInfo
tau_tti.c, 118
tau_tti.h, 131
tau_getTTI
tau_tti.c, 120
tau_tti.h, 133
tau_getTrDirectory
tau_tti.c, 118
tau_tti.h, 131
tau_getTrnCstCnt
tau_tti.c, 119
tau_tti.h, 132
tau_getTrnVehCnt
tau_tti.c, 119
tau_tti.h, 132
tau_getVehInfo
tau_tti.c, 120
tau_tti.h, 134
tau_getVehOrient
tau_tti.c, 121
tau_tti.h, 134
tau_initDnr
tau_dnr.c, 86
tau_dnr.h, 91
tau_initEcspCtrl
tau_ctrl.c, 71
tau_ctrl.h, 77
tau_initMarshall
tau_marshall.c, 99
tau_marshall.h, 106
tau_initTTIaccess
tau_tti.c, 121
tau_tti.h, 135
tau_marshall
tau_marshall.c, 99
tau_marshall.h, 107
tau_marshall.c, 96
tau_calcDatasetSize, 97
tau_calcDatasetSizeByComId, 98
tau_initMarshall, 99
tau_marshall, 99
tau_marshallDs, 100
tau_unmarshall, 101
tau_unmarshallDs, 101
tau_marshall.h, 102
tau_calcDatasetSize, 104
tau_calcDatasetSizeByComId, 105
tau_initMarshall, 106
tau_marshall, 107
tau_marshallDs, 108
tau_unmarshall, 110
tau_unmarshallDs, 111
tau_marshallDs
tau_marshall.c, 100
tau_marshall.h, 108
tau_prepareXmlDoc
tau_xml.c, 142
tau_xml.h, 150
tau_readXmlDatasetConfig
tau_xml.c, 142
tau_xml.h, 151
tau_readXmlDeviceConfig
tau_xml.c, 144
tau_xml.h, 151
tau_readXmlInterfaceConfig
tau_xml.c, 144
tau_xml.h, 152
tau_requestEcspConfirm
tau_ctrl.c, 73
tau_ctrl.h, 78
tau_setEcspCtrl
tau_ctrl.c, 73
tau_ctrl.h, 78
tau_terminateEcspCtrl
tau_ctrl.c, 74
tau_ctrl.h, 79
tau_tti.c, 112
TTI_CACHED_CONSISTS, 114
tau_deInitTTI, 114
tau_getCstFctCnt, 115
tau_getCstFctInfo, 115
tau_getCstInfo, 116
tau_getCstVehCnt, 116
tau_getOpTrDirectory, 117
tau_getOpTrnDirectoryStatusInfo, 117
tau_getOwnIds, 117
tau_getStaticCstInfo, 118
tau_getTTI, 120
tau_getTrDirectory, 118
tau_getTrnCstCnt, 119
Generated by Doxygen

INDEX 373
tau_getTrnVehCnt, 119
tau_getVehInfo, 120
tau_getVehOrient, 121
tau_initTTIaccess, 121
tau_tti.h, 123
tau_deInitTTI, 126
tau_getCstFctCnt, 127
tau_getCstFctInfo, 127
tau_getCstInfo, 128
tau_getCstVehCnt, 128
tau_getOpTrDirectory, 129
tau_getOpTrnDirectoryStatusInfo, 130
tau_getOwnIds, 130
tau_getStaticCstInfo, 131
tau_getTTI, 133
tau_getTrDirectory, 131
tau_getTrnCstCnt, 132
tau_getTrnVehCnt, 132
tau_getVehInfo, 134
tau_getVehOrient, 134
tau_initTTIaccess, 135
tau_tti_types.h, 136
tau_unmarshall
tau_marshall.c, 101
tau_marshall.h, 110
tau_unmarshallDs
tau_marshall.c, 101
tau_marshall.h, 111
tau_uri2Addr
tau_dnr.c, 86
tau_dnr.h, 92
tau_xml.c, 139
TRDP_SDT_DEFAULT_CMTHR, 141
tau_freeTelegrams, 141
tau_freeXmlDatasetConfig, 141
tau_freeXmlDoc, 142
tau_prepareXmlDoc, 142
tau_readXmlDatasetConfig, 142
tau_readXmlDeviceConfig, 144
tau_readXmlInterfaceConfig, 144
tau_xml.h, 145
TRDP_DBG_DEFAULT, 148
TRDP_EXCHG_OPTION_T, 148
tau_freeTelegrams, 149
tau_freeXmlDatasetConfig, 149
tau_freeXmlDoc, 150
tau_prepareXmlDoc, 150
tau_readXmlDatasetConfig, 151
tau_readXmlDeviceConfig, 151
tau_readXmlInterfaceConfig, 152
tcnUriCnt
TRDP_DNS_REPLY, 32
TRDP_DNS_REQUEST, 33
timeout
TRDP_SUBS_STATISTICS_T, 55
tlc_closeSession
trdp_if.c, 157
trdp_if_light.h, 179
tlc_configSession
trdp_if.c, 158
trdp_if_light.h, 180
tlc_freeBuf
trdp_if_light.h, 181
tlc_getETBTopoCount
trdp_if.c, 158
trdp_if_light.h, 181
tlc_getInterval
trdp_if.c, 159
trdp_if_light.h, 181
tlc_getJoinStatistics
trdp_if_light.h, 182
trdp_stats.c, 247
tlc_getOpTrainTopoCount
trdp_if.c, 159
trdp_if_light.h, 183
tlc_getOwnIpAddress
trdp_if.c, 159
trdp_if_light.h, 183
tlc_getPubStatistics
trdp_if_light.h, 184
trdp_stats.c, 248
tlc_getRedStatistics
trdp_if_light.h, 185
trdp_stats.c, 248
tlc_getStatistics
trdp_if_light.h, 185
trdp_stats.c, 249
tlc_getSubsStatistics
trdp_if_light.h, 186
trdp_stats.c, 249
tlc_getTcpListStatistics
trdp_if_light.h, 187
tlc_getUdpListStatistics
trdp_if_light.h, 187
tlc_getVersion
trdp_if.c, 160
trdp_if_light.h, 188
tlc_getVersionString
trdp_if.c, 160
trdp_if_light.h, 188
tlc_init
trdp_if.c, 160
trdp_if_light.h, 189
tlc_openSession
trdp_if.c, 161
trdp_if_light.h, 190
tlc_process
trdp_if.c, 162
trdp_if_light.h, 190
tlc_reinitSession
trdp_if.c, 162
trdp_if_light.h, 191
tlc_resetStatistics
trdp_if_light.h, 191
trdp_stats.c, 250
tlc_setETBTopoCount
Generated by Doxygen

374 INDEX
trdp_if.c, 163
trdp_if_light.h, 192
tlc_setOpTrainTopoCount
trdp_if.c, 163
trdp_if_light.h, 192
tlc_terminate
trdp_if.c, 164
trdp_if_light.h, 193
tlm_abortSession
trdp_if_light.h, 193
tlm_addListener
trdp_if_light.h, 194
tlm_confirm
trdp_if_light.h, 195
tlm_delListener
trdp_if_light.h, 195
tlm_notify
trdp_if_light.h, 196
tlm_readdListener
trdp_if_light.h, 197
tlm_reply
trdp_if_light.h, 197
tlm_replyQuery
trdp_if_light.h, 198
tlm_request
trdp_if_light.h, 199
tlp_get
trdp_if.c, 164
trdp_if_light.h, 200
tlp_getRedundant
trdp_if.c, 165
trdp_if_light.h, 201
tlp_publish
trdp_if.c, 165
trdp_if_light.h, 201
tlp_put
trdp_if.c, 166
trdp_if_light.h, 202
tlp_republish
trdp_if.c, 167
trdp_if_light.h, 203
tlp_request
trdp_if.c, 167
trdp_if_light.h, 204
tlp_resubscribe
trdp_if.c, 168
trdp_if_light.h, 206
tlp_setRedundant
trdp_if.c, 169
trdp_if_light.h, 207
tlp_subscribe
trdp_if.c, 169
trdp_if_light.h, 207
tlp_unpublish
trdp_if.c, 170
trdp_if_light.h, 209
tlp_unsubscribe
trdp_if.c, 171
trdp_if_light.h, 210
toBehav
TRDP_SUBS_STATISTICS_T, 55
trdp_UpdateStats
trdp_stats.c, 251
trdp_XMLClose
trdp_xml.c, 291
trdp_xml.h, 297
trdp_XMLCountStartTag
trdp_xml.c, 292
trdp_xml.h, 297
trdp_XMLEnter
trdp_xml.c, 292
trdp_xml.h, 298
trdp_XMLGetAttribute
trdp_xml.c, 292
trdp_xml.h, 298
trdp_XMLLeave
trdp_xml.c, 293
trdp_xml.h, 298
trdp_XMLOpen
trdp_xml.c, 293
trdp_xml.h, 299
trdp_XMLRewind
trdp_xml.c, 294
trdp_xml.h, 299
trdp_XMLSeekStartTag
trdp_xml.c, 294
trdp_xml.h, 299
trdp_XMLSeekStartTagAny
trdp_xml.c, 294
trdp_xml.h, 300
trdp_checkSequenceCounter
trdp_utils.c, 267
trdp_utils.h, 279
trdp_dllmain.c, 153
trdp_findMCjoins
trdp_utils.c, 268
trdp_utils.h, 280
trdp_getCurrentMaxSocketCnt
trdp_utils.c, 268
trdp_utils.h, 280
trdp_getSeqCnt
trdp_utils.c, 268
trdp_utils.h, 281
trdp_if.c, 154
tlc_closeSession, 157
tlc_configSession, 158
tlc_getETBTopoCount, 158
tlc_getInterval, 159
tlc_getOpTrainTopoCount, 159
tlc_getOwnIpAddress, 159
tlc_getVersion, 160
tlc_getVersionString, 160
tlc_init, 160
tlc_openSession, 161
tlc_process, 162
tlc_reinitSession, 162
Generated by Doxygen

INDEX 375
tlc_setETBTopoCount, 163
tlc_setOpTrainTopoCount, 163
tlc_terminate, 164
tlp_get, 164
tlp_getRedundant, 165
tlp_publish, 165
tlp_put, 166
tlp_republish, 167
tlp_request, 167
tlp_resubscribe, 168
tlp_setRedundant, 169
tlp_subscribe, 169
tlp_unpublish, 170
tlp_unsubscribe, 171
trdp_isValidSession, 171
trdp_sessionQueue, 172
trdp_if.h, 172
trdp_isValidSession, 174
trdp_sessionQueue, 175
trdp_if_light.h, 175
tlc_closeSession, 179
tlc_configSession, 180
tlc_freeBuf, 181
tlc_getETBTopoCount, 181
tlc_getInterval, 181
tlc_getJoinStatistics, 182
tlc_getOpTrainTopoCount, 183
tlc_getOwnIpAddress, 183
tlc_getPubStatistics, 184
tlc_getRedStatistics, 185
tlc_getStatistics, 185
tlc_getSubsStatistics, 186
tlc_getTcpListStatistics, 187
tlc_getUdpListStatistics, 187
tlc_getVersion, 188
tlc_getVersionString, 188
tlc_init, 189
tlc_openSession, 190
tlc_process, 190
tlc_reinitSession, 191
tlc_resetStatistics, 191
tlc_setETBTopoCount, 192
tlc_setOpTrainTopoCount, 192
tlc_terminate, 193
tlm_abortSession, 193
tlm_addListener, 194
tlm_confirm, 195
tlm_delListener, 195
tlm_notify, 196
tlm_readdListener, 197
tlm_reply, 197
tlm_replyQuery, 198
tlm_request, 199
tlp_get, 200
tlp_getRedundant, 201
tlp_publish, 201
tlp_put, 202
tlp_republish, 203
tlp_request, 204
tlp_resubscribe, 206
tlp_setRedundant, 207
tlp_subscribe, 207
tlp_unpublish, 209
tlp_unsubscribe, 210
trdp_initSockets
trdp_utils.c, 269
trdp_utils.h, 281
trdp_initStats
trdp_stats.c, 250
trdp_stats.h, 253
trdp_initUncompletedTCP
trdp_utils.h, 282
trdp_isAddressed
trdp_utils.c, 269
trdp_utils.h, 282
trdp_isInIPrange
trdp_utils.c, 270
trdp_utils.h, 282
trdp_isValidSession
trdp_if.c, 171
trdp_if.h, 174
trdp_mdCall
trdp_mdcom.c, 213
trdp_mdcom.h, 220
trdp_mdCheckListenSocks
trdp_mdcom.c, 214
trdp_mdcom.h, 221
trdp_mdCheckPending
trdp_mdcom.c, 214
trdp_mdcom.h, 221
trdp_mdCheckTimeouts
trdp_mdcom.c, 214
trdp_mdcom.h, 221
trdp_mdConfirm
trdp_mdcom.c, 215
trdp_mdcom.h, 222
trdp_mdFreeSession
trdp_mdcom.c, 215
trdp_mdcom.h, 222
trdp_mdGetTCPSocket
trdp_mdcom.c, 216
trdp_mdcom.h, 223
trdp_mdReply
trdp_mdcom.c, 216
trdp_mdcom.h, 223
trdp_mdSend
trdp_mdcom.c, 217
trdp_mdcom.h, 224
trdp_mdcom.c, 210
trdp_mdCall, 213
trdp_mdCheckListenSocks, 214
trdp_mdCheckPending, 214
trdp_mdCheckTimeouts, 214
trdp_mdConfirm, 215
trdp_mdFreeSession, 215
trdp_mdGetTCPSocket, 216
Generated by Doxygen

376 INDEX
trdp_mdReply, 216
trdp_mdSend, 217
trdp_mdcom.h, 217
trdp_mdCall, 220
trdp_mdCheckListenSocks, 221
trdp_mdCheckPending, 221
trdp_mdCheckTimeouts, 221
trdp_mdConfirm, 222
trdp_mdFreeSession, 222
trdp_mdGetTCPSocket, 223
trdp_mdReply, 223
trdp_mdSend, 224
trdp_packetSizeMD
trdp_utils.c, 270
trdp_utils.h, 284
trdp_packetSizePD
trdp_utils.c, 270
trdp_utils.h, 284
trdp_pdCheck
trdp_pdcom.c, 227
trdp_pdcom.h, 235
trdp_pdCheckListenSocks
trdp_pdcom.c, 227
trdp_pdcom.h, 235
trdp_pdCheckPending
trdp_pdcom.c, 228
trdp_pdcom.h, 236
trdp_pdDistribute
trdp_pdcom.c, 228
trdp_pdcom.h, 236
trdp_pdHandleTimeOuts
trdp_pdcom.c, 229
trdp_pdcom.h, 237
trdp_pdInit
trdp_pdcom.c, 229
trdp_pdcom.h, 238
trdp_pdPrepareStats
trdp_stats.c, 251
trdp_stats.h, 254
trdp_pdPut
trdp_pdcom.c, 230
trdp_pdcom.h, 238
trdp_pdReceive
trdp_pdcom.c, 231
trdp_pdcom.h, 239
trdp_pdSend
trdp_pdcom.c, 231
trdp_pdcom.h, 240
trdp_pdSendQueued
trdp_pdcom.c, 232
trdp_pdcom.h, 240
trdp_pdUpdate
trdp_pdcom.c, 232
trdp_pdcom.h, 241
trdp_pdcom.c, 224
trdp_pdCheck, 227
trdp_pdCheckListenSocks, 227
trdp_pdCheckPending, 228
trdp_pdDistribute, 228
trdp_pdHandleTimeOuts, 229
trdp_pdInit, 229
trdp_pdPut, 230
trdp_pdReceive, 231
trdp_pdSend, 231
trdp_pdSendQueued, 232
trdp_pdUpdate, 232
trdp_pdcom.h, 233
trdp_pdCheck, 235
trdp_pdCheckListenSocks, 235
trdp_pdCheckPending, 236
trdp_pdDistribute, 236
trdp_pdHandleTimeOuts, 237
trdp_pdInit, 238
trdp_pdPut, 238
trdp_pdReceive, 239
trdp_pdSend, 240
trdp_pdSendQueued, 240
trdp_pdUpdate, 241
trdp_private.h, 241
TRDP_MD_ELE_ST_T, 245
TRDP_SOCK_TYPE_T, 245
trdp_queueAppLast
trdp_utils.c, 271
trdp_utils.h, 285
trdp_queueDelElement
trdp_utils.c, 271
trdp_utils.h, 285
trdp_queueFindComId
trdp_utils.c, 271
trdp_utils.h, 285
trdp_queueFindPubAddr
trdp_utils.c, 273
trdp_utils.h, 286
trdp_queueFindSubAddr
trdp_utils.c, 273
trdp_utils.h, 286
trdp_queueInsFirst
trdp_utils.c, 274
trdp_utils.h, 287
trdp_releaseSocket
trdp_utils.c, 274
trdp_utils.h, 287
trdp_requestSocket
trdp_utils.c, 274
trdp_utils.h, 288
trdp_resetSequenceCounter
trdp_utils.c, 275
trdp_utils.h, 289
trdp_sessionQueue
trdp_if.c, 172
trdp_if.h, 175
trdp_stats.c, 245
tlc_getJoinStatistics, 247
tlc_getPubStatistics, 248
tlc_getRedStatistics, 248
tlc_getStatistics, 249
Generated by Doxygen

INDEX 377
tlc_getSubsStatistics, 249
tlc_resetStatistics, 250
trdp_UpdateStats, 251
trdp_initStats, 250
trdp_pdPrepareStats, 251
trdp_stats.h, 252
trdp_initStats, 253
trdp_pdPrepareStats, 254
trdp_types.h, 254
TRDP_DATA_TYPE_T, 262
TRDP_ERR_T, 263
TRDP_FLAGS_DEFAULT, 260
TRDP_IP_ADDR_T, 260
TRDP_MARSHALL_T, 260
TRDP_MD_CALLBACK_T, 261
TRDP_PD_CALLBACK_T, 261
TRDP_PRINT_DBG_T, 261
TRDP_RED_STATE_T, 264
TRDP_REPLY_STATUS_T, 264
TRDP_TIME_T, 261
TRDP_TO_BEHAVIOR_T, 264
TRDP_UNMARSHALL_T, 261
trdp_utils.c, 265
trdp_checkSequenceCounter, 267
trdp_findMCjoins, 268
trdp_getCurrentMaxSocketCnt, 268
trdp_getSeqCnt, 268
trdp_initSockets, 269
trdp_isAddressed, 269
trdp_isInIPrange, 270
trdp_packetSizeMD, 270
trdp_packetSizePD, 270
trdp_queueAppLast, 271
trdp_queueDelElement, 271
trdp_queueFindComId, 271
trdp_queueFindPubAddr, 273
trdp_queueFindSubAddr, 273
trdp_queueInsFirst, 274
trdp_releaseSocket, 274
trdp_requestSocket, 274
trdp_resetSequenceCounter, 275
trdp_validTopoCounters, 276
trdp_utils.h, 276
trdp_checkSequenceCounter, 279
trdp_findMCjoins, 280
trdp_getCurrentMaxSocketCnt, 280
trdp_getSeqCnt, 281
trdp_initSockets, 281
trdp_initUncompletedTCP, 282
trdp_isAddressed, 282
trdp_isInIPrange, 282
trdp_packetSizeMD, 284
trdp_packetSizePD, 284
trdp_queueAppLast, 285
trdp_queueDelElement, 285
trdp_queueFindComId, 285
trdp_queueFindPubAddr, 286
trdp_queueFindSubAddr, 286
trdp_queueInsFirst, 287
trdp_releaseSocket, 287
trdp_requestSocket, 288
trdp_resetSequenceCounter, 289
trdp_validTopoCounters, 289
trdp_validTopoCounters
trdp_utils.c, 276
trdp_utils.h, 289
trdp_xml.c, 290
trdp_XMLClose, 291
trdp_XMLCountStartTag, 292
trdp_XMLEnter, 292
trdp_XMLGetAttribute, 292
trdp_XMLLeave, 293
trdp_XMLOpen, 293
trdp_XMLRewind, 294
trdp_XMLSeekStartTag, 294
trdp_XMLSeekStartTagAny, 294
trdp_xml.h, 295
trdp_XMLClose, 297
trdp_XMLCountStartTag, 297
trdp_XMLEnter, 298
trdp_XMLGetAttribute, 298
trdp_XMLLeave, 298
trdp_XMLOpen, 299
trdp_XMLRewind, 299
trdp_XMLSeekStartTag, 299
trdp_XMLSeekStartTagAny, 300
trnCstNo
GNU_PACKED, 20
trnDirState
GNU_PACKED, 20
trnId
GNU_PACKED, 20
trnNetDir
GNU_PACKED, 21
trnOperator
GNU_PACKED, 21
trnTopoCnt
GNU_PACKED, 21
trnVehNo
GNU_PACKED, 21
usage
TRDP_SOCKETS, 52
VOS_ERR_T
vos_types.h, 355
VOS_LOG_T
vos_types.h, 356
VOS_MAX_ERR_STR_SIZE
vos_utils.h, 363
VOS_MAX_FRMT_SIZE
vos_utils.h, 363
VOS_MAX_PRNT_STR_SIZE
vos_utils.h, 363
VOS_MAX_SOCKET_CNT
vos_sock.h, 325
VOS_MEM_BLOCKSIZES
Generated by Doxygen

378 INDEX
vos_mem.h, 311
VOS_MEM_PREALLOCATE
vos_mem.h, 312
VOS_PRINT_DBG_T
vos_types.h, 355
VOS_SOCK_OPT_T, 57
VOS_TIMEVAL_T
vos_types.h, 355
VOS_TTL_MULTICAST
vos_sock.h, 325
VOS_VERSION_T, 58
vehId
GNU_PACKED, 21
TRDP_VEHICLE_INFO_T, 57
vehOrient
GNU_PACKED, 21
version
GNU_PACKED, 22
vos_addTime
vos_thread.h, 342
vos_bsearch
vos_mem.c, 302
vos_mem.h, 312
vos_clearTime
vos_thread.h, 342
vos_cmpTime
vos_thread.h, 342
vos_crc32
vos_utils.c, 358
vos_utils.h, 363
vos_cyclicThread
vos_thread.h, 344
vos_determineBindAddr
vos_sock.h, 325
vos_divTime
vos_thread.h, 344
vos_dottedIP
vos_sock.h, 326
vos_getErrorString
vos_utils.c, 358
vos_utils.h, 364
vos_getInterfaces
vos_sock.h, 326
vos_getTime
vos_thread.h, 345
vos_getTimeStamp
vos_thread.h, 345
vos_getUuid
vos_thread.h, 345
vos_getVersion
vos_utils.c, 359
vos_utils.h, 364
vos_getVersionString
vos_utils.c, 359
vos_utils.h, 365
vos_htonl
vos_sock.h, 327
vos_htonll
vos_sock.h, 327
vos_htons
vos_sock.h, 327
vos_init
vos_utils.c, 359
vos_utils.h, 365
vos_ipDotted
vos_sock.h, 328
vos_isMulticast
vos_sock.h, 328
vos_mem.c, 300
vos_bsearch, 302
vos_memAlloc, 303
vos_memCount, 303
vos_memDelete, 304
vos_memFree, 304
vos_memInit, 304
vos_qsort, 305
vos_queueCreate, 305
vos_queueDestroy, 306
vos_queueReceive, 306
vos_queueSend, 307
vos_strncat, 308
vos_strncpy, 308
vos_strnicmp, 308
vos_mem.h, 309
VOS_MEM_BLOCKSIZES, 311
VOS_MEM_PREALLOCATE, 312
vos_bsearch, 312
vos_memAlloc, 313
vos_memCount, 313
vos_memDelete, 314
vos_memFree, 314
vos_memInit, 314
vos_qsort, 315
vos_queueCreate, 316
vos_queueDestroy, 316
vos_queueReceive, 317
vos_queueSend, 317
vos_strncat, 318
vos_strncpy, 318
vos_strnicmp, 319
vos_memAlloc
vos_mem.c, 303
vos_mem.h, 313
vos_memCount
vos_mem.c, 303
vos_mem.h, 313
vos_memDelete
vos_mem.c, 304
vos_mem.h, 314
vos_memFree
vos_mem.c, 304
vos_mem.h, 314
vos_memInit
vos_mem.c, 304
vos_mem.h, 314
vos_mulTime
Generated by Doxygen

INDEX 379
vos_thread.h, 345
vos_mutexCreate
vos_thread.h, 346
vos_mutexDelete
vos_thread.h, 346
vos_mutexLock
vos_thread.h, 346
vos_mutexTryLock
vos_thread.h, 347
vos_mutexUnlock
vos_thread.h, 347
vos_netIfUp
vos_sock.h, 328
vos_ntohl
vos_sock.h, 329
vos_ntohll
vos_sock.h, 329
vos_ntohs
vos_sock.h, 330
vos_qsort
vos_mem.c, 305
vos_mem.h, 315
vos_queueCreate
vos_mem.c, 305
vos_mem.h, 316
vos_queueDestroy
vos_mem.c, 306
vos_mem.h, 316
vos_queueReceive
vos_mem.c, 306
vos_mem.h, 317
vos_queueSend
vos_mem.c, 307
vos_mem.h, 317
vos_sc32
vos_utils.c, 360
vos_utils.h, 366
vos_select
vos_sock.h, 330
vos_semaCreate
vos_thread.h, 348
vos_semaDelete
vos_thread.h, 348
vos_semaGive
vos_thread.h, 348
vos_semaTake
vos_thread.h, 349
vos_shared_mem.h, 319
vos_sharedClose, 321
vos_sharedOpen, 321
vos_sharedClose
vos_shared_mem.h, 321
vos_sharedOpen
vos_shared_mem.h, 321
vos_sock.h, 322
VOS_MAX_SOCKET_CNT, 325
VOS_TTL_MULTICAST, 325
vos_determineBindAddr, 325
vos_dottedIP, 326
vos_getInterfaces, 326
vos_htonl, 327
vos_htonll, 327
vos_htons, 327
vos_ipDotted, 328
vos_isMulticast, 328
vos_netIfUp, 328
vos_ntohl, 329
vos_ntohll, 329
vos_ntohs, 330
vos_select, 330
vos_sockAccept, 330
vos_sockBind, 331
vos_sockClose, 331
vos_sockConnect, 332
vos_sockGetMAC, 332
vos_sockInit, 333
vos_sockJoinMC, 333
vos_sockLeaveMC, 333
vos_sockListen, 334
vos_sockOpenTCP, 334
vos_sockOpenUDP, 335
vos_sockReceiveTCP, 335
vos_sockReceiveUDP, 336
vos_sockSendTCP, 337
vos_sockSendUDP, 337
vos_sockSetMulticastIf, 338
vos_sockSetOptions, 338
vos_sockTerm, 339
vos_sockAccept
vos_sock.h, 330
vos_sockBind
vos_sock.h, 331
vos_sockClose
vos_sock.h, 331
vos_sockConnect
vos_sock.h, 332
vos_sockGetMAC
vos_sock.h, 332
vos_sockInit
vos_sock.h, 333
vos_sockJoinMC
vos_sock.h, 333
vos_sockLeaveMC
vos_sock.h, 333
vos_sockListen
vos_sock.h, 334
vos_sockOpenTCP
vos_sock.h, 334
vos_sockOpenUDP
vos_sock.h, 335
vos_sockReceiveTCP
vos_sock.h, 335
vos_sockReceiveUDP
vos_sock.h, 336
vos_sockSendTCP
vos_sock.h, 337
Generated by Doxygen

380 INDEX
vos_sockSendUDP
vos_sock.h, 337
vos_sockSetMulticastIf
vos_sock.h, 338
vos_sockSetOptions
vos_sock.h, 338
vos_sockTerm
vos_sock.h, 339
vos_strncat
vos_mem.c, 308
vos_mem.h, 318
vos_strncpy
vos_mem.c, 308
vos_mem.h, 318
vos_strnicmp
vos_mem.c, 308
vos_mem.h, 319
vos_subTime
vos_thread.h, 349
vos_terminate
vos_utils.c, 360
vos_utils.h, 366
vos_thread.h, 339
vos_addTime, 342
vos_clearTime, 342
vos_cmpTime, 342
vos_cyclicThread, 344
vos_divTime, 344
vos_getTime, 345
vos_getTimeStamp, 345
vos_getUuid, 345
vos_mulTime, 345
vos_mutexCreate, 346
vos_mutexDelete, 346
vos_mutexLock, 346
vos_mutexTryLock, 347
vos_mutexUnlock, 347
vos_semaCreate, 348
vos_semaDelete, 348
vos_semaGive, 348
vos_semaTake, 349
vos_subTime, 349
vos_threadCreate, 349
vos_threadDelay, 350
vos_threadInit, 351
vos_threadIsActive, 351
vos_threadSelf, 351
vos_threadTerm, 352
vos_threadTerminate, 352
vos_threadCreate
vos_thread.h, 349
vos_threadDelay
vos_thread.h, 350
vos_threadInit
vos_thread.h, 351
vos_threadIsActive
vos_thread.h, 351
vos_threadSelf
vos_thread.h, 351
vos_threadTerm
vos_thread.h, 352
vos_threadTerminate
vos_thread.h, 352
vos_types.h, 352
VOS_ERR_T, 355
VOS_LOG_T, 356
VOS_PRINT_DBG_T, 355
VOS_TIMEVAL_T, 355
vos_utils.c, 356
vos_crc32, 358
vos_getErrorString, 358
vos_getVersion, 359
vos_getVersionString, 359
vos_init, 359
vos_sc32, 360
vos_terminate, 360
vos_utils.h, 361
INITFCS, 363
VOS_MAX_ERR_STR_SIZE, 363
VOS_MAX_FRMT_SIZE, 363
VOS_MAX_PRNT_STR_SIZE, 363
vos_crc32, 363
vos_getErrorString, 364
vos_getVersion, 364
vos_getVersionString, 365
vos_init, 365
vos_sc32, 366
vos_terminate, 366
Generated by Doxygen