diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ed776dd..775710c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -462,7 +462,7 @@ set(libsigrok4DSL_HEADERS libsigrok4DSL/libsigrok.h libsigrok4DSL/config.h libsigrok4DSL/hardware/DSL/command.h - libsigrok4DSL/hardware/DSL/dsl.h + libsigrok4DSL/hardware/DSL/dsl.h ) #=============================================================================== diff --git a/DSView/main.cpp b/DSView/main.cpp index 57ff8e2b..96eec1e5 100644 --- a/DSView/main.cpp +++ b/DSView/main.cpp @@ -139,7 +139,11 @@ int main(int argc, char *argv[]) } //----------------------init log - dsv_log_init(); + dsv_log_init(); + + if (bStoreLog && logLevel < XLOG_LEVEL_DBG){ + logLevel = XLOG_LEVEL_DBG; + } if (logLevel != -1){ dsv_log_level(logLevel); @@ -191,7 +195,7 @@ bool bHighScale = true; //----------------------run dsv_info("----------------- version: %s-----------------", DS_VERSION_STRING); - dsv_info("Qt:%s", QT_VERSION_STR); + dsv_dbg("Qt:%s", QT_VERSION_STR); AppControl *control = AppControl::Instance(); AppConfig::Instance().LoadAll(); //load app config diff --git a/DSView/pv/appcontrol.cpp b/DSView/pv/appcontrol.cpp index b2b3d391..cc899683 100644 --- a/DSView/pv/appcontrol.cpp +++ b/DSView/pv/appcontrol.cpp @@ -68,6 +68,8 @@ void AppControl::Destroy(){ bool AppControl::Init() { + sr_log_set_context(dsv_log_context()); + // Initialise libsigrok if (sr_init(&sr_ctx) != SR_OK) { @@ -146,12 +148,6 @@ const char *AppControl::GetLastError() return m_error.c_str(); } - void AppControl::SetLogLevel(int level) - { - sr_log_loglevel_set(level); - srd_log_loglevel_set(level); - } - bool AppControl::TopWindowIsMaximized() { if (_topWindow != NULL){ diff --git a/DSView/pv/appcontrol.h b/DSView/pv/appcontrol.h index 82bbd3dd..2cbb1754 100644 --- a/DSView/pv/appcontrol.h +++ b/DSView/pv/appcontrol.h @@ -51,9 +51,7 @@ public: void UnInit(); - const char* GetLastError(); - - void SetLogLevel(int level); + const char* GetLastError(); inline pv::SigSession* GetSession(){ return _session; diff --git a/DSView/pv/log.cpp b/DSView/pv/log.cpp index 9a147aca..e01aca39 100644 --- a/DSView/pv/log.cpp +++ b/DSView/pv/log.cpp @@ -25,7 +25,7 @@ #include "config/appconfig.h" xlog_writer *dsv_log = nullptr; -xlog_context *log_ctx = nullptr; +static xlog_context *log_ctx = nullptr; bool b_logfile = false; void dsv_log_init() diff --git a/DSView/pv/log.h b/DSView/pv/log.h index b193beee..9f9f3dc3 100644 --- a/DSView/pv/log.h +++ b/DSView/pv/log.h @@ -34,10 +34,11 @@ void dsv_log_level(int l); void dsv_log_enalbe_logfile(); -#define dsv_err(fmt, args...) xlog_err(dsv_log, fmt, ## args) -#define dsv_warn(fmt, args...) xlog_warn(dsv_log, fmt, ## args) -#define dsv_info(fmt, args...) xlog_info(dsv_log, fmt, ## args) -#define dsv_dbg(fmt, args...) xlog_dbg(dsv_log, fmt, ## args) -#define dsv_detail(fmt, args...) xlog_detail(dsv_log, fmt, ## args) +#define LOG_PREFIX "" +#define dsv_err(fmt, args...) xlog_err(dsv_log, LOG_PREFIX fmt, ## args) +#define dsv_warn(fmt, args...) xlog_warn(dsv_log, LOG_PREFIX fmt, ## args) +#define dsv_info(fmt, args...) xlog_info(dsv_log, LOG_PREFIX fmt, ## args) +#define dsv_dbg(fmt, args...) xlog_dbg(dsv_log, LOG_PREFIX fmt, ## args) +#define dsv_detail(fmt, args...) xlog_detail(dsv_log, LOG_PREFIX fmt, ## args) #endif \ No newline at end of file diff --git a/DSView/pv/prop/binding/probeoptions.cpp b/DSView/pv/prop/binding/probeoptions.cpp index 2aa6309c..9b8fcfc1 100644 --- a/DSView/pv/prop/binding/probeoptions.cpp +++ b/DSView/pv/prop/binding/probeoptions.cpp @@ -117,7 +117,7 @@ GVariant* ProbeOptions::config_getter( { GVariant *data = NULL; if (sr_config_get(sdi->driver, sdi, probe, NULL, key, &data) != SR_OK) { - dsv_warn(NULL, "%s%d", "WARNING: Failed to get value of config id:", key); + dsv_warn("%s%d", "WARNING: Failed to get value of config id:", key); return NULL; } return data; diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index 0cdf9435..8463cde2 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -60,7 +60,6 @@ #include "data/decode/decoderstatus.h" #include "dsvdef.h" #include "log.h" - namespace pv { diff --git a/libsigrok4DSL/backend.c b/libsigrok4DSL/backend.c index 164c5b37..d892d157 100644 --- a/libsigrok4DSL/backend.c +++ b/libsigrok4DSL/backend.c @@ -22,6 +22,7 @@ #include "libsigrok-internal.h" #include #include "config.h" /* Needed for HAVE_LIBUSB_1_0 and others. */ +#include "log.h" /** * @mainpage libsigrok API @@ -125,7 +126,7 @@ static int sanity_check_all_drivers(void) struct sr_dev_driver **drivers; const char *d; - sr_spew("Sanity-checking all drivers."); + sr_detail("Sanity-checking all drivers."); drivers = sr_driver_list(); for (i = 0; drivers[i]; i++) { @@ -215,7 +216,7 @@ static int sanity_check_all_input_modules(void) struct sr_input_format **inputs; const char *d; - sr_spew("Sanity-checking all input modules."); + sr_detail("Sanity-checking all input modules."); inputs = sr_input_list(); for (i = 0; inputs[i]; i++) { @@ -264,7 +265,7 @@ static int sanity_check_all_output_modules(void) const struct sr_output_module **outputs; const char *d; - sr_spew("Sanity-checking all output modules."); + sr_detail("Sanity-checking all output modules."); outputs = sr_output_list(); for (i = 0; outputs[i]; i++) { @@ -327,6 +328,8 @@ SR_API int sr_init(struct sr_context **ctx) int ret = SR_ERR; struct sr_context *context; + sr_log_init(); //try init log + if (!ctx) { sr_err("%s(): libsigrok context was NULL.", __func__); return SR_ERR; @@ -391,7 +394,7 @@ done: * @since 0.1.0 (but the API changed in 0.2.0) */ SR_API int sr_exit(struct sr_context *ctx) -{ +{ if (!ctx) { sr_err("%s(): libsigrok context was NULL.", __func__); return SR_ERR; @@ -405,6 +408,8 @@ SR_API int sr_exit(struct sr_context *ctx) g_free(ctx); + sr_log_uninit(); //try uninit log + return SR_OK; } diff --git a/libsigrok4DSL/dsdevice.c b/libsigrok4DSL/dsdevice.c index 213a91db..654410dd 100644 --- a/libsigrok4DSL/dsdevice.c +++ b/libsigrok4DSL/dsdevice.c @@ -22,15 +22,10 @@ #include #include #include "config.h" /* Needed for HAVE_LIBUSB_1_0 and others. */ +#include "log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "device: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) /** * @file diff --git a/libsigrok4DSL/hardware/DSL/command.c b/libsigrok4DSL/hardware/DSL/command.c index b391237d..d87de0eb 100644 --- a/libsigrok4DSL/hardware/DSL/command.c +++ b/libsigrok4DSL/hardware/DSL/command.c @@ -23,6 +23,7 @@ #include "command.h" #include "dsl.h" #include +#include "../../log.h" SR_PRIV int command_ctl_wr(libusb_device_handle *devhdl, struct ctl_wr_cmd cmd) { diff --git a/libsigrok4DSL/hardware/DSL/dscope.c b/libsigrok4DSL/hardware/DSL/dscope.c index b9bdb446..ce142bc6 100644 --- a/libsigrok4DSL/hardware/DSL/dscope.c +++ b/libsigrok4DSL/hardware/DSL/dscope.c @@ -23,7 +23,10 @@ #include "dsl.h" #include "command.h" +#include "../../log.h" +#undef LOG_PREFIX +#define LOG_PREFIX "dscope: " enum { /** Normal */ diff --git a/libsigrok4DSL/hardware/DSL/dsl.c b/libsigrok4DSL/hardware/DSL/dsl.c index a0d4862b..f1090900 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.c +++ b/libsigrok4DSL/hardware/DSL/dsl.c @@ -21,6 +21,7 @@ #include "../../libsigrok-internal.h" #include "command.h" #include "dsl.h" +#include "../../log.h" #include #include @@ -2244,7 +2245,7 @@ static void receive_transfer(struct libusb_transfer *transfer) if (devc->abort) devc->status = DSL_STOP; - sr_info("%" PRIu64 ": receive_transfer(): status %d; timeout %d; received %d bytes.", + sr_info("%llu: receive_transfer(): status %d; timeout %d; received %d bytes.", g_get_monotonic_time(), transfer->status, transfer->timeout, transfer->actual_length); switch (transfer->status) { @@ -2367,7 +2368,7 @@ static void receive_header(struct libusb_transfer *transfer) devc->status = DSL_ERROR; if (!devc->abort && transfer->status == LIBUSB_TRANSFER_COMPLETED && trigger_pos->check_id == TRIG_CHECKID) { - sr_info("%" PRIu64 ": receive_trigger_pos(): status %d; timeout %d; received %d bytes.", + sr_info("%llu: receive_trigger_pos(): status %d; timeout %d; received %d bytes.", g_get_monotonic_time(), transfer->status, transfer->timeout, transfer->actual_length); remain_cnt = trigger_pos->remain_cnt_h; remain_cnt = (remain_cnt << 32) + trigger_pos->remain_cnt_l; diff --git a/libsigrok4DSL/hardware/DSL/dsl.h b/libsigrok4DSL/hardware/DSL/dsl.h index 9f9fe95f..89e2663c 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.h +++ b/libsigrok4DSL/hardware/DSL/dsl.h @@ -41,14 +41,9 @@ #undef max #define max(a,b) ((a)>(b)?(a):(b)) -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "DSL Hardware: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) + #define USB_INTERFACE 0 #define USB_CONFIGURATION 1 diff --git a/libsigrok4DSL/hardware/DSL/dslogic.c b/libsigrok4DSL/hardware/DSL/dslogic.c index 76419965..1dd6538c 100644 --- a/libsigrok4DSL/hardware/DSL/dslogic.c +++ b/libsigrok4DSL/hardware/DSL/dslogic.c @@ -23,7 +23,10 @@ #include "dsl.h" #include "command.h" +#include "../../log.h" +#undef LOG_PREFIX +#define LOG_PREFIX "dslogic: " enum { /** Buffer mode */ diff --git a/libsigrok4DSL/hardware/common/ezusb.c b/libsigrok4DSL/hardware/common/ezusb.c index a1b4ca6a..1e90f0fa 100644 --- a/libsigrok4DSL/hardware/common/ezusb.c +++ b/libsigrok4DSL/hardware/common/ezusb.c @@ -27,15 +27,10 @@ #include #include #include +#include "../../log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "ezusb: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) SR_PRIV int ezusb_reset(struct libusb_device_handle *hdl, int set_clear) { diff --git a/libsigrok4DSL/hardware/common/usb.c b/libsigrok4DSL/hardware/common/usb.c index 5f327c64..f85bf7b1 100644 --- a/libsigrok4DSL/hardware/common/usb.c +++ b/libsigrok4DSL/hardware/common/usb.c @@ -21,6 +21,10 @@ #include "../../libsigrok-internal.h" #include #include +#include "../../log.h" + +#undef LOG_PREFIX +#define LOG_PREFIX "usb: " /* SR_CONF_CONN takes one of these: */ #define CONN_USB_VIDPID "^([0-9a-z]{4})\\.([0-9a-z]{4})$" @@ -30,15 +34,6 @@ #define SUBCLASS_USBTMC 0x03 #define USBTMC_USB488 0x01 -/* Message logging helpers with subsystem-specific prefix string. */ -#define LOG_PREFIX "usb: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) - /** * Find USB devices according to a connection string. * diff --git a/libsigrok4DSL/hardware/demo/demo.c b/libsigrok4DSL/hardware/demo/demo.c index 5539d5fb..24e40c64 100644 --- a/libsigrok4DSL/hardware/demo/demo.c +++ b/libsigrok4DSL/hardware/demo/demo.c @@ -21,6 +21,12 @@ */ #include "demo.h" +#include "../../log.h" + +/* Message logging helpers with subsystem-specific prefix string. */ + +#undef LOG_PREFIX +#define LOG_PREFIX "demo: " /* The size of chunks to send through the session bus. */ /* TODO: Should be configurable. */ @@ -428,7 +434,7 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, devc->cur_samplerate = g_variant_get_uint64(data); devc->samples_counter = 0; devc->pre_index = 0; - sr_dbg("%s: setting samplerate to %" PRIu64, __func__, + sr_dbg("%s: setting samplerate to %llu", __func__, devc->cur_samplerate); ret = SR_OK; } else if (id == SR_CONF_LIMIT_SAMPLES) { @@ -439,14 +445,14 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, if (sdi->mode == DSO && en_ch_num(sdi) == 1) { devc->limit_samples /= 2; } - sr_dbg("%s: setting limit_samples to %" PRIu64, __func__, + sr_dbg("%s: setting limit_samples to %llu", __func__, devc->limit_samples); ret = SR_OK; } else if (id == SR_CONF_LIMIT_MSEC) { devc->limit_msec = g_variant_get_uint64(data); devc->limit_samples = 0; devc->limit_samples_show = devc->limit_samples; - sr_dbg("%s: setting limit_msec to %" PRIu64, __func__, + sr_dbg("%s: setting limit_msec to %llu", __func__, devc->limit_msec); ret = SR_OK; } else if (id == SR_CONF_DEVICE_MODE) { @@ -519,12 +525,12 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, } else if (id == SR_CONF_PROBE_VDIV) { tmp_u64 = g_variant_get_uint64(data); ch->vdiv = tmp_u64; - sr_dbg("%s: setting VDIV of channel %d to %" PRIu64, __func__, + sr_dbg("%s: setting VDIV of channel %d to %llu", __func__, ch->index, ch->vdiv); ret = SR_OK; } else if (id == SR_CONF_PROBE_FACTOR) { ch->vfactor = g_variant_get_uint64(data); - sr_dbg("%s: setting FACTOR of channel %d to %" PRIu64, __func__, + sr_dbg("%s: setting FACTOR of channel %d to %llu", __func__, ch->index, ch->vfactor); ret = SR_OK; } else if (id == SR_CONF_PROBE_OFFSET) { @@ -534,7 +540,7 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, ret = SR_OK; } else if (id == SR_CONF_TIMEBASE) { devc->timebase = g_variant_get_uint64(data); - sr_dbg("%s: setting TIMEBASE to %" PRIu64, __func__, + sr_dbg("%s: setting TIMEBASE to %llu", __func__, devc->timebase); ret = SR_OK; } else if (id == SR_CONF_PROBE_COUPLING) { @@ -979,7 +985,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *sdi) if ((sdi->mode == LOGIC || devc->instant) && devc->limit_samples && devc->samples_counter >= devc->limit_samples) { - sr_info("Requested number of samples reached."); + sr_dbg("Requested number of samples reached."); hw_dev_acquisition_stop(sdi, NULL); return TRUE; } diff --git a/libsigrok4DSL/hardware/demo/demo.h b/libsigrok4DSL/hardware/demo/demo.h index 8a2d1630..8c472012 100644 --- a/libsigrok4DSL/hardware/demo/demo.h +++ b/libsigrok4DSL/hardware/demo/demo.h @@ -47,15 +47,6 @@ #undef max #define max(a,b) ((a)>(b)?(a):(b)) -/* Message logging helpers with subsystem-specific prefix string. */ -#define LOG_PREFIX "demo: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) - /* hardware Capabilities */ #define CAPS_MODE_LOGIC (1 << 0) #define CAPS_MODE_ANALOG (1 << 1) diff --git a/libsigrok4DSL/hwdriver.c b/libsigrok4DSL/hwdriver.c index 6af67d91..cd922bc4 100644 --- a/libsigrok4DSL/hwdriver.c +++ b/libsigrok4DSL/hwdriver.c @@ -26,15 +26,10 @@ #include #include #include "config.h" /* Needed for HAVE_LIBUSB_1_0 and others. */ +#include "log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "hwdriver: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) /** * @file @@ -190,7 +185,7 @@ SR_API int sr_driver_init(struct sr_context *ctx, struct sr_dev_driver *driver) return SR_ERR_ARG; } - sr_spew("Initializing driver '%s'.", driver->name); + sr_detail("Initializing driver '%s'.", driver->name); if ((ret = driver->init(ctx)) < 0) sr_err("Failed to initialize the driver: %d.", ret); @@ -236,7 +231,7 @@ SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options) l = driver->scan(options); - sr_spew("Scan of '%s' found %d devices.", driver->name, + sr_detail("Scan of '%s' found %d devices.", driver->name, g_slist_length(l)); return l; diff --git a/libsigrok4DSL/input/in_binary.c b/libsigrok4DSL/input/in_binary.c index e9e3d7e8..9cfd9023 100644 --- a/libsigrok4DSL/input/in_binary.c +++ b/libsigrok4DSL/input/in_binary.c @@ -25,15 +25,12 @@ #include #include #include +#include "../log.h" /* Message logging helpers with subsystem-specific prefix string. */ + +#undef LOG_PREFIX #define LOG_PREFIX "input/binary: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) #define CHUNKSIZE (512 * 1024) #define DEFAULT_NUM_PROBES 8 diff --git a/libsigrok4DSL/input/in_vcd.c b/libsigrok4DSL/input/in_vcd.c index a19146a5..2ba0ed95 100644 --- a/libsigrok4DSL/input/in_vcd.c +++ b/libsigrok4DSL/input/in_vcd.c @@ -64,15 +64,12 @@ #include #include #include +#include "../log.h" /* Message logging helpers with subsystem-specific prefix string. */ + +#undef LOG_PREFIX #define LOG_PREFIX "input/vcd: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) #define DEFAULT_NUM_PROBES 8 @@ -238,11 +235,11 @@ static gboolean parse_header(FILE *file, struct context *ctx) if (q % p != 0) { /* Does not happen unless time value is non-standard */ - sr_warn("Inexact rounding of samplerate, %" PRIu64 " / %" PRIu64 " to %" PRIu64 " Hz.", + sr_warn("Inexact rounding of samplerate, %llu / %llu to %llu Hz.", q, p, ctx->samplerate); } - sr_dbg("Samplerate: %" PRIu64, ctx->samplerate); + sr_dbg("Samplerate: %llu", ctx->samplerate); } else { @@ -471,7 +468,7 @@ static void parse_contents(FILE *file, const struct sr_dev_inst *sdi, struct con prev_timestamp = timestamp - ctx->compress; } - sr_dbg("New timestamp: %" PRIu64, timestamp); + sr_dbg("New timestamp: %llu", timestamp); /* Generate samples from prev_timestamp up to timestamp - 1. */ send_samples(sdi, prev_values, timestamp - prev_timestamp); diff --git a/libsigrok4DSL/input/in_wav.c b/libsigrok4DSL/input/in_wav.c index d99b086b..dee0f292 100644 --- a/libsigrok4DSL/input/in_wav.c +++ b/libsigrok4DSL/input/in_wav.c @@ -24,15 +24,10 @@ #include #include #include +#include "../log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "input/wav: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) #define CHUNK_SIZE 4096 diff --git a/libsigrok4DSL/libsigrok-internal.h b/libsigrok4DSL/libsigrok-internal.h index dafe2fb4..a935f9cf 100644 --- a/libsigrok4DSL/libsigrok-internal.h +++ b/libsigrok4DSL/libsigrok-internal.h @@ -79,14 +79,6 @@ struct drv_context { GSList *instances; }; -/*--- log.c -----------------------------------------------------------------*/ - -SR_PRIV int sr_log(int loglevel, const char *format, ...); -SR_PRIV int sr_spew(const char *format, ...); -SR_PRIV int sr_dbg(const char *format, ...); -SR_PRIV int sr_info(const char *format, ...); -SR_PRIV int sr_warn(const char *format, ...); -SR_PRIV int sr_err(const char *format, ...); /*--- device.c --------------------------------------------------------------*/ diff --git a/libsigrok4DSL/log.c b/libsigrok4DSL/log.c index 27880b38..9bc1627e 100644 --- a/libsigrok4DSL/log.c +++ b/libsigrok4DSL/log.c @@ -1,7 +1,8 @@ /* - * This file is part of the libsigrok project. - * - * Copyright (C) 2011-2012 Uwe Hermann + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2022 DreamSourceLab * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,284 +18,69 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + + #include "log.h" -#include "libsigrok.h" -#include "libsigrok-internal.h" -#include -#include + #define LOG_DOMAIN "sr" + +xlog_writer *sr_log = 0; +static xlog_context *log_ctx = 0; //private log context +int is_private_log = 0; +int log_level_value = -1; /** - * @file - * - * Controlling the libsigrok message logging functionality. + * Init a private log context */ - -/** - * @defgroup grp_logging Logging - * - * Controlling the libsigrok message logging functionality. - * - * @{ - */ - -/* Currently selected libsigrok loglevel. Default: SR_LOG_WARN. */ -static int sr_loglevel = SR_LOG_WARN; /* Show errors+warnings per default. */ -//static int sr_loglevel = SR_LOG_SPEW; - -/* Function prototype. */ -static int sr_logv(void *cb_data, int loglevel, const char *format, - va_list args); - -/* Pointer to the currently selected log callback. Default: sr_logv(). */ -static sr_log_callback_t sr_log_callback = sr_logv; - -/* - * Pointer to private data that can be passed to the log callback. - * This can be used (for example) by C++ GUIs to pass a "this" pointer. - */ -static void *sr_log_callback_data = NULL; - -/* Log domain (a short string that is used as prefix for all messages). */ -/** @cond PRIVATE */ -#define LOGDOMAIN_MAXLEN 30 -#define LOGDOMAIN_DEFAULT "sr: " -/** @endcond */ -static char sr_log_domain[LOGDOMAIN_MAXLEN + 1] = LOGDOMAIN_DEFAULT; - -/** - * Set the libsigrok loglevel. - * - * This influences the amount of log messages (debug messages, error messages, - * and so on) libsigrok will output. Using SR_LOG_NONE disables all messages. - * - * Note that this function itself will also output log messages. After the - * loglevel has changed, it will output a debug message with SR_LOG_DBG for - * example. Whether this message is shown depends on the (new) loglevel. - * - * @param loglevel The loglevel to set (SR_LOG_NONE, SR_LOG_ERR, SR_LOG_WARN, - * SR_LOG_INFO, SR_LOG_DBG, or SR_LOG_SPEW). - * - * @return SR_OK upon success, SR_ERR_ARG upon invalid loglevel. - * - * @since 0.1.0 - */ -SR_API int sr_log_loglevel_set(int loglevel) +SR_PRIV void sr_log_init() { - if (loglevel < SR_LOG_NONE || loglevel > SR_LOG_SPEW) { - sr_err("Invalid loglevel %d.", loglevel); - return SR_ERR_ARG; - } + if (!log_ctx && !sr_log){ + log_ctx = xlog_new(); + sr_log = xlog_create_writer(log_ctx, LOG_DOMAIN); + is_private_log = 1; - sr_loglevel = loglevel; - - sr_dbg("libsigrok loglevel set to %d.", loglevel); - - return SR_OK; + if (log_level_value != -1){ + xlog_set_level(log_ctx, log_level_value); + } + } } /** - * Get the libsigrok loglevel. - * - * @return The currently configured libsigrok loglevel. - * - * @since 0.1.0 + * Destroy the private log context */ -SR_API int sr_log_loglevel_get(void) +SR_PRIV void sr_log_uninit() { - return sr_loglevel; + if (is_private_log && log_ctx){ + xlog_free(log_ctx); + log_ctx = 0; + xlog_free_writer(sr_log); + sr_log = 0; + is_private_log = 0; + } } /** - * Set the libsigrok logdomain string. - * - * @param logdomain The string to use as logdomain for libsigrok log - * messages from now on. Must not be NULL. The maximum - * length of the string is 30 characters (this does not - * include the trailing NUL-byte). Longer strings are - * silently truncated. - * In order to not use a logdomain, pass an empty string. - * The function makes its own copy of the input string, i.e. - * the caller does not need to keep it around. - * - * @return SR_OK upon success, SR_ERR_ARG upon invalid logdomain. - * - * @since 0.1.0 + * Use a shared context, and drop the private log context */ -SR_API int sr_log_logdomain_set(const char *logdomain) -{ - if (!logdomain) { - sr_err("log: %s: logdomain was NULL", __func__); - return SR_ERR_ARG; - } +SR_API void sr_log_set_context(xlog_context *ctx) +{ + if (ctx){ + sr_log_uninit(); + sr_log = xlog_create_writer(ctx, LOG_DOMAIN); - /* TODO: Error handling. */ - snprintf((char *)&sr_log_domain, LOGDOMAIN_MAXLEN, "%s", logdomain); - - sr_dbg("Log domain set to '%s'.", (const char *)&sr_log_domain); - - return SR_OK; + if (log_level_value != -1){ + xlog_set_level(ctx, log_level_value); + } + } } /** - * Get the currently configured libsigrok logdomain. - * - * @return A copy of the currently configured libsigrok logdomain - * string. The caller is responsible for g_free()ing the string when - * it is no longer needed. - * - * @since 0.1.0 + * Set the private log context level */ -SR_API char *sr_log_logdomain_get(void) -{ - return g_strdup((const char *)&sr_log_domain); -} - -/** - * Set the libsigrok log callback to the specified function. - * - * @param cb Function pointer to the log callback function to use. - * Must not be NULL. - * @param cb_data Pointer to private data to be passed on. This can be used by - * the caller to pass arbitrary data to the log functions. This - * pointer is only stored or passed on by libsigrok, and is - * never used or interpreted in any way. The pointer is allowed - * to be NULL if the caller doesn't need/want to pass any data. - * - * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments. - * - * @since 0.1.0 - */ -SR_API int sr_log_callback_set(sr_log_callback_t cb, void *cb_data) -{ - if (!cb) { - sr_err("log: %s: cb was NULL", __func__); - return SR_ERR_ARG; - } - - /* Note: 'cb_data' is allowed to be NULL. */ - - sr_log_callback = cb; - sr_log_callback_data = cb_data; - - return SR_OK; -} - -/** - * Set the libsigrok log callback to the default built-in one. - * - * Additionally, the internal 'sr_log_callback_data' pointer is set to NULL. - * - * @return SR_OK upon success, a negative error code otherwise. - * - * @since 0.1.0 - */ -SR_API int sr_log_callback_set_default(void) -{ - /* - * Note: No log output in this function, as it should safely work - * even if the currently set log callback is buggy/broken. - */ - sr_log_callback = sr_logv; - sr_log_callback_data = NULL; - - return SR_OK; -} - -static int sr_logv(void *cb_data, int loglevel, const char *format, va_list args) -{ - int ret; - - /* This specific log callback doesn't need the void pointer data. */ - (void)cb_data; - - /* Only output messages of at least the selected loglevel(s). */ - if (loglevel > sr_loglevel) - return SR_OK; /* TODO? */ - - if (sr_log_domain[0] != '\0') - fprintf(stderr, "%s", sr_log_domain); - ret = vfprintf(stderr, format, args); - fprintf(stderr, "\n"); - - return ret; -} - -/** @private */ -SR_PRIV int sr_log(int loglevel, const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, loglevel, format, args); - va_end(args); - - return ret; -} - -/** @private */ -SR_PRIV int sr_spew(const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, SR_LOG_SPEW, format, args); - va_end(args); - - return ret; -} - -/** @private */ -SR_PRIV int sr_dbg(const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, SR_LOG_DBG, format, args); - va_end(args); - - return ret; -} - -/** @private */ -SR_PRIV int sr_info(const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, SR_LOG_INFO, format, args); - va_end(args); - - return ret; -} - -/** @private */ -SR_PRIV int sr_warn(const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, SR_LOG_WARN, format, args); - va_end(args); - - return ret; -} - -/** @private */ -SR_PRIV int sr_err(const char *format, ...) -{ - int ret; - va_list args; - - va_start(args, format); - ret = sr_log_callback(sr_log_callback_data, SR_LOG_ERR, format, args); - va_end(args); - - return ret; -} - -/** @} */ +SR_API void sr_log_level(int level) +{ + log_level_value = level; + if (log_ctx) + { + xlog_set_level(log_ctx, level); + } +} \ No newline at end of file diff --git a/libsigrok4DSL/output/csv.c b/libsigrok4DSL/output/csv.c index e48cbbda..28fccda1 100644 --- a/libsigrok4DSL/output/csv.c +++ b/libsigrok4DSL/output/csv.c @@ -24,10 +24,7 @@ #include #include #include "../config.h" /* Needed for PACKAGE_STRING and others. */ - -#define LOG_PREFIX "output/csv" - - + struct context { unsigned int num_enabled_channels; uint64_t samplerate; diff --git a/libsigrok4DSL/output/gnuplot.c b/libsigrok4DSL/output/gnuplot.c index e39c1d4c..7da3888d 100644 --- a/libsigrok4DSL/output/gnuplot.c +++ b/libsigrok4DSL/output/gnuplot.c @@ -26,8 +26,7 @@ #include #include #include "../config.h" /* Needed for PACKAGE_STRING and others. */ - -#define LOG_PREFIX "output/gnuplot" +#include "../log.h" struct context { unsigned int num_enabled_channels; @@ -193,7 +192,7 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p memcpy(ctx->prevsample, sample, logic->unitsize); /* The first column is a counter (needed for gnuplot). */ - g_string_append_printf(*out, "%"PRIu64"\t", ctx->samplecount-1); + g_string_append_printf(*out, "%llu\t", ctx->samplecount-1); /* The next columns are the values of all channels. */ for (p = 0; p < ctx->num_enabled_channels; p++) { diff --git a/libsigrok4DSL/output/output.c b/libsigrok4DSL/output/output.c index 68292a86..91ca35dc 100644 --- a/libsigrok4DSL/output/output.c +++ b/libsigrok4DSL/output/output.c @@ -20,10 +20,8 @@ #include "../libsigrok.h" #include "../libsigrok-internal.h" #include - -/** @cond PRIVATE */ -#define LOG_PREFIX "output" -/** @endcond */ +#include "../log.h" + /** * @file diff --git a/libsigrok4DSL/output/srzip.c b/libsigrok4DSL/output/srzip.c index 95280fd2..d51c01c1 100755 --- a/libsigrok4DSL/output/srzip.c +++ b/libsigrok4DSL/output/srzip.c @@ -28,8 +28,7 @@ #include #include #include - -#define LOG_PREFIX "output/srzip" +#include "../log.h" struct out_context { uint64_t samplerate; diff --git a/libsigrok4DSL/output/vcd.c b/libsigrok4DSL/output/vcd.c index 37a5a9af..5db2dd13 100644 --- a/libsigrok4DSL/output/vcd.c +++ b/libsigrok4DSL/output/vcd.c @@ -25,9 +25,8 @@ #include #include #include "../config.h" /* Needed for PACKAGE and others. */ - -#define LOG_PREFIX "output/vcd" - +#include "../log.h" + struct context { int num_enabled_channels; GArray *channelindices; diff --git a/libsigrok4DSL/proto.h b/libsigrok4DSL/proto.h index 143c6f2a..e7ae2edd 100644 --- a/libsigrok4DSL/proto.h +++ b/libsigrok4DSL/proto.h @@ -20,6 +20,8 @@ #ifndef LIBSIGROK_SIGROK_PROTO_H #define LIBSIGROK_SIGROK_PROTO_H +#include + /** * @file * @@ -39,15 +41,15 @@ SR_API void sr_hotplug_wait_timout(struct sr_context *ctx); /*--- log.c -----------------------------------------------------------------*/ -typedef int (*sr_log_callback_t)(void *cb_data, int loglevel, - const char *format, va_list args); +/** + * Use a shared context, and drop the private log context + */ +SR_API void sr_log_set_context(xlog_context *ctx); -SR_API int sr_log_loglevel_set(int loglevel); -SR_API int sr_log_loglevel_get(void); -SR_API int sr_log_callback_set(sr_log_callback_t cb, void *cb_data); -SR_API int sr_log_callback_set_default(void); -SR_API int sr_log_logdomain_set(const char *logdomain); -SR_API char *sr_log_logdomain_get(void); +/** + * Set the private log context level + */ +SR_API void sr_log_level(int level); /*--- device.c --------------------------------------------------------------*/ diff --git a/libsigrok4DSL/session.c b/libsigrok4DSL/session.c index 828afe60..3ecc1407 100644 --- a/libsigrok4DSL/session.c +++ b/libsigrok4DSL/session.c @@ -24,15 +24,13 @@ #include #include #include +#include "log.h" /* Message logging helpers with subsystem-specific prefix string. */ + +#undef LOG_PREFIX #define LOG_PREFIX "session: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) + char DS_RES_PATH[500] = {0}; @@ -103,7 +101,7 @@ SR_API struct sr_session *sr_session_new(void) SR_API int sr_session_destroy(void) { if (!session) { - sr_err("%s: session was NULL", __func__); + sr_dbg("%s: session was NULL", __func__); return SR_ERR_BUG; } @@ -364,7 +362,7 @@ SR_API int sr_session_start(void) return SR_ERR_BUG; } - sr_info("Starting..."); + sr_dbg("Starting..."); ret = SR_OK; for (l = session->devs; l; l = l->next) { @@ -414,7 +412,7 @@ SR_API int sr_session_run(void) session->running = TRUE; - sr_info("Running..."); + sr_dbg("Running..."); /* Do we have real sources? */ if (session->num_sources == 1 && session->pollfds[0].fd == -1) { @@ -463,7 +461,7 @@ SR_PRIV int sr_session_stop_sync(void) return SR_ERR_BUG; } - sr_info("Stopping."); + sr_dbg("Stopping."); for (l = session->devs; l; l = l->next) { sdi = l->data; @@ -527,7 +525,7 @@ static void datafeed_dump(const struct sr_datafeed_packet *packet) break; case SR_DF_LOGIC: logic = packet->payload; - sr_dbg("bus: Received SR_DF_LOGIC packet (%" PRIu64 " bytes).", + sr_dbg("bus: Received SR_DF_LOGIC packet (%llu bytes).", logic->length); break; case SR_DF_DSO: @@ -587,8 +585,8 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi, } for (l = session->datafeed_callbacks; l; l = l->next) { - if (sr_log_loglevel_get() >= SR_LOG_DBG) - datafeed_dump(packet); + //if (sr_log_loglevel_get() >= SR_LOG_DBG) + // datafeed_dump(packet); cb_struct = l->data; cb_struct->cb(sdi, packet, cb_struct->cb_data); } diff --git a/libsigrok4DSL/session_driver.c b/libsigrok4DSL/session_driver.c index f4ae5e4c..313e6e7b 100644 --- a/libsigrok4DSL/session_driver.c +++ b/libsigrok4DSL/session_driver.c @@ -27,15 +27,12 @@ #include #include #include +#include "log.h" /* Message logging helpers with subsystem-specific prefix string. */ + +#undef LOG_PREFIX #define LOG_PREFIX "virtual-session: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) /* size of payloads sent across the session bus */ /** @cond PRIVATE */ @@ -206,7 +203,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *cb_sdi) (void)fd; //(void)revents; - sr_dbg("Feed chunk."); + sr_detail("Feed chunk."); ret = 0; packet.status = SR_PKT_OK; @@ -649,60 +646,60 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, case SR_CONF_SAMPLERATE: vdev->samplerate = g_variant_get_uint64(data); samplerates[0] = vdev->samplerate; - sr_info("Setting samplerate to %" PRIu64 ".", vdev->samplerate); + sr_dbg("Setting samplerate to %llu.", vdev->samplerate); break; case SR_CONF_TIMEBASE: vdev->timebase = g_variant_get_uint64(data); - sr_info("Setting timebase to %" PRIu64 ".", vdev->timebase); + sr_dbg("Setting timebase to %llu.", vdev->timebase); break; case SR_CONF_MAX_TIMEBASE: vdev->max_timebase = g_variant_get_uint64(data); - sr_info("Setting max timebase to %" PRIu64 ".", vdev->max_timebase); + sr_dbg("Setting max timebase to %llu.", vdev->max_timebase); break; case SR_CONF_MIN_TIMEBASE: vdev->min_timebase = g_variant_get_uint64(data); - sr_info("Setting min timebase to %" PRIu64 ".", vdev->min_timebase); + sr_dbg("Setting min timebase to %llu.", vdev->min_timebase); break; case SR_CONF_UNIT_BITS: vdev->unit_bits = g_variant_get_byte(data); - sr_info("Setting unit bits to %d.", vdev->unit_bits); + sr_dbg("Setting unit bits to %d.", vdev->unit_bits); break; case SR_CONF_REF_MIN: vdev->ref_min = g_variant_get_uint32(data); - sr_info("Setting ref min to %d.", vdev->ref_min); + sr_dbg("Setting ref min to %d.", vdev->ref_min); break; case SR_CONF_REF_MAX: vdev->ref_max = g_variant_get_uint32(data); - sr_info("Setting ref max to %d.", vdev->ref_max); + sr_dbg("Setting ref max to %d.", vdev->ref_max); break; case SR_CONF_SESSIONFILE: vdev->sessionfile = g_strdup(g_variant_get_bytestring(data)); - sr_info("Setting sessionfile to '%s'.", vdev->sessionfile); + sr_dbg("Setting sessionfile to '%s'.", vdev->sessionfile); break; case SR_CONF_CAPTUREFILE: vdev->capturefile = g_strdup(g_variant_get_bytestring(data)); - sr_info("Setting capturefile to '%s'.", vdev->capturefile); + sr_dbg("Setting capturefile to '%s'.", vdev->capturefile); break; case SR_CONF_FILE_VERSION: vdev->version = g_variant_get_int16(data); - sr_info("Setting file version to '%d'.", vdev->version); + sr_dbg("Setting file version to '%d'.", vdev->version); break; case SR_CONF_LIMIT_SAMPLES: vdev->total_samples = g_variant_get_uint64(data); samplecounts[0] = vdev->total_samples; - sr_info("Setting limit samples to %" PRIu64 ".", vdev->total_samples); + sr_dbg("Setting limit samples to %llu.", vdev->total_samples); break; case SR_CONF_TRIGGER_TIME: vdev->trig_time = g_variant_get_int64(data); - sr_info("Setting trigger time to %" PRId64 ".", vdev->trig_time); + sr_dbg("Setting trigger time to %llu.", vdev->trig_time); break; case SR_CONF_TRIGGER_POS: vdev->trig_pos = g_variant_get_uint64(data); - sr_info("Setting trigger position to %" PRIu64 ".", vdev->trig_pos); + sr_dbg("Setting trigger position to %llu.", vdev->trig_pos); break; case SR_CONF_NUM_BLOCKS: vdev->num_blocks = g_variant_get_uint64(data); - sr_info("Setting block number to %" PRIu64 ".", vdev->num_blocks); + sr_dbg("Setting block number to %llu.", vdev->num_blocks); break; case SR_CONF_CAPTURE_NUM_PROBES: vdev->num_probes = g_variant_get_uint64(data); @@ -955,7 +952,7 @@ static int dev_acquisition_start(struct sr_dev_inst *sdi, } - sr_info("Opening archive %s file %s", vdev->sessionfile, + sr_dbg("Opening archive %s file %s", vdev->sessionfile, vdev->capturefile); vdev->archive = unzOpen64(vdev->sessionfile); diff --git a/libsigrok4DSL/session_file.c b/libsigrok4DSL/session_file.c index 6d149706..8afdb9ce 100644 --- a/libsigrok4DSL/session_file.c +++ b/libsigrok4DSL/session_file.c @@ -29,15 +29,10 @@ #include #include #include "config.h" /* Needed for PACKAGE_VERSION and others. */ +#include "log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "session-file: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) /** * @file diff --git a/libsigrok4DSL/std.c b/libsigrok4DSL/std.c index 8a04fe99..40bb7223 100644 --- a/libsigrok4DSL/std.c +++ b/libsigrok4DSL/std.c @@ -21,6 +21,7 @@ #include "libsigrok.h" #include "libsigrok-internal.h" #include +#include "log.h" /** * Standard sr_driver_init() API helper. diff --git a/libsigrok4DSL/strutil.c b/libsigrok4DSL/strutil.c index 812baf0a..137cd1d2 100644 --- a/libsigrok4DSL/strutil.c +++ b/libsigrok4DSL/strutil.c @@ -24,15 +24,10 @@ #include #include #include +#include "log.h" -/* Message logging helpers with subsystem-specific prefix string. */ +#undef LOG_PREFIX #define LOG_PREFIX "strutil: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) /** * @file @@ -69,24 +64,24 @@ SR_API char *sr_si_string_u64(uint64_t x, const char *unit) unit = ""; if ((x >= SR_GHZ(1)) && (x % SR_GHZ(1) == 0)) { - return g_strdup_printf("%" PRIu64 " G%s", x / SR_GHZ(1), unit); + return g_strdup_printf("%llu G%s", x / SR_GHZ(1), unit); } else if ((x >= SR_GHZ(1)) && (x % SR_GHZ(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " G%s", + return g_strdup_printf("%llu.%llu G%s", x / SR_GHZ(1), x % SR_GHZ(1), unit); } else if ((x >= SR_MHZ(1)) && (x % SR_MHZ(1) == 0)) { - return g_strdup_printf("%" PRIu64 " M%s", + return g_strdup_printf("%llu M%s", x / SR_MHZ(1), unit); } else if ((x >= SR_MHZ(1)) && (x % SR_MHZ(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " M%s", + return g_strdup_printf("%llu.%llu M%s", x / SR_MHZ(1), x % SR_MHZ(1), unit); } else if ((x >= SR_KHZ(1)) && (x % SR_KHZ(1) == 0)) { - return g_strdup_printf("%" PRIu64 " k%s", + return g_strdup_printf("%llu k%s", x / SR_KHZ(1), unit); } else if ((x >= SR_KHZ(1)) && (x % SR_KHZ(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " K%s", + return g_strdup_printf("%llu.%llu K%s", x / SR_KHZ(1), x % SR_KHZ(1), unit); } else { - return g_strdup_printf("%" PRIu64 " %s", x, unit); + return g_strdup_printf("%llu %s", x, unit); } sr_err("%s: Error creating SI units string.", __func__); @@ -114,24 +109,24 @@ SR_API char *sr_iec_string_u64(uint64_t x, const char *unit) unit = ""; if ((x >= SR_GB(1)) && (x % SR_GB(1) == 0)) { - return g_strdup_printf("%" PRIu64 " G%s", x / SR_GB(1), unit); + return g_strdup_printf("%llu G%s", x / SR_GB(1), unit); } else if ((x >= SR_GB(1)) && (x % SR_GB(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " G%s", + return g_strdup_printf("%llu.%llu G%s", x / SR_GB(1), x % SR_GB(1), unit); } else if ((x >= SR_MB(1)) && (x % SR_MB(1) == 0)) { - return g_strdup_printf("%" PRIu64 " M%s", + return g_strdup_printf("%llu M%s", x / SR_MB(1), unit); } else if ((x >= SR_MB(1)) && (x % SR_MB(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " M%s", + return g_strdup_printf("%llu.%llu M%s", x / SR_MB(1), x % SR_MB(1), unit); } else if ((x >= SR_KB(1)) && (x % SR_KB(1) == 0)) { - return g_strdup_printf("%" PRIu64 " k%s", + return g_strdup_printf("%llu k%s", x / SR_KB(1), unit); } else if ((x >= SR_KB(1)) && (x % SR_KB(1) != 0)) { - return g_strdup_printf("%" PRIu64 ".%" PRIu64 " K%s", + return g_strdup_printf("%llu.%llu K%s", x / SR_KB(1), x % SR_KB(1), unit); } else { - return g_strdup_printf("%" PRIu64 " %s", x, unit); + return g_strdup_printf("%llu %s", x, unit); } sr_err("%s: Error creating SI units string.", __func__); @@ -195,13 +190,13 @@ SR_API char *sr_period_string(uint64_t frequency) } if (frequency >= SR_GHZ(1)) - r = snprintf(o, 30, "%" PRIu64 " ns", frequency / 1000000000); + r = snprintf(o, 30, "%llu ns", frequency / 1000000000); else if (frequency >= SR_MHZ(1)) - r = snprintf(o, 30, "%" PRIu64 " us", frequency / 1000000); + r = snprintf(o, 30, "%llu us", frequency / 1000000); else if (frequency >= SR_KHZ(1)) - r = snprintf(o, 30, "%" PRIu64 " ms", frequency / 1000); + r = snprintf(o, 30, "%llu ms", frequency / 1000); else - r = snprintf(o, 30, "%" PRIu64 " s", frequency); + r = snprintf(o, 30, "%llu s", frequency); if (r < 0) { /* Something went wrong... */ @@ -248,7 +243,7 @@ SR_API char *sr_time_string(uint64_t time) else if (time >= SR_US(1)) r = snprintf(o, 30, "%0.2lf us", time * 1.0 / SR_US(1)); else - r = snprintf(o, 30, "%" PRIu64 " ns", time); + r = snprintf(o, 30, "%llu ns", time); if (r < 0) { /* Something went wrong... */ @@ -284,9 +279,9 @@ SR_API char *sr_voltage_string(uint64_t v_p, uint64_t v_q) } if (v_q == 1000) - r = snprintf(o, 30, "%" PRIu64 "mV", v_p); + r = snprintf(o, 30, "%llumV", v_p); else if (v_q == 1) - r = snprintf(o, 30, "%" PRIu64 "V", v_p); + r = snprintf(o, 30, "%lluV", v_p); else r = snprintf(o, 30, "%gV", (float)v_p / (float)v_q); diff --git a/libsigrok4DSL/tests/lib.c b/libsigrok4DSL/tests/lib.c index 523d4399..f8a973aa 100644 --- a/libsigrok4DSL/tests/lib.c +++ b/libsigrok4DSL/tests/lib.c @@ -117,6 +117,6 @@ void srtest_check_samplerate(struct sr_context *sr_ctx, const char *drivername, srtest_driver_init(sr_ctx, driver);; srtest_set_samplerate(driver, samplerate); s = srtest_get_samplerate(driver); - fail_unless(s == samplerate, "%s: Incorrect samplerate: %" PRIu64 ".", + fail_unless(s == samplerate, "%s: Incorrect samplerate: %llu.", drivername, s); } diff --git a/libsigrok4DSL/trigger.c b/libsigrok4DSL/trigger.c index 938d83af..5cd9ddb8 100644 --- a/libsigrok4DSL/trigger.c +++ b/libsigrok4DSL/trigger.c @@ -26,15 +26,10 @@ #include #include #include +#include "log.h" -/* Message logging helpers with subsystem-specific prefix string. */ -#define LOG_PREFIX "session: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) +#undef LOG_PREFIX +#define LOG_PREFIX "trigger: " /** * @file