Add sr_dev_inst_user_new(), sr_dev_inst_channel_add().

This commit is contained in:
Uwe Hermann 2014-11-11 21:58:49 +01:00
parent 924866d48d
commit e705ce3bf6
3 changed files with 43 additions and 1 deletions

View File

@ -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 */

View File

@ -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);

View File

@ -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.