X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=sigrok-cli.c;h=d4a694d1334f9fc762ecefd216404b7ce5c25e2b;hb=6b0462c2e0bcad51f759ec2efa417a137e8ca8c6;hp=2f6c59d80b26bb1eb016ea05fd27426f70943320;hpb=198f4c6c8d8e572aed41dfc3f7d3fe413e421770;p=sigrok-cli.git diff --git a/sigrok-cli.c b/sigrok-cli.c index 2f6c59d..d4a694d 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -36,6 +36,8 @@ #define DEFAULT_OUTPUT_FORMAT "bits:width=64" +static struct sr_context *sr_ctx = NULL; + static uint64_t limit_samples = 0; static uint64_t limit_frames = 0; static struct sr_output_format *output_format = NULL; @@ -162,7 +164,7 @@ static GSList *device_scan(void) return NULL; } g_free(drvname); - if (sr_driver_init(driver) != SR_OK) { + if (sr_driver_init(sr_ctx, driver) != SR_OK) { g_critical("Failed to initialize driver."); return NULL; } @@ -178,7 +180,7 @@ static GSList *device_scan(void) drivers = sr_driver_list(); for (i = 0; drivers[i]; i++) { driver = drivers[i]; - if (sr_driver_init(driver) != SR_OK) { + if (sr_driver_init(sr_ctx, driver) != SR_OK) { g_critical("Failed to initialize driver."); return NULL; } @@ -194,7 +196,7 @@ static GSList *device_scan(void) static void show_version(void) { - GSList *l; + const GSList *l; struct sr_dev_driver **drivers; struct sr_input_format **inputs; struct sr_output_format **outputs; @@ -538,7 +540,7 @@ static void show_pd_detail(void) } static void datafeed_in(const struct sr_dev_inst *sdi, - struct sr_datafeed_packet *packet) + const struct sr_datafeed_packet *packet) { static struct sr_output *o = NULL; static int logic_probelist[SR_MAX_NUM_PROBES] = { -1 }; @@ -549,10 +551,10 @@ static void datafeed_in(const struct sr_dev_inst *sdi, static FILE *outfile = NULL; static int num_analog_probes = 0; struct sr_probe *probe; - struct sr_datafeed_logic *logic; - struct sr_datafeed_meta_logic *meta_logic; - struct sr_datafeed_analog *analog; - struct sr_datafeed_meta_analog *meta_analog; + const struct sr_datafeed_logic *logic; + const struct sr_datafeed_meta_logic *meta_logic; + const struct sr_datafeed_analog *analog; + const struct sr_datafeed_meta_analog *meta_analog; static int num_enabled_analog_probes = 0; int num_enabled_probes, sample_size, ret, i; uint64_t output_len, filter_out_len; @@ -821,7 +823,6 @@ static int register_pds(struct sr_dev *dev, const char *pdstring) int ret; char **pdtokens, **pdtok, *pd_name; - /* Avoid compiler warnings. */ (void)dev; ret = 0; @@ -1287,8 +1288,6 @@ static int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args) g_critical("Failed to set device option '%s'.", (char *)key); return ret; } - else - break; } return SR_OK; @@ -1458,7 +1457,6 @@ static void run_session(void) static void logger(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer cb_data) { - /* Avoid compiler warnings. */ (void)log_domain; (void)cb_data; @@ -1487,19 +1485,19 @@ int main(int argc, char **argv) if (!g_option_context_parse(context, &argc, &argv, &error)) { g_critical("%s", error->message); - goto done_noexit; + goto done; } /* Set the loglevel (amount of messages to output) for libsigrok. */ if (sr_log_loglevel_set(opt_loglevel) != SR_OK) - goto done_noexit; + goto done; /* Set the loglevel (amount of messages to output) for libsigrokdecode. */ if (srd_log_loglevel_set(opt_loglevel) != SRD_OK) - goto done_noexit; + goto done; - if (sr_init() != SR_OK) - goto done_noexit; + if (sr_init(&sr_ctx) != SR_OK) + goto done; if (opt_pds) { if (srd_init(NULL) != SRD_OK) @@ -1539,9 +1537,9 @@ int main(int argc, char **argv) ret = 0; done: - sr_exit(); + if (sr_ctx) + sr_exit(sr_ctx); -done_noexit: g_option_context_free(context); return ret;