diff options
author | Martin Burnicki <martin.burnicki@meinberg.de> | 2022-12-21 15:20:06 +0100 |
---|---|---|
committer | Martin Burnicki <martin.burnicki@meinberg.de> | 2022-12-21 15:20:06 +0100 |
commit | e87224fb8e7bbb6059ae2d895421357dc29ac32b (patch) | |
tree | c1ca79c7a03c4a77acd4a3d4c772f979597e42c6 | |
parent | cbd37aa045eb180008ef06a9293ed6c46b128a30 (diff) | |
download | mbgtools-lx-e87224fb8e7bbb6059ae2d895421357dc29ac32b.tar.gz mbgtools-lx-e87224fb8e7bbb6059ae2d895421357dc29ac32b.zip |
Improve detection of the 'clear ucap buffer' feature
-rw-r--r-- | mbglib/common/pcpsdefs.h | 6 | ||||
-rw-r--r-- | mbglib/common/pcpsdrvr.c | 12 |
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", |