diff options
Diffstat (limited to 'src/fan/Cura_FanAssociatedSensorProvider.c')
-rw-r--r-- | src/fan/Cura_FanAssociatedSensorProvider.c | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/src/fan/Cura_FanAssociatedSensorProvider.c b/src/fan/Cura_FanAssociatedSensorProvider.c new file mode 100644 index 0000000..185518a --- /dev/null +++ b/src/fan/Cura_FanAssociatedSensorProvider.c @@ -0,0 +1,240 @@ +#include <konkret/konkret.h> +#include "Cura_FanAssociatedSensor.h" +#include "fan.h" +#include <globals.h> + +static const CMPIBroker* _cb; + +static void Cura_FanAssociatedSensorInitialize() +{ + init_linux_fan_module(); +} + +static CMPIStatus Cura_FanAssociatedSensorCleanup( + CMPIInstanceMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_FanAssociatedSensorEnumInstanceNames( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + return KDefaultEnumerateInstanceNames( + _cb, mi, cc, cr, cop); +} + +static CMPIStatus Cura_FanAssociatedSensorEnumInstances( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char** properties) +{ + const char *ns = KNameSpace(cop); + + struct cim_fan *sptr = NULL; + struct fanlist *lptr = NULL, *fans = NULL; + if (enum_all_fans(&fans) != 0 ) { + KReturn2(_cb, ERR_FAILED, "Could not list get fan list."); + } + + lptr = fans; + // iterate fan list + while (lptr) { + sptr = lptr->f; + Cura_FanAssociatedSensor w; + Cura_FanAssociatedSensor_Init(&w, _cb, ns); + + Cura_FanRef fan; + Cura_FanRef_Init(&fan, _cb, ns); + Cura_FanRef_Set_CreationClassName(&fan, "Cura_Fan"); + Cura_FanRef_Set_DeviceID(&fan, sptr->device_id); + Cura_FanRef_Set_SystemCreationClassName(&fan, get_system_creation_class_name()); + Cura_FanRef_Set_SystemName(&fan, get_system_name()); + + Cura_FanSensorRef fanSensor; + Cura_FanSensorRef_Init(&fanSensor, _cb, ns); + Cura_FanSensorRef_Set_CreationClassName(&fanSensor, "Cura_FanSensor"); + Cura_FanSensorRef_Set_DeviceID(&fanSensor, sptr->device_id); + Cura_FanSensorRef_Set_SystemCreationClassName(&fanSensor, get_system_creation_class_name()); + Cura_FanSensorRef_Set_SystemName(&fanSensor, get_system_name()); + + Cura_FanAssociatedSensor_Set_Antecedent(&w, &fanSensor); + Cura_FanAssociatedSensor_Set_Dependent(&w, &fan); + + KReturnInstance(cr, w); + lptr = lptr->next; + } + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_FanAssociatedSensorGetInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char** properties) +{ + return KDefaultGetInstance( + _cb, mi, cc, cr, cop, properties); +} + +static CMPIStatus Cura_FanAssociatedSensorCreateInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const CMPIInstance* ci) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_FanAssociatedSensorModifyInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const CMPIInstance* ci, + const char**properties) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_FanAssociatedSensorDeleteInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_FanAssociatedSensorExecQuery( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* lang, + const char* query) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_FanAssociatedSensorAssociationCleanup( + CMPIAssociationMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_FanAssociatedSensorAssociators( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* resultClass, + const char* role, + const char* resultRole, + const char** properties) +{ + return KDefaultAssociators( + _cb, + mi, + cc, + cr, + cop, + Cura_FanAssociatedSensor_ClassName, + assocClass, + resultClass, + role, + resultRole, + properties); +} + +static CMPIStatus Cura_FanAssociatedSensorAssociatorNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* resultClass, + const char* role, + const char* resultRole) +{ + return KDefaultAssociatorNames( + _cb, + mi, + cc, + cr, + cop, + Cura_FanAssociatedSensor_ClassName, + assocClass, + resultClass, + role, + resultRole); +} + +static CMPIStatus Cura_FanAssociatedSensorReferences( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role, + const char** properties) +{ + return KDefaultReferences( + _cb, + mi, + cc, + cr, + cop, + Cura_FanAssociatedSensor_ClassName, + assocClass, + role, + properties); +} + +static CMPIStatus Cura_FanAssociatedSensorReferenceNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role) +{ + return KDefaultReferenceNames( + _cb, + mi, + cc, + cr, + cop, + Cura_FanAssociatedSensor_ClassName, + assocClass, + role); +} + +CMInstanceMIStub( + Cura_FanAssociatedSensor, + Cura_FanAssociatedSensor, + _cb, + Cura_FanAssociatedSensorInitialize()) + +CMAssociationMIStub( + Cura_FanAssociatedSensor, + Cura_FanAssociatedSensor, + _cb, + Cura_FanAssociatedSensorInitialize()) + +KONKRET_REGISTRATION( + "root/cimv2", + "Cura_FanAssociatedSensor", + "Cura_FanAssociatedSensor", + "instance association") |