X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fe2apv1sim%2Fricsim%2Ftest%2FPendulum%2FSerial%2Fadruino_serial.c;fp=e2sim%2Fe2apv1sim%2Fricsim%2Ftest%2FPendulum%2FSerial%2Fadruino_serial.c;h=e67465cf4ede4ab8a6d867412c2da2c340160a48;hp=0000000000000000000000000000000000000000;hb=3ebf932d23dcbec9ed19f4a51f9d00a0a54f5124;hpb=6896318f2b4ff01b4a88b16019c3dc93b0b693f5 diff --git a/e2sim/e2apv1sim/ricsim/test/Pendulum/Serial/adruino_serial.c b/e2sim/e2apv1sim/ricsim/test/Pendulum/Serial/adruino_serial.c new file mode 100644 index 0000000..e67465c --- /dev/null +++ b/e2sim/e2apv1sim/ricsim/test/Pendulum/Serial/adruino_serial.c @@ -0,0 +1,98 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "stdio.h" +#include +#include + +#include "adruino_serial.h" + +int start_serial_inferface(int baudrate, char *serial_port) +{ + int fd = -1; + + fd = serialport_init(serial_port, baudrate); + if(fd == -1) { + fprintf(stderr, "couldn't open serial port %s\n", serial_port); + return -1; + } else { + fprintf(stderr, "Openning serial port: %s ...\n", serial_port); + } + + serialport_flush(fd); // take 2 seconds + fprintf(stderr, "Serial port ready!\n"); + + return fd; + +} + +int serial_readline(int fd, char* buf, int buf_max) +{ + if( fd == -1 ){ + perror("serial port not opened"); + return -1; + } + + memset(buf, 0, buf_max); + + do { + serialport_read_until(fd, buf, SERIAL_EOL_CHAR, buf_max, SERIAL_TIMEOUT); + } while( buf[0] == '\n' ); + + // serialport_read_until(fd, buf, SERIAL_EOL_CHAR, buf_max, SERIAL_TIMEOUT); + + return 0; +} + +int serial_writeline(int fd, char* buf) +{ + if(buf[strlen(buf)-1] != SERIAL_EOL_CHAR){ + //append EOL to buf + int len = strlen(buf); + buf[len] = SERIAL_EOL_CHAR; + buf[len+1] = '\0'; + } + + serialport_write(fd, buf); + + return 0; +} + +//For testing only +void test_adruino_serial(void) +{ + int fd; + char buf[MAX_SERIAL_BUFFER]; + + fd = start_serial_inferface(DEFAULT_BAUDRATE, DEFAULT_SERIAL_PORT); + + while(1){ + fprintf(stderr, "[E2 Agent]: "); + fgets(buf, MAX_SERIAL_BUFFER, stdin); + + // serialport_write(fd, "hello\n"); + //serialport_write(fd, buf); + serial_writeline(fd, buf); + + serial_readline(fd, buf, MAX_SERIAL_BUFFER); + fprintf(stderr, "[Adruino] %s", buf); + } + + return; +}