Lines Matching defs:parse

188  * then some more parse-specific variables are flagged to be printed with
201 #include "parse.h"
304 #define ERR(_X_) if (list_err(parse, (_X_)))
401 * parse state
428 parsetime_t timedata; /* last (parse module) data */
1535 #define PARSE_STATETIME(parse, i) ((parse->generic->currentstatus == i) ? parse->statetime[i] + current_time - parse->lastchange : parse->statetime[i])
1548 struct parseunit *parse,
1558 parse->errors[i].err_stage = err_tbl[i];
1559 parse->errors[i].err_cnt = 0;
1560 parse->errors[i].err_last = 0;
1561 parse->errors[i].err_started = 0;
1562 parse->errors[i].err_suppressed = 0;
1567 parse->errors[lstate].err_stage = err_tbl[lstate];
1568 parse->errors[lstate].err_cnt = 0;
1569 parse->errors[lstate].err_last = 0;
1570 parse->errors[lstate].err_started = 0;
1571 parse->errors[lstate].err_suppressed = 0;
1577 struct parseunit *parse,
1582 struct errorinfo *err = &parse->errors[lstate];
1603 CLK_UNIT(parse->peer), l_mktime(err->err_stage->err_delay));
1613 CLK_UNIT(parse->peer), err->err_suppressed, (err->err_suppressed == 1) ? " was" : "s where",
1747 "parse STREAM",
1808 struct parseunit *parse
1815 * now push the parse streams module
1818 if (ioctl(parse->ppsfd, I_PUSH, (caddr_t)m1) == -1 &&
1819 ioctl(parse->ppsfd, I_PUSH, (caddr_t)m2) == -1)
1824 CLK_UNIT(parse->peer));
1828 if (!local_init(parse))
1830 (void)ioctl(parse->ppsfd, I_POP, (caddr_t)0);
1834 parse->flags |= PARSE_PPSCLOCK;
1839 * parse STREAM init
1843 struct parseunit *parse
1846 static char m1[] = "parse";
1848 * now push the parse streams module
1851 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1)
1855 msyslog(LOG_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer));
1861 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0)
1868 if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1)
1870 msyslog(LOG_ERR, "PARSE receiver #%d: stream_init: ioctl(fd, I_PUSH, \"parse\"): %m", CLK_UNIT(parse->peer));
1881 * parse STREAM end
1885 struct parseunit *parse
1888 while(ioctl(parse->generic->io.fd, I_POP, (caddr_t)0) == 0)
1897 struct parseunit *parse,
1908 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1910 msyslog(LOG_ERR, "PARSE receiver #%d: stream_setcs: ioctl(fd, I_STR, PARSEIOC_SETCS): %m", CLK_UNIT(parse->peer));
1921 struct parseunit *parse
1931 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1933 msyslog(LOG_ERR, "PARSE receiver #%d: stream_enable: ioctl(fd, I_STR, PARSEIOC_ENABLE): %m", CLK_UNIT(parse->peer));
1936 parse->generic->io.clock_recv = stream_receive; /* ok - parse input in kernel */
1945 struct parseunit *parse
1955 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1957 msyslog(LOG_ERR, "PARSE receiver #%d: stream_disable: ioctl(fd, I_STR, PARSEIOC_DISABLE): %m", CLK_UNIT(parse->peer));
1960 parse->generic->io.clock_recv = local_receive; /* ok - parse input in daemon */
1969 struct parseunit *parse,
1979 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
1981 msyslog(LOG_ERR, "PARSE receiver #%d: ioctl(fd, I_STR, PARSEIOC_GETFMT): %m", CLK_UNIT(parse->peer));
1992 struct parseunit *parse,
2003 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
2005 msyslog(LOG_ERR, "PARSE receiver #%d: stream_setfmt: ioctl(fd, I_STR, PARSEIOC_SETFMT): %m", CLK_UNIT(parse->peer));
2017 struct parseunit *parse,
2028 if (ioctl(parse->generic->io.fd, I_STR, (caddr_t)&strioc) == -1)
2031 msyslog(LOG_ERR, "PARSE receiver #%d: stream_timecode: ioctl(fd, I_STR, PARSEIOC_TIMECODE): %m", CLK_UNIT(parse->peer));
2034 clear_err(parse, ERR_INTERNAL);
2046 struct parseunit * parse;
2049 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2050 if (!parse->peer)
2057 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
2058 parse_event(parse, CEVNT_BADREPLY);
2061 clear_err(parse, ERR_BADIO);
2071 CLK_UNIT(parse->peer),
2100 parse_process(parse, &parsetime);
2109 struct parseunit *parse
2112 return parse_ioinit(&parse->parseio);
2120 struct parseunit *parse
2123 parse_ioend(&parse->parseio);
2132 struct parseunit *parse
2143 struct parseunit *parse,
2147 return parse_setcs(tcl, &parse->parseio);
2155 struct parseunit *parse,
2159 return parse_getfmt(tcl, &parse->parseio);
2167 struct parseunit *parse,
2171 return parse_setfmt(tcl, &parse->parseio);
2179 struct parseunit *parse,
2183 return parse_timecode(tcl, &parse->parseio);
2195 struct parseunit * parse;
2201 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2202 if (!parse->peer)
2214 if (parse_ioread(&parse->parseio, (unsigned int)(*s++), &ts))
2221 if (!PARSE_PPS(parse->parseio.parse_dtime.parse_state))
2224 if (parse->flags & PARSE_PPSCLOCK)
2232 if (time_pps_fetch(parse->atom.handle, PPS_TSFMT_TSPEC, &pps_info,
2235 if (pps_info.assert_sequence + pps_info.clear_sequence != parse->ppsserial)
2244 if (parse->flags & PARSE_CLEAR)
2249 parse->parseio.parse_dtime.parse_ptime.fp.l_ui = (uint32_t) (pts.tv_sec + JAN_1970);
2254 parse->parseio.parse_dtime.parse_ptime.fp.l_ui--;
2258 parse->parseio.parse_dtime.parse_ptime.fp.l_ui++;
2260 parse->parseio.parse_dtime.parse_ptime.fp.l_uf = (uint32_t)(dtemp * FRAC);
2262 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2267 "parse: local_receive: fd %ld PPSAPI seq %ld - PPS %s\n",
2270 lfptoa(&parse->parseio.parse_dtime.parse_ptime.fp, 6));
2280 "parse: local_receive: fd %ld PPSAPI seq assert %ld, seq clear %ld - NO PPS event\n",
2286 parse->ppsserial = pps_info.assert_sequence + pps_info.clear_sequence;
2294 "parse: local_receive: fd %ld PPSAPI time_pps_fetch errno = %d\n",
2305 if (ioctl(parse->ppsfd, TIOCDCDTIMESTAMP, &dcd_time) != -1)
2318 "parse: local_receive: fd %d DCDTIMESTAMP %s\n",
2319 parse->ppsfd,
2325 parse->parseio.parse_dtime.parse_ptime.fp = tstmp;
2326 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2331 if (parse->flags & PARSE_PPSCLOCK)
2337 if (ioctl(parse->ppsfd, CIOGETEV, (caddr_t)&ev) == 0)
2340 if (ioctl(parse->ppsfd, TIOCGPPSEV, (caddr_t)&ev) == 0)
2343 if (ev.serial != parse->ppsserial)
2352 msyslog(LOG_ERR,"parse: local_receive: timestamp conversion error (buftvtots) (ppsclockev.tv)");
2356 parse->parseio.parse_dtime.parse_ptime.fp = tts;
2357 parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
2360 parse->ppsserial = ev.serial;
2372 (caddr_t)&parse->parseio.parse_dtime,
2383 parse->generic->io.recvcount++;
2390 parse_iodone(&parse->parseio);
2395 (caddr_t)&parse->parseio.parse_dtime,
2397 parse_iodone(&parse->parseio);
2414 struct parseunit * parse;
2417 parse = (struct parseunit *)rbufp->recv_peer->procptr->unitptr;
2418 if (!parse->peer)
2425 CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
2426 parse_event(parse, CEVNT_BADREPLY);
2429 clear_err(parse, ERR_BADIO);
2439 CLK_UNIT(parse->peer),
2451 parse_process(parse, &parsetime);
2459 struct parseunit *parse
2466 if ((*b->bd_init)(parse))
2723 struct parseunit *parse
2731 CLK_UNIT(parse->peer),
2732 l_mktime(current_time - parse->generic->timestarted));
2735 CLK_UNIT(parse->peer),
2736 clockstatus(parse->generic->currentstatus));
2741 u_long percent, d = current_time - parse->generic->timestarted;
2743 percent = s_time = PARSE_STATETIME(parse, i);
2758 CLK_UNIT(parse->peer),
2771 struct parseunit *parse
2774 if (parse->laststatistic + PARSESTATISTICS < current_time)
2775 parse_statistics(parse);
2776 parse->laststatistic = current_time;
2792 struct parseunit *parse = NULL;
2795 parse = peer->procptr->unitptr;
2797 if (!parse)
2803 if (!parse->peer)
2810 if (parse->flags & PARSE_PPSCLOCK)
2812 (void)time_pps_destroy(parse->atom.handle);
2815 if (parse->generic->io.fd != parse->ppsfd && parse->ppsfd != -1)
2816 (void)closeserial(parse->ppsfd); /* close separate PPS source */
2822 parse_statistics(parse);
2824 if (parse->parse_type->cl_end)
2826 parse->parse_type->cl_end(parse);
2832 if (parse->binding)
2833 PARSE_END(parse);
2838 io_closeclock(&parse->generic->io);
2840 free_varlist(parse->kv);
2844 CLK_UNIT(parse->peer), parse->parse_type->cl_description);
2846 parse->peer = (struct peer *)0; /* unused now */
2848 free(parse);
2857 struct parseunit *parse,
2861 if (parse->hardppsstate == mode)
2864 if (CLK_PPS(parse->peer) && (parse->flags & PARSE_PPSKERNEL)) {
2869 if (parse->flags & PARSE_CLEAR)
2875 if (time_pps_kcbind(parse->atom.handle, PPS_KC_HARDPPS, i,
2878 CLK_UNIT(parse->peer));
2882 CLK_UNIT(parse->peer), (mode == PARSE_HARDPPS_ENABLE) ? "en" : "dis");
2891 parse->hardppsstate = mode;
2899 struct parseunit *parse
2905 parse->flags &= (u_char) (~PARSE_PPSCLOCK);
2910 if (time_pps_getcap(parse->atom.handle, &cap) < 0) {
2912 CLK_UNIT(parse->peer));
2924 if (!refclock_params(parse->flags & (CLK_FLAG1|CLK_FLAG2|CLK_FLAG4), &parse->atom))
2931 if (parse->flags & PARSE_CLEAR) {
2940 CLK_UNIT(parse->peer), cp);
2944 CLK_UNIT(parse->peer), cp, cap);
2949 parse->atom.pps_params.clear_offset.tv_sec = (time_t)(-parse->ppsphaseadjust);
2950 parse->atom.pps_params.clear_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)parse->ppsphaseadjust));
2955 parse->atom.pps_params.assert_offset.tv_sec = (time_t)(-parse->ppsphaseadjust);
2956 parse->atom.pps_params.assert_offset.tv_nsec = (long)(-1e9*(parse->ppsphaseadjust - (double)(long)parse->ppsphaseadjust));
2960 parse->atom.pps_params.mode |= mode_ppsoffset;
2962 if (time_pps_setparams(parse->atom.handle, &parse->atom.pps_params) < 0) {
2964 CLK_UNIT(parse->peer));
2968 parse->flags |= PARSE_PPSCLOCK;
2992 struct parseunit * parse;
3039 parse = emalloc_zero(sizeof(*parse));
3041 parse->generic = peer->procptr; /* link up */
3042 parse->generic->unitptr = (caddr_t)parse; /* link down */
3047 parse->generic->timestarted = current_time;
3048 parse->lastchange = current_time;
3050 parse->flags = 0;
3051 parse->pollneeddata = 0;
3052 parse->laststatistic = current_time;
3053 parse->lastformat = (unsigned short)~0; /* assume no format known */
3054 parse->timedata.parse_status = (unsigned short)~0; /* be sure to mark initial status change */
3055 parse->lastmissed = 0; /* assume got everything */
3056 parse->ppsserial = 0;
3057 parse->ppsfd = -1;
3058 parse->localdata = (void *)0;
3059 parse->localstate = 0;
3060 parse->kv = (struct ctl_var *)0;
3062 clear_err(parse, ERR_ALL);
3064 parse->parse_type = &parse_clockinfo[type];
3066 parse->maxunsync = parse->parse_type->cl_maxunsync;
3068 parse->generic->fudgetime1 = parse->parse_type->cl_basedelay;
3070 parse->generic->fudgetime2 = 0.0;
3071 parse->ppsphaseadjust = parse->generic->fudgetime2;
3073 parse->generic->clockdesc = parse->parse_type->cl_description;
3075 peer->rootdelay = parse->parse_type->cl_rootdelay;
3076 peer->sstclktype = parse->parse_type->cl_type;
3082 memmove((char *)&parse->generic->refid, parse->parse_type->cl_id, 4);
3084 parse->generic->refid = htonl(PARSEHSREFID);
3086 parse->generic->io.fd = fd232;
3088 parse->peer = peer; /* marks it also as busy */
3096 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3107 disablec = fpathconf(parse->generic->io.fd, _PC_VDISABLE);
3110 msyslog(LOG_ERR, "PARSE receiver #%d: parse_start: fpathconf(fd, _PC_VDISABLE): %m", CLK_UNIT(parse->peer));
3141 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3153 parse->ppsfd = tty_open(parseppsdev, O_RDWR | O_NOCTTY | O_NONBLOCK, 0777);
3155 if (parse->ppsfd == -1)
3157 parse->ppsfd = fd232;
3166 if (ioctl(parse->ppsfd, TIOCGSERIAL, &ss) < 0 ||
3176 ioctl(parse->ppsfd, TIOCSSERIAL, &ss)) < 0) {
3177 msyslog(LOG_NOTICE, "refclock_parse: TIOCSSERIAL fd %d, %m", parse->ppsfd);
3181 parse->flags |= PARSE_PPSCLOCK;
3195 if (CLK_PPS(parse->peer))
3199 if (ioctl(parse->ppsfd, TIOCSPPS, (caddr_t)&i) == 0)
3201 parse->flags |= PARSE_PPSCLOCK;
3210 parse->hardppsstate = PARSE_HARDPPS_DISABLE;
3211 if (CLK_PPS(parse->peer))
3213 if (!refclock_ppsapi(parse->ppsfd, &parse->atom))
3215 msyslog(LOG_NOTICE, "PARSE receiver #%d: parse_start: could not set up PPS: %m", CLK_UNIT(parse->peer));
3219 parse_ppsapi(parse);
3227 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3235 parse->generic->io.srcclock = peer;
3236 parse->generic->io.datalen = 0;
3238 parse->binding = init_iobinding(parse);
3240 if (parse->binding == (bind_t *)0)
3242 msyslog(LOG_ERR, "PARSE receiver #%d: parse_start: io sub system initialisation failed.", CLK_UNIT(parse->peer));
3243 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3247 parse->generic->io.clock_recv = parse->binding->bd_receive; /* pick correct receive routine */
3248 parse->generic->io.io_input = parse->binding->bd_io_input; /* pick correct input routine */
3277 if (!PARSE_SETCS(parse, &tmp_ctl))
3280 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3284 strlcpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format, sizeof(tmp_ctl.parseformat.parse_buffer));
3287 if (!PARSE_SETFMT(parse, &tmp_ctl))
3290 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3298 (void) tcflush(parse->generic->io.fd, TCIOFLUSH);
3304 (void) ioctl(parse->generic->io.fd, TCFLSH, (caddr_t)&flshcmd);
3312 if (parse->parse_type->cl_init)
3314 if (parse->parse_type->cl_init(parse))
3316 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3324 if (!io_addclock(&parse->generic->io))
3327 "PARSE receiver #%d: parse_start: addclock %s fails (ABORT - clock type requires async io)", CLK_UNIT(parse->peer), parsedev);
3328 parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
3339 CLK_UNIT(parse->peer),
3340 parse->parse_type->cl_description, parsedev,
3341 (parse->ppsfd != parse->generic->io.fd) ? parseppsdev : parsedev);
3344 CLK_UNIT(parse->peer),
3345 parse->peer->stratum,
3346 l_mktime(parse->maxunsync), parse->peer->precision);
3349 CLK_UNIT(parse->peer),
3350 parse->parse_type->cl_rootdelay,
3351 parse->generic->fudgetime1,
3352 parse->ppsphaseadjust,
3353 parse->binding->bd_description);
3355 msyslog(LOG_INFO, "PARSE receiver #%d: Format recognition: %s", CLK_UNIT(parse->peer),
3356 parse->parse_type->cl_format);
3357 msyslog(LOG_INFO, "PARSE receiver #%d: %sPPS support%s", CLK_UNIT(parse->peer),
3358 CLK_PPS(parse->peer) ? "" : "NO ",
3359 CLK_PPS(parse->peer) ?
3377 struct parseunit *parse,
3386 parse->flags = (parse->flags & (u_char)(~mask)) | (in->flags & mask);
3388 if (CLK_PPS(parse->peer))
3390 parse_ppsapi(parse);
3397 parse->generic->fudgetime1 = in->fudgetime1;
3399 CLK_UNIT(parse->peer),
3400 parse->generic->fudgetime1);
3405 parse->generic->fudgetime2 = in->fudgetime2;
3406 if (parse->flags & PARSE_TRUSTTIME)
3408 parse->maxunsync = (u_long)ABS(in->fudgetime2);
3410 CLK_UNIT(parse->peer),
3411 l_mktime(parse->maxunsync));
3415 parse->ppsphaseadjust = in->fudgetime2;
3417 CLK_UNIT(parse->peer),
3418 parse->ppsphaseadjust);
3420 if (CLK_PPS(parse->peer))
3422 parse_ppsapi(parse);
3439 struct parseunit *parse = peer->procptr->unitptr;
3441 if (peer != parse->peer)
3452 parse->generic->polls++;
3454 if (parse->pollneeddata &&
3455 ((int)(current_time - parse->pollneeddata) > (1<<(max(min(parse->peer->hpoll, parse->peer->ppoll), parse->peer->minpoll)))))
3461 parse->lastmissed = current_time;
3462 parse_event(parse, CEVNT_TIMEOUT);
3465 msyslog(LOG_WARNING, "PARSE receiver #%d: no data from device within poll interval (check receiver / wiring)", CLK_UNIT(parse->peer));
3471 parse->pollneeddata = current_time;
3473 if (parse->parse_type->cl_poll)
3475 parse->parse_type->cl_poll(parse);
3478 cparse_statistics(parse);
3496 struct parseunit *parse = peer->procptr->unitptr;
3508 if (!parse || !parse->peer)
3515 unit = CLK_UNIT(parse->peer);
3520 parse_ctl(parse, in);
3538 parse->generic->fudgetime2 = (parse->flags & PARSE_TRUSTTIME) ? (double)parse->maxunsync : parse->ppsphaseadjust;
3544 if (PARSE_SYNC(parse->timedata.parse_state))
3546 if (PARSE_PPS(parse->timedata.parse_state) && PARSE_TIMECODE(parse->timedata.parse_state))
3554 off = parse->timedata.parse_stime.fp;
3555 L_SUB(&off, &parse->timedata.parse_ptime.fp); /* true offset */
3561 if (PARSE_PPS(parse->timedata.parse_state))
3564 snprintf(tt, 80, "refclock_ppstime=\"%s\"", gmprettydate(&parse->timedata.parse_ptime.fp));
3570 if (parse->timedata.parse_time.fp.l_ui == 0)
3577 gmprettydate(&parse->timedata.parse_time.fp));
3580 if (!PARSE_GETTIMECODE(parse, &tmpctl))
3593 tmpctl.parsegettc.parse_state |= parse->timedata.parse_state &
3610 if (!PARSE_GETFMT(parse, &tmpctl))
3642 u_long d = current_time - parse->generic->timestarted;
3645 percent = s_time = PARSE_STATETIME(parse, i);
3665 (parse->generic->currentstatus == i) ? "*" : "",
3682 snprintf(tt, 32, "refclock_id=\"%s\"", parse->parse_type->cl_id);
3685 snprintf(tt, 80, "refclock_iomode=\"%s\"", parse->binding->bd_description);
3693 k = parse->kv;
3716 struct parseunit *parse,
3720 if (parse->generic->currentstatus != (u_char) event)
3722 parse->statetime[parse->generic->currentstatus] += current_time - parse->lastchange;
3723 parse->lastchange = current_time;
3725 if (parse->parse_type->cl_event)
3726 parse->parse_type->cl_event(parse, event);
3732 CLK_UNIT(parse->peer));
3735 refclock_report(parse->peer, event);
3744 struct parseunit *parse,
3760 (parse->timedata.parse_status != parsetime->parse_status))
3766 CLK_UNIT(parse->peer), parsestatus(parsetime->parse_status, buffer, sizeof(buffer)));
3777 if (!PARSE_GETTIMECODE(parse, &tmpctl))
3780 msyslog(LOG_ERR, "PARSE receiver #%d: parse_process: parse_timecode() FAILED", CLK_UNIT(parse->peer));
3786 CLK_UNIT(parse->peer), mkascii(buffer, sizeof buffer, tmpctl.parsegettc.parse_buffer, (unsigned)(tmpctl.parsegettc.parse_count - 1)));
3789 parse->timedata.parse_status = parsetime->parse_status;
3805 parse->parse_type->cl_message)
3806 parse->parse_type->cl_message(parse, parsetime);
3812 parse->timedata.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
3813 parse->timedata.parse_ptime = parsetime->parse_ptime;
3820 parse_event(parse, CEVNT_BADREPLY);
3825 parse_event(parse, CEVNT_BADDATE);
3830 parse_event(parse, CEVNT_BADTIME);
3834 parse_event(parse, CEVNT_BADREPLY); /* for the lack of something better */
3844 if (parse->lastformat != parsetime->parse_format)
3850 if (!PARSE_GETFMT(parse, &tmpctl))
3853 msyslog(LOG_ERR, "PARSE receiver #%d: parse_getfmt() FAILED", CLK_UNIT(parse->peer));
3859 CLK_UNIT(parse->peer), tmpctl.parseformat.parse_buffer);
3861 parse->lastformat = parsetime->parse_format;
3867 if ((parse->timedata.parse_state ^ parsetime->parse_state) &
3877 (void) parsestate(parse->timedata.parse_state, tmp2, sizeof(tmp2));
3881 CLK_UNIT(parse->peer), tmp2, tmp1);
3887 if (PARSE_PPS(parse->timedata.parse_state) && !PARSE_PPS(parsetime->parse_state))
3890 parsetime->parse_ptime = parse->timedata.parse_ptime;
3896 parse->timedata = *parsetime;
3932 parse_event(parse, CEVNT_FAULT);
3936 CLK_UNIT(parse->peer));
3964 parse->lastsync = current_time;
3965 clear_err(parse, ERR_BADSTATUS);
3972 parse_event(parse, CEVNT_PROP);
3976 CLK_UNIT(parse->peer));
3980 fudge = parse->generic->fudgetime1; /* standard RS232 Fudgefactor */
3992 CLK_UNIT(parse->peer),
3999 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
4002 double ppsphaseadjust = parse->ppsphaseadjust;
4008 if (parse->atom.pps_params.mode & (PPS_OFFSETCLEAR|PPS_OFFSETASSERT))
4022 CLK_UNIT(parse->peer),
4036 if (parse->parse_type->cl_flags & PARSE_F_PPSONSECOND)
4091 parse->parse_type->cl_message)
4092 parse->parse_type->cl_message(parse, parsetime);
4100 CLK_UNIT(parse->peer),
4113 CLK_UNIT(parse->peer),
4119 parse->parse_type->cl_message)
4120 parse->parse_type->cl_message(parse, parsetime);
4127 parse_event(parse, CEVNT_NOMINAL);
4130 clear_err(parse, ERR_BADIO);
4131 clear_err(parse, ERR_BADDATA);
4132 clear_err(parse, ERR_NODATA);
4133 clear_err(parse, ERR_INTERNAL);
4144 if (((current_time - parse->lastsync) > parse->maxunsync) ||
4145 (parse->lastsync < parse->lastmissed) ||
4146 ((parse->lastsync == 0) && !PARSE_SYNC(parsetime->parse_state)) ||
4147 (((parse->parse_type->cl_flags & PARSE_F_POWERUPTRUST) == 0) &&
4150 parse->generic->leap = LEAP_NOTINSYNC;
4151 parse->lastsync = 0; /* wait for full sync again */
4162 parse->generic->leap = (parse->flags & PARSE_LEAP_DELETE) ? LEAP_DELSECOND : LEAP_ADDSECOND;
4167 parse->generic->leap = LEAP_DELSECOND;
4171 parse->generic->leap = LEAP_NOWARNING;
4175 if (parse->generic->leap != LEAP_NOTINSYNC)
4184 CLK_UNIT(parse->peer),
4190 parse->generic->lastref = reftime;
4192 refclock_process_offset(parse->generic, reftime, rectime, fudge);
4198 if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
4200 parse->peer->flags |= (FLAG_PPS | FLAG_TSTAMP_PPS);
4201 parse_hardpps(parse, PARSE_HARDPPS_ENABLE);
4205 parse_hardpps(parse, PARSE_HARDPPS_DISABLE);
4206 parse->peer->flags &= ~(FLAG_PPS | FLAG_TSTAMP_PPS);
4213 if (!parse->pollneeddata && parse->peer->disp <= MAXDISTANCE)
4216 parse->pollneeddata = 0;
4218 parse->timedata.parse_state &= ~(unsigned)(PARSEB_PPS|PARSEB_S_PPS);
4220 refclock_receive(parse->peer);
4290 struct parseunit *parse,
4294 if (parse->timedata.parse_msglen && parsetime->parse_msg[0] == SOH)
4306 CLK_UNIT(parse->peer),
4333 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
4387 set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
4402 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4418 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4453 CLK_UNIT(parse->peer), p);
4482 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4508 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4516 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4524 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4571 set_var(&parse->kv, buffer, sizeof(buffer), RO|COND_DEF);
4604 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4628 set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
4641 CLK_UNIT(parse->peer),
4659 struct parseunit *parse = peer->procptr->unitptr;
4679 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4681 parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rate;
4684 if (sequence[parse->localstate].cmd == (unsigned short)~0)
4685 parse->localstate = 0;
4687 header = sequence + parse->localstate++;
4704 CLK_UNIT(parse->peer),
4705 parse->localstate - 1,
4711 rtc = (int) write(parse->generic->io.fd, cmd_buffer, (unsigned long)(outp - cmd_buffer));
4716 msyslog(LOG_ERR, "PARSE receiver #%d: gps16x_poll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4722 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));
4725 clear_err(parse, ERR_BADIO);
4734 struct parseunit *parse
4737 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4739 parse->peer->procptr->action = gps16x_poll;
4740 gps16x_poll(parse->peer);
4749 struct parseunit *parse,
4755 struct parseunit *parse
4771 struct parseunit *parse
4775 const char *ps = ((poll_info_t *)parse->parse_type->cl_data)->string;
4776 long ct = ((poll_info_t *)parse->parse_type->cl_data)->count;
4778 rtc = write(parse->generic->io.fd, ps, ct);
4782 msyslog(LOG_ERR, "PARSE receiver #%d: poll_dpoll: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4788 msyslog(LOG_ERR, "PARSE receiver #%d: poll_dpoll: failed to send cmd incomplete (%ld of %ld bytes sent)", CLK_UNIT(parse->peer), rtc, ct);
4790 clear_err(parse, ERR_BADIO);
4801 struct parseunit *parse = peer->procptr->unitptr;
4803 if (parse->parse_type->cl_poll)
4804 parse->parse_type->cl_poll(parse);
4806 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4808 parse->peer->procptr->nextaction = current_time + ((poll_info_t *)parse->parse_type->cl_data)->rate;
4817 struct parseunit *parse
4820 if (((poll_info_t *)parse->parse_type->cl_data)->rate)
4822 parse->peer->procptr->action = poll_poll;
4823 poll_poll(parse->peer);
4838 struct parseunit *parse
4850 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1)
4852 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcgetattr(fd, &tio): %m", CLK_UNIT(parse->peer));
4859 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1)
4861 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_init: tcsetattr(fd, &tio): %m", CLK_UNIT(parse->peer));
4865 return poll_init(parse);
4880 struct parseunit *parse,
4894 int rtc = (int) write(parse->generic->io.fd, *iv, strlen(*iv));
4897 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletaip_event: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
4905 CLK_UNIT(parse->peer), rtc, (int)strlen(*iv));
4915 CLK_UNIT(parse->peer));
5031 void sendetx (struct txbuf *buf, struct parseunit *parse);
5048 void sendetx (struct txbuf *buf, struct parseunit *parse);
5066 struct parseunit *parse
5072 if (write(parse->generic->io.fd, buf->txt, (unsigned long)buf->idx) != buf->idx)
5075 msyslog(LOG_ERR, "PARSE receiver #%d: sendetx: failed to send cmd to clock: %m", CLK_UNIT(parse->peer));
5086 CLK_UNIT(parse->peer),
5090 clear_err(parse, ERR_BADIO);
5131 struct parseunit *parse,
5137 trimble_t *t = parse->localdata;
5150 sendetx(&buf, parse);
5158 sendetx(&buf, parse);
5162 sendetx(&buf, parse);
5165 sendetx(&buf, parse);
5169 sendetx(&buf, parse);
5176 sendetx(&buf, parse);
5179 sendetx(&buf, parse);
5183 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_setup: RECEIVER RE-INITIALIZED (%s)", CLK_UNIT(parse->peer), reason);
5196 struct parseunit *parse = peer->procptr->unitptr;
5197 trimble_t *t = parse->localdata;
5205 (void)trimbletsip_setup(parse, "message timeout");
5208 poll_poll(parse->peer); /* emit query string and re-arm timer */
5226 sendetx(&buf, parse);
5234 sendetx(&buf, parse);
5243 struct parseunit *parse
5245 { trimble_t *t = parse->localdata;
5250 parse->localdata = NULL;
5252 parse->peer->procptr->nextaction = 0;
5253 parse->peer->procptr->action = NULL;
5261 struct parseunit *parse
5274 if (!parse->localdata)
5278 t = (trimble_t *)(parse->localdata = emalloc(sizeof(trimble_t)));
5287 parse->peer->procptr->action = trimble_check;
5288 parse->peer->procptr->nextaction = current_time;
5293 if (TTY_GETATTR(parse->generic->io.fd, &tio) == -1)
5295 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_init: tcgetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->io.fd);
5300 if ((parse_clockinfo[CLK_TYPE(parse->peer)].cl_lflag & ICANON))
5310 if (TTY_SETATTR(parse->generic->io.fd, &tio) == -1)
5312 msyslog(LOG_ERR, "PARSE receiver #%d: trimbletsip_init: tcsetattr(%d, &tio): %m", CLK_UNIT(parse->peer), parse->generic->io.fd);
5317 return trimbletsip_setup(parse, "initial startup");
5326 struct parseunit *parse,
5334 (void)trimbletsip_setup(parse, "event BAD_REPLY/TIMEOUT");
5419 struct parseunit *parse,
5448 trimble_t *tr = parse->localdata;
5660 (void)trimbletsip_setup(parse, "bad io options");
5807 set_var(&parse->kv, pbuffer, sizeof(pbuffer), var_flag);
5823 struct parseunit *parse
5834 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1)
5836 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer));
5846 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1)
5848 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_DTR): %m", CLK_UNIT(parse->peer));
5855 struct parseunit *parse
5858 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_1: WARNING: OS interface incapable of setting DTR to power DCF modules", CLK_UNIT(parse->peer));
5870 struct parseunit *parse
5881 if (ioctl(parse->generic->io.fd, TIOCMGET, (caddr_t)&sl232) == -1)
5883 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMGET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer));
5893 if (ioctl(parse->generic->io.fd, TIOCMSET, (caddr_t)&sl232) == -1)
5895 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: ioctl(fd, TIOCMSET, [C|T]IOCM_RTS): %m", CLK_UNIT(parse->peer));
5902 struct parseunit *parse
5905 msyslog(LOG_NOTICE, "PARSE receiver #%d: rawdcf_init_2: WARNING: OS interface incapable of setting RTS to power DCF modules", CLK_UNIT(parse->peer));
5954 * terminate parse io engine after de-registering