Lines Matching refs:instance
267 struct instance { struct
358 #define rcvbuf instance->Rcvbuf argument
359 #define rcvptr instance->Rcvptr
364 static void oncore_consume (struct instance *);
365 static void oncore_read_config (struct instance *);
367 static int oncore_ppsapi (struct instance *);
368 static void oncore_get_timestamp (struct instance *, long, long);
369 static void oncore_init_shmem (struct instance *);
371 static void oncore_antenna_report (struct instance *, enum antenna_state);
372 static void oncore_chan_test (struct instance *);
373 static void oncore_check_almanac (struct instance *);
374 static void oncore_check_antenna (struct instance *);
375 static void oncore_check_leap_sec (struct instance *);
377 static void oncore_compute_dH (struct instance *);
378 static void oncore_load_almanac (struct instance *);
379 static void oncore_log (struct instance *, int, const char *);
380 static int oncore_log_f (struct instance *, int, const char *, ...)
382 static void oncore_print_Cb (struct instance *, u_char *);
384 static void oncore_print_posn (struct instance *);
385 static void oncore_sendmsg (struct instance *, u_char *, size_t);
386 static void oncore_set_posn (struct instance *);
387 static void oncore_set_traim (struct instance *);
388 static void oncore_shmem_get_3D (struct instance *);
389 static void oncore_ss (struct instance *);
390 static int oncore_wait_almanac (struct instance *);
392 static void oncore_msg_any (struct instance *, u_char *, size_t, int);
393 static void oncore_msg_Adef (struct instance *, u_char *, size_t);
394 static void oncore_msg_Ag (struct instance *, u_char *, size_t);
395 static void oncore_msg_As (struct instance *, u_char *, size_t);
396 static void oncore_msg_At (struct instance *, u_char *, size_t);
397 static void oncore_msg_Ay (struct instance *, u_char *, size_t);
398 static void oncore_msg_Az (struct instance *, u_char *, size_t);
399 static void oncore_msg_BaEaHa (struct instance *, u_char *, size_t);
400 static void oncore_msg_Bd (struct instance *, u_char *, size_t);
401 static void oncore_msg_Bj (struct instance *, u_char *, size_t);
402 static void oncore_msg_Bl (struct instance *, u_char *, size_t);
403 static void oncore_msg_BnEnHn (struct instance *, u_char *, size_t);
404 static void oncore_msg_CaFaIa (struct instance *, u_char *, size_t);
405 static void oncore_msg_Cb (struct instance *, u_char *, size_t);
406 static void oncore_msg_Cf (struct instance *, u_char *, size_t);
407 static void oncore_msg_Cj (struct instance *, u_char *, size_t);
408 static void oncore_msg_Cj_id (struct instance *, u_char *, size_t);
409 static void oncore_msg_Cj_init (struct instance *, u_char *, size_t);
410 static void oncore_msg_Ga (struct instance *, u_char *, size_t);
411 static void oncore_msg_Gb (struct instance *, u_char *, size_t);
412 static void oncore_msg_Gc (struct instance *, u_char *, size_t);
413 static void oncore_msg_Gj (struct instance *, u_char *, size_t);
414 static void oncore_msg_Sz (struct instance *, u_char *, size_t);
434 void (*handler) (struct instance *, u_char *, size_t);
595 register struct instance *instance; in oncore_start() local
605 instance = emalloc(sizeof(*instance)); in oncore_start()
606 memset(instance, 0, sizeof(*instance)); in oncore_start()
611 instance->pp = pp; in oncore_start()
612 instance->unit = unit; in oncore_start()
613 instance->peer = peer; in oncore_start()
614 instance->assert = 1; in oncore_start()
615 instance->once = 1; in oncore_start()
617 instance->Bj_day = -1; in oncore_start()
618 instance->traim = -1; in oncore_start()
619 instance->traim_in = -1; in oncore_start()
620 instance->chan_in = -1; in oncore_start()
621 instance->pps_control = -1; /* PPS control, M12 only */ in oncore_start()
622 instance->pps_control_msg_seen = -1; /* Have seen response to Gc msg */ in oncore_start()
623 instance->model = ONCORE_UNKNOWN; in oncore_start()
624 instance->mode = MODE_UNKNOWN; in oncore_start()
625 instance->site_survey = ONCORE_SS_UNKNOWN; in oncore_start()
626 instance->Ag = 0xff; /* Satellite mask angle, unset by user */ in oncore_start()
627 instance->ant_state = ONCORE_ANTENNA_UNKNOWN; in oncore_start()
636 oncore_log(instance, LOG_NOTICE, "ONCORE DRIVER -- CONFIGURING"); in oncore_start()
637 instance->o_state = ONCORE_NO_IDEA; in oncore_start()
638 oncore_log(instance, LOG_NOTICE, "state = ONCORE_NO_IDEA"); in oncore_start()
673 oncore_log_f(instance, LOG_ERR, "Can't stat fd1 (%s)", in oncore_start()
680 oncore_log_f(instance, LOG_ERR, "Can't stat fd2 (%s) %d %m", in oncore_start()
687 oncore_log_f(instance, LOG_ERR, "Can't open fd1 (%s)", in oncore_start()
704 oncore_log_f(instance, LOG_ERR, in oncore_start()
712 if (time_pps_create(fd2, &instance->pps_h) < 0) { in oncore_start()
713 oncore_log(instance, LOG_ERR, "exit, PPSAPI not found in kernel"); in oncore_start()
719 instance->ttyfd = fd1; in oncore_start()
720 instance->ppsfd = fd2; in oncore_start()
724 oncore_read_config(instance); in oncore_start()
726 if (!oncore_ppsapi(instance)) in oncore_start()
734 oncore_log(instance, LOG_ERR, "can't do io_addclock"); in oncore_start()
737 free(instance); in oncore_start()
740 pp->unitptr = instance; in oncore_start()
749 oncore_init_shmem(instance); in oncore_start()
757 instance->o_state = ONCORE_CHECK_ID; in oncore_start()
758 oncore_log(instance, LOG_NOTICE, "state = ONCORE_CHECK_ID"); in oncore_start()
760 instance->timeout = 4; in oncore_start()
761 …oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Set Posn Fix mode (not Idle (VP… in oncore_start()
762 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_start()
764 instance->pollcnt = 2; in oncore_start()
779 register struct instance *instance; in oncore_shutdown() local
783 instance = pp->unitptr; in oncore_shutdown()
788 if (instance != NULL) { in oncore_shutdown()
789 time_pps_destroy (instance->pps_h); in oncore_shutdown()
791 close(instance->ttyfd); in oncore_shutdown()
793 if ((instance->ppsfd != -1) && (instance->ppsfd != instance->ttyfd)) in oncore_shutdown()
794 close(instance->ppsfd); in oncore_shutdown()
796 if (instance->shmemfd) in oncore_shutdown()
797 close(instance->shmemfd); in oncore_shutdown()
799 free(instance); in oncore_shutdown()
815 struct instance *instance; in oncore_poll() local
817 instance = peer->procptr->unitptr; in oncore_poll()
818 if (instance->timeout) { in oncore_poll()
819 instance->timeout--; in oncore_poll()
820 if (instance->timeout == 0) { in oncore_poll()
821 oncore_log(instance, LOG_ERR, in oncore_poll()
825 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_poll()
826 oncore_log(instance, LOG_WARNING, "Oncore: Resend @@Cj"); in oncore_poll()
831 if (!instance->pollcnt) in oncore_poll()
834 instance->pollcnt--; in oncore_poll()
836 instance->polled = 1; in oncore_poll()
847 struct instance *instance in oncore_ppsapi() argument
853 if (time_pps_getcap(instance->pps_h, &cap) < 0) { in oncore_ppsapi()
854 oncore_log_f(instance, LOG_ERR, "time_pps_getcap failed: %m"); in oncore_ppsapi()
858 if (time_pps_getparams(instance->pps_h, &instance->pps_p) < 0) { in oncore_ppsapi()
859 oncore_log_f(instance, LOG_ERR, "time_pps_getparams failed: %m"); in oncore_ppsapi()
867 if (instance->assert) { in oncore_ppsapi()
876 oncore_log_f(instance, LOG_INFO, "Initializing timing to %s.", in oncore_ppsapi()
880 oncore_log_f(instance, LOG_ERR, in oncore_ppsapi()
886 oncore_log_f(instance, LOG_NOTICE, in oncore_ppsapi()
894 instance->pps_p.mode = (mode | mode1 | PPS_TSFMT_TSPEC) & cap; in oncore_ppsapi()
896 if (time_pps_setparams(instance->pps_h, &instance->pps_p) < 0) { in oncore_ppsapi()
897 oncore_log_f(instance, LOG_ERR, "ONCORE: time_pps_setparams fails %m"); in oncore_ppsapi()
903 if (instance->hardpps) { in oncore_ppsapi()
906 oncore_log(instance, LOG_INFO, "HARDPPS Set."); in oncore_ppsapi()
908 if (instance->assert) in oncore_ppsapi()
915 if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i, in oncore_ppsapi()
917 oncore_log_f(instance, LOG_ERR, "time_pps_kcbind failed: %m"); in oncore_ppsapi()
918 oncore_log(instance, LOG_ERR, "HARDPPS failed, abort..."); in oncore_ppsapi()
932 struct instance *instance in oncore_init_shmem() argument
949 if ((fd = open(instance->shmem_fname, O_RDONLY)) < 0) in oncore_init_shmem()
950 oncore_log(instance, LOG_WARNING, "ONCORE: Can't open SHMEM file"); in oncore_init_shmem()
963 if ((instance->shmemfd = open(instance->shmem_fname, O_RDWR|O_CREAT|O_TRUNC, 0644)) < 0) { in oncore_init_shmem()
964 oncore_log(instance, LOG_WARNING, "ONCORE: Can't open shmem"); in oncore_init_shmem()
978 instance->shmem_Cb = n; in oncore_init_shmem()
982 instance->shmem_Ba = n; in oncore_init_shmem()
986 instance->shmem_Ea = n; in oncore_init_shmem()
990 instance->shmem_Ha = n; in oncore_init_shmem()
1048 i = write(instance->shmemfd, buf, shmem_length); in oncore_init_shmem()
1052 oncore_log(instance, LOG_ERR, "ONCORE: error writing shmem"); in oncore_init_shmem()
1053 close(instance->shmemfd); in oncore_init_shmem()
1057 instance->shmem = (u_char *) mmap(0, shmem_length, in oncore_init_shmem()
1062 MAP_SHARED, instance->shmemfd, (off_t)0); in oncore_init_shmem()
1064 if (instance->shmem == (u_char *)MAP_FAILED) { in oncore_init_shmem()
1065 instance->shmem = 0; in oncore_init_shmem()
1066 close(instance->shmemfd); in oncore_init_shmem()
1070 oncore_log_f(instance, LOG_NOTICE, in oncore_init_shmem()
1072 (u_long) shmem_length, instance->shmem_fname); in oncore_init_shmem()
1084 struct instance *instance in oncore_read_config() argument
1223 cp, instance->unit); /* try "ntp.oncore.0 */ in oncore_read_config()
1227 cp, instance->unit); /* try "ntp.oncore0" */ in oncore_read_config()
1236 instance->init_type = 4; in oncore_read_config()
1278 instance->shmem_fname = estrdup(ca); in oncore_read_config()
1295 instance->ss_lat = sign*1000*(fabs(f3) + 60*(fabs(f2) + 60*f1)); /*miliseconds*/ in oncore_read_config()
1305 instance->ss_long = sign*1000*(fabs(f3) + 60*(fabs(f2) + 60*f1)); /*miliseconds*/ in oncore_read_config()
1313 instance->ss_ht = 100 * f1; /* cm */ in oncore_read_config()
1330 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1334 instance->delay = f1; /* delay in ns */ in oncore_read_config()
1350 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1354 instance->offset = f1; /* offset in ns */ in oncore_read_config()
1360 instance->assert = 1; in oncore_read_config()
1362 instance->assert = 0; in oncore_read_config()
1364 instance->hardpps = 1; in oncore_read_config()
1366 instance->shmem_Posn = 2; in oncore_read_config()
1368 instance->shmem_Posn = 3; in oncore_read_config()
1372 instance->chan_in = i; in oncore_read_config()
1374 instance->traim_in = 1; /* so TRAIM alone is YES */ in oncore_read_config()
1376 instance->traim_in = 0; in oncore_read_config()
1380 instance->Ag = mask; /* Satellite mask angle */ in oncore_read_config()
1383 instance->pps_control = 1; /* PPS always on */ in oncore_read_config()
1385 instance->pps_control = 2; /* PPS on when satellite is available */ in oncore_read_config()
1387 instance->pps_control = 3; /* PPS on when TRAIM status is OK */ in oncore_read_config()
1389 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1402 instance->posn_set = 1; in oncore_read_config()
1404 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1406 instance->posn_set = 0; in oncore_read_config()
1408 oncore_log_f(instance, LOG_WARNING, in oncore_read_config()
1414 instance->init_type = mode; in oncore_read_config()
1416 oncore_log_f(instance, LOG_INFO, "Input mode = %d", mode); in oncore_read_config()
1433 struct instance *instance; in oncore_receive() local
1436 instance = peer->procptr->unitptr; in oncore_receive()
1444 oncore_log_f(instance, LOG_DEBUG, in oncore_receive()
1452 oncore_log(instance, LOG_DEBUG, Msg); in oncore_receive()
1459 oncore_log(instance, LOG_DEBUG, Msg); in oncore_receive()
1468 oncore_consume(instance); in oncore_receive()
1479 struct instance *instance in oncore_consume() argument
1492 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1510 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1522 oncore_log_f(instance, LOG_DEBUG, in oncore_consume()
1524 instance->unit, rcvbuf[2], in oncore_consume()
1537 oncore_log(instance, LOG_DEBUG, "NO <CR><LF> at end of message"); in oncore_consume()
1541 if (instance->shmem != NULL) { in oncore_consume()
1542 instance->shmem[oncore_messages[m].shmem + 2]++; in oncore_consume()
1543 memcpy(instance->shmem + oncore_messages[m].shmem + 3, in oncore_consume()
1546 oncore_msg_any(instance, rcvbuf, (size_t) (l-3), m); in oncore_consume()
1548 oncore_messages[m].handler(instance, rcvbuf, (size_t) (l-3)); in oncore_consume()
1554 oncore_log(instance, LOG_ERR, "Checksum mismatch!"); in oncore_consume()
1561 oncore_log(instance, LOG_DEBUG, Msg); in oncore_consume()
1576 struct instance *instance, in oncore_get_timestamp() argument
1597 peer = instance->peer; in oncore_get_timestamp()
1606 if ((instance->site_survey == ONCORE_SS_DONE) && (instance->mode != MODE_0D)) { in oncore_get_timestamp()
1610 if ((instance->site_survey != ONCORE_SS_DONE) || (instance->mode != MODE_0D)) { in oncore_get_timestamp()
1618 if (instance->rsm.bad_almanac) { in oncore_get_timestamp()
1629 if (instance->count5) { in oncore_get_timestamp()
1630 instance->count5--; in oncore_get_timestamp()
1635 j = instance->ev_serial; in oncore_get_timestamp()
1638 if (time_pps_fetch(instance->pps_h, PPS_TSFMT_TSPEC, &pps_i, in oncore_get_timestamp()
1640 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1646 if (instance->assert) { in oncore_get_timestamp()
1655 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1660 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1669 oncore_log(instance, LOG_NOTICE, "ONCORE: oncore_get_timestamp, error serial pps"); in oncore_get_timestamp()
1674 instance->ev_serial = pps_i.assert_sequence; in oncore_get_timestamp()
1684 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1689 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
1698 oncore_log(instance, LOG_ERR, "oncore_get_timestamp, error serial pps"); in oncore_get_timestamp()
1702 instance->ev_serial = pps_i.clear_sequence; in oncore_get_timestamp()
1739 if (instance->assert) in oncore_get_timestamp()
1740 instance->pps_p.assert_offset.tv_nsec = -dt2; in oncore_get_timestamp()
1742 instance->pps_p.clear_offset.tv_nsec = -dt2; in oncore_get_timestamp()
1757 if (time_pps_getcap(instance->pps_h, ¤t_mode) < 0) { in oncore_get_timestamp()
1758 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1764 if (time_pps_getparams(instance->pps_h, ¤t_params) < 0) { in oncore_get_timestamp()
1765 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
1772 current_params.mode |= instance->pps_p.mode; in oncore_get_timestamp()
1781 if (time_pps_setparams(instance->pps_h, ¤t_params)) in oncore_get_timestamp()
1782 oncore_log(instance, LOG_ERR, "ONCORE: Error doing time_pps_setparams"); in oncore_get_timestamp()
1787 instance->pp->lastrec = ts; in oncore_get_timestamp()
1797 if (instance->chan == 6) in oncore_get_timestamp()
1798 Rsm = instance->BEHa[64]; in oncore_get_timestamp()
1799 else if (instance->chan == 8) in oncore_get_timestamp()
1800 Rsm = instance->BEHa[72]; in oncore_get_timestamp()
1801 else if (instance->chan == 12) in oncore_get_timestamp()
1802 Rsm = ((instance->BEHa[129]<<8) | instance->BEHa[130]); in oncore_get_timestamp()
1804 if (instance->chan == 6 || instance->chan == 8) { in oncore_get_timestamp()
1806 if (instance->traim) { in oncore_get_timestamp()
1808 instance->BEHn[21]); in oncore_get_timestamp()
1810 instance->BEHn[22]); in oncore_get_timestamp()
1812 instance->BEHn[23] * 256 + in oncore_get_timestamp()
1813 instance->BEHn[24]); in oncore_get_timestamp()
1815 (s_char)instance->BEHn[25]); in oncore_get_timestamp()
1825 instance->pp->year, instance->pp->day, in oncore_get_timestamp()
1826 instance->pp->hour, instance->pp->minute, instance->pp->second, in oncore_get_timestamp()
1828 Rsm, 0.1*(256*instance->BEHa[35]+instance->BEHa[36]), in oncore_get_timestamp()
1830 instance->BEHa[38], instance->BEHa[39], instance->traim, f1, f2, in oncore_get_timestamp()
1834 /*sat*/ instance->BEHa[41], instance->BEHa[45], instance->BEHa[49], instance->BEHa[53], in oncore_get_timestamp()
1835 instance->BEHa[57], instance->BEHa[61], instance->BEHa[65], instance->BEHa[69] in oncore_get_timestamp()
1837 } else if (instance->chan == 12) { in oncore_get_timestamp()
1839 if (instance->traim) { in oncore_get_timestamp()
1841 instance->BEHn[6]); in oncore_get_timestamp()
1843 instance->BEHn[7]); in oncore_get_timestamp()
1845 instance->BEHn[12] * 256 + in oncore_get_timestamp()
1846 instance->BEHn[13]); in oncore_get_timestamp()
1848 (s_char)instance->BEHn[14]); in oncore_get_timestamp()
1858 instance->pp->year, instance->pp->day, in oncore_get_timestamp()
1859 instance->pp->hour, instance->pp->minute, instance->pp->second, in oncore_get_timestamp()
1861 Rsm, 0.1*(256*instance->BEHa[53]+instance->BEHa[54]), in oncore_get_timestamp()
1863 instance->BEHa[55], instance->BEHa[56], instance->traim, f1, f2, in oncore_get_timestamp()
1867 /*sat*/ instance->BEHa[58], instance->BEHa[64], instance->BEHa[70], instance->BEHa[76], in oncore_get_timestamp()
1868 instance->BEHa[82], instance->BEHa[88], instance->BEHa[94], instance->BEHa[100], in oncore_get_timestamp()
1869 instance->BEHa[106], instance->BEHa[112], instance->BEHa[118], instance->BEHa[124] in oncore_get_timestamp()
1875 if (!refclock_process(instance->pp)) { in oncore_get_timestamp()
1876 refclock_report(instance->peer, CEVNT_BADTIME); in oncore_get_timestamp()
1881 oncore_log(instance, LOG_INFO, Msg); /* this is long message above */ in oncore_get_timestamp()
1882 instance->pollcnt = 2; in oncore_get_timestamp()
1884 if (instance->polled) { in oncore_get_timestamp()
1885 instance->polled = 0; in oncore_get_timestamp()
1887 instance->pp->lastref = instance->pp->lastrec; in oncore_get_timestamp()
1888 refclock_receive(instance->peer); in oncore_get_timestamp()
1903 struct instance *instance, in oncore_get_timestamp()
1929 oncore_log(instance, LOG_DEBUG, "%ld.%06ld", in oncore_get_timestamp()
1940 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1950 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1958 oncore_log(instance, LOG_DEBUG, Msg); in oncore_get_timestamp()
1970 struct instance *instance, in oncore_get_timestamp()
1983 struct instance *instance, in oncore_get_timestamp()
1991 if (instance->o_state == ONCORE_RUN) in oncore_get_timestamp()
1994 instance->Ag = buf[4]; in oncore_get_timestamp()
1995 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
1997 (int)instance->Ag); in oncore_get_timestamp()
2008 struct instance *instance, in oncore_get_timestamp()
2013 instance->ss_lat = buf_w32(&buf[4]); in oncore_get_timestamp()
2014 instance->ss_long = buf_w32(&buf[8]); in oncore_get_timestamp()
2015 instance->ss_ht = buf_w32(&buf[12]); in oncore_get_timestamp()
2018 oncore_print_posn(instance); in oncore_get_timestamp()
2030 struct instance *instance, in oncore_get_timestamp()
2035 instance->saw_At = 1; in oncore_get_timestamp()
2036 if (instance->site_survey == ONCORE_SS_TESTING) { in oncore_get_timestamp()
2038 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2041 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_HW"); in oncore_get_timestamp()
2042 instance->site_survey = ONCORE_SS_HW; in oncore_get_timestamp()
2056 struct instance *instance, in oncore_get_timestamp()
2061 if (instance->saw_Ay) in oncore_get_timestamp()
2064 instance->saw_Ay = 1; in oncore_get_timestamp()
2066 instance->offset = buf_w32(&buf[4]); in oncore_get_timestamp()
2068 oncore_log_f(instance, LOG_INFO, "PPS Offset is set to %ld ns", in oncore_get_timestamp()
2069 instance->offset); in oncore_get_timestamp()
2080 struct instance *instance, in oncore_get_timestamp()
2085 if (instance->saw_Az) in oncore_get_timestamp()
2088 instance->saw_Az = 1; in oncore_get_timestamp()
2090 instance->delay = buf_w32(&buf[4]); in oncore_get_timestamp()
2092 oncore_log_f(instance, LOG_INFO, "Cable delay is set to %ld ns", in oncore_get_timestamp()
2093 instance->delay); in oncore_get_timestamp()
2102 struct instance *instance, in oncore_get_timestamp()
2119 if (instance->o_state == ONCORE_CHECK_CHAN) { /* here while checking for the # chan */ in oncore_get_timestamp()
2121 if (instance->chan_ck < 6) instance->chan_ck = 6; in oncore_get_timestamp()
2123 if (instance->chan_ck < 8) instance->chan_ck = 8; in oncore_get_timestamp()
2125 if (instance->chan_ck < 12) instance->chan_ck = 12; in oncore_get_timestamp()
2128 if (instance->count3++ < 5) in oncore_get_timestamp()
2131 instance->count3 = 0; in oncore_get_timestamp()
2133 if (instance->chan_in != -1) /* set in Input */ in oncore_get_timestamp()
2134 instance->chan = instance->chan_in; in oncore_get_timestamp()
2136 instance->chan = instance->chan_ck; in oncore_get_timestamp()
2138 oncore_log_f(instance, LOG_INFO, "Input says chan = %d", in oncore_get_timestamp()
2139 instance->chan_in); in oncore_get_timestamp()
2140 oncore_log_f(instance, LOG_INFO, "Model # says chan = %d", in oncore_get_timestamp()
2141 instance->chan_id); in oncore_get_timestamp()
2142 oncore_log_f(instance, LOG_INFO, "Testing says chan = %d", in oncore_get_timestamp()
2143 instance->chan_ck); in oncore_get_timestamp()
2144 oncore_log_f(instance, LOG_INFO, "Using chan = %d", in oncore_get_timestamp()
2145 instance->chan); in oncore_get_timestamp()
2147 instance->o_state = ONCORE_HAVE_CHAN; in oncore_get_timestamp()
2148 oncore_log(instance, LOG_NOTICE, "state = ONCORE_HAVE_CHAN"); in oncore_get_timestamp()
2150 instance->timeout = 4; in oncore_get_timestamp()
2151 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2155 if (instance->o_state != ONCORE_ALMANAC && instance->o_state != ONCORE_RUN) in oncore_get_timestamp()
2160 if (instance->count) { in oncore_get_timestamp()
2161 if (instance->count++ < 5) in oncore_get_timestamp()
2163 instance->count = 0; in oncore_get_timestamp()
2166 memcpy(instance->BEHa, buf, (size_t) (len+3)); /* Ba, Ea or Ha */ in oncore_get_timestamp()
2170 if (instance->pps_control_msg_seen != -2) { in oncore_get_timestamp()
2171 if ((instance->pps_control_msg_seen == -1) && (instance->pps_control != -1)) { in oncore_get_timestamp()
2172 oncore_log(instance, LOG_INFO, "PPSCONTROL set, but not implemented (not M12)"); in oncore_get_timestamp()
2174 instance->pps_control_msg_seen = -2; in oncore_get_timestamp()
2179 oncore_check_almanac(instance); in oncore_get_timestamp()
2180 oncore_check_antenna(instance); in oncore_get_timestamp()
2185 if (instance->o_state == ONCORE_ALMANAC) in oncore_get_timestamp()
2186 if (oncore_wait_almanac(instance)) in oncore_get_timestamp()
2191 if (instance->once) { in oncore_get_timestamp()
2192 instance->once = 0; in oncore_get_timestamp()
2193 instance->count2 = 1; in oncore_get_timestamp()
2198 if (instance->chan != 12 && !instance->saw_At) { in oncore_get_timestamp()
2199 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2201 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_get_timestamp()
2209 mode = instance->init_type; in oncore_get_timestamp()
2214 instance->site_survey = ONCORE_SS_DONE; in oncore_get_timestamp()
2215 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_get_timestamp()
2220 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_TESTING"); in oncore_get_timestamp()
2221 instance->site_survey = ONCORE_SS_TESTING; in oncore_get_timestamp()
2222 instance->count1 = 1; in oncore_get_timestamp()
2223 if (instance->chan == 12) in oncore_get_timestamp()
2224 oncore_sendmsg(instance, oncore_cmd_Gd3, sizeof(oncore_cmd_Gd3)); /* M12+T */ in oncore_get_timestamp()
2226 oncore_sendmsg(instance, oncore_cmd_At2, sizeof(oncore_cmd_At2)); /* not GT, arg not VP */ in oncore_get_timestamp()
2233 oncore_sendmsg(instance, oncore_cmd_Ayx, sizeof(oncore_cmd_Ayx)); in oncore_get_timestamp()
2237 oncore_sendmsg(instance, oncore_cmd_Azx, sizeof(oncore_cmd_Azx)); in oncore_get_timestamp()
2241 oncore_sendmsg(instance, oncore_cmd_Agx, sizeof(oncore_cmd_Agx)); in oncore_get_timestamp()
2252 if (instance->site_survey == ONCORE_SS_TESTING) { in oncore_get_timestamp()
2253 if (instance->chan == 12) { in oncore_get_timestamp()
2254 if (instance->count1) { in oncore_get_timestamp()
2255 if (instance->count1++ > 5 || instance->BEHa[130]&0x10) { in oncore_get_timestamp()
2256 instance->count1 = 0; in oncore_get_timestamp()
2257 if (instance->BEHa[130]&0x10) { in oncore_get_timestamp()
2258 oncore_log(instance, LOG_NOTICE, in oncore_get_timestamp()
2261 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_HW"); in oncore_get_timestamp()
2262 instance->site_survey = ONCORE_SS_HW; in oncore_get_timestamp()
2264 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_SW"); in oncore_get_timestamp()
2265 instance->site_survey = ONCORE_SS_SW; in oncore_get_timestamp()
2270 if (instance->count1) { in oncore_get_timestamp()
2271 if (instance->count1++ > 5) { in oncore_get_timestamp()
2272 instance->count1 = 0; in oncore_get_timestamp()
2291 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
2295 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_SW"); in oncore_get_timestamp()
2296 instance->site_survey = ONCORE_SS_SW; in oncore_get_timestamp()
2298 instance->ss_lat = instance->ss_long = instance->ss_ht = 0; in oncore_get_timestamp()
2299 if (instance->chan == 12) in oncore_get_timestamp()
2300 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* disable */ in oncore_get_timestamp()
2302 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* disable */ in oncore_get_timestamp()
2303 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* disable */ in oncore_get_timestamp()
2312 if (instance->chan == 6) { in oncore_get_timestamp()
2313 if (instance->BEHa[64]&0x8) in oncore_get_timestamp()
2314 instance->mode = MODE_0D; in oncore_get_timestamp()
2315 else if (instance->BEHa[64]&0x10) in oncore_get_timestamp()
2316 instance->mode = MODE_2D; in oncore_get_timestamp()
2317 else if (instance->BEHa[64]&0x20) in oncore_get_timestamp()
2318 instance->mode = MODE_3D; in oncore_get_timestamp()
2319 } else if (instance->chan == 8) { in oncore_get_timestamp()
2320 if (instance->BEHa[72]&0x8) in oncore_get_timestamp()
2321 instance->mode = MODE_0D; in oncore_get_timestamp()
2322 else if (instance->BEHa[72]&0x10) in oncore_get_timestamp()
2323 instance->mode = MODE_2D; in oncore_get_timestamp()
2324 else if (instance->BEHa[72]&0x20) in oncore_get_timestamp()
2325 instance->mode = MODE_3D; in oncore_get_timestamp()
2326 } else if (instance->chan == 12) { in oncore_get_timestamp()
2329 bits = (instance->BEHa[129]>>5) & 0x7; /* actually Ha */ in oncore_get_timestamp()
2331 instance->mode = MODE_0D; in oncore_get_timestamp()
2333 instance->mode = MODE_2D; in oncore_get_timestamp()
2335 instance->mode = MODE_3D; in oncore_get_timestamp()
2340 if (instance->shmem) { in oncore_get_timestamp()
2344 switch(instance->chan) { in oncore_get_timestamp()
2345 case 6: smp = &instance->shmem[instance->shmem_Ba]; break; in oncore_get_timestamp()
2346 case 8: smp = &instance->shmem[instance->shmem_Ea]; break; in oncore_get_timestamp()
2347 case 12: smp = &instance->shmem[instance->shmem_Ha]; break; in oncore_get_timestamp()
2351 switch (instance->mode) { in oncore_get_timestamp()
2370 if (instance->traim_delay) { in oncore_get_timestamp()
2371 if (instance->traim_delay++ > 5) { in oncore_get_timestamp()
2372 instance->traim = 0; in oncore_get_timestamp()
2373 instance->traim_delay = 0; in oncore_get_timestamp()
2375 oncore_log(instance, LOG_INFO, cp); in oncore_get_timestamp()
2377 oncore_set_traim(instance); in oncore_get_timestamp()
2385 if (!instance->have_dH && !instance->traim_delay) in oncore_get_timestamp()
2386 oncore_compute_dH(instance); in oncore_get_timestamp()
2393 instance->pp->year = buf[6]*256+buf[7]; in oncore_get_timestamp()
2394 instance->pp->day = ymd2yd(buf[6]*256+buf[7], buf[4], buf[5]); in oncore_get_timestamp()
2395 instance->pp->hour = buf[8]; in oncore_get_timestamp()
2396 instance->pp->minute = buf[9]; in oncore_get_timestamp()
2397 instance->pp->second = buf[10]; in oncore_get_timestamp()
2403 if (instance->site_survey == ONCORE_SS_HW || instance->site_survey == ONCORE_SS_SW) in oncore_get_timestamp()
2404 oncore_ss(instance); in oncore_get_timestamp()
2408 if (instance->count2) { in oncore_get_timestamp()
2409 if (instance->count2++ > 5) { /* this delay to check on @@Ay command */ in oncore_get_timestamp()
2410 instance->count2 = 0; in oncore_get_timestamp()
2415 if (!instance->saw_Ay && instance->offset) { in oncore_get_timestamp()
2416 oncore_log(instance, LOG_INFO, "No @@Ay command, PPS OFFSET ignored"); in oncore_get_timestamp()
2417 instance->offset = 0; in oncore_get_timestamp()
2426 oncore_check_leap_sec(instance); in oncore_get_timestamp()
2432 …if (instance->shmem && !instance->shmem_bad_Ea && instance->shmem_Posn && (instance->site_survey =… in oncore_get_timestamp()
2433 oncore_shmem_get_3D(instance); in oncore_get_timestamp()
2435 if (!instance->traim) /* NO traim, no BnEnHn, go get tick */ in oncore_get_timestamp()
2436 oncore_get_timestamp(instance, instance->offset, instance->offset); in oncore_get_timestamp()
2445 struct instance *instance, in oncore_get_timestamp()
2450 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
2471 struct instance *instance, in oncore_get_timestamp()
2478 instance->saw_Bj = 1; in oncore_get_timestamp()
2482 instance->pp->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
2486 instance->pp->leap = LEAP_DELSECOND; in oncore_get_timestamp()
2491 instance->pp->leap = LEAP_NOWARNING; in oncore_get_timestamp()
2495 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2502 struct instance *instance, in oncore_get_timestamp()
2524 …if ((!instance->Bl.lsf_flg && !instance->Bl.wn_flg) && (subframe == 4 && page == 18 && valid == 10… in oncore_get_timestamp()
2525 instance->Bl.dt_ls = buf[32]; in oncore_get_timestamp()
2526 instance->Bl.WN_lsf = buf[33]; in oncore_get_timestamp()
2527 instance->Bl.DN_lsf = buf[34]; in oncore_get_timestamp()
2528 instance->Bl.dt_lsf = buf[35]; in oncore_get_timestamp()
2529 instance->Bl.lsf_flg++; in oncore_get_timestamp()
2531 if ((instance->Bl.lsf_flg && !instance->Bl.wn_flg) && (subframe == 1 && valid == 10)) { in oncore_get_timestamp()
2533 instance->Bl.WN = i >> 6; in oncore_get_timestamp()
2538 instance->Bl.DN = tow/57600L + 1; in oncore_get_timestamp()
2539 instance->Bl.wn_flg++; in oncore_get_timestamp()
2541 if (instance->Bl.wn_flg && instance->Bl.lsf_flg) { in oncore_get_timestamp()
2542 instance->Bl.wn_flg = instance->Bl.lsf_flg = 0; in oncore_get_timestamp()
2544 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof oncore_cmd_Bl); in oncore_get_timestamp()
2547 i = instance->Bl.WN&01400; in oncore_get_timestamp()
2548 instance->Bl.WN_lsf |= i; in oncore_get_timestamp()
2552 i = (instance->Bl.WN_lsf - instance->Bl.WN); in oncore_get_timestamp()
2555 day_now = instance->Bl.DN; in oncore_get_timestamp()
2556 day_lsf = 7*i + instance->Bl.DN_lsf; in oncore_get_timestamp()
2563 if (day_lsf - day_now < 28 || instance->BEHa[5] < 20) { in oncore_get_timestamp()
2564 i = instance->Bl.dt_lsf - instance->Bl.dt_ls; in oncore_get_timestamp()
2582 instance->peer->leap = LEAP_NOWARNING; in oncore_get_timestamp()
2586 instance->peer->leap = LEAP_DELSECOND; in oncore_get_timestamp()
2590 instance->peer->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
2594 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2596 i = instance->Bl.dt_lsf-instance->Bl.dt_ls; in oncore_get_timestamp()
2599 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
2611 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2613 instance->Bl.dt_ls, instance->Bl.dt_lsf, in oncore_get_timestamp()
2614 instance->Bl.WN, instance->Bl.DN, in oncore_get_timestamp()
2615 instance->Bl.WN_lsf, instance->Bl.DN_lsf, in oncore_get_timestamp()
2616 instance->Bl.wn_flg, instance->Bl.lsf_flg, in oncore_get_timestamp()
2617 instance->Bl.Bl_day); in oncore_get_timestamp()
2624 struct instance *instance, in oncore_get_timestamp()
2631 if (instance->o_state != ONCORE_RUN) in oncore_get_timestamp()
2634 if (instance->traim_delay) { /* flag that @@Bn/@@En/Hn returned */ in oncore_get_timestamp()
2635 instance->traim_ck = 1; in oncore_get_timestamp()
2636 instance->traim_delay = 0; in oncore_get_timestamp()
2637 oncore_log(instance, LOG_NOTICE, "ONCORE: Detected TRAIM, TRAIM = ON"); in oncore_get_timestamp()
2639 oncore_set_traim(instance); in oncore_get_timestamp()
2642 memcpy(instance->BEHn, buf, (size_t) len); /* Bn or En or Hn */ in oncore_get_timestamp()
2644 if (!instance->traim) /* BnEnHn will be turned off in any case */ in oncore_get_timestamp()
2650 if (instance->BEHn[6]) { /* bad TRAIM */ in oncore_get_timestamp()
2651 oncore_log(instance, LOG_WARNING, "BAD TRAIM"); in oncore_get_timestamp()
2655 dt1 = instance->saw_tooth + instance->offset; /* dt this time step */ in oncore_get_timestamp()
2656 instance->saw_tooth = (s_char) instance->BEHn[14]; /* update for next time Hn[14] */ in oncore_get_timestamp()
2657 dt2 = instance->saw_tooth + instance->offset; /* dt next time step */ in oncore_get_timestamp()
2659 if (instance->BEHn[21]) /* bad TRAIM */ in oncore_get_timestamp()
2662 dt1 = instance->saw_tooth + instance->offset; /* dt this time step */ in oncore_get_timestamp()
2663 instance->saw_tooth = (s_char) instance->BEHn[25]; /* update for next time Bn[25], En[25] */ in oncore_get_timestamp()
2664 dt2 = instance->saw_tooth + instance->offset; /* dt next time step */ in oncore_get_timestamp()
2667 oncore_get_timestamp(instance, dt1, dt2); in oncore_get_timestamp()
2690 struct instance *instance, in oncore_get_timestamp()
2697 if (instance->o_state == ONCORE_TEST_SENT) { in oncore_get_timestamp()
2700 instance->timeout = 0; in oncore_get_timestamp()
2705 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2709 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
2722 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
2726 oncore_log_f(instance, LOG_ERR, in oncore_get_timestamp()
2730 oncore_log(instance, LOG_ERR, in oncore_get_timestamp()
2733 refclock_report(instance->peer, CEVNT_FAULT); in oncore_get_timestamp()
2734 oncore_shutdown(instance->unit, instance->peer); in oncore_get_timestamp()
2740 oncore_antenna_report(instance, antenna); in oncore_get_timestamp()
2742 instance->o_state = ONCORE_INIT; in oncore_get_timestamp()
2743 oncore_log(instance, LOG_NOTICE, "state = ONCORE_INIT"); in oncore_get_timestamp()
2745 instance->timeout = 4; in oncore_get_timestamp()
2746 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2758 struct instance *instance, in oncore_get_timestamp()
2765 if (instance->shmem == NULL) in oncore_get_timestamp()
2777 oncore_log(instance, LOG_NOTICE, "Cb: Response is NO ALMANAC"); in oncore_get_timestamp()
2782 instance->shmem[instance->shmem_Cb + i + 2]++; in oncore_get_timestamp()
2783 memcpy(instance->shmem + instance->shmem_Cb + i + 3, buf, (size_t) (len + 3)); in oncore_get_timestamp()
2786 oncore_log_f(instance, LOG_DEBUG, "See Cb [%d,%d]", buf[4], in oncore_get_timestamp()
2800 struct instance *instance, in oncore_get_timestamp()
2805 if (instance->o_state == ONCORE_RESET_SENT) { in oncore_get_timestamp()
2806 oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Return to Posn Fix mode */ in oncore_get_timestamp()
2808 instance->o_state = ONCORE_TEST_SENT; in oncore_get_timestamp()
2809 oncore_log(instance, LOG_NOTICE, "state = ONCORE_TEST_SENT"); in oncore_get_timestamp()
2811 oncore_sendmsg(instance, oncore_cmd_Cj, sizeof(oncore_cmd_Cj)); in oncore_get_timestamp()
2834 struct instance *instance, in oncore_get_timestamp()
2841 memcpy(instance->Cj, buf, len); in oncore_get_timestamp()
2843 instance->timeout = 0; in oncore_get_timestamp()
2844 if (instance->o_state == ONCORE_CHECK_ID) { in oncore_get_timestamp()
2845 oncore_msg_Cj_id(instance, buf, len); in oncore_get_timestamp()
2846 oncore_chan_test(instance); in oncore_get_timestamp()
2847 } else if (instance->o_state == ONCORE_HAVE_CHAN) { in oncore_get_timestamp()
2848 mode = instance->init_type; in oncore_get_timestamp()
2850 instance->o_state = ONCORE_RESET_SENT; in oncore_get_timestamp()
2851 oncore_log(instance, LOG_NOTICE, "state = ONCORE_RESET_SENT"); in oncore_get_timestamp()
2852 oncore_sendmsg(instance, oncore_cmd_Cf, sizeof(oncore_cmd_Cf)); in oncore_get_timestamp()
2854 instance->o_state = ONCORE_TEST_SENT; in oncore_get_timestamp()
2855 oncore_log(instance, LOG_NOTICE, "state = ONCORE_TEST_SENT"); in oncore_get_timestamp()
2859 if (instance->o_state == ONCORE_TEST_SENT) { in oncore_get_timestamp()
2860 if (instance->chan == 6) in oncore_get_timestamp()
2861 oncore_sendmsg(instance, oncore_cmd_Ca, sizeof(oncore_cmd_Ca)); in oncore_get_timestamp()
2862 else if (instance->chan == 8) in oncore_get_timestamp()
2863 oncore_sendmsg(instance, oncore_cmd_Fa, sizeof(oncore_cmd_Fa)); in oncore_get_timestamp()
2864 else if (instance->chan == 12) in oncore_get_timestamp()
2865 oncore_sendmsg(instance, oncore_cmd_Ia, sizeof(oncore_cmd_Ia)); in oncore_get_timestamp()
2866 } else if (instance->o_state == ONCORE_INIT) in oncore_get_timestamp()
2867 oncore_msg_Cj_init(instance, buf, len); in oncore_get_timestamp()
2886 struct instance *instance, in oncore_get_timestamp()
2896 instance->Cj[294] = '\0'; in oncore_get_timestamp()
2897 for (cp= (char *)instance->Cj; cp< (char *) &instance->Cj[294]; ) { in oncore_get_timestamp()
2900 cpw = (char *)&instance->Cj[294]; in oncore_get_timestamp()
2902 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
2909 instance->version = atoi((char *) &instance->Cj[83]); in oncore_get_timestamp()
2910 instance->revision = atoi((char *) &instance->Cj[111]); in oncore_get_timestamp()
2915 for (cp= (char *) &instance->Cj[160]; *cp == ' '; cp++) /* start right after 'Model #' */ in oncore_get_timestamp()
2926 instance->model = ONCORE_PVT6; in oncore_get_timestamp()
2929 instance->model = ONCORE_BASIC; in oncore_get_timestamp()
2932 instance->model = ONCORE_VP; in oncore_get_timestamp()
2935 instance->model = ONCORE_M12; in oncore_get_timestamp()
2939 instance->model = ONCORE_GT; in oncore_get_timestamp()
2942 instance->model = ONCORE_GTPLUS; in oncore_get_timestamp()
2945 instance->model = ONCORE_UT; in oncore_get_timestamp()
2948 instance->model = ONCORE_UTPLUS; in oncore_get_timestamp()
2951 instance->model = ONCORE_SL; in oncore_get_timestamp()
2954 instance->model = ONCORE_UNKNOWN; in oncore_get_timestamp()
2958 instance->model = ONCORE_UNKNOWN; in oncore_get_timestamp()
2963 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
2965 cp, instance->version, instance->revision); in oncore_get_timestamp()
2967 instance->chan_id = 8; /* default */ in oncore_get_timestamp()
2968 if (instance->model == ONCORE_BASIC || instance->model == ONCORE_PVT6) in oncore_get_timestamp()
2969 instance->chan_id = 6; in oncore_get_timestamp()
2970 …else if (instance->model == ONCORE_VP || instance->model == ONCORE_UT || instance->model == ONCORE… in oncore_get_timestamp()
2971 instance->chan_id = 8; in oncore_get_timestamp()
2972 else if (instance->model == ONCORE_M12) in oncore_get_timestamp()
2973 instance->chan_id = 12; in oncore_get_timestamp()
2975 instance->traim_id = 0; /* default */ in oncore_get_timestamp()
2976 if (instance->model == ONCORE_BASIC || instance->model == ONCORE_PVT6) in oncore_get_timestamp()
2977 instance->traim_id = 0; in oncore_get_timestamp()
2978 …else if (instance->model == ONCORE_VP || instance->model == ONCORE_UT || instance->model == ONCORE… in oncore_get_timestamp()
2979 instance->traim_id = 1; in oncore_get_timestamp()
2980 else if (instance->model == ONCORE_M12) in oncore_get_timestamp()
2981 instance->traim_id = -1; in oncore_get_timestamp()
2983 oncore_log_f(instance, LOG_INFO, "Channels = %d, TRAIM = %s", in oncore_get_timestamp()
2984 instance->chan_id, in oncore_get_timestamp()
2985 ((instance->traim_id < 0) in oncore_get_timestamp()
2987 : (instance->traim_id > 0) in oncore_get_timestamp()
3002 struct instance *instance, in oncore_get_timestamp()
3017 if (instance->chan == 12) { in oncore_get_timestamp()
3018 instance->shmem_bad_Ea = 1; in oncore_get_timestamp()
3019 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3021 instance->version, instance->revision); in oncore_get_timestamp()
3024 oncore_sendmsg(instance, oncore_cmd_Cg, sizeof(oncore_cmd_Cg)); /* Return to Posn Fix mode */ in oncore_get_timestamp()
3025 oncore_sendmsg(instance, oncore_cmd_Bb, sizeof(oncore_cmd_Bb)); /* turn on for shmem (6/8/12) */ in oncore_get_timestamp()
3026 oncore_sendmsg(instance, oncore_cmd_Ek, sizeof(oncore_cmd_Ek)); /* turn off (VP) */ in oncore_get_timestamp()
3027 oncore_sendmsg(instance, oncore_cmd_Aw, sizeof(oncore_cmd_Aw)); /* UTC time (6/8/12) */ in oncore_get_timestamp()
3028 oncore_sendmsg(instance, oncore_cmd_AB, sizeof(oncore_cmd_AB)); /* Appl type static (VP) */ in oncore_get_timestamp()
3029 …oncore_sendmsg(instance, oncore_cmd_Be, sizeof(oncore_cmd_Be)); /* Tell us the Almanac for shmem (… in oncore_get_timestamp()
3030 oncore_sendmsg(instance, oncore_cmd_Bd, sizeof(oncore_cmd_Bd)); /* Tell us when Almanac changes */ in oncore_get_timestamp()
3032 mode = instance->init_type; in oncore_get_timestamp()
3039 if (instance->posn_set) { in oncore_get_timestamp()
3040 oncore_log(instance, LOG_INFO, "Setting Posn from input data"); in oncore_get_timestamp()
3041 oncore_set_posn(instance); /* this should print posn indirectly thru the As cmd */ in oncore_get_timestamp()
3043 if (instance->chan != 12) in oncore_get_timestamp()
3044 oncore_sendmsg(instance, oncore_cmd_Atx, sizeof(oncore_cmd_Atx)); in oncore_get_timestamp()
3049 w32_buf(&Cmd[-2+4], (int)instance->delay); in oncore_get_timestamp()
3050 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Az)); /* 6,8,12 */ in oncore_get_timestamp()
3054 w32_buf(&Cmd[-2+4], instance->offset); /* will check for hw response */ in oncore_get_timestamp()
3055 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ay)); in oncore_get_timestamp()
3059 if (instance->Ag != 0xff) { /* will have 0xff in it if not set by user */ in oncore_get_timestamp()
3061 Cmd[-2+4] = instance->Ag; in oncore_get_timestamp()
3062 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ag)); in oncore_get_timestamp()
3073 …if (instance->chan == 6) { /* start 6chan, kill 8,12chan commands, possibly testing VP in 6chan mo… in oncore_get_timestamp()
3074 oncore_sendmsg(instance, oncore_cmd_Ea0, sizeof(oncore_cmd_Ea0)); in oncore_get_timestamp()
3075 oncore_sendmsg(instance, oncore_cmd_En0, sizeof(oncore_cmd_En0)); in oncore_get_timestamp()
3076 oncore_sendmsg(instance, oncore_cmd_Ha0, sizeof(oncore_cmd_Ha0)); in oncore_get_timestamp()
3077 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_get_timestamp()
3078 oncore_sendmsg(instance, oncore_cmd_Ba, sizeof(oncore_cmd_Ba )); in oncore_get_timestamp()
3079 } else if (instance->chan == 8) { /* start 8chan, kill 6,12chan commands */ in oncore_get_timestamp()
3080 oncore_sendmsg(instance, oncore_cmd_Ba0, sizeof(oncore_cmd_Ba0)); in oncore_get_timestamp()
3081 oncore_sendmsg(instance, oncore_cmd_Bn0, sizeof(oncore_cmd_Bn0)); in oncore_get_timestamp()
3082 oncore_sendmsg(instance, oncore_cmd_Ha0, sizeof(oncore_cmd_Ha0)); in oncore_get_timestamp()
3083 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_get_timestamp()
3084 oncore_sendmsg(instance, oncore_cmd_Ea, sizeof(oncore_cmd_Ea )); in oncore_get_timestamp()
3085 } else if (instance->chan == 12){ /* start 12chan, kill 6,12chan commands */ in oncore_get_timestamp()
3086 oncore_sendmsg(instance, oncore_cmd_Ba0, sizeof(oncore_cmd_Ba0)); in oncore_get_timestamp()
3087 oncore_sendmsg(instance, oncore_cmd_Bn0, sizeof(oncore_cmd_Bn0)); in oncore_get_timestamp()
3088 oncore_sendmsg(instance, oncore_cmd_Ea0, sizeof(oncore_cmd_Ea0)); in oncore_get_timestamp()
3089 oncore_sendmsg(instance, oncore_cmd_En0, sizeof(oncore_cmd_En0)); in oncore_get_timestamp()
3090 oncore_sendmsg(instance, oncore_cmd_Ha, sizeof(oncore_cmd_Ha )); in oncore_get_timestamp()
3091 oncore_cmd_Gc[2] = (instance->pps_control < 0) ? 1 : instance->pps_control; in oncore_get_timestamp()
3092 …oncore_sendmsg(instance, oncore_cmd_Gc, sizeof(oncore_cmd_Gc)); /* PPS off/continuous/Tracking 1+s… in oncore_get_timestamp()
3095 instance->count = 1; in oncore_get_timestamp()
3096 instance->o_state = ONCORE_ALMANAC; in oncore_get_timestamp()
3097 oncore_log(instance, LOG_NOTICE, "state = ONCORE_ALMANAC"); in oncore_get_timestamp()
3106 struct instance *instance, in oncore_get_timestamp()
3127 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3131 instance->ss_lat = lat; in oncore_get_timestamp()
3132 instance->ss_long = lon; in oncore_get_timestamp()
3133 instance->ss_ht = ht; in oncore_get_timestamp()
3135 oncore_print_posn(instance); in oncore_get_timestamp()
3144 struct instance *instance, in oncore_get_timestamp()
3164 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3175 struct instance *instance, in oncore_get_timestamp()
3182 instance->pps_control_msg_seen = 1; in oncore_get_timestamp()
3183 oncore_log_f(instance, LOG_INFO, "PPS Control set to %s", in oncore_get_timestamp()
3194 struct instance *instance, in oncore_get_timestamp()
3207 instance->saw_Gj = 1; /* flag, saw_Gj, dont need to try Bj in check_leap */ in oncore_get_timestamp()
3213 oncore_log_f(instance, LOG_INFO, in oncore_get_timestamp()
3234 oncore_log_f(instance, LOG_NOTICE, in oncore_get_timestamp()
3242 instance->pp->leap = LEAP_NOWARNING; in oncore_get_timestamp()
3245 if (buf[6] == instance->BEHa[6] && buf[7] == instance->BEHa[7] && /* year */ in oncore_get_timestamp()
3246 buf[8] == instance->BEHa[4]) { /* month */ in oncore_get_timestamp()
3249 instance->pp->leap = LEAP_DELSECOND; in oncore_get_timestamp()
3252 instance->pp->leap = LEAP_ADDSECOND; in oncore_get_timestamp()
3257 oncore_log(instance, LOG_INFO, cp); in oncore_get_timestamp()
3266 struct instance *instance, in oncore_get_timestamp()
3271 if (instance && instance->peer) { in oncore_get_timestamp()
3272 oncore_log(instance, LOG_ERR, "Oncore: System Failure at Power On"); in oncore_get_timestamp()
3273 oncore_shutdown(instance->unit, instance->peer); in oncore_get_timestamp()
3282 struct instance *instance, in oncore_get_timestamp()
3287 if (instance->ant_state == new_state) in oncore_get_timestamp()
3298 instance->ant_state = new_state; in oncore_get_timestamp()
3299 oncore_log(instance, LOG_NOTICE, cp); in oncore_get_timestamp()
3306 struct instance *instance in oncore_get_timestamp()
3318 instance->o_state = ONCORE_CHECK_CHAN; in oncore_get_timestamp()
3319 oncore_log(instance, LOG_NOTICE, "state = ONCORE_CHECK_CHAN"); in oncore_get_timestamp()
3321 instance->count3 = 1; in oncore_get_timestamp()
3322 oncore_sendmsg(instance, oncore_cmd_Ba, sizeof(oncore_cmd_Ba)); in oncore_get_timestamp()
3323 oncore_sendmsg(instance, oncore_cmd_Ea, sizeof(oncore_cmd_Ea)); in oncore_get_timestamp()
3324 oncore_sendmsg(instance, oncore_cmd_Ha, sizeof(oncore_cmd_Ha)); in oncore_get_timestamp()
3333 struct instance *instance in oncore_get_timestamp()
3336 if (instance->chan == 6) { in oncore_get_timestamp()
3337 instance->rsm.bad_almanac = instance->BEHa[64]&0x1; in oncore_get_timestamp()
3338 instance->rsm.bad_fix = instance->BEHa[64]&0x52; in oncore_get_timestamp()
3339 } else if (instance->chan == 8) { in oncore_get_timestamp()
3340 instance->rsm.bad_almanac = instance->BEHa[72]&0x1; in oncore_get_timestamp()
3341 instance->rsm.bad_fix = instance->BEHa[72]&0x52; in oncore_get_timestamp()
3342 } else if (instance->chan == 12) { in oncore_get_timestamp()
3345 bits1 = (instance->BEHa[129]>>5) & 0x7; /* actually Ha */ in oncore_get_timestamp()
3346 bits2 = instance->BEHa[130]; in oncore_get_timestamp()
3347 instance->rsm.bad_almanac = (bits2 & 0x80); in oncore_get_timestamp()
3348 instance->rsm.bad_fix = (bits2 & 0x8) || (bits1 == 0x2); in oncore_get_timestamp()
3351 bits3 = instance->BEHa[141]; /* UTC parameters */ in oncore_get_timestamp()
3352 if (!instance->count5_set && (bits3 & 0xC0)) { in oncore_get_timestamp()
3353 instance->count5 = 4; /* was 2 [Bug 1766] */ in oncore_get_timestamp()
3354 instance->count5_set = 1; in oncore_get_timestamp()
3357 oncore_log_f(instance, LOG_DEBUG, in oncore_get_timestamp()
3359 instance->BEHa[129], instance->BEHa[130], in oncore_get_timestamp()
3361 instance->mode == MODE_0D, in oncore_get_timestamp()
3362 instance->mode == MODE_2D, in oncore_get_timestamp()
3363 instance->mode == MODE_3D, in oncore_get_timestamp()
3364 instance->rsm.bad_almanac, in oncore_get_timestamp()
3365 instance->rsm.bad_fix); in oncore_get_timestamp()
3377 struct instance *instance in oncore_check_antenna() argument
3382 antenna = instance->ant_state; in oncore_check_antenna()
3383 if (instance->chan == 12) in oncore_check_antenna()
3384 antenna = (instance->BEHa[130] & 0x6 ) >> 1; in oncore_check_antenna()
3386 antenna = (instance->BEHa[37] & 0xc0) >> 6; /* prob unset 6, set GT, UT unset VP */ in oncore_check_antenna()
3388 oncore_antenna_report (instance, antenna); in oncore_check_antenna()
3418 struct instance *instance in oncore_check_leap_sec() argument
3422 if (instance->Bj_day != instance->BEHa[5]) { /* do this 1/day */ in oncore_check_leap_sec()
3423 instance->Bj_day = instance->BEHa[5]; in oncore_check_leap_sec()
3425 if (instance->saw_Gj < 0) { /* -1 DONT have Gj use Bj */ in oncore_check_leap_sec()
3426 if ((instance->BEHa[4] == 6) || (instance->BEHa[4] == 12)) in oncore_check_leap_sec()
3427 oncore_sendmsg(instance, oncore_cmd_Bj, sizeof(oncore_cmd_Bj)); in oncore_check_leap_sec()
3428 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof(oncore_cmd_Bl)); in oncore_check_leap_sec()
3432 if (instance->saw_Gj == 0) /* 0 is dont know if we have Gj */ in oncore_check_leap_sec()
3433 instance->count4 = 1; in oncore_check_leap_sec()
3435 oncore_sendmsg(instance, oncore_cmd_Gj, sizeof(oncore_cmd_Gj)); in oncore_check_leap_sec()
3443 if (instance->count4) { /* delay, waiting for Gj response */ in oncore_check_leap_sec()
3444 if (instance->saw_Gj == 1) in oncore_check_leap_sec()
3445 instance->count4 = 0; in oncore_check_leap_sec()
3446 else if (instance->count4++ > 5) { /* delay, waiting for Gj response */ in oncore_check_leap_sec()
3447 instance->saw_Gj = -1; /* didnt see it, will use Bj */ in oncore_check_leap_sec()
3448 instance->count4 = 0; in oncore_check_leap_sec()
3449 if ((instance->BEHa[4] == 6) || (instance->BEHa[4] == 12)) { in oncore_check_leap_sec()
3450 oncore_sendmsg(instance, oncore_cmd_Bj, sizeof(oncore_cmd_Bj)); in oncore_check_leap_sec()
3451 oncore_sendmsg(instance, oncore_cmd_Bl, sizeof(oncore_cmd_Bl)); in oncore_check_leap_sec()
3483 struct instance *instance in oncore_compute_dH() argument
3491 instance->have_dH = 1; in oncore_compute_dH()
3492 if (instance->chan == 12) { in oncore_compute_dH()
3493 GPS = buf_w32(&instance->BEHa[39]); in oncore_compute_dH()
3494 MSL = buf_w32(&instance->BEHa[43]); in oncore_compute_dH()
3496 GPS = buf_w32(&instance->BEHa[23]); in oncore_compute_dH()
3497 MSL = buf_w32(&instance->BEHa[27]); in oncore_compute_dH()
3499 instance->dH = GPS - MSL; in oncore_compute_dH()
3500 instance->dH /= 100.; in oncore_compute_dH()
3505 oncore_log_f(instance, LOG_INFO, in oncore_compute_dH()
3506 "dH = (GPS - MSL) = %.2fm", instance->dH); in oncore_compute_dH()
3517 struct instance *instance in oncore_load_almanac() argument
3525 if (!instance->shmem) in oncore_load_almanac()
3529 for (cp = instance->shmem + 4; (n = 256 * (*(cp-3)) + *(cp-2)); in oncore_load_almanac()
3534 write(instance->ttyfd, cp, n); in oncore_load_almanac()
3535 oncore_print_Cb(instance, cp); in oncore_load_almanac()
3539 for (cp = instance->shmem + 4; (n = 256 * (*(cp-3)) + *(cp-2)); in oncore_load_almanac()
3541 oncore_log_f(instance, LOG_DEBUG, "See %c%c%c%c %d", in oncore_load_almanac()
3545 oncore_print_Cb(instance, cp); in oncore_load_almanac()
3548 oncore_log(instance, LOG_DEBUG, "GOOD SF"); in oncore_load_almanac()
3549 write(instance->ttyfd, cp, n); in oncore_load_almanac()
3551 oncore_log(instance, LOG_DEBUG, "BAD SF"); in oncore_load_almanac()
3553 oncore_log(instance, LOG_DEBUG, "BAD CHECKSUM"); in oncore_load_almanac()
3560 if (!instance->posn_set) { /* if we input a posn use it, else from SHMEM */ in oncore_load_almanac()
3561 oncore_log(instance, LOG_NOTICE, "Loading Posn from SHMEM"); in oncore_load_almanac()
3562 for (cp=instance->shmem+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3)) { in oncore_load_almanac()
3563 … if ((instance->chan == 6 && (!strncmp((char *) cp, "@@Ba", 4) && oncore_checksum_ok(cp, 68))) || in oncore_load_almanac()
3564 … (instance->chan == 8 && (!strncmp((char *) cp, "@@Ea", 4) && oncore_checksum_ok(cp, 76))) || in oncore_load_almanac()
3565 … (instance->chan == 12 && (!strncmp((char *) cp, "@@Ha", 4) && oncore_checksum_ok(cp, 154)))) { in oncore_load_almanac()
3568 instance->posn_set = 1; in oncore_load_almanac()
3573 oncore_log_f(instance, LOG_DEBUG, in oncore_load_almanac()
3575 (long)(cp-instance->shmem), in oncore_load_almanac()
3579 instance->ss_lat = ii; in oncore_load_almanac()
3580 instance->ss_long = jj; in oncore_load_almanac()
3581 instance->ss_ht = kk; in oncore_load_almanac()
3586 oncore_set_posn(instance); in oncore_load_almanac()
3594 oncore_log_f(instance, LOG_DEBUG, "DATE %d %d %d, %d %d %d", in oncore_load_almanac()
3598 if (instance->chan == 12) { in oncore_load_almanac()
3610 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Gb)); in oncore_load_almanac()
3614 oncore_sendmsg(instance, oncore_cmd_Ab, sizeof(oncore_cmd_Ab)); in oncore_load_almanac()
3621 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ac)); in oncore_load_almanac()
3627 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Aa)); in oncore_load_almanac()
3630 oncore_log(instance, LOG_INFO, "Setting Posn and Time after Loading Almanac"); in oncore_load_almanac()
3639 struct instance *instance, in oncore_print_Cb() argument
3647 oncore_log_f(instance, LOG_DEBUG, "DEBUG: See: %c%c%c%c", *(cp), in oncore_print_Cb()
3656 oncore_log(instance, LOG_DEBUG, Msg); in oncore_print_Cb()
3658 oncore_log_f(instance, LOG_DEBUG, "Debug: Cb: [%d,%d]", *(cp+4), in oncore_print_Cb()
3689 struct instance *instance in oncore_print_posn() argument
3697 oncore_log(instance, LOG_INFO, "Posn:"); in oncore_print_posn()
3699 lon = instance->ss_long; in oncore_print_posn()
3706 lat = instance->ss_lat; in oncore_print_posn()
3712 hm = instance->ss_ht/100.; in oncore_print_posn()
3717 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3727 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3737 oncore_log_f(instance, LOG_INFO, in oncore_print_posn()
3750 struct instance *instance, in oncore_sendmsg() argument
3758 fd = instance->ttyfd; in oncore_sendmsg()
3761 oncore_log_f(instance, LOG_DEBUG, "ONCORE: Send @@%c%c %d", in oncore_sendmsg()
3777 struct instance *instance in oncore_set_posn() argument
3786 if (instance->chan == 12) in oncore_set_posn()
3787 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* (12) */ in oncore_set_posn()
3789 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* (6/8) */ in oncore_set_posn()
3790 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* (6/8) */ in oncore_set_posn()
3793 mode = instance->init_type; in oncore_set_posn()
3797 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3798 w32_buf(&Cmd[-2+8], (int) instance->ss_long); in oncore_set_posn()
3799 w32_buf(&Cmd[-2+12], (int) instance->ss_ht); in oncore_set_posn()
3801 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_As)); /* posn hold 3D posn (6/8/12) */ in oncore_set_posn()
3804 w32_buf(&Cmd[-2+4], (int) instance->ss_ht); in oncore_set_posn()
3806 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Au)); /* altitude hold (6/8/12 not UT, M12T) */ in oncore_set_posn()
3810 if (instance->chan == 12) { in oncore_set_posn()
3812 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3813 w32_buf(&Cmd[-2+8], (int) instance->ss_long); in oncore_set_posn()
3814 w32_buf(&Cmd[-2+12],(int) instance->ss_ht); in oncore_set_posn()
3816 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ga)); /* 3d posn (12) */ in oncore_set_posn()
3819 w32_buf(&Cmd[-2+4], (int) instance->ss_lat); in oncore_set_posn()
3820 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ad)); /* lat (6/8) */ in oncore_set_posn()
3823 w32_buf(&Cmd[-2+4], (int) instance->ss_long); in oncore_set_posn()
3824 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Ae)); /* long (6/8) */ in oncore_set_posn()
3827 w32_buf(&Cmd[-2+4], (int) instance->ss_ht); in oncore_set_posn()
3829 oncore_sendmsg(instance, Cmd, sizeof(oncore_cmd_Af)); /* ht (6/8) */ in oncore_set_posn()
3834 if (instance->chan == 12) in oncore_set_posn()
3835 oncore_sendmsg(instance, oncore_cmd_Gd1, sizeof(oncore_cmd_Gd1)); in oncore_set_posn()
3837 oncore_sendmsg(instance, oncore_cmd_At1, sizeof(oncore_cmd_At1)); in oncore_set_posn()
3845 struct instance *instance in oncore_set_traim() argument
3848 if (instance->traim_in != -1) /* set in Input */ in oncore_set_traim()
3849 instance->traim = instance->traim_in; in oncore_set_traim()
3851 instance->traim = instance->traim_ck; in oncore_set_traim()
3853 oncore_log_f(instance, LOG_INFO, "Input says TRAIM = %d", in oncore_set_traim()
3854 instance->traim_in); in oncore_set_traim()
3855 oncore_log_f(instance, LOG_INFO, "Model # says TRAIM = %d", in oncore_set_traim()
3856 instance->traim_id); in oncore_set_traim()
3857 oncore_log_f(instance, LOG_INFO, "Testing says TRAIM = %d", in oncore_set_traim()
3858 instance->traim_ck); in oncore_set_traim()
3859 oncore_log_f(instance, LOG_INFO, "Using TRAIM = %d", in oncore_set_traim()
3860 instance->traim); in oncore_set_traim()
3862 if (instance->traim_ck == 1 && instance->traim == 0) { in oncore_set_traim()
3865 if (instance->chan == 6) in oncore_set_traim()
3866 oncore_sendmsg(instance, oncore_cmd_Bnx, sizeof(oncore_cmd_Bnx)); in oncore_set_traim()
3867 else if (instance->chan == 8) in oncore_set_traim()
3868 oncore_sendmsg(instance, oncore_cmd_Enx, sizeof(oncore_cmd_Enx)); in oncore_set_traim()
3870 oncore_sendmsg(instance, oncore_cmd_Ge0, sizeof(oncore_cmd_Ge0)); in oncore_set_traim()
3871 oncore_sendmsg(instance, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0)); in oncore_set_traim()
3883 struct instance *instance in oncore_shmem_get_3D() argument
3886 if (instance->pp->second%15 == 3) { /* start the sequence */ /* by changing mode */ in oncore_shmem_get_3D()
3887 instance->shmem_reset = 1; in oncore_shmem_get_3D()
3888 if (instance->chan == 12) { in oncore_shmem_get_3D()
3889 if (instance->shmem_Posn == 2) in oncore_shmem_get_3D()
3890 oncore_sendmsg(instance, oncore_cmd_Gd2, sizeof(oncore_cmd_Gd2)); /* 2D */ in oncore_shmem_get_3D()
3892 oncore_sendmsg(instance, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* 3D */ in oncore_shmem_get_3D()
3894 if (instance->saw_At) { /* out of 0D -> 3D mode */ in oncore_shmem_get_3D()
3895 oncore_sendmsg(instance, oncore_cmd_At0, sizeof(oncore_cmd_At0)); in oncore_shmem_get_3D()
3896 if (instance->shmem_Posn == 2) /* 3D -> 2D mode */ in oncore_shmem_get_3D()
3897 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_shmem_get_3D()
3899 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); in oncore_shmem_get_3D()
3901 } else if (instance->shmem_reset || (instance->mode != MODE_0D)) { in oncore_shmem_get_3D()
3902 instance->shmem_reset = 0; in oncore_shmem_get_3D()
3903 if (instance->chan == 12) in oncore_shmem_get_3D()
3904 oncore_sendmsg(instance, oncore_cmd_Gd1, sizeof(oncore_cmd_Gd1)); /* 0D */ in oncore_shmem_get_3D()
3906 if (instance->saw_At) { in oncore_shmem_get_3D()
3907 if (instance->mode == MODE_2D) /* 2D -> 3D or 0D mode */ in oncore_shmem_get_3D()
3908 oncore_sendmsg(instance, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); in oncore_shmem_get_3D()
3909 oncore_sendmsg(instance, oncore_cmd_At1, sizeof(oncore_cmd_At1)); /* to 0D mode */ in oncore_shmem_get_3D()
3911 oncore_sendmsg(instance, oncore_cmd_Av1, sizeof(oncore_cmd_Av1)); in oncore_shmem_get_3D()
3927 struct instance *instance in oncore_ss() argument
3933 if (instance->site_survey == ONCORE_SS_HW) { in oncore_ss()
3938 if ((instance->chan == 8 && !(instance->BEHa[37] & 0x20)) || in oncore_ss()
3939 (instance->chan == 12 && !(instance->BEHa[130] & 0x10))) { in oncore_ss()
3940 oncore_log(instance, LOG_INFO, "Now in 0D mode"); in oncore_ss()
3942 if (instance->chan == 12) in oncore_ss()
3943 oncore_sendmsg(instance, oncore_cmd_Gax, sizeof(oncore_cmd_Gax)); in oncore_ss()
3945 oncore_sendmsg(instance, oncore_cmd_Asx, sizeof(oncore_cmd_Asx)); in oncore_ss()
3947 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_ss()
3948 instance->site_survey = ONCORE_SS_DONE; in oncore_ss()
3955 if (instance->rsm.bad_fix) /* Not if poor geometry or less than 3 sats */ in oncore_ss()
3958 if (instance->mode != MODE_3D) /* Use only 3D Fixes */ in oncore_ss()
3961 instance->ss_lat += buf_w32(&instance->BEHa[15]); in oncore_ss()
3962 instance->ss_long += buf_w32(&instance->BEHa[19]); in oncore_ss()
3963 instance->ss_ht += buf_w32(&instance->BEHa[23]); /* GPS ellipsoid */ in oncore_ss()
3964 instance->ss_count++; in oncore_ss()
3966 if (instance->ss_count != POS_HOLD_AVERAGE) in oncore_ss()
3969 instance->ss_lat /= POS_HOLD_AVERAGE; in oncore_ss()
3970 instance->ss_long /= POS_HOLD_AVERAGE; in oncore_ss()
3971 instance->ss_ht /= POS_HOLD_AVERAGE; in oncore_ss()
3973 oncore_log_f(instance, LOG_NOTICE, in oncore_ss()
3975 instance->ss_lat, instance->ss_long, in oncore_ss()
3976 instance->ss_ht); in oncore_ss()
3977 lat = instance->ss_lat/3600000.; in oncore_ss()
3978 lon = instance->ss_long/3600000.; in oncore_ss()
3979 ht = instance->ss_ht/100; in oncore_ss()
3980 oncore_log_f(instance, LOG_NOTICE, in oncore_ss()
3984 oncore_set_posn(instance); in oncore_ss()
3986 oncore_log(instance, LOG_INFO, "Now in 0D mode"); in oncore_ss()
3988 oncore_log(instance, LOG_NOTICE, "SSstate = ONCORE_SS_DONE"); in oncore_ss()
3989 instance->site_survey = ONCORE_SS_DONE; in oncore_ss()
3997 struct instance *instance in oncore_wait_almanac() argument
4000 if (instance->rsm.bad_almanac) { in oncore_wait_almanac()
4001 instance->counta++; in oncore_wait_almanac()
4002 if (instance->counta%5 == 0) in oncore_wait_almanac()
4003 oncore_log(instance, LOG_INFO, "Waiting for Almanac"); in oncore_wait_almanac()
4010 if (!instance->almanac_from_shmem) { in oncore_wait_almanac()
4011 instance->almanac_from_shmem = 1; in oncore_wait_almanac()
4012 oncore_load_almanac(instance); in oncore_wait_almanac()
4019 if (instance->chan == 6) in oncore_wait_almanac()
4020 oncore_sendmsg(instance, oncore_cmd_Bn, sizeof(oncore_cmd_Bn)); in oncore_wait_almanac()
4021 else if (instance->chan == 8) in oncore_wait_almanac()
4022 oncore_sendmsg(instance, oncore_cmd_En, sizeof(oncore_cmd_En)); in oncore_wait_almanac()
4023 else if (instance->chan == 12) { in oncore_wait_almanac()
4024 oncore_sendmsg(instance, oncore_cmd_Gc, sizeof(oncore_cmd_Gc)); /* 1PPS on, continuous */ in oncore_wait_almanac()
4025 oncore_sendmsg(instance, oncore_cmd_Ge, sizeof(oncore_cmd_Ge)); /* TRAIM on */ in oncore_wait_almanac()
4026 oncore_sendmsg(instance, oncore_cmd_Hn, sizeof(oncore_cmd_Hn)); /* TRAIM status 1/s */ in oncore_wait_almanac()
4028 instance->traim_delay = 1; in oncore_wait_almanac()
4030 oncore_log(instance, LOG_NOTICE, "Have now loaded an ALMANAC"); in oncore_wait_almanac()
4032 instance->o_state = ONCORE_RUN; in oncore_wait_almanac()
4033 oncore_log(instance, LOG_NOTICE, "state = ONCORE_RUN"); in oncore_wait_almanac()
4042 struct instance *instance, in oncore_log() argument
4047 msyslog(log_level, "ONCORE[%d]: %s", instance->unit, msg); in oncore_log()
4048 mprintf_clock_stats(&instance->peer->srcadr, "ONCORE[%d]: %s", in oncore_log()
4049 instance->unit, msg); in oncore_log()
4055 struct instance * instance, in oncore_log_f() argument
4068 oncore_log(instance, log_level, msg); in oncore_log_f()
4071 instance->max_len = max(strlen(msg), instance->max_len); in oncore_log_f()
4072 instance->max_count++; in oncore_log_f()
4073 if (instance->max_count % 100 == 0) in oncore_log_f()
4074 oncore_log_f(instance, LOG_INFO, in oncore_log_f()
4076 instance->max_len); in oncore_log_f()