From: <av...@us...> - 2011-06-06 23:06:52
|
Revision: 7322 http://openhpi.svn.sourceforge.net/openhpi/?rev=7322&view=rev Author: avpak Date: 2011-06-06 23:06:45 +0000 (Mon, 06 Jun 2011) Log Message: ----------- More on feature request #3307756 - implemented resource power cycle Modified Paths: -------------- openhpi/trunk/plugins/test_agent/resource.cpp openhpi/trunk/plugins/test_agent/resource.h Modified: openhpi/trunk/plugins/test_agent/resource.cpp =================================================================== --- openhpi/trunk/plugins/test_agent/resource.cpp 2011-06-03 06:29:03 UTC (rev 7321) +++ openhpi/trunk/plugins/test_agent/resource.cpp 2011-06-06 23:06:45 UTC (rev 7322) @@ -95,6 +95,8 @@ m_load_id.LoadNumber = SAHPI_LOAD_ID_DEFAULT; m_rst_state = SAHPI_RESET_DEASSERT; m_pwr_state = SAHPI_POWER_OFF; + + m_pwr_cycle_cnt = 0; } cResource::~cResource() @@ -290,13 +292,24 @@ return SA_OK; } -SaErrorT cResource::GetPowerState( SaHpiPowerStateT& state ) const +SaErrorT cResource::GetPowerState( SaHpiPowerStateT& state ) { const SaHpiCapabilitiesT caps = m_rpte.ResourceCapabilities; if ( ( caps & SAHPI_CAPABILITY_POWER ) == 0 ) { return SA_ERR_HPI_CAPABILITY; } + if ( m_pwr_cycle_cnt > 0 ) { + --m_pwr_cycle_cnt; + if ( m_pwr_cycle_cnt == 0 ) { + if ( m_pwr_state == SAHPI_POWER_ON ) { + m_pwr_state = SAHPI_POWER_OFF; + } else if ( m_pwr_state == SAHPI_POWER_OFF ) { + m_pwr_state = SAHPI_POWER_ON; + } + } + } + state = m_pwr_state; return SA_OK; @@ -314,6 +327,7 @@ } else if ( m_pwr_state == SAHPI_POWER_OFF ) { m_pwr_state = SAHPI_POWER_ON; } + m_pwr_cycle_cnt = PwrCycleDuration; } else { m_pwr_state = state; } @@ -591,6 +605,9 @@ // RPT Entry was changed PostResourceEvent( SAHPI_RESE_RESOURCE_UPDATED ); } + if ( var_name == "PowerState" ) { + m_pwr_cycle_cnt = 0; + } CommitChanges(); } Modified: openhpi/trunk/plugins/test_agent/resource.h =================================================================== --- openhpi/trunk/plugins/test_agent/resource.h 2011-06-03 06:29:03 UTC (rev 7321) +++ openhpi/trunk/plugins/test_agent/resource.h 2011-06-06 23:06:45 UTC (rev 7322) @@ -62,7 +62,7 @@ SaErrorT RequestHsAction( SaHpiHsActionT action ); SaErrorT GetHsIndicatorState( SaHpiHsIndicatorStateT& state ) const; SaErrorT SetHsIndicatorState( const SaHpiHsIndicatorStateT& state ); - SaErrorT GetPowerState( SaHpiPowerStateT& state ) const; + SaErrorT GetPowerState( SaHpiPowerStateT& state ); SaErrorT SetPowerState( const SaHpiPowerStateT& state ); SaErrorT ControlParm( SaHpiParmActionT action ); SaErrorT GetLoadId( SaHpiLoadIdT& load_id ) const; @@ -125,6 +125,13 @@ SaHpiLoadIdT m_load_id; SaHpiResetActionT m_rst_state; SaHpiPowerStateT m_pwr_state; + + // If Power State is set to POWER_CYCLE then for PwrCycleDuration times + // saHpiResourcePowerStateGet() call will report ON (or OFF) + // and after that it will report OFF (or ON). + static const int PwrCycleDuration = 3; + + int m_pwr_cycle_cnt; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |