FreeCalypso > hg > fc-rfcal-tools
changeset 13:d7e436bf4876
starting autocal
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 21 May 2017 22:58:04 +0000 |
parents | d06985c1f13c |
children | 93e5194e5511 |
files | autocal/Makefile autocal/rvinterf.c |
diffstat | 2 files changed, 64 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autocal/Makefile Sun May 21 22:58:04 2017 +0000 @@ -0,0 +1,8 @@ +CC= gcc +CFLAGS= -O2 -I/opt/freecalypso/include +OBJS= rvinterf.o + +all: ${OBJS} + +clean: + rm -f *.o *.out *errs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autocal/rvinterf.c Sun May 21 22:58:04 2017 +0000 @@ -0,0 +1,56 @@ +/* + * Interface to the DUT via rvinterf + */ + +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <stdio.h> +#include <string.h> +#include <strings.h> +#include <stdlib.h> +#include <unistd.h> +#include <rvinterf/pktmux.h> +#include <rvinterf/localsock.h> +#include <rvinterf/exitcodes.h> + +char *rvif_socket_pathname = "/tmp/rvinterf_socket"; +int rvif_socket; + +connect_rvinterf_socket() +{ + /* local socket binding voodoo copied from osmocon */ + struct sockaddr_un local; + unsigned int namelen; + int rc; + + rvif_socket = socket(AF_UNIX, SOCK_STREAM, 0); + if (rvif_socket < 0) { + perror("socket(AF_UNIX, SOCK_STREAM, 0)"); + exit(ERROR_UNIX); + } + + local.sun_family = AF_UNIX; + strncpy(local.sun_path, rvif_socket_pathname, sizeof(local.sun_path)); + local.sun_path[sizeof(local.sun_path) - 1] = '\0'; + + /* we use the same magic that X11 uses in Xtranssock.c for + * calculating the proper length of the sockaddr */ +#if defined(BSD44SOCKETS) || defined(__UNIXWARE__) + local.sun_len = strlen(local.sun_path); +#endif +#if defined(BSD44SOCKETS) || defined(SUN_LEN) + namelen = SUN_LEN(&local); +#else + namelen = strlen(local.sun_path) + + offsetof(struct sockaddr_un, sun_path) + 1; +#endif + + rc = connect(rvif_socket, (struct sockaddr *) &local, namelen); + if (rc != 0) { + perror(rvif_socket_pathname); + exit(ERROR_RVINTERF); + } + + return(0); +}