MCPcopy Create free account
hub / github.com/facebook/time / getPPSEventTimestamp

Method getPPSEventTimestamp

phc/pps_source.go:297–313  ·  view source on GitHub ↗

getPPSEventTimestamp reads the first PPS event from the sink file descriptor and returns the timestamp of the event

()

Source from the content-addressed store, hash-verified

295}
296
297// getPPSEventTimestamp reads the first PPS event from the sink file descriptor and returns the timestamp of the event
298func (ppsSink *PPSSink) getPPSEventTimestamp() (time.Time, error) {
299 var event PtpExttsEvent
300 buf := make([]byte, binary.Size(event))
301 _, err := ppsSink.Device.Read(buf)
302 if err != nil {
303 return time.Time{}, fmt.Errorf("error reading from sink %v: %w", ppsSink.Device.File().Name(), err)
304 }
305 event = *(*PtpExttsEvent)(unsafe.Pointer(&buf[0])) // urgh...
306 if uint(event.Index) != ppsSink.InputPin {
307 return time.Time{}, fmt.Errorf("extts on unexpected pin index %d, expected %d", event.Index, ppsSink.InputPin)
308 }
309
310 t := event.T
311 eventTime := time.Unix(t.Sec, int64(t.Nsec))
312
313 return eventTime, nil
314}
315
316// pollFd polls the file descriptor for an event, and returns the number of events, the file descriptor, and error

Callers 2

PollPPSSinkMethod · 0.95

Calls 5

SizeMethod · 0.80
UnixMethod · 0.80
ReadMethod · 0.65
NameMethod · 0.65
FileMethod · 0.65

Tested by 1