Add functions for setting individual port parameters.

This commit is contained in:
Martin Ling 2013-11-14 22:01:11 +00:00
parent 9cb98459a8
commit 9069c2fbb2
2 changed files with 27 additions and 0 deletions

View File

@ -143,6 +143,15 @@ 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_config(struct sp_port *port, struct sp_port_config *config);
int sp_set_baudrate(struct sp_port *port, int baudrate);
int sp_set_bits(struct sp_port *port, int bits);
int sp_set_parity(struct sp_port *port, int parity);
int sp_set_stopbits(struct sp_port *port, int stopbits);
int sp_set_rts(struct sp_port *port, int rts);
int sp_set_cts(struct sp_port *port, int cts);
int sp_set_dtr(struct sp_port *port, int dtr);
int sp_set_dsr(struct sp_port *port, int dsr);
int sp_set_xon_xoff(struct sp_port *port, int xon_xoff);
int sp_last_error_code(void);
char *sp_last_error_message(void);
void sp_free_error_message(char *message);

View File

@ -961,6 +961,24 @@ int sp_set_config(struct sp_port *port, struct sp_port_config *config)
return SP_OK;
}
#define CREATE_SETTER(x) int sp_set_##x(struct sp_port *port, int x) { \
struct sp_port_data data; \
TRY(start_config(port, &data)); \
TRY(set_##x(&data, x)); \
TRY(apply_config(port, &data)); \
return SP_OK; \
}
CREATE_SETTER(baudrate)
CREATE_SETTER(bits)
CREATE_SETTER(parity)
CREATE_SETTER(stopbits)
CREATE_SETTER(rts)
CREATE_SETTER(cts)
CREATE_SETTER(dtr)
CREATE_SETTER(dsr)
CREATE_SETTER(xon_xoff)
int sp_last_error_code(void)
{
#ifdef _WIN32