summaryrefslogtreecommitdiff
path: root/mbglib/common/mbgextio.h
diff options
context:
space:
mode:
Diffstat (limited to 'mbglib/common/mbgextio.h')
-rw-r--r--mbglib/common/mbgextio.h2105
1 files changed, 2050 insertions, 55 deletions
diff --git a/mbglib/common/mbgextio.h b/mbglib/common/mbgextio.h
index bbe6be9..adb0154 100644
--- a/mbglib/common/mbgextio.h
+++ b/mbglib/common/mbgextio.h
@@ -1,7 +1,7 @@
/**************************************************************************
*
- * $Id: mbgextio.h 1.8 2011/04/08 11:26:09 martin REL_M $
+ * $Id: mbgextio.h 1.16.1.11 2015/07/22 16:02:08 martin TEST $
*
* Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany
*
@@ -10,6 +10,68 @@
*
* -----------------------------------------------------------------------
* $Log: mbgextio.h $
+ * Revision 1.16.1.11 2015/07/22 16:02:08 martin
+ * Started to support variable USB endpoint numbers.
+ * Revision 1.16.1.10 2015/07/14 15:10:27 martin
+ * Updated function prototypes.
+ * Revision 1.16.1.9 2015/07/14 13:24:59 martin
+ * Updated function prototypes.
+ * Revision 1.16.1.8.1.10 2015/05/27 09:23:57 daniel
+ * Fixed USB_DIRECT_IO stuff
+ * Revision 1.16.1.8.1.9 2015/05/21 11:01:00 martin
+ * Updated function prototypes.
+ * Revision 1.16.1.8.1.8 2015/05/19 13:20:59 daniel
+ * Preliminary support for USB_DIRECT_IO
+ * Revision 1.16.1.8.1.6 2015/05/13 09:50:51 martin
+ * Added mbgextio_xmt_ack() and mbgextio_xmt_nack().
+ * Revision 1.16.1.8.1.5 2015/04/15 15:36:19 martin
+ * Doxygen fixes.
+ * Revision 1.16.1.8.1.4 2015/03/03 10:14:50 martin
+ * Updated function prototypes.
+ * Revision 1.16.1.8.1.3 2014/11/04 15:09:37 martin
+ * More XBP stuff.
+ * Revision 1.16.1.8.1.2 2014/11/04 11:31:17 martin
+ * Revision 1.16.1.8.1.1 2014/10/30 16:14:07 martin
+ * Started to support XBP addressing.
+ * Revision 1.16.1.8 2014/10/30 16:03:09 martin
+ * Doxygen fixes.
+ * Revision 1.16.1.7 2014/10/30 14:47:06 martin
+ * Support FTDI devices.
+ * Updated USB support.
+ * Updated function prototypes.
+ * Revision 1.16.1.6 2013/11/28 15:51:48Z marvin
+ * Added mbgextio_get_ntp_peer_state_idx.
+ * Revision 1.16.1.5 2013/11/26 16:06:48Z marvin
+ * Added mbgextio_get_ntp_sys_state.
+ * Revision 1.16.1.4 2013/11/21 07:46:52Z marvin
+ * Added mbgextio_xmt_secu_settings.
+ * Revision 1.16.1.3 2013/11/12 12:12:05Z marvin
+ * Changed calls for NTP info and settings.
+ * Revision 1.16.1.2 2013/10/14 08:54:22Z marvin
+ * Added mbgextio_set_ntp_clnt_mode_cfg.
+ * Revision 1.16.1.1 2013/09/25 11:10:10Z marvin
+ * Added support for NTP and PTP.
+ * Revision 1.16 2013/09/10 08:56:35Z marvin
+ * Changed Doxygen comments.
+ * Revision 1.15 2013/09/05 15:11:40Z marvin
+ * Added support for LAN interface setup.
+ * Added support for PTP state.
+ * Added support for XMR.
+ * Added support for NTP info.
+ * Revision 1.14 2013/09/02 15:16:49Z marvin
+ * Added support for XMR (get multi ref info, set multi ref settings)
+ * Revision 1.13 2013/08/28 11:01:42Z marvin
+ * Added read and set tr_distance and gnss_mode.
+ * Revision 1.12 2013/04/11 14:18:47Z Gregoire
+ * new prototypes for sending havequick rx and tx settings to clock
+ * Revision 1.11 2013/02/06 15:44:57Z martin
+ * Updated function prototypes.
+ * Revision 1.10 2013/02/01 15:59:42 martin
+ * Updated function prototypes.
+ * Revision 1.9 2012/10/30 16:19:19 martin
+ * Support USB I/O.
+ * Started to migrate to opaque stuctures.
+ * Updated function prototypes.
* Revision 1.8 2011/04/08 11:26:09 martin
* New macros _ttm_time_set_unavail() and _ttm_time_is_avail().
* Revision 1.7 2009/10/02 14:21:08 martin
@@ -38,7 +100,10 @@
/* Other headers to be included */
+#include <mbg_arch.h>
#include <gpsserio.h>
+#include <mbggeo.h>
+
#include <time.h>
#ifdef _MBGEXTIO
@@ -48,7 +113,6 @@
#define _ext extern
#endif
-
/* Start of header body */
@@ -71,11 +135,34 @@
#endif // _USE_SERIAL_IO
+#if !_USE_SERIAL_IO_FTDI
+ // just to avoid build errors if USB not supported
+ #define FT_STATUS int
+ #define FT_HANDLE int
+#endif
+
+
+#if !_USE_USB_IO
+ // just to avoid build errors if USB not supported
+ struct usb_device
+ {
+ int dummy;
+ };
+
+ typedef int MBG_USB_DEVICE;
+
+#endif
+
+
#if !defined MBGEXTIO_READ_BUFFER_SIZE
- #if _USE_SOCKET_IO
+ #if _USE_SOCKET_IO || _USE_USB_IO
#define MBGEXTIO_READ_BUFFER_SIZE 1000
#else
- #define MBGEXTIO_READ_BUFFER_SIZE 10
+ #if defined _USE_USB_DIRECT_IO
+ #define MBGEXTIO_READ_BUFFER_SIZE 512 // Max. USB transfer buffer size
+ #else
+ #define MBGEXTIO_READ_BUFFER_SIZE 10
+ #endif
#endif
#endif
@@ -111,57 +198,1965 @@ extern "C" {
/* This section was generated automatically */
/* by MAKEHDR, do not remove the comments. */
- _MBG_API_ATTR int _MBG_API mbgextio_open_socket( MBG_MSG_CTL *pmctl, const char *host, const char *passwd ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_open_serial( MBG_MSG_CTL *pmctl, const char *dev, uint32_t baud_rate, const char *framing ) ;
- _MBG_API_ATTR void _MBG_API mbgextio_close_connection( MBG_MSG_CTL *pmctl ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_force_connection( const char *dev ) ;
- _MBG_API_ATTR void _MBG_API mbgextio_set_char_rcv_timeout( MBG_MSG_CTL *pmctl, ulong new_timeout ) ;
- _MBG_API_ATTR ulong _MBG_API mbgextio_get_char_rcv_timeout( const MBG_MSG_CTL *pmctl ) ;
- _MBG_API_ATTR void _MBG_API mbgextio_set_msg_rcv_timeout( MBG_MSG_CTL *pmctl, ulong new_timeout ) ;
- _MBG_API_ATTR ulong _MBG_API mbgextio_get_msg_rcv_timeout( const MBG_MSG_CTL *pmctl ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_xmt_msg( MBG_MSG_CTL *pmctl, GPS_CMD cmd, const void *p, int n_bytes ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_rcv_msg( MBG_MSG_CTL *pmctl, GPS_CMD cmd ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_xmt_cmd( MBG_MSG_CTL *pmctl, GPS_CMD cmd ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_xmt_cmd_us( MBG_MSG_CTL *pmctl, GPS_CMD cmd, uint16_t us ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_req_data( MBG_MSG_CTL *pmctl, GPS_CMD cmd ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_req_data_idx( MBG_MSG_CTL *pmctl, GPS_CMD cmd, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_receiver_info( MBG_MSG_CTL *pmctl, RECEIVER_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_sw_rev( MBG_MSG_CTL *pmctl, SW_REV *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_bvar_stat( MBG_MSG_CTL *pmctl, BVAR_STAT *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_time( MBG_MSG_CTL *pmctl, TTM *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_time( MBG_MSG_CTL *pmctl, const TTM *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_pos_lla( MBG_MSG_CTL *pmctl, LLA lla ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_pos_lla( MBG_MSG_CTL *pmctl, const LLA lla ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_tzdl( MBG_MSG_CTL *pmctl, TZDL *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_tzdl( MBG_MSG_CTL *pmctl, const TZDL *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_port_parm( MBG_MSG_CTL *pmctl, PORT_PARM *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_port_parm( MBG_MSG_CTL *pmctl, const PORT_PARM *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_synth( MBG_MSG_CTL *pmctl, SYNTH *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_synth( MBG_MSG_CTL *pmctl, const SYNTH *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_ant_info( MBG_MSG_CTL *pmctl, ANT_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_ucap( MBG_MSG_CTL *pmctl, TTM *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_enable_flags( MBG_MSG_CTL *pmctl, ENABLE_FLAGS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_enable_flags( MBG_MSG_CTL *pmctl, const ENABLE_FLAGS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_stat_info( MBG_MSG_CTL *pmctl, STAT_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_ant_cable_len( MBG_MSG_CTL *pmctl, ANT_CABLE_LEN *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_ant_cable_len( MBG_MSG_CTL *pmctl, const ANT_CABLE_LEN *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_irig_tx_info( MBG_MSG_CTL *pmctl, IRIG_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_irig_tx_settings( MBG_MSG_CTL *pmctl, const IRIG_SETTINGS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_irig_rx_info( MBG_MSG_CTL *pmctl, IRIG_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_irig_rx_settings( MBG_MSG_CTL *pmctl, const IRIG_SETTINGS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_ref_offs( MBG_MSG_CTL *pmctl, MBG_REF_OFFS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_ref_offs( MBG_MSG_CTL *pmctl, const MBG_REF_OFFS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_debug_status( MBG_MSG_CTL *pmctl, MBG_DEBUG_STATUS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_opt_info( MBG_MSG_CTL *pmctl, MBG_OPT_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_opt_settings( MBG_MSG_CTL *pmctl, const MBG_OPT_SETTINGS *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_str_type_info_idx( MBG_MSG_CTL *pmctl, STR_TYPE_INFO_IDX *p, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_port_info_idx( MBG_MSG_CTL *pmctl, PORT_INFO_IDX *p, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_port_settings_idx( MBG_MSG_CTL *pmctl, const PORT_SETTINGS *p, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_pout_info_idx( MBG_MSG_CTL *pmctl, POUT_INFO_IDX *p, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_pout_settings_idx( MBG_MSG_CTL *pmctl, const POUT_SETTINGS *p, uint16_t idx ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_clr_ucap_buff( MBG_MSG_CTL *pmctl ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_get_time_scale_info( MBG_MSG_CTL *pmctl, MBG_TIME_SCALE_INFO *p ) ;
- _MBG_API_ATTR int _MBG_API mbgextio_set_time_scale_settings( MBG_MSG_CTL *pmctl, const MBG_TIME_SCALE_SETTINGS *p ) ;
+ /**
+ * @brief Send security settings for the socket connection
+ *
+ * If new_passwd is not a NULL pointer, the old_passwd
+ * will be overwritten by the new_passwd.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] old_passwd Pointer to the current LAN port password of the device
+ * @param[in] new_passwd Pointer to the new LAN port password for the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_socket
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_xmt_secu_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const char *old_passwd, const char *new_passwd ) ;
+
+ /**
+ * @brief Open a binary communication channel via a LAN/socket connection
+ *
+ * @param[in] host DNS name or IP address of the target device
+ * @param[out] ppmctl Address of a pointer to a ::MBG_MSG_CTL control structure
+ * allocated and set up by this call.
+ * Pointer is set to NULL on error.
+ * @param[in] passwd Password string for the encrypted communication
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_open_serial_ftdi
+ * @see ::mbgextio_open_usb
+ * @see ::mbgextio_open_usb_direct_io
+ * @see ::mbgextio_close_connection
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_open_socket( const char *host, MBG_MSG_CTL **ppmctl, const char *passwd ) ;
+
+ /**
+ * @brief Open a binary communication channel using direct serial I/O
+ *
+ * Commonly used serial parameters are 19200/8N1, see
+ * ::MBG_DEFAULT_BAUDRATE and ::MBG_DEFAULT_FRAMING.
+ * Some newer devices may also support ::MBG_DEFAULT_BAUDRATE_HS.
+ *
+ * @param[in] dev Name of the serial port to which the device is connected,
+ * depending on the naming conventions of the host system.
+ * @param[out] ppmctl Address of a pointer to a ::MBG_MSG_CTL control structure
+ * allocated and set up by this call. Set to NULL on error.
+ * @param[in] baud_rate Baud rate used for serial communication
+ * @param[in] framing Framing used for serial communication
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_force_conn_serial
+ * @see ::mbgextio_open_serial_ftdi
+ * @see ::mbgextio_force_conn_serial_ftdi
+ * @see ::mbgextio_open_socket
+ * @see ::mbgextio_open_usb
+ * @see ::mbgextio_open_usb_direct_io
+ * @see ::mbgextio_close_connection
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_open_serial( const char *dev, MBG_MSG_CTL **ppmctl, uint32_t baud_rate, const char *framing ) ;
+
+ /**
+ * @brief Get the port handle of a serial FTDI device
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return the port handle retrieved from the message control structure
+ */
+ _NO_MBG_API_ATTR FT_HANDLE _MBG_API mbgextio_get_serial_ftdi_port_handle( MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Open a binary communication channel using serial FTDI D2xx port
+ *
+ * Commonly used serial parameters are 19200/8N1, see
+ * ::MBG_DEFAULT_BAUDRATE and ::MBG_DEFAULT_FRAMING.
+ * Some newer devices may also support ::MBG_DEFAULT_BAUDRATE_HS.
+ *
+ * @param[in] device_num device number from a list set up by FT_ListDevices()
+ * @param[out] ppmctl Address of a pointer to a ::MBG_MSG_CTL control structure
+ * allocated and set up by this call. Set to NULL on error.
+ * @param[in] baud_rate Baud rate used for serial communication
+ * @param[in] framing Framing used for serial communication
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_force_conn_serial_ftdi
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_force_conn_serial
+ * @see ::mbgextio_open_socket
+ * @see ::mbgextio_open_usb
+ * @see ::mbgextio_open_usb_direct_io
+ * @see ::mbgextio_close_connection
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_open_serial_ftdi( int device_num, MBG_MSG_CTL **ppmctl, uint32_t baud_rate, const char *framing ) ;
+
+ /**
+ * @brief Open a binary communication channel using direct USB I/O
+ *
+ * @param[in] usbdev The USB device to communicate with.
+ * @param[out] ppmctl Address of a pointer to a ::MBG_MSG_CTL control structure
+ * allocated and set up by this call. Set to NULL on error.
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_socket
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_open_serial_ftdi
+ * @see ::mbgextio_close_connection
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_open_usb( const MBG_USB_DEVICE *usbdev, MBG_MSG_CTL **ppmctl ) ;
+
+ /**
+ * @brief Open a binary communication channel using direct USB I/O
+ *
+ * Currently it is only supported by Linux systems since a file like
+ * USB device (e.g. "/dev/mbgims") is required and needs to support
+ * basic I/O operations like write, read, etc...
+ *
+ * @param[in] dev Path to file like USB device
+ * @param[in] flags Bitwise OR flags of access modes like W,RW,RO,etc.
+ * @param[out] ppmctl Address of a pointer to a ::MBG_MSG_CTL control structure
+ * allocated and set up by this call. Set to NULL on error.
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_socket
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_open_serial_ftdi
+ * @see ::mbgextio_open_usb
+ * @see ::mbgextio_open_usb_direct_io
+ * @see ::mbgextio_close_connection
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_open_usb_direct_io( const char *dev, int flags, MBG_MSG_CTL **ppmctl ) ;
+
+ /**
+ * @brief Close a binary communication channel and release resources
+ *
+ * Closes a binary communication channel which has been opened by one
+ * of the mbgextio_open_...() functions and releases the buffers which
+ * have been allocated when the channel was opened.
+ *
+ * The pointer to the message control structure passed by address is set
+ * to NULL after the channel has been closed and the resources have
+ * been released.
+ *
+ * @param[in,out] ppmctl Address of a pointer to a message control structure
+ * created when the communication channel was opened
+ * by one of the mbgextio_open_...() calls.
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_socket
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_open_serial_ftdi
+ * @see ::mbgextio_open_usb
+ * @see ::mbgextio_open_usb_direct_io
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_close_connection( MBG_MSG_CTL **ppmctl ) ;
+
+ /**
+ * @brief Try to force a serial connection to a device
+ *
+ * A device's serial port may have been configured to work by default
+ * in a way which is not appropriate for binary communication, e.g. using
+ * a low communication speed, or some framing like "7E2" which messes up
+ * binary data since the parity bit overrides a data bit.
+ *
+ * This function sends a special ASCII string to a device which lets the device
+ * temporarily switch to a specific baud rate and 8N1 framing which is usually
+ * used for binary communication, see ::MBG_DEFAULT_BAUDRATE,
+ * ::MBG_DEFAULT_BAUDRATE_HS, and ::MBG_DEFAULT_FRAMING.
+ *
+ * Since the current settings of the device's serial port are unknown this
+ * this command is sent in all common combinations of baud rates and
+ * framings.
+ *
+ * If the connected device supports this it should be possible to open
+ * the serial communication channel using the default parameters after
+ * this function has finished.
+ *
+ * @param[in] dev Name of the serial port to which the device is connected,
+ * depending on the naming conventions of the target system
+ *
+ * @return One of the negative @ref MBG_ERROR_CODES on error,
+ * else the determined baud rate.
+ *
+ * @see ::mbgextio_open_serial
+ * @see ::mbgextio_open_serial_ftdi
+ */
+ _NO_MBG_API_ATTR long _MBG_API mbgextio_force_conn_serial( const char *dev ) ;
+
+ /**
+ * @brief Try to force a serial connection to a device via the FTDI API
+ *
+ * A device's serial port may have been configured to work by default
+ * in a way which is not appropriate for binary communication, e.g. using
+ * a low communication speed, or some framing like "7E2" which messes up
+ * binary data since the parity bit overrides a data bit.
+ *
+ * This function sends a special ASCII string to a device which lets the device
+ * temporarily switch to a specific baud rate and 8N1 framing which is usually
+ * used for binary communication, see ::MBG_DEFAULT_BAUDRATE,
+ * ::MBG_DEFAULT_BAUDRATE_HS, and ::MBG_DEFAULT_FRAMING.
+ *
+ * Since the current settings of the device's serial port are unknown this
+ * this command is sent in all common combinations of baud rates and
+ * framings.
+ *
+ * If the connected device supports this it should be possible to open
+ * the serial communication channel using the default parameters after
+ * this function has finished.
+ *
+ * @param[in] device_num device number from a list set up by FT_ListDevices()
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_open_serial_ftdi
+ */
+ _NO_MBG_API_ATTR long _MBG_API mbgextio_force_conn_serial_ftdi( int device_num ) ;
+
+ /**
+ * @brief Retrieve address of the allocated receive buffer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Address of the allocated receive buffer
+ *
+ * @see ::mbgextio_get_rcv_buffer_size
+ * @see ::mbgextio_get_xmt_buffer_addr
+ * @see ::mbgextio_get_xmt_buffer_size
+ */
+ _NO_MBG_API_ATTR MBG_MSG_BUFF * _MBG_API mbgextio_get_rcv_buffer_addr( MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Retrieve size of the allocated receive buffer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Size of the allocated receive buffer
+ *
+ * @see ::mbgextio_get_rcv_buffer_addr
+ * @see ::mbgextio_get_xmt_buffer_addr
+ * @see ::mbgextio_get_xmt_buffer_size
+ */
+ _NO_MBG_API_ATTR size_t _MBG_API mbgextio_get_rcv_buffer_size( MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Retrieve address of the allocated transmit buffer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Address of the allocated transmit buffer
+ *
+ * @see ::mbgextio_get_rcv_buffer_addr
+ * @see ::mbgextio_get_rcv_buffer_size
+ * @see ::mbgextio_get_xmt_buffer_size
+ */
+ _NO_MBG_API_ATTR MBG_MSG_BUFF * _MBG_API mbgextio_get_xmt_buffer_addr( MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Retrieve size of the allocated transmit buffer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Size of the allocated transmit buffer
+ *
+ * @see ::mbgextio_get_rcv_buffer_addr
+ * @see ::mbgextio_get_rcv_buffer_size
+ * @see ::mbgextio_get_xmt_buffer_addr
+ */
+ _NO_MBG_API_ATTR size_t _MBG_API mbgextio_get_xmt_buffer_size( MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Set character receive timeout value
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] new_timeout New timeout value [ms]
+ *
+ * @see ::mbgextio_get_char_rcv_timeout
+ * @see ::mbgextio_set_msg_rcv_timeout
+ * @see ::mbgextio_get_msg_rcv_timeout
+ */
+ _NO_MBG_API_ATTR void _MBG_API mbgextio_set_char_rcv_timeout( MBG_MSG_CTL *pmctl, ulong new_timeout ) ;
+
+ /**
+ * @brief Get character receive timeout value
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Current timeout value [ms]
+ *
+ * @see ::mbgextio_set_char_rcv_timeout
+ * @see ::mbgextio_set_msg_rcv_timeout
+ * @see ::mbgextio_get_msg_rcv_timeout
+ */
+ _NO_MBG_API_ATTR ulong _MBG_API mbgextio_get_char_rcv_timeout( const MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Set message receive timeout value
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] new_timeout New timeout value [ms]
+ *
+ * @see ::mbgextio_set_char_rcv_timeout
+ * @see ::mbgextio_get_char_rcv_timeout
+ * @see ::mbgextio_get_msg_rcv_timeout
+ */
+ _NO_MBG_API_ATTR void _MBG_API mbgextio_set_msg_rcv_timeout( MBG_MSG_CTL *pmctl, ulong new_timeout ) ;
+
+ /**
+ * @brief Get message receive timeout value
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ *
+ * @return Current timeout value [ms]
+ *
+ * @see ::mbgextio_set_char_rcv_timeout
+ * @see ::mbgextio_get_char_rcv_timeout
+ * @see ::mbgextio_set_msg_rcv_timeout
+ */
+ _NO_MBG_API_ATTR ulong _MBG_API mbgextio_get_msg_rcv_timeout( const MBG_MSG_CTL *pmctl ) ;
+
+ /**
+ * @brief Generic reception of a binary message
+ *
+ * @note A certain message type to be waited for can be specified by
+ * passing one of the ::GPS_CMD_CODES.
+ * If the special cmd code ::GPS_WILDCARD is specified the function returns
+ * successfully after *any* type of binary message has been received.
+ *
+ * //##++ TODO: callback function to handle asynchronous spontaneous messages
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES, or ::GPS_WILDCARD
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_rcv_msg
+ * @see ::mbgextio_xmt_msg //##++++
+ * @see ::mbgextio_xmt_cmd
+ * @see ::mbgextio_req_data
+ * @see ::mbgextio_xmt_cmd_us
+ * @see ::mbgextio_req_data_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_rcv_msg( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd ) ;
+
+ /**
+ * @brief Set up and send a generic binary message
+ *
+ * @note This function should preferably be used only as low level function
+ * called from within more specific functions used to send specific data.
+ * If this function is called directly with a buffer to be sent then the
+ * transmit mutex is acquired by this function. However, other (higher level)
+ * API functions which set up the transmit buffer directly have to acquire
+ * the transmit mutex by themselves before they set up the transmit buffer,
+ * and pass a NULL pointer to indicate the transmit buffer has already been
+ * set up. The correct number of bytes to send (n_bytes) has to be specified
+ * anyway, though.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES
+ * @param[in] p Address of a data structure according to the specified cmd parameter, or NULL
+ * @param[in] n_bytes Size of the data structure addressed by parameter p
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_xmt_msg( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd, const void *p, uint16_t n_bytes ) ;
+
+ /**
+ * @brief Transmit a command-only message without additional data.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_xmt_msg
+ * @see ::mbgextio_rcv_msg
+ * @see ::mbgextio_req_data
+ * @see ::mbgextio_xmt_cmd_us
+ * @see ::mbgextio_req_data_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_xmt_cmd( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd ) ;
+
+ /**
+ * @brief Transmit a message without a single ushort (uint16_t) parameter
+ *
+ * The ushort parameter is often used to send an index value when requesting
+ * a certain element of an array of same data structures.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES
+ * @param[in] us The ushort parameter for the command code
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_xmt_msg
+ * @see ::mbgextio_rcv_msg
+ * @see ::mbgextio_xmt_cmd
+ * @see ::mbgextio_req_data
+ * @see ::mbgextio_req_data_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_xmt_cmd_us( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd, uint16_t us ) ;
+
+ /**
+ * @brief Transmit a message without a single ushort (16 bit) parameter
+ *
+ * The ushort parameter is often used to send an index value when requesting
+ * a specific element of an array of data structures.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_xmt_msg
+ * @see ::mbgextio_rcv_msg
+ * @see ::mbgextio_xmt_cmd
+ * @see ::mbgextio_xmt_cmd_us
+ * @see ::mbgextio_req_data_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_req_data( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd ) ;
+
+ /**
+ * @brief Read a specific element of an array of data structures
+ *
+ * The type of data is implicitely associated with the cmd parameter.
+ * Usually the number of supported array elements has to be determined
+ * by some other means, e.g. from a field in the ::RECEIVER_INFO structure.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] cmd One of the command codes enumerated in ::GPS_CMD_CODES
+ * @param[in] idx The index of the array element to read
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_xmt_msg
+ * @see ::mbgextio_rcv_msg
+ * @see ::mbgextio_xmt_cmd
+ * @see ::mbgextio_req_data
+ * @see ::mbgextio_xmt_cmd_us
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_req_data_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, GPS_CMD cmd, uint16_t idx ) ;
+
+ /**
+ * @brief Read a receiver info structure
+ *
+ * The ::RECEIVER_INFO should be read at first to identify the connected
+ * device and determine the basic features supported by the device.
+ *
+ * @note Some very old devices may not provide a ::RECEIVER_INFO,
+ * so ::mbgextio_setup_receiver_info should be called preferably
+ * to read the receiver info using this function, if supported,
+ * or set up a default structure for devices which don't provide
+ * a receiver info.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_setup_receiver_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_receiver_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, RECEIVER_INFO *p ) ;
+
+ /**
+ * @brief Setup a receiver info structure
+ *
+ * The ::RECEIVER_INFO should be read at first to identify the connected
+ * device and determine the basic features supported by the device.
+ *
+ * @note Some very old devices may not provide a ::RECEIVER_INFO.
+ * This function tries to read the ::RECEIVER_INFO from the device,
+ * and sets up a default structure if the device doesn't support this.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_receiver_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_setup_receiver_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, RECEIVER_INFO *p ) ;
+
+ /**
+ * @brief Read the software revision
+ *
+ * @deprecated This function is deprecated since the ::SW_REV structure
+ * is also a member of the ::RECEIVER_INFO. This call may be required,
+ * though, for very old devices which don't support the ::RECEIVER_INFO.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_setup_receiver_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_sw_rev( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, SW_REV *p ) ;
+
+ /**
+ * @brief Read the status of buffered variables
+ *
+ * @note Only supported if ::GPS_MODEL_HAS_BVAR_STAT
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_bvar_stat( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, BVAR_STAT *p ) ;
+
+ /**
+ * @brief Read the current time as ::TTM strucure
+ *
+ * @note This function is only supported by GPS receivers.
+ *
+ * The returned time is not very accurate since the response time
+ * transmission delay can't be determmined.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_time( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, TTM *p ) ;
+
+ /**
+ * @brief Set the device's time by sending a ::TTM strucure
+ *
+ * @note The function is not supported by all devices. Time has to be
+ * passed as local time according to the device's ::TZDL settings.
+ * New time is only set with some tens of ms accuracy.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_time( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const TTM *p ) ;
+
+ /**
+ * @brief Set the device's position by sending an ::LLA array
+ *
+ * @note This function is only supported by GPS receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] lla Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_pos_lla( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const LLA lla ) ;
+
+ /**
+ * @brief Read the current receiver position as ::LLA array
+ *
+ * @note This function is only supported by GPS receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] lla Pointer to the data array to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_pos_lla( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, LLA lla ) ;
+
+ /**
+ * @brief Read the current receiver position as ::XYZ array
+ *
+ * @note This function is only supported by GPS receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] xyz Pointer to the data array to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_pos_xyz( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XYZ xyz ) ;
+
+ /**
+ * @brief Read the current receiver position as ::POS structure
+ *
+ * @note This function is only supported by GPS receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p_pos Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_pos( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, POS *p_pos ) ;
+
+ /**
+ * @brief Read the local time conversion parameters in ::TZDL format
+ *
+ * @note Some devices may not support ::TZDL settings
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_tzdl( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, TZDL *p ) ;
+
+ /**
+ * @brief Set the local time conversion parameters in ::TZDL format
+ *
+ * @note Some devices may not support ::TZDL settings
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_tzdl( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const TZDL *p ) ;
+
+ /**
+ * @brief Read serial port parameters in ::PORT_PARM format
+ *
+ * @deprecated This function is deprecated since the ::PORT_PARM structure
+ * supports only 2 serial ports, and does not not support configuration
+ * of a string type. The function ::mbgextio_get_serial_settings should
+ * be used instead.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_serial_settings
+ * @see ::mbgextio_save_serial_settings
+ * @see ::mbgextio_set_port_parm
+ * @see ::mbgextio_setup_receiver_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_port_parm( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PORT_PARM *p ) ;
+
+ /**
+ * @brief Send serial port parameters in ::PORT_PARM format
+ *
+ * @deprecated This function is deprecated since the ::PORT_PARM structure
+ * supports only 2 serial ports, and does not not support configuration
+ * of a string type. The function ::mbgextio_save_serial_settings should
+ * be used instead.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_serial_settings
+ * @see ::mbgextio_save_serial_settings
+ * @see ::mbgextio_get_port_parm
+ * @see ::mbgextio_setup_receiver_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_port_parm( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const PORT_PARM *p ) ;
+
+ /**
+ * @brief Read the frequency synthesizer settings
+ *
+ * @note Some devices may not provide a frequency synthesizer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_synth
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_synth( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, SYNTH *p ) ;
+
+ /**
+ * @brief Write the frequency synthesizer settings
+ *
+ * @note Some devices may not provide a frequency synthesizer
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_synth
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_synth( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const SYNTH *p ) ;
+
+ /**
+ * @brief Read the GPS antenna info structure
+ *
+ * @note This is only supported by GPS receivers.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ant_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, ANT_INFO *p ) ;
+
+ /**
+ * @brief Read a user capture event in ::TTM format
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_clr_ucap_buff
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ucap( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, TTM *p ) ;
+
+ /**
+ * @brief Read the enable flags controlling when output signals are enabled
+ *
+ * @note Some devices may not support ::ENABLE_FLAGS
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_enable_flags
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_enable_flags( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, ENABLE_FLAGS *p ) ;
+
+ /**
+ * @brief Send the enable flags controlling when output signals are enabled
+ *
+ * @note Some devices may not support ::ENABLE_FLAGS
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_enable_flags
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_enable_flags( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const ENABLE_FLAGS *p ) ;
+
+ /**
+ * @brief Read GPS status info
+ *
+ * @note This is only supported by GPS receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_stat_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, STAT_INFO *p ) ;
+
+ /**
+ * @brief Read the configured length of the antenna cable
+ *
+ * This is only supported by GPS/GNSS receivers, check ::GPS_MODEL_HAS_ANT_CABLE_LENGTH
+ *
+ * @note Some older devices may not reply to this request unless
+ * the application has registered itself as terminal application
+ * (GPS_AUTO_ON is not sufficient).
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_ant_cable_len
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ant_cable_len( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, ANT_CABLE_LEN *p ) ;
+
+ /**
+ * @brief Send the GPS antenna cable length configuration
+ *
+ * This is only supported by GPS/GNSS receivers, check ::GPS_MODEL_HAS_ANT_CABLE_LENGTH
+
+ * @note Different devices may accept different maximum values, so the
+ * written value should be re-read using ::mbgextio_get_ant_cable_len
+ * to check if the parameter has been accepted.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ant_cable_len
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ant_cable_len( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const ANT_CABLE_LEN *p ) ;
+
+ /**
+ * @brief Read configuration info and supported features of the device's IRIG output
+ *
+ * @note This is only supported if ::GPS_HAS_IRIG_TX is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_irig_tx_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_irig_tx_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, IRIG_INFO *p ) ;
+
+ /**
+ * @brief Send new configuration settings for the device's IRIG output
+ *
+ * @note This is only supported if ::GPS_HAS_IRIG_TX is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_irig_tx_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_irig_tx_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const IRIG_SETTINGS *p ) ;
+
+ /**
+ * @brief Read configuration info and supported features for the device's IRIG input
+ *
+ * @note This is only supported if ::GPS_HAS_IRIG_RX is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_irig_rx_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_irig_rx_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, IRIG_INFO *p ) ;
+
+ /**
+ * @brief Send new configuration settings for the device's IRIG input
+ *
+ * @note This is only supported if ::GPS_HAS_IRIG_RX is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_irig_rx_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_irig_rx_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const IRIG_SETTINGS *p ) ;
+
+ /**
+ * @brief Read current ref offset to %UTC configuration
+ *
+ * @note This is only supported if ::GPS_HAS_REF_OFFS is set in ::RECEIVER_INFO::features,
+ * usually with IRIG receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_ref_offs
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ref_offs( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_REF_OFFS *p ) ;
+
+ /**
+ * @brief Send new ref offset to %UTC settings
+ *
+ * @note This is only supported if ::GPS_HAS_REF_OFFS is set in ::RECEIVER_INFO::features,
+ * usually with IRIG receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ref_offs
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ref_offs( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_REF_OFFS *p ) ;
+
+ /**
+ * @brief Read current debug status
+ *
+ * @note This is only supported if ::GPS_HAS_DEBUG_STATUS is set in ::RECEIVER_INFO::features,
+ * usually with IRIG receivers
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_debug_status( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_DEBUG_STATUS *p ) ;
+
+ /**
+ * @brief Read current optional settings and supported options
+ *
+ * @note This is only supported if ::GPS_HAS_OPT_SETTINGS is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_opt_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_opt_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_OPT_INFO *p ) ;
+
+ /**
+ * @brief Send new optional settings flags
+ *
+ * @note This is only supported if ::GPS_HAS_OPT_SETTINGS is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_opt_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_opt_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_OPT_SETTINGS *p ) ;
+
+ /**
+ * @brief Read information on a specific supported string format
+ *
+ * Retrieve a single entry from an array of supported string types.
+ * The number of supported string types is specified in ::RECEIVER_INFO::n_str_type.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::RECEIVER_INFO::n_str_type - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_all_str_type_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_str_type_info_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, STR_TYPE_INFO_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read an array of all supported string types
+ *
+ * The number of supported string types is specified in ::RECEIVER_INFO::n_str_type.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] stii An array which can hold at least ::RECEIVER_INFO::n_str_type entries
+ * @param[in] p_ri Pointer to a valid ::RECEIVER_INFO structure
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_str_type_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_all_str_type_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, STR_TYPE_INFO_IDX stii[], const RECEIVER_INFO *p_ri ) ;
+
+ /**
+ * @brief Read current settings and capabilities of a specific serial port
+ *
+ * The number of serial ports provided by the device is specified in ::RECEIVER_INFO::n_com_ports.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::RECEIVER_INFO::n_com_ports - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_all_port_info
+ * @see ::mbgextio_set_port_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_port_info_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PORT_INFO_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read an array of current settings and capabilities of all serial ports
+ *
+ * The number of serial ports provided by the device is specified in ::RECEIVER_INFO::n_com_ports.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] pii An array which can hold at least ::RECEIVER_INFO::n_com_ports entries
+ * @param[in] p_ri Pointer to a valid ::RECEIVER_INFO structure
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_port_info_idx
+ * @see ::mbgextio_set_port_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_all_port_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PORT_INFO_IDX pii[], const RECEIVER_INFO *p_ri ) ;
+
+ /**
+ * @brief Send configuration settings for a specific serial port
+ *
+ * The number of serial ports provided by the device is specified in ::RECEIVER_INFO::n_com_ports.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ * @param[in] idx Index of the serial port to be configured, 0..::RECEIVER_INFO::n_com_ports - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_port_info_idx
+ * @see ::mbgextio_get_all_port_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_port_settings_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const PORT_SETTINGS *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read current settings and capabilities of a specific programmable pulse output
+ *
+ * The number of supported pulse outputs is specified in ::RECEIVER_INFO::n_prg_out.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::RECEIVER_INFO::n_prg_out - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_all_pout_info
+ * @see ::mbgextio_set_pout_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_pout_info_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, POUT_INFO_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read an array of current settings and capabilities of all programmable pulse outputs
+ *
+ * The number of supported pulse outputs is specified in ::RECEIVER_INFO::n_prg_out.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] pii An array which can hold at least ::RECEIVER_INFO::n_prg_out entries
+ * @param[in] p_ri Pointer to a valid ::RECEIVER_INFO structure
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_pout_info_idx
+ * @see ::mbgextio_set_pout_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_all_pout_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, POUT_INFO_IDX *pii, const RECEIVER_INFO *p_ri ) ;
+
+ /**
+ * @brief Send configuration settings for a specific programmable pulse output
+ *
+ * The number of supported pulse outputs is specified in ::RECEIVER_INFO::n_prg_out.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ * @param[in] idx Index of the pulse output to be configured, 0..RECEIVER_INFO::n_prg_out - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_pout_info_idx
+ * @see ::mbgextio_get_all_pout_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_pout_settings_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const POUT_SETTINGS *p, uint16_t idx ) ;
+
+ /**
+ * @brief Clear the user capture event buffer on-board the device
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ucap
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_clr_ucap_buff( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr ) ;
+
+ /**
+ * @brief Read time scale configuration parameters
+ *
+ * @note Some devices may not support a configurable time scale
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_time_scale_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_time_scale_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_TIME_SCALE_INFO *p ) ;
+
+ /**
+ * @brief Send new time scale configuration settings
+ *
+ * @note Some devices may not support a configurable time scale
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_time_scale_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_time_scale_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_TIME_SCALE_SETTINGS *p ) ;
+
+ /**
+ * @brief Clear the on-board event log
+ *
+ * @note Some devices don't provide an on-board event log
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_num_evt_log_entries
+ * @see ::mbgextio_get_first_evt_log_entry
+ * @see ::mbgextio_get_next_evt_log_entry
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_clr_evt_log( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr ) ;
+
+ /**
+ * @brief Read the current number of entries in the on-board event log
+ *
+ * @note Some devices don't provide an on-board event log
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_clr_evt_log
+ * @see ::mbgextio_get_first_evt_log_entry
+ * @see ::mbgextio_get_next_evt_log_entry
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_num_evt_log_entries( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_NUM_EVT_LOG_ENTRIES *p ) ;
+
+ /**
+ * @brief Return the first entry from the on-board event log
+ *
+ * This resets an internal counter, so subsequent calls to
+ * ::mbgextio_get_next_evt_log_entry will retrieve the following entries.
+ *
+ * @note Some devices don't provide an on-board event log
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_clr_evt_log
+ * @see ::mbgextio_get_num_evt_log_entries
+ * @see ::mbgextio_get_next_evt_log_entry
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_first_evt_log_entry( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_EVT_LOG_ENTRY *p ) ;
+
+ /**
+ * @brief Return the next entry from the on-board event log
+ *
+ * This increments an internal counter, so subsequent calls will
+ * return subsequent entries. ::mbgextio_get_first_evt_log_entry
+ * should be called first to reset the counter and retrieve the
+ * oldest log entry.
+ *
+ * @note Some devices don't provide an on-board event log
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_clr_evt_log
+ * @see ::mbgextio_get_num_evt_log_entries
+ * @see ::mbgextio_get_first_evt_log_entry
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_next_evt_log_entry( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_EVT_LOG_ENTRY *p ) ;
+
+ /**
+ * @brief Read the current IMS state and supported IMS features
+ *
+ * @note This is only supported if ::GPS_HAS_IMS is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ims_sensor_state_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ims_state( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_IMS_STATE *p ) ;
+
+ /**
+ * @brief Read sensor values from a specified sensor on the device
+ *
+ * Info on supported sensors can be retrieved using ::mbgextio_get_ims_state.
+ * Valid range for the sensor index is [0..::MBG_IMS_STATE::num_sensors - 1].
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx The index of the array element to read
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ims_state
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ims_sensor_state_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_IMS_SENSOR_STATE_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Set the XMR holdover interval
+ *
+ * @todo In which case is this supported?
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_holdover_interval_counter
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_holdover_interval( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const XMR_HOLDOVER_INTV *p ) ;
+
+ /**
+ * @brief Read the XMR holdover interval counter
+ *
+ * @todo In which case is this supported?
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_holdover_interval
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_holdover_interval_counter( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XMR_HOLDOVER_INTV *p ) ;
+
+ /**
+ * @brief Read the local time conversion configuration in ::TZCODE format
+ *
+ * @note Some devices may not support ::TZCODE configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_tzcode
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_tzcode( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, TZCODE *p ) ;
+
+ /**
+ * @brief Set the local time conversion configuration in ::TZCODE format
+ *
+ * @note Some devices may not support ::TZCODE configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_tzcode
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_tzcode( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const TZCODE *p ) ;
+
+ /**
+ * @brief Send new configuration settings for the device's HAVEQUICK output
+ *
+ * @note This is only supported if ::GPS_HAS_HAVEQUICK is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_hq_tx_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, HAVEQUICK_SETTINGS *p ) ;
+
+ /**
+ * @brief Send new configuration settings for the device's HAVEQUICK input
+ *
+ * @note This is only supported if ::MULTI_REF_HAVEQUICK is > 0 in ::XMULTI_REF_INSTANCES::n_inst //##+++++++++++++++++++++++ ???
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_hq_rx_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, HAVEQUICK_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the distance from transmitter ::TR_DISTANCE format
+ *
+ * @note Some devices may not support ::TR_DISTANCE configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_tr_distance
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_tr_distance( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, TR_DISTANCE *p ) ;
+
+ /**
+ * @brief Set the transmitter distance (km) in ::TR_DISTANCE format
+ *
+ * @note Some devices may not support ::TR_DISTANCE configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_tr_distance
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_tr_distance( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const TR_DISTANCE *p ) ;
+
+ /**
+ * @brief Read current GNSS mode settings and supported features
+ *
+ * @note Some devices may not support GNSS configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to a ::MBG_GNSS_MODE_INFO structure to be filled up
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_gnss_mode_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_gnss_mode_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_GNSS_MODE_INFO *p ) ;
+
+ /**
+ * @brief Write GNSS mode settings
+ *
+ * @note Some devices may not support GNSS configuration
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[in] p Pointer to a ::MBG_GNSS_MODE_SETTINGS structure to be sent
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_gnss_mode_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_gnss_mode_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_GNSS_MODE_SETTINGS *p ) ;
+
+ /**
+ * @brief Read an array of all supported string types //##+++++++++++++++++++++++++++++++++++++++++++++++ TODO
+ *
+ * The number of supported string types is specified in ::RECEIVER_INFO::n_str_type.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] stii An array which can hold at least ::RECEIVER_INFO::n_str_type entries
+ * @param[in] p_ri Pointer to a valid ::RECEIVER_INFO structure
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_str_type_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_all_gnss_sat_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, STR_TYPE_INFO_IDX stii[], const RECEIVER_INFO *p_ri ) ;
+
+ /**
+ * @brief Fill up a GNSS info structure //##+++++++++++++++++++++++++++++++++++++++++++++++ TODO
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[out] p_si Pointer to a ::STAT_INFO the data structure to return the received data
+ * @param[out] p_gmi Index of the NTP peer state to be configured, 0..::NTP_CLNT_MODE_INFO::n_supp_peers - 1
+ * @param[out] p_gsii Blah ... //##++++++++++ TODO
+ * @param[in] p_ri Pointer to a valid ::RECEIVER_INFO structure
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_sys_state
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ */
+ int mbgextio_chk_get_gnss_info( MBG_MSG_CTL *pmctl, STAT_INFO *p_si, MBG_GNSS_MODE_INFO *p_gmi, GNSS_SAT_INFO_IDX *p_gsii, const RECEIVER_INFO *p_ri ) ;
+
+ /**
+ * @brief Read the supported XMR features in ::XMULTI_REF_INFO_IDX format
+ *
+ * Only if ::GPS_HAS_XMULTI_REF is set in ::RECEIVER_INFO::features.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_xmr_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_xmr_info_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XMULTI_REF_INFO_IDX *p ) ;
+
+ /**
+ * @brief Read the supported XMR features ::XMULTI_REF_STATUS_IDX format
+ *
+ * @note Only for devices which supports Multi references
+ * @note GPS_HAS_XMULTI_REF feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_xmr_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_xmr_status_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XMULTI_REF_STATUS_IDX *p ) ;
+
+ /**
+ * @brief Save the supported XMR features ::XMULTI_REF_INFO_IDX format
+ *
+ * @note Some devices may not support Multi Refernce Sources
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_xmr_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const XMULTI_REF_SETTINGS_IDX *p ) ;
+
+ /**
+ * @brief Read the lan interface configuration ::LAN_IF_INFO format
+ *
+ * @note ptp or xmr with ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_lan_if_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, LAN_IF_INFO *p ) ;
+
+ /**
+ * @brief Read the lan ipv4 configuration state ::IP4_SETTINGS format
+ *
+ * @note ptp or xmr with ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ip4_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, IP4_SETTINGS *p ) ;
+
+ /**
+ * @brief Save the current ipv4 settings ::IP4_SETTINGS format
+ *
+ * @note ptp or xmr with ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ip4_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const IP4_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the current lan ipv4 state ::IP4_SETTINGS format
+ *
+ * @note ptp or xmr with ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ip4_state( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, IP4_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the current state of PTP device ::PTP_STATE format
+ *
+ * @note ptp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ptp_state( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PTP_STATE *p ) ;
+
+ /**
+ * @brief Read the ptp configuration ::PTP_CFG_INFO format
+ *
+ * @note ptp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ptp_cfg_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PTP_CFG_INFO *p ) ;
+
+ /**
+ * @brief Read the ptp configuration ::PTP_UC_MASTER_CFG_LIMITS format
+ *
+ * @note ptp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ptp_uc_master_cfg_limits( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PTP_UC_MASTER_CFG_LIMITS *p ) ;
+
+ /**
+ * @brief Read the ptp configuration ::ALL_PTP_UC_MASTER_INFO_IDX format
+ *
+ * @note ptp feature must set and read number of ptp unicast masters before.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] ptp_uc_master_info_idx Pointer to an array of ::PTP_UC_MASTER_INFO_IDX structures to be filled up
+ * @param[in] ptp_uc_master_cfg_limits Pointer to a ::PTP_UC_MASTER_CFG_LIMITS structure read before
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see //##+++++++++++++ TODO
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_all_ptp_uc_master_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, PTP_UC_MASTER_INFO_IDX *ptp_uc_master_info_idx, const PTP_UC_MASTER_CFG_LIMITS *ptp_uc_master_cfg_limits ) ;
+
+ /**
+ * @brief Send configuration settings for PTP
+ *
+ * @note This is only supported by PTP devices
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ptp_cfg_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ptp_cfg_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const PTP_CFG_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the ntp global information ::NTP_GLB_INFO format
+ *
+ * @note ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_set_ntp_peer_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ntp_glb_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, NTP_GLB_INFO *p ) ;
+
+ /**
+ * @brief Send the NTP global configuration
+ *
+ * @note This is only supported by NTP devices
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ant_cable_len
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ntp_glb_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const NTP_GLB_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the ntp global information ::NTP_CLNT_MODE_INFO format
+ *
+ * @note ntp feature must set
+ * @note ntp client mode must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_glb_info
+ * @see ::mbgextio_set_ntp_clnt_mode_cfg
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_set_ntp_peer_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ntp_clnt_mode_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, NTP_CLNT_MODE_INFO *p ) ;
+
+ /**
+ * @brief Send the NTP client mode configuration
+ *
+ * @note This is only supported by NTP devices
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_glb_info
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_set_ntp_peer_settings_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ntp_clnt_mode_cfg( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const NTP_CLNT_MODE_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the ntp peer settings of current idx ::NTP_PEER_SETTINGS format
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the NTP peer settings to be configured, 0 ... NTP_CLNT_MODE_INFO::n_supp_peers - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_glb_info
+ * @see ::mbgextio_set_ntp_peer_settings_idx
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ntp_peer_settings_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, NTP_PEER_SETTINGS_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Send configuration settings for a specific NTP peer
+ *
+ * The number of supported NTP peers is specified in ::NTP_CLNT_MODE_INFO::n_supp_peers -1.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ * @param[in] idx Index of the NTP peer to be configured, 0 ... NTP_CLNT_MODE_INFO::n_supp_peers - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_glb_info
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_ntp_peer_settings_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const NTP_PEER_SETTINGS *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the current system state of ntp device ::NTP_SYS_STATE format
+ *
+ * @note ntp feature must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_ntp_clnt_mode_cfg
+ * @see ::mbgextio_get_ntp_glb_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ntp_sys_state( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, NTP_SYS_STATE *p ) ;
+
+ /**
+ * @brief Read the NTP peer state of current idx ::NTP_PEER_STATE format
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the NTP peer state to be configured, 0 ... NTP_CLNT_MODE_INFO::n_supp_peers - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_ntp_sys_state
+ * @see ::mbgextio_get_ntp_peer_settings_idx
+ * @see ::mbgextio_get_ntp_clnt_mode_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_ntp_peer_state_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, NTP_PEER_STATE_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the network global config information ::MBG_NET_GLB_CFG_INFO format
+ *
+ * @note GPS_HAS_NET_CFG must set
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_net_glb_cfg_settings
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_net_glb_cfg_info( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_NET_GLB_CFG_INFO *p ) ;
+
+ /**
+ * @brief Set the device's global network configuration settings
+ *
+ * @note The function is not supported by all devices. //##++++++++++++
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_net_glb_cfg_info
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_net_glb_cfg_settings( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_NET_GLB_CFG_SETTINGS *p ) ;
+
+ /**
+ * @brief Read the network dns server ::MBG_IP_ADDR_IDX format
+ *
+ * The number of DNS server provided by the device is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srvr
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srvr - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_net_dns_srvr_idx
+ * @see ::mbgextio_get_net_stat_dns_srvr_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_net_dns_srvr_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_IP_ADDR_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Send the network DNS server address in ::MBG_IP_ADDR format
+ *
+ * The number of DNS search domains supported by the device
+ * is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ * @param[in] idx Index of the serial port to be configured, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srvr - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_net_dns_srvr_idx
+ * @see ::mbgextio_get_net_stat_dns_srvr_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_net_dns_srvr_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_IP_ADDR *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the network DNS search domain in ::MBG_NET_NAME_IDX format
+ *
+ * The number of DNS search domains supported by the device
+ * is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_net_dns_srch_dom_idx
+ * @see ::mbgextio_get_net_stat_dns_srch_dom_stat_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_net_dns_srch_dom_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_NET_NAME_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Send the network DNS search domain in ::MBG_NET_NAME format
+ *
+ * The number of DNS search domains supported by the device
+ * is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ * @param[in] idx Index of the serial port to be configured, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_net_dns_srch_dom_idx
+ * @see ::mbgextio_get_net_stat_dns_srch_dom_stat_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_net_dns_srch_dom_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, const MBG_NET_NAME *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the current network DNS server in ::MBG_IP_ADDR_IDX format
+ *
+ * The number of DNS servers supported by the device
+ * is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srvr
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srvr - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_net_dns_srvr_idx
+ * @see ::mbgextio_set_net_dns_srvr_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_net_stat_dns_srvr_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_IP_ADDR_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the current network DNS search domain in ::MBG_NET_NAME_IDX format
+ *
+ * The number of DNS search domains supported by the device
+ * is specified in ::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::MBG_NET_GLB_CFG_INFO::num_dns_srch_dom - 1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_net_dns_srch_dom_idx
+ * @see ::mbgextio_get_net_dns_srch_dom_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_net_stat_dns_srch_dom_stat_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, MBG_NET_NAME_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the ::XBP_LIMITS to check which XBP features are supported
+ *
+ * @note Only supported if ::GPS_HAS_XBP is set in ::RECEIVER_INFO::features
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_xbp_node_limits
+ * @see ::mbgextio_get_xbp_node_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_xbp_limits( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XBP_LIMITS *p ) ;
+
+ /**
+ * @brief Read the ::XBP_NODE_LIMITS to check how many ports are provided
+ *
+ * @note Only supported if ::XBP_FEAT_MASK_NODES is set in ::XBP_LIMITS::features.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_xbp_limits
+ * @see ::mbgextio_get_xbp_node_info_idx
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_xbp_node_limits( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XBP_NODE_LIMITS *p ) ;
+
+ /**
+ * @brief Read the ::XBP_NODE_INFO for a specific node in ::XBP_NODE_INFO_IDX format
+ *
+ * The supported number of nodes is provided by ::XBP_NODE_LIMITS::node_count.
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ * @param[in] idx Index of the array element to be retrieved, 0..::XBP_NODE_LIMITS::node_count-1
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_xbp_limits
+ * @see ::mbgextio_get_xbp_node_limits
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_xbp_node_info_idx( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr, XBP_NODE_INFO_IDX *p, uint16_t idx ) ;
+
+ /**
+ * @brief Read the ::XBP_NODE_INFO for a specific node in ::XBP_NODE_INFO_IDX format
+ * //##+++++++++++++++++++++++++
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_setup_xbp_node_list( MBG_MSG_CTL *pmctl, const XBP_ADDR *p_addr ) ;
+
+ /**
+ * @brief Read a ::UTC parameter structure from a device.
+ *
+ * The ::UTC parameter structure contains the current UTC/GPS time offset
+ * as well as information on an eventually upcoming leap second.
+ *
+ * @note Only supported by GPS/GNSS and some PZF receivers //##+++++++ TODO Associated feature flag?
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to return the received data
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_set_utc_param
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_get_utc_param( MBG_MSG_CTL *pmctl, XBP_ADDR *p_addr, UTC *p ) ;
+
+ /**
+ * @brief Write a ::UTC parameter structure to a device.
+ *
+ * The ::UTC parameter structure contains the current UTC/GPS time offset
+ * as well as information on an eventually upcoming leap second.
+ *
+ * @note Only supported by GPS/GNSS and some PZF receivers //##+++++++ TODO Associated feature flag?
+ *
+ * @param[in,out] pmctl Pointer to a valid message control structure
+ * @param[in] p_addr Pointer to an XBP address specifier, or NULL
+ * @param[out] p Pointer to the data structure to be sent to the device
+ *
+ * @return One of the @ref MBG_RETURN_CODES
+ *
+ * @see ::mbgextio_get_utc_param
+ */
+ _NO_MBG_API_ATTR int _MBG_API mbgextio_set_utc_param( MBG_MSG_CTL *pmctl, XBP_ADDR *p_addr, const UTC *p ) ;
+
/* ----- function prototypes end ----- */