diff options
author | Fulup Ar Foll <fulup@iot.bzh> | 2017-05-26 18:45:56 +0200 |
---|---|---|
committer | Fulup Ar Foll <fulup@iot.bzh> | 2017-05-26 18:45:56 +0200 |
commit | d2e42029ec04c3f224580f8007cdfbbfe0fc47a6 (patch) | |
tree | ad2ccf167cf7997c84191d41e6ba55cb2efd6bed /ucs2-lib/inc/ucs_xrmpool.h | |
parent | 18e393e1443fd4c38b34979888fb55d30448cf31 (diff) |
Initial Commit
Diffstat (limited to 'ucs2-lib/inc/ucs_xrmpool.h')
-rw-r--r-- | ucs2-lib/inc/ucs_xrmpool.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/ucs2-lib/inc/ucs_xrmpool.h b/ucs2-lib/inc/ucs_xrmpool.h new file mode 100644 index 0000000..2cea2f6 --- /dev/null +++ b/ucs2-lib/inc/ucs_xrmpool.h @@ -0,0 +1,154 @@ +/*------------------------------------------------------------------------------------------------*/ +/* 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 the Connection Storage Pool. + * + * \cond UCS_INTERNAL_DOC + * \addtogroup G_UCS_XRM_INT + * @{ + */ + + +#ifndef UCS_XRMPOOL_H +#define UCS_XRMPOOL_H + +/*------------------------------------------------------------------------------------------------*/ +/* Includes */ +/*------------------------------------------------------------------------------------------------*/ +#include "ucs_xrm_pb.h" +#include "ucs_dl.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/*------------------------------------------------------------------------------------------------*/ +/* Type definitions */ +/*------------------------------------------------------------------------------------------------*/ +/*! \brief Callback signature used by foreach-function for the resources list + * \param rc_ptr Reference to a resource object in the list + * \param ud_ptr1 Reference to the user data 1 + * \param ud_ptr2 Reference to the user data 2 + * \param ud_ptr3 Reference to the user data 3 + * \return true: Stop the for-each-loop + * \return false: Continue the for-each-loop + */ +typedef bool (*Xrmp_ForeachFunc_t)(void *rc_ptr, void *ud_ptr1, void *ud_ptr2, void *ud_ptr3); + +/*! \brief Callback signature used by _GetResourceHandle-function to check whether found resources belongs to provided jobs list + * \param xrm_inst Reference to the XRM instance to be looked for + * \param job_ptr Reference to the job list to be checked + * \return true: Stop the for-each-loop since given job matches, otherwise + * \return false: Continue the for-each-loop in order to catch new jobs. + */ +typedef bool (*Xrmp_CheckJobListFunc_t)(void * xrm_inst, void * job_ptr); + +/*! \brief Function signature used for the results and reports of the Extended Resource Manager. + * \param node_address The node address from which the results come + * \param connection_label Returned MOST network connection label + * \param result Result of the job + * \param user_arg Reference to the user argument + * \ingroup G_UCS_IRM + */ +typedef void (*Ucs_Xrm_ReportCb_t)(uint16_t node_address, uint16_t connection_label, Ucs_Xrm_Result_t result, void * user_arg); + +/*------------------------------------------------------------------------------------------------*/ +/* Structures */ +/*------------------------------------------------------------------------------------------------*/ +/*! \brief Structure that defines a job of the Extended Resource Manager. */ +typedef struct Xrm_Job_ +{ + /*! \brief Reference to resource object list */ + UCS_XRM_CONST Ucs_Xrm_ResObject_t **resource_object_list_ptr; + /*! \brief Report callback of the job */ + Ucs_Xrm_ReportCb_t report_fptr; + /*! \brief User defined MOST connection label */ + uint16_t most_network_connection_label; + /*! \brief MOST connection label, returned during MOST socket creation */ + uint16_t connection_label; + /*!< \brief Node required for jobs pool */ + CDlNode node; + /*! \brief address of the device in which the job is built */ + bool sync_lost; + /*! \brief State of the job (valid/invalid) */ + bool valid; + /*! \brief Notification flag */ + bool notify; + /*!< \brief user argument */ + void * user_arg; + +} Xrm_Job_t; + +/*! \brief Structure that defines an item of the resource handle list. */ +typedef struct Xrm_ResourceHandleListItem_ +{ + /*! \brief Reference to the job */ + Xrm_Job_t *job_ptr; + /*! \brief Reference to the resource object */ + UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr; + /*! \brief INIC Resource handle */ + uint16_t resource_handle; + +} Xrm_ResourceHandleListItem_t; + +/*! \brief Class structure of the Storage Pool of XRM Jobs and Resources. */ +typedef struct CXrmPool_ +{ + /*! \brief Job list */ + Xrm_Job_t job_list[XRM_NUM_JOBS]; + /*! \brief List of resource handles */ + Xrm_ResourceHandleListItem_t resource_handle_list[XRM_NUM_RESOURCE_HANDLES]; + /*!< \brief Reference to the resource identification table */ + Ucs_Xrm_ResIdentity_t * res_id_ptr; + /*! \brief Size of the resources Id table. + */ + uint16_t res_id_size; + +} CXrmPool; + +/*------------------------------------------------------------------------------------------------*/ +/* Prototypes of class CXrmPool */ +/*------------------------------------------------------------------------------------------------*/ +extern void Xrmp_Ctor(CXrmPool * self); +extern bool Xrmp_StoreResourceHandle(CXrmPool * self_ptr, uint16_t resource_handle, Xrm_Job_t * job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t * resource_object_ptr); +extern uint16_t Xrmp_GetResourceHandle(CXrmPool * self, Xrm_Job_t * job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t * resource_object_ptr, Xrmp_CheckJobListFunc_t func_ptr, void * usr_ptr); +extern uint8_t Xrmp_GetResourceHandleIdx(CXrmPool *self, Xrm_Job_t *job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t **obj_pptr); +extern Xrm_Job_t * Xrmp_GetJob(CXrmPool * self, UCS_XRM_CONST Ucs_Xrm_ResObject_t * resource_object_list[]); +extern void Xrmp_Foreach(CXrmPool *self, Xrmp_ForeachFunc_t func_ptr, void *user_data_ptr1, void *user_data_ptr2, void *user_data_ptr3); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* #ifndef UCS_XRMPOOL_H */ + +/*! + * @} + * \endcond + */ + +/*------------------------------------------------------------------------------------------------*/ +/* End of file */ +/*------------------------------------------------------------------------------------------------*/ + |