libptpmgmt  1.3
libptpmgmt library that provides the functionality of linuxptp pmc
types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-3.0-or-later
2  SPDX-FileCopyrightText: Copyright © 2021 Erez Geva <ErezGeva2@gmail.com> */
3 
13 #ifndef __PTPMGMT_C_TYPES_H
14 #define __PTPMGMT_C_TYPES_H
15 
16 #include "name.h"
17 #ifdef __PTPMGMT_HAVE_SYS_TYPES_H
18 #include <sys/types.h>
19 #else
21 typedef long ssize_t;
23 #endif /* __PTPMGMT_HAVE_SYS_TYPES_H */
24 #include "c/mngIds.h"
25 
26 #ifndef INT48_MIN
28 static const int64_t INT48_MIN = -INT64_C(0x7fffffffffff) - 1;
29 #endif
30 #ifndef INT48_MAX
32 static const int64_t INT48_MAX = INT64_C(0x7fffffffffff);
33 #endif
34 #ifndef UINT48_MAX
36 static const uint64_t UINT48_MAX = UINT64_C(0xffffffffffff);
37 #endif
38 
40 typedef uint8_t Nibble_t;
42 typedef uint8_t UInteger8_t;
44 typedef uint16_t UInteger16_t;
46 typedef uint32_t UInteger32_t;
48 typedef uint64_t UInteger48_t;
50 static const size_t ptpmgmt_sizeof_UInteger48_t = 6;
52 typedef uint64_t UInteger64_t;
54 typedef int8_t Integer8_t;
56 typedef int16_t Integer16_t;
58 typedef int32_t Integer32_t;
60 typedef int64_t Integer48_t;
62 static const size_t ptpmgmt_sizeof_Integer48_t = 6;
64 typedef int64_t Integer64_t;
66 typedef uint8_t Octet_t;
68 typedef double Float64_t;
70 typedef long double float_seconds;
72 typedef long double float_nanoseconds;
73 
114 };
119  /* Event messages */
128  /* General messages */
141 };
165  /* Obsolete valuse 2000, 2001, 2002, 2003 */
173  PTPMGMT_L1_SYNC = 0x8001,
187  PTPMGMT_TLV_PAD = 0x8008,
193 };
201 };
211 };
222 };
231 };
262 };
273 };
277  PTPMGMT_GNSS = 0x20,
278  PTPMGMT_GPS = 0x20,
281  PTPMGMT_PTP = 0x40,
282  PTPMGMT_NTP = 0x50,
284  PTPMGMT_OTHER = 0x90,
286 };
301 };
322 };
329 };
347 };
363 };
374 };
381 };
383 enum {
385  PTPMGMT_F_LI_61 = (1 << 0),
387  PTPMGMT_F_LI_59 = (1 << 1),
389  PTPMGMT_F_UTCV = (1 << 2),
391  PTPMGMT_F_PTP = (1 << 3),
393  PTPMGMT_F_TTRA = (1 << 4),
396  PTPMGMT_F_FTRA = (1 << 5),
397 };
401 };
406 };
409  Octet_t v[8];
410 };
415 };
426  uint8_t *addressField;
427 };
433 };
442  uint8_t lengthField;
443  const char *textField;
444 };
447  uint16_t faultRecordLength;
453 };
458 };
461  uint16_t value;
462  uint8_t scope;
463  uint8_t allowed;
472  ssize_t size;
473 };
474 
487 };
488 
493 
500 
504  void *_this;
507  uint8_t domainNumber;
508  uint8_t boundaryHops;
509  uint8_t minorVersion;
510  bool isUnicast;
515  bool useZeroGet;
518  bool rcvSMPTEOrg;
523  bool sendAuth;
529  uint8_t rcvAuth;
560 };
565  uint8_t selected;
571 };
572 
573 #endif /* __PTPMGMT_C_TYPES_H */
Management IDs enumerator.
ptpmgmt_linuxptpTimeStamp_e
Definition: types.h:351
@ PTPMGMT_TS_P2P1STEP
Definition: types.h:362
@ PTPMGMT_TS_ONESTEP
Definition: types.h:360
@ PTPMGMT_TS_LEGACY_HW
Definition: types.h:358
@ PTPMGMT_TS_HARDWARE
Definition: types.h:356
@ PTPMGMT_TS_SOFTWARE
Definition: types.h:353
ptpmgmt_implementSpecific_e
Definition: types.h:326
@ ptpmgmt_linuxptp
Definition: types.h:328
@ ptpmgmt_noImplementSpecific
Definition: types.h:327
ptpmgmt_linuxptpPowerProfileVersion_e
Definition: types.h:367
@ PTPMGMT_IEEE_C37_238_VERSION_NONE
Definition: types.h:369
@ PTPMGMT_IEEE_C37_238_VERSION_2011
Definition: types.h:371
@ PTPMGMT_IEEE_C37_238_VERSION_2017
Definition: types.h:373
ptpmgmt_faultRecord_e
Definition: types.h:264
@ ptpmgmt_F_Alert
Definition: types.h:266
@ ptpmgmt_F_Error
Definition: types.h:268
@ ptpmgmt_F_Warning
Definition: types.h:269
@ ptpmgmt_F_Informational
Definition: types.h:271
@ ptpmgmt_F_Critical
Definition: types.h:267
@ ptpmgmt_F_Emergency
Definition: types.h:265
@ ptpmgmt_F_Debug
Definition: types.h:272
@ ptpmgmt_F_Notice
Definition: types.h:270
ptpmgmt_networkProtocol_e
Definition: types.h:224
@ ptpmgmt_IEEE_802_3
Definition: types.h:227
@ ptpmgmt_ControlNet
Definition: types.h:229
@ ptpmgmt_UDP_IPv6
Definition: types.h:226
@ ptpmgmt_UDP_IPv4
Definition: types.h:225
@ ptpmgmt_PROFINET
Definition: types.h:230
@ ptpmgmt_DeviceNet
Definition: types.h:228
ptpmgmt_MNG_PARSE_ERROR_e
Definition: types.h:75
@ PTPMGMT_MNG_PARSE_ERROR_HEADER
Definition: types.h:99
@ PTPMGMT_MNG_PARSE_ERROR_TOO_SMALL
Definition: types.h:93
@ PTPMGMT_MNG_PARSE_ERROR_SIZE_MISS
Definition: types.h:91
@ PTPMGMT_MNG_PARSE_ERROR_OK
Definition: types.h:77
@ PTPMGMT_MNG_PARSE_ERROR_MISMATCH_TLV
Definition: types.h:89
@ PTPMGMT_MNG_PARSE_ERROR_MEM
Definition: types.h:105
@ PTPMGMT_MNG_PARSE_ERROR_SIG
Definition: types.h:81
@ PTPMGMT_MNG_PARSE_ERROR_SIZE
Definition: types.h:95
@ PTPMGMT_MNG_PARSE_ERROR_VAL
Definition: types.h:97
@ PTPMGMT_MNG_PARSE_ERROR_AUTH
Definition: types.h:107
@ PTPMGMT_MNG_PARSE_ERROR_MSG
Definition: types.h:79
@ PTPMGMT_MNG_PARSE_ERROR_UNSUPPORT
Definition: types.h:103
@ PTPMGMT_MNG_PARSE_ERROR_SMPTE
Definition: types.h:83
@ PTPMGMT_MNG_PARSE_ERROR_AUTH_NONE
Definition: types.h:109
@ PTPMGMT_MNG_PARSE_ERROR_AUTH_WRONG
Definition: types.h:111
@ PTPMGMT_MNG_PARSE_ERROR_AUTH_NOKEY
Definition: types.h:113
@ PTPMGMT_MNG_PARSE_ERROR_INVALID_ID
Definition: types.h:85
@ PTPMGMT_MNG_PARSE_ERROR_INVALID_TLV
Definition: types.h:87
@ PTPMGMT_MNG_PARSE_ERROR_ACTION
Definition: types.h:101
ptpmgmt_MsgParams_RcvAuth_e
Definition: types.h:476
@ PTPMGMT_RCV_AUTH_SIG_ALL
Definition: types.h:483
@ PTPMGMT_RCV_AUTH_ALL
Definition: types.h:484
@ PTPMGMT_RCV_AUTH_MNG
Definition: types.h:479
@ PTPMGMT_RCV_AUTH_IGNORE
Definition: types.h:486
@ PTPMGMT_RCV_AUTH_NONE
Definition: types.h:477
@ PTPMGMT_RCV_AUTH_SIG_LAST
Definition: types.h:481
ptpmgmt_pMsgParams ptpmgmt_MsgParams_alloc()
ptpmgmt_msgType_e
Definition: types.h:118
@ ptpmgmt_Management
Definition: types.h:140
@ ptpmgmt_Pdelay_Resp_Follow_Up
Definition: types.h:134
@ ptpmgmt_Announce
Definition: types.h:136
@ ptpmgmt_Delay_Req
Definition: types.h:123
@ ptpmgmt_Sync
Definition: types.h:121
@ ptpmgmt_Signaling
Definition: types.h:138
@ ptpmgmt_Pdelay_Resp
Definition: types.h:127
@ ptpmgmt_Delay_Resp
Definition: types.h:132
@ ptpmgmt_Follow_Up
Definition: types.h:130
@ ptpmgmt_Pdelay_Req
Definition: types.h:125
ptpmgmt_managementErrorId_e
Definition: types.h:203
@ PTPMGMT_GENERAL_ERROR
Definition: types.h:210
@ PTPMGMT_WRONG_LENGTH
Definition: types.h:206
@ PTPMGMT_NO_SUCH_ID
Definition: types.h:205
@ PTPMGMT_NOT_SETABLE
Definition: types.h:208
@ PTPMGMT_NOT_SUPPORTED
Definition: types.h:209
@ PTPMGMT_WRONG_VALUE
Definition: types.h:207
@ PTPMGMT_RESPONSE_TOO_BIG
Definition: types.h:204
struct ptpmgmt_MsgParams * ptpmgmt_pMsgParams
Definition: types.h:490
ptpmgmt_portState_e
Definition: types.h:288
@ PTPMGMT_UNCALIBRATED
Definition: types.h:298
@ PTPMGMT_PASSIVE
Definition: types.h:297
@ PTPMGMT_FAULTY
Definition: types.h:290
@ PTPMGMT_DISABLED
Definition: types.h:291
@ PTPMGMT_MASTER
Definition: types.h:295
@ PTPMGMT_PRE_TIME_TRANSMITTER
Definition: types.h:294
@ PTPMGMT_TIME_TRANSMITTER
Definition: types.h:296
@ PTPMGMT_SLAVE
Definition: types.h:299
@ PTPMGMT_TIME_RECEIVER
Definition: types.h:300
@ PTPMGMT_LISTENING
Definition: types.h:292
@ PTPMGMT_PRE_MASTER
Definition: types.h:293
@ PTPMGMT_INITIALIZING
Definition: types.h:289
@ PTPMGMT_F_TTRA
Definition: types.h:393
@ PTPMGMT_F_FTRA
Definition: types.h:396
@ PTPMGMT_F_UTCV
Definition: types.h:389
@ PTPMGMT_F_LI_61
Definition: types.h:385
@ PTPMGMT_F_PTP
Definition: types.h:391
@ PTPMGMT_F_LI_59
Definition: types.h:387
ptpmgmt_tlvType_e
Definition: types.h:146
@ PTPMGMT_TLV_PAD
Definition: types.h:187
@ PTPMGMT_ALTERNATE_TIME_OFFSET_INDICATOR
Definition: types.h:164
@ PTPMGMT_ORGANIZATION_EXTENSION
Definition: types.h:152
@ PTPMGMT_SLAVE_RX_SYNC_COMPUTED_DATA
Definition: types.h:181
@ PTPMGMT_SLAVE_TX_EVENT_TIMESTAMPS
Definition: types.h:183
@ PTPMGMT_PATH_TRACE
Definition: types.h:162
@ PTPMGMT_MANAGEMENT_ERROR_STATUS
Definition: types.h:150
@ PTPMGMT_PROTOCOL_ADDRESS
Definition: types.h:177
@ PTPMGMT_L1_SYNC
Definition: types.h:173
@ PTPMGMT_ORGANIZATION_EXTENSION_PROPAGATE
Definition: types.h:167
@ PTPMGMT_ACKNOWLEDGE_CANCEL_UNICAST_TRANSMISSION
Definition: types.h:160
@ PTPMGMT_MANAGEMENT
Definition: types.h:148
@ PTPMGMT_CUMULATIVE_RATE_RATIO
Definition: types.h:185
@ PTPMGMT_SLAVE_RX_SYNC_TIMING_DATA
Definition: types.h:179
@ PTPMGMT_ORGANIZATION_EXTENSION_DO_NOT_PROPAGATE
Definition: types.h:171
@ PTPMGMT_SLAVE_DELAY_TIMING_DATA_NP
Definition: types.h:192
@ PTPMGMT_REQUEST_UNICAST_TRANSMISSION
Definition: types.h:154
@ PTPMGMT_PORT_COMMUNICATION_AVAILABILITY
Definition: types.h:175
@ PTPMGMT_ENHANCED_ACCURACY_METRICS
Definition: types.h:169
@ PTPMGMT_AUTHENTICATION
Definition: types.h:189
@ PTPMGMT_GRANT_UNICAST_TRANSMISSION
Definition: types.h:156
@ PTPMGMT_CANCEL_UNICAST_TRANSMISSION
Definition: types.h:158
ptpmgmt_linuxptpUnicastState_e
Definition: types.h:376
@ PTPMGMT_UC_HAVE_ANN
Definition: types.h:378
@ PTPMGMT_UC_WAIT
Definition: types.h:377
@ PTPMGMT_UC_HAVE_SYDY
Definition: types.h:380
@ PTPMGMT_UC_NEED_SYDY
Definition: types.h:379
ptpmgmt_delayMechanism_e
Definition: types.h:303
@ PTPMGMT_NO_MECHANISM
Definition: types.h:314
@ PTPMGMT_SPECIAL
Definition: types.h:321
@ PTPMGMT_E2E
Definition: types.h:310
@ PTPMGMT_AUTO
Definition: types.h:308
@ PTPMGMT_COMMON_P2P
Definition: types.h:319
@ PTPMGMT_P2P
Definition: types.h:312
ptpmgmt_SMPTEmasterLockingStatus_e
Definition: types.h:331
@ PTPMGMT_SMPTE_LOCKED
Definition: types.h:346
@ PTPMGMT_SMPTE_WARM_LOCKING
Definition: types.h:345
@ PTPMGMT_SMPTE_NOT_IN_USE
Definition: types.h:332
@ PTPMGMT_SMPTE_FREE_RUN
Definition: types.h:333
@ PTPMGMT_SMPTE_COLD_LOCKING
Definition: types.h:339
ptpmgmt_timeSource_e
Definition: types.h:275
@ PTPMGMT_GPS
Definition: types.h:278
@ PTPMGMT_HAND_SET
Definition: types.h:283
@ PTPMGMT_INTERNAL_OSCILLATOR
Definition: types.h:285
@ PTPMGMT_NTP
Definition: types.h:282
@ PTPMGMT_SERIAL_TIME_CODE
Definition: types.h:280
@ PTPMGMT_GNSS
Definition: types.h:277
@ PTPMGMT_PTP
Definition: types.h:281
@ PTPMGMT_OTHER
Definition: types.h:284
@ PTPMGMT_TERRESTRIAL_RADIO
Definition: types.h:279
@ PTPMGMT_ATOMIC_CLOCK
Definition: types.h:276
ptpmgmt_clockAccuracy_e
Definition: types.h:233
@ ptpmgmt_Accurate_within_10ps
Definition: types.h:236
@ ptpmgmt_Accurate_within_100ns
Definition: types.h:244
@ ptpmgmt_Accurate_within_25ns
Definition: types.h:243
@ ptpmgmt_Accurate_within_25ps
Definition: types.h:237
@ ptpmgmt_Accurate_within_25ms
Definition: types.h:255
@ ptpmgmt_Accurate_within_250ns
Definition: types.h:245
@ ptpmgmt_Accurate_within_1ms
Definition: types.h:252
@ ptpmgmt_Accurate_within_2_5ns
Definition: types.h:241
@ ptpmgmt_Accurate_within_10ns
Definition: types.h:242
@ ptpmgmt_Accurate_Unknown
Definition: types.h:261
@ ptpmgmt_Accurate_within_250ms
Definition: types.h:257
@ ptpmgmt_Accurate_within_2_5ps
Definition: types.h:235
@ ptpmgmt_Accurate_within_250us
Definition: types.h:251
@ ptpmgmt_Accurate_within_100ms
Definition: types.h:256
@ ptpmgmt_Accurate_within_2_5ms
Definition: types.h:253
@ ptpmgmt_Accurate_within_100us
Definition: types.h:250
@ ptpmgmt_Accurate_within_250ps
Definition: types.h:239
@ ptpmgmt_Accurate_more_10s
Definition: types.h:260
@ ptpmgmt_Accurate_within_10s
Definition: types.h:259
@ ptpmgmt_Accurate_within_1ps
Definition: types.h:234
@ ptpmgmt_Accurate_within_1s
Definition: types.h:258
@ ptpmgmt_Accurate_within_25us
Definition: types.h:249
@ ptpmgmt_Accurate_within_1us
Definition: types.h:246
@ ptpmgmt_Accurate_within_10us
Definition: types.h:248
@ ptpmgmt_Accurate_within_1ns
Definition: types.h:240
@ ptpmgmt_Accurate_within_100ps
Definition: types.h:238
@ ptpmgmt_Accurate_within_10ms
Definition: types.h:254
@ ptpmgmt_Accurate_within_2_5us
Definition: types.h:247
ptpmgmt_clockType_e
Definition: types.h:216
@ ptpmgmt_e2eTransparentClock
Definition: types.h:220
@ ptpmgmt_ordinaryClock
Definition: types.h:217
@ ptpmgmt_boundaryClock
Definition: types.h:218
@ ptpmgmt_managementClock
Definition: types.h:221
@ ptpmgmt_p2pTransparentClock
Definition: types.h:219
const struct ptpmgmt_MsgParams * ptpmgmt_cpMsgParams
Definition: types.h:492
ptpmgmt_actionField_e
Definition: types.h:195
@ PTPMGMT_RESPONSE
Definition: types.h:198
@ PTPMGMT_GET
Definition: types.h:196
@ PTPMGMT_SET
Definition: types.h:197
@ PTPMGMT_COMMAND
Definition: types.h:199
@ PTPMGMT_ACKNOWLEDGE
Definition: types.h:200
Define name space.
Definition: types.h:455
struct ptpmgmt_PortIdentity_t acceptablePortIdentity
Definition: types.h:456
uint8_t alternatePriority1
Definition: types.h:457
Definition: types.h:408
Octet_t v[8]
Definition: types.h:409
Definition: types.h:429
uint16_t offsetScaledLogVariance
Definition: types.h:432
UInteger8_t clockClass
Definition: types.h:430
enum ptpmgmt_clockAccuracy_e clockAccuracy
Definition: types.h:431
Definition: types.h:446
struct ptpmgmt_PTPText_t faultValue
Definition: types.h:451
struct ptpmgmt_Timestamp_t faultTime
Definition: types.h:448
enum ptpmgmt_faultRecord_e severityCode
Definition: types.h:449
struct ptpmgmt_PTPText_t faultName
Definition: types.h:450
uint16_t faultRecordLength
Definition: types.h:447
struct ptpmgmt_PTPText_t faultDescription
Definition: types.h:452
Definition: types.h:562
struct ptpmgmt_ClockQuality_t clockQuality
Definition: types.h:564
UInteger8_t priority1
Definition: types.h:568
uint8_t selected
Definition: types.h:565
UInteger8_t priority2
Definition: types.h:569
enum ptpmgmt_linuxptpUnicastState_e portState
Definition: types.h:567
struct ptpmgmt_PortIdentity_t portIdentity
Definition: types.h:563
struct ptpmgmt_PortAddress_t portAddress
Definition: types.h:570
Definition: types.h:460
uint8_t allowed
Definition: types.h:463
uint8_t scope
Definition: types.h:462
ssize_t size
Definition: types.h:472
uint16_t value
Definition: types.h:461
Definition: types.h:502
uint8_t boundaryHops
Definition: types.h:508
uint8_t transportSpecific
Definition: types.h:506
struct ptpmgmt_PortIdentity_t self_id
Definition: types.h:514
struct ptpmgmt_PortIdentity_t target
Definition: types.h:513
bool sendAuth
Definition: types.h:523
bool rcvSignaling
Definition: types.h:516
uint8_t minorVersion
Definition: types.h:509
uint8_t rcvAuth
Definition: types.h:529
void(* removeSigTlv)(ptpmgmt_pMsgParams mp, enum ptpmgmt_tlvType_e type)
Definition: types.h:541
size_t(* countSigTlvs)(ptpmgmt_cpMsgParams m)
Definition: types.h:554
bool filterSignaling
Definition: types.h:517
void(* allowSigTlv)(ptpmgmt_pMsgParams mp, enum ptpmgmt_tlvType_e type)
Definition: types.h:535
bool useZeroGet
Definition: types.h:515
void(* free)(ptpmgmt_pMsgParams mp)
Definition: types.h:559
bool isUnicast
Definition: types.h:510
uint8_t domainNumber
Definition: types.h:507
enum ptpmgmt_implementSpecific_e implementSpecific
Definition: types.h:512
bool(* isSigTlv)(ptpmgmt_cpMsgParams m, enum ptpmgmt_tlvType_e type)
Definition: types.h:548
bool rcvSMPTEOrg
Definition: types.h:518
Definition: types.h:435
const char * textField
Definition: types.h:443
uint8_t lengthField
Definition: types.h:442
Definition: types.h:417
UInteger16_t addressLength
Definition: types.h:425
uint8_t * addressField
Definition: types.h:426
enum ptpmgmt_networkProtocol_e networkProtocol
Definition: types.h:418
Definition: types.h:412
struct ptpmgmt_ClockIdentity_t clockIdentity
Definition: types.h:413
UInteger16_t portNumber
Definition: types.h:414
Definition: types.h:399
Integer64_t scaledNanoseconds
Definition: types.h:400
Definition: types.h:403
UInteger32_t nanosecondsField
Definition: types.h:405
UInteger48_t secondsField
Definition: types.h:404
int64_t Integer48_t
Definition: types.h:56
uint16_t UInteger16_t
Definition: types.h:40
uint64_t UInteger48_t
Definition: types.h:44
uint8_t Nibble_t
Definition: types.h:36
uint8_t UInteger8_t
Definition: types.h:38
__PTPMGMT_NAMESPACE_BEGIN const int64_t INT48_MIN
Definition: types.h:24
const int64_t INT48_MAX
Definition: types.h:28
uint64_t UInteger64_t
Definition: types.h:48
long double float_nanoseconds
Definition: types.h:68
uint32_t UInteger32_t
Definition: types.h:42
int8_t Integer8_t
Definition: types.h:50
uint8_t Octet_t
Definition: types.h:62
int16_t Integer16_t
Definition: types.h:52
int32_t Integer32_t
Definition: types.h:54
int64_t Integer64_t
Definition: types.h:60
const uint64_t UINT48_MAX
Definition: types.h:32
long double float_seconds
Definition: types.h:66
double Float64_t
Definition: types.h:64