static void brymen_bm86x_handle_packet(const struct sr_dev_inst *sdi, unsigned char *buf) { struct dev_context *devc; struct sr_datafeed_packet packet; struct sr_datafeed_analog analog[2]; struct sr_analog_encoding encoding[2]; struct sr_analog_meaning meaning[2]; struct sr_analog_spec spec[2]; float floatval[2]; devc = sdi->priv; sr_analog_init(&analog[0], &encoding[0], &meaning[0], &spec[0], 0); sr_analog_init(&analog[1], &encoding[1], &meaning[1], &spec[1], 0); analog[0].meaning->mq = 0; analog[0].meaning->mqflags = 0; analog[1].meaning->mq = 0; analog[1].meaning->mqflags = 0; brymen_bm86x_parse(buf, floatval, analog); if (analog[0].meaning->mq != 0) { /* Got a measurement. */ analog[0].num_samples = 1; analog[0].data = &floatval[0]; analog[0].meaning->channels = g_slist_append(NULL, sdi->channels->data); packet.type = SR_DF_ANALOG; packet.payload = &analog[0]; sr_session_send(sdi, &packet); g_slist_free(analog[0].meaning->channels); } if (analog[1].meaning->mq != 0) { /* Got a measurement. */ analog[1].num_samples = 1; analog[1].data = &floatval[1]; analog[1].meaning->channels = g_slist_append(NULL, sdi->channels->next->data); packet.type = SR_DF_ANALOG; packet.payload = &analog[1]; sr_session_send(sdi, &packet); g_slist_free(analog[1].meaning->channels); } if (analog[0].meaning->mq != 0 || analog[1].meaning->mq != 0) sr_sw_limits_update_samples_read(&devc->sw_limits, 1); }
static void brymen_bm86x_handle_packet(const struct sr_dev_inst *sdi, unsigned char *buf) { struct dev_context *devc; struct sr_datafeed_packet packet; struct sr_datafeed_analog analog[2]; float floatval[2]; devc = sdi->priv; analog[0].mq = -1; analog[0].mqflags = 0; analog[1].mq = -1; analog[1].mqflags = 0; brymen_bm86x_parse(buf, floatval, analog); if (analog[0].mq != -1) { /* Got a measurement. */ analog[0].num_samples = 1; analog[0].data = &floatval[0]; analog[0].channels = g_slist_append(NULL, sdi->channels->data); packet.type = SR_DF_ANALOG; packet.payload = &analog[0]; sr_session_send(sdi, &packet); g_slist_free(analog[0].channels); } if (analog[1].mq != -1) { /* Got a measurement. */ analog[1].num_samples = 1; analog[1].data = &floatval[1]; analog[1].channels = g_slist_append(NULL, sdi->channels->next->data); packet.type = SR_DF_ANALOG; packet.payload = &analog[1]; sr_session_send(sdi, &packet); g_slist_free(analog[1].channels); } if (analog[0].mq != -1 || analog[1].mq != -1) devc->num_samples++; }