This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Álvaro Neira Ayuso alvaroneay at gmail.comEl 11/02/14 16:06, ☎ escribió: > Shouldn't this be in libosmocore? Yes sorry, i have forgot to put it. Thanks Max > > 11.02.2014 15:44, Alvaro Neira пишет: >> From: Álvaro Neira Ayuso <anayuso at 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 at 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; >> +} >> + >> /*! @} */ >> >> > >