From ec501f317027aef2002dfbdfcf844d45e007732e Mon Sep 17 00:00:00 2001 From: Wojciech Kaczmarski <44336093+sp5wwp@users.noreply.github.com> Date: Sun, 30 Aug 2020 10:14:23 +0200 Subject: [PATCH] Add files via upload --- Makefile | 4 ++-- main.c | 31 ++++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 11bf460..a8e21f9 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Project: codec2 +# Project: M17_UDP_listener CPP = g++ CC = gcc @@ -8,7 +8,7 @@ LINKOBJ = main.o codebook.o codebookd.o codebookdt.o codebookge.o codebookjvm.o LIBS = -static-libgcc -lm INCS = CXXINCS = -BIN = m17_udp +BIN = m17_udp_listener CXXFLAGS = $(CXXINCS) -march=native -msse3 -O2 -std=gnu99 CFLAGS = $(INCS) -march=native -msse3 -O2 -std=gnu99 RM = rm -f diff --git a/main.c b/main.c index a225b1e..3375e07 100644 --- a/main.c +++ b/main.c @@ -13,10 +13,10 @@ #include "codec2.h" //port -#define PORT 7777 +uint16_t port_num=17000; //default port //UDP packet -uint8_t bits[32]; +uint8_t bits[40]; //for reconstructed speech samples, 2x160 (2x20ms) uint16_t speech_buff[320]; @@ -33,9 +33,19 @@ int s, i, slen = sizeof(si_other) , rcv_len; int main(int argc, char *argv[]) { + if(argc==2) + { + port_num=atoi(argv[1]); + } + else + { + fprintf(stderr, "Not enough args\n"); + return 1; + } + //init cod = codec2_create(CODEC2_MODE_3200); - memset(bits, 0, 16); + memset(bits, 0, 40); memset(speech_buff, 0, 320); s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); @@ -49,24 +59,25 @@ int main(int argc, char *argv[]) memset((char*)&si_me, 0, sizeof(si_me)); si_me.sin_family = AF_INET; - si_me.sin_port = htons(PORT); + si_me.sin_port = htons(port_num); si_me.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(s, (struct sockaddr*)&si_me, sizeof(si_me))==-1) { + return 1; } while(1) { //receive packet via UDP - if((rcv_len=recvfrom(s, bits, 32, 0, (struct sockaddr*)&si_other, &slen))==-1) + if((rcv_len=recvfrom(s, bits, 40, 0, (struct sockaddr*)&si_other, &slen))==-1) { return 1; } - if(rcv_len==16) - { + if(rcv_len==34) + {/* //reconstruct speech codec2_decode(cod, &speech_buff[0], &bits[0]); codec2_decode(cod, &speech_buff[160], &bits[8]); @@ -83,6 +94,12 @@ int main(int argc, char *argv[]) /*fp=fopen("out.raw", "a"); fwrite(speech_buff, 2, 160, fp); fclose(fp);*/ + + printf("Frame recv'd!\n"); + } + else if(rcv_len==40) + { + printf("LICH recv'd!\n"); } }