Exemple #1
0
int Test_Field(SaHpiSessionIdT sessionId,
	       SaHpiResourceIdT resourceId,
	       SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval;
	SaHpiEntryIdT NextFieldId;
	SaHpiIdrFieldT Field;

	//   Call the routine with the FieldType set to
	//   SAHPI_IDR_FIELDTYPE_UNSPECIFIED, and the field specified
	//   by the FieldId parameter does not exist in the IDR Area.

	status = saHpiIdrFieldGet(sessionId,
				  resourceId,
				  IdrId,
				  AreaId,
				  SAHPI_IDR_FIELDTYPE_UNSPECIFIED,
				  INVALID_FIELD_ID, &NextFieldId, &Field);

	if (status == SA_ERR_HPI_NOT_PRESENT) {
		retval = SAF_TEST_PASS;
	} else {
		retval = SAF_TEST_FAIL;
		e_print(saHpiIdrFieldGet, SA_ERR_HPI_NOT_PRESENT, status);
	}

	return retval;
}
int main(int argc, char **argv)
{
	SaHpiSessionIdT sid = 0;
        SaHpiIdrFieldT field;
        SaHpiEntryIdT next;
	SaErrorT rc = SA_OK;

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

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

        /* get the resource id of the chassis */
        SaHpiResourceIdT resid = get_resid(sid, SAHPI_ENT_SYSTEM_CHASSIS);
        if (resid == 0) {
		err("Couldn't find the resource id of the chassis");
                return -1;
	}

        rc = saHpiIdrFieldGet(sid, resid, 1, 1, SAHPI_IDR_FIELDTYPE_MANUFACTURER, SAHPI_FIRST_ENTRY, &next, &field);
        if (rc != SA_OK) {
		err("Couldn't get field");
		err("Error %s",oh_lookup_error(rc));
                return -1;
	}

	return 0;
}
Exemple #3
0
int Test_Field(SaHpiSessionIdT sessionId,
	       SaHpiResourceIdT resourceId,
	       SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval = SAF_TEST_UNKNOWN;
	SaHpiEntryIdT NextFieldId;
	SaHpiIdrFieldT Field;
	SaHpiIdrAreaTypeT areaType;

	status = saHpiIdrFieldGet(sessionId,
				  resourceId,
				  IdrId,
				  AreaId,
				  SAHPI_IDR_FIELDTYPE_UNSPECIFIED,
				  SAHPI_FIRST_ENTRY, &NextFieldId, &Field);

	if (status == SA_ERR_HPI_NOT_PRESENT) {
		retval = SAF_TEST_NOTSUPPORT;
	} else if (status != SA_OK) {
		retval = SAF_TEST_UNRESOLVED;
		e_print(saHpiIdrFieldGet, SA_OK, status);
	} else {
		if (Field.Type == SAHPI_IDR_FIELDTYPE_CUSTOM) {
			areaType = SAHPI_IDR_FIELDTYPE_CHASSIS_TYPE;
		} else {
			areaType = SAHPI_IDR_FIELDTYPE_CUSTOM;
		}
		retval =
		    TestCase_Field(sessionId, resourceId, IdrId, AreaId,
				   Field.FieldId, areaType);
	}

	return retval;
}
Exemple #4
0
int TestCase_Field(SaHpiSessionIdT sessionId,
		   SaHpiResourceIdT resourceId,
		   SaHpiIdrIdT IdrId,
		   SaHpiEntryIdT AreaId,
		   SaHpiEntryIdT FieldId, SaHpiIdrAreaTypeT AreaType)
{
	SaErrorT status;
	int retval;
	SaHpiEntryIdT NextFieldId;
	SaHpiIdrFieldT Field;

	status = saHpiIdrFieldGet(sessionId,
				  resourceId,
				  IdrId,
				  AreaId,
				  AreaType, FieldId, &NextFieldId, &Field);

	if (status == SA_ERR_HPI_NOT_PRESENT) {
		retval = SAF_TEST_PASS;
	} else {
		retval = SAF_TEST_FAIL;
		e_print(saHpiIdrFieldGet, SA_ERR_HPI_NOT_PRESENT, status);
	}

	return retval;
}
int Test_Field(SaHpiSessionIdT sessionId,
	       SaHpiResourceIdT resourceId,
	       SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval;
	SaHpiEntryIdT NextFieldId;
	SaHpiIdrFieldT Field;

	//   Call the routine with the FieldId set to
	//   SAHPI_LAST_ENTRY.

	status = saHpiIdrFieldGet(sessionId,
				  resourceId,
				  IdrId,
				  AreaId,
				  SAHPI_IDR_FIELDTYPE_UNSPECIFIED,
				  SAHPI_LAST_ENTRY, &NextFieldId, &Field);

	if (status == SA_ERR_HPI_NOT_PRESENT) {
		retval = SAF_TEST_NOTSUPPORT;
	} else if (status == SA_ERR_HPI_INVALID_PARAMS) {
		retval = SAF_TEST_PASS;
	} else {
		retval = SAF_TEST_FAIL;
		e_print(saHpiIdrFieldGet,
			SA_ERR_HPI_INVALID_PARAMS || SA_ERR_HPI_NOT_PRESENT,
			status);
	}

	return retval;
}
Exemple #6
0
int main(int argc, char **argv)
{
	SaHpiSessionIdT sid = 0;
        SaHpiIdrFieldT field;
        SaHpiEntryIdT next;
	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;
	}

        rc = saHpiIdrFieldGet(sid, 1, 1, 1, SAHPI_IDR_FIELDTYPE_MANUFACTURER, SAHPI_FIRST_ENTRY, &next, &field);
        if (rc != SA_OK) {
		dbg("Couldn't get field");
		dbg("Error %s",oh_lookup_error(rc));
                return -1;
	}

	return 0;
}
Exemple #7
0
static ret_code_t set_inventory_field(SaHpiSessionIdT sessionId,
	SaHpiResourceIdT rptid, SaHpiIdrIdT rdrnum)
{
	SaErrorT	rv;
	SaHpiIdrFieldT	field, read_field;
	SaHpiEntryIdT	next;
	int		res, i;

	memset(&field, 0, sizeof(SaHpiIdrFieldT));
	i = get_int_param("Area Id: ", &res);
	if (i != 1) {
		printf("Error!!! Invalid Area Id\n");
		return(HPI_SHELL_PARM_ERROR);
	};
	field.AreaId = res;

	i = get_int_param("Field Id: ", &res);
	if (i != 1) {
		printf("Error!!! Invalid Field Id\n");
		return(HPI_SHELL_PARM_ERROR);
	};
	field.FieldId = res;
	
	rv = saHpiIdrFieldGet(sessionId, rptid, rdrnum, field.AreaId,
		SAHPI_IDR_FIELDTYPE_UNSPECIFIED, field.FieldId, &next, &read_field);
	if (rv != SA_OK) {
		printf("ERROR!!! saHpiIdrFieldGet: %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	field.Type = read_field.Type;

	i = set_text_buffer(&(field.Field));
	if (i != 0) {
		printf("Invalid text\n");
		return(HPI_SHELL_PARM_ERROR);
	};
	rv = saHpiIdrFieldSet(sessionId, rptid, rdrnum, &field);
	if (rv != SA_OK) {
		printf("ERROR!!! saHpiIdrFieldSet: %s\n", oh_lookup_error(rv));
		return(HPI_SHELL_CMD_ERROR);
	};
	return(HPI_SHELL_OK);
}
Exemple #8
0
int deleteField(SaHpiSessionIdT sessionId,
		SaHpiResourceIdT resourceId,
		SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval = SAF_TEST_UNKNOWN;
	SaHpiIdrFieldT Field;
	SaHpiEntryIdT NextFieldId;

	status = saHpiIdrFieldGet(sessionId, resourceId, IdrId, AreaId,
				  SAHPI_IDR_FIELDTYPE_UNSPECIFIED,
				  SAHPI_FIRST_ENTRY, &NextFieldId, &Field);

	if (status == SA_ERR_HPI_NOT_PRESENT) {
		retval = SAF_TEST_NOTSUPPORT;
	} else if (status != SA_OK) {
		retval = SAF_TEST_UNRESOLVED;
		e_print(saHpiIdrFieldGet, SA_OK, status);
	} else {

		//   Call the routine while passing in an invalid 
		//   ResourceId.

		status = saHpiIdrFieldDelete(sessionId,
					     INVALID_RESOURCE_ID,
					     IdrId, AreaId, Field.FieldId);

		if (status == SA_ERR_HPI_INVALID_RESOURCE) {
			retval = SAF_TEST_PASS;
		} else {
			retval = SAF_TEST_FAIL;
			e_print(saHpiIdrFieldDelete,
				SA_ERR_HPI_INVALID_RESOURCE, status);
		}
	}

	return retval;
}
Exemple #9
0
int 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; 
   foundasset = 0;
   while ((rv == SA_OK) && (areaId != SAHPI_LAST_ENTRY)) 
   {
	rv = saHpiIdrAreaHeaderGet(sessionid, resourceid,
				   idrInfo->IdrId, areaType,
				   areaId, &nextareaId,
				   &areaHeader);
	if (rv == SA_OK) {
		countAreas++;
		print_idrareaheader(&areaHeader, 8);

		fieldType = SAHPI_IDR_FIELDTYPE_UNSPECIFIED;
		fieldId = SAHPI_FIRST_ENTRY;
		countFields = 0;
	
		while ((rvField == SA_OK) && (fieldId != SAHPI_LAST_ENTRY))
		{
			rvField = saHpiIdrFieldGet( sessionid,	resourceid,
						idrInfo->IdrId,
						areaHeader.AreaId, fieldType,
						fieldId, &nextFieldId,
						&thisField);
			if (fdebug) 
				printf("saHpiIdrFieldGet[%x] rv = %d type=%d\n",
					idrInfo->IdrId,rvField,
					thisField.Type);
			if (rvField == SA_OK) {
				countFields++; 
				print_idrfield(&thisField, 12);
				if (thisField.Type == SAHPI_IDR_FIELDTYPE_ASSET_TAG) {
				   atag.rid   = resourceid;
				   atag.idrid = idrInfo->IdrId;
				   atag.areaid = areaHeader.AreaId;
				   atag.fieldid = fieldId;
				   foundasset = 1;
				}
			}
			fieldId = nextFieldId;
		}  /*while fields*/
			
		if ( countFields != areaHeader.NumFields) 
			printf("Area Header error: areaHeader.NumFields %d, countFields %d\n",
				areaHeader.NumFields, countFields);
	} else {
		printf("saHpiIdrAreaHeaderGet error %d\n",rv);
	}
	areaId = nextareaId;
	
   }   /*while areas*/

   if ((rv == SA_OK) && (countAreas != numAreas)) 
	printf("idrInfo error! idrInfo.NumAreas = %d; countAreas = %d\n", 
			numAreas, countAreas);

   if (countFields > 0) rv = 0;
   return(rv);
}  /*end walkInventory*/
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;
}
Exemple #11
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);
}
Exemple #12
0
SaErrorT show_inventory(SaHpiSessionIdT sessionid, SaHpiResourceIdT resourceid,
			SaHpiIdrIdT IdrId, hpi_ui_print_cb_t proc)
{
	SaHpiIdrInfoT		info;
	SaErrorT		rv;
	SaHpiEntryIdT		entryid, nextentryid;
	SaHpiEntryIdT		fentryid, nextfentryid;
	SaHpiIdrAreaHeaderT	hdr;
	SaHpiIdrFieldT		field;
	char			buf[SHOW_BUF_SZ];
	char			*str;
	int			num;

	rv = saHpiIdrInfoGet(sessionid, resourceid, IdrId, &info);
	if (rv != SA_OK) {
		snprintf(buf, SHOW_BUF_SZ, "ERROR!!! saHpiIdrInfoGet: %s\n",
			oh_lookup_error(rv));
		proc(buf);
		return(-1);
	};
	num = info.NumAreas;
	snprintf(buf, SHOW_BUF_SZ,
		"Inventory: %d   Update count: %d   Read only: %d   Areas: %d\n",
		info.IdrId, info.UpdateCount, info.ReadOnly, num);
	if (proc(buf) != 0) return(SA_OK);
	entryid = SAHPI_FIRST_ENTRY;
	while ((entryid != SAHPI_LAST_ENTRY) && (num > 0)) {
		rv = saHpiIdrAreaHeaderGet(sessionid, resourceid, IdrId,
			SAHPI_IDR_AREATYPE_UNSPECIFIED, entryid,
			&nextentryid, &hdr);
		if (rv != SA_OK) {
			proc("ERROR!!! saHpiIdrAreaHeaderGet\n");
			return(-1);
		};
		str = oh_lookup_idrareatype(hdr.Type);
		if (str == NULL) str = "Unknown";
		snprintf(buf, SHOW_BUF_SZ,
			"    Area: %d   Type: %s   Read Only: %d   Fields: %d\n",
			hdr.AreaId, str, hdr.ReadOnly, hdr.NumFields);
		if (proc(buf) != 0) return(SA_OK);
		fentryid = SAHPI_FIRST_ENTRY;
		entryid = nextentryid;
		while ((fentryid != SAHPI_LAST_ENTRY) && (hdr.NumFields > 0)) {
			rv = saHpiIdrFieldGet(sessionid, resourceid, IdrId, hdr.AreaId,
				SAHPI_IDR_FIELDTYPE_UNSPECIFIED, fentryid,
				&nextfentryid, &field);
			if (rv != SA_OK) {
				proc("ERROR!!! saHpiIdrFieldGet\n");
				return(-1);
			};
			str = oh_lookup_idrfieldtype(field.Type);
			if (str == NULL) str = "Unknown";
			snprintf(buf, SHOW_BUF_SZ,
				"        Field: %d  Type: %s Read Only: %d (",
				field.FieldId, str, field.ReadOnly);
			if (proc(buf) != 0) return(SA_OK);
			if (print_text_buffer(NULL, &(field.Field), NULL, proc) != 0)
				return(SA_OK);
			if (proc(")\n") != 0) return(SA_OK);
			fentryid = nextfentryid;
		}
	};
	return(SA_OK);
}
Exemple #13
0
int runTest(SaHpiSessionIdT sessionId,
	    SaHpiResourceIdT resourceId,
	    SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval;
	int response;
	SaHpiEntryIdT FieldId, NextFieldId;
	SaHpiIdrFieldT Field, MyField;

	response = addField(sessionId, resourceId, IdrId, AreaId, &MyField);
	if (response != SAF_TEST_PASS) {
		retval = response;
	} else {

		status = saHpiIdrFieldGet(sessionId,
					  resourceId,
					  IdrId,
					  AreaId,
					  SAHPI_IDR_FIELDTYPE_UNSPECIFIED,
					  MyField.FieldId,
					  &NextFieldId, &Field);

		if (status != SA_OK) {
			retval = SAF_TEST_FAIL;
			e_print(saHpiIdrFieldGet, SA_OK, status);
		} else {

			retval = SAF_TEST_UNKNOWN;

			// Retrieve the field by Field type.

			NextFieldId = SAHPI_FIRST_ENTRY;
			while ((NextFieldId != SAHPI_LAST_ENTRY) &&
			       (retval == SAF_TEST_UNKNOWN)) {

				FieldId = NextFieldId;
				status = saHpiIdrFieldGet(sessionId,
							  resourceId,
							  IdrId,
							  AreaId,
							  SAHPI_IDR_FIELDTYPE_CUSTOM,
							  FieldId,
							  &NextFieldId, &Field);

				if (status == SA_ERR_HPI_NOT_PRESENT) {
					// do nothing
				} else if (status != SA_OK) {
					retval = SAF_TEST_UNRESOLVED;
					e_print(saHpiIdrFieldGet,
						SA_ERR_HPI_NOT_PRESENT, status);
				} else if (Field.FieldId == MyField.FieldId) {
					retval = SAF_TEST_PASS;
				}
			}

			if (retval == SAF_TEST_UNKNOWN) {
				retval = SAF_TEST_FAIL;
				m_print
				    ("\"saHpiIdrFieldGet()\" did not return newly added field!");
			}

			status = saHpiIdrFieldDelete(sessionId, resourceId,
						     IdrId, AreaId,
						     Field.FieldId);
			if (status != SA_OK) {
				e_print(saHpiIdrFieldDelete, SA_OK, status);
			}
		}
	}

	return retval;
}
Exemple #14
0
static ret_code_t 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 HPI_SHELL_CMD_ERROR;
		}

		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 HPI_SHELL_CMD_ERROR;
		}
		
		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;
			}
			show_inv_area_header(&areaHeader, 2, ui_print);

			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;
				}
				show_inv_field(&thisField, 4, ui_print);
				fieldId = nextFieldId;
			}
			areaId = nextareaId;
		}
		rdrentryid = nextrdrentryid;
	}
	return HPI_SHELL_OK;
}
Exemple #15
0
int TestField(SaHpiSessionIdT sessionId,
	      SaHpiResourceIdT resourceId,
	      SaHpiIdrIdT IdrId, SaHpiEntryIdT AreaId)
{
	SaErrorT status;
	int retval;
	SaHpiIdrFieldT Field;
	SaHpiEntryIdT NextFieldId;

	status = addCustomField(sessionId, resourceId, IdrId, AreaId, &Field);
	if (status == SA_ERR_HPI_INVALID_DATA) {
		retval = SAF_TEST_NOTSUPPORT;
	} else if (status == SA_ERR_HPI_OUT_OF_SPACE) {
		retval = SAF_TEST_NOTSUPPORT;
	} else if (status != SA_OK) {
		retval = SAF_TEST_UNRESOLVED;
		e_print(saHpiIdrFieldAdd, SA_OK, status);
	} else {

		// Set a new value in the field. 

		Field.Field.Data[0] = 's';
		status = saHpiIdrFieldSet(sessionId, resourceId, IdrId, &Field);

		if (status == SA_ERR_HPI_INVALID_DATA) {

			retval = SAF_TEST_NOTSUPPORT;

		} else if (status != SA_OK) {

			retval = SAF_TEST_FAIL;
			e_print(saHpiIdrFieldSet, SA_OK, status);

		} else {

			status = saHpiIdrFieldGet(sessionId,
						  resourceId,
						  IdrId, AreaId,
						  SAHPI_IDR_FIELDTYPE_CUSTOM,
						  Field.FieldId,
						  &NextFieldId, &Field);

			if (status != SA_OK) {
				retval = SAF_TEST_UNRESOLVED;
				e_print(saHpiIdrFieldGet, SA_OK, status);
			} else if (Field.Field.Data[0] == 's') {
				retval = SAF_TEST_PASS;
			} else {
				retval = SAF_TEST_FAIL;
			}
		}

		// Clean up
		status = saHpiIdrFieldDelete(sessionId, resourceId,
					     IdrId, AreaId, Field.FieldId);

		if (status != SA_OK) {
			e_print(saHpiIdrFieldDelete, SA_OK, status);
		}
	}

	return retval;
}