diff options
Diffstat (limited to 'src/power/Cura_AssociatedPowerManagementServiceProvider.c')
-rw-r--r-- | src/power/Cura_AssociatedPowerManagementServiceProvider.c | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/src/power/Cura_AssociatedPowerManagementServiceProvider.c b/src/power/Cura_AssociatedPowerManagementServiceProvider.c new file mode 100644 index 0000000..82c9ea5 --- /dev/null +++ b/src/power/Cura_AssociatedPowerManagementServiceProvider.c @@ -0,0 +1,269 @@ + +#include "Cura_AssociatedPowerManagementService.h" +#include "Cura_PowerManagementService.h" +#include "CIM_ComputerSystem.h" + +#include "power.h" + +#include "globals.h" + +static const CMPIBroker* _cb; + +static void Cura_AssociatedPowerManagementServiceInitialize(CMPIInstanceMI *mi) +{ + mi->hdl = power_ref(_cb); +} + +static void Cura_AssociatedPowerManagementServiceAssociationInitialize(CMPIAssociationMI *mi) +{ + mi->hdl = power_ref(_cb); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceCleanup( + CMPIInstanceMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + power_unref(mi->hdl); + mi->hdl = NULL; + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceEnumInstanceNames( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + return KDefaultEnumerateInstanceNames( + _cb, mi, cc, cr, cop); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceEnumInstances( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char** properties) +{ + CMPIStatus rc; + const char *ns = KNameSpace(cop); + + Cura_AssociatedPowerManagementService w; + Cura_AssociatedPowerManagementService_Init(&w, _cb, ns); + + CIM_ComputerSystemRef computerSystemRef; + CIM_ComputerSystemRef_Init(&computerSystemRef, _cb, ns); + CIM_ComputerSystemRef_Set_Name(&computerSystemRef, get_system_name()); + CIM_ComputerSystemRef_Set_CreationClassName(&computerSystemRef, get_system_creation_class_name()); + CMPIObjectPath *computerSystemOP = CIM_ComputerSystemRef_ToObjectPath(&computerSystemRef, &rc); + computerSystemOP->ft->setClassName(computerSystemOP, get_system_creation_class_name()); + Cura_AssociatedPowerManagementService_SetObjectPath_UserOfService(&w, computerSystemOP); + + Cura_PowerManagementServiceRef powerManagementServiceRef; + Cura_PowerManagementServiceRef_Init(&powerManagementServiceRef, _cb, ns); + Cura_PowerManagementServiceRef_Set_Name(&powerManagementServiceRef, get_system_name()); + Cura_PowerManagementServiceRef_Set_SystemName(&powerManagementServiceRef, get_system_name()); + Cura_PowerManagementServiceRef_Set_CreationClassName(&powerManagementServiceRef, "Cura_PowerManagementService"); + Cura_PowerManagementServiceRef_Set_SystemCreationClassName(&powerManagementServiceRef, get_system_creation_class_name()); + Cura_AssociatedPowerManagementService_Set_ServiceProvided(&w, &powerManagementServiceRef); + + int count; + unsigned short *list = power_available_requested_power_states(mi->hdl, &count); + Cura_AssociatedPowerManagementService_Init_AvailableRequestedPowerStates(&w, count); + for (int i = 0; i < count; i++) { + Cura_AssociatedPowerManagementService_Set_AvailableRequestedPowerStates(&w, i, list[i]); + } + + Cura_AssociatedPowerManagementService_Set_TransitioningToPowerState(&w, power_transitioning_to_power_state(mi->hdl)); + Cura_AssociatedPowerManagementService_Set_PowerState(&w, 2); + Cura_AssociatedPowerManagementService_Set_RequestedPowerState(&w, power_requested_power_state(mi->hdl)); + + KReturnInstance(cr, w); + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceGetInstance( + 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_AssociatedPowerManagementServiceCreateInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const CMPIInstance* ci) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceModifyInstance( + 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_AssociatedPowerManagementServiceDeleteInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceExecQuery( + 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_AssociatedPowerManagementServiceAssociationCleanup( + CMPIAssociationMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + power_unref(mi->hdl); + mi->hdl = NULL; + + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceAssociators( + 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) +{ + if (!assocClass) { + assocClass = "Cura_AssociatedPowerManagementService"; + } + + return KDefaultAssociators( + _cb, + mi, + cc, + cr, + cop, + Cura_AssociatedPowerManagementService_ClassName, + assocClass, + resultClass, + role, + resultRole, + properties); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceAssociatorNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* resultClass, + const char* role, + const char* resultRole) +{ + if (!assocClass) { + assocClass = "Cura_AssociatedPowerManagementService"; + } + + return KDefaultAssociatorNames( + _cb, + mi, + cc, + cr, + cop, + Cura_AssociatedPowerManagementService_ClassName, + assocClass, + resultClass, + role, + resultRole); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceReferences( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role, + const char** properties) +{ + if (!assocClass) { + assocClass = "Cura_AssociatedPowerManagementService"; + } + + return KDefaultReferences( + _cb, + mi, + cc, + cr, + cop, + Cura_AssociatedPowerManagementService_ClassName, + assocClass, + role, + properties); +} + +static CMPIStatus Cura_AssociatedPowerManagementServiceReferenceNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role) +{ + if (!assocClass) { + assocClass = "Cura_AssociatedPowerManagementService"; + } + + return KDefaultReferenceNames( + _cb, + mi, + cc, + cr, + cop, + Cura_AssociatedPowerManagementService_ClassName, + assocClass, + role); +} + +CMInstanceMIStub( + Cura_AssociatedPowerManagementService, + Cura_AssociatedPowerManagementService, + _cb, + Cura_AssociatedPowerManagementServiceInitialize(&mi)) + +CMAssociationMIStub( + Cura_AssociatedPowerManagementService, + Cura_AssociatedPowerManagementService, + _cb, + Cura_AssociatedPowerManagementServiceAssociationInitialize(&mi)) + +KONKRET_REGISTRATION( + "root/cimv2", + "Cura_AssociatedPowerManagementService", + "Cura_AssociatedPowerManagementService", + "instance association") |