📄 datatypes.h
字号:
/* datatypes.h */#ifndef DATATYPES_H#define DATATYPES_Htypedef struct { UInteger32 seconds; Integer32 nanoseconds; } TimeRepresentation;typedef struct { Integer16 interval; Integer16 left; Boolean expire;} IntervalTimer;/* Message header */typedef struct { UInteger16 versionPTP; UInteger16 versionNetwork; Octet subdomain[PTP_SUBDOMAIN_NAME_LENGTH]; UInteger8 messageType; UInteger8 sourceCommunicationTechnology; Octet sourceUuid[PTP_UUID_LENGTH]; UInteger16 sourcePortId; UInteger16 sequenceId; UInteger8 control; Octet flags[2]; } MsgHeader;/* Sync or Delay_Req message */typedef struct { TimeRepresentation originTimestamp; UInteger16 epochNumber; Integer16 currentUTCOffset; UInteger8 grandmasterCommunicationTechnology; Octet grandmasterClockUuid[PTP_UUID_LENGTH]; UInteger16 grandmasterPortId; UInteger16 grandmasterSequenceId; UInteger8 grandmasterClockStratum; Octet grandmasterClockIdentifier[PTP_CODE_STRING_LENGTH]; Integer16 grandmasterClockVariance; Boolean grandmasterPreferred; Boolean grandmasterIsBoundaryClock; Integer8 syncInterval; Integer16 localClockVariance; UInteger16 localStepsRemoved; UInteger8 localClockStratum; Octet localClockIdentifer[PTP_CODE_STRING_LENGTH]; UInteger8 parentCommunicationTechnology; Octet parentUuid[PTP_UUID_LENGTH]; UInteger16 parentPortField; Integer16 estimatedMasterVariance; Integer32 estimatedMasterDrift; Boolean utcReasonable; } MsgSync;typedef MsgSync MsgDelayReq;/* Follow_Up message */typedef struct { UInteger16 associatedSequenceId; TimeRepresentation preciseOriginTimestamp; } MsgFollowUp;/* Delay_Resp message */typedef struct { TimeRepresentation delayReceiptTimestamp; UInteger8 requestingSourceCommunicationTechnology; Octet requestingSourceUuid[PTP_UUID_LENGTH]; UInteger16 requestingSourcePortId; UInteger16 requestingSourceSequenceId; } MsgDelayResp;/* Management message */typedef struct { UInteger8 targetCommunicationTechnology; Octet targetUuid[PTP_UUID_LENGTH]; UInteger16 targetPortId; Integer16 startingBoundaryHops; Integer16 boundaryHops; UInteger8 managementMessageKey; UInteger16 parameterLength; UInteger16 recordKey; } MsgManagement;typedef struct{ UInteger8 foreign_master_communication_technology; Octet foreign_master_uuid[PTP_UUID_LENGTH]; UInteger16 foreign_master_port_id; UInteger16 foreign_master_syncs; MsgHeader header; MsgSync sync;} ForeignMasterRecord;/* main program data structure */typedef struct { /* Default data set */ UInteger8 clock_communication_technology; Octet clock_uuid_field[PTP_UUID_LENGTH]; UInteger16 clock_port_id_field; UInteger8 clock_stratum; Octet clock_identifier[PTP_CODE_STRING_LENGTH]; Integer16 clock_variance; Boolean clock_followup_capable; Boolean preferred; Boolean initializable; Boolean external_timing; Boolean is_boundary_clock; Integer8 sync_interval; Octet subdomain_name[PTP_SUBDOMAIN_NAME_LENGTH]; UInteger16 number_ports; UInteger16 number_foreign_records; /* Current data set */ UInteger16 steps_removed; TimeRepresentation offset_from_master; TimeRepresentation one_way_delay; /* Parent data set */ UInteger8 parent_communication_technology; Octet parent_uuid[PTP_UUID_LENGTH]; UInteger16 parent_port_id; UInteger16 parent_last_sync_sequence_number; Boolean parent_followup_capable; Boolean parent_external_timing; Integer16 parent_variance; Boolean parent_stats; Integer16 observed_variance; Integer32 observed_drift; Boolean utc_reasonable; UInteger8 grandmaster_communication_technology; Octet grandmaster_uuid_field[PTP_UUID_LENGTH]; UInteger16 grandmaster_port_id_field; UInteger8 grandmaster_stratum; Octet grandmaster_identifier[PTP_CODE_STRING_LENGTH]; Integer16 grandmaster_variance; Boolean grandmaster_preferred; Boolean grandmaster_is_boundary_clock; UInteger16 grandmaster_sequence_number; /* Global time properties data set */ Integer16 current_utc_offset; Boolean leap_59; Boolean leap_61; UInteger16 epoch_number; /* Port configuration data set */ UInteger8 port_state; UInteger16 last_sync_event_sequence_number; UInteger16 last_general_event_sequence_number; Octet subdomain_address[SUBDOMAIN_ADDRESS_LENGTH]; Octet event_port_address[PORT_ADDRESS_LENGTH]; Octet general_port_address[PORT_ADDRESS_LENGTH]; UInteger8 port_communication_technology; Octet port_uuid_field[PTP_UUID_LENGTH]; UInteger16 port_id_field; Boolean burst_enabled; /* Foreign master data set */ ForeignMasterRecord *foreign; /* Other things we need for the protocol */ Integer16 max_foreign_records; Integer16 foreign_record_i; Integer16 foreign_record_best; Boolean record_update; UInteger32 random_seed; Boolean need_reset; MsgHeader msgTmpHeader; union { MsgSync sync; MsgFollowUp follow; MsgDelayReq req; MsgDelayResp resp; MsgManagement manage; } msgTmp; Octet msgObuf[PACKET_SIZE]; Octet msgIbuf[PACKET_SIZE]; TimeRepresentation master_to_slave_delay; TimeRepresentation slave_to_master_delay; TimeRepresentation delay_req_sending_time; TimeRepresentation sync_receipt_time; TimeRepresentation timeTmp; UInteger16 Q; UInteger16 R; Boolean sentDelayReq; UInteger16 sentDelayReqSequenceId; Boolean waitingForFollow; offset_from_master_filter ofm_filt; one_way_delay_filter owd_filt; Boolean message_activity; IntervalTimer itimer[TIMER_ARRAY_SIZE]; NetPath netPath; } PtpClock;/* program options set at run-time */typedef struct { Integer8 syncInterval; Octet subdomainName[PTP_SUBDOMAIN_NAME_LENGTH]; Octet clockIdentifier[PTP_CODE_STRING_LENGTH]; UInteger32 clockVariance; UInteger8 clockStratum; Boolean clockPreferred; Integer16 currentUtcOffset; UInteger16 epochNumber; Octet ifaceName[IFACE_NAME_LENGTH]; Boolean resetClock; Boolean noAdjust; Boolean displayStats; Octet directAddress[NET_ADDRESS_LENGTH]; Integer16 ap, ai; Integer16 s; TimeRepresentation inboundLatency, outboundLatency; Integer16 max_foreign_records; Boolean slaveOnly; } RunTimeOpts;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -