]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/atten-pps3xxx/protocol.c
Factor out std_session_send_df_end() helper.
[libsigrok.git] / src / hardware / atten-pps3xxx / protocol.c
index ed4d5505e6a17d7ef8edf469cd8192e20b987e07..06a1d2e90d93546af3602e41ac399c04a9816d63 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include <string.h>
-#include <errno.h>
 #include "protocol.h"
 
-static void dump_packet(char *msg, uint8_t *packet)
+static void dump_packet(const char *msg, uint8_t *packet)
 {
        int i;
        char str[128];
@@ -37,13 +37,13 @@ static void handle_packet(const struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
        struct sr_datafeed_packet packet;
-       struct sr_datafeed_analog analog;
+       struct sr_datafeed_analog_old analog;
        float value, data[MAX_CHANNELS];
        int offset, i;
 
        devc = sdi->priv;
        dump_packet("received", devc->packet);
-       packet.type = SR_DF_ANALOG;
+       packet.type = SR_DF_ANALOG_OLD;
        packet.payload = &analog;
        analog.channels = sdi->channels;
        analog.num_samples = 1;
@@ -83,11 +83,13 @@ static void handle_packet(const struct sr_dev_inst *sdi)
 
 SR_PRIV void send_packet(const struct sr_dev_inst *sdi, uint8_t *packet)
 {
+       struct dev_context *devc;
        struct sr_serial_dev_inst *serial;
 
+       devc = sdi->priv;
        serial = sdi->conn;
-       if (serial_write(serial, packet, PACKET_SIZE) == -1)
-               sr_dbg("Failed to send packet: %s", strerror(errno));
+       if (serial_write_blocking(serial, packet, PACKET_SIZE, devc->delay_ms) < PACKET_SIZE)
+               sr_dbg("Failed to send packet.");
        dump_packet("sent", packet);
 }
 
@@ -131,7 +133,6 @@ SR_PRIV int atten_pps3xxx_receive_data(int fd, int revents, void *cb_data)
        struct dev_context *devc;
        const struct sr_dev_inst *sdi;
        struct sr_serial_dev_inst *serial;
-       struct sr_datafeed_packet packet;
        unsigned char c;
 
        (void)fd;
@@ -154,12 +155,10 @@ SR_PRIV int atten_pps3xxx_receive_data(int fd, int revents, void *cb_data)
                                send_config(sdi);
                        else {
                                serial_source_remove(sdi->session, serial);
-                               packet.type = SR_DF_END;
-                               sr_session_send(sdi, &packet);
+                               std_session_send_df_end(sdi, LOG_PREFIX);
                        }
                }
        }
 
        return TRUE;
 }
-