diff options
Diffstat (limited to 'ucs2-lib/inc/ucs_inic.h')
-rw-r--r-- | ucs2-lib/inc/ucs_inic.h | 858 |
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 */ +/*------------------------------------------------------------------------------------------------*/ + |