Shouldn't this be in libosmocore?
11.02.2014 15:44, Alvaro Neira пишет:
From: Álvaro Neira Ayuso anayuso@sysmocom.de
This patch provide two new functions for reading and writing from the serial interface. I think this two functions makes it easy reading and writing from the serial interface.
Signed-off-by: Alvaro Neira Ayuso anayuso@sysmocom.de
include/osmocom/core/serial.h | 4 ++++ src/serial.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+)
diff --git a/include/osmocom/core/serial.h b/include/osmocom/core/serial.h index 1640a6d..056010b 100644 --- a/include/osmocom/core/serial.h +++ b/include/osmocom/core/serial.h @@ -33,10 +33,14 @@
#include <termios.h>
+struct msgb;
int osmo_serial_init(const char *dev, speed_t baudrate); int osmo_serial_set_baudrate(int fd, speed_t baudrate); int osmo_serial_set_custom_baudrate(int fd, int baudrate); int osmo_serial_clear_custom_baudrate(int fd); +int osmo_serial_write(int fd, struct msgb *msg); +int osmo_serial_read(int fd, struct msgb *msg, int numbytes);
/*! @} */
diff --git a/src/serial.c b/src/serial.c index 66ee756..818426a 100644 --- a/src/serial.c +++ b/src/serial.c @@ -43,6 +43,7 @@ #endif
#include <osmocom/core/serial.h> +#include <osmocom/core/msgb.h>
#if 0 @@ -226,4 +227,36 @@ osmo_serial_clear_custom_baudrate(int fd) return 0; }
+int +osmo_serial_read(int fd, struct msgb *msg, int numbytes) +{
- int rc, bread = 0;
- while (bread < numbytes) {
rc = read(fd, msg->tail, numbytes - bread);if (rc < 0) {msgb_free(msg);return -1;}bread += rc;msgb_put(msg, rc);- }
- return bread;
+}
+int +osmo_serial_write(int fd, struct msgb *msg) +{
- int bwritten = 0, ret = 0;
- bwritten = write(fd, msg->data, msg->len);
- if (bwritten < 0 || bwritten < msg->len) {
msgb_free(msg);ret = -1;- }
- return ret;
+}
/*! @} */