/** A memory allocation failed while executing the operation. */
SP_ERR_MEM = -3,
/** The requested operation is not supported by this system or device. */
- SP_ERR_SUPP = -4,
+ SP_ERR_SUPP = -4
};
/** Port access modes. */
/** Open port for read access. */
SP_MODE_READ = 1,
/** Open port for write access. */
- SP_MODE_WRITE = 2,
+ SP_MODE_WRITE = 2
};
/** Port events. */
/* Ready to transmit new data. */
SP_EVENT_TX_READY = 2,
/* Error occured. */
- SP_EVENT_ERROR = 4,
+ SP_EVENT_ERROR = 4
};
/** Buffer selection. */
/** Output buffer. */
SP_BUF_OUTPUT = 2,
/** Both buffers. */
- SP_BUF_BOTH = 3,
+ SP_BUF_BOTH = 3
};
/** Parity settings. */
/** Mark parity. */
SP_PARITY_MARK = 3,
/** Space parity. */
- SP_PARITY_SPACE = 4,
+ SP_PARITY_SPACE = 4
};
/** RTS pin behaviour. */
/** RTS on. */
SP_RTS_ON = 1,
/** RTS used for flow control. */
- SP_RTS_FLOW_CONTROL = 2,
+ SP_RTS_FLOW_CONTROL = 2
};
/** CTS pin behaviour. */
/** CTS ignored. */
SP_CTS_IGNORE = 0,
/** CTS used for flow control. */
- SP_CTS_FLOW_CONTROL = 1,
+ SP_CTS_FLOW_CONTROL = 1
};
/** DTR pin behaviour. */
/** DTR on. */
SP_DTR_ON = 1,
/** DTR used for flow control. */
- SP_DTR_FLOW_CONTROL = 2,
+ SP_DTR_FLOW_CONTROL = 2
};
/** DSR pin behaviour. */
/** DSR ignored. */
SP_DSR_IGNORE = 0,
/** DSR used for flow control. */
- SP_DSR_FLOW_CONTROL = 1,
+ SP_DSR_FLOW_CONTROL = 1
};
/** XON/XOFF flow control behaviour. */
/** XON/XOFF enabled for output only. */
SP_XONXOFF_OUT = 2,
/** XON/XOFF enabled for input and output. */
- SP_XONXOFF_INOUT = 3,
+ SP_XONXOFF_INOUT = 3
};
/** Standard flow control combinations. */
/** Hardware flow control using RTS/CTS signals. */
SP_FLOWCONTROL_RTSCTS = 2,
/** Hardware flow control using DTR/DSR signals. */
- SP_FLOWCONTROL_DTRDSR = 3,
+ SP_FLOWCONTROL_DTRDSR = 3
};
/** Input signals. */
/** Data carrier detect. */
SP_SIG_DCD = 4,
/** Ring indicator. */
- SP_SIG_RI = 8,
+ SP_SIG_RI = 8
+};
+
+/** Transport types. */
+enum sp_transport {
+ /** Native platform serial port. */
+ SP_TRANSPORT_NATIVE,
+ /** USB serial port adapter. */
+ SP_TRANSPORT_USB,
+ /** Bluetooh serial port adapter. */
+ SP_TRANSPORT_BLUETOOTH
};
/**
*/
char *sp_get_port_name(const struct sp_port *port);
+/**
+ * Get a description for a port, to present to end user.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port description, or NULL if an invalid port is passed.
+ * The description string is part of the port structure and may not be used
+ * after the port structure has been freed.
+ *
+ * @since 0.2.0
+ */
+char *sp_get_port_description(struct sp_port *port);
+
+/**
+ * Get the transport type used by a port.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port transport type.
+ *
+ * @since 0.2.0
+ */
+enum sp_transport sp_get_port_transport(struct sp_port *port);
+
+/**
+ * Get the USB bus number and address on bus of a USB serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ * @param usb_bus Pointer to variable to store USB bus.
+ * @param usb_address Pointer to variable to store USB address
+ *
+ * @return SP_OK upon success, a negative error code otherwise.
+ *
+ * @since 0.2.0
+ */
+enum sp_return sp_get_port_usb_bus_address(const struct sp_port *port,
+ int *usb_bus, int *usb_address);
+
+/**
+ * Get the USB Vendor ID and Product ID of a USB serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ * @param usb_vid Pointer to variable to store USB VID.
+ * @param usb_pid Pointer to variable to store USB PID
+ *
+ * @return SP_OK upon success, a negative error code otherwise.
+ *
+ * @since 0.2.0
+ */
+enum sp_return sp_get_port_usb_vid_pid(const struct sp_port *port, int *usb_vid, int *usb_pid);
+
+/**
+ * Get the USB manufacturer string of a USB serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port manufacturer string, or NULL if an invalid port is passed.
+ * The manufacturer string is part of the port structure and may not be used
+ * after the port structure has been freed.
+ *
+ * @since 0.2.0
+ */
+char *sp_get_port_usb_manufacturer(const struct sp_port *port);
+
+/**
+ * Get the USB product string of a USB serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port product string, or NULL if an invalid port is passed.
+ * The product string is part of the port structure and may not be used
+ * after the port structure has been freed.
+ *
+ * @since 0.2.0
+ */
+char *sp_get_port_usb_product(const struct sp_port *port);
+
+/**
+ * Get the USB serial number string of a USB serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port serial number, or NULL if an invalid port is passed.
+ * The serial number string is part of the port structure and may not be used
+ * after the port structure has been freed.
+ *
+ * @since 0.2.0
+ */
+char *sp_get_port_usb_serial(const struct sp_port *port);
+
+/**
+ * Get the MAC address of a Bluetooth serial adapter port.
+ *
+ * @param port Pointer to port structure.
+ *
+ * @return The port MAC address, or NULL if an invalid port is passed.
+ * The MAC address string is part of the port structure and may not be used
+ * after the port structure has been freed.
+ *
+ * @since 0.2.0
+ */
+char *sp_get_port_bluetooth_address(const struct sp_port *port);
+
/**
* Get the operating system handle for a port.
*
* the sp_signal enum.
*
* @param port Pointer to port structure.
- * @param signals Pointer to variable to receive result.
+ * @param signal_mask Pointer to variable to receive result.
*
* @return SP_OK upon success, a negative error code otherwise.
*
* @since 0.1.0
*/
-enum sp_return sp_get_signals(struct sp_port *port, enum sp_signal *signals);
+enum sp_return sp_get_signals(struct sp_port *port, enum sp_signal *signal_mask);
/**
* Put the port transmit line into the break state.