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-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.
|
||||
*
|
||||
|
@ -165,3 +184,84 @@ SR_API gboolean sr_dev_has_hwcap(const struct sr_dev_inst *sdi, int hwcap)
|
|||
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;
|
||||
}
|
||||
|
||||
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.
|
||||
*
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -56,7 +56,26 @@ struct sr_serial_dev_inst {
|
|||
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
|
||||
|
||||
/* USB-specific instances */
|
||||
SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
|
||||
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);
|
||||
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 ------------------------------------------------------------*/
|
||||
|
||||
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 -------------------------------------------------------------*/
|
||||
|
||||
SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
|
||||
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 ----------------------------------------------*/
|
||||
|
||||
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 int sr_driver_init(struct sr_dev_driver *driver);
|
||||
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 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 int sr_info_get(struct sr_dev_driver *driver, int id,
|
||||
const void **data, const struct sr_dev_inst *sdi);
|
||||
|
||||
/*--- session.c -------------------------------------------------------------*/
|
||||
|
||||
|
|
Loading…
Reference in New Issue