Пример #1
0
void cHpiSubProviderAlarm::GetInfo( std::deque<HpiInfo>& info ) const
{
    info.clear();

    SaErrorT rv;
    SaHpiAlarmT a;

    rv = saHpiAlarmGet( m_ctx.session_id, m_ctx.alarm_id, &a );
    if ( rv != SA_OK ) {
        Line( info, L"saHpiAlarmGet failed", rv, I32_SaError );
        return;
    }

    Line( info, L"Alarm Id", a.AlarmId, UI32_SaHpiAlarmId );
    Line( info, L"Timestamp", a.Timestamp, I64_SaHpiTime );
    Line( info, L"Severity", a.Severity );
    Line( info, L"Acknowledged", a.Acknowledged, UI8_SaHpiBool );

    const SaHpiConditionT& c = a.AlarmCond;

    Line( info, L"Condition", L"" );
    Line( info, L"  Type", c.Type );
    Line( info, L"  Entity", c.Entity );
    Line( info, L"  Domain Id", c.DomainId, UI32_ConditionDomainId );
    Line( info, L"  Resource Id", c.ResourceId, UI32_SaHpiResourceId );
    if ( c.Type == SAHPI_STATUS_COND_TYPE_SENSOR ) {
        Line( info, L"  Sensor Number", c.SensorNum, UI32_SaHpiSensorNum );
        Line( info, L"  Event State", c.EventState, UI16_SaHpiEventState );
    }
    Line( info, L"  Name", c.Name );
    if ( c.Type == SAHPI_STATUS_COND_TYPE_OEM ) {
        Line( info, L"  Manufacturer Id", c.Mid, UI32_SaHpiManufacturerId );
    }
    Line( info, L"  Data", c.Data );
}
Пример #2
0
int Test_Domain(SaHpiSessionIdT session_id)
{
	SaHpiAlarmT NewAlarm;
	SaErrorT status;
	int retval = SAF_TEST_UNKNOWN;

	//
	// Create a new Alarm
	//
	NewAlarm.Severity = SAHPI_MINOR;
	NewAlarm.Acknowledged = SAHPI_FALSE;
	NewAlarm.AlarmCond.Type = SAHPI_STATUS_COND_TYPE_USER;
	NewAlarm.AlarmCond.ResourceId = SAHPI_UNSPECIFIED_RESOURCE_ID;
	NewAlarm.AlarmCond.Data.Language = SAHPI_LANG_ENGLISH;
	NewAlarm.AlarmCond.Data.DataType = SAHPI_TL_TYPE_TEXT;
	NewAlarm.AlarmCond.Data.DataLength = 1;
	NewAlarm.AlarmCond.Data.Data[0] = 'a';
	NewAlarm.AlarmCond.Name.Length = 4;
	NewAlarm.AlarmCond.Name.Value[0] = 'T';
	NewAlarm.AlarmCond.Name.Value[1] = 'e';
	NewAlarm.AlarmCond.Name.Value[2] = 's';
	NewAlarm.AlarmCond.Name.Value[3] = 't';

	status = saHpiAlarmAdd(session_id, &NewAlarm);

	if (status != SA_OK) {
		e_print(saHpiAlarmAdd, SA_OK, status);
		retval = SAF_TEST_FAIL;
	} else {
		SaHpiAlarmT Alarm;
		// verify that what we get back is "our" alarm
		status = saHpiAlarmGet(session_id, NewAlarm.AlarmId, &Alarm);
		if (status != SA_OK) {
			e_print(saHpiAlarmGet, SA_OK, status);
			retval = SAF_TEST_UNRESOLVED;
		} else {
			if (!__compare_alarm(&NewAlarm, &Alarm))
				retval = SAF_TEST_PASS;
			else
				retval = SAF_TEST_FAIL;

			// Clean up
			status = saHpiAlarmDelete(session_id,
						  NewAlarm.AlarmId, 0);
			if (status != SA_OK)
				e_print(saHpiAlarmDelete, SA_OK, status);
		}
	}

	return (retval);
}
Пример #3
0
int Test_Domain(SaHpiSessionIdT session_id)
{
	SaHpiAlarmT NewAlarm;
	SaHpiAlarmIdT FirstAlarm, SecondAlarm;

	SaErrorT status;
	int retval = SAF_TEST_UNKNOWN;

	//
	// Create a new Alarm
	//
	NewAlarm.Severity = SAHPI_MINOR;
	NewAlarm.Acknowledged = SAHPI_FALSE;
	NewAlarm.AlarmCond.Type = SAHPI_STATUS_COND_TYPE_USER;
	NewAlarm.AlarmCond.ResourceId = SAHPI_UNSPECIFIED_RESOURCE_ID;
	NewAlarm.AlarmCond.Data.Language = SAHPI_LANG_ENGLISH;
	NewAlarm.AlarmCond.Data.DataType = SAHPI_TL_TYPE_TEXT;
	NewAlarm.AlarmCond.Data.DataLength = 1;
	NewAlarm.AlarmCond.Data.Data[0] = 'a';
	NewAlarm.AlarmCond.DomainId = SAHPI_UNSPECIFIED_DOMAIN_ID;
	NewAlarm.AlarmCond.Name.Length = 4;
	NewAlarm.AlarmCond.Name.Value[0] = 'T';
	NewAlarm.AlarmCond.Name.Value[1] = 'e';
	NewAlarm.AlarmCond.Name.Value[2] = 's';
	NewAlarm.AlarmCond.Name.Value[3] = 't';

	status = saHpiAlarmAdd(session_id, &NewAlarm);

	if (status != SA_OK) {
		// Unable to create a new alarm
		e_print(saHpiAlarmAdd, SA_OK, status);
		retval = SAF_TEST_UNRESOLVED;
	} else {
		// When the Alarm is successfully set
		FirstAlarm = NewAlarm.AlarmId;

		// create the second alarm
		NewAlarm.AlarmId = 0;
		NewAlarm.Timestamp = 0;
		NewAlarm.AlarmCond.Name.Value[0] = '2';
		NewAlarm.AlarmCond.Data.Data[0] = 'b';
		status = saHpiAlarmAdd(session_id, &NewAlarm);

		if (status != SA_OK) {
			// Unable to create a new alarm
			e_print(saHpiAlarmAdd, SA_OK, status);
			retval = SAF_TEST_UNRESOLVED;
		} else {
			SecondAlarm = NewAlarm.AlarmId;

			status = saHpiAlarmAcknowledge(session_id,
						       SAHPI_ENTRY_UNSPECIFIED,
						       SAHPI_MINOR);
			if (status != SA_OK) {
				e_print(saHpiAlarmAcknowledge, SA_OK, status);
				retval = SAF_TEST_FAIL;
			} else {
				// Check the alarms to see if they were marked 
				// as acknowledged

				status =
				    saHpiAlarmGet(session_id, FirstAlarm,
						  &NewAlarm);
				if (status != SA_OK) {
					// Unable to read the new alarm
					e_print(saHpiAlarmGet, SA_OK, status);
					retval = SAF_TEST_UNRESOLVED;
				} else {
					if (NewAlarm.Acknowledged !=
					    SAHPI_FALSE) {
						// Check the second alarm
						status =
						    saHpiAlarmGet(session_id,
								  SecondAlarm,
								  &NewAlarm);
						if (status != SA_OK) {
							// Unable to read the new alarm
							e_print(saHpiAlarmGet,
								SA_OK, status);
							retval =
							    SAF_TEST_UNRESOLVED;
						} else if (NewAlarm.
							   Acknowledged !=
							   SAHPI_FALSE)
							retval = SAF_TEST_PASS;
					}
				}
				if (retval == SAF_TEST_UNKNOWN) {
					m_print
					    ("Function \"saHpiAlarmGet\" failed to acknowledge one but not both alarms with different severity!");
					retval = SAF_TEST_FAIL;
				}
			}

			// Clean up
			status = saHpiAlarmDelete(session_id, SecondAlarm, 0);
		}

		// Clean up
		status = saHpiAlarmDelete(session_id, FirstAlarm, 0);
	}

	return (retval);
}