Lines Matching refs:parse

191  * then some more parse-specific variables are flagged to be printed with
204 #include "parse.h"
307 #define ERR(_X_) if (list_err(parse, (_X_)))
404 * parse state
431 parsetime_t timedata; /* last (parse module) data */
1538 #define PARSE_STATETIME(parse, i) ((parse->generic->currentstatus == i) ? parse->statetime[i] + current_time - parse->lastchange : parse->statetime[i])
1551 struct parseunit *parse,
1561 parse->errors[i].err_stage = err_tbl[i];
1562 parse->errors[i].err_cnt = 0;
1563 parse->errors[i].err_last = 0;
1564 parse->errors[i].err_started = 0;
1565 parse->errors[i].err_suppressed = 0;
1570 parse->errors[lstate].err_stage = err_tbl[lstate];
1571 parse->errors[lstate].err_cnt = 0;
1572 parse->errors[lstate].err_last = 0;
1573 parse->errors[lstate].err_started = 0;
1574 parse->errors[lstate].err_suppressed = 0;
1580 struct parseunit *parse,
1585 struct errorinfo *err = &parse->errors[lstate];
1606 CLK_UNIT(parse->peer), l_mktime(err->err_stage->err_delay));
1616 CLK_UNIT(parse->peer), err->err_suppressed, (err->err_suppressed == 1) ? " was" : "s where",
1750 "parse STREAM",
1811 struct parseunit *parse
1818 * now push the parse streams module
1821 if (ioctl(parse->ppsfd, I_PUSH, (caddr_t)m1) == -1 &&
1822 ioctl(parse->ppsfd, I_PUSH, (caddr_t)m2) == -1)
1827 CLK_UNIT(parse->peer));
1831 if (!local_init(parse))
1833 (void)ioctl(parse->ppsfd, I_POP, (caddr_t)0);
1837 parse->flags |= PARSE_PPSCLOCK;
1842 * parse STREAM init
1846 struct parseunit *parse
1849 static char m1[] = "parse";
1851 * now push the parse streams module
1854 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1)
1858 msyslog(LOG_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer));
1864 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0)
1871 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1)
1873 msyslog(LOG_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer));
1884 * parse STREAM end
1888 struct parseunit *parse
1891 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0)
1900 struct parseunit *parse,
1911 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1913 msyslog(LOG_ERR, "PARSE receiver #%d: stream_setcs: ioctl(fd, I_STR, PARSEIOC_SETCS): %m", CLK_UNIT(parse->peer));
1924 struct parseunit *parse
1934 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1936 msyslog(LOG_ERR, "PARSE receiver #%d: stream_enable: ioctl(fd, I_STR, PARSEIOC_ENABLE): %m", CLK_UNIT(parse->peer));
1939 parse->generic->io.clock_recv = stream_receive; /* ok - parse input in kernel */
1948 struct parseunit *parse
1958 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1960 msyslog(LOG_ERR, "PARSE receiver #%d: stream_disable: ioctl(fd, I_STR, PARSEIOC_DISABLE): %m", CLK_UNIT(parse->peer));
1963 parse->generic->io.clock_recv = local_receive; /* ok - parse input in daemon */
1972 struct parseunit *parse,
1982 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1984 msyslog(LOG_ERR, "PARSE receiver #%d: ioctl(fd, I_STR, PARSEIOC_GETFMT): %m", CLK_UNIT(parse->peer));
1995 struct parseunit *parse,
2006 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
2008 msyslog(LOG_ERR, "PARSE receiver #%d: stream_setfmt: ioctl(fd, I_STR, PARSEIOC_SETFMT): %m", CLK_UNIT(parse->peer));
2020 struct parseunit *parse,
2031 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
2034 msyslog(LOG_ERR, "PARSE receiver #%d: stream_timecode: ioctl(fd, I_STR, PARSEIOC_TIMECODE): %m", CLK_UNIT(parse->peer));
2037 clear_err(parse, ERR_INTERNAL);
2049 struct parseunit * parse;
2052 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2053 if (!parse->peer)
2060 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
2061 parse_event(parse, CEVNT_BADREPLY);
2064 clear_err(parse, ERR_BADIO);
2074 CLK_UNIT(parse->peer),
2103 parse_process(parse, &parsetime);
2112 struct parseunit *parse
2115 return parse_ioinit(&parse->parseio);
2123 struct parseunit *parse
2126 parse_ioend(&parse->parseio);
2135 struct parseunit *parse
2146 struct parseunit *parse,
2150 return parse_setcs(tcl, &parse->parseio);
2158 struct parseunit *parse,
2162 return parse_getfmt(tcl, &parse->parseio);
2170 struct parseunit *parse,
2174 return parse_setfmt(tcl, &parse->parseio);
2182 struct parseunit *parse,
2186 return parse_timecode(tcl, &parse->parseio);
2198 struct parseunit * parse;
2204 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2205 if (!parse->peer)
2217 if (parse_ioread(&parse->parseio, (unsigned int)(*s++), &ts))
2224 if (!PARSE_PPS(parse->parseio.parse_dtime.parse_state))
2227 if (parse->flags & PARSE_PPSCLOCK)
2235 if (time_pps_fetch(parse->atom.handle, PPS_TSFMT_TSPEC, &pps_info,
2238 if (pps_info.assert_sequence + pps_info.clear_sequence != parse->ppsserial)
2247 if (parse->flags & PARSE_CLEAR)
2252 parse->parseio.parse_dtime.parse_ptime.fp.l_ui = (uint32_t) (pts.tv_sec + JAN_1970);
2257 parse->parseio.parse_dtime.parse_ptime.fp.l_ui--;
2261 parse->parseio.parse_dtime.parse_ptime.fp.l_ui++;
2263 parse->parseio.parse_dtime.parse_ptime.fp.l_uf = (uint32_t)(dtemp * FRAC);
2265 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2270 "parse: local_receive: fd %ld PPSAPI seq %ld - PPS %s\n",
2273 lfptoa(&parse->parseio.parse_dtime.parse_ptime.fp, 6));
2283 "parse: local_receive: fd %ld PPSAPI seq assert %ld, seq clear %ld - NO PPS event\n",
2289 parse->ppsserial = pps_info.assert_sequence + pps_info.clear_sequence;
2297 "parse: local_receive: fd %ld PPSAPI time_pps_fetch errno = %d\n",
2308 if (ioctl(parse->ppsfd, TIOCDCDTIMESTAMP, &dcd_time) != -1)
2321 "parse: local_receive: fd %d DCDTIMESTAMP %s\n",
2322 parse->ppsfd,
2328 parse->parseio.parse_dtime.parse_ptime.fp = tstmp;
2329 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2334 if (parse->flags & PARSE_PPSCLOCK)
2340 if (ioctl(parse->ppsfd, CIOGETEV, (caddr_t)&ev) == 0)
2343 if (ioctl(parse->ppsfd, TIOCGPPSEV, (caddr_t)&ev) == 0)
2346 if (ev.serial != parse->ppsserial)
2355 msyslog(LOG_ERR,"parse: local_receive: timestamp conversion error (buftvtots) (ppsclockev.tv)");
2359 parse->parseio.parse_dtime.parse_ptime.fp = tts;
2360 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2363 parse->ppsserial = ev.serial;
2375 (caddr_t)&parse->parseio.parse_dtime,
2386 parse->generic->io.recvcount++;
2393 parse_iodone(&parse->parseio);
2398 (caddr_t)&parse->parseio.parse_dtime,
2400 parse_iodone(&parse->parseio);
2417 struct parseunit * parse;
2420 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2421 if (!parse->peer)
2428 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
2429 parse_event(parse, CEVNT_BADREPLY);
2432 clear_err(parse, ERR_BADIO);
2442 CLK_UNIT(parse->peer),
2454 parse_process(parse, &parsetime);
2462 struct parseunit *parse
2469 if ((*b->bd_init)(parse))
2726 struct parseunit *parse
2734 CLK_UNIT(parse->peer),
2735 l_mktime(current_time - parse->generic->timestarted));
2738 CLK_UNIT(parse->peer),
2739 clockstatus(parse->generic->currentstatus));
2744 u_long percent, d = current_time - parse->generic->timestarted;
2746 percent = s_time = PARSE_STATETIME(parse, i);
2761 CLK_UNIT(parse->peer),
2774 struct parseunit *parse
2777 if (parse->laststatistic + PARSESTATISTICS < current_time)
2778 parse_statistics(parse);
2779 parse->laststatistic = current_time;
2795 struct parseunit *parse = NULL;
2798 parse = peer->procptr->unitptr;
2800 if (!parse)
2806 if (!parse->peer)
2813 if (parse->flags & PARSE_PPSCLOCK)
2815 (void)time_pps_destroy(parse->atom.handle);
2818 if (parse->generic->io.fd != parse->ppsfd && parse->ppsfd != -1)
2819 (void)closeserial(parse->ppsfd); /* close separate PPS source */
2825 parse_statistics(parse);
2827 if (parse->parse_type->cl_end)
2829 parse->parse_type->cl_end(parse);
2835 if (parse->binding)
2836 PARSE_END(parse);
2841 io_closeclock(&parse->generic->io);
2843 free_varlist(parse->kv);
2847 CLK_UNIT(parse->peer), parse->parse_type->cl_description);
2849 parse->peer = (struct peer *)0; /* unused now */
2851 free(parse);
2860 struct parseunit *parse,
2864 if (parse->hardppsstate == mode)
2867 if (CLK_PPS(parse->peer) && (parse->flags & PARSE_PPSKERNEL)) {
2872 if (parse->flags & PARSE_CLEAR)
2878 if (time_pps_kcbind(parse->atom.handle, PPS_KC_HARDPPS, i,
2881 CLK_UNIT(parse->peer));
2885 CLK_UNIT(parse->peer), (mode == PARSE_HARDPPS_ENABLE) ? "en" : "dis");
2894 parse->hardppsstate = mode;
2902 struct parseunit *parse
2908 parse->flags &= (u_char) (~PARSE_PPSCLOCK);
2913 if (time_pps_getcap(parse->atom.handle, &cap) < 0) {
2915 CLK_UNIT(parse->peer));
2927 if (!refclock_params(parse->flags & (CLK_FLAG1|CLK_FLAG2|CLK_FLAG4), &parse->atom))
2934 if (parse->flags & PARSE_CLEAR) {
2943 CLK_UNIT(parse->peer), cp);
2947 CLK_UNIT(parse->peer), cp, cap);
2952 parse->atom.pps_params.clear_offset.tv_sec = (time_t)(-parse->ppsphaseadjust);
2953 parse->atom.pps_params.clear_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)parse->ppsphaseadjust));
2958 parse->atom.pps_params.assert_offset.tv_sec = (time_t)(-parse->ppsphaseadjust);
2959 parse->atom.pps_params.assert_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)parse->ppsphaseadjust));
2963 parse->atom.pps_params.mode |= mode_ppsoffset;
2965 if (time_pps_setparams(parse->atom.handle, &parse->atom.pps_params) < 0) {
2967 CLK_UNIT(parse->peer));
2971 parse->flags |= PARSE_PPSCLOCK;
2995 struct parseunit * parse;
3055 parse = emalloc_zero(sizeof(*parse));
3057 parse->generic = peer->procptr; /* link up */
3058 parse->generic->unitptr = (caddr_t)parse; /* link down */
3063 parse->generic->timestarted = current_time;
3064 parse->lastchange = current_time;
3066 parse->flags = 0;
3067 parse->pollneeddata = 0;
3068 parse->laststatistic = current_time;
3069 parse->lastformat = (unsigned short)~0; /* assume no format known */
3070 parse->timedata.parse_status = (unsigned short)~0; /* be sure to mark initial status change */
3071 parse->lastmissed = 0; /* assume got everything */
3072 parse->ppsserial = 0;
3073 parse->ppsfd = -1;
3074 parse->localdata = (void *)0;
3075 parse->localstate = 0;
3076 parse->kv = (struct ctl_var *)0;
3078 clear_err(parse, ERR_ALL);
3080 parse->parse_type = &parse_clockinfo[type];
3082 parse->maxunsync = parse->parse_type->cl_maxunsync;
3084 parse->generic->fudgetime1 = parse->parse_type->cl_basedelay;
3086 parse->generic->fudgetime2 = 0.0;
3087 parse->ppsphaseadjust = parse->generic->fudgetime2;
3088 parse->generic->fudgeminjitter = 0.0;
3090 parse->generic->clockdesc = parse->parse_type->cl_description;
3092 peer->rootdelay = parse->parse_type->cl_rootdelay;
3093 peer->sstclktype = parse->parse_type->cl_type;
3099 memmove((char *)&parse->generic->refid, parse->parse_type->cl_id, 4);
3101 parse->generic->refid = htonl(PARSEHSREFID);
3103 parse->generic->io.fd = fd232;
3105 parse->peer = peer; /* marks it also as busy */
3113 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3124 disablec = fpathconf(parse->generic->io.fd, _PC_VDISABLE);
3127 msyslog(LOG_ERR, "PARSE receiver #%d: parse_start: fpathconf(fd, _PC_VDISABLE): %m", CLK_UNIT(parse->peer));
3158 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3170 parse->ppsfd = tty_open(parseppsdev, O_RDWR | O_NOCTTY | O_NONBLOCK, 0777);
3172 if (parse->ppsfd == -1)
3174 parse->ppsfd = fd232;
3183 if (ioctl(parse->ppsfd, TIOCGSERIAL, &ss) < 0 ||
3193 ioctl(parse->ppsfd, TIOCSSERIAL, &ss)) < 0) {
3194 msyslog(LOG_NOTICE, "refclock_parse: TIOCSSERIAL fd %d, %m", parse->ppsfd);
3198 parse->flags |= PARSE_PPSCLOCK;
3212 if (CLK_PPS(parse->peer))
3216 if (ioctl(parse->ppsfd, TIOCSPPS, (caddr_t)&i) == 0)
3218 parse->flags |= PARSE_PPSCLOCK;
3227 parse->hardppsstate = PARSE_HARDPPS_DISABLE;
3228 if (CLK_PPS(parse->peer))
3230 if (!refclock_ppsapi(parse->ppsfd, &parse->atom))
3232 msyslog(LOG_NOTICE, "PARSE receiver #%d: parse_start: could not set up PPS: %m", CLK_UNIT(parse->peer));
3236 parse_ppsapi(parse);
3244 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3252 parse->generic->io.srcclock = peer;
3253 parse->generic->io.datalen = 0;
3255 parse->binding = init_iobinding(parse);
3257 if (parse->binding == (bind_t *)0)
3259 msyslog(LOG_ERR, "PARSE receiver #%d: parse_start: io sub system initialisation failed.", CLK_UNIT(parse->peer));
3260 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3264 parse->generic->io.clock_recv = parse->binding->bd_receive; /* pick correct receive routine */
3265 parse->generic->io.io_input = parse->binding->bd_io_input; /* pick correct input routine */
3294 if (!PARSE_SETCS(parse, &tmp_ctl))
3297 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3301 strlcpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format, sizeof(tmp_ctl.parseformat.parse_buffer));
3304 if (!PARSE_SETFMT(parse, &tmp_ctl))
3307 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3315 (void) tcflush(parse->generic->io.fd, TCIOFLUSH);
3321 (void) ioctl(parse->generic->io.fd, TCFLSH, (caddr_t)&flshcmd);
3329 if (parse->parse_type->cl_init)
3331 if (parse->parse_type->cl_init(parse))
3333 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3341 if (!io_addclock(&parse->generic->io))
3344 "PARSE receiver #%d: parse_start: addclock %s fails (ABORT - clock type requires async io)", CLK_UNIT(parse->peer), parsedev);
3345 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3356 CLK_UNIT(parse->peer),
3357 parse->parse_type->cl_description, parsedev,
3358 (parse->ppsfd != parse->generic->io.fd) ? parseppsdev : parsedev);
3361 CLK_UNIT(parse->peer),
3362 parse->peer->stratum,
3363 l_mktime(parse->maxunsync), parse->peer->precision);
3366 CLK_UNIT(parse->peer),
3367 parse->parse_type->cl_rootdelay,
3368 parse->generic->fudgetime1,
3369 parse->ppsphaseadjust,
3370 parse->binding->bd_description);
3372 msyslog(LOG_INFO, "PARSE receiver #%d: Format recognition: %s", CLK_UNIT(parse->peer),
3373 parse->parse_type->cl_format);
3374 msyslog(LOG_INFO, "PARSE receiver #%d: %sPPS support%s", CLK_UNIT(parse->peer),
3375 CLK_PPS(parse->peer) ? "" : "NO ",
3376 CLK_PPS(parse->peer) ?
3394 struct parseunit *parse,
3403 parse->flags = (parse->flags & (u_char)(~mask)) | (in->flags & mask);
3405 if (CLK_PPS(parse->peer))
3407 parse_ppsapi(parse);
3414 parse->generic->fudgetime1 = in->fudgetime1;
3416 CLK_UNIT(parse->peer),
3417 parse->generic->fudgetime1);
3422 parse->generic->fudgetime2 = in->fudgetime2;
3423 if (parse->flags & PARSE_TRUSTTIME)
3425 parse->maxunsync = (u_long)ABS(in->fudgetime2);
3427 CLK_UNIT(parse->peer),
3428 l_mktime(parse->maxunsync));
3432 parse->ppsphaseadjust = in->fudgetime2;
3434 CLK_UNIT(parse->peer),
3435 parse->ppsphaseadjust);
3437 if (CLK_PPS(parse->peer))
3439 parse_ppsapi(parse);
3445 parse->generic->fudgeminjitter = in->fudgeminjitter;
3458 struct parseunit *parse = peer->procptr->unitptr;
3460 if (peer != parse->peer)
3471 parse->generic->polls++;
3473 if (parse->pollneeddata &&
3474 ((int)(current_time - parse->pollneeddata) > (1<<(max(min(parse->peer->hpoll, parse->peer->ppoll), parse->peer->minpoll)))))
3480 parse->lastmissed = current_time;
3481 parse_event(parse, CEVNT_TIMEOUT);
3484 msyslog(LOG_WARNING, "PARSE receiver #%d: no data from device within poll interval (check receiver / wiring)", CLK_UNIT(parse->peer));
3490 parse->pollneeddata = current_time;
3492 if (parse->parse_type->cl_poll)
3494 parse->parse_type->cl_poll(parse);
3497 cparse_statistics(parse);
3515 struct parseunit *parse = peer->procptr->unitptr;
3527 if (!parse || !parse->peer)
3534 unit = CLK_UNIT(parse->peer);
3539 parse_ctl(parse, in);
3557 parse->generic->fudgetime2 = (parse->flags & PARSE_TRUSTTIME) ? (double)parse->maxunsync : parse->ppsphaseadjust;
3563 if (PARSE_SYNC(parse->timedata.parse_state))
3565 if (PARSE_PPS(parse->timedata.parse_state) && PARSE_TIMECODE(parse->timedata.parse_state))
3573 off = parse->timedata.parse_stime.fp;
3574 L_SUB(&off, &parse->timedata.parse_ptime.fp); /* true offset */
3580 if (PARSE_PPS(parse->timedata.parse_state))
3583 snprintf(tt, 80, "refclock_ppstime=\"%s\"", gmprettydate(&parse->timedata.parse_ptime.fp));
3589 if (parse->timedata.parse_time.fp.l_ui == 0)
3596 gmprettydate(&parse->timedata.parse_time.fp));
3599 if (!PARSE_GETTIMECODE(parse, &tmpctl))
3612 tmpctl.parsegettc.parse_state |= parse->timedata.parse_state &
3629 if (!PARSE_GETFMT(parse, &tmpctl))
3663 u_long d = current_time - parse->generic->timestarted;
3666 percent = s_time = PARSE_STATETIME(parse, i);
3686 (parse->generic->currentstatus == i) ? "*" : "",
3702 snprintf(tt, 32, "refclock_id=\"%s\"", parse->parse_type->cl_id);
3705 snprintf(tt, 80, "refclock_iomode=\"%s\"", parse->binding->bd_description);
3713 k = parse->kv;
3736 struct parseunit *parse,
3740 if (parse->generic->currentstatus != (u_char) event)
3742 parse->statetime[parse->generic->currentstatus] += current_time - parse->lastchange;
3743 parse->lastchange = current_time;
3745 if (parse->parse_type->cl_event)
3746 parse->parse_type->cl_event(parse, event);
3752 CLK_UNIT(parse->peer));
3755 refclock_report(parse->peer, event);
3764 struct parseunit *parse,
3780 (parse->timedata.parse_status != parsetime->parse_status))
3786 CLK_UNIT(parse->peer), parsestatus(parsetime->parse_status, buffer, sizeof(buffer)));
3797 if (!PARSE_GETTIMECODE(parse, &tmpctl))
3800 msyslog(LOG_ERR, "PARSE receiver #%d: parse_process: parse_timecode() FAILED", CLK_UNIT(parse->peer));
3809 CLK_UNIT(parse->peer),
3814 parse->timedata.parse_status = parsetime->parse_status;
3830 parse->parse_type->cl_message)
3831 parse->parse_type->cl_message(parse, parsetime);
3837 parse->timedata.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
3838 parse->timedata.parse_ptime = parsetime->parse_ptime;
3845 parse_event(parse, CEVNT_BADREPLY);
3850 parse_event(parse, CEVNT_BADDATE);
3855 parse_event(parse, CEVNT_BADTIME);
3859 parse_event(parse, CEVNT_BADREPLY); /* for the lack of something better */
3869 if (parse->lastformat != parsetime->parse_format)
3875 if (!PARSE_GETFMT(parse, &tmpctl))
3878 msyslog(LOG_ERR, "PARSE receiver #%d: parse_getfmt() FAILED", CLK_UNIT(parse->peer));
3884 CLK_UNIT(parse->peer), tmpctl.parseformat.parse_buffer);
3886 parse->lastformat = parsetime->parse_format;
3892 if ((parse->timedata.parse_state ^ parsetime->parse_state) &
3902 (void) parsestate(parse->timedata.parse_state, tmp2, sizeof(tmp2));
3906 CLK_UNIT(parse->peer), tmp2, tmp1);
3912 if (PARSE_PPS(parse->timedata.parse_state) && !PARSE_PPS(parsetime->parse_state))
3915 parsetime->parse_ptime = parse->timedata.parse_ptime;
3921 parse->timedata = *parsetime;
3957 parse_event(parse, CEVNT_FAULT);
3961 CLK_UNIT(parse->peer));
3989 parse->lastsync = current_time;
3990 clear_err(parse, ERR_BADSTATUS);
3997 parse_event(parse, CEVNT_PROP);
4001 CLK_UNIT(parse->peer));
4005 fudge = parse->generic->fudgetime1; /* standard RS232 Fudgefactor */
4017 CLK_UNIT(parse->peer),
4024 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
4027 double ppsphaseadjust = parse->ppsphaseadjust;
4033 if (parse->atom.pps_params.mode & (PPS_OFFSETCLEAR|PPS_OFFSETASSERT))
4047 CLK_UNIT(parse->peer),
4061 if (parse->parse_type->cl_flags & PARSE_F_PPSONSECOND)
4116 parse->parse_type->cl_message)
4117 parse->parse_type->cl_message(parse, parsetime);
4125 CLK_UNIT(parse->peer),
4138 CLK_UNIT(parse->peer),
4144 parse->parse_type->cl_message)
4145 parse->parse_type->cl_message(parse, parsetime);
4152 parse_event(parse, CEVNT_NOMINAL);
4155 clear_err(parse, ERR_BADIO);
4156 clear_err(parse, ERR_BADDATA);
4157 clear_err(parse, ERR_NODATA);
4158 clear_err(parse, ERR_INTERNAL);
4169 if (((current_time - parse->lastsync) > parse->maxunsync) ||
4170 (parse->lastsync < parse->lastmissed) ||
4171 ((parse->lastsync == 0) && !PARSE_SYNC(parsetime->parse_state)) ||
4172 (((parse->parse_type->cl_flags & PARSE_F_POWERUPTRUST) == 0) &&
4175 parse->generic->leap = LEAP_NOTINSYNC;
4176 parse->lastsync = 0; /* wait for full sync again */
4187 parse->generic->leap = (parse->flags & PARSE_LEAP_DELETE) ? LEAP_DELSECOND : LEAP_ADDSECOND;
4192 parse->generic->leap = LEAP_DELSECOND;
4196 parse->generic->leap = LEAP_NOWARNING;
4200 if (parse->generic->leap != LEAP_NOTINSYNC)
4209 CLK_UNIT(parse->peer),
4215 parse->generic->lastref = reftime;
4217 refclock_process_offset(parse->generic, reftime, rectime, fudge);
4223 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
4225 parse->peer->flags |= (FLAG_PPS | FLAG_TSTAMP_PPS);
4226 parse_hardpps(parse, PARSE_HARDPPS_ENABLE);
4230 parse_hardpps(parse, PARSE_HARDPPS_DISABLE);
4231 parse->peer->flags &= ~(FLAG_PPS | FLAG_TSTAMP_PPS);
4238 if (!parse->pollneeddata && parse->peer->disp <= MAXDISTANCE)
4241 parse->pollneeddata = 0;
4243 parse->timedata.parse_state &= ~(unsigned)(PARSEB_PPS|PARSEB_S_PPS);
4245 refclock_receive(parse->peer);
4319 struct parseunit *parse,
4323 if (parse->timedata.parse_msglen && parsetime->parse_msg[0] == SOH)
4335 CLK_UNIT(parse->peer),
4362 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
4416 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
4431 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4447 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4482 CLK_UNIT(parse->peer), p);
4511 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4537 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4545 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4553 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4600 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4633 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4657 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4670 CLK_UNIT(parse->peer),
4688 struct parseunit *parse = peer->procptr->unitptr;
4708 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4710 parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rate;
4713 if (sequence[parse->localstate].cmd == (unsigned short)~0)
4714 parse->localstate = 0;
4716 header = sequence + parse->localstate++;
4733 CLK_UNIT(parse->peer),
4734 parse->localstate - 1,
4740 rtc = (int) write(parse->generic->io.fd, cmd_buffer, (unsigned long)(outp - cmd_buffer));
4745 msyslog(LOG_ERR, "PARSE receiver #%d: gps16x_poll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4751 msyslog(LOG_ERR, "PARSE receiver #%d: gps16x_poll: failed to send cmd incomplete (%d of %d bytes sent)", CLK_UNIT(parse->peer), rtc, (int)(outp - cmd_buffer));
4754 clear_err(parse, ERR_BADIO);
4763 struct parseunit *parse
4766 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4768 parse->peer->procptr->action = gps16x_poll;
4769 gps16x_poll(parse->peer);
4778 struct parseunit *parse,
4784 struct parseunit *parse
4800 struct parseunit *parse
4804 const char *ps = ((poll_info_t *)parse->parse_type->cl_data)->string;
4805 long ct = ((poll_info_t *)parse->parse_type->cl_data)->count;
4807 rtc = write(parse->generic->io.fd, ps, ct);
4811 msyslog(LOG_ERR, "PARSE receiver #%d: poll_dpoll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4817 msyslog(LOG_ERR, "PARSE receiver #%d: poll_dpoll: failed to send cmd incomplete (%ld of %ld bytes sent)", CLK_UNIT(parse->peer), rtc, ct);
4819 clear_err(parse, ERR_BADIO);
4830 struct parseunit *parse = peer->procptr->unitptr;
4832 if (parse->parse_type->cl_poll)
4833 parse->parse_type->cl_poll(parse);
4835 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4837 parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rate;
4846 struct parseunit *parse
4849 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4851 parse->peer->procptr->action = poll_poll;
4852 poll_poll(parse->peer);
4867 struct parseunit *parse
4879 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1)
4881 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcgetattr(fd, &tio): %m", CLK_UNIT(parse->peer));
4888 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1)
4890 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcsetattr(fd, &tio): %m", CLK_UNIT(parse->peer));
4894 return poll_init(parse);
4909 struct parseunit *parse,
4923 int rtc = (int) write(parse->generic->io.fd, *iv, strlen(*iv));
4926 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_event: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4934 CLK_UNIT(parse->peer), rtc, (int)strlen(*iv));
4944 CLK_UNIT(parse->peer));
5060 void sendetx (struct txbuf *buf, struct parseunit *parse);
5077 void sendetx (struct txbuf *buf, struct parseunit *parse);
5095 struct parseunit *parse
5101 if (write(parse->generic->io.fd, buf->txt, (unsigned long)buf->idx) != buf->idx)
5104 msyslog(LOG_ERR, "PARSE receiver #%d: sendetx: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
5115 CLK_UNIT(parse->peer),
5119 clear_err(parse, ERR_BADIO);
5160 struct parseunit *parse,
5166 trimble_t *t = parse->localdata;
5179 sendetx(&buf, parse);
5187 sendetx(&buf, parse);
5191 sendetx(&buf, parse);
5194 sendetx(&buf, parse);
5198 sendetx(&buf, parse);
5205 sendetx(&buf, parse);
5208 sendetx(&buf, parse);
5212 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_setup: RECEIVER RE-INITIALIZED (%s)", CLK_UNIT(parse->peer), reason);
5225 struct parseunit *parse = peer->procptr->unitptr;
5226 trimble_t *t = parse->localdata;
5234 (void)trimbletsip_setup(parse, "message timeout");
5237 poll_poll(parse->peer); /* emit query string and re-arm timer */
5255 sendetx(&buf, parse);
5263 sendetx(&buf, parse);
5272 struct parseunit *parse
5274 { trimble_t *t = parse->localdata;
5279 parse->localdata = NULL;
5281 parse->peer->procptr->nextaction = 0;
5282 parse->peer->procptr->action = NULL;
5290 struct parseunit *parse
5303 if (!parse->localdata)
5307 t = (trimble_t *)(parse->localdata = emalloc(sizeof(trimble_t)));
5316 parse->peer->procptr->action = trimble_check;
5317 parse->peer->procptr->nextaction = current_time;
5322 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1)
5324 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_init: tcgetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->io.fd);
5329 if ((parse_clockinfo[CLK_TYPE(parse->peer)].cl_lflag & ICANON))
5339 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1)
5341 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_init: tcsetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->io.fd);
5346 return trimbletsip_setup(parse, "initial startup");
5355 struct parseunit *parse,
5363 (void)trimbletsip_setup(parse, "event BAD_REPLY/TIMEOUT");
5448 struct parseunit *parse,
5477 trimble_t *tr = parse->localdata;
5689 (void)trimbletsip_setup(parse, "bad io options");
5836 set_var(&parse->kv, pbuffer, sizeof(pbuffer), var_flag);
5852 struct parseunit *parse
5863 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1)
5865 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer));
5875 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1)
5877 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer));
5884 struct parseunit *parse
5887 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: OS interface incapable of setting DTR to power DCF modules", CLK_UNIT(parse->peer));
5899 struct parseunit *parse
5910 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1)
5912 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer));
5922 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1)
5924 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer));
5931 struct parseunit *parse
5934 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: OS interface incapable of setting RTS to power DCF modules", CLK_UNIT(parse->peer));
5983 * terminate parse io engine after de-registering