added baudrate parsing to d0 protocol (connection routine still missing)

This commit is contained in:
Steffen Vogel 2011-12-06 02:35:14 +01:00
parent 839a43eab2
commit 63a7dc3285
3 changed files with 30 additions and 3 deletions

View file

@ -51,6 +51,13 @@ int meter_open_d0(struct meter *mtr);
int meter_close_d0(struct meter *mtr);
size_t meter_read_d0(struct meter *mtr, struct reading *rds, size_t n);
int meter_d0_parse_line(struct reading *rd, char *line, size_t n);
/**
* Open socket
*
* @param node the hostname or ASCII encoded IP address
* @param the ASCII encoded portnum or service as in /etc/services
* @return file descriptor, <0 on error
*/
int meter_d0_open_socket(const char *node, const char *service);
#endif /* _D0_H_ */

View file

@ -60,12 +60,32 @@ int meter_init_d0(meter_t *mtr, list_t options) {
handle->host = NULL;
}
else {
print(log_error, "Missing host and port", mtr);
print(log_error, "Missing device or host", mtr);
return ERR;
}
/* baudrate */
int baudrate;
switch (options_lookup_int(options, "baudrate", &handle->baudrate)) {
case SUCCESS:
/* find constant for termios structure */
switch (baudrate) {
case 1200: handle->baudrate = B1200; break;
case 1800: handle->baudrate = B1800; break;
case 2400: handle->baudrate = B2400; break;
case 4800: handle->baudrate = B4800; break;
case 9600: handle->baudrate = B9600; break;
case 19200: handle->baudrate = B19200; break;
case 38400: handle->baudrate = B38400; break;
case 57600: handle->baudrate = B57600; break;
case 115200: handle->baudrate = B115200; break;
case 230400: handle->baudrate = B230400; break;
default:
print(log_error, "Invalid baudrate: %i", mtr, baudrate);
return ERR;
}
break;
case ERR_NOT_FOUND: /* using default value if not specified */
handle->baudrate = 9600;
break;

View file

@ -66,7 +66,7 @@ int meter_init_sml(meter_t *mtr, list_t options) {
handle->host = NULL;
}
else {
print(log_error, "Missing host and port", mtr);
print(log_error, "Missing device or host", mtr);
return ERR;
}