added baudrate parsing to d0 protocol (connection routine still missing)
This commit is contained in:
parent
839a43eab2
commit
63a7dc3285
3 changed files with 30 additions and 3 deletions
|
@ -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_ */
|
||||
|
|
22
src/d0.c
22
src/d0.c
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue