summaryrefslogtreecommitdiffstats
path: root/ucs2-lib/inc/ucs_inic.h
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-05-26 18:45:56 +0200
committerFulup Ar Foll <fulup@iot.bzh>2017-05-26 18:45:56 +0200
commitd2e42029ec04c3f224580f8007cdfbbfe0fc47a6 (patch)
treead2ccf167cf7997c84191d41e6ba55cb2efd6bed /ucs2-lib/inc/ucs_inic.h
parent18e393e1443fd4c38b34979888fb55d30448cf31 (diff)
Initial Commit
Diffstat (limited to 'ucs2-lib/inc/ucs_inic.h')
-rw-r--r--ucs2-lib/inc/ucs_inic.h858
1 files changed, 858 insertions, 0 deletions
diff --git a/ucs2-lib/inc/ucs_inic.h b/ucs2-lib/inc/ucs_inic.h
new file mode 100644
index 0000000..159dbf4
--- /dev/null
+++ b/ucs2-lib/inc/ucs_inic.h
@@ -0,0 +1,858 @@
+/*------------------------------------------------------------------------------------------------*/
+/* UNICENS V2.1.0-3491 */
+/* Copyright (c) 2017 Microchip Technology Germany II GmbH & Co. KG. */
+/* */
+/* This program is free software: you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation, either version 2 of the License, or */
+/* (at your option) any later version. */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
+/* */
+/* You may also obtain this software under a propriety license from Microchip. */
+/* Please contact Microchip for further information. */
+/*------------------------------------------------------------------------------------------------*/
+
+/*!
+ * \file
+ * \brief Internal header file of class CInic.
+ *
+ * \cond UCS_INTERNAL_DOC
+ * \defgroup G_UCS_DIAG_TYPES Diagnosis Referred Types
+ * \brief Referred types used by Diagnosis functions.
+ * \ingroup G_INIC
+ *
+ * \addtogroup G_INIC
+ * @{
+ */
+
+#ifndef UCS_INIC_H
+#define UCS_INIC_H
+
+/*------------------------------------------------------------------------------------------------*/
+/* Includes */
+/*------------------------------------------------------------------------------------------------*/
+#include "ucs_inic_pb.h"
+#include "ucs_ret_pb.h"
+#include "ucs_dec.h"
+#include "ucs_transceiver.h"
+#include "ucs_misc.h"
+#include "ucs_obs.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*------------------------------------------------------------------------------------------------*/
+/* Definitions and Enumerators */
+/*------------------------------------------------------------------------------------------------*/
+#define FB_INIC 0x00U
+#define FB_EXC 0x0AU
+
+/*! \brief Defines the max number of invalid resources to be destroyed by the INIC in one command. */
+#define MAX_INVALID_HANDLES_LIST 0x0AU
+
+/*! \brief Data Type which describes the operation mode of the INIC. */
+typedef enum Inic_AttachState_
+{
+ INIC_ATS_PROTECTED = 0x00U, /*!< \brief Interface is detached */
+ INIC_ATS_ATTACHED = 0x01U, /*!< \brief Interface is attached */
+ INIC_ATS_REMOTE = 0x02U /*!< \brief Interface is remote controlled
+ * (only possible for configuration interface) */
+} Inic_AttachState_t;
+
+/*! \brief Control commands used for the INIC resource monitor. */
+typedef enum Ucs_Resource_MonitorCtrl_
+{
+ UCS_INIC_RES_MON_CTRL_RESET = 0x00U /*!< \brief Requests the INIC resource monitor to go back to
+ * the OK state and release the MUTE pin of the INIC.
+ */
+} Ucs_Resource_MonitorCtrl_t;
+
+/*! \brief Control commands used for the INIC notification
+ */
+typedef enum Ucs_Inic_NotificationCtrl_
+{
+ UCS_INIC_NTF_SET_ALL = 0x00U, /*!< \brief Requests the INIC to enter the DeviceID in all properties
+ * that support notification.
+ */
+ UCS_INIC_NTF_SET_FUNC = 0x01U, /*!< \brief Requests the INIC enter the DeviceID for the functions
+ * listed.
+ */
+ UCS_INIC_NTF_CLEAR_ALL = 0x02U, /*!< \brief Requests the INIC to delete DeviceID from all functions of
+ * the notification matrix.
+ */
+ UCS_INIC_NTF_CLEAR_FUNC = 0x03U /*!< \brief Requests the INIC to delete DeviceID from the function listed.
+ *
+ */
+} Ucs_Inic_NotificationCtrl_t;
+
+/*! \brief State of the INIC resource monitor
+ */
+typedef enum Ucs_Resource_MonitorState_
+{
+ UCS_INIC_RES_MON_STATE_OK = 0x00U, /*!< \brief Default state. There are no action required
+ * from the EHC.
+ */
+ UCS_INIC_RES_MON_STATE_ACT_REQ = 0x01U /*!< \brief There are actions required from the EHC. */
+
+} Ucs_Resource_MonitorState_t;
+
+/*! \brief Data Type which describes the status/result of the Built-in Self-Test (BIST). */
+typedef enum Inic_Bist_
+{
+ /*! \brief Processing */
+ INIC_BIST_PROCESSING = 0x00U,
+ /*! \brief Error detected */
+ INIC_BIST_ERROR = 0x01U,
+ /*! \brief No errors detected */
+ INIC_BIST_OK = 0x02U
+
+} Inic_Bist_t;
+
+/*------------------------------------------------------------------------------------------------*/
+/* INIC FunctionIDs */
+/*------------------------------------------------------------------------------------------------*/
+#define INIC_FID_NOTIFICATION 0x001U /*!< \brief INIC FktID for Notification */
+#define INIC_FID_DEVICE_STATUS 0x220U /*!< \brief INIC FktID for DeviceStatus */
+#define INIC_FID_DEVICE_VERSION 0x221U /*!< \brief INIC FktID for DeviceVersion */
+#define INIC_FID_DEVICE_POWER_OFF 0x222U /*!< \brief INIC FktID for DevicePowerOff */
+#define INIC_FID_DEVICE_ATTACH 0x223U /*!< \brief INIC FktID for DeviceAttach */
+#define INIC_FID_DEVICE_SYNC 0x224U /*!< \brief INIC FktID for DeviceSync */
+#define INIC_FID_MOST_NW_STATUS 0x520U /*!< \brief INIC FktID for MOSTNetworkStatus */
+#define INIC_FID_MOST_NW_CFG 0x521U /*!< \brief INIC FktID for MOSTNetworkConfiguration */
+#define INIC_FID_MOST_NW_FRAME_COUNTER 0x523U /*!< \brief INIC FktID for MOSTNetworkFrameCounter */
+#define INIC_FID_MOST_NW_STARTUP 0x524U /*!< \brief INIC FktID for MOSTNetworkStartup */
+#define INIC_FID_MOST_NW_SHUTDOWN 0x525U /*!< \brief INIC FktID for MOSTNetworkShutdown */
+#define INIC_FID_MOST_NW_TRIGGER_RBD 0x526U /*!< \brief INIC FktID for MOSTNetworkTriggerRBD */
+#define INIC_FID_MOST_NW_RBD_RESULT 0x527U /*!< \brief INIC FktID for MOSTNetworkRBDResult */
+#define INIC_FID_MOST_NW_ATTACH 0x528U /*!< \brief INIC FktID for MOSTNetworkAttach */
+#define INIC_FID_MOST_NW_DETACH 0x529U /*!< \brief INIC FktID for MOSTNetworkDetach */
+#define INIC_FID_MOST_NW_FORCE_NO_AVAIL 0x52BU /*!< \brief INIC FktID for MOSTNetworkForceNotAvailable */
+#define INIC_FID_MOST_NW_SYS_DIAGNOSIS 0x52CU /*!< \brief INIC FktID for MOSTNetworkSystemDiagnosis */
+#define INIC_FID_MOST_NW_SYS_DIAG_END 0x52DU /*!< \brief INIC FktID for MOSTNetworkSystemDiagnosisEnd */
+#define INIC_FID_BACK_CHANNEL_DIAGNOSIS 0x52EU /*!< \brief INIC FktID for BackChannelDiagnosis */
+#define INIC_FID_BACK_CHANNEL_DIAG_END 0x52FU /*!< \brief INIC FktID for BackChannelDiagnosisEnd */
+#define INIC_FID_MOST_PORT_STATUS 0x602U /*!< \brief INIC FktID for MOSTPortStatus */
+#define INIC_FID_MOST_SOCKET_CREATE 0x611U /*!< \brief INIC FktID for MOSTSocketCreate */
+#define INIC_FID_MOST_SOCKET_STATUS 0x612U /*!< \brief INIC FktID for MOSTSocketStatus */
+#define INIC_FID_MLB_PORT_CREATE 0x621U /*!< \brief INIC FktID for MediaLBPortCreate */
+/*#define INIC_FID_MLB_PORT_ALLOCATE_ONLY 0x623U */ /*!< \brief INIC FktID for MediaLBPortAllocateOnly */
+/*#define INIC_FID_MLB_PORT_DEALLOC_ONLY 0x624U */ /*!< \brief INIC FktID for MediaLBDeallocateOnly */
+#define INIC_FID_MLB_SOCKET_CREATE 0x631U /*!< \brief INIC FktID for MediaLBSocketCreate */
+#define INIC_FID_SPI_PORT_CREATE 0x641U /*!< \brief INIC FktID for SPIPortCreate */
+#define INIC_FID_SPI_SOCKET_CREATE 0x651U /*!< \brief INIC FktID for SPISocketCreate */
+#define INIC_FID_USB_PORT_CREATE 0x661U /*!< \brief INIC FktID for USBPortCreate */
+#define INIC_FID_USB_SOCKET_CREATE 0x671U /*!< \brief INIC FktID for USBSocketCreate */
+#define INIC_FID_STREAM_PORT_CONFIG 0x680U /*!< \brief INIC FktID for StreamPortConfiguration */
+#define INIC_FID_STREAM_PORT_CREATE 0x681U /*!< \brief INIC FktID for StreamPortCreate */
+#define INIC_FID_STREAM_PORT_LOOPBACK 0x683U /*!< \brief INIC FktID for StreamPortLoopback */
+#define INIC_FID_STREAM_SOCKET_CREATE 0x691U /*!< \brief INIC FktID for StreamSocketCreate */
+#define INIC_FID_RMCK_PORT_CREATE 0x6A1U /*!< \brief INIC FktID for RMCKPortCreate */
+#define INIC_FID_I2C_PORT_CREATE 0x6C1U /*!< \brief INIC FktID for I2CPortCreate */
+#define INIC_FID_I2C_PORT_READ 0x6C3U /*!< \brief INIC FktID for I2CPortRead */
+#define INIC_FID_I2C_PORT_WRITE 0x6C4U /*!< \brief INIC FktID for I2CPortWrite */
+#define INIC_FID_PCI_PORT_CREATE 0x6E1U /*!< \brief INIC FktID for PCIPortCreate */
+#define INIC_FID_PCI_SOCKET_CREATE 0x6F1U /*!< \brief INIC FktID for PCISocketCreate */
+#define INIC_FID_GPIO_PORT_CREATE 0x701U /*!< \brief INIC FktID for GPIOPortCreate */
+#define INIC_FID_MOST_PORT_ENABLE 0x702U /*!< \brief INIC FktID for MOSTPortEnable */
+#define INIC_FID_GPIO_PORT_PIN_MODE 0x703U /*!< \brief INIC FktID for GPIOPortPinMode */
+#define INIC_FID_GPIO_PORT_PIN_STATE 0x704U /*!< \brief INIC FktID for GPIOPortPinState */
+#define INIC_FID_GPIO_PORT_TRIGGER_EVENT 0x705U /*!< \brief INIC FktID for GPIOPortTriggerEvent */
+#define INIC_FID_RESOURCE_DESTROY 0x800U /*!< \brief INIC FktID for ResourceDestroy */
+#define INIC_FID_RESOURCE_INVALID_LIST 0x801U /*!< \brief INIC FktID for ResourceInvalidList */
+#define INIC_FID_RESOURCE_MONITOR 0x802U /*!< \brief INIC FktID for ResourceMonitor */
+/*#define INIC_FID_PACKET_ATTACH_SOCKETS 0x843U*/ /*!< \brief INIC FktID for PacketAttachSockets */
+/*#define INIC_FID_PACKET_DETACH_SOCKETS 0x844U*/ /*!< \brief INIC FktID for PacketDetachSockets */
+#define INIC_FID_QOS_CREATE 0x851U /*!< \brief INIC FktID for QoSPacketCreate */
+#define INIC_FID_AVP_CREATE 0x861U /*!< \brief INIC FktID for AVPCreate */
+#define INIC_FID_SYNC_CREATE 0x871U /*!< \brief INIC FktID for SyncCreate */
+#define INIC_FID_SYNC_MUTE 0x873U /*!< \brief INIC FktID for SyncMute */
+#define INIC_FID_SYNC_DEMUTE 0x874U /*!< \brief INIC FktID for SyncDemute */
+#define INIC_FID_DFIPHASE_CREATE 0x881U /*!< \brief INIC FktID for DFIPhaseCreate */
+#define INIC_FID_IPC_CREATE 0x891U /*!< \brief INIC FktID for IPCPacketCreate */
+#define INIC_FID_COMBINER_CREATE 0x901U /*!< \brief INIC FktID for CombinerCreate */
+#define INIC_FID_SPLITTER_CREATE 0x911U /*!< \brief INIC FktID for SplitterCreate */
+
+/*------------------------------------------------------------------------------------------------*/
+/* Indexes of SingleSubjects */
+/*------------------------------------------------------------------------------------------------*/
+#define INIC_SSUB_CREATE_CLASS 0U
+#define INIC_SSUB_DEVICE_VERSION 1U
+#define INIC_SSUB_DEVICE_ATTACH 2U
+#define INIC_SSUB_NW_STARTUP 3U
+#define INIC_SSUB_NW_SHUTDOWN 4U
+#define INIC_SSUB_NW_TRIGGER_RBD 5U
+#define INIC_SSUB_NW_ATTACH 6U
+#define INIC_SSUB_NW_DETACH 7U
+#define INIC_SSUB_NW_CHANGE_NODE_ADDR 8U
+#define INIC_SSUB_SYNC_MUTE 9U
+#define INIC_SSUB_SYNC_DEMUTE 10U
+#define INIC_SSUB_NW_RBD_RESULT 11U
+#define INIC_SSUB_NW_FRAME_COUNTER 12U
+#define INIC_SSUB_RESOURCE_DESTROY 13U
+#define INIC_SSUB_RESOURCE_INVAL_LIST 14U
+#define INIC_SSUB_ATTACH_SOCKETS 15U
+#define INIC_SSUB_DETACH_SOCKETS 16U
+#define INIC_SSUB_STREAM_PORT_CONFIG 17U
+#define INIC_SSUB_MOST_PORT_ENABLE 18U
+#define INIC_SSUB_MOST_PORT_EN_FULL_STR 19U
+#define INIC_SSUB_DEVICE_SYNC 20U
+#define INIC_SSUB_NOTIFICATION 21U
+#define INIC_SSUB_NW_CONFIG 22U
+#define INIC_SSUB_GPIO_PIN_MODE 23U
+#define INIC_SSUB_GPIO_PIN_STATE 24U
+#define INIC_SSUB_I2C_PORT_WR 25U
+#define INIC_SSUB_NW_SYS_DIAGNOSIS 26U
+#define INIC_SSUB_NW_SYS_DIAGEND 27U
+#define INIC_SSUB_NW_FORCE_NA 28U
+#define INIC_SSUB_BC_DIAGNOSIS 29U
+#define INIC_SSUB_BC_DIAG_END 30U
+
+#define INIC_NUM_SSUB 31U /* Total number of SingleSubjects */
+
+/*------------------------------------------------------------------------------------------------*/
+/* Indexes of Subjects */
+/*------------------------------------------------------------------------------------------------*/
+#define INIC_SUB_TX_MSG_OBJ_AVAIL 0U
+#define INIC_SUB_NW_STATUS 1U
+#define INIC_SUB_NW_CONFIG 2U
+#define INIC_SUB_MOST_PORT_STATUS 3U
+#define INIC_SUB_RES_MONITOR 4U
+#define INIC_SUB_GPIO_TRIGGER_EVENT 5U
+#define INIC_SUB_DEVICE_STATUS 6U
+
+#define INIC_NUM_SUB 7U /* Total number of Subjects */
+
+/*------------------------------------------------------------------------------------------------*/
+/* Structures */
+/*------------------------------------------------------------------------------------------------*/
+/*! \brief Initialization structure of the INIC module. */
+typedef struct Inic_InitData_
+{
+ CTransceiver *xcvr_ptr; /*!< \brief Reference to a Transceiver instance */
+ CBase *base_ptr; /*!< \brief Reference to UCS base instance */
+ uint16_t tgt_addr; /*!< \brief Address of the target device */
+
+} Inic_InitData_t;
+
+/*! \brief Structure used for returning method results/errors
+ *
+ * Either the data_info or the error part of the structure contain the information.
+ * In case an error happened, data_info will be NULL except for error transmission
+ * where the type of transmission error (BF, CRC, ID, WT, etc.) is registered.
+ * If no error happened, error.code is 0 and error.info is NULL.
+*/
+typedef struct Inic_StdResult_
+{
+ Ucs_StdResult_t result; /*!< \brief Result code and info byte stream */
+ void *data_info; /*!< \brief Reference to result values */
+
+} Inic_StdResult_t;
+
+/*! \brief Structure used for ResourceHandleList */
+typedef struct Inic_ResHandleList_
+{
+ uint16_t *res_handles; /*!< \brief pointer to array containing resource handles */
+ uint8_t num_handles; /*!< \brief number of resource handles */
+
+} Inic_ResHandleList_t;
+
+/*! \brief Structure used for FktIDList */
+typedef struct Inic_FktIdList_
+{
+ uint16_t *fktids_ptr; /*!< \brief pointer to array containing resource handles */
+ uint8_t num_fktids; /*!< \brief number of FktIDs in the list */
+
+} Inic_FktIdList_t;
+
+/*! \brief Structure DeviceStatus */
+typedef struct Inic_DeviceStatus_
+{
+ /*! \brief State of the application interface (ICM/RCM channel synced & DeviceAttach) */
+ Inic_AttachState_t config_iface_state;
+ /*! \brief State of the configuration interface (MCM channel synced) */
+ Inic_AttachState_t app_iface_state;
+ /*! \brief State of power management */
+ Ucs_Inic_PowerState_t power_state;
+ /*! \brief Shows the last reset reason of the INIC. */
+ Ucs_Inic_LastResetReason_t last_reset_reason;
+ /*! \brief Status/Result of the Built-in Self-Test (BIST) */
+ Inic_Bist_t bist;
+
+} Inic_DeviceStatus_t;
+
+/*! \brief Structure MOSTNetworkStatus */
+typedef struct Inic_NetworkStatus_
+{
+ /*! \brief Indicates if the MOST network is available and ready for control/packet
+ * data transmission
+ */
+ Ucs_Network_Availability_t availability;
+ /*! \brief Indicates the sub state to parameter Availability */
+ Ucs_Network_AvailInfo_t avail_info;
+ /*! \brief Indicates the transition cause of the MOST network going from Available to
+ * NotAvailable or vice versa
+ */
+ Ucs_Network_AvailTransCause_t avail_trans_cause;
+ /*! \brief Contains events relating to the functionality for the MOST Network Interface */
+ uint16_t events;
+ /*! \brief Current size of packet bandwidth */
+ uint16_t packet_bw;
+ /*! \brief Node address of the device */
+ uint16_t node_address;
+ /*! \brief Node position of the device */
+ uint8_t node_position;
+ /*! \brief Node position of last device in the ring */
+ uint8_t max_position;
+
+} Inic_NetworkStatus_t;
+
+/*! \brief Structure MOSTNetworkConfiguration */
+typedef struct Inic_NetworkConfig_
+{
+ uint16_t node_address; /*!< \brief NodeAddress */
+ uint16_t group_address; /*!< \brief GroupAddress */
+ uint8_t llrbc; /*!< \brief Control low-level retry block count */
+
+} Inic_NetworkConfig_t;
+
+/*! \brief This structure provides information on the Physical layer test result */
+typedef struct Inic_PhyTestResult_
+{
+ uint16_t most_port_handle; /*!< \brief MOST Port Handle */
+ bool lock_status; /*!< \brief Lock status */
+ uint16_t err_count; /*!< \brief Number of Coding Errors */
+
+} Inic_PhyTestResult_t;
+
+/*! \brief This structure provides information on the Ring Break Diagnosis */
+typedef struct Inic_RbdResult_
+{
+ Ucs_Diag_RbdResult_t result; /*!< \brief RBD result */
+ uint8_t position; /*!< \brief RBD position */
+ uint8_t status; /*!< \brief RBD Status */
+ uint16_t diag_id; /*!< \brief RBDDiagID */
+} Inic_RbdResult_t;
+
+/*! \brief This structure provides Mode information of a GPIO pin */
+typedef struct Inic_GpioPortPinModeStatus_
+{
+ uint16_t gpio_handle; /*!< \brief Port resource handle. */
+ Ucs_Gpio_PinConfiguration_t *cfg_list; /*!< \brief GPIO pin that is to be configured */
+ uint8_t len; /*!< \brief The size of the list */
+
+} Inic_GpioPortPinModeStatus_t;
+
+/*! \brief This structure provides State information of a GPIO pin */
+typedef struct Inic_GpioPortPinStateStatus_
+{
+ uint16_t gpio_handle; /*!< \brief Port resource handle. */
+ uint16_t current_state; /*!< \brief the current state of the GPIO pin */
+ uint16_t sticky_state; /*!< \brief sticky state of all GPIO pins configured as sticky inputs */
+
+} Inic_GpioPortPinStateStatus_t;
+
+/*! \brief This structure provides the status of the GPIO TriggerEvent Reports */
+typedef struct Inic_GpioReportTimeStatus_
+{
+ bool first_report; /*!< \brief \c True if the GPIO trigger events are reported for the first time */
+
+} Inic_GpioReportTimeStatus_t;
+
+/*! \brief This structure provides TriggerEvents information on GPIO port */
+typedef struct Inic_GpioTriggerEventStatus_
+{
+ uint16_t gpio_handle; /*!< \brief Port resource handle. */
+ uint16_t rising_edges; /*!< \brief GPIO pins on which a rising-edge trigger condition was detected by rising edge or dual edge detection logic */
+ uint16_t falling_edges; /*!< \brief GPIO pins on which a falling-edge trigger condition was detected by falling edge or dual edge detection logic */
+ uint16_t levels; /*!< \brief GPIO pins on which a logic level condition was detected by level detection logic. */
+ bool is_first_report; /*!< \brief State of the report. */
+
+} Inic_GpioTriggerEventStatus_t;
+
+/*! \brief This structure provides result information of the I2cPortRead */
+typedef struct Inic_I2cReadResStatus_
+{
+ uint16_t port_handle; /*!< \brief Port resource handle. */
+ uint8_t slave_address; /*!< \brief The 7-bit I2C slave address of the peripheral read */
+ uint8_t data_len; /*!< \brief Size of the data_ptr */
+ uint8_t * data_ptr; /*!< \brief Reference to the data. */
+
+} Inic_I2cReadResStatus_t;
+
+/*! \brief This structure provides status information on the I2cPortWrite */
+typedef struct Inic_I2cWriteResStatus_
+{
+ uint16_t port_handle; /*!< \brief Port resource handle. */
+ uint8_t slave_address; /*!< \brief The 7-bit I2C slave address of the target peripheral */
+ uint8_t data_len; /*!< \brief Number of bytes wrote */
+
+} Inic_I2cWriteResStatus_t;
+
+/*! \brief This structure provides information on the notification results */
+typedef struct Inic_NotificationResult_
+{
+ uint16_t func_id; /*!< \brief function id */
+ uint16_t device_id; /*!< \brief address of the sending device */
+
+} Inic_NotificationResult_t;
+
+/*! \brief This structure contains the results of the frame counter */
+typedef struct Inic_FrameCounterStatus_
+{
+ uint32_t reference; /*!< \brief reference value */
+ uint32_t frame_counter; /*!< \brief MOST Network frame counter */
+ uint8_t lock; /*!< \brief Indicates if the TimingSlave device is locked
+ to the MOST network. For a TimingMaster
+ device this value is always True. */
+
+}Inic_FrameCounterStatus_t;
+
+/*! \brief Structure holds parameters for API locking */
+typedef struct Inic_ApiLock_
+{
+ /*! \brief API locking instance for INIC functions */
+ CApiLocking api;
+ /*! \brief Observer used for locking timeouts for INIC functions */
+ CSingleObserver observer;
+ /*! \brief API locking instance for resource methods */
+ CApiLocking res_api;
+ /*! \brief Observer used for locking timeouts for resource methods */
+ CSingleObserver res_observer;
+ /*! \brief Used to realize a longer API timeout */
+ uint8_t rbd_trigger_timeout_counter;
+
+} Inic_ApiLock_t;
+
+/*! \brief Structure of MOSTPortStatus data */
+typedef struct Inic_MostPortStatus_
+{
+ Ucs_Most_PortAvail_t availability;
+ Ucs_Most_PortAvailInfo_t avail_info;
+ uint16_t most_port_handle;
+ uint16_t freestreaming_bw;
+ bool fullstreaming_enabled;
+
+} Inic_MostPortStatus_t;
+
+/*! \brief Structure of class CInic. */
+typedef struct CInic_
+{
+ Inic_DeviceStatus_t device_status; /*!< \brief Structure DeviceStatus */
+ Inic_GpioReportTimeStatus_t gpio_rt_status; /*!< \brief Status of the GPIO TriggerEvent Report */
+ Ucs_Inic_Version_t device_version; /*!< \brief Structure DeviceVersion*/
+ Inic_NetworkStatus_t network_status; /*!< \brief Structure MOSTNetworkStatus */
+ Inic_NetworkConfig_t network_config; /*!< \brief Structure MOSTNetworkConfiguration */
+ Inic_MostPortStatus_t most_port_status; /*!< \brief Structure MOSTPortStatus */
+ CSubject subs[INIC_NUM_SUB]; /*!< \brief contains all subjects */
+ CSingleSubject ssubs[INIC_NUM_SSUB]; /*!< \brief contains all single-subjects */
+ Inic_ApiLock_t lock; /*!< \brief Parameters for API locking */
+ bool startup_locked; /*!< \brief Locking of NetworkStartup without timeout */
+ Dec_FktOpIcm_t const *fkt_op_list_ptr; /*!< \brief pointer to the FktID/OPType list */
+ CBase *base_ptr; /*!< \brief Reference to UCS base instance */
+ CTransceiver *xcvr_ptr; /*!< \brief Reference to a Transceiver instance */
+ CMaskedObserver internal_error_obs; /*!< \brief Error observer to handle internal
+ errors and events */
+ uint16_t target_address; /*!< \brief Address of the target device */
+
+} CInic;
+
+/*! \brief Structure of MOSTSocketCreate result */
+typedef struct Inic_MostSocketCreate_Result_
+{
+ uint16_t most_socket_handle; /*!< \brief Socket resource handle of the created socket */
+ uint16_t conn_label; /*!< \brief MOST network connection label */
+
+} Inic_MostSocketCreate_Result_t;
+
+/*! \brief Structure of StreamPortConfiguration status */
+typedef struct Inic_StreamPortConfigStatus_
+{
+ uint8_t index; /*!< \brief Streaming Port instance */
+ Ucs_Stream_PortOpMode_t op_mode; /*!< \brief Streaming Port Operation mode */
+ Ucs_Stream_PortOption_t port_option; /*!< \brief Streaming Port Options */
+ Ucs_Stream_PortClockMode_t clock_mode; /*!< \brief Stream Port Clock Mode */
+ Ucs_Stream_PortClockDataDelay_t clock_data_delay; /*!< \brief Stream Port Clock Data Delay */
+
+} Inic_StreamPortConfigStatus_t;
+
+/*------------------------------------------------------------------------------------------------*/
+/* Prototypes */
+/*------------------------------------------------------------------------------------------------*/
+extern void Inic_Ctor(CInic *self, Inic_InitData_t *init_ptr);
+extern void Inic_OnIcmRx(void *self, Msg_MostTel_t *tel_ptr);
+extern void Inic_OnRcmRxFilter(void *self, Msg_MostTel_t *tel_ptr);
+extern void Inic_InitResourceManagement(CInic *self);
+extern void Inic_AddObsrvResMonitor(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsrvResMonitor(CInic *self, CObserver *obs_ptr);
+extern void Inic_AddObsrvMostPortStatus(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsrvMostPortStatus(CInic *self, CObserver *obs_ptr);
+extern void Inic_AddObsrvGpioTriggerEvent(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsrvGpioTriggerEvent(CInic *self, CObserver *obs_ptr);
+
+/* internal API functions */
+extern Ucs_Return_t Inic_DeviceVersion_Get(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_DeviceAttach(CInic *self,
+ CSingleObserver *obs_ptr);
+Ucs_Return_t Inic_DeviceSync (CInic *self,
+ CSingleObserver *obs_ptr);
+Ucs_Return_t Inic_DeviceUnsync (CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwAttach(CInic *self,
+ uint16_t pmp_channel_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_SyncMute(CInic *self,
+ uint16_t sync_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_SyncDemute(CInic *self,
+ uint16_t sync_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_DfiPhaseCreate(CInic *self,
+ uint16_t resource_handle_in,
+ uint16_t resource_handle_out,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_CombinerCreate(CInic *self,
+ uint16_t port_socket_handle,
+ uint16_t most_port_handle,
+ uint16_t bytes_per_frame,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_SplitterCreate(CInic *self,
+ uint16_t socket_handle_in,
+ uint16_t most_port_handle,
+ uint16_t bytes_per_frame,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwRbdResult_Get(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwPhyTestResult_Get(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwStartup(CInic *self,
+ uint16_t auto_forced_na,
+ uint16_t packet_bandwidth,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwShutdown(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwTriggerRbd(CInic *self,
+ Ucs_Diag_RbdType_t type,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwForceNotAvailable(CInic *self,
+ bool force,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwConfig_SetGet(CInic *self,
+ uint16_t mask,
+ Inic_NetworkConfig_t config, CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwConfig_Get(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwFrameCounter_Get(CInic *self, uint32_t reference,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_ResourceDestroy(CInic *self,
+ Inic_ResHandleList_t res_handle_list,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_ResourceInvalidList_Get(CInic *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_ResourceMonitor_Set(CInic *self,
+ Ucs_Resource_MonitorCtrl_t control);
+extern Ucs_Return_t Inic_Notification_Set(CInic *self,
+ Ucs_Inic_NotificationCtrl_t control,
+ uint16_t device_id,
+ Inic_FktIdList_t fktid_list);
+extern Ucs_Return_t Inic_Notification_Get(CInic *self,
+ uint16_t fktid,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_SyncCreate(CInic *self,
+ uint16_t resource_handle_in,
+ uint16_t resource_handle_out,
+ bool default_mute,
+ Ucs_Sync_MuteMode_t mute_mode,
+ uint16_t offset,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_QoSCreate(CInic *self,
+ uint16_t socket_in_handle,
+ uint16_t socket_out_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_IpcCreate(CInic *self,
+ uint16_t socket_in_handle,
+ uint16_t socket_out_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_AvpCreate(CInic *self,
+ uint16_t socket_in_handle,
+ uint16_t socket_out_handle,
+ Ucs_Avp_IsocPacketSize_t isoc_packet_size,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_MostSocketCreate(CInic *self,
+ uint16_t most_port_handle,
+ Ucs_SocketDirection_t direction,
+ Ucs_Most_SocketDataType_t data_type,
+ uint16_t bandwidth,
+ uint16_t connection_label,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_MlbPortCreate(CInic *self,
+ uint8_t index,
+ Ucs_Mlb_ClockConfig_t clock_config,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_MlbSocketCreate(CInic *self,
+ uint16_t mlb_port_handle,
+ Ucs_SocketDirection_t direction,
+ Ucs_Mlb_SocketDataType_t data_type,
+ uint16_t bandwidth,
+ uint16_t channel_address,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_UsbPortCreate(CInic *self,
+ uint8_t index,
+ Ucs_Usb_PhysicalLayer_t physical_layer,
+ uint16_t devices_interfaces,
+ uint8_t streaming_if_ep_out_count,
+ uint8_t streaming_if_ep_in_count,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_UsbSocketCreate(CInic *self,
+ uint16_t usb_port_handle,
+ Ucs_SocketDirection_t direction,
+ Ucs_Usb_SocketDataType_t data_type,
+ uint8_t end_point_addr,
+ uint16_t frames_per_transfer,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_StreamPortConfig_SetGet(CInic *self,
+ uint8_t index,
+ Ucs_Stream_PortOpMode_t op_mode,
+ Ucs_Stream_PortOption_t port_option,
+ Ucs_Stream_PortClockMode_t clock_mode,
+ Ucs_Stream_PortClockDataDelay_t clock_data_delay,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_StreamPortConfig_Get(CInic *self,
+ uint8_t index,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_StreamPortCreate(CInic *self,
+ uint8_t index,
+ Ucs_Stream_PortClockConfig_t clock_config,
+ Ucs_Stream_PortDataAlign_t data_alignment,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_StreamSocketCreate(CInic *self,
+ uint16_t stream_port_handle,
+ Ucs_SocketDirection_t direction,
+ Ucs_Stream_SocketDataType_t data_type,
+ uint16_t bandwidth,
+ Ucs_Stream_PortPinId_t stream_pin_id,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_RmckPortCreate(CInic *self,
+ uint8_t index,
+ Ucs_Rmck_PortClockSource_t clock_source,
+ uint16_t divisor,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_I2cPortCreate(CInic *self,
+ uint8_t index,
+ uint8_t address,
+ uint8_t mode,
+ Ucs_I2c_Speed_t speed,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_I2cPortRead(CInic *self,
+ uint16_t port_handle,
+ uint8_t slave_address,
+ uint8_t data_len,
+ uint16_t timeout,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_I2cPortWrite(CInic *self,
+ uint16_t port_handle,
+ Ucs_I2c_TrMode_t mode,
+ uint8_t block_count,
+ uint8_t slave_address,
+ uint16_t timeout,
+ uint8_t data_len,
+ uint8_t data_list[],
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_PciPortCreate(CInic *self,
+ uint8_t index,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_PciSocketCreate(CInic *self,
+ uint16_t pci_port_handle,
+ Ucs_SocketDirection_t direction,
+ Ucs_Pci_SocketDataType_t data_type,
+ uint8_t dma_channel,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_GpioPortCreate(CInic *self,
+ uint8_t gpio_port_index,
+ uint16_t debounce_time,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_MostPortEnable(CInic *self,
+ uint16_t most_port_handle,
+ bool enabled,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_GpioPortPinMode_Get(CInic *self, uint16_t gpio_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_GpioPortPinMode_SetGet(CInic *self,
+ uint16_t gpio_handle,
+ uint8_t pin,
+ Ucs_Gpio_PinMode_t mode,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_GpioPortPinState_Get(CInic *self, uint16_t gpio_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_GpioPortPinState_SetGet(CInic *self,
+ uint16_t gpio_handle,
+ uint16_t mask,
+ uint16_t data,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_MostPortEnFullStr(CInic *self,
+ uint16_t most_port_handle,
+ bool enabled,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_BCDiagnosis(CInic *self, CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_BCDiagEnd(CInic *self, CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwSysDiagnosis(CInic *self, CSingleObserver *obs_ptr);
+extern Ucs_Return_t Inic_NwSysDiagEnd(CInic *self, CSingleObserver *obs_ptr);
+
+extern void Inic_AddObsrvOnTxMsgObjAvail(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsrvOnTxMsgObjAvail(CInic *self, CObserver *obs_ptr);
+extern void Inic_AddObsrvNwStatus(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsrvNwStatus(CInic *self, CObserver *obs_ptr);
+extern void Inic_AddObsvrNwConfig(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsvrNwConfig(CInic *self, CObserver *obs_ptr);
+extern void Inic_AddObsvrDeviceStatus(CInic *self, CObserver *obs_ptr);
+extern void Inic_DelObsvrDeviceStatus(CInic *self, CObserver *obs_ptr);
+
+/* handler functions */
+extern void Inic_DummyHandler(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_Notification_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_Notification_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceStatus_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceVersion_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceVersion_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwStatus_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwConfig_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwConfig_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwFrameCounter_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwFrameCounter_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwStartup_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwStartup_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwShutdown_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwShutdown_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwTriggerRbd_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwTriggerRbd_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwForceNotAvailable_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwForceNotAvailable_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceAttach_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceAttach_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceSync_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DeviceSync_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwAttach_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwAttach_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwSysDiagnosis_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwSysDiagnosis_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwSysDiagEnd_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwSysDiagEnd_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_BCDiagnosis_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_BCDiagnosis_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_BCDiagEnd_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_BCDiagEnd_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwChangeNodeAddress_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwChangeNodeAddress_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncMute_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncMute_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncDemute_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncDemute_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DfiPhaseCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DfiPhaseCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwRbdResult_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_NwRbdResult_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceDestroy_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceDestroy_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceInvalidList_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceInvalidList_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceMonitor_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_ResourceMonitor_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_AttachSockets_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_AttachSockets_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DetachSockets_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_DetachSockets_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SyncCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_QoSCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_QoSCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_IpcCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_IpcCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_AvpCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_AvpCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortStatus_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortStatus_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostSocketCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostSocketCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MlbPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MlbPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MlbSocketCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MlbSocketCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_UsbPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_UsbPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_UsbSocketCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_UsbSocketCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamPortConfig_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamPortConfig_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamSocketCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_StreamSocketCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_RmckPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_RmckPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortRead_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortRead_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortWrite_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_I2cPortWrite_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_PciPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_PciPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_PciSocketCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_PciSocketCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortEnable_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortEnable_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortPinMode_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortPinMode_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortPinState_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortPinState_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortTrigger_Status(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_GpioPortTrigger_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortEnFullStr_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_MostPortEnFullStr_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_CombinerCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_CombinerCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SplitterCreate_Error(void *self, Msg_MostTel_t *msg_ptr);
+extern void Inic_SplitterCreate_Result(void *self, Msg_MostTel_t *msg_ptr);
+
+/* Helper functions */
+extern Ucs_StdResult_t Inic_TranslateError(CInic *self, uint8_t error_data[], uint8_t error_size);
+
+/* Synchronous Getters */
+extern uint16_t Inic_GetGroupAddress(CInic *self);
+extern uint16_t Inic_GetPacketDataBandwidth(CInic *self);
+extern uint16_t Inic_GetNodeAddress(CInic *self);
+extern uint8_t Inic_GetNodePosition(CInic *self);
+extern uint8_t Inic_GetNumberOfNodes(CInic *self);
+extern uint8_t Inic_GetInicLlrbc(CInic *self);
+extern Ucs_Inic_Version_t Inic_GetDeviceVersion(CInic *self);
+extern Ucs_Inic_LastResetReason_t Inic_GetLastResetReason(CInic *self);
+extern Ucs_Inic_PowerState_t Inic_GetDevicePowerState(CInic *self);
+extern Ucs_Network_Availability_t Inic_GetAvailability(CInic *self);
+extern uint16_t Inic_GetTargetAddress (CInic *self);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* #ifndef UCS_INIC_H */
+
+/*!
+ * @}
+ * \endcond
+ */
+
+/*------------------------------------------------------------------------------------------------*/
+/* End of file */
+/*------------------------------------------------------------------------------------------------*/
+