Lines Matching full:up

160 	jupiter_start,		/* start up driver */
179 struct instance * up; in jupiter_start() local
195 up = emalloc_zero(sizeof(*up)); in jupiter_start()
196 up->peer = peer; in jupiter_start()
204 free(up); in jupiter_start()
207 pp->unitptr = up; in jupiter_start()
216 up->assert = 1; in jupiter_start()
217 up->hardpps = 0; in jupiter_start()
222 if (time_pps_create(fd, &up->pps_handle) < 0) { in jupiter_start()
223 up->pps_handle = 0; in jupiter_start()
227 else if (!jupiter_ppsapi(up)) in jupiter_start()
231 if (!jupiter_config(up)) in jupiter_start()
234 jupiter_pps(up); /* get current PPS state */ in jupiter_start()
250 struct instance * const up = pp->unitptr; in jupiter_shutdown() local
252 if (!up) in jupiter_shutdown()
255 if (up->pps_handle) { in jupiter_shutdown()
256 time_pps_destroy(up->pps_handle); in jupiter_shutdown()
257 up->pps_handle = 0; in jupiter_shutdown()
262 free(up); in jupiter_shutdown()
269 jupiter_config(struct instance * const up) in jupiter_config() argument
271 jupiter_debug(up->peer, __func__, "init receiver"); in jupiter_config()
276 up->sloppyclockflag = up->peer->procptr->sloppyclockflag; in jupiter_config()
277 up->moving = !!(up->sloppyclockflag & CLK_FLAG2); in jupiter_config()
278 if (up->moving) in jupiter_config()
279 jupiter_debug(up->peer, __func__, "mobile platform"); in jupiter_config()
281 ZERO(up->rcv_next); in jupiter_config()
282 ZERO(up->ref_next); in jupiter_config()
283 ZERO(up->piv_next); in jupiter_config()
284 up->ssize = 0; in jupiter_config()
287 jupiter_canmsg(up, JUPITER_ALL); in jupiter_config()
290 jupiter_reqonemsg(up, JUPITER_O_ID); in jupiter_config()
293 up->wantid = 1; in jupiter_config()
296 jupiter_reqmsg(up, JUPITER_O_PULSE, 1); in jupiter_config()
299 jupiter_reqmsg(up, JUPITER_O_GPOS, 1); in jupiter_config()
302 if (up->moving) in jupiter_config()
303 jupiter_platform(up, JUPITER_I_PLAT_MED); in jupiter_config()
305 jupiter_platform(up, JUPITER_I_PLAT_LOW); in jupiter_config()
313 struct instance * const up in jupiter_checkpps() argument
319 if (jupiter_pps(up) || !up->piv_next.weeks) in jupiter_checkpps()
323 delta = up->rcv_pps; /* set by jupiter_pps() */ in jupiter_checkpps()
324 L_SUB(&delta, &up->rcv_next); /* recv time pulse message */ in jupiter_checkpps()
326 up->ref_next.weeks = 0; /* consider as consumed... */ in jupiter_checkpps()
330 pp->lastrec = up->rcv_pps; in jupiter_checkpps()
331 tstamp = ntpfp_from_gpsdatum(&up->ref_next); in jupiter_checkpps()
332 refclock_process_offset(pp, tstamp, up->rcv_pps, pp->fudgetime1); in jupiter_checkpps()
333 up->rcvtout = 2; in jupiter_checkpps()
335 gpscal_to_calendar(&cd, &up->ref_next); in jupiter_checkpps()
338 up->ref_next.weeks = 0; /* consumed... */ in jupiter_checkpps()
348 struct instance * const up = pp->unitptr; in jupiter_ticker() local
350 if (!up) in jupiter_ticker()
354 jupiter_checkpps(pp, up); in jupiter_ticker()
357 if (up->piv_hold && !--up->piv_hold) in jupiter_ticker()
358 ZERO(up->piv_next); in jupiter_ticker()
360 if (up->rcvtout) in jupiter_ticker()
361 --up->rcvtout; in jupiter_ticker()
371 struct instance * const up /* unit structure pointer */ in jupiter_ppsapi() argument
376 if (time_pps_getcap(up->pps_handle, &capability) < 0) { in jupiter_ppsapi()
381 memset(&up->pps_params, 0, sizeof(pps_params_t)); in jupiter_ppsapi()
382 if (!up->assert) in jupiter_ppsapi()
383 up->pps_params.mode = capability & PPS_CAPTURECLEAR; in jupiter_ppsapi()
385 up->pps_params.mode = capability & PPS_CAPTUREASSERT; in jupiter_ppsapi()
386 if (!(up->pps_params.mode & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR))) { in jupiter_ppsapi()
389 up->assert); in jupiter_ppsapi()
392 up->pps_params.mode |= PPS_TSFMT_TSPEC; in jupiter_ppsapi()
393 if (time_pps_setparams(up->pps_handle, &up->pps_params) < 0) { in jupiter_ppsapi()
398 if (up->hardpps) { in jupiter_ppsapi()
399 if (time_pps_kcbind(up->pps_handle, PPS_KC_HARDPPS, in jupiter_ppsapi()
400 up->pps_params.mode & ~PPS_TSFMT_TSPEC, in jupiter_ppsapi()
408 /* up->peer->precision = PPS_PRECISION; */ in jupiter_ppsapi()
412 time_pps_getparams(up->pps_handle, &up->pps_params); in jupiter_ppsapi()
413 jupiter_debug(up->peer, __func__, in jupiter_ppsapi()
415 capability, up->pps_params.api_version, in jupiter_ppsapi()
416 up->pps_params.mode, up->hardpps); in jupiter_ppsapi()
429 jupiter_pps(struct instance * const up) in jupiter_pps() argument
438 if (up->pps_handle == 0) in jupiter_pps()
442 memcpy(&pps_info, &up->pps_info, sizeof(pps_info_t)); in jupiter_pps()
443 if (time_pps_fetch(up->pps_handle, PPS_TSFMT_TSPEC, &up->pps_info, in jupiter_pps()
446 if (up->pps_params.mode & PPS_CAPTUREASSERT) { in jupiter_pps()
448 up->pps_info.assert_sequence) in jupiter_pps()
450 ts = up->pps_info.assert_timestamp; in jupiter_pps()
451 } else if (up->pps_params.mode & PPS_CAPTURECLEAR) { in jupiter_pps()
453 up->pps_info.clear_sequence) in jupiter_pps()
455 ts = up->pps_info.clear_timestamp; in jupiter_pps()
461 if (L_ISEQU(&tstmp, &up->rcv_pps)) in jupiter_pps()
464 up->rcv_pps = tstmp; in jupiter_pps()
475 struct instance * const up = pp->unitptr; in jupiter_poll() local
490 jupiter_reqonemsg(up, JUPITER_O_ID); in jupiter_poll()
491 up->wantid = 0; in jupiter_poll()
507 struct instance * const up = pp->unitptr; in jupiter_control() local
511 up->assert = !(pp->sloppyclockflag & CLK_FLAG3); in jupiter_control()
512 jupiter_ppsapi(up); in jupiter_control()
514 sloppyclockflag = up->sloppyclockflag; in jupiter_control()
515 up->sloppyclockflag = pp->sloppyclockflag; in jupiter_control()
516 if ((up->sloppyclockflag & CLK_FLAG2) != in jupiter_control()
520 jupiter_config(up); in jupiter_control()
534 struct instance * const up = pp->unitptr; in jupiter_receive() local
549 if (bpcnt > sizeof(up->sbuf) - up->ssize) in jupiter_receive()
550 bpcnt = sizeof(up->sbuf) - up->ssize; in jupiter_receive()
553 memcpy((u_char *)up->sbuf + up->ssize, bp, bpcnt); in jupiter_receive()
554 up->ssize += bpcnt; in jupiter_receive()
557 while (up->ssize > (int)sizeof(*hp) && (cc = jupiter_recv(up)) > 0) { in jupiter_receive()
558 hp = (struct jheader *)up->sbuf; in jupiter_receive()
565 jupiter_checkpps(pp, up); in jupiter_receive()
588 if ((cp = jupiter_parse_t(up, sp, rbufp->recv_time)) != NULL) { in jupiter_receive()
603 if ((cp = jupiter_parse_gpos(up, sp)) != NULL) { in jupiter_receive()
629 if (up->wantid) in jupiter_receive()
630 up->wantid = 0; in jupiter_receive()
633 jupiter_config(up); in jupiter_receive()
638 up->ssize = cc; in jupiter_receive()
647 up->ssize -= cc; in jupiter_receive()
648 if (up->ssize < 0) { in jupiter_receive()
651 } else if (up->ssize > 0) in jupiter_receive()
652 memcpy(up->sbuf, (u_char *)up->sbuf + cc, up->ssize); in jupiter_receive()
658 struct instance * const up, in jupiter_parse_t() argument
675 refclock_report(up->peer, CEVNT_BADTIME); in jupiter_parse_t()
679 up->rcv_next = rcvtime; /* remember when this happened */ in jupiter_parse_t()
709 if (up->piv_next.weeks) { in jupiter_parse_t()
710 up->ref_next = gpscal_from_weektime2( in jupiter_parse_t()
711 sweek, fofs, &up->piv_next); in jupiter_parse_t()
712 up->piv_next = up->ref_next; in jupiter_parse_t()
714 up->ref_next = gpscal_from_weektime1( in jupiter_parse_t()
725 struct instance * const up, in jupiter_parse_gpos() argument
750 up->piv_next = gpscal_from_gpsweek(raw_week, raw_secs, in jupiter_parse_gpos()
752 up->piv_hold = 60; in jupiter_parse_gpos()
754 gpscal_to_calendar(&tref, &up->piv_next); in jupiter_parse_gpos()
756 jupiter_debug(up->peer, __func__, in jupiter_parse_gpos()
796 struct instance * const up, in jupiter_send() argument
815 if ((cc = write(up->peer->procptr->io.fd, (char *)hp, size)) < 0) { in jupiter_send()
840 struct instance * const up, in jupiter_reqmsg() argument
854 if ((cp = jupiter_send(up, hp)) != NULL) in jupiter_reqmsg()
855 jupiter_debug(up->peer, __func__, "%u: %s", id, cp); in jupiter_reqmsg()
867 struct instance * const up, in jupiter_canmsg() argument
876 if ((cp = jupiter_send(up, hp)) != NULL) in jupiter_canmsg()
877 jupiter_debug(up->peer, __func__, "%u: %s", id, cp); in jupiter_canmsg()
889 struct instance * const up, in jupiter_reqonemsg() argument
898 if ((cp = jupiter_send(up, hp)) != NULL) in jupiter_reqonemsg()
899 jupiter_debug(up->peer, __func__, "%u: %s", id, cp); in jupiter_reqonemsg()
915 struct instance * const up, in jupiter_platform() argument
926 if ((cp = jupiter_send(up, hp)) != NULL) in jupiter_platform()
927 jupiter_debug(up->peer, __func__, "%u: %s", platform, cp); in jupiter_platform()
947 struct instance * const up in jupiter_recv() argument
957 size = up->ssize; in jupiter_recv()
962 sp = up->sbuf; in jupiter_recv()
965 /* Wasn't at the front, sync up */ in jupiter_recv()
966 jupiter_debug(up->peer, __func__, "syncing"); in jupiter_recv()
972 jupiter_debug(up->peer, __func__, in jupiter_recv()
982 jupiter_debug(up->peer, __func__, in jupiter_recv()
989 jupiter_debug(up->peer, __func__, "\n"); in jupiter_recv()
995 up->ssize = size; in jupiter_recv()
1002 jupiter_debug(up->peer, __func__, "bad header checksum!"); in jupiter_recv()
1004 up->ssize = 0; in jupiter_recv()
1019 jupiter_debug(up->peer, in jupiter_recv()
1022 up->ssize = 0; in jupiter_recv()