X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Flink-mso19%2Fprotocol.c;h=8721ec2b0c4761e4abf675de1e0a722821575057;hb=599f9e1deb6b6a4a75e00e29d86935845164eeed;hp=fafd83c3b93b7a15a3488496d4600da9b737e9d3;hpb=4f840ce965b1c30c5ab75afecc56193cbaf5c1b3;p=libsigrok.git
diff --git a/src/hardware/link-mso19/protocol.c b/src/hardware/link-mso19/protocol.c
index fafd83c3..8721ec2b 100644
--- a/src/hardware/link-mso19/protocol.c
+++ b/src/hardware/link-mso19/protocol.c
@@ -19,6 +19,7 @@
* along with this program. If not, see .
*/
+#include
#include "protocol.h"
/* serial protocol */
@@ -29,8 +30,6 @@
static const char mso_head[] = { 0x40, 0x4c, 0x44, 0x53, 0x7e };
static const char mso_foot[] = { 0x7e };
-extern SR_PRIV struct sr_dev_driver link_mso19_driver_info;
-
SR_PRIV int mso_send_control_message(struct sr_serial_dev_inst *serial,
uint16_t payload[], int n)
{
@@ -42,19 +41,15 @@ SR_PRIV int mso_send_control_message(struct sr_serial_dev_inst *serial,
if (serial->fd < 0)
goto ret;
- if (!(buf = g_try_malloc(s))) {
- sr_err("Failed to malloc message buffer.");
- ret = SR_ERR_MALLOC;
- goto ret;
- }
+ buf = g_malloc(s);
p = buf;
memcpy(p, mso_head, sizeof(mso_head));
p += sizeof(mso_head);
for (i = 0; i < n; i++) {
- *(uint16_t *) p = g_htons(payload[i]);
- p += 2;
+ WB16(p, payload[i]);
+ p += sizeof(uint16_t);
}
memcpy(p, mso_foot, sizeof(mso_foot));
@@ -105,7 +100,7 @@ SR_PRIV int mso_configure_trigger(const struct sr_dev_inst *sdi)
trigger_config |= 0x20; //DSO level trigger & width < trigger_width
break;
case 2:
- trigger_config |= 0x40; //DSO level trigger & width >= trigger_width
+ trigger_config |= 0x40; //DSO level trigger & width >= trigger_width
break;
case 3:
trigger_config |= 0x60; //LA combination trigger
@@ -202,7 +197,7 @@ SR_PRIV int mso_dac_out(const struct sr_dev_inst *sdi, uint16_t val)
return mso_send_control_message(devc->serial, ARRAY_AND_SIZE(ops));
}
-SR_PRIV inline uint16_t mso_calc_raw_from_mv(struct dev_context * devc)
+SR_PRIV uint16_t mso_calc_raw_from_mv(struct dev_context *devc)
{
return (uint16_t) (0x200 -
((devc->dso_trigger_voltage / devc->dso_probe_attn) /
@@ -289,15 +284,12 @@ SR_PRIV int mso_toggle_led(struct sr_dev_inst *sdi, int state)
SR_PRIV void stop_acquisition(const struct sr_dev_inst *sdi)
{
- struct sr_datafeed_packet packet;
struct dev_context *devc;
devc = sdi->priv;
serial_source_remove(sdi->session, devc->serial);
- /* Terminate session */
- packet.type = SR_DF_END;
- sr_session_send(sdi, &packet);
+ std_session_send_df_end(sdi);
}
SR_PRIV int mso_clkrate_out(struct sr_serial_dev_inst *serial, uint16_t val)
@@ -340,7 +332,7 @@ SR_PRIV int mso_check_trigger(struct sr_serial_dev_inst *serial, uint8_t *info)
sr_dbg("Requesting trigger state.");
ret = mso_send_control_message(serial, ARRAY_AND_SIZE(ops));
- if (info == NULL || ret != SR_OK)
+ if (!info || ret != SR_OK)
return ret;
uint8_t buf = 0;
@@ -357,25 +349,10 @@ SR_PRIV int mso_receive_data(int fd, int revents, void *cb_data)
{
struct sr_datafeed_packet packet;
struct sr_datafeed_logic logic;
- struct sr_dev_inst *sdi;
- GSList *l;
+ struct sr_dev_inst *sdi = cb_data;
+ struct dev_context *devc = sdi->priv;
int i;
- struct drv_context *drvc = di->priv;
-
- /* Find this device's devc struct by its fd. */
- struct dev_context *devc = NULL;
- for (l = drvc->instances; l; l = l->next) {
- sdi = l->data;
- devc = sdi->priv;
- if (devc->serial->fd == fd)
- break;
- devc = NULL;
- }
- if (!devc)
- /* Shouldn't happen. */
- return TRUE;
-
(void)revents;
uint8_t in[1024];
@@ -422,13 +399,13 @@ SR_PRIV int mso_receive_data(int fd, int revents, void *cb_data)
logic.length = 1024;
logic.unitsize = 1;
logic.data = logic_out;
- sr_session_send(cb_data, &packet);
+ sr_session_send(sdi, &packet);
devc->num_samples += 1024;
if (devc->limit_samples && devc->num_samples >= devc->limit_samples) {
sr_info("Requested number of samples reached.");
- sdi->driver->dev_acquisition_stop(sdi, cb_data);
+ sr_dev_acquisition_stop(sdi);
}
return TRUE;