* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#include <config.h>
+
#include <glib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <fcntl.h>
+#include <libsigrok/libsigrok.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
-#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
-
#include "protocol.h"
#define RDTECH_UM_SERIALCOMM "115200/8n1"
SR_CONF_LIMIT_MSEC | SR_CONF_SET,
};
-static GSList *rdtech_um_scan(struct sr_dev_driver *di, const char *conn,
- const char *serialcomm)
+static GSList *rdtech_um_scan(struct sr_dev_driver *di,
+ const char *conn, const char *serialcomm)
{
struct sr_serial_dev_inst *serial;
- const struct rdtech_um_profile *p = NULL;
- GSList *devices = NULL;
- struct dev_context *devc = NULL;
- struct sr_dev_inst *sdi = NULL;
+ const struct rdtech_um_profile *p;
+ GSList *devices;
+ struct dev_context *devc;
+ struct sr_dev_inst *sdi;
+ size_t ch_idx;
+ const char *name;
serial = sr_serial_dev_inst_new(conn, serialcomm);
if (serial_open(serial, SERIAL_RDWR) != SR_OK)
goto err_out_serial;
}
- devc = g_malloc0(sizeof(struct dev_context));
- sdi = g_malloc0(sizeof(struct sr_dev_inst));
-
+ devc = g_malloc0(sizeof(*devc));
sr_sw_limits_init(&devc->limits);
devc->profile = p;
+ sdi = g_malloc0(sizeof(*sdi));
+ sdi->priv = devc;
sdi->status = SR_ST_INACTIVE;
sdi->vendor = g_strdup("RDTech");
sdi->model = g_strdup(p->model_name);
sdi->version = NULL;
sdi->inst_type = SR_INST_SERIAL;
sdi->conn = serial;
- sdi->priv = devc;
- for (int i = 0; p->channels[i].name; i++)
- sr_channel_new(sdi, i, SR_CHANNEL_ANALOG, TRUE,
- p->channels[i].name);
+ for (ch_idx = 0; (name = p->channels[ch_idx].name); ch_idx++)
+ sr_channel_new(sdi, ch_idx, SR_CHANNEL_ANALOG, TRUE, name);
- devices = g_slist_append(devices, sdi);
+ devices = g_slist_append(NULL, sdi);
serial_close(serial);
if (!devices)
sr_serial_dev_inst_free(serial);
static GSList *scan(struct sr_dev_driver *di, GSList *options)
{
+ const char *conn;
+ const char *serialcomm;
+ GSList *l;
struct sr_config *src;
- const char *conn = NULL;
- const char *serialcomm = RDTECH_UM_SERIALCOMM;
- for (GSList *l = options; l; l = l->next) {
+ conn = NULL;
+ serialcomm = RDTECH_UM_SERIALCOMM;
+ for (l = options; l; l = l->next) {
src = l->data;
switch (src->key) {
case SR_CONF_CONN:
}
static int config_set(uint32_t key, GVariant *data,
- const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
struct dev_context *devc;
}
static int config_list(uint32_t key, GVariant **data,
- const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
}
static int dev_acquisition_start(const struct sr_dev_inst *sdi)
{
- struct dev_context *devc = sdi->priv;
- struct sr_serial_dev_inst *serial = sdi->conn;
+ struct dev_context *devc;
+ struct sr_serial_dev_inst *serial;
+ devc = sdi->priv;
sr_sw_limits_acquisition_start(&devc->limits);
std_session_send_df_header(sdi);
+ serial = sdi->conn;
serial_source_add(sdi->session, serial, G_IO_IN, 50,
- rdtech_um_receive_data, (void *)sdi);
+ rdtech_um_receive_data, (void *)sdi);
- return rdtech_um_poll(sdi);
+ return rdtech_um_poll(sdi, TRUE);
}
static struct sr_dev_driver rdtech_um_driver_info = {