Lines Matching full:instance
88 * instance->pp->leap indicator but only run this test in December and June for
268 struct instance { struct
359 #define rcvbuf instance->Rcvbuf argument
360 #define rcvptr instance->Rcvptr
365 static void oncore_consume (struct instance *);
366 static void oncore_read_config (struct instance *);
368 static int oncore_ppsapi (struct instance *);
369 static void oncore_get_timestamp (struct instance *, long, long);
370 static void oncore_init_shmem (struct instance *);
372 static void oncore_antenna_report (struct instance *, enum antenna_state);
373 static void oncore_chan_test (struct instance *);
374 static void oncore_check_almanac (struct instance *);
375 static void oncore_check_antenna (struct instance *);
376 static void oncore_check_leap_sec (struct instance *);
378 static void oncore_compute_dH (struct instance *);
379 static void oncore_load_almanac (struct instance *);
380 static void oncore_log (struct instance *, int, const char *);
381 static int oncore_log_f (struct instance *, int, const char *, ...)
383 static void oncore_print_Cb (struct instance *, u_char *);
385 static void oncore_print_posn (struct instance *);
386 static void oncore_sendmsg (struct instance *, u_char *, size_t);
387 static void oncore_set_posn (struct instance *);
388 static void oncore_set_traim (struct instance *);
389 static void oncore_shmem_get_3D (struct instance *);
390 static void oncore_ss (struct instance *);
391 static int oncore_wait_almanac (struct instance *);
392 static void oncore_feed_clockproc (struct instance *);
394 static void oncore_msg_any (struct instance *, u_char *, size_t, int);
395 static void oncore_msg_Adef (struct instance *, u_char *, size_t);
396 static void oncore_msg_Ag (struct instance *, u_char *, size_t);
397 static void oncore_msg_As (struct instance *, u_char *, size_t);
398 static void oncore_msg_At (struct instance *, u_char *, size_t);
399 static void oncore_msg_Ay (struct instance *, u_char *, size_t);
400 static void oncore_msg_Az (struct instance *, u_char *, size_t);
401 static void oncore_msg_BaEaHa (struct instance *, u_char *, size_t);
402 static void oncore_msg_Bd (struct instance *, u_char *, size_t);
403 static void oncore_msg_Bj (struct instance *, u_char *, size_t);
404 static void oncore_msg_Bl (struct instance *, u_char *, size_t);
405 static void oncore_msg_BnEnHn (struct instance *, u_char *, size_t);
406 static void oncore_msg_CaFaIa (struct instance *, u_char *, size_t);
407 static void oncore_msg_Cb (struct instance *, u_char *, size_t);
408 static void oncore_msg_Cf (struct instance *, u_char *, size_t);
409 static void oncore_msg_Cj (struct instance *, u_char *, size_t);
410 static void oncore_msg_Cj_id (struct instance *, u_char *, size_t);
411 static void oncore_msg_Cj_init (struct instance *, u_char *, size_t);
412 static void oncore_msg_Ga (struct instance *, u_char *, size_t);
413 static void oncore_msg_Gb (struct instance *, u_char *, size_t);
414 static void oncore_msg_Gc (struct instance *, u_char *, size_t);
415 static void oncore_msg_Gj (struct instance *, u_char *, size_t);
416 static void oncore_msg_Sz (struct instance *, u_char *, size_t);
436 void (*handler) (struct instance *, u_char *, size_t);
597 register struct instance *instance; in oncore_start() local
605 /* create instance structure for this unit */ in oncore_start()
607 instance = emalloc(sizeof(*instance)); in oncore_start()
608 memset(instance, 0, sizeof(*instance)); in oncore_start()
613 instance->pp = pp; in oncore_start()
614 instance->unit = unit; in oncore_start()
615 instance->peer = peer; in oncore_start()
616 instance->assert = 1; in oncore_start()
617 instance->once = 1; in oncore_start()
619 instance->Bj_day = -1; in oncore_start()
620 instance->traim = -1; in oncore_start()
621 instance->traim_in = -1; in oncore_start()
622 instance->chan_in = -1; in oncore_start()
623 instance->pps_control = -1; /* PPS control, M12 only */ in oncore_start()
624 instance->pps_control_msg_seen = -1; /* Have seen response to Gc msg */ in oncore_start()
625 instance->model = ONCORE_UNKNOWN; in oncore_start()
626 instance->mode = MODE_UNKNOWN; in oncore_start()
627 instance->site_survey = ONCORE_SS_UNKNOWN; in oncore_start()
628 instance->Ag = 0xff; /* Satellite mask angle, unset by user */ in oncore_start()
629 instance->ant_state = ONCORE_ANTENNA_UNKNOWN; in oncore_start()
638 oncore_log(instance, LOG_NOTICE, "ONCORE DRIVER -- CONFIGURING"); in oncore_start()
639 instance->o_state = ONCORE_NO_IDEA; in oncore_start()
640 oncore_log(instance, LOG_NOTICE, "state = ONCORE_NO_IDEA"); in oncore_start()
675 oncore_log_f(instance, LOG_ERR, "Can't stat fd1 (%s)", in oncore_start()
682 oncore_log_f(instance, LOG_ERR, "Can't stat fd2 (%s) %d %m", in oncore_start()
689 oncore_log_f(instance, LOG_ERR, "Can't open fd1 (%s)", in oncore_start()
706 oncore_log_f(instance, LOG_ERR, in oncore_start()
714 if (time_pps_create(fd2, &instance->pps_h) < 0) { in oncore_start()
715 oncore_log(instance, LOG_ERR, "exit, PPSAPI not found in kernel"); in oncore_start()
721 instance->ttyfd = fd1; in oncore_start()
722 instance->ppsfd = fd2; in oncore_start()
726 oncore_read_config(instance); in oncore_start()
728 if (!oncore_ppsapi(instance)) in oncore_start()
736 oncore_log(instance, LOG_ERR, "can't do io_addclock"); in oncore_start()
739 free(instance); in oncore_start()
742 pp->unitptr = instance; in oncore_start()
751 oncore_init_shmem(instance); in oncore_start()
759 instance->o_state = ONCORE_CHECK_ID; in oncore_start()
760 oncore_log(instance, LOG_NOTICE, "state = ONCORE_CHECK_ID"); in oncore_start()
762 instance->timeout = 4; in oncore_start()
763 …oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Set Posn Fix mode (not Idle (VP… in oncore_start()
764 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_start()
766 instance->pollcnt = 2; in oncore_start()
781 register struct instance *instance; in oncore_shutdown() local
785 instance = pp->unitptr; in oncore_shutdown()
790 if (instance != NULL) { in oncore_shutdown()
791 time_pps_destroy (instance->pps_h); in oncore_shutdown()
793 close(instance->ttyfd); in oncore_shutdown()
795 if ((instance->ppsfd != -1) && (instance->ppsfd != instance->ttyfd)) in oncore_shutdown()
796 close(instance->ppsfd); in oncore_shutdown()
798 if (instance->shmemfd) in oncore_shutdown()
799 close(instance->shmemfd); in oncore_shutdown()
801 free(instance); in oncore_shutdown()
817 struct instance *instance; in oncore_poll() local
819 instance = peer->procptr->unitptr; in oncore_poll()
820 if (instance->timeout) { in oncore_poll()
821 instance->timeout--; in oncore_poll()
822 if (instance->timeout == 0) { in oncore_poll()
823 oncore_log(instance, LOG_ERR, in oncore_poll()
827 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_poll()
828 oncore_log(instance, LOG_WARNING, "Oncore: Resend @@Cj"); in oncore_poll()
833 if (!instance->pollcnt) in oncore_poll()
836 instance->pollcnt--; in oncore_poll()
838 instance->polled = 1; in oncore_poll()
849 struct instance *instance in oncore_ppsapi() argument
855 if (time_pps_getcap(instance->pps_h, &cap) < 0) { in oncore_ppsapi()
856 oncore_log_f(instance, LOG_ERR, "time_pps_getcap failed: %m"); in oncore_ppsapi()
860 if (time_pps_getparams(instance->pps_h, &instance->pps_p) < 0) { in oncore_ppsapi()
861 oncore_log_f(instance, LOG_ERR, "time_pps_getparams failed: %m"); in oncore_ppsapi()
869 if (instance->assert) { in oncore_ppsapi()
878 oncore_log_f(instance, LOG_INFO, "Initializing timing to %s.", in oncore_ppsapi()
882 oncore_log_f(instance, LOG_ERR, in oncore_ppsapi()
888 oncore_log_f(instance, LOG_NOTICE, in oncore_ppsapi()
896 instance->pps_p.mode = (mode | mode1 | PPS_TSFMT_TSPEC) & cap; in oncore_ppsapi()
898 if (time_pps_setparams(instance->pps_h, &instance->pps_p) < 0) { in oncore_ppsapi()
899 oncore_log_f(instance, LOG_ERR, "ONCORE: time_pps_setparams fails %m"); in oncore_ppsapi()
905 if (instance->hardpps) { in oncore_ppsapi()
908 oncore_log(instance, LOG_INFO, "HARDPPS Set."); in oncore_ppsapi()
910 if (instance->assert) in oncore_ppsapi()
917 if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i, in oncore_ppsapi()
919 oncore_log_f(instance, LOG_ERR, "time_pps_kcbind failed: %m"); in oncore_ppsapi()
920 oncore_log(instance, LOG_ERR, "HARDPPS failed, abort..."); in oncore_ppsapi()
934 struct instance *instance in oncore_init_shmem() argument
944 * The first thing we do is see if there is an instance->shmem_fname file (still) in oncore_init_shmem()
951 if ((fd = open(instance->shmem_fname, O_RDONLY)) < 0) in oncore_init_shmem()
952 oncore_log(instance, LOG_WARNING, "ONCORE: Can't open SHMEM file"); in oncore_init_shmem()
959 oncore_log(instance, LOG_WARNING, in oncore_init_shmem()
967 if ((instance->shmemfd = open(instance->shmem_fname, O_RDWR|O_CREAT|O_TRUNC, 0644)) < 0) { in oncore_init_shmem()
968 oncore_log(instance, LOG_WARNING, "ONCORE: Can't open shmem"); in oncore_init_shmem()
982 instance->shmem_Cb = n; in oncore_init_shmem()
986 instance->shmem_Ba = n; in oncore_init_shmem()
990 instance->shmem_Ea = n; in oncore_init_shmem()
994 instance->shmem_Ha = n; in oncore_init_shmem()
1052 i = write(instance->shmemfd, buf, shmem_length); in oncore_init_shmem()
1056 oncore_log(instance, LOG_ERR, "ONCORE: error writing shmem"); in oncore_init_shmem()
1057 close(instance->shmemfd); in oncore_init_shmem()
1061 instance->shmem = (u_char *) mmap(0, shmem_length, in oncore_init_shmem()
1066 MAP_SHARED, instance->shmemfd, (off_t)0); in oncore_init_shmem()
1068 if (instance->shmem == (u_char *)MAP_FAILED) { in oncore_init_shmem()
1069 instance->shmem = 0; in oncore_init_shmem()
1070 close(instance->shmemfd); in oncore_init_shmem()
1074 oncore_log_f(instance, LOG_NOTICE, in oncore_init_shmem()
1076 (u_long) shmem_length, instance->shmem_fname); in oncore_init_shmem()
1088 struct instance *instance in oncore_read_config() argument
1227 cp, instance->unit); /* try "ntp.oncore.0 */ in oncore_read_config()
1231 cp, instance->unit); /* try "ntp.oncore0" */ in oncore_read_config()
1240 instance->init_type = 4; in oncore_read_config()
1282 instance->shmem_fname = estrdup(ca); in oncore_read_config()
1299 instance->ss_lat = sign*1000*(fabs(f3) + 60*(fabs(f2) + 60*f1)); /*miliseconds*/ in oncore_read_config()
1309 instance->ss_long = sign*1000*(fabs(f3) + 60*(fabs(f2) + 60*f1)); /*miliseconds*/ in oncore_read_config()
1317 instance->ss_ht = 100 * f1; /* cm */ in oncore_read_config()
1334 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1338 instance->delay = f1; /* delay in ns */ in oncore_read_config()
1354 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1358 instance->offset = f1; /* offset in ns */ in oncore_read_config()
1364 instance->assert = 1; in oncore_read_config()
1366 instance->assert = 0; in oncore_read_config()
1368 instance->hardpps = 1; in oncore_read_config()
1370 instance->shmem_Posn = 2; in oncore_read_config()
1372 instance->shmem_Posn = 3; in oncore_read_config()
1376 instance->chan_in = i; in oncore_read_config()
1378 instance->traim_in = 1; /* so TRAIM alone is YES */ in oncore_read_config()
1380 instance->traim_in = 0; in oncore_read_config()
1384 instance->Ag = mask; /* Satellite mask angle */ in oncore_read_config()
1387 instance->pps_control = 1; /* PPS always on */ in oncore_read_config()
1389 instance->pps_control = 2; /* PPS on when satellite is available */ in oncore_read_config()
1391 instance->pps_control = 3; /* PPS on when TRAIM status is OK */ in oncore_read_config()
1393 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1406 instance->posn_set = 1; in oncore_read_config()
1408 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1410 instance->posn_set = 0; in oncore_read_config()
1412 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1418 instance->init_type = mode; in oncore_read_config()
1420 oncore_log_f(instance, LOG_INFO, "Input mode = %d", mode); in oncore_read_config()
1437 struct instance *instance; in oncore_receive() local
1440 instance = peer->procptr->unitptr; in oncore_receive()
1448 oncore_log_f(instance, LOG_DEBUG, in oncore_receive()
1456 oncore_log(instance, LOG_DEBUG, Msg); in oncore_receive()
1463 oncore_log(instance, LOG_DEBUG, Msg); in oncore_receive()
1472 oncore_consume(instance); in oncore_receive()
1483 struct instance *instance in oncore_consume() argument
1496 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1514 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1526 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1528 instance->unit, rcvbuf[2], in oncore_consume()
1541 oncore_log(instance, LOG_DEBUG, "NO <CR><LF> at end of message"); in oncore_consume()
1545 if (instance->shmem != NULL) { in oncore_consume()
1546 instance->shmem[oncore_messages[m].shmem + 2]++; in oncore_consume()
1547 memcpy(instance->shmem + oncore_messages[m].shmem + 3, in oncore_consume()
1550 oncore_msg_any(instance, rcvbuf, (size_t) (l-3), m); in oncore_consume()
1552 oncore_messages[m].handler(instance, rcvbuf, (size_t) (l-3)); in oncore_consume()
1558 oncore_log(instance, LOG_ERR, "Checksum mismatch!"); in oncore_consume()
1565 oncore_log(instance, LOG_DEBUG, Msg); in oncore_consume()
1580 struct instance *instance, in oncore_get_timestamp() argument
1601 peer = instance->peer; in oncore_get_timestamp()
1610 if ((instance->site_survey == ONCORE_SS_DONE) && (instance->mode != MODE_0D)) { in oncore_get_timestamp()
1614 if ((instance->site_survey != ONCORE_SS_DONE) || (instance->mode != MODE_0D)) { in oncore_get_timestamp()
1622 if (instance->rsm.bad_almanac) { in oncore_get_timestamp()
1633 if (instance->count5) { in oncore_get_timestamp()
1634 instance->count5--; in oncore_get_timestamp()
1639 j = instance->ev_serial; in oncore_get_timestamp()
1642 if (time_pps_fetch(instance->pps_h, PPS_TSFMT_TSPEC, &pps_i, in oncore_get_timestamp()
1644 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1650 if (instance->assert) { in oncore_get_timestamp()
1659 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1664 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1673 oncore_log(instance, LOG_NOTICE, "ONCORE: oncore_get_timestamp, error serial pps"); in oncore_get_timestamp()
1678 instance->ev_serial = pps_i.assert_sequence; in oncore_get_timestamp()
1688 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1693 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1702 oncore_log(instance, LOG_ERR, "oncore_get_timestamp, error serial pps"); in oncore_get_timestamp()
1706 instance->ev_serial = pps_i.clear_sequence; in oncore_get_timestamp()
1743 if (instance->assert) in oncore_get_timestamp()
1744 instance->pps_p.assert_offset.tv_nsec = -dt2; in oncore_get_timestamp()
1746 instance->pps_p.clear_offset.tv_nsec = -dt2; in oncore_get_timestamp()
1749 * using the saved instance->pps_p, since some other process on the in oncore_get_timestamp()
1761 if (time_pps_getcap(instance->pps_h, ¤t_mode) < 0) { in oncore_get_timestamp()
1762 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1768 if (time_pps_getparams(instance->pps_h, ¤t_params) < 0) { in oncore_get_timestamp()
1769 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1776 current_params.mode |= instance->pps_p.mode; in oncore_get_timestamp()
1785 if (time_pps_setparams(instance->pps_h, ¤t_params)) in oncore_get_timestamp()
1786 oncore_log(instance, LOG_ERR, "ONCORE: Error doing time_pps_setparams"); in oncore_get_timestamp()
1791 instance->pp->lastrec = ts; in oncore_get_timestamp()
1801 if (instance->chan == 6) in oncore_get_timestamp()
1802 Rsm = instance->BEHa[64]; in oncore_get_timestamp()
1803 else if (instance->chan == 8) in oncore_get_timestamp()
1804 Rsm = instance->BEHa[72]; in oncore_get_timestamp()
1805 else if (instance->chan == 12) in oncore_get_timestamp()
1806 Rsm = ((instance->BEHa[129]<<8) | instance->BEHa[130]); in oncore_get_timestamp()
1808 if (instance->chan == 6 || instance->chan == 8) { in oncore_get_timestamp()
1810 if (instance->traim) { in oncore_get_timestamp()
1812 instance->BEHn[21]); in oncore_get_timestamp()
1814 instance->BEHn[22]); in oncore_get_timestamp()
1816 instance->BEHn[23] * 256 + in oncore_get_timestamp()
1817 instance->BEHn[24]); in oncore_get_timestamp()
1819 (s_char)instance->BEHn[25]); in oncore_get_timestamp()
1829 instance->pp->year, instance->pp->day, in oncore_get_timestamp()
1830 instance->pp->hour, instance->pp->minute, instance->pp->second, in oncore_get_timestamp()
1832 Rsm, 0.1*(256*instance->BEHa[35]+instance->BEHa[36]), in oncore_get_timestamp()
1834 instance->BEHa[38], instance->BEHa[39], instance->traim, f1, f2, in oncore_get_timestamp()
1838 /*sat*/ instance->BEHa[41], instance->BEHa[45], instance->BEHa[49], instance->BEHa[53], in oncore_get_timestamp()
1839 instance->BEHa[57], instance->BEHa[61], instance->BEHa[65], instance->BEHa[69] in oncore_get_timestamp()
1841 } else if (instance->chan == 12) { in oncore_get_timestamp()
1843 if (instance->traim) { in oncore_get_timestamp()
1845 instance->BEHn[6]); in oncore_get_timestamp()
1847 instance->BEHn[7]); in oncore_get_timestamp()
1849 instance->BEHn[12] * 256 + in oncore_get_timestamp()
1850 instance->BEHn[13]); in oncore_get_timestamp()
1852 (s_char)instance->BEHn[14]); in oncore_get_timestamp()
1862 instance->pp->year, instance->pp->day, in oncore_get_timestamp()
1863 instance->pp->hour, instance->pp->minute, instance->pp->second, in oncore_get_timestamp()
1865 Rsm, 0.1*(256*instance->BEHa[53]+instance->BEHa[54]), in oncore_get_timestamp()
1867 instance->BEHa[55], instance->BEHa[56], instance->traim, f1, f2, in oncore_get_timestamp()
1871 /*sat*/ instance->BEHa[58], instance->BEHa[64], instance->BEHa[70], instance->BEHa[76], in oncore_get_timestamp()
1872 instance->BEHa[82], instance->BEHa[88], instance->BEHa[94], instance->BEHa[100], in oncore_get_timestamp()
1873 instance->BEHa[106], instance->BEHa[112], instance->BEHa[118], instance->BEHa[124] in oncore_get_timestamp()
1880 oncore_feed_clockproc(instance); in oncore_get_timestamp()
1882 if (!refclock_process(instance->pp)) { in oncore_get_timestamp()
1889 oncore_log(instance, LOG_INFO, Msg); /* this is long message above */ in oncore_get_timestamp()
1890 instance->pollcnt = 2; in oncore_get_timestamp()
1892 if (instance->polled) { in oncore_get_timestamp()
1893 instance->polled = 0; in oncore_get_timestamp()
1894 /* instance->pp->dispersion = instance->pp->skew = 0; */ in oncore_get_timestamp()
1895 instance->pp->lastref = instance->pp->lastrec; in oncore_get_timestamp()
1896 refclock_receive(instance->peer); in oncore_get_timestamp()
1911 struct instance *instance, in oncore_get_timestamp()
1937 oncore_log(instance, LOG_DEBUG, "%ld.%06ld", in oncore_get_timestamp()
1948 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1958 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1966 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1978 struct instance *instance, in oncore_get_timestamp()
1991 struct instance *instance, in oncore_get_timestamp()
1999 if (instance->o_state == ONCORE_RUN) in oncore_get_timestamp()
2002 instance->Ag = buf[4]; in oncore_get_timestamp()
2003 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
2005 (int)instance->Ag); in oncore_get_timestamp()
2016 struct instance *instance, in oncore_get_timestamp()
2021 instance->ss_lat = buf_w32(&buf[4]); in oncore_get_timestamp()
2022 instance->ss_long = buf_w32(&buf[8]); in oncore_get_timestamp()
2023 instance->ss_ht = buf_w32(&buf[12]); in oncore_get_timestamp()
2026 oncore_print_posn(instance); in oncore_get_timestamp()
2038 struct instance *instance, in oncore_get_timestamp()
2043 instance->saw_At = 1; in oncore_get_timestamp()
2044 if (instance->site_survey == ONCORE_SS_TESTING) { in oncore_get_timestamp()
2046 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2049 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_HW"); in oncore_get_timestamp()
2050 instance->site_survey = ONCORE_SS_HW; in oncore_get_timestamp()
2064 struct instance *instance, in oncore_get_timestamp()
2069 if (instance->saw_Ay) in oncore_get_timestamp()
2072 instance->saw_Ay = 1; in oncore_get_timestamp()
2074 instance->offset = buf_w32(&buf[4]); in oncore_get_timestamp()
2076 oncore_log_f(instance, LOG_INFO, "PPS Offset is set to %ld ns", in oncore_get_timestamp()
2077 instance->offset); in oncore_get_timestamp()
2088 struct instance *instance, in oncore_get_timestamp()
2093 if (instance->saw_Az) in oncore_get_timestamp()
2096 instance->saw_Az = 1; in oncore_get_timestamp()
2098 instance->delay = buf_w32(&buf[4]); in oncore_get_timestamp()
2100 oncore_log_f(instance, LOG_INFO, "Cable delay is set to %ld ns", in oncore_get_timestamp()
2101 instance->delay); in oncore_get_timestamp()
2110 struct instance *instance, in oncore_get_timestamp()
2127 if (instance->o_state == ONCORE_CHECK_CHAN) { /* here while checking for the # chan */ in oncore_get_timestamp()
2129 if (instance->chan_ck < 6) instance->chan_ck = 6; in oncore_get_timestamp()
2131 if (instance->chan_ck < 8) instance->chan_ck = 8; in oncore_get_timestamp()
2133 if (instance->chan_ck < 12) instance->chan_ck = 12; in oncore_get_timestamp()
2136 if (instance->count3++ < 5) in oncore_get_timestamp()
2139 instance->count3 = 0; in oncore_get_timestamp()
2141 if (instance->chan_in != -1) /* set in Input */ in oncore_get_timestamp()
2142 instance->chan = instance->chan_in; in oncore_get_timestamp()
2144 instance->chan = instance->chan_ck; in oncore_get_timestamp()
2146 oncore_log_f(instance, LOG_INFO, "Input says chan = %d", in oncore_get_timestamp()
2147 instance->chan_in); in oncore_get_timestamp()
2148 oncore_log_f(instance, LOG_INFO, "Model # says chan = %d", in oncore_get_timestamp()
2149 instance->chan_id); in oncore_get_timestamp()
2150 oncore_log_f(instance, LOG_INFO, "Testing says chan = %d", in oncore_get_timestamp()
2151 instance->chan_ck); in oncore_get_timestamp()
2152 oncore_log_f(instance, LOG_INFO, "Using chan = %d", in oncore_get_timestamp()
2153 instance->chan); in oncore_get_timestamp()
2155 instance->o_state = ONCORE_HAVE_CHAN; in oncore_get_timestamp()
2156 oncore_log(instance, LOG_NOTICE, "state = ONCORE_HAVE_CHAN"); in oncore_get_timestamp()
2158 instance->timeout = 4; in oncore_get_timestamp()
2159 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2163 if (instance->o_state != ONCORE_ALMANAC && instance->o_state != ONCORE_RUN) in oncore_get_timestamp()
2168 if (instance->count) { in oncore_get_timestamp()
2169 if (instance->count++ < 5) in oncore_get_timestamp()
2171 instance->count = 0; in oncore_get_timestamp()
2174 memcpy(instance->BEHa, buf, (size_t) (len+3)); /* Ba, Ea or Ha */ in oncore_get_timestamp()
2178 if (instance->pps_control_msg_seen != -2) { in oncore_get_timestamp()
2179 if ((instance->pps_control_msg_seen == -1) && (instance->pps_control != -1)) { in oncore_get_timestamp()
2180 oncore_log(instance, LOG_INFO, "PPSCONTROL set, but not implemented (not M12)"); in oncore_get_timestamp()
2182 instance->pps_control_msg_seen = -2; in oncore_get_timestamp()
2187 oncore_check_almanac(instance); in oncore_get_timestamp()
2188 oncore_check_antenna(instance); in oncore_get_timestamp()
2193 if (instance->o_state == ONCORE_ALMANAC) in oncore_get_timestamp()
2194 if (oncore_wait_almanac(instance)) in oncore_get_timestamp()
2199 if (instance->once) { in oncore_get_timestamp()
2200 instance->once = 0; in oncore_get_timestamp()
2201 instance->count2 = 1; in oncore_get_timestamp()
2206 if (instance->chan != 12 && !instance->saw_At) { in oncore_get_timestamp()
2207 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2209 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_get_timestamp()
2217 mode = instance->init_type; in oncore_get_timestamp()
2222 instance->site_survey = ONCORE_SS_DONE; in oncore_get_timestamp()
2223 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_get_timestamp()
2228 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_TESTING"); in oncore_get_timestamp()
2229 instance->site_survey = ONCORE_SS_TESTING; in oncore_get_timestamp()
2230 instance->count1 = 1; in oncore_get_timestamp()
2231 if (instance->chan == 12) in oncore_get_timestamp()
2232 oncore_sendmsg(instance, oncore_cmd_Gd3, sizeof(oncore_cmd_Gd3)); /* M12+T */ in oncore_get_timestamp()
2234 oncore_sendmsg(instance, oncore_cmd_At2, sizeof(oncore_cmd_At2)); /* not GT, arg not VP */ in oncore_get_timestamp()
2241 oncore_sendmsg(instance, oncore_cmd_Ayx, sizeof(oncore_cmd_Ayx)); in oncore_get_timestamp()
2245 oncore_sendmsg(instance, oncore_cmd_Azx, sizeof(oncore_cmd_Azx)); in oncore_get_timestamp()
2249 oncore_sendmsg(instance, oncore_cmd_Agx, sizeof(oncore_cmd_Agx)); in oncore_get_timestamp()
2260 if (instance->site_survey == ONCORE_SS_TESTING) { in oncore_get_timestamp()
2261 if (instance->chan == 12) { in oncore_get_timestamp()
2262 if (instance->count1) { in oncore_get_timestamp()
2263 if (instance->count1++ > 5 || instance->BEHa[130]&0x10) { in oncore_get_timestamp()
2264 instance->count1 = 0; in oncore_get_timestamp()
2265 if (instance->BEHa[130]&0x10) { in oncore_get_timestamp()
2266 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2269 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_HW"); in oncore_get_timestamp()
2270 instance->site_survey = ONCORE_SS_HW; in oncore_get_timestamp()
2272 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_SW"); in oncore_get_timestamp()
2273 instance->site_survey = ONCORE_SS_SW; in oncore_get_timestamp()
2278 if (instance->count1) { in oncore_get_timestamp()
2279 if (instance->count1++ > 5) { in oncore_get_timestamp()
2280 instance->count1 = 0; in oncore_get_timestamp()
2282 * For instance->site_survey to still be ONCORE_SS_TESTING, then after a 5sec in oncore_get_timestamp()
2299 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
2303 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_SW"); in oncore_get_timestamp()
2304 instance->site_survey = ONCORE_SS_SW; in oncore_get_timestamp()
2306 instance->ss_lat = instance->ss_long = instance->ss_ht = 0; in oncore_get_timestamp()
2307 if (instance->chan == 12) in oncore_get_timestamp()
2308 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* disable */ in oncore_get_timestamp()
2310 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* disable */ in oncore_get_timestamp()
2311 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* disable */ in oncore_get_timestamp()
2320 if (instance->chan == 6) { in oncore_get_timestamp()
2321 if (instance->BEHa[64]&0x8) in oncore_get_timestamp()
2322 instance->mode = MODE_0D; in oncore_get_timestamp()
2323 else if (instance->BEHa[64]&0x10) in oncore_get_timestamp()
2324 instance->mode = MODE_2D; in oncore_get_timestamp()
2325 else if (instance->BEHa[64]&0x20) in oncore_get_timestamp()
2326 instance->mode = MODE_3D; in oncore_get_timestamp()
2327 } else if (instance->chan == 8) { in oncore_get_timestamp()
2328 if (instance->BEHa[72]&0x8) in oncore_get_timestamp()
2329 instance->mode = MODE_0D; in oncore_get_timestamp()
2330 else if (instance->BEHa[72]&0x10) in oncore_get_timestamp()
2331 instance->mode = MODE_2D; in oncore_get_timestamp()
2332 else if (instance->BEHa[72]&0x20) in oncore_get_timestamp()
2333 instance->mode = MODE_3D; in oncore_get_timestamp()
2334 } else if (instance->chan == 12) { in oncore_get_timestamp()
2337 bits = (instance->BEHa[129]>>5) & 0x7; /* actually Ha */ in oncore_get_timestamp()
2339 instance->mode = MODE_0D; in oncore_get_timestamp()
2341 instance->mode = MODE_2D; in oncore_get_timestamp()
2343 instance->mode = MODE_3D; in oncore_get_timestamp()
2348 if (instance->shmem) { in oncore_get_timestamp()
2352 switch(instance->chan) { in oncore_get_timestamp()
2353 case 6: smp = &instance->shmem[instance->shmem_Ba]; break; in oncore_get_timestamp()
2354 case 8: smp = &instance->shmem[instance->shmem_Ea]; break; in oncore_get_timestamp()
2355 case 12: smp = &instance->shmem[instance->shmem_Ha]; break; in oncore_get_timestamp()
2359 switch (instance->mode) { in oncore_get_timestamp()
2378 if (instance->traim_delay) { in oncore_get_timestamp()
2379 if (instance->traim_delay++ > 5) { in oncore_get_timestamp()
2380 instance->traim = 0; in oncore_get_timestamp()
2381 instance->traim_delay = 0; in oncore_get_timestamp()
2383 oncore_log(instance, LOG_INFO, cp); in oncore_get_timestamp()
2385 oncore_set_traim(instance); in oncore_get_timestamp()
2393 if (!instance->have_dH && !instance->traim_delay) in oncore_get_timestamp()
2394 oncore_compute_dH(instance); in oncore_get_timestamp()
2401 instance->pp->year = buf[6]*256+buf[7]; in oncore_get_timestamp()
2402 instance->pp->day = ymd2yd(buf[6]*256+buf[7], buf[4], buf[5]); in oncore_get_timestamp()
2403 instance->pp->hour = buf[8]; in oncore_get_timestamp()
2404 instance->pp->minute = buf[9]; in oncore_get_timestamp()
2405 instance->pp->second = buf[10]; in oncore_get_timestamp()
2411 if (instance->site_survey == ONCORE_SS_HW || instance->site_survey == ONCORE_SS_SW) in oncore_get_timestamp()
2412 oncore_ss(instance); in oncore_get_timestamp()
2416 if (instance->count2) { in oncore_get_timestamp()
2417 if (instance->count2++ > 5) { /* this delay to check on @@Ay command */ in oncore_get_timestamp()
2418 instance->count2 = 0; in oncore_get_timestamp()
2423 if (!instance->saw_Ay && instance->offset) { in oncore_get_timestamp()
2424 oncore_log(instance, LOG_INFO, "No @@Ay command, PPS OFFSET ignored"); in oncore_get_timestamp()
2425 instance->offset = 0; in oncore_get_timestamp()
2434 oncore_check_leap_sec(instance); in oncore_get_timestamp()
2440 …if (instance->shmem && !instance->shmem_bad_Ea && instance->shmem_Posn && (instance->site_survey =… in oncore_get_timestamp()
2441 oncore_shmem_get_3D(instance); in oncore_get_timestamp()
2443 if (!instance->traim) /* NO traim, no BnEnHn, go get tick */ in oncore_get_timestamp()
2444 oncore_get_timestamp(instance, instance->offset, instance->offset); in oncore_get_timestamp()
2453 struct instance *instance, in oncore_get_timestamp()
2458 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
2479 struct instance *instance, in oncore_get_timestamp()
2486 instance->saw_Bj = 1; in oncore_get_timestamp()
2490 instance->pp->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
2494 instance->pp->leap = LEAP_DELSECOND; in oncore_get_timestamp()
2499 instance->pp->leap = LEAP_NOWARNING; in oncore_get_timestamp()
2503 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2510 struct instance *instance, in oncore_get_timestamp()
2530 …if ((!instance->Bl.lsf_flg && !instance->Bl.wn_flg) && (subframe == 4 && page == 18 && valid == 10… in oncore_get_timestamp()
2531 instance->Bl.dt_ls = buf[32]; in oncore_get_timestamp()
2532 instance->Bl.WN_lsf = buf[33]; in oncore_get_timestamp()
2533 instance->Bl.DN_lsf = buf[34]; in oncore_get_timestamp()
2534 instance->Bl.dt_lsf = buf[35]; in oncore_get_timestamp()
2535 instance->Bl.lsf_flg++; in oncore_get_timestamp()
2537 if ((instance->Bl.lsf_flg && !instance->Bl.wn_flg) && (subframe == 1 && valid == 10)) { in oncore_get_timestamp()
2539 instance->Bl.WN = i >> 6; in oncore_get_timestamp()
2544 instance->Bl.DN = tow/57600L + 1; in oncore_get_timestamp()
2545 instance->Bl.wn_flg++; in oncore_get_timestamp()
2547 if (instance->Bl.wn_flg && instance->Bl.lsf_flg) { in oncore_get_timestamp()
2548 instance->Bl.wn_flg = instance->Bl.lsf_flg = 0; in oncore_get_timestamp()
2550 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof oncore_cmd_Bl); in oncore_get_timestamp()
2553 i = instance->Bl.WN&01400; in oncore_get_timestamp()
2554 instance->Bl.WN_lsf |= i; in oncore_get_timestamp()
2558 i = (instance->Bl.WN_lsf - instance->Bl.WN); in oncore_get_timestamp()
2561 day_now = instance->Bl.DN; in oncore_get_timestamp()
2562 day_lsf = 7*i + instance->Bl.DN_lsf; in oncore_get_timestamp()
2569 if (day_lsf - day_now < 28 || instance->BEHa[5] < 20) { in oncore_get_timestamp()
2570 i = instance->Bl.dt_lsf - instance->Bl.dt_ls; in oncore_get_timestamp()
2588 instance->peer->leap = LEAP_NOWARNING; in oncore_get_timestamp()
2592 instance->peer->leap = LEAP_DELSECOND; in oncore_get_timestamp()
2596 instance->peer->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
2603 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2605 i = instance->Bl.dt_lsf-instance->Bl.dt_ls; in oncore_get_timestamp()
2608 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
2620 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2622 instance->Bl.dt_ls, instance->Bl.dt_lsf, in oncore_get_timestamp()
2623 instance->Bl.WN, instance->Bl.DN, in oncore_get_timestamp()
2624 instance->Bl.WN_lsf, instance->Bl.DN_lsf, in oncore_get_timestamp()
2625 instance->Bl.wn_flg, instance->Bl.lsf_flg, in oncore_get_timestamp()
2626 instance->Bl.Bl_day); in oncore_get_timestamp()
2633 struct instance *instance, in oncore_get_timestamp()
2640 if (instance->o_state != ONCORE_RUN) in oncore_get_timestamp()
2643 if (instance->traim_delay) { /* flag that @@Bn/@@En/Hn returned */ in oncore_get_timestamp()
2644 instance->traim_ck = 1; in oncore_get_timestamp()
2645 instance->traim_delay = 0; in oncore_get_timestamp()
2646 oncore_log(instance, LOG_NOTICE, "ONCORE: Detected TRAIM, TRAIM = ON"); in oncore_get_timestamp()
2648 oncore_set_traim(instance); in oncore_get_timestamp()
2651 memcpy(instance->BEHn, buf, (size_t) len); /* Bn or En or Hn */ in oncore_get_timestamp()
2653 if (!instance->traim) /* BnEnHn will be turned off in any case */ in oncore_get_timestamp()
2659 if (instance->BEHn[6]) { /* bad TRAIM */ in oncore_get_timestamp()
2660 oncore_log(instance, LOG_WARNING, "BAD TRAIM"); in oncore_get_timestamp()
2664 dt1 = instance->saw_tooth + instance->offset; /* dt this time step */ in oncore_get_timestamp()
2665 instance->saw_tooth = (s_char) instance->BEHn[14]; /* update for next time Hn[14] */ in oncore_get_timestamp()
2666 dt2 = instance->saw_tooth + instance->offset; /* dt next time step */ in oncore_get_timestamp()
2668 if (instance->BEHn[21]) /* bad TRAIM */ in oncore_get_timestamp()
2671 dt1 = instance->saw_tooth + instance->offset; /* dt this time step */ in oncore_get_timestamp()
2672 instance->saw_tooth = (s_char) instance->BEHn[25]; /* update for next time Bn[25], En[25] */ in oncore_get_timestamp()
2673 dt2 = instance->saw_tooth + instance->offset; /* dt next time step */ in oncore_get_timestamp()
2676 oncore_get_timestamp(instance, dt1, dt2); in oncore_get_timestamp()
2699 struct instance *instance, in oncore_get_timestamp()
2706 if (instance->o_state == ONCORE_TEST_SENT) { in oncore_get_timestamp()
2709 instance->timeout = 0; in oncore_get_timestamp()
2714 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2718 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2731 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
2735 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
2739 oncore_log(instance, LOG_ERR, in oncore_get_timestamp()
2742 refclock_report(instance->peer, CEVNT_FAULT); in oncore_get_timestamp()
2743 oncore_shutdown(instance->unit, instance->peer); in oncore_get_timestamp()
2749 oncore_antenna_report(instance, antenna); in oncore_get_timestamp()
2751 instance->o_state = ONCORE_INIT; in oncore_get_timestamp()
2752 oncore_log(instance, LOG_NOTICE, "state = ONCORE_INIT"); in oncore_get_timestamp()
2754 instance->timeout = 4; in oncore_get_timestamp()
2755 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2767 struct instance *instance, in oncore_get_timestamp()
2774 if (instance->shmem == NULL) in oncore_get_timestamp()
2786 oncore_log(instance, LOG_NOTICE, "Cb: Response is NO ALMANAC"); in oncore_get_timestamp()
2791 instance->shmem[instance->shmem_Cb + i + 2]++; in oncore_get_timestamp()
2792 memcpy(instance->shmem + instance->shmem_Cb + i + 3, buf, (size_t) (len + 3)); in oncore_get_timestamp()
2795 oncore_log_f(instance, LOG_DEBUG, "See Cb [%d,%d]", buf[4], in oncore_get_timestamp()
2809 struct instance *instance, in oncore_get_timestamp()
2814 if (instance->o_state == ONCORE_RESET_SENT) { in oncore_get_timestamp()
2815 oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Return to Posn Fix mode */ in oncore_get_timestamp()
2817 instance->o_state = ONCORE_TEST_SENT; in oncore_get_timestamp()
2818 oncore_log(instance, LOG_NOTICE, "state = ONCORE_TEST_SENT"); in oncore_get_timestamp()
2820 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2843 struct instance *instance, in oncore_get_timestamp()
2850 memcpy(instance->Cj, buf, len); in oncore_get_timestamp()
2852 instance->timeout = 0; in oncore_get_timestamp()
2853 if (instance->o_state == ONCORE_CHECK_ID) { in oncore_get_timestamp()
2854 oncore_msg_Cj_id(instance, buf, len); in oncore_get_timestamp()
2855 oncore_chan_test(instance); in oncore_get_timestamp()
2856 } else if (instance->o_state == ONCORE_HAVE_CHAN) { in oncore_get_timestamp()
2857 mode = instance->init_type; in oncore_get_timestamp()
2859 instance->o_state = ONCORE_RESET_SENT; in oncore_get_timestamp()
2860 oncore_log(instance, LOG_NOTICE, "state = ONCORE_RESET_SENT"); in oncore_get_timestamp()
2861 oncore_sendmsg(instance, oncore_cmd_Cf, sizeof(oncore_cmd_Cf)); in oncore_get_timestamp()
2863 instance->o_state = ONCORE_TEST_SENT; in oncore_get_timestamp()
2864 oncore_log(instance, LOG_NOTICE, "state = ONCORE_TEST_SENT"); in oncore_get_timestamp()
2868 if (instance->o_state == ONCORE_TEST_SENT) { in oncore_get_timestamp()
2869 if (instance->chan == 6) in oncore_get_timestamp()
2870 oncore_sendmsg(instance, oncore_cmd_Ca, sizeof(oncore_cmd_Ca)); in oncore_get_timestamp()
2871 else if (instance->chan == 8) in oncore_get_timestamp()
2872 oncore_sendmsg(instance, oncore_cmd_Fa, sizeof(oncore_cmd_Fa)); in oncore_get_timestamp()
2873 else if (instance->chan == 12) in oncore_get_timestamp()
2874 oncore_sendmsg(instance, oncore_cmd_Ia, sizeof(oncore_cmd_Ia)); in oncore_get_timestamp()
2875 } else if (instance->o_state == ONCORE_INIT) in oncore_get_timestamp()
2876 oncore_msg_Cj_init(instance, buf, len); in oncore_get_timestamp()
2895 struct instance *instance, in oncore_get_timestamp()
2905 instance->Cj[294] = '\0'; in oncore_get_timestamp()
2906 for (cp= (char *)instance->Cj; cp< (char *) &instance->Cj[294]; ) { in oncore_get_timestamp()
2909 cpw = (char *)&instance->Cj[294]; in oncore_get_timestamp()
2911 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2918 instance->version = atoi((char *) &instance->Cj[83]); in oncore_get_timestamp()
2919 instance->revision = atoi((char *) &instance->Cj[111]); in oncore_get_timestamp()
2924 for (cp= (char *) &instance->Cj[160]; *cp == ' '; cp++) /* start right after 'Model #' */ in oncore_get_timestamp()
2935 instance->model = ONCORE_PVT6; in oncore_get_timestamp()
2938 instance->model = ONCORE_BASIC; in oncore_get_timestamp()
2941 instance->model = ONCORE_VP; in oncore_get_timestamp()
2944 instance->model = ONCORE_M12; in oncore_get_timestamp()
2948 instance->model = ONCORE_GT; in oncore_get_timestamp()
2951 instance->model = ONCORE_GTPLUS; in oncore_get_timestamp()
2954 instance->model = ONCORE_UT; in oncore_get_timestamp()
2957 instance->model = ONCORE_UTPLUS; in oncore_get_timestamp()
2960 instance->model = ONCORE_SL; in oncore_get_timestamp()
2963 instance->model = ONCORE_UNKNOWN; in oncore_get_timestamp()
2967 instance->model = ONCORE_UNKNOWN; in oncore_get_timestamp()
2972 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
2974 cp, instance->version, instance->revision); in oncore_get_timestamp()
2976 instance->chan_id = 8; /* default */ in oncore_get_timestamp()
2977 if (instance->model == ONCORE_BASIC || instance->model == ONCORE_PVT6) in oncore_get_timestamp()
2978 instance->chan_id = 6; in oncore_get_timestamp()
2979 …else if (instance->model == ONCORE_VP || instance->model == ONCORE_UT || instance->model == ONCORE… in oncore_get_timestamp()
2980 instance->chan_id = 8; in oncore_get_timestamp()
2981 else if (instance->model == ONCORE_M12) in oncore_get_timestamp()
2982 instance->chan_id = 12; in oncore_get_timestamp()
2984 instance->traim_id = 0; /* default */ in oncore_get_timestamp()
2985 if (instance->model == ONCORE_BASIC || instance->model == ONCORE_PVT6) in oncore_get_timestamp()
2986 instance->traim_id = 0; in oncore_get_timestamp()
2987 …else if (instance->model == ONCORE_VP || instance->model == ONCORE_UT || instance->model == ONCORE… in oncore_get_timestamp()
2988 instance->traim_id = 1; in oncore_get_timestamp()
2989 else if (instance->model == ONCORE_M12) in oncore_get_timestamp()
2990 instance->traim_id = -1; in oncore_get_timestamp()
2992 oncore_log_f(instance, LOG_INFO, "Channels = %d, TRAIM = %s", in oncore_get_timestamp()
2993 instance->chan_id, in oncore_get_timestamp()
2994 ((instance->traim_id < 0) in oncore_get_timestamp()
2996 : (instance->traim_id > 0) in oncore_get_timestamp()
3011 struct instance *instance, in oncore_get_timestamp()
3026 if (instance->chan == 12) { in oncore_get_timestamp()
3027 instance->shmem_bad_Ea = 1; in oncore_get_timestamp()
3028 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3030 instance->version, instance->revision); in oncore_get_timestamp()
3033 oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Return to Posn Fix mode */ in oncore_get_timestamp()
3034 oncore_sendmsg(instance, oncore_cmd_Bb, sizeof(oncore_cmd_Bb)); /* turn on for shmem (6/8/12) */ in oncore_get_timestamp()
3035 oncore_sendmsg(instance, oncore_cmd_Ek, sizeof(oncore_cmd_Ek)); /* turn off (VP) */ in oncore_get_timestamp()
3036 oncore_sendmsg(instance, oncore_cmd_Aw, sizeof(oncore_cmd_Aw)); /* UTC time (6/8/12) */ in oncore_get_timestamp()
3037 oncore_sendmsg(instance, oncore_cmd_AB, sizeof(oncore_cmd_AB)); /* Appl type static (VP) */ in oncore_get_timestamp()
3038 …oncore_sendmsg(instance, oncore_cmd_Be, sizeof(oncore_cmd_Be)); /* Tell us the Almanac for shmem (… in oncore_get_timestamp()
3039 oncore_sendmsg(instance, oncore_cmd_Bd, sizeof(oncore_cmd_Bd)); /* Tell us when Almanac changes */ in oncore_get_timestamp()
3041 mode = instance->init_type; in oncore_get_timestamp()
3048 if (instance->posn_set) { in oncore_get_timestamp()
3049 oncore_log(instance, LOG_INFO, "Setting Posn from input data"); in oncore_get_timestamp()
3050 oncore_set_posn(instance); /* this should print posn indirectly thru the As cmd */ in oncore_get_timestamp()
3052 if (instance->chan != 12) in oncore_get_timestamp()
3053 oncore_sendmsg(instance, oncore_cmd_Atx, sizeof(oncore_cmd_Atx)); in oncore_get_timestamp()
3058 w32_buf(&Cmd[-2+4], (int)instance->delay); in oncore_get_timestamp()
3059 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Az)); /* 6,8,12 */ in oncore_get_timestamp()
3063 w32_buf(&Cmd[-2+4], instance->offset); /* will check for hw response */ in oncore_get_timestamp()
3064 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ay)); in oncore_get_timestamp()
3068 if (instance->Ag != 0xff) { /* will have 0xff in it if not set by user */ in oncore_get_timestamp()
3070 Cmd[-2+4] = instance->Ag; in oncore_get_timestamp()
3071 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ag)); in oncore_get_timestamp()
3082 …if (instance->chan == 6) { /* start 6chan, kill 8,12chan commands, possibly testing VP in 6chan mo… in oncore_get_timestamp()
3083 oncore_sendmsg(instance, oncore_cmd_Ea0, sizeof(oncore_cmd_Ea0)); in oncore_get_timestamp()
3084 oncore_sendmsg(instance, oncore_cmd_En0, sizeof(oncore_cmd_En0)); in oncore_get_timestamp()
3085 oncore_sendmsg(instance, oncore_cmd_Ha0, sizeof(oncore_cmd_Ha0)); in oncore_get_timestamp()
3086 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_get_timestamp()
3087 oncore_sendmsg(instance, oncore_cmd_Ba, sizeof(oncore_cmd_Ba )); in oncore_get_timestamp()
3088 } else if (instance->chan == 8) { /* start 8chan, kill 6,12chan commands */ in oncore_get_timestamp()
3089 oncore_sendmsg(instance, oncore_cmd_Ba0, sizeof(oncore_cmd_Ba0)); in oncore_get_timestamp()
3090 oncore_sendmsg(instance, oncore_cmd_Bn0, sizeof(oncore_cmd_Bn0)); in oncore_get_timestamp()
3091 oncore_sendmsg(instance, oncore_cmd_Ha0, sizeof(oncore_cmd_Ha0)); in oncore_get_timestamp()
3092 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_get_timestamp()
3093 oncore_sendmsg(instance, oncore_cmd_Ea, sizeof(oncore_cmd_Ea )); in oncore_get_timestamp()
3094 } else if (instance->chan == 12){ /* start 12chan, kill 6,12chan commands */ in oncore_get_timestamp()
3095 oncore_sendmsg(instance, oncore_cmd_Ba0, sizeof(oncore_cmd_Ba0)); in oncore_get_timestamp()
3096 oncore_sendmsg(instance, oncore_cmd_Bn0, sizeof(oncore_cmd_Bn0)); in oncore_get_timestamp()
3097 oncore_sendmsg(instance, oncore_cmd_Ea0, sizeof(oncore_cmd_Ea0)); in oncore_get_timestamp()
3098 oncore_sendmsg(instance, oncore_cmd_En0, sizeof(oncore_cmd_En0)); in oncore_get_timestamp()
3099 oncore_sendmsg(instance, oncore_cmd_Ha, sizeof(oncore_cmd_Ha )); in oncore_get_timestamp()
3100 oncore_cmd_Gc[2] = (instance->pps_control < 0) ? 1 : instance->pps_control; in oncore_get_timestamp()
3101 …oncore_sendmsg(instance, oncore_cmd_Gc, sizeof(oncore_cmd_Gc)); /* PPS off/continuous/Tracking 1+s… in oncore_get_timestamp()
3104 instance->count = 1; in oncore_get_timestamp()
3105 instance->o_state = ONCORE_ALMANAC; in oncore_get_timestamp()
3106 oncore_log(instance, LOG_NOTICE, "state = ONCORE_ALMANAC"); in oncore_get_timestamp()
3115 struct instance *instance, in oncore_get_timestamp()
3136 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3140 instance->ss_lat = lat; in oncore_get_timestamp()
3141 instance->ss_long = lon; in oncore_get_timestamp()
3142 instance->ss_ht = ht; in oncore_get_timestamp()
3144 oncore_print_posn(instance); in oncore_get_timestamp()
3153 struct instance *instance, in oncore_get_timestamp()
3173 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3184 struct instance *instance, in oncore_get_timestamp()
3191 instance->pps_control_msg_seen = 1; in oncore_get_timestamp()
3192 oncore_log_f(instance, LOG_INFO, "PPS Control set to %s", in oncore_get_timestamp()
3203 struct instance *instance, in oncore_get_timestamp()
3216 instance->saw_Gj = 1; /* flag, saw_Gj, dont need to try Bj in check_leap */ in oncore_get_timestamp()
3222 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
3243 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3251 instance->pp->leap = LEAP_NOWARNING; in oncore_get_timestamp()
3254 if (buf[6] == instance->BEHa[6] && buf[7] == instance->BEHa[7] && /* year */ in oncore_get_timestamp()
3255 buf[8] == instance->BEHa[4]) { /* month */ in oncore_get_timestamp()
3258 instance->pp->leap = LEAP_DELSECOND; in oncore_get_timestamp()
3261 instance->pp->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
3266 oncore_log(instance, LOG_INFO, cp); in oncore_get_timestamp()
3275 struct instance *instance, in oncore_get_timestamp()
3280 if (instance && instance->peer) { in oncore_get_timestamp()
3281 oncore_log(instance, LOG_ERR, "Oncore: System Failure at Power On"); in oncore_get_timestamp()
3282 oncore_shutdown(instance->unit, instance->peer); in oncore_get_timestamp()
3291 struct instance *instance, in oncore_get_timestamp()
3296 if (instance->ant_state == new_state) in oncore_get_timestamp()
3307 instance->ant_state = new_state; in oncore_get_timestamp()
3308 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
3315 struct instance *instance in oncore_get_timestamp()
3327 instance->o_state = ONCORE_CHECK_CHAN; in oncore_get_timestamp()
3328 oncore_log(instance, LOG_NOTICE, "state = ONCORE_CHECK_CHAN"); in oncore_get_timestamp()
3330 instance->count3 = 1; in oncore_get_timestamp()
3331 oncore_sendmsg(instance, oncore_cmd_Ba, sizeof(oncore_cmd_Ba)); in oncore_get_timestamp()
3332 oncore_sendmsg(instance, oncore_cmd_Ea, sizeof(oncore_cmd_Ea)); in oncore_get_timestamp()
3333 oncore_sendmsg(instance, oncore_cmd_Ha, sizeof(oncore_cmd_Ha)); in oncore_get_timestamp()
3342 struct instance *instance in oncore_get_timestamp()
3345 if (instance->chan == 6) { in oncore_get_timestamp()
3346 instance->rsm.bad_almanac = instance->BEHa[64]&0x1; in oncore_get_timestamp()
3347 instance->rsm.bad_fix = instance->BEHa[64]&0x52; in oncore_get_timestamp()
3348 } else if (instance->chan == 8) { in oncore_get_timestamp()
3349 instance->rsm.bad_almanac = instance->BEHa[72]&0x1; in oncore_get_timestamp()
3350 instance->rsm.bad_fix = instance->BEHa[72]&0x52; in oncore_get_timestamp()
3351 } else if (instance->chan == 12) { in oncore_get_timestamp()
3354 bits1 = (instance->BEHa[129]>>5) & 0x7; /* actually Ha */ in oncore_get_timestamp()
3355 bits2 = instance->BEHa[130]; in oncore_get_timestamp()
3356 instance->rsm.bad_almanac = (bits2 & 0x80); in oncore_get_timestamp()
3357 instance->rsm.bad_fix = (bits2 & 0x8) || (bits1 == 0x2); in oncore_get_timestamp()
3360 bits3 = instance->BEHa[141]; /* UTC parameters */ in oncore_get_timestamp()
3361 if (!instance->count5_set && (bits3 & 0xC0)) { in oncore_get_timestamp()
3362 instance->count5 = 4; /* was 2 [Bug 1766] */ in oncore_get_timestamp()
3363 instance->count5_set = 1; in oncore_get_timestamp()
3366 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
3368 instance->BEHa[129], instance->BEHa[130], in oncore_get_timestamp()
3370 instance->mode == MODE_0D, in oncore_get_timestamp()
3371 instance->mode == MODE_2D, in oncore_get_timestamp()
3372 instance->mode == MODE_3D, in oncore_get_timestamp()
3373 instance->rsm.bad_almanac, in oncore_get_timestamp()
3374 instance->rsm.bad_fix); in oncore_get_timestamp()
3386 struct instance *instance in oncore_check_antenna() argument
3391 if (instance->chan == 12) in oncore_check_antenna()
3392 antenna = (instance->BEHa[130] & 0x6 ) >> 1; in oncore_check_antenna()
3394 antenna = (instance->BEHa[37] & 0xc0) >> 6; /* prob unset 6, set GT, UT unset VP */ in oncore_check_antenna()
3396 oncore_antenna_report (instance, antenna); in oncore_check_antenna()
3426 struct instance *instance in oncore_check_leap_sec() argument
3430 if (instance->Bj_day != instance->BEHa[5]) { /* do this 1/day */ in oncore_check_leap_sec()
3431 instance->Bj_day = instance->BEHa[5]; in oncore_check_leap_sec()
3433 if (instance->saw_Gj < 0) { /* -1 DONT have Gj use Bj */ in oncore_check_leap_sec()
3434 if ((instance->BEHa[4] == 6) || (instance->BEHa[4] == 12)) in oncore_check_leap_sec()
3435 oncore_sendmsg(instance, oncore_cmd_Bj, sizeof(oncore_cmd_Bj)); in oncore_check_leap_sec()
3436 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof(oncore_cmd_Bl)); in oncore_check_leap_sec()
3440 if (instance->saw_Gj == 0) /* 0 is dont know if we have Gj */ in oncore_check_leap_sec()
3441 instance->count4 = 1; in oncore_check_leap_sec()
3443 oncore_sendmsg(instance, oncore_cmd_Gj, sizeof(oncore_cmd_Gj)); in oncore_check_leap_sec()
3451 if (instance->count4) { /* delay, waiting for Gj response */ in oncore_check_leap_sec()
3452 if (instance->saw_Gj == 1) in oncore_check_leap_sec()
3453 instance->count4 = 0; in oncore_check_leap_sec()
3454 else if (instance->count4++ > 5) { /* delay, waiting for Gj response */ in oncore_check_leap_sec()
3455 instance->saw_Gj = -1; /* didnt see it, will use Bj */ in oncore_check_leap_sec()
3456 instance->count4 = 0; in oncore_check_leap_sec()
3457 if ((instance->BEHa[4] == 6) || (instance->BEHa[4] == 12)) { in oncore_check_leap_sec()
3458 oncore_sendmsg(instance, oncore_cmd_Bj, sizeof(oncore_cmd_Bj)); in oncore_check_leap_sec()
3459 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof(oncore_cmd_Bl)); in oncore_check_leap_sec()
3491 struct instance *instance in oncore_compute_dH() argument
3499 instance->have_dH = 1; in oncore_compute_dH()
3500 if (instance->chan == 12) { in oncore_compute_dH()
3501 GPS = buf_w32(&instance->BEHa[39]); in oncore_compute_dH()
3502 MSL = buf_w32(&instance->BEHa[43]); in oncore_compute_dH()
3504 GPS = buf_w32(&instance->BEHa[23]); in oncore_compute_dH()
3505 MSL = buf_w32(&instance->BEHa[27]); in oncore_compute_dH()
3507 instance->dH = GPS - MSL; in oncore_compute_dH()
3508 instance->dH /= 100.; in oncore_compute_dH()
3513 oncore_log_f(instance, LOG_INFO, in oncore_compute_dH()
3514 "dH = (GPS - MSL) = %.2fm", instance->dH); in oncore_compute_dH()
3525 struct instance *instance in oncore_load_almanac() argument
3533 if (!instance->shmem) in oncore_load_almanac()
3537 for (cp = instance->shmem + 4; (n = 256 * (*(cp-3)) + *(cp-2)); in oncore_load_almanac()
3542 refclock_fdwrite(instance->peer, instance->ttyfd, in oncore_load_almanac()
3544 oncore_print_Cb(instance, cp); in oncore_load_almanac()
3548 for (cp = instance->shmem + 4; (n = 256 * (*(cp-3)) + *(cp-2)); in oncore_load_almanac()
3550 oncore_log_f(instance, LOG_DEBUG, "See %c%c%c%c %d", in oncore_load_almanac()
3554 oncore_print_Cb(instance, cp); in oncore_load_almanac()
3557 oncore_log(instance, LOG_DEBUG, "GOOD SF"); in oncore_load_almanac()
3558 write(instance->ttyfd, cp, n); in oncore_load_almanac()
3560 oncore_log(instance, LOG_DEBUG, "BAD SF"); in oncore_load_almanac()
3562 oncore_log(instance, LOG_DEBUG, "BAD CHECKSUM"); in oncore_load_almanac()
3569 if (!instance->posn_set) { /* if we input a posn use it, else from SHMEM */ in oncore_load_almanac()
3570 oncore_log(instance, LOG_NOTICE, "Loading Posn from SHMEM"); in oncore_load_almanac()
3571 for (cp=instance->shmem+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3)) { in oncore_load_almanac()
3572 … if ((instance->chan == 6 && (!strncmp((char *) cp, "@@Ba", 4) && oncore_checksum_ok(cp, 68))) || in oncore_load_almanac()
3573 … (instance->chan == 8 && (!strncmp((char *) cp, "@@Ea", 4) && oncore_checksum_ok(cp, 76))) || in oncore_load_almanac()
3574 … (instance->chan == 12 && (!strncmp((char *) cp, "@@Ha", 4) && oncore_checksum_ok(cp, 154)))) { in oncore_load_almanac()
3577 instance->posn_set = 1; in oncore_load_almanac()
3582 oncore_log_f(instance, LOG_DEBUG, in oncore_load_almanac()
3584 (long)(cp-instance->shmem), in oncore_load_almanac()
3588 instance->ss_lat = ii; in oncore_load_almanac()
3589 instance->ss_long = jj; in oncore_load_almanac()
3590 instance->ss_ht = kk; in oncore_load_almanac()
3595 oncore_set_posn(instance); in oncore_load_almanac()
3603 oncore_log_f(instance, LOG_DEBUG, "DATE %d %d %d, %d %d %d", in oncore_load_almanac()
3607 if (instance->chan == 12) { in oncore_load_almanac()
3619 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Gb)); in oncore_load_almanac()
3623 oncore_sendmsg(instance, oncore_cmd_Ab, sizeof(oncore_cmd_Ab)); in oncore_load_almanac()
3630 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ac)); in oncore_load_almanac()
3636 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Aa)); in oncore_load_almanac()
3639 oncore_log(instance, LOG_INFO, "Setting Posn and Time after Loading Almanac"); in oncore_load_almanac()
3648 struct instance *instance, in oncore_print_Cb() argument
3656 oncore_log_f(instance, LOG_DEBUG, "DEBUG: See: %c%c%c%c", *(cp), in oncore_print_Cb()
3665 oncore_log(instance, LOG_DEBUG, Msg); in oncore_print_Cb()
3667 oncore_log_f(instance, LOG_DEBUG, "Debug: Cb: [%d,%d]", *(cp+4), in oncore_print_Cb()
3698 struct instance *instance in oncore_print_posn() argument
3706 oncore_log(instance, LOG_INFO, "Posn:"); in oncore_print_posn()
3708 lon = instance->ss_long; in oncore_print_posn()
3715 lat = instance->ss_lat; in oncore_print_posn()
3721 hm = instance->ss_ht/100.; in oncore_print_posn()
3726 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3736 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3746 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3759 struct instance *instance, in oncore_sendmsg() argument
3768 fd = instance->ttyfd; in oncore_sendmsg()
3769 peer = instance->peer; in oncore_sendmsg()
3772 oncore_log_f(instance, LOG_DEBUG, "ONCORE: Send @@%c%c %d", in oncore_sendmsg()
3788 struct instance *instance in oncore_set_posn() argument
3797 if (instance->chan == 12) in oncore_set_posn()
3798 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* (12) */ in oncore_set_posn()
3800 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* (6/8) */ in oncore_set_posn()
3801 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* (6/8) */ in oncore_set_posn()
3804 mode = instance->init_type; in oncore_set_posn()
3808 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3809 w32_buf(&Cmd[-2+8], (int) instance->ss_long); in oncore_set_posn()
3810 w32_buf(&Cmd[-2+12], (int) instance->ss_ht); in oncore_set_posn()
3812 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_As)); /* posn hold 3D posn (6/8/12) */ in oncore_set_posn()
3815 w32_buf(&Cmd[-2+4], (int) instance->ss_ht); in oncore_set_posn()
3817 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Au)); /* altitude hold (6/8/12 not UT, M12T) */ in oncore_set_posn()
3821 if (instance->chan == 12) { in oncore_set_posn()
3823 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3824 w32_buf(&Cmd[-2+8], (int) instance->ss_long); in oncore_set_posn()
3825 w32_buf(&Cmd[-2+12],(int) instance->ss_ht); in oncore_set_posn()
3827 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ga)); /* 3d posn (12) */ in oncore_set_posn()
3830 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3831 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ad)); /* lat (6/8) */ in oncore_set_posn()
3834 w32_buf(&Cmd[-2+4], (int) instance->ss_long); in oncore_set_posn()
3835 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ae)); /* long (6/8) */ in oncore_set_posn()
3838 w32_buf(&Cmd[-2+4], (int) instance->ss_ht); in oncore_set_posn()
3840 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Af)); /* ht (6/8) */ in oncore_set_posn()
3845 if (instance->chan == 12) in oncore_set_posn()
3846 oncore_sendmsg(instance, oncore_cmd_Gd1, sizeof(oncore_cmd_Gd1)); in oncore_set_posn()
3848 oncore_sendmsg(instance, oncore_cmd_At1, sizeof(oncore_cmd_At1)); in oncore_set_posn()
3856 struct instance *instance in oncore_set_traim() argument
3859 if (instance->traim_in != -1) /* set in Input */ in oncore_set_traim()
3860 instance->traim = instance->traim_in; in oncore_set_traim()
3862 instance->traim = instance->traim_ck; in oncore_set_traim()
3864 oncore_log_f(instance, LOG_INFO, "Input says TRAIM = %d", in oncore_set_traim()
3865 instance->traim_in); in oncore_set_traim()
3866 oncore_log_f(instance, LOG_INFO, "Model # says TRAIM = %d", in oncore_set_traim()
3867 instance->traim_id); in oncore_set_traim()
3868 oncore_log_f(instance, LOG_INFO, "Testing says TRAIM = %d", in oncore_set_traim()
3869 instance->traim_ck); in oncore_set_traim()
3870 oncore_log_f(instance, LOG_INFO, "Using TRAIM = %d", in oncore_set_traim()
3871 instance->traim); in oncore_set_traim()
3873 if (instance->traim_ck == 1 && instance->traim == 0) { in oncore_set_traim()
3876 if (instance->chan == 6) in oncore_set_traim()
3877 oncore_sendmsg(instance, oncore_cmd_Bnx, sizeof(oncore_cmd_Bnx)); in oncore_set_traim()
3878 else if (instance->chan == 8) in oncore_set_traim()
3879 oncore_sendmsg(instance, oncore_cmd_Enx, sizeof(oncore_cmd_Enx)); in oncore_set_traim()
3881 oncore_sendmsg(instance, oncore_cmd_Ge0, sizeof(oncore_cmd_Ge0)); in oncore_set_traim()
3882 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_set_traim()
3894 struct instance *instance in oncore_shmem_get_3D() argument
3897 if (instance->pp->second%15 == 3) { /* start the sequence */ /* by changing mode */ in oncore_shmem_get_3D()
3898 instance->shmem_reset = 1; in oncore_shmem_get_3D()
3899 if (instance->chan == 12) { in oncore_shmem_get_3D()
3900 if (instance->shmem_Posn == 2) in oncore_shmem_get_3D()
3901 oncore_sendmsg(instance, oncore_cmd_Gd2, sizeof(oncore_cmd_Gd2)); /* 2D */ in oncore_shmem_get_3D()
3903 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* 3D */ in oncore_shmem_get_3D()
3905 if (instance->saw_At) { /* out of 0D -> 3D mode */ in oncore_shmem_get_3D()
3906 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); in oncore_shmem_get_3D()
3907 if (instance->shmem_Posn == 2) /* 3D -> 2D mode */ in oncore_shmem_get_3D()
3908 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_shmem_get_3D()
3910 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); in oncore_shmem_get_3D()
3912 } else if (instance->shmem_reset || (instance->mode != MODE_0D)) { in oncore_shmem_get_3D()
3913 instance->shmem_reset = 0; in oncore_shmem_get_3D()
3914 if (instance->chan == 12) in oncore_shmem_get_3D()
3915 oncore_sendmsg(instance, oncore_cmd_Gd1, sizeof(oncore_cmd_Gd1)); /* 0D */ in oncore_shmem_get_3D()
3917 if (instance->saw_At) { in oncore_shmem_get_3D()
3918 if (instance->mode == MODE_2D) /* 2D -> 3D or 0D mode */ in oncore_shmem_get_3D()
3919 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); in oncore_shmem_get_3D()
3920 oncore_sendmsg(instance, oncore_cmd_At1, sizeof(oncore_cmd_At1)); /* to 0D mode */ in oncore_shmem_get_3D()
3922 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_shmem_get_3D()
3938 struct instance *instance in oncore_ss() argument
3944 if (instance->site_survey == ONCORE_SS_HW) { in oncore_ss()
3949 if ((instance->chan == 8 && !(instance->BEHa[37] & 0x20)) || in oncore_ss()
3950 (instance->chan == 12 && !(instance->BEHa[130] & 0x10))) { in oncore_ss()
3951 oncore_log(instance, LOG_INFO, "Now in 0D mode"); in oncore_ss()
3953 if (instance->chan == 12) in oncore_ss()
3954 oncore_sendmsg(instance, oncore_cmd_Gax, sizeof(oncore_cmd_Gax)); in oncore_ss()
3956 oncore_sendmsg(instance, oncore_cmd_Asx, sizeof(oncore_cmd_Asx)); in oncore_ss()
3958 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_ss()
3959 instance->site_survey = ONCORE_SS_DONE; in oncore_ss()
3966 if (instance->rsm.bad_fix) /* Not if poor geometry or less than 3 sats */ in oncore_ss()
3969 if (instance->mode != MODE_3D) /* Use only 3D Fixes */ in oncore_ss()
3972 instance->ss_lat += buf_w32(&instance->BEHa[15]); in oncore_ss()
3973 instance->ss_long += buf_w32(&instance->BEHa[19]); in oncore_ss()
3974 instance->ss_ht += buf_w32(&instance->BEHa[23]); /* GPS ellipsoid */ in oncore_ss()
3975 instance->ss_count++; in oncore_ss()
3977 if (instance->ss_count != POS_HOLD_AVERAGE) in oncore_ss()
3980 instance->ss_lat /= POS_HOLD_AVERAGE; in oncore_ss()
3981 instance->ss_long /= POS_HOLD_AVERAGE; in oncore_ss()
3982 instance->ss_ht /= POS_HOLD_AVERAGE; in oncore_ss()
3984 oncore_log_f(instance, LOG_NOTICE, in oncore_ss()
3986 instance->ss_lat, instance->ss_long, in oncore_ss()
3987 instance->ss_ht); in oncore_ss()
3988 lat = instance->ss_lat/3600000.; in oncore_ss()
3989 lon = instance->ss_long/3600000.; in oncore_ss()
3990 ht = instance->ss_ht/100; in oncore_ss()
3991 oncore_log_f(instance, LOG_NOTICE, in oncore_ss()
3995 oncore_set_posn(instance); in oncore_ss()
3997 oncore_log(instance, LOG_INFO, "Now in 0D mode"); in oncore_ss()
3999 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_ss()
4000 instance->site_survey = ONCORE_SS_DONE; in oncore_ss()
4008 struct instance *instance in oncore_wait_almanac() argument
4011 if (instance->rsm.bad_almanac) { in oncore_wait_almanac()
4012 instance->counta++; in oncore_wait_almanac()
4013 if (instance->counta%5 == 0) in oncore_wait_almanac()
4014 oncore_log(instance, LOG_INFO, "Waiting for Almanac"); in oncore_wait_almanac()
4021 if (!instance->almanac_from_shmem) { in oncore_wait_almanac()
4022 instance->almanac_from_shmem = 1; in oncore_wait_almanac()
4023 oncore_load_almanac(instance); in oncore_wait_almanac()
4030 if (instance->chan == 6) in oncore_wait_almanac()
4031 oncore_sendmsg(instance, oncore_cmd_Bn, sizeof(oncore_cmd_Bn)); in oncore_wait_almanac()
4032 else if (instance->chan == 8) in oncore_wait_almanac()
4033 oncore_sendmsg(instance, oncore_cmd_En, sizeof(oncore_cmd_En)); in oncore_wait_almanac()
4034 else if (instance->chan == 12) { in oncore_wait_almanac()
4035 oncore_sendmsg(instance, oncore_cmd_Gc, sizeof(oncore_cmd_Gc)); /* 1PPS on, continuous */ in oncore_wait_almanac()
4036 oncore_sendmsg(instance, oncore_cmd_Ge, sizeof(oncore_cmd_Ge)); /* TRAIM on */ in oncore_wait_almanac()
4037 oncore_sendmsg(instance, oncore_cmd_Hn, sizeof(oncore_cmd_Hn)); /* TRAIM status 1/s */ in oncore_wait_almanac()
4039 instance->traim_delay = 1; in oncore_wait_almanac()
4041 oncore_log(instance, LOG_NOTICE, "Have now loaded an ALMANAC"); in oncore_wait_almanac()
4043 instance->o_state = ONCORE_RUN; in oncore_wait_almanac()
4044 oncore_log(instance, LOG_NOTICE, "state = ONCORE_RUN"); in oncore_wait_almanac()
4052 struct instance * instance in oncore_feed_clockproc() argument
4055 struct peer * const peer = instance->peer; in oncore_feed_clockproc()
4056 struct refclockproc * const pp = instance->pp; in oncore_feed_clockproc()
4099 struct instance *instance, in oncore_log() argument
4104 msyslog(log_level, "ONCORE[%d]: %s", instance->unit, msg); in oncore_log()
4105 mprintf_clock_stats(&instance->peer->srcadr, "ONCORE[%d]: %s", in oncore_log()
4106 instance->unit, msg); in oncore_log()
4112 struct instance * instance, in oncore_log_f() argument
4125 oncore_log(instance, log_level, msg); in oncore_log_f()
4128 instance->max_len = max(strlen(msg), instance->max_len); in oncore_log_f()
4129 instance->max_count++; in oncore_log_f()
4130 if (instance->max_count % 100 == 0) in oncore_log_f()
4131 oncore_log_f(instance, LOG_INFO, in oncore_log_f()
4133 instance->max_len); in oncore_log_f()