/**
* Parse a protocol packet.
*
- * @param buf Buffer containing the protocol packet.
+ * @param buf Buffer containing the protocol packet. Must not be NULL.
* @param floatval Pointer to a float variable. That variable will be modified
- * in-place depending on the protocol packet.
+ * in-place depending on the protocol packet. Must not be NULL.
* @param analog Pointer to a struct sr_datafeed_analog. The struct will be
* filled with data according to the protocol packet.
+ * Must not be NULL.
+ * @param info Pointer to a struct metex14_info. The struct will be filled
+ * with data according to the protocol packet. Must not be NULL.
*
* @return SR_OK upon success, SR_ERR upon failure. Upon errors, the
* 'analog' variable contents are undefined and should not be used.
*/
SR_PRIV int sr_metex14_parse(const uint8_t *buf, float *floatval,
- struct sr_datafeed_analog *analog,
- struct metex14_info *info)
+ struct sr_datafeed_analog *analog, void *info)
{
int ret;
+ struct metex14_info *info_local;
+
+ info_local = (struct metex14_info *)info;
if ((ret = parse_value(buf, floatval)) != SR_OK) {
sr_err("Error parsing value: %d.", ret);
return ret;
}
- memset(info, 0x00, sizeof(struct metex14_info));
- parse_flags((const char *)buf, info);
- handle_flags(analog, floatval, info);
+ memset(info_local, 0x00, sizeof(struct metex14_info));
+ parse_flags((const char *)buf, info_local);
+ handle_flags(analog, floatval, info_local);
return SR_OK;
}
SR_PRIV gboolean sr_metex14_packet_valid(const uint8_t *buf);
SR_PRIV int sr_metex14_parse(const uint8_t *buf, float *floatval,
- struct sr_datafeed_analog *analog,
- struct metex14_info *info);
+ struct sr_datafeed_analog *analog, void *info);
#endif