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; }
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); }
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); } } } }
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; }
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; }