Add sr_dev_inst_user_new(), sr_dev_inst_channel_add().
This commit is contained in:
parent
924866d48d
commit
e705ce3bf6
|
@ -907,6 +907,8 @@ enum sr_dev_inst_type {
|
|||
SR_INST_SERIAL,
|
||||
/** Device instance type for SCPI devices. */
|
||||
SR_INST_SCPI,
|
||||
/** Device-instance type for user-created "devices". */
|
||||
SR_INST_USER,
|
||||
};
|
||||
|
||||
/** Device instance status, struct sr_dev_inst.status */
|
||||
|
|
|
@ -64,6 +64,10 @@ SR_API const char *sr_dev_inst_connid_get(const struct sr_dev_inst *sdi);
|
|||
SR_API GSList *sr_dev_inst_channels_get(const struct sr_dev_inst *sdi);
|
||||
SR_API GSList *sr_dev_inst_channel_groups_get(const struct sr_dev_inst *sdi);
|
||||
|
||||
SR_API struct sr_dev_inst *sr_dev_inst_user_new(const char *vendor,
|
||||
const char *model, const char *version);
|
||||
SR_API int sr_dev_inst_channel_add(struct sr_dev_inst *sdi, int index, int type, const char *name);
|
||||
|
||||
/*--- hwdriver.c ------------------------------------------------------------*/
|
||||
|
||||
SR_API struct sr_dev_driver **sr_driver_list(void);
|
||||
|
|
38
src/device.c
38
src/device.c
|
@ -202,7 +202,7 @@ SR_API gboolean sr_dev_has_option(const struct sr_dev_inst *sdi, int key)
|
|||
}
|
||||
|
||||
/** @private
|
||||
* Allocate and init new device instance struct.
|
||||
* Allocate and init a new device instance struct.
|
||||
* @param[in] index @copydoc sr_dev_inst::index
|
||||
* @param[in] status @copydoc sr_dev_inst::status
|
||||
* @param[in] vendor @copydoc sr_dev_inst::vendor
|
||||
|
@ -240,6 +240,42 @@ SR_PRIV struct sr_dev_inst *sr_dev_inst_new(int status,
|
|||
return sdi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocate and init a new user-generated device instance.
|
||||
*/
|
||||
SR_API struct sr_dev_inst *sr_dev_inst_user_new(const char *vendor,
|
||||
const char *model, const char *version)
|
||||
{
|
||||
struct sr_dev_inst *sdi;
|
||||
|
||||
sdi = sr_dev_inst_new(0, vendor, model, version);
|
||||
if (!sdi)
|
||||
return NULL;
|
||||
|
||||
sdi->inst_type = SR_INST_USER;
|
||||
|
||||
return sdi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new channel to the specified device instance.
|
||||
*/
|
||||
SR_API int sr_dev_inst_channel_add(struct sr_dev_inst *sdi, int index, int type, const char *name)
|
||||
{
|
||||
struct sr_channel *ch;
|
||||
|
||||
if (!sdi || sdi->inst_type != SR_INST_USER || index < 0)
|
||||
return SR_ERR_ARG;
|
||||
|
||||
ch = sr_channel_new(index, type, TRUE, name);
|
||||
if (!ch)
|
||||
return SR_ERR;
|
||||
|
||||
sdi->channels = g_slist_append(sdi->channels, ch);
|
||||
|
||||
return SR_OK;
|
||||
}
|
||||
|
||||
/** @private
|
||||
* Free device instance struct created by sr_dev_inst().
|
||||
* @param sdi device instance to free.
|
||||
|
|
Loading…
Reference in New Issue