예제 #1
0
int testSensor(SaHpiSessionIdT sessionId, SaHpiResourceIdT resourceId, SaHpiRdrT *rdr)
{
        SaErrorT status;
        int retval = SAF_TEST_NOTSUPPORT;
        SaHpiSensorRecT *sensorRec;
        SaHpiBoolT sensorEventsEnabled;

        sensorRec = &rdr->RdrTypeUnion.SensorRec;

        status =
            saHpiSensorEventEnableGet(sessionId, resourceId,
                                      sensorRec->Num,
                                      &sensorEventsEnabled);
        if (status == SA_ERR_HPI_ENTITY_NOT_PRESENT) {
                retval = SAF_TEST_NOTSUPPORT;
        } else if (status != SA_OK) {
                retval = SAF_TEST_UNRESOLVED;
                e_print(saHpiSensorEnableGet, SA_OK, status);
        } else if (sensorEventsEnabled) {
                retval =
                    run_test(sessionId, resourceId, sensorRec);
        } else if (sensorRec->EventCtrl == SAHPI_SEC_PER_EVENT) {
                status =
                    saHpiSensorEventEnableSet(sessionId,
                                              resourceId,
                                              sensorRec->Num,
                                              SAHPI_TRUE);
                if (status != SA_OK) {
                        retval = SAF_TEST_UNRESOLVED;
                        e_print(saHpiSensorEventEnableSet, SA_OK, status);
                } else {
                        retval = run_test(sessionId, resourceId, sensorRec);

                        if (retval == SAF_TEST_PASS) {
                                sensorData[sensorCount-1].origEventEnable = SAHPI_FALSE;
                        } else {

                                // restore EventEnabled state
                                status = saHpiSensorEventEnableSet(sessionId,
                                                                   resourceId,
                                                                   sensorRec->Num,
                                                                   SAHPI_FALSE);
                                if (status != SA_OK) {
                                         e_print(saHpiSensorEventEnableSet, SA_OK, status);
                                }
                        }
                }
        }

        if (retval == SAF_TEST_PASS && sensorCount % POLL_COUNT == 0) {
                retval = checkForEvents(sessionId);
        }

        return retval;
}
예제 #2
0
int Test_Rdr(SaHpiSessionIdT session,
	     SaHpiResourceIdT resourceId, SaHpiRdrT rdr)
{
	SaErrorT status;
	int retval = SAF_TEST_UNKNOWN;
	SaHpiSensorNumT s_num = 0;
	SaHpiBoolT Enable = SAHPI_FALSE;

	if (rdr.RdrType == SAHPI_SENSOR_RDR) {
		s_num = rdr.RdrTypeUnion.SensorRec.Num;

		if (rdr.RdrTypeUnion.SensorRec.EventCtrl != SAHPI_SEC_READ_ONLY)
			retval = SAF_TEST_NOTSUPPORT;	// Event enabled can be changed
	} else			// Non-Sensor RDR
		retval = SAF_TEST_NOTSUPPORT;

	if (retval == SAF_TEST_UNKNOWN) {
		//
		//  Call saHpiSensorEventEnableSet on a sensor which does not
		//   support the changing of the event enable status.
		//
		status = saHpiSensorEventEnableSet(session,
						   resourceId, s_num, Enable);
		if (status != SA_ERR_HPI_READ_ONLY) {
			e_print(saHpiSensorEventEnableSet,
				SA_ERR_HPI_READ_ONLY, status);
			retval = SAF_TEST_FAIL;
		} else
			retval = SAF_TEST_PASS;
	}
	return (retval);
}
예제 #3
0
void restoreSensors(SaHpiSessionIdT sessionId) {
    int       i;
    SaErrorT  status;

    for (i = 0; i < sensorCount; i++) {
            status = saHpiSensorThresholdsSet(sessionId, 
                                              sensorData[i].resourceId,
                                              sensorData[i].sensorNum,
                                              &sensorData[i].thresholds);
            if (status != SA_OK) {
                    e_print(saHpiSensorThresholdsSet, SA_OK, status);
            }
                        

           if (sensorData[i].restoreMasks) {
                // restore event masks
                if (!(sensorData[i].assertEventMask & SAHPI_ES_UPPER_MINOR)) {
                        status = saHpiSensorEventMasksSet(sessionId, sensorData[i].resourceId,
                                                          sensorData[i].sensorNum,
                                                          SAHPI_SENS_REMOVE_EVENTS_FROM_MASKS,
                                                          SAHPI_ES_UPPER_MINOR, 0x0);
                        if (status != SA_OK) {
                                e_print(saHpiSensorEventMasksSet, SA_OK, status);
                        }
                }

                if (!(sensorData[i].deassertEventMask & SAHPI_ES_UPPER_MINOR)) {
                        status = saHpiSensorEventMasksSet(sessionId, sensorData[i].resourceId,
                                                          sensorData[i].sensorNum,
                                                          SAHPI_SENS_REMOVE_EVENTS_FROM_MASKS,
                                                          0x0, SAHPI_ES_UPPER_MINOR);
                        if (status != SA_OK) {
                                e_print(saHpiSensorEventMasksSet, SA_OK, status);
                        }
                }
           }
                        
           if (sensorData[i].origEventEnable == SAHPI_FALSE) {
                // restore EventEnabled state
                status =
                    saHpiSensorEventEnableSet(sessionId,
                                              sensorData[i].resourceId,
                                              sensorData[i].sensorNum,
                                              SAHPI_FALSE);
                if (status != SA_OK) {
                        e_print(saHpiSensorEventEnableSet, SA_OK, status);
                }
           }
        }
}
예제 #4
0
int main(int argc, char **argv)
{
	SaHpiSessionIdT sid = 0;
	SaHpiBoolT enable;
	SaErrorT rc = SA_OK;

        rc = saHpiSessionOpen(SAHPI_UNSPECIFIED_DOMAIN_ID, &sid, NULL);
	if (rc != SA_OK) {
		dbg("Failed to open session");
                return -1;
	}

	rc = saHpiDiscover(sid);
	if (rc != SA_OK) {
		dbg("Failed to run discover");
                return -1;
	}

        /* get sensor event enable */
        rc = saHpiSensorEventEnableGet(sid, 1, 1, &enable);
        if (rc != SA_OK) {
		dbg("Couldn't get sensor event enable");
		dbg("Error %s",oh_lookup_error(rc));
                return -1;
	}

        /* set sensor event enable */
        rc = saHpiSensorEventEnableSet(sid, 1, 1, enable);
        if (rc == SA_OK) {
                /* all our sensors are read-only so if we can change the
                   sensor it is an error */
		dbg("Error: able to write to a read-only sensor");
                return -1;
	}

	return 0;
}
예제 #5
0
int main(int argc, char **argv) 
{

	/* ************************
	 * Local variables
	 * ***********************/	 
	int testfail = 0;
	SaErrorT          err;
	SaErrorT expected_err;
	SaHpiRptEntryT rptentry;
	SaHpiRdrT      rdr;		
	SaHpiResourceIdT  id;
        SaHpiSessionIdT sessionid;
	SaHpiEntryIdT entryid;
	SaHpiEntryIdT nextentryid;
	SaHpiBoolT foundSensor;			
	SaHpiSensorNumT sid = 0;
	SaHpiBoolT enable = SAHPI_FALSE;

	/* *************************************	 	 
	 * Find a resource with Sensor type rdr
	 * ************************************* */		
	err = tsetup(&sessionid);
	if (err != SA_OK) {
		printf("Error! Can not open session for test environment\n");
		printf("      File=%s, Line=%d\n", __FILE__, __LINE__);
		return -1;

	}
	err = tfind_resource(&sessionid,SAHPI_CAPABILITY_SENSOR,SAHPI_FIRST_ENTRY, &rptentry, SAHPI_TRUE);
	if (err != SA_OK) {
		printf("Error! Can not find resources for test environment\n");
		printf("      File=%s, Line=%d\n", __FILE__, __LINE__);
		err = tcleanup(&sessionid);
		return SA_OK;
	}

	id = rptentry.ResourceId;
	/************************** 
	 * Test: find a sensor with desired property
	 **************************/
	entryid = SAHPI_FIRST_ENTRY;
	foundSensor = SAHPI_FALSE;			
	do {
		err = saHpiRdrGet(sessionid,id,entryid,&nextentryid, &rdr);
		if (err == SA_OK)
		{
			if ((rdr.RdrType == SAHPI_SENSOR_RDR) &&
				(rdr.RdrTypeUnion.SensorRec.DataFormat.IsSupported == SAHPI_FALSE))
			{
				foundSensor = SAHPI_TRUE;
				break;
														
			}
			entryid = nextentryid;
		}
	} while ((err == SA_OK) && (entryid != SAHPI_LAST_ENTRY)) ;

	if (!foundSensor) {
		dbg("Did not find desired resource for test\n");
		return(SA_OK);
	} else {
		sid = rdr.RdrTypeUnion.SensorRec.Num; 
	}	

	/************************** 
	 * Test: enable event for nonsupported capability
	 **************************/
	expected_err = SA_ERR_HPI_READ_ONLY;                   
	err = saHpiSensorEventEnableSet(sessionid, id, sid, enable);
	checkstatus(err, expected_err, testfail);

	/***************************
	 * Cleanup after all tests
	 ***************************/
	 err = tcleanup(&sessionid);
	 return testfail;

}