/*------------------------------------------------------------------------------------------------*/
/* 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 Implementation of the MNS Factory.
*
* \cond UCS_INTERNAL_DOC
* \addtogroup G_FAC
* @{
*/
/*------------------------------------------------------------------------------------------------*/
/* Includes */
/*------------------------------------------------------------------------------------------------*/
#include "ucs_factory.h"
#include "ucs_xrm_pv.h"
/*------------------------------------------------------------------------------------------------*/
/* Internal macros */
/*------------------------------------------------------------------------------------------------*/
#define IS_VALID_ADDR(addr) ((UCS_ADDR_LOCAL_DEV == (addr)) || ((0x0FU < (addr)) && (0x300U > (addr))) || ((0x04FFU < (addr)) && (0x0FF0U > (addr)))) /* parasoft-suppress MISRA2004-19_7 "common definition of type cast improves code" */
/*------------------------------------------------------------------------------------------------*/
/* Internal prototypes */
/*------------------------------------------------------------------------------------------------*/
static void Fac_ConstructFbi (CFactory * self, CInic * fbi, uint16_t address);
static CInic * Fac_SearchFbi(CFactory * self, uint16_t address);
static void Fac_ConstructNsm (CFactory * self, CNodeScriptManagement * nsm, uint16_t address);
static CRemoteSyncManagement * Fac_SearchRsm(CFactory * self, uint16_t address);
static CExtendedResourceManager * Fac_SearchXrm(CFactory * self, uint16_t address);
static CGpio * Fac_SearchGpio(CFactory * self, uint16_t address);
static CI2c* Fac_SearchI2c(CFactory * self, uint16_t address);
static CNodeScriptManagement * Fac_SearchNsm(CFactory * self, uint16_t address);
static CInic * Fac_GetUninitializedFbi (CFactory * self);
static CNodeScriptManagement * Fac_GetUninitializedNsm (CFactory * self);
static CRemoteSyncManagement * Fac_GetUninitializedRsm (CFactory * self);
static CExtendedResourceManager * Fac_GetUninitializedXrm (CFactory * self);
static CGpio * Fac_GetUninitializedGpio (CFactory * self);
static CI2c * Fac_GetUninitializedI2c (CFactory * self);
static bool Fac_IsFbiUninitialized(CInic * fbi);
static bool Fac_IsRsmUninitialized(CRemoteSyncManagement * rsm);
static bool Fac_IsXrmUninitialized(CExtendedResourceManager * xrm);
static bool Fac_IsGpioUninitialized(CGpio * gpio);
static bool Fac_IsI2cUninitialized(CI2c * i2c);
static bool Fac_IsNsmUninitialized(CNodeScriptManagement * nsm);
/*------------------------------------------------------------------------------------------------*/
/* Implementation of class CFactory */
/*------------------------------------------------------------------------------------------------*/
/*! \brief Constructor of the MNS Factory class.
* \param self Instance pointer
* \param init_ptr init data_ptr
*/
void Fac_Ctor(CFactory * self, Fac_InitData_t * init_ptr)
{
uint8_t i;
Rsm_InitData_t rsm_init_data;
MISC_MEM_SET(self, 0, sizeof(CFactory));
/* set base and net instances */
self->base_ptr = init_ptr->base_ptr;
self->net_ptr = init_ptr->net_ptr;
self->xrmp_ptr = init_ptr->xrmp_ptr;
self->icm_transceiver = init_ptr->icm_transceiver;
self->rcm_transceiver = init_ptr->rcm_transceiver;
rsm_init_data.base_ptr = self->base_ptr;
rsm_init_data.net_ptr = self->net_ptr;
for (i = 0U; ifbi_list[i];
Rsm_Ctor(&self->rsm_list[i], &rsm_init_data);
}
}
/*------------------------------------------------------------------------------------------------*/
/* Service */
/*------------------------------------------------------------------------------------------------*/
/*! \brief Returns the XRM instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \param res_debugging_fptr The resources debugging callback function
* \param check_unmute_fptr The check unmute callback function
* \return a reference to a XRM instance or \c NULL if no appropriate instance has been found.
*/
CExtendedResourceManager * Fac_GetXrm(CFactory * self, uint16_t address, Ucs_Xrm_ResourceDebugCb_t res_debugging_fptr, Ucs_Xrm_CheckUnmuteCb_t check_unmute_fptr)
{
CRemoteSyncManagement * rsm_inst = NULL;
CExtendedResourceManager * xrm_inst = NULL;
if (IS_VALID_ADDR(address))
{
xrm_inst = Fac_SearchXrm(self, address);
if (xrm_inst == NULL)
{
rsm_inst = Fac_GetRsm(self, address);
if (rsm_inst != NULL)
{
Xrm_InitData_t xrm_init_data;
xrm_inst = Fac_GetUninitializedXrm(self);
if (xrm_inst != NULL)
{
xrm_init_data.base_ptr = self->base_ptr;
xrm_init_data.net_ptr = self->net_ptr;
xrm_init_data.rsm_ptr = rsm_inst;
xrm_init_data.inic_ptr = rsm_inst->inic_ptr;
xrm_init_data.xrmp_ptr = self->xrmp_ptr;
xrm_init_data.check_unmute_fptr = check_unmute_fptr;
xrm_init_data.res_debugging_fptr = res_debugging_fptr;
Xrm_Ctor(xrm_inst, &xrm_init_data);
}
}
}
Xrm_SetResourceDebugCbFn(xrm_inst, res_debugging_fptr);
}
return xrm_inst;
}
/*! \brief Returns the XRM instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \param check_unmute_fptr The check unmute callback function
* \return a reference to a XRM instance or \c NULL if no appropriate instance has been found.
*/
CExtendedResourceManager * Fac_GetXrmLegacy(CFactory * self, uint16_t address, Ucs_Xrm_CheckUnmuteCb_t check_unmute_fptr)
{
return Fac_GetXrm(self, address, NULL, check_unmute_fptr);
}
/*! \brief Returns the XRM instance associated with the resource list.
* \note This function should only be used in case of Ucs_Xrm_Destroy() since it's certain in that case that the XRM instance for the given job list already exists!
* \param self Instance pointer
* \param resource_object_list Reference to the job list
* \return a reference to a XRM instance or \c NULL if no appropriate instance has been found.
*/
CExtendedResourceManager * Fac_GetXrmByJobList(CFactory * self, UCS_XRM_CONST Ucs_Xrm_ResObject_t *resource_object_list[])
{
uint8_t i;
CExtendedResourceManager * ret_xrm = NULL;
for(i=0U; ixrm_list[i], resource_object_list))
{
ret_xrm = &self->xrm_list[i];
break;
}
}
return ret_xrm;
}
/*! \brief Returns the FBlock INIC instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \return a reference to a FBI instance or \c NULL if no suitable instance has been found.
*/
CInic * Fac_GetInic(CFactory * self, uint16_t address)
{
CInic * fbi_inst = NULL;
if (IS_VALID_ADDR(address))
{
fbi_inst = Fac_SearchFbi(self, address);
if (fbi_inst == NULL)
{
fbi_inst = Fac_GetUninitializedFbi(self);
if (fbi_inst != NULL)
{
Fac_ConstructFbi(self, fbi_inst, address);
}
}
}
return fbi_inst;
}
/*! \brief Returns the CNodeScriptManagement instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \return a reference to a FBI instance or \c NULL if no suitable instance has been found.
*/
CNodeScriptManagement * Fac_GetNsm(CFactory * self, uint16_t address)
{
CNodeScriptManagement * nsm_inst = NULL;
if (IS_VALID_ADDR(address))
{
nsm_inst = Fac_SearchNsm(self, address);
if (nsm_inst == NULL)
{
nsm_inst = Fac_GetUninitializedNsm(self);
if (nsm_inst != NULL)
{
Fac_ConstructNsm(self, nsm_inst, address);
}
}
}
return nsm_inst;
}
/*! \brief Returns the RSM instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \return a reference to a RSM instance or \c NULL if no suitable instance has been found.
*/
CRemoteSyncManagement * Fac_GetRsm(CFactory * self, uint16_t address)
{
CRemoteSyncManagement * rsm_inst = NULL;
if (IS_VALID_ADDR(address))
{
rsm_inst = Fac_SearchRsm(self, address);
if (rsm_inst == NULL)
{
rsm_inst = Fac_GetUninitializedRsm(self);
if (rsm_inst != NULL)
{
Fac_ConstructFbi(self, rsm_inst->inic_ptr, address);
}
}
}
return rsm_inst;
}
/*! \brief Returns the GPIO instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \param trigger_event_status_fptr User GPIO trigger event status callback function pointer.
* \return a reference to a GPIO instance or \c NULL if no suitable instance has been found.
*/
CGpio * Fac_GetGpio(CFactory * self, uint16_t address, Ucs_Gpio_TriggerEventResultCb_t trigger_event_status_fptr)
{
CGpio * gpio_inst = NULL;
CNodeScriptManagement * nsm_inst = NULL;
if (IS_VALID_ADDR(address))
{
gpio_inst = Fac_SearchGpio(self, address);
if (NULL == gpio_inst)
{
nsm_inst = Fac_GetNsm(self, address);
if (NULL != nsm_inst)
{
Gpio_InitData_t gpio_init_data;
gpio_inst = Fac_GetUninitializedGpio(self);
if (NULL != gpio_inst)
{
gpio_init_data.nsm_ptr = nsm_inst;
gpio_init_data.inic_ptr = nsm_inst->rsm_ptr->inic_ptr;
gpio_init_data.trigger_event_status_fptr = trigger_event_status_fptr;
Gpio_Ctor(gpio_inst, &gpio_init_data);
}
}
}
}
return gpio_inst;
}
/*! \brief Returns the I2C instance associated with the given address.
* \param self Instance pointer
* \param address Address of the device associated with the instance
* \param i2c_interrupt_report_fptr User GPIO trigger event status callback function pointer.
* \return a reference to an I2C instance or \c NULL if no suitable instance has been found.
*/
CI2c * Fac_GetI2c(CFactory * self, uint16_t address, Ucs_I2c_IntEventReportCb_t i2c_interrupt_report_fptr)
{
CI2c * i2c_inst = NULL;
CNodeScriptManagement * nsm_inst = NULL;
if (IS_VALID_ADDR(address))
{
i2c_inst = Fac_SearchI2c (self, address);
if (NULL == i2c_inst)
{
nsm_inst = Fac_GetNsm(self, address);
if (nsm_inst != NULL)
{
I2c_InitData_t i2c_init_data;
i2c_inst = Fac_GetUninitializedI2c(self);
if (NULL != i2c_inst)
{
i2c_init_data.nsm_ptr = nsm_inst;
i2c_init_data.inic_ptr = nsm_inst->rsm_ptr->inic_ptr;
i2c_init_data.i2c_interrupt_report_fptr = i2c_interrupt_report_fptr;
I2c_Ctor(i2c_inst, &i2c_init_data);
}
}
}
}
return i2c_inst;
}
/*! \brief Searches for the INIC instance associated with the given address and returns It if found.
* \param self Instance pointer
* \param address Address of the device associated with this instance
* \return a reference to the found instance otherwise \c NULL.
*/
CInic * Fac_FindInic(CFactory * self, uint16_t address)
{
return Fac_SearchFbi (self, address);
}
/*! \brief Searches for the NSM instance associated with the given address and returns It if found.
* \param self Instance pointer
* \param address Address of the device associated with this instance
* \return a reference to the found instance otherwise \c NULL.
*/
CNodeScriptManagement * Fac_FindNsm(CFactory * self, uint16_t address)
{
return Fac_SearchNsm (self, address);
}
/*! \brief Searches for the RSM instance associated with the given address and returns It if found.
* \param self Instance pointer
* \param address Address of the device associated with this instance
* \return a reference to the found instance otherwise \c NULL.
*/
CRemoteSyncManagement * Fac_FindRsm(CFactory * self, uint16_t address)
{
return Fac_SearchRsm (self, address);
}
/*! \brief Calls the given function for each instance of inst_type type. If the func_ptr
* returns true the loop is stopped.
* \param self Reference to a Factory Instance
* \param inst_type The instance type to be looked for
* \param func_ptr Reference of the callback function which is called for each node
* \param user_data_ptr Reference of optional user data pass to the func_ptr
*/
void Fac_Foreach(CFactory * self, Fac_Inst_t inst_type, Fac_ForeachFunc_t func_ptr, void *user_data_ptr)
{
uint8_t j;
void * curr_inst = NULL;
bool exit_loop = false;
for(j=0U; jfbi_list[j];
if (Fac_IsFbiUninitialized((CInic *)curr_inst))
{
curr_inst = NULL;
}
break;
case FAC_INST_RSM:
curr_inst = &self->rsm_list[j];
if (Fac_IsRsmUninitialized((CRemoteSyncManagement *)curr_inst))
{
curr_inst = NULL;
}
break;
case FAC_INST_XRM:
curr_inst = &self->xrm_list[j];
if (Fac_IsXrmUninitialized((CExtendedResourceManager *)curr_inst))
{
curr_inst = NULL;
}
break;
case FAC_INST_GPIO:
curr_inst = &self->gpio_list[j];
if (Fac_IsGpioUninitialized((CGpio *)curr_inst))
{
curr_inst = NULL;
}
break;
case FAC_INST_I2C:
curr_inst = &self->i2c_list[j];
if (Fac_IsI2cUninitialized((CI2c *)curr_inst))
{
curr_inst = NULL;
}
break;
default:
break;
}
if (curr_inst != NULL)
{
if (func_ptr(inst_type, curr_inst, user_data_ptr) != false)
{
exit_loop = true;
}
}
else
{
exit_loop = true;
}
if (exit_loop)
{
break;
}
}
}
/*------------------------------------------------------------------------------------------------*/
/* Private Methods */
/*------------------------------------------------------------------------------------------------*/
/*! \brief Search for the FBI instance associated with the given address and return It.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found FBI or \c NULL if no suitable instance has been found.
*/
static CInic * Fac_SearchFbi(CFactory * self, uint16_t address)
{
CInic * found_fbi = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (ifbi_list[i])); i++)
{
if (tmp_addr == Inic_GetTargetAddress(&self->fbi_list[i]))
{
found_fbi = &self->fbi_list[i];
break;
}
}
return found_fbi;
}
/*! \brief Search for the NSM instance associated with the given address and return It.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found NSM or \c NULL if no suitable instance has been found.
*/
static CNodeScriptManagement * Fac_SearchNsm(CFactory * self, uint16_t address)
{
CNodeScriptManagement * found_nsm = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (insm_list[i])); i++)
{
if (tmp_addr == self->nsm_list[i].target_address)
{
found_nsm = &self->nsm_list[i];
break;
}
}
return found_nsm;
}
/*! \brief Search for the RSM instance associated with the given address.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found RSM or \c NULL if no suitable instance has been found.
*/
static CRemoteSyncManagement * Fac_SearchRsm(CFactory * self, uint16_t address)
{
CRemoteSyncManagement * found_rsm = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (irsm_list[i].inic_ptr)); i++)
{
if (tmp_addr == Inic_GetTargetAddress(self->rsm_list[i].inic_ptr))
{
found_rsm = &self->rsm_list[i];
break;
}
}
return found_rsm;
}
/*! \brief Search for the XRM instance associated with the given address.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found XRM or \c NULL if no suitable instance has been found.
*/
static CExtendedResourceManager * Fac_SearchXrm(CFactory * self, uint16_t address)
{
CExtendedResourceManager * found_xrm = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (ixrm_list[i])); i++)
{
if (tmp_addr == Inic_GetTargetAddress(self->xrm_list[i].rsm_ptr->inic_ptr))
{
found_xrm = &self->xrm_list[i];
break;
}
}
return found_xrm;
}
/*! \brief Search for the Gpio instance associated with the given address.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found GPIO or \c NULL if no suitable instance has been found.
*/
static CGpio * Fac_SearchGpio(CFactory * self, uint16_t address)
{
CGpio * found_gpio = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (igpio_list[i])); i++)
{
if (tmp_addr == Inic_GetTargetAddress(self->gpio_list[i].nsm_ptr->rsm_ptr->inic_ptr))
{
found_gpio = &self->gpio_list[i];
break;
}
}
return found_gpio;
}
/*! \brief Search for the I2c instance associated with the given address.
* \param self Instance pointer
* \param address Address to be looked for
* \return a reference to the found GPIO or \c NULL if no suitable instance has been found.
*/
static CI2c * Fac_SearchI2c(CFactory * self, uint16_t address)
{
CI2c * found_i2c = NULL;
uint8_t i;
uint16_t tmp_addr = address;
if ((tmp_addr != UCS_ADDR_LOCAL_DEV) && (Net_IsOwnAddress(self->net_ptr, tmp_addr) == NET_IS_OWN_ADDR_NODE))
{
tmp_addr = UCS_ADDR_LOCAL_DEV;
}
for (i = 0U; (ii2c_list[i])); i++)
{
if (tmp_addr == Inic_GetTargetAddress(self->i2c_list[i].nsm_ptr->rsm_ptr->inic_ptr))
{
found_i2c = &self->i2c_list[i];
break;
}
}
return found_i2c;
}
/*! \brief Returns the next free uninitialized XRM instance
* \param self Instance pointer
* \return a reference to the next free uninitialized XRM instance if found, otherwise \c NULL.
*/
static CExtendedResourceManager * Fac_GetUninitializedXrm (CFactory * self)
{
CExtendedResourceManager * tmp_xrm = NULL;
uint8_t i;
for (i = 0U; ixrm_list[i].rsm_ptr == NULL)
{
tmp_xrm = &self->xrm_list[i];
break;
}
}
return tmp_xrm;
}
/*! \brief Returns the next free uninitialized FBI instance
* \param self Instance pointer
* \return a reference to the next free uninitialized FBI instance if found, otherwise \c NULL.
*/
static CInic * Fac_GetUninitializedFbi (CFactory * self)
{
CInic * tmp_inic = NULL;
uint8_t i;
for (i = 0U; ifbi_list[i].base_ptr == NULL)
{
tmp_inic = &self->fbi_list[i];
break;
}
}
return tmp_inic;
}
/*! \brief Returns the next free uninitialized NSM instance
* \param self Instance pointer
* \return a reference to the next free uninitialized NSM instance if found, otherwise \c NULL.
*/
static CNodeScriptManagement * Fac_GetUninitializedNsm (CFactory * self)
{
CNodeScriptManagement * tmp_nsm = NULL;
uint8_t i;
for (i = 0U; insm_list[i].base_ptr == NULL)
{
tmp_nsm = &self->nsm_list[i];
break;
}
}
return tmp_nsm;
}
/*! \brief Returns the next free uninitialized RSM instance
* \param self Instance pointer
* \return a reference to the next free uninitialized RSM instance if found, otherwise \c NULL.
*/
static CRemoteSyncManagement * Fac_GetUninitializedRsm (CFactory * self)
{
CRemoteSyncManagement * tmp_rsm = NULL;
uint8_t i;
for (i = 0U; irsm_list[i].inic_ptr) == 0x0U)
{
tmp_rsm = &self->rsm_list[i];
break;
}
}
return tmp_rsm;
}
/*! \brief Returns the next free uninitialized GPIO instance
* \param self Instance pointer
* \return a reference to the next free uninitialized GPIO instance if found, otherwise \c NULL.
*/
static CGpio * Fac_GetUninitializedGpio (CFactory * self)
{
CGpio * tmp_gpio = NULL;
uint8_t i;
for (i = 0U; igpio_list[i].nsm_ptr)
{
tmp_gpio = &self->gpio_list[i];
break;
}
}
return tmp_gpio;
}
/*! \brief Returns the next free uninitialized I2C instance
* \param self Instance pointer
* \return a reference to the next free uninitialized I2C instance if found, otherwise \c NULL.
*/
static CI2c * Fac_GetUninitializedI2c (CFactory * self)
{
CI2c * tmp_i2c = NULL;
uint8_t i;
for (i = 0U; ii2c_list[i].nsm_ptr)
{
tmp_i2c = &self->i2c_list[i];
break;
}
}
return tmp_i2c;
}
/*! \brief Constructs the given FBI instance
* \param self the MNS factory Instance pointer
* \param fbi the INIC Instance pointer
* \param address the device address of this FBlock INIC
*/
static void Fac_ConstructFbi (CFactory * self, CInic * fbi, uint16_t address)
{
Inic_InitData_t inic_init_data;
if (address == UCS_ADDR_LOCAL_DEV)
{
inic_init_data.xcvr_ptr = self->icm_transceiver;
}
else
{
inic_init_data.xcvr_ptr = self->rcm_transceiver;
}
inic_init_data.base_ptr = self->base_ptr;
inic_init_data.tgt_addr = address;
Inic_Ctor(fbi, &inic_init_data);
}
/*! \brief Constructs the given NSM instance
* \param self the MNS factory Instance pointer
* \param nsm the NSM Instance pointer
* \param address the device address
*/
static void Fac_ConstructNsm (CFactory * self, CNodeScriptManagement * nsm, uint16_t address)
{
Nsm_InitData_t nsm_init_data;
nsm_init_data.base_ptr = self->base_ptr;
nsm_init_data.rcm_ptr = self->rcm_transceiver;
nsm_init_data.rsm_ptr = Fac_GetRsm(self, address);
Nsm_Ctor(nsm, &nsm_init_data);
}
/*! \brief Checks whether the given FBlock INIC instance is uninitialized
* \param fbi the INIC Instance pointer
* \return \c true if the given Fbi instance is not initialized, otherwise \c False.
*/
static bool Fac_IsFbiUninitialized(CInic * fbi)
{
return (fbi->base_ptr == NULL) ;
}
/*! \brief Checks whether the given NSM instance is uninitialized
* \param nsm the NSM Instance pointer
* \return \c true if the given NSM instance is not initialized, otherwise \c False.
*/
static bool Fac_IsNsmUninitialized(CNodeScriptManagement * nsm)
{
return (nsm->base_ptr == NULL) ;
}
/*! \brief Checks whether the given RSM instance is uninitialized
* \param rsm Reference to the RSM instance pointer
* \return \c true if the given Fbi instance is not initialized, otherwise \c False.
*/
static bool Fac_IsRsmUninitialized(CRemoteSyncManagement * rsm)
{
return Fac_IsFbiUninitialized(rsm->inic_ptr);
}
/*! \brief Checks whether the given XRM instance is uninitialized
* \param xrm the XRM Instance pointer
* \return \c true if the given XRM instance is not initialized, otherwise \c False.
*/
static bool Fac_IsXrmUninitialized(CExtendedResourceManager * xrm)
{
return (xrm->rsm_ptr == NULL) ;
}
/*! \brief Checks whether the given GPIO instance is uninitialized
* \param gpio the GPIO Instance pointer
* \return \c true if the given GPIO instance is not initialized, otherwise \c False.
*/
static bool Fac_IsGpioUninitialized(CGpio * gpio)
{
return (NULL == gpio->nsm_ptr);
}
/*! \brief Checks whether the given I2C instance is uninitialized
* \param i2c the I2C Instance pointer
* \return \c true if the given I2C instance is not initialized, otherwise \c False.
*/
static bool Fac_IsI2cUninitialized(CI2c * i2c)
{
return (NULL == i2c->nsm_ptr);
}
/*!
* @}
* \endcond
*/
/*------------------------------------------------------------------------------------------------*/
/* End of file */
/*------------------------------------------------------------------------------------------------*/