serial: Add function to extract serial options.
This patch adds a function for a common operation of all serial based drivers. It extracts the serial options from the options linked list that is passed down to every hardware driver.
This commit is contained in:
parent
1a323dd887
commit
1bd9e678ac
|
@ -596,3 +596,45 @@ SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial,
|
|||
|
||||
return SR_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the serial device and options from the options linked list.
|
||||
*
|
||||
* @param options List of options passed from the command line.
|
||||
* @param serial_device Pointer where to store the exctracted serial device.
|
||||
* @param serial_options Pointer where to store the optional extracted serial
|
||||
* options.
|
||||
*
|
||||
* @return SR_OK if a serial_device is found, SR_ERR if no device is found. The
|
||||
* returned string should not be freed by the caller.
|
||||
*/
|
||||
SR_PRIV int sr_serial_extract_options(GSList *options, const char **serial_device,
|
||||
const char **serial_options)
|
||||
{
|
||||
GSList *l;
|
||||
struct sr_config *src;
|
||||
|
||||
*serial_device = NULL;
|
||||
|
||||
for (l = options; l; l = l->next) {
|
||||
src = l->data;
|
||||
switch (src->key) {
|
||||
case SR_CONF_CONN:
|
||||
*serial_device = g_variant_get_string(src->data, NULL);
|
||||
sr_dbg("Parsed serial device: %s", *serial_device);
|
||||
break;
|
||||
|
||||
case SR_CONF_SERIALCOMM:
|
||||
*serial_options = g_variant_get_string(src->data, NULL);
|
||||
sr_dbg("Parsed serial options: %s", *serial_options);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!*serial_device) {
|
||||
sr_dbg("No serial device specified");
|
||||
return SR_ERR;
|
||||
}
|
||||
|
||||
return SR_OK;
|
||||
}
|
||||
|
|
|
@ -219,6 +219,8 @@ SR_PRIV int serial_stream_detect(struct sr_serial_dev_inst *serial,
|
|||
uint8_t *buf, size_t *buflen,
|
||||
size_t packet_size, packet_valid_t is_valid,
|
||||
uint64_t timeout_ms, int baudrate);
|
||||
SR_PRIV int sr_serial_extract_options(GSList *options, const char **serial_device,
|
||||
const char **serial_options);
|
||||
#endif
|
||||
|
||||
/*--- hardware/common/ezusb.c -----------------------------------------------*/
|
||||
|
|
Loading…
Reference in New Issue