Пример #1
0
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);
}
Пример #2
0
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++;
}