/*------------------------------------------------------------------------------------------------*/ /* 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 . */ /* */ /* You may also obtain this software under a propriety license from Microchip. */ /* Please contact Microchip for further information. */ /*------------------------------------------------------------------------------------------------*/ /*! * \file * \brief Private header file of the Extended Resource Manager. * \cond UCS_INTERNAL_DOC * \addtogroup G_UCS_XRM_INT * @{ */ #ifndef UCS_XRM_PV_H #define UCS_XRM_PV_H #ifdef __cplusplus extern "C" { #endif /*------------------------------------------------------------------------------------------------*/ /* Includes */ /*------------------------------------------------------------------------------------------------*/ #include "ucs_rules.h" #include "ucs_xrm_cfg.h" #include "ucs_xrm.h" /*------------------------------------------------------------------------------------------------*/ /* Enumerations */ /*------------------------------------------------------------------------------------------------*/ /*! \brief Result codes of function Xrm_PrepareJobDestruction(). */ typedef enum Xrm_PreJobDestrResult_ { XRM_PRE_JOB_DEST_TASKS_EXIST = 0x00U, /*!< \brief There are resources to destroy */ XRM_PRE_JOB_DEST_NO_TASKS_EXIST = 0x01U, /*!< \brief All resources already destroyed */ XRM_PRE_JOB_DEST_DONE = 0x02U, /*!< \brief Only shared resources affected. Invoke * result callback immediately. */ XRM_PRE_JOB_DEST_BUSY = 0x03U /*!< \brief Preparation of JobDestruction is * currently not possible. Other resources * are currently being destroyed. */ } Xrm_PreJobDestrResult_t; /*------------------------------------------------------------------------------------------------*/ /* Structures */ /*------------------------------------------------------------------------------------------------*/ /*! \brief Structure used to count the number of entries of a given resource handle. */ typedef struct Xrm_CntEntriesResHandle_ { /*! \brief Reference to the XRM instance to be looked for. */ CExtendedResourceManager *xrm_inst; /*! \brief Reference the resource object to be looked for. */ UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr; /*! \brief Storage for the count result. */ uint8_t * cnt_res; } Xrm_CntEntriesResHandle_t; /*------------------------------------------------------------------------------------------------*/ /* Internal constants (extern declarations only) */ /*------------------------------------------------------------------------------------------------*/ extern const uint8_t XRM_SRV_PRIO; extern const Srv_Event_t XRM_EVENT_PROCESS; extern const Srv_Event_t XRM_EVENT_ERROR; extern const Srv_Event_t XRM_EVENT_REQ_INV_RES_LST; extern const Srv_Event_t XRM_EVENT_DESTROY_INV_RES; extern const Srv_Event_t XRM_EVENT_NOTIFY_AUTO_DEST_RES; extern const Srv_Event_t XRM_EVENT_NOTIFY_AUTO_DEST_RESR; extern const Srv_Event_t XRM_EVENT_SYNC_NEXT_DEV; extern const Srv_Event_t XRM_EVENT_NOTIFY_DESTROYED_JOB; extern const Srv_Event_t XRM_EVENT_RESUME_JOB_DESTRUCT; extern const Srv_Event_t XRM_EVENT_RESET_RES_MONITOR; extern const Srv_Event_t XRM_EVENT_STREAMPORT_CONFIG_SET; extern const Srv_Event_t XRM_EVENT_STREAMPORT_CONFIG_GET; extern const uint16_t XRM_INVALID_RESOURCE_HANDLE; extern const uint16_t XRM_INVALID_CONNECTION_LABEL; extern const uint16_t XRM_DEFAULT_SENDER_HANDLE; extern const uint16_t XRM_INVALID_NODE_ADDRESS; extern const uint16_t XRM_MASK_NETWORK_AVAILABILITY; extern const uint16_t XRM_MASK_NETWORK_NODE_ADDRESS; /*------------------------------------------------------------------------------------------------*/ /* Internal Prototypes class CExtendedResourceManager */ /*------------------------------------------------------------------------------------------------*/ /* Basic functions */ extern void Xrm_Service(void *self); extern bool Xrm_IsApiFree(CExtendedResourceManager *self); extern bool Xrm_IsInMyJobList(CExtendedResourceManager *self, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_list[]); extern void Xrm_ApiLocking(CExtendedResourceManager *self, bool status); extern void Xrm_WaitForTxMsgObj(CExtendedResourceManager *self, Srv_Event_t event_mask); extern void Xrm_UninitializeService(void *self, void *error_code_ptr); extern void Xrm_MnsNwStatusInfosCb(void *self, void *result_ptr); extern void Xrm_MsgObjAvailCb(void *self, void *result_ptr); extern void Xrm_RmtDevSyncLostCb(void *self, void *result_ptr); extern Xrm_PreJobDestrResult_t Xrm_PrepareJobDestruction(CExtendedResourceManager *self); extern Xrm_PreJobDestrResult_t Xrm_UnsafePrepareJobDestruction(CExtendedResourceManager *self); extern void Xrm_ResumeJobDestruction(CExtendedResourceManager *self); extern uint8_t Xrm_CountResourceObjects(CExtendedResourceManager *self, Xrm_Job_t *job_ptr); extern Xrm_Job_t * Xrm_GetJob(CExtendedResourceManager *self, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_list[]); extern void * Xrm_GetNextDevInUnnotifiedState(CExtendedResourceManager *self); extern uint8_t Xrm_GetResourceObjectIndex(CExtendedResourceManager *self, Xrm_Job_t *job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t **obj_pptr); extern bool Xrm_SearchNextResourceObject(CExtendedResourceManager *self); extern bool Xrm_IsCurrDeviceAlreadyAttached(CExtendedResourceManager *self); extern void Xrm_ProcessJob(CExtendedResourceManager *self); extern bool Xrm_IsPartOfJobList (void * job_ptr, void * resrc_obj_ptr); extern bool Xrm_IsDefaultCreatedPort(CExtendedResourceManager *self, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr); extern bool Xrm_StoreResourceHandle(CExtendedResourceManager *self, uint16_t resource_handle, Xrm_Job_t *job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr); extern bool Xrm_SetJobAsInvalid(void * job_ptr, void * xrm_inst); extern bool Xrm_MarkThisResrcAsInvalid (void *resrc_ptr, void * xrm_inst, void *ud_ptr2, void *ud_ptr3); extern bool Xrm_FreeResrcHandleAndNtf(void *resrc_ptr, void *resrc_handle, void *job_ptr, void * user_arg); extern bool Xrm_SetCurrJobPtr(void *resrc_ptr, void *resrc_handle, void *job_ptr, void * user_arg); extern bool Xrm_ReleaseResrcHandle(void *resrc_ptr, void *job_ptr, void *resrc_obj_pptr, void * user_arg); extern bool Xrm_CntResHandleEntries(void * job_ptr, void * param_ptr); extern bool Xrm_IncrResHandleEntryCnt (void *resrc_ptr, void *job_ptr, void *param_ptr, void * user_arg); extern bool Xrm_SetNtfForThisJob(void * job_ptr, void * ud_ptr); extern bool Xrm_IsInMyJobsList (void * self, void * job_ptr); extern uint16_t Xrm_GetResourceHandle(CExtendedResourceManager *self, Xrm_Job_t *job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr, Xrmp_CheckJobListFunc_t func_ptr); extern uint8_t Xrm_CountResourceHandleEntries(CExtendedResourceManager *self, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr); extern void Xrm_ReleaseResourceHandle(CExtendedResourceManager *self, Xrm_Job_t *job_ptr, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_ptr); extern uint8_t Xrm_ReleaseResourceHandles(CExtendedResourceManager *self, Xrm_Job_t *job_ptr, uint16_t resource_handle_list[], uint8_t resource_handle_list_size, uint16_t failed_resource_handle); extern void Xrm_ReleaseResrcHandles(CExtendedResourceManager *self); extern void Xrm_HandleError(CExtendedResourceManager *self); extern void Xrm_ReportAutoDestructionResult(CExtendedResourceManager *self); extern void Xrm_MarkResrcAndJobsAsInvalid (CExtendedResourceManager *self); extern void Xrm_MarkRemoteDevicesAsUnsync(CExtendedResourceManager *self); extern void Xrm_ReportJobDestructionResult(CExtendedResourceManager *self); extern void Xrm_FinishJob(CExtendedResourceManager *self); extern void Xrm_NotifyInvalidJobs(CExtendedResourceManager *self); /* INIC Resource Management API */ extern void Xrm_CreateMostSocket(CExtendedResourceManager *self); extern void Xrm_CreateMlbPort(CExtendedResourceManager *self); extern void Xrm_CreateMlbSocket(CExtendedResourceManager *self); extern void Xrm_CreateUsbPort(CExtendedResourceManager *self); extern void Xrm_CreateUsbSocket(CExtendedResourceManager *self); extern void Xrm_CreateRmckPort(CExtendedResourceManager *self); extern void Xrm_CreateStreamPort(CExtendedResourceManager *self); extern void Xrm_CreateStreamSocket(CExtendedResourceManager *self); extern void Xrm_CreateSyncCon(CExtendedResourceManager *self); extern void Xrm_CreateDfiPhaseCon(CExtendedResourceManager *self); extern void Xrm_CreateCombiner(CExtendedResourceManager *self); extern void Xrm_CreateSplitter(CExtendedResourceManager *self); extern void Xrm_CreateAvpCon(CExtendedResourceManager *self); extern void Xrm_CreateQoSCon(CExtendedResourceManager *self); extern void Xrm_ResourceMonitorCb(void *self, void *result_ptr); extern void Xrm_RequestResourceList(CExtendedResourceManager *self); extern void Xrm_RequestResourceListResultCb(void *self, void *result_ptr); extern void Xrm_DestroyResources(CExtendedResourceManager *self, Sobs_UpdateCb_t result_fptr); extern void Xrm_ResetResourceMonitor(CExtendedResourceManager *self); extern void Xrm_DestroyResourcesResultCb(void *self, void *result_ptr); extern void Xrm_DestroyJobResourcesResultCb(void *self, void *result_ptr); extern void Xrm_StdResultCb(void *self, void *result_ptr); extern void Xrm_Stream_PortConfigResult(void *self, void *result_ptr); extern void Xrm_Most_PortEnableResult(void *self, void *result_ptr); extern void Xrm_Most_PortEnFullStrResult(void *self, void *result_ptr); extern Ucs_Return_t Xrm_RemoteDeviceAttach (CExtendedResourceManager *self, Srv_Event_t next_set_event); extern void Xrm_RmtDevAttachResultCb(void *self, Rsm_Result_t result); extern Ucs_Return_t Xrm_SetStreamPortConfiguration (CExtendedResourceManager *self); extern Ucs_Return_t Xrm_GetStreamPortConfiguration (CExtendedResourceManager *self); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* #ifndef UCS_XRM_PV_H */ /*! * @} * \endcond */ /*------------------------------------------------------------------------------------------------*/ /* End of file */ /*------------------------------------------------------------------------------------------------*/