X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fatten-pps3xxx%2Fapi.c;h=b72eeb4a59107aff7b415438e23efeb0c904dd71;hb=61f2b7f74cd2d05cacb2bfb3cad2c2d67c856f47;hp=2a3ac8f5701210a345a3907fc9367c3d1699c4c5;hpb=0af636bed97c174bea46e61e961eaa1b0b162e0f;p=libsigrok.git diff --git a/src/hardware/atten-pps3xxx/api.c b/src/hardware/atten-pps3xxx/api.c index 2a3ac8f5..b72eeb4a 100644 --- a/src/hardware/atten-pps3xxx/api.c +++ b/src/hardware/atten-pps3xxx/api.c @@ -36,12 +36,12 @@ static const uint32_t scanopts[] = { SR_CONF_SERIALCOMM, }; -static const uint32_t devopts_drv[] = { +static const uint32_t drvopts[] = { SR_CONF_POWER_SUPPLY, - SR_CONF_CONTINUOUS, }; -static const uint32_t devopts_global[] = { +static const uint32_t devopts[] = { + SR_CONF_CONTINUOUS | SR_CONF_SET, SR_CONF_OUTPUT_CHANNEL_CONFIG | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST, SR_CONF_OVER_CURRENT_PROTECTION_ENABLED | SR_CONF_GET | SR_CONF_SET, }; @@ -122,11 +122,11 @@ static GSList *scan(GSList *options, int modelid) if (!serialcomm) serialcomm = SERIALCOMM; - if (!(serial = sr_serial_dev_inst_new(conn, serialcomm))) - return NULL; + serial = sr_serial_dev_inst_new(conn, serialcomm); if (serial_open(serial, SERIAL_RDWR) != SR_OK) return NULL; + serial_flush(serial); /* This is how the vendor software scans for hardware. */ @@ -164,7 +164,7 @@ static GSList *scan(GSList *options, int modelid) return NULL; } - sdi = sr_dev_inst_new(); + sdi = g_malloc0(sizeof(struct sr_dev_inst)); sdi->status = SR_ST_INACTIVE; sdi->vendor = g_strdup("Atten"); sdi->model = g_strdup(model->name); @@ -383,7 +383,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * if (key == SR_CONF_DEVICE_OPTIONS && !sdi) { *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - devopts_drv, ARRAY_SIZE(devopts_drv), sizeof(uint32_t)); + drvopts, ARRAY_SIZE(drvopts), sizeof(uint32_t)); return SR_OK; } @@ -397,7 +397,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * switch (key) { case SR_CONF_DEVICE_OPTIONS: *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - devopts_global, ARRAY_SIZE(devopts_global), sizeof(uint32_t)); + devopts, ARRAY_SIZE(devopts), sizeof(uint32_t)); break; case SR_CONF_OUTPUT_CHANNEL_CONFIG: if (devc->model->channel_modes == CHANMODE_INDEPENDENT) {