]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/cem-dt-885x/protocol.c
drivers: Use serial_write_blocking() everywhere.
[libsigrok.git] / src / hardware / cem-dt-885x / protocol.c
index 2509818505f3c19935b2f4a59a55da88ba64e7cc..f6e05de9693845aee20dfb30e3508fd3f474b254 100644 (file)
@@ -66,7 +66,10 @@ static void process_mset(const struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
        struct sr_datafeed_packet packet;
-       struct sr_datafeed_analog_old analog;
+       struct sr_datafeed_analog analog;
+       struct sr_analog_encoding encoding;
+       struct sr_analog_meaning meaning;
+       struct sr_analog_spec spec;
        GString *dbg;
        float fvalue;
        int i;
@@ -131,20 +134,20 @@ static void process_mset(const struct sr_dev_inst *sdi)
                                break;
                        }
                }
-               memset(&analog, 0, sizeof(struct sr_datafeed_analog_old));
-               analog.mq = SR_MQ_SOUND_PRESSURE_LEVEL;
-               analog.mqflags = devc->cur_mqflags;
-               analog.unit = SR_UNIT_DECIBEL_SPL;
-               analog.channels = sdi->channels;
+               sr_analog_init(&analog, &encoding, &meaning, &spec, 1);
+               analog.meaning->mq = SR_MQ_SOUND_PRESSURE_LEVEL;
+               analog.meaning->mqflags = devc->cur_mqflags;
+               analog.meaning->unit = SR_UNIT_DECIBEL_SPL;
+               analog.meaning->channels = sdi->channels;
                analog.num_samples = 1;
                analog.data = &devc->last_spl;
-               packet.type = SR_DF_ANALOG_OLD;
+               packet.type = SR_DF_ANALOG;
                packet.payload = &analog;
                sr_session_send(sdi, &packet);
 
                devc->num_samples++;
                if (devc->limit_samples && devc->num_samples >= devc->limit_samples)
-                       sdi->driver->dev_acquisition_stop((struct sr_dev_inst *)sdi);
+                       sr_dev_acquisition_stop((struct sr_dev_inst *)sdi);
                break;
        case TOKEN_RECORDING_ON:
                devc->recording = TRUE;
@@ -177,7 +180,10 @@ static void send_data(const struct sr_dev_inst *sdi, unsigned char *data,
 {
        struct dev_context *devc;
        struct sr_datafeed_packet packet;
-       struct sr_datafeed_analog_old analog;
+       struct sr_datafeed_analog analog;
+       struct sr_analog_encoding encoding;
+       struct sr_analog_meaning meaning;
+       struct sr_analog_spec spec;
        float fbuf[SAMPLES_PER_PACKET];
        unsigned int i;
 
@@ -189,20 +195,20 @@ static void send_data(const struct sr_dev_inst *sdi, unsigned char *data,
                fbuf[i] += ((data[i * 2 + 1] & 0xf0) >> 4);
                fbuf[i] += (data[i * 2 + 1] & 0x0f) / 10.0;
        }
-       memset(&analog, 0, sizeof(struct sr_datafeed_analog_old));
-       analog.mq = SR_MQ_SOUND_PRESSURE_LEVEL;
-       analog.mqflags = devc->cur_mqflags;
-       analog.unit = SR_UNIT_DECIBEL_SPL;
-       analog.channels = sdi->channels;
+       sr_analog_init(&analog, &encoding, &meaning, &spec, 1);
+       analog.meaning->mq = SR_MQ_SOUND_PRESSURE_LEVEL;
+       analog.meaning->mqflags = devc->cur_mqflags;
+       analog.meaning->unit = SR_UNIT_DECIBEL_SPL;
+       analog.meaning->channels = sdi->channels;
        analog.num_samples = num_samples;
        analog.data = fbuf;
-       packet.type = SR_DF_ANALOG_OLD;
+       packet.type = SR_DF_ANALOG;
        packet.payload = &analog;
        sr_session_send(sdi, &packet);
 
        devc->num_samples += analog.num_samples;
        if (devc->limit_samples && devc->num_samples >= devc->limit_samples)
-               sdi->driver->dev_acquisition_stop((struct sr_dev_inst *)sdi);
+               sr_dev_acquisition_stop((struct sr_dev_inst *)sdi);
 
        return;
 }
@@ -315,7 +321,7 @@ static void process_byte(const struct sr_dev_inst *sdi, const unsigned char c,
                         * records. Otherwise the frontend would have no
                         * way to tell where stored data ends and live
                         * measurements begin. */
-                       sdi->driver->dev_acquisition_stop((struct sr_dev_inst *)sdi);
+                       sr_dev_acquisition_stop((struct sr_dev_inst *)sdi);
                } else if (c == RECORD_DATA) {
                        devc->buf_len = 0;
                        devc->state = ST_GET_LOG_RECORD_DATA;
@@ -394,7 +400,7 @@ SR_PRIV int cem_dt_885x_receive_data(int fd, int revents, void *cb_data)
                        } else {
                                /* Tell device to start transferring from memory. */
                                cmd = CMD_TRANSFER_MEMORY;
-                               serial_write_nonblocking(serial, &cmd, 1);
+                               serial_write_blocking(serial, &cmd, 1, 0);
                        }
                }
        }
@@ -450,7 +456,7 @@ static int cem_dt_885x_toggle(const struct sr_dev_inst *sdi, uint8_t cmd,
         * only thing to do is wait for the token that will confirm
         * whether the command worked or not, and resend if needed. */
        while (TRUE) {
-               if (serial_write_nonblocking(serial, (const void *)&cmd, 1) != 1)
+               if (serial_write_blocking(serial, (const void *)&cmd, 1, 0) < 0)
                        return SR_ERR;
                if (wait_for_token(sdi, tokens, timeout) == SR_ERR)
                        return SR_ERR;
@@ -764,11 +770,11 @@ SR_PRIV int cem_dt_885x_meas_range_set(const struct sr_dev_inst *sdi,
        devc = sdi->priv;
        if (low == 30 && high == 130)
                token = TOKEN_MEAS_RANGE_30_130;
-       else if (low == 30 &&  high == 80)
+       else if (low == 30 && high == 80)
                token = TOKEN_MEAS_RANGE_30_80;
-       else if (low == 50 &&  high == 100)
+       else if (low == 50 && high == 100)
                token = TOKEN_MEAS_RANGE_50_100;
-       else if (low == 80 &&  high == 130)
+       else if (low == 80 && high == 130)
                token = TOKEN_MEAS_RANGE_80_130;
        else
                return SR_ERR;
@@ -811,7 +817,7 @@ SR_PRIV int cem_dt_885x_power_off(const struct sr_dev_inst *sdi)
        cmd = CMD_TOGGLE_POWER_OFF;
        while (TRUE) {
                serial_flush(serial);
-               if (serial_write_nonblocking(serial, (const void *)&cmd, 1) != 1)
+               if (serial_write_blocking(serial, (const void *)&cmd, 1, 0) < 0)
                        return SR_ERR;
                /* It never takes more than 23ms for the next token to arrive. */
                g_usleep(25 * 1000);