summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Burnicki <martin.burnicki@meinberg.de>2022-12-21 15:20:06 +0100
committerMartin Burnicki <martin.burnicki@meinberg.de>2022-12-21 15:20:06 +0100
commite87224fb8e7bbb6059ae2d895421357dc29ac32b (patch)
treec1ca79c7a03c4a77acd4a3d4c772f979597e42c6
parentcbd37aa045eb180008ef06a9293ed6c46b128a30 (diff)
downloadmbgtools-lx-e87224fb8e7bbb6059ae2d895421357dc29ac32b.tar.gz
mbgtools-lx-e87224fb8e7bbb6059ae2d895421357dc29ac32b.zip
Improve detection of the 'clear ucap buffer' feature
-rw-r--r--mbglib/common/pcpsdefs.h6
-rw-r--r--mbglib/common/pcpsdrvr.c12
2 files changed, 15 insertions, 3 deletions
diff --git a/mbglib/common/pcpsdefs.h b/mbglib/common/pcpsdefs.h
index 13d147e..ad8ead4 100644
--- a/mbglib/common/pcpsdefs.h
+++ b/mbglib/common/pcpsdefs.h
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: pcpsdefs.h 1.73 2022/03/16 16:18:59 martin.burnicki REL_M $
+ * $Id: pcpsdefs.h 1.74 2022/12/20 17:45:05 martin.burnicki REL_M $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -10,6 +10,8 @@
*
* -----------------------------------------------------------------------
* $Log: pcpsdefs.h $
+ * Revision 1.74 2022/12/20 17:45:05 martin.burnicki
+ * Fixed a wrong comment.
* Revision 1.73 2022/03/16 16:18:59 martin.burnicki
* Reserved PCI ID range 0x0A00 to 0x0AFF for Oregano PCI cards.
* Revision 1.72 2022/02/10 12:08:50 martin.burnicki
@@ -798,7 +800,7 @@ typedef uint8_t PCPS_STATUS_PORT;
#define PCPS_READ_GPS_DATA 0x50 ///< (r-) Read large data structure, see ::PC_GPS_CMD_CODES.
#define PCPS_WRITE_GPS_DATA 0x51 ///< (-w) Write large data structure, see ::PC_GPS_CMD_CODES.
-#define PCPS_CLR_UCAP_BUFF 0x60 ///< (-w) No param., clear on-board capture FIFO, only if ::_pcps_has_ucap.
+#define PCPS_CLR_UCAP_BUFF 0x60 ///< (-w) No param., clear on-board capture FIFO, only if ::_pcps_can_clear_ucap.
#define PCPS_GIVE_UCAP_ENTRIES 0x61 ///< (r-) Read ::PCPS_UCAP_ENTRIES, only if ::_pcps_has_ucap.
#define PCPS_GIVE_UCAP_EVENT 0x62 ///< (r-) Return oldest event as ::PCPS_HR_TIME, only if ::_pcps_has_ucap.
diff --git a/mbglib/common/pcpsdrvr.c b/mbglib/common/pcpsdrvr.c
index fe30501..4a87417 100644
--- a/mbglib/common/pcpsdrvr.c
+++ b/mbglib/common/pcpsdrvr.c
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: pcpsdrvr.c 1.79 2022/12/16 17:18:24 martin.burnicki REL_M $
+ * $Id: pcpsdrvr.c 1.80 2022/12/20 17:39:58 martin.burnicki REL_M $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -64,6 +64,8 @@
*
* -----------------------------------------------------------------------
* $Log: pcpsdrvr.c $
+ * Revision 1.80 2022/12/20 17:39:58 martin.burnicki
+ * Improved check whether clearing the capture buffer is supported.
* Revision 1.79 2022/12/16 17:18:24 martin.burnicki
* Also check the RECEIVER_INFO to see if time capture inputs are provided.
* Revision 1.78 2022/08/23 15:38:16 martin.burnicki
@@ -4684,8 +4686,16 @@ void check_receiver_info_and_features( PCPS_DDEV *pddev )
// This may happen if only specific hardware variants of a device
// support this, e.g. variants of the TCR180USB.
if ( p_ri->n_ucaps > 0 )
+ {
pddev->dev.cfg.features |= PCPS_HAS_UCAP;
+ // Unless the device is one of 2 very old models, we can assume
+ // that the command PCPS_CLR_UCAP_BUFF is also supported.
+ // These old devices have already been checked before.
+ if ( ( _pcps_ddev_type_num( pddev ) != PCPS_TYPE_GPS167PCI ) &&
+ ( _pcps_ddev_type_num( pddev ) != PCPS_TYPE_GPS168PCI ) )
+ pddev->dev.cfg.features |= PCPS_CAN_CLR_UCAP_BUFF;
+ }
#if REPORT_CFG
_mbg_kdd_msg_3( REPORT_CFG_LOG_LVL, "%s v%03X initial PCPS features: 0x%08lX",