platform: pldm_msgbuf for decode_get_sensor_reading_resp()

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: Ib059858cdec0e02acccffe93c50629d610aa5ada
diff --git a/src/msgbuf/platform.h b/src/msgbuf/platform.h
index 69403db..bc296b8 100644
--- a/src/msgbuf/platform.h
+++ b/src/msgbuf/platform.h
@@ -48,6 +48,33 @@
 	return -PLDM_ERROR_INVALID_DATA;
 }
 
+/*
+ * This API is bad, but it's because the caller's APIs are also bad. They should
+ * have used the approach used by callers of pldm_msgbuf_extract_sensor_data()
+ * above
+ */
+__attribute__((always_inline)) static inline int
+pldm_msgbuf_extract_sensor_value(struct pldm_msgbuf *ctx,
+				 enum pldm_effecter_data_size tag, uint8_t *val)
+{
+	switch (tag) {
+	case PLDM_SENSOR_DATA_SIZE_UINT8:
+		return pldm_msgbuf_extract_uint8(ctx, (uint8_t *)val);
+	case PLDM_SENSOR_DATA_SIZE_SINT8:
+		return pldm_msgbuf_extract_int8(ctx, (int8_t *)val);
+	case PLDM_SENSOR_DATA_SIZE_UINT16:
+		return pldm_msgbuf_extract_uint16(ctx, (uint16_t *)val);
+	case PLDM_SENSOR_DATA_SIZE_SINT16:
+		return pldm_msgbuf_extract_int16(ctx, (int16_t *)val);
+	case PLDM_SENSOR_DATA_SIZE_UINT32:
+		return pldm_msgbuf_extract_uint32(ctx, (uint32_t *)val);
+	case PLDM_SENSOR_DATA_SIZE_SINT32:
+		return pldm_msgbuf_extract_int32(ctx, (int32_t *)val);
+	}
+
+	return -PLDM_ERROR_INVALID_DATA;
+}
+
 __attribute__((always_inline)) static inline int
 pldm_msgbuf_extract_range_field_format(struct pldm_msgbuf *ctx,
 				       enum pldm_range_field_format tag,