static void print_idrfield(SaHpiIdrFieldT *field, int len) { int i; #ifdef OPENHPI_USED if (copt.verbose) { oh_print_idrfield(field, len); } else #endif { for (i = 0; i < NFIELDTYP; i++) { if (map_fieldtype[i].type == field->Type) break; } if (i == NFIELDTYP) i--; printf(" FieldId[%d] %s : ", field->FieldId,map_fieldtype[i].str); print_tb(&field->Field); printf("\n"); } }
static void print_idrfield(SaHpiIdrFieldT *field, int len) { SaHpiTextBufferT *strptr; char fieldstr[MAX_STRSIZE]; int i; #ifdef OPENHPI_USED if (fverbose) { oh_print_idrfield(field, len); } else #endif { for (i = 0; i < NFIELDTYP; i++) { if (map_fieldtype[i].type == field->Type) break; } if (i == NFIELDTYP) i--; strptr = &(field->Field); fixstr(strptr,fieldstr); /*stringify if needed*/ printf(" FieldId[%d] %s : %s\n", field->FieldId,map_fieldtype[i].str ,fieldstr); } }
int main(int argc, char **argv) { int number_resources=0; SaErrorT rv; SaHpiSessionIdT sessionid; SaHpiResourceIdT resourceid; SaHpiIdrIdT IdrId = SAHPI_DEFAULT_INVENTORY_ID; SaHpiEntryIdT areaId; SaHpiIdrFieldTypeT fieldType =SAHPI_IDR_FIELDTYPE_UNSPECIFIED; SaHpiEntryIdT fieldId=SAHPI_FIRST_ENTRY , nextFieldId; SaHpiIdrFieldT field; SaHpiResourceIdT resourceid_list[RESOURCE_CAP_LENGTH] = {0}; SaHpiCapabilitiesT capability = SAHPI_CAPABILITY_INVENTORY_DATA; printf("saHpiIdrFieldGet: Test for hpi IDR field get function\n"); rv = saHpiSessionOpen(SAHPI_UNSPECIFIED_DOMAIN_ID, &sessionid, NULL); if (rv != SA_OK) { printf("saHpiSessionOpen failed with error: %s\n", oh_lookup_error(rv)); return rv; } /* Discover the resources with IDR capability */ printf("\nListing the resource with IDR capability \n"); rv = discover_resources(sessionid, capability, resourceid_list, &number_resources); if (rv != SA_OK) { exit(-1); } printf("\nPlease enter the resource id: "); scanf("%d", &resourceid); printf("Please enter the area id: "); scanf("%d", &areaId); printf("Getting the Field for all the fieldTypes for the resource..\n"); rv = saHpiIdrFieldGet(sessionid, resourceid,IdrId, areaId, fieldType, fieldId, &nextFieldId, &field); if (rv != SA_OK) { printf("saHpiIdrFieldGet failed with error: %s\n", oh_lookup_error(rv)); printf("Test case - FAIL\n"); exit (-1); } oh_print_idrfield(&field,6); while (nextFieldId != SAHPI_LAST_ENTRY) { fieldId=nextFieldId; rv = saHpiIdrFieldGet(sessionid, resourceid, IdrId, areaId, fieldType, fieldId, &nextFieldId, &field); if (rv != SA_OK) { printf("saHpiIdrFieldGet failed with error: %s\n", oh_lookup_error(rv)); printf("Test case - FAIL\n"); exit (-1); } oh_print_idrfield(&field,6); } printf("Test case - PASS\n"); rv = saHpiSessionClose(sessionid); return 0; }
/* * This routine walks the complete inventory idr for this resource. * It does not look for a particular IdrAreaType or IdrFieldType. * Particular type tests are coverred in respecting routines. * **/ static SaErrorT walkInventory( SaHpiSessionIdT sessionid, SaHpiResourceIdT resourceid, SaHpiIdrInfoT *idrInfo) { SaErrorT rv = SA_OK, rvField = SA_OK; SaHpiUint32T numAreas; SaHpiUint32T countAreas = 0; SaHpiUint32T countFields = 0; SaHpiEntryIdT areaId; SaHpiEntryIdT nextareaId; SaHpiIdrAreaTypeT areaType; SaHpiIdrAreaHeaderT areaHeader; SaHpiEntryIdT fieldId; SaHpiEntryIdT nextFieldId; SaHpiIdrFieldTypeT fieldType; SaHpiIdrFieldT thisField; numAreas = idrInfo->NumAreas; areaType = SAHPI_IDR_AREATYPE_UNSPECIFIED; areaId = SAHPI_FIRST_ENTRY; do { rv = saHpiIdrAreaHeaderGet(sessionid, resourceid, idrInfo->IdrId, areaType, areaId, &nextareaId, &areaHeader); if (rv == SA_OK) { countAreas++; oh_print_idrareaheader(&areaHeader, 8); fieldType = SAHPI_IDR_FIELDTYPE_UNSPECIFIED; fieldId = SAHPI_FIRST_ENTRY; do { rvField = saHpiIdrFieldGet( sessionid, resourceid, idrInfo->IdrId, areaHeader.AreaId, fieldType, fieldId, &nextFieldId, &thisField); if (rvField == SA_OK) { countFields++; oh_print_idrfield(&thisField, 12); } if (fdebug) printf("saHpiIdrFieldGet error %s\n",oh_lookup_error(rvField)); fieldId = nextFieldId; } while ((rvField == SA_OK) && (fieldId != SAHPI_LAST_ENTRY)); if ( countFields != areaHeader.NumFields) printf("Area Header error! areaHeader.NumFields %d, countFields %d\n", areaHeader.NumFields, countFields); } else { printf("saHpiIdrAreaHeaderGet error %s\n",oh_lookup_error(rv)); } areaId = nextareaId; } while ((rv == SA_OK) && (areaId != SAHPI_LAST_ENTRY)); if ((rv == SA_OK) && (countAreas != numAreas)) printf("idrInfo error! idrInfo.NumAreas = %d; countAreas = %d\n", numAreas, countAreas); return(rv); }
static int sa_show_inv(SaHpiResourceIdT resourceid) { SaErrorT rv = SA_OK, rva, rvf; SaHpiEntryIdT rdrentryid; SaHpiEntryIdT nextrdrentryid; SaHpiRdrT rdr; SaHpiIdrIdT idrid; SaHpiIdrInfoT idrInfo; SaHpiEntryIdT areaId; SaHpiEntryIdT nextareaId; SaHpiIdrAreaTypeT areaType; int numAreas; SaHpiEntryIdT fieldId; SaHpiEntryIdT nextFieldId; SaHpiIdrFieldTypeT fieldType; SaHpiIdrFieldT thisField; SaHpiIdrAreaHeaderT areaHeader; rdrentryid = SAHPI_FIRST_ENTRY; while (rdrentryid != SAHPI_LAST_ENTRY) { rv = saHpiRdrGet(Domain->sessionId, resourceid, rdrentryid, &nextrdrentryid, &rdr); if (rv != SA_OK) { printf("saHpiRdrGet error %s\n", oh_lookup_error(rv)); return -1; } if (rdr.RdrType != SAHPI_INVENTORY_RDR) { rdrentryid = nextrdrentryid; continue; }; idrid = rdr.RdrTypeUnion.InventoryRec.IdrId; rv = saHpiIdrInfoGet(Domain->sessionId, resourceid, idrid, &idrInfo); if (rv != SA_OK) { printf("saHpiIdrInfoGet error %s\n", oh_lookup_error(rv)); return -1; } numAreas = idrInfo.NumAreas; areaType = SAHPI_IDR_AREATYPE_UNSPECIFIED; areaId = SAHPI_FIRST_ENTRY; while (areaId != SAHPI_LAST_ENTRY) { rva = saHpiIdrAreaHeaderGet(Domain->sessionId, resourceid, idrInfo.IdrId, areaType, areaId, &nextareaId, &areaHeader); if (rva != SA_OK) { printf("saHpiIdrAreaHeaderGet error %s\n", oh_lookup_error(rva)); break; } oh_print_idrareaheader(&areaHeader, 2); fieldType = SAHPI_IDR_FIELDTYPE_UNSPECIFIED; fieldId = SAHPI_FIRST_ENTRY; while (fieldId != SAHPI_LAST_ENTRY) { rvf = saHpiIdrFieldGet(Domain->sessionId, resourceid, idrInfo.IdrId, areaHeader.AreaId, fieldType, fieldId, &nextFieldId, &thisField); if (rvf != SA_OK) { printf("saHpiIdrFieldGet error %s\n", oh_lookup_error(rvf)); break; } oh_print_idrfield(&thisField, 4); fieldId = nextFieldId; } areaId = nextareaId; } rdrentryid = nextrdrentryid; } return SA_OK; }