};
static const uint32_t ipdbg_org_la_devopts[] = {
- SR_CONF_TRIGGER_MATCH | SR_CONF_LIST,
+ SR_CONF_TRIGGER_MATCH | SR_CONF_LIST| SR_CONF_SET,
SR_CONF_CAPTURE_RATIO | SR_CONF_GET | SR_CONF_SET,
- SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET,
+ SR_CONF_LIMIT_SAMPLES | SR_CONF_GET
};
static const int32_t ipdbg_org_la_trigger_matches[] = {
SR_TRIGGER_ONE,
SR_TRIGGER_RISING,
SR_TRIGGER_FALLING,
- //SR_TRIGGER_EDGE,
+ SR_TRIGGER_EDGE,
};
SR_PRIV struct sr_dev_driver ipdbg_la_driver_info;
ipdbg_org_la_get_addrwidth_and_datawidth(tcp, devc);
sr_err("addr_width = %d, data_width = %d\n", devc->ADDR_WIDTH, devc->DATA_WIDTH);
- sr_err("limit samples = %d\n", devc->limit_samples);
+ sr_err("limit samples = %d\n", devc->limit_samples_max);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
- for (int i = 0; i < devc->DATA_WIDTH; i++)
+ for (unsigned int i = 0; i < devc->DATA_WIDTH; i++)
{
snprintf(buff, bufSize, "ch%d", i);
sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, buff);
sdi->inst_type = SR_INST_USER;
sdi->conn = tcp;
- drvc->instances = g_slist_append(drvc->instances, sdi);
- devices = g_slist_append(devices, sdi);
-
ipdbg_org_la_tcp_close(tcp);
- return devices;
+ //drvc->instances = g_slist_append(drvc->instances, sdi);
+ devices = g_slist_append(devices, sdi);
+
+ return std_scan_complete(di, devices);
}
static int dev_clear(const struct sr_dev_driver *di)
{
- sr_err("dev_clear\n");
+ //sr_err("dev_clear\n");
struct drv_context *drvc = di->context;
struct sr_dev_inst *sdi;
static int dev_open(struct sr_dev_inst *sdi)
{
- sr_err("dev_open\n");
+ //sr_err("dev_open\n");
(void)sdi;
/* TODO: get handle from sdi->conn and open it. */
if (!tcp)
{
- sr_err("Out of memory\n");
return SR_ERR;
}
- sdi->conn = tcp;
if(ipdbg_org_la_tcp_open(tcp) != SR_OK)
return SR_ERR;
(void)sdi;
/* TODO: get handle from sdi->conn and close it. */
- sr_err("dev_close\n");
+ //sr_err("dev_close\n");
/// should be called before a new call to scan()
struct ipdbg_org_la_tcp *tcp = sdi->conn;
- ipdbg_org_la_tcp_close(tcp);
+ if(tcp)
+ ipdbg_org_la_tcp_close(tcp);
sdi->conn = NULL;
if (sdi->status != SR_ST_ACTIVE)
return SR_ERR_DEV_CLOSED;
- sr_err("config_set\n");
+ //sr_err("config_set\n");
struct ipdbg_org_la_dev_context *devc = sdi->priv;
ret = SR_OK;
return std_init(di, sr_ctx);
}
-static int cleanup(const struct sr_dev_driver *di)
-{
- sr_err("cleanup\n");
- dev_clear(di);
-
- //return std_cleanup(di);
- return SR_OK;
-}
-
static GSList *dev_list(const struct sr_dev_driver *di)
{
- //return std_dev_list(di);
- return ((struct drv_context *) (di->context))-> instances;
+ return ((struct drv_context *) (di->context))->instances;
}
static int dev_acquisition_start(const struct sr_dev_inst *sdi)
struct ipdbg_org_la_dev_context *devc = sdi->priv;
ipdbg_org_la_convert_trigger(sdi);
- sr_err("dev_acquisition_start\n");
+ //sr_err("dev_acquisition_start\n");
/* Send Triggerkonviguration */
ipdbg_org_la_sendTrigger(devc, tcp);
- sr_err("dev_acquisition_start1\n");
+ //sr_err("dev_acquisition_start1\n");
/* Send Delay */
ipdbg_org_la_sendDelay(devc, tcp);
- sr_err("dev_acquisition_start2\n");
+ //sr_err("dev_acquisition_start2\n");
//std_session_send_df_header(sdi, LOG_PREFIX);
std_session_send_df_header(sdi);
- sr_err("dev_acquisition_start3\n");
+ //sr_err("dev_acquisition_start3\n");
/* If the device stops sending for longer than it takes to send a byte,
* that means it's finished. But wait at least 100 ms to be safe.
*/
//sr_session_source_add(sdi->session, -1, G_IO_IN, 100, ipdbg_receive_data, (struct sr_dev_inst *)sdi);
//sr_session_source_add(sdi->session, -1, G_IO_IN, 100, ipdbg_org_la_receive_data, NULL);
sr_session_source_add(sdi->session, tcp->socket, G_IO_IN, 100, ipdbg_org_la_receive_data, (struct sr_dev_inst *)sdi);
- sr_err("dev_acquisition_start4\n");
+ //sr_err("dev_acquisition_start4\n");
ipdbg_org_la_sendStart(tcp);
- sr_err("dev_acquisition_start5\n");
+ //sr_err("dev_acquisition_start5\n");
/* TODO: configure hardware, reset acquisition state, set up
* callbacks and send header packet. */
.longname = "ipdbg.org logic analyzer",
.api_version = 1,
.init = init,
- .cleanup = cleanup,
+ .cleanup = std_cleanup,
.scan = scan,
.dev_list = dev_list,
.dev_clear = dev_clear,