* Set up the probe mask for later configuration into the
* flag register.
*/
- probe_bit = 1 << (probe->index - 1);
+ probe_bit = 1 << (probe->index);
ctx->probe_mask |= probe_bit;
if (!probe->trigger)
guchar tmp_c;
sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, NULL, NULL, NULL);
+ sdi->driver = odi;
ctx = ols_dev_new();
sdi->priv = ctx;
/* not an OLS -- some other board that uses the sump protocol */
sdi = sr_dev_inst_new(final_devcnt, SR_ST_INACTIVE,
"Sump", "Logic Analyzer", "v1.0");
+ sdi->driver = odi;
ctx = ols_dev_new();
for (j = 0; j < 32; j++) {
if (!(probe = sr_probe_new(j, SR_PROBE_LOGIC, TRUE,
return devices;
}
-static int hw_dev_open(int dev_index)
+static int hw_dev_open(struct sr_dev_inst *sdi)
{
- struct sr_dev_inst *sdi;
struct context *ctx;
- if (!(sdi = sr_dev_inst_get(odi->instances, dev_index)))
- return SR_ERR;
-
ctx = sdi->priv;
ctx->serial->fd = serial_open(ctx->serial->port, O_RDWR);
return SR_OK;
}
-static int hw_dev_close(int dev_index)
+static int hw_dev_close(struct sr_dev_inst *sdi)
{
- struct sr_dev_inst *sdi;
struct context *ctx;
- if (!(sdi = sr_dev_inst_get(odi->instances, dev_index))) {
- sr_err("ols: %s: sdi was NULL", __func__);
- return SR_ERR_BUG;
- }
-
ctx = sdi->priv;
- /* TODO */
if (ctx->serial->fd != -1) {
serial_close(ctx->serial->fd);
ctx->serial->fd = -1;
case SR_DI_INST:
*data = sdi;
break;
+ case SR_DI_HWCAPS:
+ *data = hwcaps;
+ break;
case SR_DI_NUM_PROBES:
*data = GINT_TO_POINTER(1);
break;
return SR_OK;
}
-static int hw_dev_status_get(int dev_index)
-{
- struct sr_dev_inst *sdi;
-
- if (!(sdi = sr_dev_inst_get(odi->instances, dev_index)))
- return SR_ST_NOT_FOUND;
-
- return sdi->status;
-}
-
-static int set_samplerate(struct sr_dev_inst *sdi, uint64_t samplerate)
+static int set_samplerate(const struct sr_dev_inst *sdi, uint64_t samplerate)
{
struct context *ctx;
return SR_OK;
}
-static int hw_dev_config_set(int dev_index, int hwcap, const void *value)
+static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
+ const void *value)
{
- struct sr_dev_inst *sdi;
struct context *ctx;
int ret;
const uint64_t *tmp_u64;
- if (!(sdi = sr_dev_inst_get(odi->instances, dev_index)))
- return SR_ERR;
ctx = sdi->priv;
if (sdi->status != SR_ST_ACTIVE)
return TRUE;
}
-static int hw_dev_acquisition_start(int dev_index, void *cb_data)
+static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
+ void *cb_data)
{
struct sr_datafeed_packet *packet;
struct sr_datafeed_header *header;
struct sr_datafeed_meta_logic meta;
- struct sr_dev_inst *sdi;
struct context *ctx;
uint32_t trigger_config[4];
uint32_t data;
int num_channels;
int i;
- if (!(sdi = sr_dev_inst_get(odi->instances, dev_index)))
- return SR_ERR;
-
ctx = sdi->priv;
if (sdi->status != SR_ST_ACTIVE)
}
/* TODO: This stops acquisition on ALL devices, ignoring dev_index. */
-static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
+static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
+ void *cb_data)
{
struct sr_datafeed_packet packet;
/* Avoid compiler warnings. */
- (void)dev_index;
+ (void)sdi;
packet.type = SR_DF_END;
sr_session_send(cb_data, &packet);
.dev_open = hw_dev_open,
.dev_close = hw_dev_close,
.info_get = hw_info_get,
- .dev_status_get = hw_dev_status_get,
.dev_config_set = hw_dev_config_set,
.dev_acquisition_start = hw_dev_acquisition_start,
.dev_acquisition_stop = hw_dev_acquisition_stop,