#endif
};
+/* Configuration for a serial port. */
+struct sp_port_config {
+ int baudrate;
+ int bits;
+ int parity;
+ int stopbits;
+ int flowcontrol;
+ int rts;
+ int dtr;
+};
+
/* Return values. */
enum {
/* Operation completed successfully. */
int sp_flush(struct sp_port *port);
int sp_write(struct sp_port *port, const void *buf, size_t count);
int sp_read(struct sp_port *port, void *buf, size_t count);
-int sp_set_params(struct sp_port *port, int baudrate, int bits, int parity,
- int stopbits, int flowcontrol, int rts, int dtr);
+int sp_set_config(struct sp_port *port, struct sp_port_config *config);
int sp_last_error_code(void);
char *sp_last_error_message(void);
void sp_free_error_message(char *message);
#define TRY(x) do { int ret = x; if (ret != SP_OK) return ret; } while (0)
-int sp_set_params(struct sp_port *port, int baudrate, int bits, int parity,
- int stopbits, int flowcontrol, int rts, int dtr)
+int sp_set_config(struct sp_port *port, struct sp_port_config *config)
{
struct sp_port_data data;
TRY(start_config(port, &data));
- TRY(set_baudrate(&data, baudrate));
- TRY(set_bits(&data, bits));
- TRY(set_parity(&data, parity));
- TRY(set_stopbits(&data, stopbits));
- TRY(set_flowcontrol(&data, flowcontrol));
- TRY(set_rts(&data, rts));
- TRY(set_dtr(&data, dtr));
+ TRY(set_baudrate(&data, config->baudrate));
+ TRY(set_bits(&data, config->bits));
+ TRY(set_parity(&data, config->parity));
+ TRY(set_stopbits(&data, config->stopbits));
+ TRY(set_flowcontrol(&data, config->flowcontrol));
+ TRY(set_rts(&data, config->rts));
+ TRY(set_dtr(&data, config->dtr));
TRY(apply_config(port, &data));
return SP_OK;