Lines Matching refs:parse
304 #define ERR(_X_) if (list_err(parse, (_X_)))
1535 …ine PARSE_STATETIME(parse, i) ((parse->generic->currentstatus == i) ? parse->statetime[i] + curren… argument
1548 struct parseunit *parse, in clear_err() argument
1558 parse->errors[i].err_stage = err_tbl[i]; in clear_err()
1559 parse->errors[i].err_cnt = 0; in clear_err()
1560 parse->errors[i].err_last = 0; in clear_err()
1561 parse->errors[i].err_started = 0; in clear_err()
1562 parse->errors[i].err_suppressed = 0; in clear_err()
1567 parse->errors[lstate].err_stage = err_tbl[lstate]; in clear_err()
1568 parse->errors[lstate].err_cnt = 0; in clear_err()
1569 parse->errors[lstate].err_last = 0; in clear_err()
1570 parse->errors[lstate].err_started = 0; in clear_err()
1571 parse->errors[lstate].err_suppressed = 0; in clear_err()
1577 struct parseunit *parse, in list_err() argument
1582 struct errorinfo *err = &parse->errors[lstate]; in list_err()
1603 CLK_UNIT(parse->peer), l_mktime(err->err_stage->err_delay)); in list_err()
1613 CLK_UNIT(parse->peer), err->err_suppressed, (err->err_suppressed == 1) ? " was" : "s where", in list_err()
1808 struct parseunit *parse in ppsclock_init() argument
1818 if (ioctl(parse->ppsfd, I_PUSH, (caddr_t)m1) == -1 && in ppsclock_init()
1819 ioctl(parse->ppsfd, I_PUSH, (caddr_t)m2) == -1) in ppsclock_init()
1824 CLK_UNIT(parse->peer)); in ppsclock_init()
1828 if (!local_init(parse)) in ppsclock_init()
1830 (void)ioctl(parse->ppsfd, I_POP, (caddr_t)0); in ppsclock_init()
1834 parse->flags |= PARSE_PPSCLOCK; in ppsclock_init()
1843 struct parseunit *parse in stream_init() argument
1851 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1) in stream_init()
1855 …G_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer)); in stream_init()
1861 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0) in stream_init()
1868 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1) in stream_init()
1870 …G_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer)); in stream_init()
1885 struct parseunit *parse in stream_end() argument
1888 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0) in stream_end()
1897 struct parseunit *parse, in stream_setcs() argument
1908 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_setcs()
1910 …, "PARSE receiver #%d: stream_setcs: ioctl(fd, I_STR, PARSEIOC_SETCS): %m", CLK_UNIT(parse->peer)); in stream_setcs()
1921 struct parseunit *parse in stream_enable() argument
1931 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_enable()
1933 …"PARSE receiver #%d: stream_enable: ioctl(fd, I_STR, PARSEIOC_ENABLE): %m", CLK_UNIT(parse->peer)); in stream_enable()
1936 parse->generic->io.clock_recv = stream_receive; /* ok - parse input in kernel */ in stream_enable()
1945 struct parseunit *parse in stream_disable() argument
1955 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_disable()
1957 …ARSE receiver #%d: stream_disable: ioctl(fd, I_STR, PARSEIOC_DISABLE): %m", CLK_UNIT(parse->peer)); in stream_disable()
1960 parse->generic->io.clock_recv = local_receive; /* ok - parse input in daemon */ in stream_disable()
1969 struct parseunit *parse, in stream_getfmt() argument
1979 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_getfmt()
1981 …msyslog(LOG_ERR, "PARSE receiver #%d: ioctl(fd, I_STR, PARSEIOC_GETFMT): %m", CLK_UNIT(parse->peer… in stream_getfmt()
1992 struct parseunit *parse, in stream_setfmt() argument
2003 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_setfmt()
2005 …"PARSE receiver #%d: stream_setfmt: ioctl(fd, I_STR, PARSEIOC_SETFMT): %m", CLK_UNIT(parse->peer)); in stream_setfmt()
2017 struct parseunit *parse, in stream_timecode() argument
2028 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1) in stream_timecode()
2031 …SE receiver #%d: stream_timecode: ioctl(fd, I_STR, PARSEIOC_TIMECODE): %m", CLK_UNIT(parse->peer)); in stream_timecode()
2034 clear_err(parse, ERR_INTERNAL); in stream_timecode()
2046 struct parseunit * parse; in stream_receive() local
2049 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr; in stream_receive()
2050 if (!parse->peer) in stream_receive()
2057 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t)); in stream_receive()
2058 parse_event(parse, CEVNT_BADREPLY); in stream_receive()
2061 clear_err(parse, ERR_BADIO); in stream_receive()
2071 CLK_UNIT(parse->peer), in stream_receive()
2100 parse_process(parse, &parsetime); in stream_receive()
2109 struct parseunit *parse in local_init() argument
2112 return parse_ioinit(&parse->parseio); in local_init()
2120 struct parseunit *parse in local_end() argument
2123 parse_ioend(&parse->parseio); in local_end()
2132 struct parseunit *parse in local_nop() argument
2143 struct parseunit *parse, in local_setcs() argument
2147 return parse_setcs(tcl, &parse->parseio); in local_setcs()
2155 struct parseunit *parse, in local_getfmt() argument
2159 return parse_getfmt(tcl, &parse->parseio); in local_getfmt()
2167 struct parseunit *parse, in local_setfmt() argument
2171 return parse_setfmt(tcl, &parse->parseio); in local_setfmt()
2179 struct parseunit *parse, in local_timecode() argument
2183 return parse_timecode(tcl, &parse->parseio); in local_timecode()
2195 struct parseunit * parse; in local_input() local
2201 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr; in local_input()
2202 if (!parse->peer) in local_input()
2214 if (parse_ioread(&parse->parseio, (unsigned int)(*s++), &ts)) in local_input()
2221 if (!PARSE_PPS(parse->parseio.parse_dtime.parse_state)) in local_input()
2224 if (parse->flags & PARSE_PPSCLOCK) in local_input()
2232 if (time_pps_fetch(parse->atom.handle, PPS_TSFMT_TSPEC, &pps_info, in local_input()
2235 if (pps_info.assert_sequence + pps_info.clear_sequence != parse->ppsserial) in local_input()
2244 if (parse->flags & PARSE_CLEAR) in local_input()
2249 parse->parseio.parse_dtime.parse_ptime.fp.l_ui = (uint32_t) (pts.tv_sec + JAN_1970); in local_input()
2254 parse->parseio.parse_dtime.parse_ptime.fp.l_ui--; in local_input()
2258 parse->parseio.parse_dtime.parse_ptime.fp.l_ui++; in local_input()
2260 parse->parseio.parse_dtime.parse_ptime.fp.l_uf = (uint32_t)(dtemp * FRAC); in local_input()
2262 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS; in local_input()
2270 lfptoa(&parse->parseio.parse_dtime.parse_ptime.fp, 6)); in local_input()
2286 parse->ppsserial = pps_info.assert_sequence + pps_info.clear_sequence; in local_input()
2305 if (ioctl(parse->ppsfd, TIOCDCDTIMESTAMP, &dcd_time) != -1) in local_input()
2319 parse->ppsfd, in local_input()
2325 parse->parseio.parse_dtime.parse_ptime.fp = tstmp; in local_input()
2326 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS; in local_input()
2331 if (parse->flags & PARSE_PPSCLOCK) in local_input()
2337 if (ioctl(parse->ppsfd, CIOGETEV, (caddr_t)&ev) == 0) in local_input()
2340 if (ioctl(parse->ppsfd, TIOCGPPSEV, (caddr_t)&ev) == 0) in local_input()
2343 if (ev.serial != parse->ppsserial) in local_input()
2356 parse->parseio.parse_dtime.parse_ptime.fp = tts; in local_input()
2357 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS; in local_input()
2360 parse->ppsserial = ev.serial; in local_input()
2372 (caddr_t)&parse->parseio.parse_dtime, in local_input()
2383 parse->generic->io.recvcount++; in local_input()
2390 parse_iodone(&parse->parseio); in local_input()
2395 (caddr_t)&parse->parseio.parse_dtime, in local_input()
2397 parse_iodone(&parse->parseio); in local_input()
2414 struct parseunit * parse; in local_receive() local
2417 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr; in local_receive()
2418 if (!parse->peer) in local_receive()
2425 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t)); in local_receive()
2426 parse_event(parse, CEVNT_BADREPLY); in local_receive()
2429 clear_err(parse, ERR_BADIO); in local_receive()
2439 CLK_UNIT(parse->peer), in local_receive()
2451 parse_process(parse, &parsetime); in local_receive()
2459 struct parseunit *parse in init_iobinding() argument
2466 if ((*b->bd_init)(parse)) in init_iobinding()
2723 struct parseunit *parse in parse_statistics() argument
2731 CLK_UNIT(parse->peer), in parse_statistics()
2732 l_mktime(current_time - parse->generic->timestarted)); in parse_statistics()
2735 CLK_UNIT(parse->peer), in parse_statistics()
2736 clockstatus(parse->generic->currentstatus)); in parse_statistics()
2741 u_long percent, d = current_time - parse->generic->timestarted; in parse_statistics()
2743 percent = s_time = PARSE_STATETIME(parse, i); in parse_statistics()
2758 CLK_UNIT(parse->peer), in parse_statistics()
2771 struct parseunit *parse in cparse_statistics() argument
2774 if (parse->laststatistic + PARSESTATISTICS < current_time) in cparse_statistics()
2775 parse_statistics(parse); in cparse_statistics()
2776 parse->laststatistic = current_time; in cparse_statistics()
2792 struct parseunit *parse = NULL; in parse_shutdown() local
2795 parse = peer->procptr->unitptr; in parse_shutdown()
2797 if (!parse) in parse_shutdown()
2803 if (!parse->peer) in parse_shutdown()
2810 if (parse->flags & PARSE_PPSCLOCK) in parse_shutdown()
2812 (void)time_pps_destroy(parse->atom.handle); in parse_shutdown()
2815 if (parse->generic->io.fd != parse->ppsfd && parse->ppsfd != -1) in parse_shutdown()
2816 (void)closeserial(parse->ppsfd); /* close separate PPS source */ in parse_shutdown()
2822 parse_statistics(parse); in parse_shutdown()
2824 if (parse->parse_type->cl_end) in parse_shutdown()
2826 parse->parse_type->cl_end(parse); in parse_shutdown()
2832 if (parse->binding) in parse_shutdown()
2833 PARSE_END(parse); in parse_shutdown()
2838 io_closeclock(&parse->generic->io); in parse_shutdown()
2840 free_varlist(parse->kv); in parse_shutdown()
2844 CLK_UNIT(parse->peer), parse->parse_type->cl_description); in parse_shutdown()
2846 parse->peer = (struct peer *)0; /* unused now */ in parse_shutdown()
2848 free(parse); in parse_shutdown()
2857 struct parseunit *parse, in parse_hardpps() argument
2861 if (parse->hardppsstate == mode) in parse_hardpps()
2864 if (CLK_PPS(parse->peer) && (parse->flags & PARSE_PPSKERNEL)) { in parse_hardpps()
2869 if (parse->flags & PARSE_CLEAR) in parse_hardpps()
2875 if (time_pps_kcbind(parse->atom.handle, PPS_KC_HARDPPS, i, in parse_hardpps()
2878 CLK_UNIT(parse->peer)); in parse_hardpps()
2882 CLK_UNIT(parse->peer), (mode == PARSE_HARDPPS_ENABLE) ? "en" : "dis"); in parse_hardpps()
2891 parse->hardppsstate = mode; in parse_hardpps()
2899 struct parseunit *parse in parse_ppsapi() argument
2905 parse->flags &= (u_char) (~PARSE_PPSCLOCK); in parse_ppsapi()
2910 if (time_pps_getcap(parse->atom.handle, &cap) < 0) { in parse_ppsapi()
2912 CLK_UNIT(parse->peer)); in parse_ppsapi()
2924 if (!refclock_params(parse->flags & (CLK_FLAG1|CLK_FLAG2|CLK_FLAG4), &parse->atom)) in parse_ppsapi()
2931 if (parse->flags & PARSE_CLEAR) { in parse_ppsapi()
2940 CLK_UNIT(parse->peer), cp); in parse_ppsapi()
2944 CLK_UNIT(parse->peer), cp, cap); in parse_ppsapi()
2949 parse->atom.pps_params.clear_offset.tv_sec = (time_t)(-parse->ppsphaseadjust); in parse_ppsapi()
2950 …parse->atom.pps_params.clear_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)p… in parse_ppsapi()
2955 parse->atom.pps_params.assert_offset.tv_sec = (time_t)(-parse->ppsphaseadjust); in parse_ppsapi()
2956 …parse->atom.pps_params.assert_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)… in parse_ppsapi()
2960 parse->atom.pps_params.mode |= mode_ppsoffset; in parse_ppsapi()
2962 if (time_pps_setparams(parse->atom.handle, &parse->atom.pps_params) < 0) { in parse_ppsapi()
2964 CLK_UNIT(parse->peer)); in parse_ppsapi()
2968 parse->flags |= PARSE_PPSCLOCK; in parse_ppsapi()
2992 struct parseunit * parse; in parse_start() local
3039 parse = emalloc_zero(sizeof(*parse)); in parse_start()
3041 parse->generic = peer->procptr; /* link up */ in parse_start()
3042 parse->generic->unitptr = (caddr_t)parse; /* link down */ in parse_start()
3047 parse->generic->timestarted = current_time; in parse_start()
3048 parse->lastchange = current_time; in parse_start()
3050 parse->flags = 0; in parse_start()
3051 parse->pollneeddata = 0; in parse_start()
3052 parse->laststatistic = current_time; in parse_start()
3053 parse->lastformat = (unsigned short)~0; /* assume no format known */ in parse_start()
3054 parse->timedata.parse_status = (unsigned short)~0; /* be sure to mark initial status change */ in parse_start()
3055 parse->lastmissed = 0; /* assume got everything */ in parse_start()
3056 parse->ppsserial = 0; in parse_start()
3057 parse->ppsfd = -1; in parse_start()
3058 parse->localdata = (void *)0; in parse_start()
3059 parse->localstate = 0; in parse_start()
3060 parse->kv = (struct ctl_var *)0; in parse_start()
3062 clear_err(parse, ERR_ALL); in parse_start()
3064 parse->parse_type = &parse_clockinfo[type]; in parse_start()
3066 parse->maxunsync = parse->parse_type->cl_maxunsync; in parse_start()
3068 parse->generic->fudgetime1 = parse->parse_type->cl_basedelay; in parse_start()
3070 parse->generic->fudgetime2 = 0.0; in parse_start()
3071 parse->ppsphaseadjust = parse->generic->fudgetime2; in parse_start()
3072 parse->generic->fudgeminjitter = 0.0; in parse_start()
3074 parse->generic->clockdesc = parse->parse_type->cl_description; in parse_start()
3076 peer->rootdelay = parse->parse_type->cl_rootdelay; in parse_start()
3077 peer->sstclktype = parse->parse_type->cl_type; in parse_start()
3083 memmove((char *)&parse->generic->refid, parse->parse_type->cl_id, 4); in parse_start()
3085 parse->generic->refid = htonl(PARSEHSREFID); in parse_start()
3087 parse->generic->io.fd = fd232; in parse_start()
3089 parse->peer = peer; /* marks it also as busy */ in parse_start()
3097 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3108 disablec = fpathconf(parse->generic->io.fd, _PC_VDISABLE); in parse_start()
3111 …OG_ERR, "PARSE receiver #%d: parse_start: fpathconf(fd, _PC_VDISABLE): %m", CLK_UNIT(parse->peer)); in parse_start()
3142 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3154 parse->ppsfd = tty_open(parseppsdev, O_RDWR | O_NOCTTY | O_NONBLOCK, 0777); in parse_start()
3156 if (parse->ppsfd == -1) in parse_start()
3158 parse->ppsfd = fd232; in parse_start()
3167 if (ioctl(parse->ppsfd, TIOCGSERIAL, &ss) < 0 || in parse_start()
3177 ioctl(parse->ppsfd, TIOCSSERIAL, &ss)) < 0) { in parse_start()
3178 msyslog(LOG_NOTICE, "refclock_parse: TIOCSSERIAL fd %d, %m", parse->ppsfd); in parse_start()
3182 parse->flags |= PARSE_PPSCLOCK; in parse_start()
3196 if (CLK_PPS(parse->peer)) in parse_start()
3200 if (ioctl(parse->ppsfd, TIOCSPPS, (caddr_t)&i) == 0) in parse_start()
3202 parse->flags |= PARSE_PPSCLOCK; in parse_start()
3211 parse->hardppsstate = PARSE_HARDPPS_DISABLE; in parse_start()
3212 if (CLK_PPS(parse->peer)) in parse_start()
3214 if (!refclock_ppsapi(parse->ppsfd, &parse->atom)) in parse_start()
3216 …og(LOG_NOTICE, "PARSE receiver #%d: parse_start: could not set up PPS: %m", CLK_UNIT(parse->peer)); in parse_start()
3220 parse_ppsapi(parse); in parse_start()
3228 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3236 parse->generic->io.srcclock = peer; in parse_start()
3237 parse->generic->io.datalen = 0; in parse_start()
3239 parse->binding = init_iobinding(parse); in parse_start()
3241 if (parse->binding == (bind_t *)0) in parse_start()
3243 …R, "PARSE receiver #%d: parse_start: io sub system initialisation failed.", CLK_UNIT(parse->peer)); in parse_start()
3244 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3248 parse->generic->io.clock_recv = parse->binding->bd_receive; /* pick correct receive routine */ in parse_start()
3249 parse->generic->io.io_input = parse->binding->bd_io_input; /* pick correct input routine */ in parse_start()
3278 if (!PARSE_SETCS(parse, &tmp_ctl)) in parse_start()
3281 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3285 …strlcpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format, sizeof(tmp_ctl.parseformat… in parse_start()
3288 if (!PARSE_SETFMT(parse, &tmp_ctl)) in parse_start()
3291 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3299 (void) tcflush(parse->generic->io.fd, TCIOFLUSH); in parse_start()
3305 (void) ioctl(parse->generic->io.fd, TCFLSH, (caddr_t)&flshcmd); in parse_start()
3313 if (parse->parse_type->cl_init) in parse_start()
3315 if (parse->parse_type->cl_init(parse)) in parse_start()
3317 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3325 if (!io_addclock(&parse->generic->io)) in parse_start()
3328 …start: addclock %s fails (ABORT - clock type requires async io)", CLK_UNIT(parse->peer), parsedev); in parse_start()
3329 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */ in parse_start()
3340 CLK_UNIT(parse->peer), in parse_start()
3341 parse->parse_type->cl_description, parsedev, in parse_start()
3342 (parse->ppsfd != parse->generic->io.fd) ? parseppsdev : parsedev); in parse_start()
3345 CLK_UNIT(parse->peer), in parse_start()
3346 parse->peer->stratum, in parse_start()
3347 l_mktime(parse->maxunsync), parse->peer->precision); in parse_start()
3350 CLK_UNIT(parse->peer), in parse_start()
3351 parse->parse_type->cl_rootdelay, in parse_start()
3352 parse->generic->fudgetime1, in parse_start()
3353 parse->ppsphaseadjust, in parse_start()
3354 parse->binding->bd_description); in parse_start()
3356 msyslog(LOG_INFO, "PARSE receiver #%d: Format recognition: %s", CLK_UNIT(parse->peer), in parse_start()
3357 parse->parse_type->cl_format); in parse_start()
3358 … msyslog(LOG_INFO, "PARSE receiver #%d: %sPPS support%s", CLK_UNIT(parse->peer), in parse_start()
3359 CLK_PPS(parse->peer) ? "" : "NO ", in parse_start()
3360 CLK_PPS(parse->peer) ? in parse_start()
3378 struct parseunit *parse, in parse_ctl() argument
3387 parse->flags = (parse->flags & (u_char)(~mask)) | (in->flags & mask); in parse_ctl()
3389 if (CLK_PPS(parse->peer)) in parse_ctl()
3391 parse_ppsapi(parse); in parse_ctl()
3398 parse->generic->fudgetime1 = in->fudgetime1; in parse_ctl()
3400 CLK_UNIT(parse->peer), in parse_ctl()
3401 parse->generic->fudgetime1); in parse_ctl()
3406 parse->generic->fudgetime2 = in->fudgetime2; in parse_ctl()
3407 if (parse->flags & PARSE_TRUSTTIME) in parse_ctl()
3409 parse->maxunsync = (u_long)ABS(in->fudgetime2); in parse_ctl()
3411 CLK_UNIT(parse->peer), in parse_ctl()
3412 l_mktime(parse->maxunsync)); in parse_ctl()
3416 parse->ppsphaseadjust = in->fudgetime2; in parse_ctl()
3418 CLK_UNIT(parse->peer), in parse_ctl()
3419 parse->ppsphaseadjust); in parse_ctl()
3421 if (CLK_PPS(parse->peer)) in parse_ctl()
3423 parse_ppsapi(parse); in parse_ctl()
3429 parse->generic->fudgeminjitter = in->fudgeminjitter; in parse_ctl()
3442 struct parseunit *parse = peer->procptr->unitptr; in parse_poll() local
3444 if (peer != parse->peer) in parse_poll()
3455 parse->generic->polls++; in parse_poll()
3457 if (parse->pollneeddata && in parse_poll()
3458 …((int)(current_time - parse->pollneeddata) > (1<<(max(min(parse->peer->hpoll, parse->peer->ppoll),… in parse_poll()
3464 parse->lastmissed = current_time; in parse_poll()
3465 parse_event(parse, CEVNT_TIMEOUT); in parse_poll()
3468 …r #%d: no data from device within poll interval (check receiver / wiring)", CLK_UNIT(parse->peer)); in parse_poll()
3474 parse->pollneeddata = current_time; in parse_poll()
3476 if (parse->parse_type->cl_poll) in parse_poll()
3478 parse->parse_type->cl_poll(parse); in parse_poll()
3481 cparse_statistics(parse); in parse_poll()
3499 struct parseunit *parse = peer->procptr->unitptr; in parse_control() local
3511 if (!parse || !parse->peer) in parse_control()
3518 unit = CLK_UNIT(parse->peer); in parse_control()
3523 parse_ctl(parse, in); in parse_control()
3541 …parse->generic->fudgetime2 = (parse->flags & PARSE_TRUSTTIME) ? (double)parse->maxunsync : parse->… in parse_control()
3547 if (PARSE_SYNC(parse->timedata.parse_state)) in parse_control()
3549 if (PARSE_PPS(parse->timedata.parse_state) && PARSE_TIMECODE(parse->timedata.parse_state)) in parse_control()
3557 off = parse->timedata.parse_stime.fp; in parse_control()
3558 L_SUB(&off, &parse->timedata.parse_ptime.fp); /* true offset */ in parse_control()
3564 if (PARSE_PPS(parse->timedata.parse_state)) in parse_control()
3567 snprintf(tt, 80, "refclock_ppstime=\"%s\"", gmprettydate(&parse->timedata.parse_ptime.fp)); in parse_control()
3573 if (parse->timedata.parse_time.fp.l_ui == 0) in parse_control()
3580 gmprettydate(&parse->timedata.parse_time.fp)); in parse_control()
3583 if (!PARSE_GETTIMECODE(parse, &tmpctl)) in parse_control()
3596 tmpctl.parsegettc.parse_state |= parse->timedata.parse_state & in parse_control()
3613 if (!PARSE_GETFMT(parse, &tmpctl)) in parse_control()
3647 u_long d = current_time - parse->generic->timestarted; in parse_control()
3650 percent = s_time = PARSE_STATETIME(parse, i); in parse_control()
3670 (parse->generic->currentstatus == i) ? "*" : "", in parse_control()
3686 snprintf(tt, 32, "refclock_id=\"%s\"", parse->parse_type->cl_id); in parse_control()
3689 snprintf(tt, 80, "refclock_iomode=\"%s\"", parse->binding->bd_description); in parse_control()
3697 k = parse->kv; in parse_control()
3720 struct parseunit *parse, in parse_event() argument
3724 if (parse->generic->currentstatus != (u_char) event) in parse_event()
3726 parse->statetime[parse->generic->currentstatus] += current_time - parse->lastchange; in parse_event()
3727 parse->lastchange = current_time; in parse_event()
3729 if (parse->parse_type->cl_event) in parse_event()
3730 parse->parse_type->cl_event(parse, event); in parse_event()
3736 CLK_UNIT(parse->peer)); in parse_event()
3739 refclock_report(parse->peer, event); in parse_event()
3748 struct parseunit *parse, in parse_process() argument
3764 (parse->timedata.parse_status != parsetime->parse_status)) in parse_process()
3770 CLK_UNIT(parse->peer), parsestatus(parsetime->parse_status, buffer, sizeof(buffer))); in parse_process()
3781 if (!PARSE_GETTIMECODE(parse, &tmpctl)) in parse_process()
3784 …msyslog(LOG_ERR, "PARSE receiver #%d: parse_process: parse_timecode() FAILED", CLK_UNIT(parse->pee… in parse_process()
3793 CLK_UNIT(parse->peer), in parse_process()
3798 parse->timedata.parse_status = parsetime->parse_status; in parse_process()
3814 parse->parse_type->cl_message) in parse_process()
3815 parse->parse_type->cl_message(parse, parsetime); in parse_process()
3821 parse->timedata.parse_state |= PARSEB_PPS|PARSEB_S_PPS; in parse_process()
3822 parse->timedata.parse_ptime = parsetime->parse_ptime; in parse_process()
3829 parse_event(parse, CEVNT_BADREPLY); in parse_process()
3834 parse_event(parse, CEVNT_BADDATE); in parse_process()
3839 parse_event(parse, CEVNT_BADTIME); in parse_process()
3843 parse_event(parse, CEVNT_BADREPLY); /* for the lack of something better */ in parse_process()
3853 if (parse->lastformat != parsetime->parse_format) in parse_process()
3859 if (!PARSE_GETFMT(parse, &tmpctl)) in parse_process()
3862 msyslog(LOG_ERR, "PARSE receiver #%d: parse_getfmt() FAILED", CLK_UNIT(parse->peer)); in parse_process()
3868 CLK_UNIT(parse->peer), tmpctl.parseformat.parse_buffer); in parse_process()
3870 parse->lastformat = parsetime->parse_format; in parse_process()
3876 if ((parse->timedata.parse_state ^ parsetime->parse_state) & in parse_process()
3886 (void) parsestate(parse->timedata.parse_state, tmp2, sizeof(tmp2)); in parse_process()
3890 CLK_UNIT(parse->peer), tmp2, tmp1); in parse_process()
3896 if (PARSE_PPS(parse->timedata.parse_state) && !PARSE_PPS(parsetime->parse_state)) in parse_process()
3899 parsetime->parse_ptime = parse->timedata.parse_ptime; in parse_process()
3905 parse->timedata = *parsetime; in parse_process()
3941 parse_event(parse, CEVNT_FAULT); in parse_process()
3945 CLK_UNIT(parse->peer)); in parse_process()
3973 parse->lastsync = current_time; in parse_process()
3974 clear_err(parse, ERR_BADSTATUS); in parse_process()
3981 parse_event(parse, CEVNT_PROP); in parse_process()
3985 CLK_UNIT(parse->peer)); in parse_process()
3989 fudge = parse->generic->fudgetime1; /* standard RS232 Fudgefactor */ in parse_process()
4001 CLK_UNIT(parse->peer), in parse_process()
4008 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer)) in parse_process()
4011 double ppsphaseadjust = parse->ppsphaseadjust; in parse_process()
4017 if (parse->atom.pps_params.mode & (PPS_OFFSETCLEAR|PPS_OFFSETASSERT)) in parse_process()
4031 CLK_UNIT(parse->peer), in parse_process()
4045 if (parse->parse_type->cl_flags & PARSE_F_PPSONSECOND) in parse_process()
4100 parse->parse_type->cl_message) in parse_process()
4101 parse->parse_type->cl_message(parse, parsetime); in parse_process()
4109 CLK_UNIT(parse->peer), in parse_process()
4122 CLK_UNIT(parse->peer), in parse_process()
4128 parse->parse_type->cl_message) in parse_process()
4129 parse->parse_type->cl_message(parse, parsetime); in parse_process()
4136 parse_event(parse, CEVNT_NOMINAL); in parse_process()
4139 clear_err(parse, ERR_BADIO); in parse_process()
4140 clear_err(parse, ERR_BADDATA); in parse_process()
4141 clear_err(parse, ERR_NODATA); in parse_process()
4142 clear_err(parse, ERR_INTERNAL); in parse_process()
4153 if (((current_time - parse->lastsync) > parse->maxunsync) || in parse_process()
4154 (parse->lastsync < parse->lastmissed) || in parse_process()
4155 ((parse->lastsync == 0) && !PARSE_SYNC(parsetime->parse_state)) || in parse_process()
4156 (((parse->parse_type->cl_flags & PARSE_F_POWERUPTRUST) == 0) && in parse_process()
4159 parse->generic->leap = LEAP_NOTINSYNC; in parse_process()
4160 parse->lastsync = 0; /* wait for full sync again */ in parse_process()
4171 parse->generic->leap = (parse->flags & PARSE_LEAP_DELETE) ? LEAP_DELSECOND : LEAP_ADDSECOND; in parse_process()
4176 parse->generic->leap = LEAP_DELSECOND; in parse_process()
4180 parse->generic->leap = LEAP_NOWARNING; in parse_process()
4184 if (parse->generic->leap != LEAP_NOTINSYNC) in parse_process()
4193 CLK_UNIT(parse->peer), in parse_process()
4199 parse->generic->lastref = reftime; in parse_process()
4201 refclock_process_offset(parse->generic, reftime, rectime, fudge); in parse_process()
4207 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer)) in parse_process()
4209 parse->peer->flags |= (FLAG_PPS | FLAG_TSTAMP_PPS); in parse_process()
4210 parse_hardpps(parse, PARSE_HARDPPS_ENABLE); in parse_process()
4214 parse_hardpps(parse, PARSE_HARDPPS_DISABLE); in parse_process()
4215 parse->peer->flags &= ~(FLAG_PPS | FLAG_TSTAMP_PPS); in parse_process()
4222 if (!parse->pollneeddata && parse->peer->disp <= MAXDISTANCE) in parse_process()
4225 parse->pollneeddata = 0; in parse_process()
4227 parse->timedata.parse_state &= ~(unsigned)(PARSEB_PPS|PARSEB_S_PPS); in parse_process()
4229 refclock_receive(parse->peer); in parse_process()
4303 struct parseunit *parse, in gps16x_message() argument
4307 if (parse->timedata.parse_msglen && parsetime->parse_msg[0] == SOH) in gps16x_message()
4319 CLK_UNIT(parse->peer), in gps16x_message()
4346 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF); in gps16x_message()
4400 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF); in gps16x_message()
4415 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF); in gps16x_message()
4431 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF); in gps16x_message()
4466 CLK_UNIT(parse->peer), p); in gps16x_message()
4495 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF); in gps16x_message()
4521 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF); in gps16x_message()
4529 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF); in gps16x_message()
4537 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF); in gps16x_message()
4584 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF); in gps16x_message()
4617 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF); in gps16x_message()
4641 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF); in gps16x_message()
4654 CLK_UNIT(parse->peer), in gps16x_message()
4672 struct parseunit *parse = peer->procptr->unitptr; in gps16x_poll() local
4692 if (((poll_info_t *)parse->parse_type->cl_data)->rate) in gps16x_poll()
4694 …parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rat… in gps16x_poll()
4697 if (sequence[parse->localstate].cmd == (unsigned short)~0) in gps16x_poll()
4698 parse->localstate = 0; in gps16x_poll()
4700 header = sequence + parse->localstate++; in gps16x_poll()
4717 CLK_UNIT(parse->peer), in gps16x_poll()
4718 parse->localstate - 1, in gps16x_poll()
4724 rtc = (int) write(parse->generic->io.fd, cmd_buffer, (unsigned long)(outp - cmd_buffer)); in gps16x_poll()
4729 …OG_ERR, "PARSE receiver #%d: gps16x_poll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer)); in gps16x_poll()
4735 …s16x_poll: failed to send cmd incomplete (%d of %d bytes sent)", CLK_UNIT(parse->peer), rtc, (int)… in gps16x_poll()
4738 clear_err(parse, ERR_BADIO); in gps16x_poll()
4747 struct parseunit *parse in gps16x_poll_init() argument
4750 if (((poll_info_t *)parse->parse_type->cl_data)->rate) in gps16x_poll_init()
4752 parse->peer->procptr->action = gps16x_poll; in gps16x_poll_init()
4753 gps16x_poll(parse->peer); in gps16x_poll_init()
4762 struct parseunit *parse, in gps16x_message() argument
4768 struct parseunit *parse in gps16x_poll_init() argument
4784 struct parseunit *parse in poll_dpoll() argument
4788 const char *ps = ((poll_info_t *)parse->parse_type->cl_data)->string; in poll_dpoll()
4789 long ct = ((poll_info_t *)parse->parse_type->cl_data)->count; in poll_dpoll()
4791 rtc = write(parse->generic->io.fd, ps, ct); in poll_dpoll()
4795 …LOG_ERR, "PARSE receiver #%d: poll_dpoll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer)); in poll_dpoll()
4801 …oll_dpoll: failed to send cmd incomplete (%ld of %ld bytes sent)", CLK_UNIT(parse->peer), rtc, ct); in poll_dpoll()
4803 clear_err(parse, ERR_BADIO); in poll_dpoll()
4814 struct parseunit *parse = peer->procptr->unitptr; in poll_poll() local
4816 if (parse->parse_type->cl_poll) in poll_poll()
4817 parse->parse_type->cl_poll(parse); in poll_poll()
4819 if (((poll_info_t *)parse->parse_type->cl_data)->rate) in poll_poll()
4821 …parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rat… in poll_poll()
4830 struct parseunit *parse in poll_init() argument
4833 if (((poll_info_t *)parse->parse_type->cl_data)->rate) in poll_init()
4835 parse->peer->procptr->action = poll_poll; in poll_init()
4836 poll_poll(parse->peer); in poll_init()
4851 struct parseunit *parse in trimbletaip_init() argument
4863 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1) in trimbletaip_init()
4865 …msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcgetattr(fd, &tio): %m", CLK_UNIT(parse->… in trimbletaip_init()
4872 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1) in trimbletaip_init()
4874 …msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcsetattr(fd, &tio): %m", CLK_UNIT(parse->… in trimbletaip_init()
4878 return poll_init(parse); in trimbletaip_init()
4893 struct parseunit *parse, in trimbletaip_event() argument
4907 int rtc = (int) write(parse->generic->io.fd, *iv, strlen(*iv)); in trimbletaip_event()
4910 …, "PARSE receiver #%d: trimbletaip_event: failed to send cmd to clock: %m", CLK_UNIT(parse->peer)); in trimbletaip_event()
4918 CLK_UNIT(parse->peer), rtc, (int)strlen(*iv)); in trimbletaip_event()
4928 CLK_UNIT(parse->peer)); in trimbletaip_event()
5044 void sendetx (struct txbuf *buf, struct parseunit *parse);
5061 void sendetx (struct txbuf *buf, struct parseunit *parse);
5079 struct parseunit *parse in sendetx() argument
5085 if (write(parse->generic->io.fd, buf->txt, (unsigned long)buf->idx) != buf->idx) in sendetx()
5088 …msyslog(LOG_ERR, "PARSE receiver #%d: sendetx: failed to send cmd to clock: %m", CLK_UNIT(parse->p… in sendetx()
5099 CLK_UNIT(parse->peer), in sendetx()
5103 clear_err(parse, ERR_BADIO); in sendetx()
5144 struct parseunit *parse, in trimbletsip_setup() argument
5150 trimble_t *t = parse->localdata; in trimbletsip_setup()
5163 sendetx(&buf, parse); in trimbletsip_setup()
5171 sendetx(&buf, parse); in trimbletsip_setup()
5175 sendetx(&buf, parse); in trimbletsip_setup()
5178 sendetx(&buf, parse); in trimbletsip_setup()
5182 sendetx(&buf, parse); in trimbletsip_setup()
5189 sendetx(&buf, parse); in trimbletsip_setup()
5192 sendetx(&buf, parse); in trimbletsip_setup()
5196 …RSE receiver #%d: trimbletsip_setup: RECEIVER RE-INITIALIZED (%s)", CLK_UNIT(parse->peer), reason); in trimbletsip_setup()
5209 struct parseunit *parse = peer->procptr->unitptr; in trimble_check() local
5210 trimble_t *t = parse->localdata; in trimble_check()
5218 (void)trimbletsip_setup(parse, "message timeout"); in trimble_check()
5221 poll_poll(parse->peer); /* emit query string and re-arm timer */ in trimble_check()
5239 sendetx(&buf, parse); in trimble_check()
5247 sendetx(&buf, parse); in trimble_check()
5256 struct parseunit *parse in trimbletsip_end() argument
5258 { trimble_t *t = parse->localdata; in trimbletsip_end()
5263 parse->localdata = NULL; in trimbletsip_end()
5265 parse->peer->procptr->nextaction = 0; in trimbletsip_end()
5266 parse->peer->procptr->action = NULL; in trimbletsip_end()
5274 struct parseunit *parse in trimbletsip_init() argument
5287 if (!parse->localdata) in trimbletsip_init()
5291 t = (trimble_t *)(parse->localdata = emalloc(sizeof(trimble_t))); in trimbletsip_init()
5300 parse->peer->procptr->action = trimble_check; in trimbletsip_init()
5301 parse->peer->procptr->nextaction = current_time; in trimbletsip_init()
5306 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1) in trimbletsip_init()
5308 …receiver #%d: trimbletsip_init: tcgetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->i… in trimbletsip_init()
5313 if ((parse_clockinfo[CLK_TYPE(parse->peer)].cl_lflag & ICANON)) in trimbletsip_init()
5323 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1) in trimbletsip_init()
5325 …receiver #%d: trimbletsip_init: tcsetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->i… in trimbletsip_init()
5330 return trimbletsip_setup(parse, "initial startup"); in trimbletsip_init()
5339 struct parseunit *parse, in trimbletsip_event() argument
5347 (void)trimbletsip_setup(parse, "event BAD_REPLY/TIMEOUT"); in trimbletsip_event()
5432 struct parseunit *parse, in trimbletsip_message() argument
5461 trimble_t *tr = parse->localdata; in trimbletsip_message()
5673 (void)trimbletsip_setup(parse, "bad io options"); in trimbletsip_message()
5820 set_var(&parse->kv, pbuffer, sizeof(pbuffer), var_flag); in trimbletsip_message()
5836 struct parseunit *parse in rawdcf_init_1() argument
5847 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1) in rawdcf_init_1()
5849 …eiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer)); in rawdcf_init_1()
5859 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1) in rawdcf_init_1()
5861 …eiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer)); in rawdcf_init_1()
5868 struct parseunit *parse in rawdcfdtr_init_1() argument
5871 …it_1: WARNING: OS interface incapable of setting DTR to power DCF modules", CLK_UNIT(parse->peer)); in rawdcfdtr_init_1()
5883 struct parseunit *parse in rawdcf_init_2() argument
5894 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1) in rawdcf_init_2()
5896 …eiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer)); in rawdcf_init_2()
5906 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1) in rawdcf_init_2()
5908 …eiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer)); in rawdcf_init_2()
5915 struct parseunit *parse in rawdcf_init_2() argument
5918 …it_2: WARNING: OS interface incapable of setting RTS to power DCF modules", CLK_UNIT(parse->peer)); in rawdcf_init_2()