sr: code organization cleanup
Device-specific functions (public and private) go in device.c, more general driver-related code in hwdriver.c
This commit is contained in:
parent
87ca93c504
commit
48a486cd3e
100
device.c
100
device.c
|
@ -22,6 +22,25 @@
|
||||||
#include "libsigrok.h"
|
#include "libsigrok.h"
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
|
||||||
|
SR_PRIV struct sr_probe *sr_probe_new(int index, int type,
|
||||||
|
gboolean enabled, const char *name)
|
||||||
|
{
|
||||||
|
struct sr_probe *probe;
|
||||||
|
|
||||||
|
if (!(probe = g_try_malloc0(sizeof(struct sr_probe)))) {
|
||||||
|
sr_err("hwdriver: probe malloc failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
probe->index = index;
|
||||||
|
probe->type = type;
|
||||||
|
probe->enabled = enabled;
|
||||||
|
if (name)
|
||||||
|
probe->name = g_strdup(name);
|
||||||
|
|
||||||
|
return probe;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the name of the specified probe in the specified device.
|
* Set the name of the specified probe in the specified device.
|
||||||
*
|
*
|
||||||
|
@ -165,3 +184,84 @@ SR_API gboolean sr_dev_has_hwcap(const struct sr_dev_inst *sdi, int hwcap)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int index, int status,
|
||||||
|
const char *vendor, const char *model, const char *version)
|
||||||
|
{
|
||||||
|
struct sr_dev_inst *sdi;
|
||||||
|
|
||||||
|
if (!(sdi = g_try_malloc(sizeof(struct sr_dev_inst)))) {
|
||||||
|
sr_err("hwdriver: %s: sdi malloc failed", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
sdi->index = index;
|
||||||
|
sdi->status = status;
|
||||||
|
sdi->inst_type = -1;
|
||||||
|
sdi->vendor = vendor ? g_strdup(vendor) : NULL;
|
||||||
|
sdi->model = model ? g_strdup(model) : NULL;
|
||||||
|
sdi->version = version ? g_strdup(version) : NULL;
|
||||||
|
sdi->probes = NULL;
|
||||||
|
sdi->priv = NULL;
|
||||||
|
|
||||||
|
return sdi;
|
||||||
|
}
|
||||||
|
|
||||||
|
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
|
||||||
|
{
|
||||||
|
g_free(sdi->priv);
|
||||||
|
g_free(sdi->vendor);
|
||||||
|
g_free(sdi->model);
|
||||||
|
g_free(sdi->version);
|
||||||
|
g_free(sdi);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBUSB_1_0
|
||||||
|
|
||||||
|
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
|
||||||
|
uint8_t address, struct libusb_device_handle *hdl)
|
||||||
|
{
|
||||||
|
struct sr_usb_dev_inst *udi;
|
||||||
|
|
||||||
|
if (!(udi = g_try_malloc(sizeof(struct sr_usb_dev_inst)))) {
|
||||||
|
sr_err("hwdriver: %s: udi malloc failed", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
udi->bus = bus;
|
||||||
|
udi->address = address;
|
||||||
|
udi->devhdl = hdl;
|
||||||
|
|
||||||
|
return udi;
|
||||||
|
}
|
||||||
|
|
||||||
|
SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb)
|
||||||
|
{
|
||||||
|
/* Avoid compiler warnings. */
|
||||||
|
(void)usb;
|
||||||
|
|
||||||
|
/* Nothing to do for this device instance type. */
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(const char *port,
|
||||||
|
int fd)
|
||||||
|
{
|
||||||
|
struct sr_serial_dev_inst *serial;
|
||||||
|
|
||||||
|
if (!(serial = g_try_malloc(sizeof(struct sr_serial_dev_inst)))) {
|
||||||
|
sr_err("hwdriver: %s: serial malloc failed", __func__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial->port = g_strdup(port);
|
||||||
|
serial->fd = fd;
|
||||||
|
|
||||||
|
return serial;
|
||||||
|
}
|
||||||
|
|
||||||
|
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial)
|
||||||
|
{
|
||||||
|
g_free(serial->port);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
104
hwdriver.c
104
hwdriver.c
|
@ -210,106 +210,6 @@ SR_API int sr_info_get(struct sr_dev_driver *driver, int id,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int index, int status,
|
|
||||||
const char *vendor, const char *model, const char *version)
|
|
||||||
{
|
|
||||||
struct sr_dev_inst *sdi;
|
|
||||||
|
|
||||||
if (!(sdi = g_try_malloc(sizeof(struct sr_dev_inst)))) {
|
|
||||||
sr_err("hwdriver: %s: sdi malloc failed", __func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
sdi->index = index;
|
|
||||||
sdi->status = status;
|
|
||||||
sdi->inst_type = -1;
|
|
||||||
sdi->vendor = vendor ? g_strdup(vendor) : NULL;
|
|
||||||
sdi->model = model ? g_strdup(model) : NULL;
|
|
||||||
sdi->version = version ? g_strdup(version) : NULL;
|
|
||||||
sdi->probes = NULL;
|
|
||||||
sdi->priv = NULL;
|
|
||||||
|
|
||||||
return sdi;
|
|
||||||
}
|
|
||||||
|
|
||||||
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
|
|
||||||
{
|
|
||||||
g_free(sdi->priv);
|
|
||||||
g_free(sdi->vendor);
|
|
||||||
g_free(sdi->model);
|
|
||||||
g_free(sdi->version);
|
|
||||||
g_free(sdi);
|
|
||||||
}
|
|
||||||
|
|
||||||
SR_PRIV struct sr_probe *sr_probe_new(int index, int type,
|
|
||||||
gboolean enabled, const char *name)
|
|
||||||
{
|
|
||||||
struct sr_probe *probe;
|
|
||||||
|
|
||||||
if (!(probe = g_try_malloc0(sizeof(struct sr_probe)))) {
|
|
||||||
sr_err("hwdriver: probe malloc failed");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
probe->index = index;
|
|
||||||
probe->type = type;
|
|
||||||
probe->enabled = enabled;
|
|
||||||
if (name)
|
|
||||||
probe->name = g_strdup(name);
|
|
||||||
|
|
||||||
return probe;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_LIBUSB_1_0
|
|
||||||
|
|
||||||
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
|
|
||||||
uint8_t address, struct libusb_device_handle *hdl)
|
|
||||||
{
|
|
||||||
struct sr_usb_dev_inst *udi;
|
|
||||||
|
|
||||||
if (!(udi = g_try_malloc(sizeof(struct sr_usb_dev_inst)))) {
|
|
||||||
sr_err("hwdriver: %s: udi malloc failed", __func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
udi->bus = bus;
|
|
||||||
udi->address = address;
|
|
||||||
udi->devhdl = hdl;
|
|
||||||
|
|
||||||
return udi;
|
|
||||||
}
|
|
||||||
|
|
||||||
SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb)
|
|
||||||
{
|
|
||||||
/* Avoid compiler warnings. */
|
|
||||||
(void)usb;
|
|
||||||
|
|
||||||
/* Nothing to do for this device instance type. */
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(const char *port,
|
|
||||||
int fd)
|
|
||||||
{
|
|
||||||
struct sr_serial_dev_inst *serial;
|
|
||||||
|
|
||||||
if (!(serial = g_try_malloc(sizeof(struct sr_serial_dev_inst)))) {
|
|
||||||
sr_err("hwdriver: %s: serial malloc failed", __func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
serial->port = g_strdup(port);
|
|
||||||
serial->fd = fd;
|
|
||||||
|
|
||||||
return serial;
|
|
||||||
}
|
|
||||||
|
|
||||||
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial)
|
|
||||||
{
|
|
||||||
g_free(serial->port);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find out if a hardware driver has a specific capability.
|
* Find out if a hardware driver has a specific capability.
|
||||||
*
|
*
|
||||||
|
@ -342,7 +242,7 @@ SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a hardware driver option.
|
* Get information about a hardware driver option.
|
||||||
*
|
*
|
||||||
* @param hwopt The option to get.
|
* @param hwopt The option to get.
|
||||||
*
|
*
|
||||||
|
@ -362,7 +262,7 @@ SR_API const struct sr_hwcap_option *sr_drvopt_get(int hwopt)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a hardware driver capability option.
|
* Get information about a device option.
|
||||||
*
|
*
|
||||||
* @param hwcap The capability to get.
|
* @param hwcap The capability to get.
|
||||||
*
|
*
|
||||||
|
|
|
@ -56,7 +56,26 @@ struct sr_serial_dev_inst {
|
||||||
int fd;
|
int fd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*--- 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 --------------------------------------------------------------*/
|
||||||
|
|
||||||
|
SR_PRIV struct sr_probe *sr_probe_new(int index, int type,
|
||||||
|
gboolean enabled, const char *name);
|
||||||
|
|
||||||
|
/* Generic device instances */
|
||||||
|
SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int index, int status,
|
||||||
|
const char *vendor, const char *model, const char *version);
|
||||||
|
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi);
|
||||||
#ifdef HAVE_LIBUSB_1_0
|
#ifdef HAVE_LIBUSB_1_0
|
||||||
|
|
||||||
/* USB-specific instances */
|
/* USB-specific instances */
|
||||||
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
|
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
|
||||||
uint8_t address, struct libusb_device_handle *hdl);
|
uint8_t address, struct libusb_device_handle *hdl);
|
||||||
|
@ -68,35 +87,19 @@ SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(
|
||||||
const char *port, int fd);
|
const char *port, int fd);
|
||||||
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial);
|
SR_PRIV void sr_serial_dev_inst_free(struct sr_serial_dev_inst *serial);
|
||||||
|
|
||||||
/*--- 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, ...);
|
|
||||||
|
|
||||||
/*--- hwdriver.c ------------------------------------------------------------*/
|
/*--- hwdriver.c ------------------------------------------------------------*/
|
||||||
|
|
||||||
SR_PRIV void sr_hw_cleanup_all(void);
|
SR_PRIV void sr_hw_cleanup_all(void);
|
||||||
|
SR_PRIV int sr_source_remove(int fd);
|
||||||
|
SR_PRIV int sr_source_add(int fd, int events, int timeout,
|
||||||
|
sr_receive_data_callback_t cb, void *cb_data);
|
||||||
|
|
||||||
/*--- session.c -------------------------------------------------------------*/
|
/*--- session.c -------------------------------------------------------------*/
|
||||||
|
|
||||||
SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
|
SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
|
||||||
struct sr_datafeed_packet *packet);
|
struct sr_datafeed_packet *packet);
|
||||||
|
|
||||||
/* Generic device instances */
|
|
||||||
SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int index, int status,
|
|
||||||
const char *vendor, const char *model, const char *version);
|
|
||||||
SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi);
|
|
||||||
SR_PRIV struct sr_probe *sr_probe_new(int index, int type,
|
|
||||||
gboolean enabled, const char *name);
|
|
||||||
|
|
||||||
SR_PRIV int sr_source_remove(int fd);
|
|
||||||
SR_PRIV int sr_source_add(int fd, int events, int timeout,
|
|
||||||
sr_receive_data_callback_t cb, void *cb_data);
|
|
||||||
|
|
||||||
/*--- hardware/common/serial.c ----------------------------------------------*/
|
/*--- hardware/common/serial.c ----------------------------------------------*/
|
||||||
|
|
||||||
SR_PRIV GSList *list_serial_ports(void);
|
SR_PRIV GSList *list_serial_ports(void);
|
||||||
|
|
4
proto.h
4
proto.h
|
@ -67,11 +67,11 @@ SR_API int sr_filter_probes(int in_unitsize, int out_unitsize,
|
||||||
SR_API struct sr_dev_driver **sr_driver_list(void);
|
SR_API struct sr_dev_driver **sr_driver_list(void);
|
||||||
SR_API int sr_driver_init(struct sr_dev_driver *driver);
|
SR_API int sr_driver_init(struct sr_dev_driver *driver);
|
||||||
SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options);
|
SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options);
|
||||||
|
SR_API int sr_info_get(struct sr_dev_driver *driver, int id,
|
||||||
|
const void **data, const struct sr_dev_inst *sdi);
|
||||||
SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap);
|
SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap);
|
||||||
SR_API const struct sr_hwcap_option *sr_drvopt_get(int hwopt);
|
SR_API const struct sr_hwcap_option *sr_drvopt_get(int hwopt);
|
||||||
SR_API const struct sr_hwcap_option *sr_hw_hwcap_get(int hwcap);
|
SR_API const struct sr_hwcap_option *sr_hw_hwcap_get(int hwcap);
|
||||||
SR_API int sr_info_get(struct sr_dev_driver *driver, int id,
|
|
||||||
const void **data, const struct sr_dev_inst *sdi);
|
|
||||||
|
|
||||||
/*--- session.c -------------------------------------------------------------*/
|
/*--- session.c -------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue