mbgtools-lx  4.2.8
xdevfeat.c
Go to the documentation of this file.
1 
2 /**************************************************************************
3  *
4  * $Id: xdevfeat.c 1.3 2018/07/16 12:46:03 martin REL_M $
5  *
6  * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
7  *
8  * Description:
9  * Meinberg API functions to check extended device features.
10  *
11  * See notes near "defgroup xdevfeat_chk_supp_fncs" in xdevfeat.h.
12  *
13  * -----------------------------------------------------------------------
14  * $Log: xdevfeat.c $
15  * Revision 1.3 2018/07/16 12:46:03 martin
16  * A couple of new functions New functions added by
17  * thomas-b and philipp.
18  * Doxygen fixes.
19  * Some _PRELIMINARY_CODE conditionals were removed.
20  * Revision 1.2 2017/07/06 07:47:06 martin
21  * Plenty of functions that test if a specific feature is
22  * supported provided by thomas-b, philipp, and martin.
23  * Doxygen comments.
24  * Revision 1.1 2016/03/16 14:32:52 martin
25  * Initial revision.
26  *
27  **************************************************************************/
28 
29 #define _XDEVFEAT
30  #include <xdevfeat.h>
31 #undef _XDEVFEAT
32 
33 #include <mbgerror.h>
34 #include <xtiocomm.h>
35 
36 
37 
41 typedef struct
42 {
45 
49 
51 
52 
59 
60 
61 
62 static /*HDR*/
82 {
84 
85  //### TODO Implement a kind of cache so we don't have to search the whole
86  // table if several features of the same device are checked after each other.
87 
88  for ( p = builtin_feature_table; p->model_code || p->feature_mask; p++ )
89  if ( p->model_code == p_ri->model_code )
90  return ( ( p->feature_mask & msk ) == msk ) ? MBG_SUCCESS : MBG_ERR_NOT_SUPP_BY_DEV;
91 
92  return MBG_ERR_DEV_NOT_SUPP;
93 
94 } // check_builtin_feature
95 
96 
97 
98 static /*HDR*/
112 {
113  return _check_feat_supp_mask( p_ri->features, msk );
114 
115 } // check_ri_feature
116 
117 
118 
119 static /*HDR*/
133 int check_xfeature( int xf_bit, const MBG_XFEATURE_BUFFER *xf_buf )
134 {
135  return check_feat_supp_byte_array( xf_bit, xf_buf->b, sizeof( xf_buf->b ) );
136 
137 } // check_xfeature
138 
139 
140 
141 static /*HDR*/
155 int check_tlv_feat_supp( int tlv_feat_type, const MBG_TLV_INFO *tlv_info )
156 {
157  return check_feat_supp_byte_array( tlv_feat_type, tlv_info->supp_tlv_feat.b, sizeof( tlv_info->supp_tlv_feat.b ) );
158 
159 } // check_tlv_feat_supp
160 
161 
162 
163 /*HDR*/
178 {
180 
181 } // xdevfeat_is_gps
182 
184 
185 
186 
187 /*HDR*/
206 {
208 
209 } // xdevfeat_is_gnss
210 
212 
213 
214 
215 /*HDR*/
230 {
232 
233 } // xdevfeat_is_tcr
234 
236 
237 
238 
239 /*HDR*/
254 {
256 
257 } // xdevfeat_is_dcf
258 
260 
261 
262 
263 /*HDR*/
278 {
280 
281 } // xdevfeat_has_pzf
282 
284 
285 
286 
287 /*HDR*/
300 {
302 
303 } // xdevfeat_is_msf
304 
306 
307 
308 
309 /*HDR*/
322 {
324 
325 } // xdevfeat_is_jjy
326 
328 
329 
330 
331 /*HDR*/
344 {
346 
347 } // xdevfeat_is_wwvb
348 
350 
351 
352 
353 /*HDR*/
366 {
368 
369 } // xdevfeat_is_bus_lvl_dev
370 
372 
373 
374 
375 /*HDR*/
377 {
379  return MBG_SUCCESS;
380 
382 
383 } // xdevfeat_has_ims
384 
386 
387 
388 
389 /*HDR*/
391 {
393  return MBG_SUCCESS;
394 
396 
397 } // xdevfeat_has_gpio
398 
400 
401 
402 
403 /*HDR*/
405 {
407  return MBG_SUCCESS;
408 
410 
411 } // xdevfeat_has_synth
412 
414 
415 
416 
417 /*HDR*/
419 {
420  const RECEIVER_INFO *ri = &p_xdf->receiver_info;
421 
422  if ( ri->n_prg_out > 0 )
423  return MBG_SUCCESS;
424 
426 
427 } // xdevfeat_has_prog_pulses
428 
430 
431 
432 
433 /*HDR*/
435 {
437  return MBG_SUCCESS;
438 
440 
441 } // xdevfeat_has_irig_tx
442 
444 
445 
446 
447 /*HDR*/
449 {
451  return MBG_SUCCESS;
452 
454 
455 } // xdevfeat_has_irig_rx
456 
458 
459 
460 
461 /*HDR*/
463 {
465 
466 } // xdevfeat_has_mbg_os
467 
469 
470 
471 
472 /*HDR*/
474 {
475  const RECEIVER_INFO *ri = &p_xdf->receiver_info;
476 
477  if ( ri->n_com_ports > 0 )
478  return MBG_SUCCESS;
479 
481 
482 } // xdevfeat_has_serouts
483 
485 
486 
487 
488 /*HDR*/
501 {
503 
504 } // xdevfeat_has_bvar_stat
505 
507 
508 
509 
510 /*HDR*/
523 {
525 
526 } // xdevfeat_has_pos_xyz
527 
529 
530 
531 
532 /*HDR*/
545 {
547 
548 } // xdevfeat_has_pos_lla
549 
551 
552 
553 
554 /*HDR*/
567 {
569 
570 } // xdevfeat_has_time_ttm
571 
572 
573 
574 /*HDR*/
587 {
589 
590 } // xdevfeat_has_time_scale
591 
593 
594 
595 
596 /*HDR*/
609 {
611 
612 } // xdevfeat_has_tzdl
613 
615 
616 
617 
618 /*HDR*/
631 {
633 
634 } // xdevfeat_has_tzcode
635 
637 
638 
639 
640 /*HDR*/
653 {
655 
656 } // xdevfeat_has_ant_info
657 
659 
660 
661 
662 /*HDR*/
675 {
677 
678 } // xdevfeat_has_enable_flags
679 
681 
682 
683 
684 /*HDR*/
697 {
699 
700 } // xdevfeat_has_gps_stat_info
701 
703 
704 
705 
706 /*HDR*/
719 {
721 
722 } // xdevfeat_has_ant_cable_length
723 
725 
726 
727 
728 /*HDR*/
741 {
743 
744 } // xdevfeat_has_gps_ignore_lock
745 
747 
748 
749 
750 #if 0 //### TODO
751 
752  /*HDR*/
764 _NO_MBG_API_ATTR int _NO_MBG_API xdevfeat_has_( const MBG_XDEV_FEATURES *p_xdf )
765 {
766  return check_builtin_feature( GPS_MODEL_HAS_, &p_xdf->receiver_info );
767 
768 } // xdevfeat_has_
769 
770 XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_;
771 
772 
773 
774  /*HDR*/
786 _NO_MBG_API_ATTR int _NO_MBG_API xdevfeat_has_( const MBG_XDEV_FEATURES *p_xdf )
787 {
788  return check_builtin_feature( GPS_MODEL_HAS_, &p_xdf->receiver_info );
789 
790 } // xdevfeat_has_
791 
792 XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_;
793 
794 #endif // ###
795 
796 
797 /*HDR*/
811 {
813 
814 } // xdevfeat_has_scu_stat
815 
817 
818 
819 /*HDR*/
832 {
834 
835 } // xdevfeat_has_sv_info
836 
838 
839 
840 /*HDR*/
853 {
855 
856 } // xdevfeat_has_raw_irig_data
857 
859 
860 
861 
862 /*HDR*/
882 {
884 
885 } // xdevfeat_has_lan_ip4
886 
888 
889 
890 
891 /*HDR*/
911 {
913 
914 } // xdevfeat_has_net_cfg
915 
917 
918 
919 
920 /*HDR*/
938 {
939  return check_ri_feature( GPS_HAS_PTP, &p_xdf->receiver_info );
940 
941 } // xdevfeat_has_ptp
942 
944 
945 
946 /*HDR*/
964 {
965  return check_ri_feature( GPS_HAS_NTP, &p_xdf->receiver_info );
966 
967 } // xdevfeat_has_ntp
968 
970 
971 
972 /*HDR*/
988 {
990 
991 } // xdevfeat_has_fw_mngmnt
992 
994 
995 
996 /*HDR*/
1008 {
1009  return check_ri_feature( GPS_HAS_EVT_LOG, &p_xdf->receiver_info );
1010 
1011 } // xdevfeat_has_evt_log
1012 
1014 
1015 
1016 /*HDR*/
1028 {
1029  const RECEIVER_INFO *ri = &p_xdf->receiver_info;
1030 
1031  if ( ri->n_ucaps > 0 )
1032  return MBG_SUCCESS;
1033 
1034  return MBG_ERR_NOT_SUPP_BY_DEV;
1035 
1036 } // xdevfeat_has_ucap
1037 
1039 
1040 
1041 /*HDR*/
1054 {
1056 
1057 } // xdevfeat_has_ucap_net
1058 
1060 
1061 
1062 
1063 /*HDR*/
1076 {
1078 
1079 } // xdevfeat_has_ptp
1080 
1082 
1083 
1084 
1085 /*HDR*/
1098 {
1100 
1101 } // xdevfeat_supp_tlv_file_req
1102 
1104 
1105 
1106 
1107 /*HDR*/
1120 {
1122 
1123 } // xdevfeat_supp_tlv_exec_cmd
1124 
1126 
1127 
1128 
1129 /*HDR*/
1142 {
1144 
1145 } // xdevfeat_supp_tlv_fw_rollback
1146 
1148 
1149 
1150 
1151 /*HDR*/
1164 {
1166 
1167 } // xdevfeat_supp_tlv_fw_update
1168 
1170 
1171 
1172 
1173 /*HDR*/
1186 {
1188 
1189 } // xdevfeat_supp_tlv_diag_file
1190 
1192 
1193 
1194 
1195 /*HDR*/
1207 {
1209 
1210 } // xdevfeat_supp_tlv_ptpv2_license
1211 
1213 
1214 
1215 
1216 /*HDR*/
1228 {
1230 
1231 } // xdevfeat_supp_tlv_ntp_license
1232 
1234 
1235 
1236 
1237 /*HDR*/
1249 {
1251 
1252 } // xdevfeat_supp_tlv_ptpv1_license
1253 
1255 
1256 
1257 
1258 /*HDR*/
1270 {
1272 
1273 } // xdevfeat_supp_tlv_time_monitor_license
1274 
1276 
1277 
1278 /*HDR*/
1290 {
1292 
1293 } // xdevfeat_supp_tlv_ufu
1294 
1296 
1297 
1298 
1299 /*HDR*/
1312 {
1314 
1315 } // xdevfeat_has_cmd_save_cfg
1316 
1318 
1319 
1320 
1321 /*HDR*/
1333 {
1335 
1336 } // xdevfeat_has_monitoring
1337 
1339 
1340 
1341 
1342 /*HDR*/
1355 {
1357 
1358 } // xdevfeat_has_led_api
1359 
1361 
1362 
1363 
1364 /*HDR*/
1377 {
1379 
1380 } // xdevfeat_has_lne_api
1381 
1383 
1384 
1385 
1386 /*HDR*/
1399 {
1401 
1402 } // xdevfeat_has_pwr_ctl_api
1403 
1405 
1406 
1407 
1408 /*HDR*/
1421 {
1423 
1424 } // xdevfeat_has_ext_sys_info
1425 
1427 
1428 
1429 
1430 /*HDR*/
1432 {
1434 
1435 } // xdevfeat_has_io_ports
1436 
1438 
1439 
1440 
1441 /*HDR*/
1454 {
1456 
1457 } // xdevfeat_has_transactions
1458 
1460 
1461 
1462 
1463 /*HDR*/
1475 {
1477 
1478 } // xdevfeat_has_reboot
1479 
1481 
1482 
1483 
1484 /*HDR*/
1497 {
1499 
1500 } // xdevfeat_has_req_ttm
1501 
1503 
1504 
1505 
1506 /*HDR*/
1522 {
1524 
1525 } // xdevfeat_has_xmulti_ref
1526 
1528 
1529 
1530 
1531 /*HDR*/
1543 {
1544  return check_ri_feature( GPS_HAS_XBP, &p_xdf->receiver_info );
1545 
1546 } // xdevfeat_has_xbp
1547 
1549 
1550 
1551 
1552 /*HDR*/
1564 {
1566 
1567 } // xdevfeat_has_database
1568 
1570 
1571 
1572 
1573 /*HDR*/
1586 {
1588 
1589 } // xdevfeat_has_gnss_mode
1590 
1592 
1593 
1594 
1595 /*HDR*/
1607 {
1609 
1610 } // xdevfeat_has_tainted_cfg
1611 
1613 
1614 
1615 
1616 /*HDR*/
1628 {
1630 
1631 } // xdevfeat_has_push_msgs
1632 
1634 
1635 
1636 
1637 /*HDR*/
1649 {
1651 
1652 } // xdevfeat_has_clk_res_info
1653 
1655 
1656 
1657 
1658 /*HDR*/
1670 {
1672 
1673 } // xdevfeat_has_user_auth
1674 
1676 
1677 
1678 
1679 /*HDR*/
1691 {
1693 
1694 } // xdevfeat_has_user_mngmnt
1695 
1697 
1698 
1699 
1700 /*HDR*/
1712 {
1714 
1715 } // xdevfeat_has_service
1716 
1718 
1719 
1720 
1721 /*HDR*/
1733 {
1734  return check_xfeature( MBG_XFEATURE_XHE, &p_xdf->xfeature_buffer );
1735 
1736 } // xdevfeat_has_xhe
1737 
1739 
1740 
1741 
1742 /*HDR*/
1758 {
1760 
1761  if ( mbg_rc_is_success( rc ) )
1762  goto out;
1763 
1765 
1766  if ( mbg_rc_is_success( rc ) )
1767  goto out;
1768 
1770 
1771 out:
1772  return rc;
1773 
1774 } // xdevfeat_has_up_conv
1775 
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_ptpv2_license
Check if a device supports PTPv2 license infos.
Definition: xdevfeat.c:1212
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_prog_pulses
Definition: xdevfeat.c:429
Supports XHE external rubidium unit I/O commands.
Definition: gpsdefs.h:2358
#define GPS_MODEL_HAS_SV_INFO
see GPS_BIT_MODEL_HAS_SV_INFO
Definition: gpsdefs.h:1365
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_fw_mngmnt
Check if a device supports the FW management API.
Definition: xdevfeat.c:993
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_pos_lla
Check if a device supports reading the position as LLA array.
Definition: xdevfeat.c:550
#define GPS_MODEL_IS_GPS
Bit masks associated with classifiers and built-in features.
Definition: gpsdefs.h:1343
MBG_TLV_FEAT_BUFFER supp_tlv_feat
A byte array of supported TLV feature bits, see MBG_TLV_FEAT_TYPES.
Definition: gpsdefs.h:18267
Supports user authentication and command GPS_AUTH_USER_INFO.
Definition: gpsdefs.h:2361
#define GPS_HAS_NTP
see GPS_FEAT_NTP
Definition: gpsdefs.h:2303
1) MBG_TLV_TYPE_BLOB => MBG_LICENSE_PTPV1_IDX, see License information
Definition: gpsdefs.h:18164
Supports the GPS_BEGIN_TRANSACTION and GPS_END_TRANSACTION commands, see also MBG_TRANSACTION_TYPES.
Definition: gpsdefs.h:2351
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ptp
Check if a device supports the PTP API.
Definition: xdevfeat.c:943
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_clk_res_info
Check if a device supports the MBG_CLK_RES_INFO structure.
Definition: xdevfeat.c:1654
Supports programmable LED API, see Meinberg LED API definitions.
Definition: gpsdefs.h:2347
#define _check_feat_supp_mask(_supp_msk, _chk_msk)
Check if all bits of a specific mask are set in an integer bit mask.
Definition: xdevfeat.h:121
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ant_cable_length
Check if a device supports the ANT_CABLE_LEN structure and API.
Definition: xdevfeat.c:724
#define GPS_HAS_GPIO
see GPS_FEAT_GPIO
Definition: gpsdefs.h:2296
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_pos_xyz
Check if a device supports reading the position as XYZ array.
Definition: xdevfeat.c:528
#define GPS_MODEL_IS_TCR
see GPS_BIT_MODEL_IS_TCR
Definition: gpsdefs.h:1345
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_ptpv1_license
Check if a device supports PTPv1 License Infos via TLV.
Definition: xdevfeat.c:1254
Supports specific LNE API, see Definitions specific to LNE devices.
Definition: gpsdefs.h:2348
#define GPS_HAS_SYNTH
see GPS_FEAT_SYNTH
Definition: gpsdefs.h:2276
static int check_xfeature(int xf_bit, const MBG_XFEATURE_BUFFER *xf_buf)
Check if a specific extended feature is supported.
Definition: xdevfeat.c:133
Instead of a standard L1 antenna, a Meinberg antenna/converter can be used with this GNSS device...
Definition: gpsdefs.h:2364
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_enable_flags
Check if a device supports the ENABLE_FLAGS structure and API.
Definition: xdevfeat.c:680
1) MBG_TLV_TYPE_BLOB => MBG_LICENSE_TIME_MONITOR_IDX, see License information
Definition: gpsdefs.h:18167
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_gps
Check if a device can receive the GPS satellite system.
Definition: xdevfeat.c:183
Supports monitoring / notifications, see Monitoring / notification.
Definition: gpsdefs.h:2357
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_irig_rx
Definition: xdevfeat.c:457
static BUILTIN_FEATURE_TABLE_ENTRY builtin_feature_table[]
A static table of builtin features.
Definition: xdevfeat.c:58
1) MBG_TLV_TYPE_BLOB => MBG_LICENSE_PTPV2_IDX, see License information
Definition: gpsdefs.h:18154
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_scu_stat
Check if the device supports the SCU_STAT structures.
Definition: xdevfeat.c:816
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_irig_tx
Definition: xdevfeat.c:443
uint32_t BUILTIN_FEATURE_MASK
Definitions used to classify devices and built-in features.
Definition: gpsdefs.h:1286
int XDEVFEAT_CHK_SUPP_FNC(const MBG_XDEV_FEATURES *p_xdf)
Type of functions to check if a feature is supported.
Definition: xdevfeat.h:104
Supports the GPS_REBOOT command.
Definition: gpsdefs.h:2352
Supports the GPS_SAVE_CFG command.
Definition: gpsdefs.h:2346
unsigned short uint16_t
Definition: words.h:213
BUILTIN_FEATURE_MASK feature_mask
Definition: xdevfeat.c:48
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_wwvb
Check if a device is a WWVB receiver.
Definition: xdevfeat.c:349
#define GPS_HAS_XMRS_MULT_INSTC
see GPS_FEAT_XMRS_MULT_INSTC
Definition: gpsdefs.h:2297
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_user_mngmnt
Check if a device supports user management.
Definition: xdevfeat.c:1696
#define GPS_MODEL_IS_WWVB
see GPS_BIT_MODEL_IS_WWVB
Definition: gpsdefs.h:1350
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_tainted_cfg
Check if a device supports the Tainted config Tainted Config API.
Definition: xdevfeat.c:1612
uint32_t RI_FEATURES
A data type to specify feature flags within RECEIVER_INFO.
Definition: gpsdefs.h:864
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_bus_lvl_dev
Check if a device is a bus level device.
Definition: xdevfeat.c:371
static int check_ri_feature(RI_FEATURES msk, const RECEIVER_INFO *p_ri)
Check if a device supports a specific feature or API.
Definition: xdevfeat.c:111
Supports the GPS_UCAP_NET_GLB_INFO and GPS_UCAP_NET_RECV_INFO_IDX commands, see User Captures via Net...
Definition: gpsdefs.h:2354
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_pzf
Check if a device can receive DCF77 PZF.
Definition: xdevfeat.c:283
#define _NO_MBG_API
Definition: mbg_tgt.h:1028
uint16_t model_code
Model code according to RECEIVER_INFO::model_code, see GPS_MODEL_CODES.
Definition: xdevfeat.c:44
#define _NO_MBG_API_ATTR
Definition: mbg_tgt.h:1032
RI_FEATURES features
optional features, see GPS_FEATURE_MASKS
Definition: gpsdefs.h:882
#define mbg_rc_is_success(_rc)
Definition: mbgerror.h:618
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_serouts
Definition: xdevfeat.c:484
Supports tainted config structures, see Tainted config.
Definition: gpsdefs.h:2359
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_user_auth
Check if a device supports user authentification.
Definition: xdevfeat.c:1675
Supports database(s), see Database(s).
Definition: gpsdefs.h:2367
#define GPS_HAS_EVT_LOG
see GPS_FEAT_EVT_LOG
Definition: gpsdefs.h:2299
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_fw_rollback
Check if a device supports a factory reset via TLV.
Definition: xdevfeat.c:1147
uint8_t b[(1024/8)]
Definition: gpsdefs.h:2440
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_ntp_license
Check if a device supports NTP license infos via TLV.
Definition: xdevfeat.c:1233
uint8_t n_com_ports
number of on-board serial ports
Definition: gpsdefs.h:887
#define GPS_HAS_NET_CFG
see GPS_FEAT_NET_CFG
Definition: gpsdefs.h:2304
A structure used to store extended device features.
Definition: gpsdefs.h:2438
Supports extended revision information, see Extended system information.
Definition: gpsdefs.h:2350
Supports commands GPS_REGISTER_PUSH_MSGS and GPS_UNREGISTER_PUSH_MSGS.
Definition: gpsdefs.h:2360
#define GPS_HAS_RAW_IRIG_DATA
see GPS_FEAT_RAW_IRIG_DATA
Definition: gpsdefs.h:2293
#define GPS_HAS_IRIG_RX
see GPS_FEAT_IRIG_RX
Definition: gpsdefs.h:2279
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_net_cfg
Check if a device supports the new NET_CFG API.
Definition: xdevfeat.c:916
Supports GPS_GNSS_MODE.
Definition: gpsdefs.h:2368
int xdevfeat_has_time_ttm(const MBG_XDEV_FEATURES *p_xdf)
Check if the device supports the builtin feature TIME.
Definition: xdevfeat.c:566
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_lne_api
Check if a device supports the LNE API.
Definition: xdevfeat.c:1382
#define GPS_MODEL_HAS_SCU_STAT
see GPS_BIT_MODEL_HAS_SCU_STAT
Definition: gpsdefs.h:1364
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_gpio
Definition: xdevfeat.c:399
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_fw_update
Check if a device supports a firmware update via TLV.
Definition: xdevfeat.c:1169
Supports power control, see Definitions for power control API.
Definition: gpsdefs.h:2349
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_gps_stat_info
Check if a device supports the STAT_INFO structure and API.
Definition: xdevfeat.c:702
1) MBG_TLV_TYPE_BLOB => Unified Firmware Update (UFU) file, see mbg_ufu.h
Definition: gpsdefs.h:18173
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_up_conv
Check if the device has an L1 frequency up converter.
Definition: xdevfeat.c:1776
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_raw_irig_data
Check if a timecode receiver provides MBG_RAW_IRIG_DATA.
Definition: xdevfeat.c:858
uint16_t model_code
identifier for receiver model, see GPS_MODEL_CODES
Definition: gpsdefs.h:875
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_evt_log
Check if a device supports the event log API.
Definition: xdevfeat.c:1013
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_reboot
Check if a device has MBG_XFEATURE_REBOOT.
Definition: xdevfeat.c:1480
Only used as action trigger on a remote site, expects no data.
Definition: gpsdefs.h:18137
#define GPS_MODEL_IS_DCF_AM
see GPS_BIT_MODEL_IS_DCF_AM
Definition: gpsdefs.h:1346
A structure used to query current TLV capabilities.
Definition: gpsdefs.h:18263
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_time_monitor_license
Check if a device supports Time Monitor License infos via TLV.
Definition: xdevfeat.c:1275
MBG_XFEATURE_BUFFER xfeature_buffer
Extended features provided by the device.
Definition: xdevfeat.h:92
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ucap
Check if a device supports the user capture API.
Definition: xdevfeat.c:1038
#define GPS_MODEL_HAS_POS_LLA
see GPS_BIT_MODEL_HAS_POS_LLA
Definition: gpsdefs.h:1355
#define GPS_HAS_IGNORE_LOCK
see GPS_FEAT_IGNORE_LOCK
Definition: gpsdefs.h:2284
#define GPS_MODEL_IS_BUS_LVL_DEV
see GPS_BIT_MODEL_IS_BUS_LVL_DEV
Definition: gpsdefs.h:1352
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_pwr_ctl_api
Check if a device supports the power control API.
Definition: xdevfeat.c:1404
MBG_TLV_INFO tlv_info
TLV info provided by a device.
Definition: xdevfeat.h:93
uint8_t n_ucaps
number of user time capture inputs
Definition: gpsdefs.h:886
#define GPS_MODEL_HAS_TIME_TTM
see GPS_BIT_MODEL_HAS_TIME_TTM
Definition: gpsdefs.h:1356
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_xbp
Check if a device supports the extended binary protocol (XBP) feature.
Definition: xdevfeat.c:1548
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ims
Definition: xdevfeat.c:385
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ant_info
Check if a device supports the ANT_INFO structure and API.
Definition: xdevfeat.c:658
Supports firmware management, see Firmware Management.
Definition: gpsdefs.h:2365
1) MBG_TLV_TYPE_BLOB => MBG_LICENSE_NTP_IDX, see License information
Definition: gpsdefs.h:18157
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_led_api
Check if a device supports the LED API.
Definition: xdevfeat.c:1360
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_msf
Check if a device is an MSF receiver.
Definition: xdevfeat.c:305
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_service
Check if a device supports services.
Definition: xdevfeat.c:1717
uint8_t b[(128/8)]
Definition: gpsdefs.h:18234
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_gps_ignore_lock
Check if a device supports the IGNORE_LOCK structure and API.
Definition: xdevfeat.c:746
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_database
Check if a device supports database(s) feature.
Definition: xdevfeat.c:1569
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_time_scale
Check if a device supports the MBG_TIME_SCALE_INFO structure and API.
Definition: xdevfeat.c:592
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_tzdl
Check if a device supports the TZDL structure and API.
Definition: xdevfeat.c:614
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_lan_ip4
Check if a device supports the old LAN_IP4 API.
Definition: xdevfeat.c:887
#define GPS_MODEL_HAS_ANT_INFO
see GPS_BIT_MODEL_HAS_ANT_INFO
Definition: gpsdefs.h:1359
Supports service management, see Service Management.
Definition: gpsdefs.h:2363
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_gnss
Check if a device supports the GNSS API.
Definition: xdevfeat.c:211
static int check_builtin_feature(BUILTIN_FEATURE_MASK msk, const RECEIVER_INFO *p_ri)
Check if a device supports a specific built-in feature or API.
Definition: xdevfeat.c:81
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_bvar_stat
Check if a device supports the BVAR_STAT structure and API.
Definition: xdevfeat.c:506
#define GPS_MODEL_HAS_ANT_CABLE_LEN
see GPS_BIT_MODEL_HAS_ANT_CABLE_LEN
Definition: gpsdefs.h:1363
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ucap_net
Check if a device supports the user capture via network feature.
Definition: xdevfeat.c:1059
#define MBG_SUCCESS
Error codes used with Meinberg devices and drivers.
Definition: mbgerror.h:259
Supports the GPS_CLK_RES_INFO command, see Clock resolution info.
Definition: gpsdefs.h:2353
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_exec_cmd
Check if a device supports a command execution via TLV.
Definition: xdevfeat.c:1125
Supports generic TLV API, see Meinberg TLV API definitions.
Definition: gpsdefs.h:2345
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_gnss_mode
Check if a device supports GNSS mode feature All GNSS receivers support this feature by default...
Definition: xdevfeat.c:1591
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_cmd_save_cfg
Check if a device supports the GPS_SAVE_CFG command.
Definition: xdevfeat.c:1317
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_file_req
Check if a device supports a file request via TLV.
Definition: xdevfeat.c:1103
#define GPS_MODEL_HAS_TZDL
see GPS_BIT_MODEL_HAS_TZDL
Definition: gpsdefs.h:1357
#define GPS_MODEL_HAS_BVAR_STAT
see GPS_BIT_MODEL_HAS_BVAR_STAT
Definition: gpsdefs.h:1353
#define GPS_HAS_LAN_IP4
see GPS_FEAT_LAN_IP4
Definition: gpsdefs.h:2280
#define GPS_MODEL_HAS_STAT_INFO
see GPS_BIT_MODEL_HAS_STAT_INFO
Definition: gpsdefs.h:1362
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_tzcode
Check if a device supports the TZCODE API.
Definition: xdevfeat.c:636
RECEIVER_INFO receiver_info
Receiver info provided by the device.
Definition: xdevfeat.h:91
1) MBG_TLV_TYPE_STR => Command line call as string
Definition: gpsdefs.h:18145
Entry for a table to specify model-depending built-in features.
Definition: xdevfeat.c:41
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_ufu
Check if a device supports UFU (Unified Firmware Update) via TLV.
Definition: xdevfeat.c:1295
#define GPS_MODEL_BUILTIN_FEATURES
Initializer for a table of built-in features per device.
Definition: gpsdefs.h:1848
#define GPS_HAS_TIME_SCALE
see GPS_FEAT_TIME_SCALE
Definition: gpsdefs.h:2288
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_monitoring
Check if a device supports the extended feature monitoring.
Definition: xdevfeat.c:1338
#define GPS_HAS_PTP
see GPS_FEAT_PTP
Definition: gpsdefs.h:2290
#define GPS_HAS_IRIG_TX
see GPS_FEAT_IRIG_TX
Definition: gpsdefs.h:2278
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_synth
Definition: xdevfeat.c:413
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ntp
Check if a device supports the NTP API.
Definition: xdevfeat.c:969
A structure combining all device feature information.
Definition: xdevfeat.h:88
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_req_ttm
Check if a device has MBG_XFEATURE_REQ_TTM.
Definition: xdevfeat.c:1502
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_tcr
Check if a device is a time code receiver (IRIG or similar)
Definition: xdevfeat.c:235
XDEVFEAT_CHK_SUPP_FNC xdevfeat_supp_tlv_diag_file
Check if a device supports creating / sending a diagnostics file via TLV.
Definition: xdevfeat.c:1191
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_xhe
Check if a device supports the XHE I/O commands.
Definition: xdevfeat.c:1738
uint8_t n_prg_out
number of programmable pulse outputs
Definition: gpsdefs.h:889
Supports TTM requests via GPS_TIME command.
Definition: gpsdefs.h:2355
#define MBG_ERR_NOT_SUPP_BY_DEV
Command or feature not supported by device.
Definition: mbgerror.h:286
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_tlv_api
Check if a device supports the TLV API.
Definition: xdevfeat.c:1081
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_transactions
Check if a device has MBG_XFEATURE_TRANSACTIONS.
Definition: xdevfeat.c:1459
Supports user management, see User Management.
Definition: gpsdefs.h:2362
#define GPS_HAS_IMS
see GPS_FEAT_IMS
Definition: gpsdefs.h:2301
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_mbg_os
Definition: xdevfeat.c:468
Supports I/O port structures, see IO Port API.
Definition: gpsdefs.h:2356
#define GPS_MODEL_IS_MSF
see GPS_BIT_MODEL_IS_MSF
Definition: gpsdefs.h:1348
#define GPS_MODEL_IS_JJY
see GPS_BIT_MODEL_IS_JJY
Definition: gpsdefs.h:1349
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_xmulti_ref
Check if a device supports the extended multi ref features including multi instances.
Definition: xdevfeat.c:1527
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_jjy
Check if a device is a JJY receiver.
Definition: xdevfeat.c:327
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_sv_info
Check if the device supports the SV_INFO structures.
Definition: xdevfeat.c:837
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_push_msgs
Check if a device supports (un)registering for push messages.
Definition: xdevfeat.c:1633
static __mbg_inline int check_feat_supp_byte_array(int bit_num, const uint8_t *p, int max_bytes)
Check if a specific bit is set in a byte array.
Definition: xdevfeat.h:161
#define GPS_MODEL_IS_DCF_PZF
see GPS_BIT_MODEL_IS_DCF_PZF
Definition: gpsdefs.h:1347
static int check_tlv_feat_supp(int tlv_feat_type, const MBG_TLV_INFO *tlv_info)
Check if a specific bit is set in the TLV&#39;s byte array.
Definition: xdevfeat.c:155
A structure used to identify a device type and supported features.
Definition: gpsdefs.h:873
#define MBG_ERR_DEV_NOT_SUPP
Device type not supported by driver.
Definition: mbgerror.h:284
#define GPS_MODEL_IS_GNSS
see GPS_BIT_MODEL_IS_GNSS
Definition: gpsdefs.h:1344
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_io_ports
Definition: xdevfeat.c:1437
XDEVFEAT_CHK_SUPP_FNC xdevfeat_has_ext_sys_info
Check if a device supports the MBG_EXT_SYS_INFO command.
Definition: xdevfeat.c:1426
#define GPS_HAS_XBP
see GPS_FEAT_XBP
Definition: gpsdefs.h:2307
#define GPS_MODEL_HAS_TZCODE
see GPS_BIT_MODEL_HAS_TZCODE
Definition: gpsdefs.h:1358
XDEVFEAT_CHK_SUPP_FNC xdevfeat_is_dcf
Check if a device is a DCF77 AM receiver.
Definition: xdevfeat.c:259
#define GPS_MODEL_HAS_MBG_OS
see GPS_BIT_MODEL_HAS_MBG_OS
Definition: gpsdefs.h:1367
#define GPS_MODEL_HAS_ENABLE_FLAGS
see GPS_BIT_MODEL_HAS_ENABLE_FLAGS
Definition: gpsdefs.h:1361
#define GPS_MODEL_HAS_UP_CONV
see GPS_BIT_MODEL_HAS_UP_CONV
Definition: gpsdefs.h:1366
#define GPS_MODEL_HAS_POS_XYZ
see GPS_BIT_MODEL_HAS_POS_XYZ
Definition: gpsdefs.h:1354