summaryrefslogtreecommitdiffstats
path: root/ucs2-lib/inc/ucs_exc.h
diff options
context:
space:
mode:
Diffstat (limited to 'ucs2-lib/inc/ucs_exc.h')
-rw-r--r--ucs2-lib/inc/ucs_exc.h323
1 files changed, 323 insertions, 0 deletions
diff --git a/ucs2-lib/inc/ucs_exc.h b/ucs2-lib/inc/ucs_exc.h
new file mode 100644
index 0000000..e703f6a
--- /dev/null
+++ b/ucs2-lib/inc/ucs_exc.h
@@ -0,0 +1,323 @@
+/*------------------------------------------------------------------------------------------------*/
+/* 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 CExc.
+ *
+ * \cond UCS_INTERNAL_DOC
+ * \addtogroup G_EXC
+ * @{
+ */
+
+#ifndef UCS_EXC_H
+#define UCS_EXC_H
+
+/*------------------------------------------------------------------------------------------------*/
+/* Includes */
+/*------------------------------------------------------------------------------------------------*/
+#include "ucs_inic_pb.h"
+#include "ucs_obs.h"
+#include "ucs_fsm.h"
+#include "ucs_dec.h"
+#include "ucs_base.h"
+#include "ucs_inic.h"
+
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*------------------------------------------------------------------------------------------------*/
+/* Macros */
+/*------------------------------------------------------------------------------------------------*/
+
+
+
+#define EXC_FID_HELLO 0x200U
+#define EXC_FID_WELCOME 0x201U
+#define EXC_FID_SIGNATURE 0x202U
+#define EXC_FID_DEVICE_INIT 0x203U
+#define EXC_FID_ENABLEPORT 0x210U
+#define EXC_FID_CABLE_LINK_DIAG 0x211U
+#define EXC_FID_PHY_LAY_TEST 0x220U
+#define EXC_FID_PHY_LAY_TEST_RES 0x221U
+#define EXC_FID_BC_DIAG 0x222U
+#define EXC_FID_BC_ENABLE_TX 0x223U
+#define EXC_FID_MEM_SESSION_OPEN 0x300U
+#define EXC_FID_MEM_SESSION_CLOSE 0x301U
+#define EXC_FID_MEMORY_READ 0x302U
+#define EXC_FID_MEMORY_WRITE 0x303U
+
+
+
+#define EXC_WELCOME_SUCCESS 0U /*!< \brief Welcome.Result reports success */
+
+
+
+
+
+
+/*------------------------------------------------------------------------------------------------*/
+/* Structures */
+/*------------------------------------------------------------------------------------------------*/
+/*! \brief Structure holds parameters for API locking */
+typedef struct Exc_ApiLock_
+{
+ /*! \brief API locking instance for EXC functions */
+ CApiLocking api;
+ /*! \brief Observer used for locking timeouts for EXC functions */
+ CSingleObserver observer;
+
+} Exc_ApiLock_t;
+
+/*! \brief Structure ExcSingleSubjects */
+typedef struct Exc_Ssubjects_
+{
+ CSingleSubject hello; /*!< \brief Subject for the Hello.Status and Hello.Error messages */
+ CSingleSubject welcome; /*!< \brief Subject for the Welcome.ResultAck and Welcome.ErrorAck messages */
+ CSingleSubject signature; /*!< \brief Subject for the Signature.Status and Signature.Error messages */
+ CSingleSubject deviceinit; /*!< \brief Subject for the DeviceInit.Error message */
+ CSingleSubject enableport; /*!< \brief Subject for the EnablePort.ResultAck and EnablePort.ErrorAck messages */
+ CSingleSubject cablelinkdiag; /*!< \brief Subject for the CableLinkDiagnosis.ResultAck and CableLinkDiagnosis.ErrorAck messages */
+ CSingleSubject phylaytest; /*!< \brief Subject for the PhysicalLayerTestResult.Status and PhysicalLayerTest.Error messages */
+ CSingleSubject phylaytestresult; /*!< \brief Subject for the PhysicalLayerTestResult.Status and PhysicalLayerTestResult.Error messages */
+ CSingleSubject memsessionopen; /*!< \brief Subject for the MemorySessionOpen.Result and MemorySessionOpen.Error messages */
+ CSingleSubject memsessionclose; /*!< \brief Subject for the MemorySessionClose.Result and MemorySessionClose.Error messages */
+ CSingleSubject memoryread; /*!< \brief Subject for the MemoryRead.Result and MemoryRead.Error messages */
+ CSingleSubject memorywrite; /*!< \brief Subject for the MemoryWrite.Result and MemoryWrite.Error messages */
+ CSingleSubject bcdiag; /*!< \brief Subject for the BCdiag.Result and Error messages */
+ CSingleSubject enabletx; /*!< \brief Subject for the BC_EnableTx.Status and Error messages */
+} Exc_Ssubjects_t;
+
+
+
+
+/*! \brief Structure of class CExc. */
+typedef struct CExc_
+{
+ /*! \brief pointer to the FktID/OPType list */
+ Dec_FktOpIsh_t const *fkt_op_list_ptr;
+
+ /*! \brief Subjects for single-observer */
+ Exc_Ssubjects_t ssubs;
+
+ /*! \brief Parameters for API locking */
+ Exc_ApiLock_t lock;
+
+ /*! \brief Reference to base instance */
+ CBase *base_ptr;
+
+ /*! \brief Reference to a Transceiver instance */
+ CTransceiver *xcvr_ptr;
+
+} CExc;
+
+/*! \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. If no error happened,
+ * error.code is 0 and error.info is NULL.
+*/
+typedef struct Exc_StdResult_
+{
+ Ucs_StdResult_t result; /*!< \brief Result code and info byte stream */
+ void *data_info; /*!< \brief Reference to result values */
+
+} Exc_StdResult_t;
+
+
+/*! \brief This structure provides information on the Physical layer test result */
+typedef struct Exc_PhyTestResult_
+{
+ uint8_t port_number; /*!< \brief Port Number */
+ bool lock_status; /*!< \brief Lock status */
+ uint16_t err_count; /*!< \brief Number of Coding Errors */
+
+} Exc_PhyTestResult_t;
+
+
+/*! \brief Result values of the BCDiag command*/
+typedef enum Exc_BCDiagResValue_
+{
+ DUT_SLAVE = 0x01U, /*!< \brief Slave answered. No break on this segment. */
+ DUT_MASTER = 0x02U, /*!< \brief TimingMaster answered: ring is closed. */
+ DUT_NO_ANSWER = 0x03U, /*!< \brief Ring break found. */
+ DUT_TIMEOUT = 0x04U /*!< \brief No answer on back channel */
+
+} Exc_BCDiagResValue;
+
+/*! \brief Provides BackChannel Diagnosis result */
+typedef struct Exc_BCDiagResult_
+{
+ Exc_BCDiagResValue diag_result;
+ uint16_t admin_addr;
+} Exc_BCDiagResult;
+
+
+/*! \brief This structure provides information on the Coax Diagnosis */
+typedef struct Exc_CableLinkDiagResult_
+{
+ uint8_t port_number;
+ uint8_t result;
+
+} Exc_CableLinkDiagResult_t;
+
+
+/*! \brief This structure provides information on the Hello.Status message */
+typedef struct Exc_HelloStatus_t_
+{
+ uint8_t version;
+ Ucs_Signature_t signature;
+
+} Exc_HelloStatus_t;
+
+/*! \brief This structure provides information on the Welcome.Result message */
+typedef struct Exc_WelcomeResult_t_
+{
+ uint8_t res;
+ uint8_t version;
+ Ucs_Signature_t signature;
+
+} Exc_WelcomeResult_t;
+
+/*! \brief This structure provides information on the Signature.Status message */
+typedef struct Exc_SignatureStatus_t_
+{
+ uint8_t version;
+ Ucs_Signature_t signature;
+
+} Exc_SignatureStatus_t;
+
+/*! \brief This structure provides information on the MemoryRead.Result message */
+typedef struct Exc_MemReadResult_
+{
+ uint16_t session_handle;
+ uint8_t mem_id;
+ uint32_t address;
+ uint8_t unit_len;
+ uint8_t unit_data[18];
+
+} Exc_MemReadResult_t;
+
+/*! \brief This structure provides information on the MemoryWrite.Result message */
+typedef struct Exc_MemWriteResult_
+{
+ uint16_t session_handle;
+ uint8_t mem_id;
+
+} Exc_MemWriteResult_t;
+
+
+/*------------------------------------------------------------------------------------------------*/
+/* Prototypes */
+/*------------------------------------------------------------------------------------------------*/
+extern void Exc_Ctor(CExc *self, CBase *base_ptr, CTransceiver *rcm_ptr);
+extern void Exc_OnRcmRxFilter(void *self, Msg_MostTel_t *tel_ptr);
+
+extern Ucs_Return_t Exc_Hello_Get(CExc *self,
+ uint16_t target_address,
+ uint8_t version_limit,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_Welcome_Sr(CExc *self,
+ uint16_t target_address,
+ uint16_t admin_node_address,
+ uint8_t version,
+ Ucs_Signature_t signature,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_Signature_Get(CExc *self,
+ uint16_t target_address,
+ uint8_t version_limit,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_DeviceInit_Start(CExc *self,
+ uint16_t target_address,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_EnablePort_Sr(CExc *self,
+ uint16_t target_address,
+ uint8_t port_number,
+ bool enabled,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_CableLinkDiagnosis_Start (CExc *self,
+ uint16_t target_address,
+ uint8_t port_number,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_PhyTest_Start(CExc *self,
+ uint8_t port_number,
+ Ucs_Diag_PhyTest_Type_t type,
+ uint16_t lead_in,
+ uint32_t duration,
+ uint16_t lead_out,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_PhyTestResult_Get(CExc *self,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_BCDiag_Start(CExc *self,
+ uint8_t position,
+ uint16_t admin_na,
+ uint16_t t_send,
+ uint16_t t_wait4dut,
+ uint16_t t_switch,
+ uint16_t t_back,
+ bool autoback,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_BCEnableTx_StartResult(CExc *self,
+ uint8_t port,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_MemSessionOpen_Sr(CExc *self,
+ uint16_t target_address,
+ uint8_t session_type,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_MemSessionClose_Sr(CExc *self,
+ uint16_t target_address,
+ uint16_t session_handle,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_MemoryRead_Sr(CExc *self,
+ uint16_t target_address,
+ uint16_t session_handle,
+ uint8_t mem_id,
+ uint32_t address,
+ uint8_t unit_len,
+ CSingleObserver *obs_ptr);
+extern Ucs_Return_t Exc_MemoryWrite_Sr(CExc *self,
+ uint16_t target_address,
+ uint16_t session_handle,
+ uint8_t mem_id,
+ uint32_t address,
+ uint8_t unit_len,
+ uint8_t unit_data[],
+ CSingleObserver *obs_ptr);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* #ifndef UCS_EXC_H */
+
+/*!
+ * @}
+ * \endcond
+ */
+
+/*------------------------------------------------------------------------------------------------*/
+/* End of file */
+/*------------------------------------------------------------------------------------------------*/
+