⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sahpi_struct_utils.c

📁 HIP 硬件设备管理标准接口
💻 C
📖 第 1 页 / 共 5 页
字号:
	/* printf("SENSOR LENGTH = %d\n", strlen(buffer->Data)); */	return(SA_OK);}static SaErrorT oh_build_sensordataformat(oh_big_textbuffer *buffer,					  const SaHpiSensorDataFormatT *format, 					  int offsets){	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	SaErrorT err;	SaHpiTextBufferT reading_buffer;	/* Sensor Data Format Title */	oh_append_offset(buffer, offsets);	oh_append_bigtext(buffer, "Data Format:\n");	offsets++;			/* Sensor Data Format IsSupported */	oh_append_offset(buffer, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "IsSupported: %s\n",		 (format->IsSupported == SAHPI_TRUE) ? "TRUE" : "FALSE");	oh_append_bigtext(buffer, str);			if (format->IsSupported) {		/* Sensor Data Format Reading Type */		oh_append_offset(buffer, offsets);		snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Reading Type: %s\n", 			 oh_lookup_sensorreadingtype(format->ReadingType));		oh_append_bigtext(buffer, str);				if (format->ReadingType != SAHPI_SENSOR_READING_TYPE_BUFFER) {			/* Sensor Data Format Base Units */			oh_append_offset(buffer, offsets);			snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Base Unit: %s\n", 				 oh_lookup_sensorunits(format->BaseUnits));			oh_append_bigtext(buffer, str);						/* Sensor Data Format Modifier Units */			if (format->ModifierUnits) {				oh_append_offset(buffer, offsets);				snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Modifier Unit: %s\n", 					 oh_lookup_sensorunits(format->ModifierUnits));				oh_append_bigtext(buffer, str);				/* Sensor Data Format Modifier Use */				oh_append_offset(buffer, offsets);				snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Modifier Use: %s\n",					 oh_lookup_sensormodunituse(format->ModifierUse));				oh_append_bigtext(buffer, str);			}						/* Sensor Data Format Percentage */			oh_append_offset(buffer, offsets);			snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Percentage: %s\n",				 (format->Percentage == SAHPI_TRUE) ? "TRUE" : "FALSE");			oh_append_bigtext(buffer, str);					/* Sensor Data Format Max Range */			if (format->Range.Flags & SAHPI_SRF_MAX && 			    format->Range.Max.IsSupported) { 				oh_append_offset(buffer, offsets);				oh_append_bigtext(buffer, "Range Max: ");								err = oh_decode_sensorreading(format->Range.Max,							      *format,							      &reading_buffer);				if (err) { return(err); }				oh_append_bigtext(buffer, reading_buffer.Data);				oh_append_bigtext(buffer, "\n");			}			/* Sensor Data Format Min Range */			if (format->Range.Flags & SAHPI_SRF_MIN && 			    format->Range.Min.IsSupported) { 				oh_append_offset(buffer, offsets);				oh_append_bigtext(buffer, "Range Min: ");								err = oh_decode_sensorreading(format->Range.Min,							      *format,							      &reading_buffer);				if (err) { return(err); }				oh_append_bigtext(buffer, reading_buffer.Data);				oh_append_bigtext(buffer, "\n");			}			/* Sensor Data Format Nominal Range */			if (format->Range.Flags & SAHPI_SRF_NOMINAL && 			    format->Range.Nominal.IsSupported) { 				oh_append_offset(buffer, offsets);				oh_append_bigtext(buffer, "Range Nominal: ");								err = oh_decode_sensorreading(format->Range.Nominal,							      *format,							      &reading_buffer);				if (err) { return(err); }				oh_append_bigtext(buffer, reading_buffer.Data);				oh_append_bigtext(buffer, "\n");			}			/* Sensor Data Format Normal Max Range */			if (format->Range.Flags & SAHPI_SRF_NORMAL_MAX && 			    format->Range.NormalMax.IsSupported) { 				oh_append_offset(buffer, offsets);				oh_append_bigtext(buffer, "Range Normal Max: ");								err = oh_decode_sensorreading(format->Range.NormalMax,							      *format,							      &reading_buffer);				if (err) { return(err); }				oh_append_bigtext(buffer, reading_buffer.Data);				oh_append_bigtext(buffer, "\n");			}			/* Sensor Data Format Normal Min Range */			if (format->Range.Flags & SAHPI_SRF_NORMAL_MIN && 			    format->Range.NormalMin.IsSupported) { 				oh_append_offset(buffer, offsets);				oh_append_bigtext(buffer, "Range Normal Min: ");								err = oh_decode_sensorreading(format->Range.NormalMin,							      *format,							      &reading_buffer);				if (err) { return(err); }				oh_append_bigtext(buffer, reading_buffer.Data);				oh_append_bigtext(buffer, "\n");			}			/* Sensor Data Format Accuracy Factor */			oh_append_offset(buffer, offsets);			snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Accuracy: %le\n", format->AccuracyFactor);				oh_append_bigtext(buffer, str);		}	}		return(SA_OK);}static SaErrorT oh_build_sensorthddefn(oh_big_textbuffer *buffer,				       const SaHpiSensorThdDefnT *tdef, 				       int offsets){	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	SaErrorT err;	/* Sensor Threshold Definition Title */	oh_append_offset(buffer, offsets);	oh_append_bigtext(buffer, "Threshold Definitions:\n");	offsets++;	/* Sensor Threshold Definition IsAccessible */	oh_append_offset(buffer, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "IsAccessible: %s\n",		 (tdef->IsAccessible == SAHPI_TRUE) ? "TRUE" : "FALSE");	oh_append_bigtext(buffer, str);		if (tdef->IsAccessible) {		/* Sensor Threshold Read Threshold */		if (tdef->ReadThold) {			oh_append_offset(buffer, offsets);			oh_append_bigtext(buffer, "Readable Thresholds:\n"); 			err = oh_build_threshold_mask(buffer, tdef->ReadThold, offsets + 1);			if (err) { return(err); }		}				/* Sensor Threshold Write Threshold */		if (tdef->WriteThold) {			oh_append_offset(buffer, offsets);			oh_append_bigtext(buffer, "Writeable Thresholds:\n");			err = oh_build_threshold_mask(buffer, tdef->WriteThold, offsets + 1);			if (err) { return(err); }		}		/* Sensor Threshold Nonlinear */		oh_append_offset(buffer, offsets);		snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Nonlinear: %s\n",			 (tdef->Nonlinear == SAHPI_TRUE) ? "TRUE" : "FALSE");		oh_append_bigtext(buffer, str);	}		return(SA_OK);}static SaErrorT oh_build_threshold_mask(oh_big_textbuffer *buffer,					const SaHpiSensorThdMaskT tmask, 					int offsets){	int i;	oh_append_offset(buffer, offsets);	if (tmask & SAHPI_STM_LOW_MINOR) {		oh_append_bigtext(buffer, "LOW_MINOR");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_LOW_MAJOR) {		oh_append_bigtext(buffer, "LOW_MAJOR");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_LOW_CRIT) {		oh_append_bigtext(buffer, "LOW_CRIT");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_LOW_HYSTERESIS) {		oh_append_bigtext(buffer, "LOW_HYSTERESIS");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_UP_MINOR) {		oh_append_bigtext(buffer, "UP_MINOR");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_UP_MAJOR) {		oh_append_bigtext(buffer, "UP_MAJOR");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_UP_CRIT) {		oh_append_bigtext(buffer, "UP_CRIT");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	if (tmask & SAHPI_STM_UP_HYSTERESIS) {		oh_append_bigtext(buffer, "UP_HYSTERESIS");		oh_append_bigtext(buffer, OH_ENCODE_DELIMITER);	}	/* Remove last delimiter; add NL */	for (i=0; i<OH_ENCODE_DELIMITER_LENGTH + 1; i++) {		buffer->Data[buffer->DataLength - i] = 0x00;	}	buffer->DataLength = buffer->DataLength - (i-1);	oh_append_bigtext(buffer, "\n");	return(SA_OK);}/** * oh_fprint_idrfield: * @stream: File handle. * @thisfield: Pointer to SaHpiIdrFieldT to be printed. * @offsets: Number of offsets to start printing structure. *  * Prints the member data contained in SaHpiIdrFieldT struct to a file. * The MACRO oh_print_idrfield(), uses this function to print to STDOUT.  * * Returns: * SA_OK - normal operation. **/SaErrorT oh_fprint_idrfield(FILE *stream, const SaHpiIdrFieldT *thisfield, int offsets){	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	oh_big_textbuffer mybuf;	SaErrorT err;	if (!stream || !thisfield) return(SA_ERR_HPI_INVALID_PARAMS);						oh_init_bigtext(&mybuf);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Field Id: %d\n", thisfield->FieldId);	oh_append_bigtext(&mybuf, str);							oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Field Type: %s\n",		 oh_lookup_idrfieldtype(thisfield->Type));	oh_append_bigtext(&mybuf, str);							oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "ReadOnly: %s\n",		 (thisfield->ReadOnly == SAHPI_TRUE) ? "TRUE" : "FALSE");	oh_append_bigtext(&mybuf, str);							oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "DataType: %s\n",		 oh_lookup_texttype(thisfield->Field.DataType));	oh_append_bigtext(&mybuf, str);							oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Language: %s\n",		 oh_lookup_language(thisfield->Field.Language));	oh_append_bigtext(&mybuf, str);							oh_append_offset(&mybuf, offsets);	oh_append_bigtext(&mybuf, "Content: ");	if (thisfield->Field.DataLength == 0)		oh_append_bigtext(&mybuf, "NULL\n");	else {		if (thisfield->Field.DataType == SAHPI_TL_TYPE_BINARY)			oh_append_data(&mybuf, thisfield->Field.Data, thisfield->Field.DataLength);		else			oh_append_bigtext(&mybuf, thisfield->Field.Data);	}								err = oh_fprint_bigtext(stream, &mybuf);	return(err);}/** * oh_fprint_idrareaheader: * @stream: File handle. * @areaheader: Pointer to SaHpiIdrAreaHeaderT to be printed. * @offsets: Number of offsets to start printing structure. *  * Prints the member data contained in SaHpiIdrAreaHeaderT struct to a file. * The MACRO oh_print_idrareaheader(), uses this function to print to STDOUT.  * * Returns:        * SA_OK - normal operation. **/SaErrorT oh_fprint_idrareaheader(FILE *stream, const SaHpiIdrAreaHeaderT *areaheader, int offsets){	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	oh_big_textbuffer mybuf;	SaErrorT err;	if (!stream || !areaheader) return(SA_ERR_HPI_INVALID_PARAMS);		oh_init_bigtext(&mybuf);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "AreaId: %d\n", areaheader->AreaId);	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "AreaType: %s\n",		 oh_lookup_idrareatype(areaheader->Type));	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "ReadOnly: %s\n",		 (areaheader->ReadOnly == SAHPI_TRUE) ? "TRUE" : "FALSE" );	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "NumFields: %d\n", areaheader->NumFields);	oh_append_bigtext(&mybuf, str);	err = oh_fprint_bigtext(stream, &mybuf); 						return(err);}/** * oh_fprint_idrinfo: * @stream: File handle. * @idrinfo: Pointer to SaHpiIdrInfoT to be printed. * @offsets: Number of offsets to start printing structure. *  * Prints the member data contained in SaHpiIdrInfoT struct to a file. * The MACRO oh_print_idrinfo(), uses this function to print to STDOUT.  * * Returns:        * SA_OK - normal operation. * SA_ERR_HPI_INVALID_PARAMS - Pointer parameter(s) are NULL. **/SaErrorT oh_fprint_idrinfo(FILE *stream, const SaHpiIdrInfoT *idrinfo, int offsets){	SaErrorT err;	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	oh_big_textbuffer mybuf;		if (!stream || !idrinfo) return(SA_ERR_HPI_INVALID_PARAMS);				oh_init_bigtext(&mybuf);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "IdrId: %d\n", idrinfo->IdrId);	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "UpdateCount: %d\n", idrinfo->UpdateCount);	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "ReadOnly: %s\n",				(idrinfo->ReadOnly == SAHPI_TRUE) ? "TRUE" : "FALSE" );	oh_append_bigtext(&mybuf, str);	oh_append_offset(&mybuf, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "NumAreas: %d\n", idrinfo->NumAreas);	oh_append_bigtext(&mybuf, str);	err = oh_fprint_bigtext(stream, &mybuf); 						return(err);}SaErrorT oh_fprint_textbuffer(FILE *stream, const SaHpiTextBufferT *textbuffer, int offsets) {	SaErrorT err;	oh_big_textbuffer buffer;		if (!stream || !textbuffer) {		return(SA_ERR_HPI_INVALID_PARAMS);	}		oh_init_bigtext(&buffer);	err = oh_build_textbuffer(&buffer, textbuffer, offsets);	if (err) { return(err); }	err = oh_fprint_bigtext(stream, &buffer);	return(err);}static SaErrorT oh_build_textbuffer(oh_big_textbuffer *buffer, const SaHpiTextBufferT *textbuffer, int offsets){	char str[SAHPI_MAX_TEXT_BUFFER_LENGTH];	/* Text Buffer Data Type */	oh_append_offset(buffer, offsets);	snprintf(str, SAHPI_MAX_TEXT_BUFFER_LENGTH, "Data Type: %s\n", 		 oh_lookup_texttype(textbuffer->DataType));	oh_append_bigtext(buffer, str);	/* Text Buffer Language */	oh_append_offset(buffer, offsets);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -