diff options
Diffstat (limited to 'mcast/client')
56 files changed, 0 insertions, 5881 deletions
diff --git a/mcast/client/.svn/entries b/mcast/client/.svn/entries deleted file mode 100644 index 11f10fe..0000000 --- a/mcast/client/.svn/entries +++ /dev/null @@ -1,1357 +0,0 @@ -10 - -dir -18963 -svn://reelbox.org/testing/src/vdr-plugins/src/mcli-1/mcast/client -svn://reelbox.org - - - -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - -12be777f-adf9-0310-842f-e37ecc4c7426 - -dvblo_handler.c -file - - - - -2012-09-27T17:22:49.690848Z -c4b6b1eb8cd3a18164b5e331f0a38e66 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -20024 - -recv_ccpp.c -file - - - - -2012-09-27T17:22:49.690848Z -5f878ec9ebd38288cfcc82ee5020c35f -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -21 - -api_server.h -file - - - - -2012-09-27T17:22:49.690848Z -b8b3a949bf3dd399db5549c95421ddcb -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -1357 - -tca_handler.c -file - - - - -2012-09-27T17:22:49.690848Z -2b508aed689369915aa2901edb11ac20 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -1840 - -satlists.c -file - - - - -2012-09-27T17:22:49.690848Z -d3b50554e8c693cfd4af919fad07fbc0 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -5049 - -api_test.c -file - - - - -2012-09-27T17:22:49.690848Z -fce170fc6462af495657d8669b043b41 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -4459 - -dvblo_handler.h -file - - - - -2012-09-27T17:22:49.690848Z -9adb433e99e33b9e2d694ff475b740de -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -743 - -tca_handler.h -file - - - - -2012-09-27T17:22:49.690848Z -3a3b79eee5e1dba852b69f2000a3ccee -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -405 - -mld_client.c -file - - - - -2012-09-27T17:22:49.690848Z -e05bdc7ebc621c510360568867dfdecf -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -22 - -.indent.pro -file - - - - -2012-09-27T17:22:49.690848Z -536d6397e801893325c24ec292dee74f -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -22 - -mmi_handler.c -file - - - - -2012-09-27T17:22:49.690848Z -f85ea2246efdb5607ee9a20366bfcd51 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -9851 - -inet_aton.c -file - - - - -2012-09-27T17:22:49.690848Z -48b37f322a2ae164aa3fb4204c83f6a3 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -27 - -headers.h -file - - - - -2012-09-27T17:22:49.690848Z -aeaf120e1dfc0892b0c49cdf722c9fef -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -638 - -interfaces.c -file - - - - -2012-09-27T17:22:49.690848Z -bd70360e68db12e0e2fe335bc92ad0e3 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -22 - -mmi_handler.h -file - - - - -2012-09-27T17:22:49.690848Z -ed868ea810d05d4fe0ea795cad357faa -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -1225 - -ci_handler.c -file - - - - -2012-09-27T17:22:49.690848Z -d8f14df45e26ee759bb661076b00df2f -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -8218 - -dummy_client.c -file - - - - -2012-09-27T17:22:49.690848Z -c109d8ba8e2dec6b0b5b519c605148f5 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -2677 - -Makefile -file - - - - -2012-09-27T17:22:49.690848Z -ece098cc6788e85c17ce068287a98921 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -4977 - -ci_handler.h -file - - - - -2012-09-27T17:22:49.690848Z -fefcc7f7895850402b2326d8801c41c7 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -859 - -dummy_client.h -file - - - - -2012-09-27T17:22:49.690848Z -1d353edb3158ed94c160c71b499b6591 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -180 - -mld_reporter.c -file - - - - -2012-09-27T17:22:49.690848Z -e3965ad4570cff659778eec00fbb7e4c -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -6670 - -input.c -file - - - - -2012-09-27T17:22:49.694848Z -d1e761e12f3e1dec2a559289cb35cde8 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -3730 - -tools.c -file - - - - -2012-09-27T17:22:49.694848Z -c0906e8f658e6d84d4e12dca1e3ffc57 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -17 - -mingw -dir - -mld_reporter.h -file - - - - -2012-09-27T17:22:49.694848Z -d2eab4a0ce39c3aa79acf912f5bdf7ae -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -239 - -mcast.c -file - - - - -2012-09-27T17:22:49.694848Z -b6c289caaedfc9f9a24d597c72a5d8ce -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -17 - -recv_tv.c -file - - - - -2012-09-27T17:22:49.694848Z -e7bafc54679736def7ce798acacea0e7 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -25663 - -ciparser.c -file - - - - -2012-09-27T17:22:49.694848Z -0cc85089fb87cd0fd0e240e4163510ae -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -20 - -recv_tv.h -file - - - - -2012-09-27T17:22:49.694848Z -e270bffd77d17ca32d976a57be19ea2c -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -2396 - -api_shm_test.c -file - - - - -2012-09-27T17:22:49.694848Z -3be100d9064c5186f90d3efe17ae5e0a -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -10 - -win32 -file - - - - -2012-09-27T17:22:49.694848Z -7e2c1fbd0a7ddc76a7a55f662d59e6e3 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -15 - -tra_handler.c -file - - - - -2012-09-27T17:22:49.694848Z -720a9b9450e8d072850a8632f9efb3bc -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -1121 - -mld_common.c -file - - - - -2012-09-27T17:22:49.694848Z -d0224283be18ec0774fb34c10667634a -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -22 - -main.c -file - - - - -2012-09-27T17:22:49.694848Z -f1a5585bbe9a3711ad03bc10cb2def5a -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -1599 - -api_sock_test.c -file - - - - -2012-09-27T17:22:49.694848Z -3be100d9064c5186f90d3efe17ae5e0a -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -10 - -tra_handler.h -file - - - - -2012-09-27T17:22:49.694848Z -694293ed706ea26dc96111413def41d4 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -234 - -sock_test.c -file - - - - -2012-09-27T17:22:49.686848Z -7d714bc587133294a02cb2edf0e6a841 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -2911 - -inet_pton.c -file - - - - -2012-09-27T17:22:49.686848Z -935bd6f5bff2d3724e7e1913bf6f0b81 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -27 - -inet_ntop.c -file - - - - -2012-09-27T17:22:49.690848Z -04380ba6685b175467f790aba9963a01 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster -has-props - - -svn:special - - - - - - - - - - - - - - - - - -27 - -api_server.c -file - - - - -2012-09-27T17:22:49.690848Z -853f06ad8aec7ec15e6fda43b1f66a77 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -10766 - diff --git a/mcast/client/.svn/prop-base/api_shm_test.c.svn-base b/mcast/client/.svn/prop-base/api_shm_test.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/api_shm_test.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/api_sock_test.c.svn-base b/mcast/client/.svn/prop-base/api_sock_test.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/api_sock_test.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/ciparser.c.svn-base b/mcast/client/.svn/prop-base/ciparser.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/ciparser.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/inet_aton.c.svn-base b/mcast/client/.svn/prop-base/inet_aton.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/inet_aton.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/inet_ntop.c.svn-base b/mcast/client/.svn/prop-base/inet_ntop.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/inet_ntop.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/inet_pton.c.svn-base b/mcast/client/.svn/prop-base/inet_pton.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/inet_pton.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/interfaces.c.svn-base b/mcast/client/.svn/prop-base/interfaces.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/interfaces.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/mcast.c.svn-base b/mcast/client/.svn/prop-base/mcast.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/mcast.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/mld_client.c.svn-base b/mcast/client/.svn/prop-base/mld_client.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/mld_client.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/mld_common.c.svn-base b/mcast/client/.svn/prop-base/mld_common.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/mld_common.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/recv_ccpp.c.svn-base b/mcast/client/.svn/prop-base/recv_ccpp.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/recv_ccpp.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/tools.c.svn-base b/mcast/client/.svn/prop-base/tools.c.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/tools.c.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/prop-base/win32.svn-base b/mcast/client/.svn/prop-base/win32.svn-base deleted file mode 100644 index d222469..0000000 --- a/mcast/client/.svn/prop-base/win32.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/mcast/client/.svn/text-base/.indent.pro.svn-base b/mcast/client/.svn/text-base/.indent.pro.svn-base deleted file mode 100644 index 2faef85..0000000 --- a/mcast/client/.svn/text-base/.indent.pro.svn-base +++ /dev/null @@ -1 +0,0 @@ --i8 -br -l0 -ce -npsl diff --git a/mcast/client/.svn/text-base/Makefile.svn-base b/mcast/client/.svn/text-base/Makefile.svn-base deleted file mode 100644 index 1ea0844..0000000 --- a/mcast/client/.svn/text-base/Makefile.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -#Comment this out to disable debugging output -#DEBUG=1 -#VERBOSE=1 -#WIN32=1 -#API_SOCK=1 -#VERBOSE=1 -#BACKTRACE=1 - -ifdef RBMINI - ARMEL=1 -endif - -ARCH= $(shell $(CC) -dumpmachine) -APPLE_DARWIN = $(shell echo $(ARCH) | grep -q 'apple-darwin' && echo "1" || echo "0") -CYGWIN = $(shell echo $(ARCH) | grep -q 'cygwin' && echo "1" || echo "0") -MIPSEL = $(shell echo $(ARCH) | grep -q 'mipsel' && echo "1" || echo "0") - -DEFS=-DCLIENT -DLIBRARY -D_REENTRANT -D_GNU_SOURCE - -ifeq ($(CYGWIN), 1) -WIN32=1 -else -API_SOCK=1 -endif - -ifeq ($(APPLE_DARWIN), 1) -DEFS:=$(DEFS) -I../common/darwin/include/ -DAPPLE -APPLE=1 -endif - -VDRDIR=../../../../.. --include $(VDRDIR)/Make.config - -ifdef ARMEL - XML_INC := -I/usr/arm-linux-gnueabi/include/libxml2 - XML_LIB := -lxml2 - CROSS = arm-linux-gnueabi- -else -ifeq ($(MIPSEL),1) -DEFS:=$(DEFS) -DMIPSEL -XML_INC:=-I../../libxml2/include -XML_LIB:=-L../../libxml2/lib -else -XML_INC:=`xml2-config --cflags` -XML_LIB:=`xml2-config --libs` -LIBRARY_PATH=/usr/lib -endif -endif -ifeq ($(APPLE_DARWIN), 1) -CFLAGS:= $(CFLAGS) -fPIC -fno-common -Wall -I../common $(DEFS) -else -CFLAGS:= $(CFLAGS) -fPIC -Wall -I../common $(DEFS) -endif - -ifdef BACKTRACE -CFLAGS:= $(CFLAGS) -DBACKTRACE -g -endif - -ifdef API_SHM -LDFLAGS:= $(LDFLAGS) -lrt -CFLAGS:= $(CFLAGS) -DAPI_SHM -endif -ifdef API_SOCK -CFLAGS:= $(CFLAGS) -DAPI_SOCK -endif - -ifdef VERBOSE -CFLAGS:= $(CFLAGS) -DDEBUG -DEBUG=1 -endif - -ifdef WIN32 -CFLAGS:= -Iwin32/include $(CFLAGS) -mno-cygwin -fPIC -DWIN32 -LDFLAGS:= -Lwin32/lib $(LDFLAGS) -mno-cygwin -LDLIBS:= -lpthreadGC2 -lxml2 -lz -lws2_32 -liphlpapi -else -CFLAGS:= $(CFLAGS) -I../dvbloop $(XML_INC) -LDFLAGS:=$(LDFLAGS) -LDLIBS:=$(XML_LIB) -lpthread -lz -lm -endif - -ifdef DEBUG -LDFLAGS:= $(LDFLAGS) -g -rdynamic -CFLAGS:= $(CFLAGS) -g -O0 -else -CFLAGS:= $(CFLAGS) -O3 -endif - -MCLI = mcli - -MCLI_OBJS= mld_common.o mld_client.o mld_reporter.o mcast.o recv_tv.o recv_ccpp.o tools.o tca_handler.o tra_handler.o satlists.o interfaces.o api_server.o ciparser.o ci_handler.o mmi_handler.o -ifdef WIN32 -MCLI_OBJS := $(MCLI_OBJS) inet_pton.o inet_ntop.o inet_aton.o -else -MCLI_OBJS := $(MCLI_OBJS) -endif - -MCLI_SOBJS = main.o -ifdef WIN32 -MCLI_SOBJS := $(MCLI_SOBJS) dummy_client.o -else -ifdef APPLE -MCLI_SOBJS := $(MCLI_SOBJS) dummy_client.o input.o -else -MCLI_SOBJS := $(MCLI_SOBJS) dvblo_handler.o input.o -endif -endif - -all: lib$(MCLI) - -static: $(MCLI)-static - - -MAKEDEP = $(CXX) -MM -MG -DEPFILE = .dependencies -$(DEPFILE): Makefile - $(MAKEDEP) $(CFLAGS) $(MCLI_OBJS:%.o=%.c) > $@ - --include $(DEPFILE) - - -$(MCLI): $(MCLI_OBJS) $(MCLI_SOBJS) - $(CC) $(LDFLAGS) -o $@ $(MCLI_OBJS) $(MCLI_SOBJS) $(LDLIBS) -ifndef DEBUG -ifndef WIN32 - strip $(MCLI) -endif -endif - -lib$(MCLI): $(MCLI_OBJS) -ifdef WIN32 - $(CC) $(LDFLAGS) -shared -o $@.dll $(MCLI_OBJS) $(LDLIBS) -Wl,--out-implib,$@.a -Wl,--output-def,$@.def - lib /def:$@.def /machine:x86 /out:..\\common\\win32\\lib\\$@.lib -# dlltool -k --dllname $@.dll --output-lib win32/lib/$@.lib --def $@.def - cp -a $@.dll win32/lib/ - cp -a $@.a win32/lib/ - cp -a $@.def win32/lib/ -endif -ifdef APPLE - $(CC) $(LDFLAGS) -dynamiclib -o $@.dylib $(MCLI_OBJS) $(LDLIBS) - $(AR) $(ARFLAGS) $@.a $(MCLI_OBJS) -else - $(CC) $(LDFLAGS) -shared -o $@.so $(MCLI_OBJS) $(LDLIBS) - $(AR) $(ARFLAGS) $@.a $(MCLI_OBJS) -endif - - -$(MCLI)-shared: lib$(MCLI) - $(CC) -c $(CFLAGS) -ULIBRARY -o main.o main.c -ifdef WIN32 - $(CC) -c $(CFLAGS) -ULIBRARY -o dummy_client.o dummy_client.c -else -ifdef APPLE - $(CC) -c $(CFLAGS) -ULIBRARY -o input.o input.c - $(CC) -c $(CFLAGS) -ULIBRARY -o dummy_client.o dummy_client.c -else - $(CC) -c $(CFLAGS) -ULIBRARY -o input.o input.c - $(CC) -c $(CFLAGS) -ULIBRARY -o dvblo_handler.o dvblo_handler.c -endif -endif - $(CC) $(LDFLAGS) -o $@ $(MCLI_SOBJS) $(LDLIBS) -L. -lmcli - -$(MCLI)-static: $(MCLI_OBJS) $(MCLI_SOBJS) - $(CC) $(LDFLAGS) -static -static-libgcc -o $@ $(MCLI_OBJS) $(MCLI_SOBJS) $(LDLIBS) $(LIBRARY_PATH)/libxml2.a $(LIBRARY_PATH)/libz.a $(LIBRARY_PATH)/libm.a $(LIBRARY_PATH)/libpthread.a -ifndef DEBUG -ifndef WIN32 - strip $(MCLI)-static -endif -endif - -api_shm_test.o: api_shm_test.c - $(CC) -c $(CFLAGS) -DUSE_SHM_API -o $@ $< - -api_sock_test.o:api_sock_test.c - $(CC) -c $(CFLAGS) -DUSE_SOCK_API -o $@ $< - -$(MCLI)-shmtest: api_shm_test.o - $(CC) $(LDFLAGS) -o $@ api_shm_test.o $(LDLIBS) -lrt - -$(MCLI)-socktest: api_sock_test.o - $(CC) $(LDFLAGS) -o $@ api_sock_test.o - -install: mcli - install -p $< /usr/sbin/$< - -install-lib: libmcli.la - libtool --mode=install install $< /usr/local/lib/ - -install-shared: mcli-shared - libtool --mode=install install $< /usr/local/bin - -depend: .dependencies - #makedepend -Y -- $(CFLAGS) -- *c >/dev/null 2>&1 - -clean: - rm -f $(MCLI) $(MCLI)-* *.elf *.gdb *.o *.lo *.la *~ *.so *.a *.def *.dll *.dylib out.ts - -mingw32: - rm -rf mingw/*.c mingw/*.h mingw/win32 - cp *.c *.h mingw/ - mkdir mingw/win32 - cp -a win32/lib mingw/win32/ - cp -a win32/include mingw/win32/ - @echo "Created mingw directory - now ready to rumble... (call build.cmd)" - -%.o: %.c - $(CC) -c $(CFLAGS) -o $@ $< - -%.lo: %.c - $(CC) -c $(CFLAGS) -o $@ $< diff --git a/mcast/client/.svn/text-base/api_server.c.svn-base b/mcast/client/.svn/text-base/api_server.c.svn-base deleted file mode 100644 index c3d7617..0000000 --- a/mcast/client/.svn/text-base/api_server.c.svn-base +++ /dev/null @@ -1,397 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -#if defined(API_SOCK) || defined(API_SHM) || defined (API_WIN) - -static int process_cmd (api_cmd_t * api_cmd, tra_info_t * trl, netceiver_info_list_t * nci) -{ - if(api_cmd->magic != MCLI_MAGIC || api_cmd->version != MCLI_VERSION) { - api_cmd->magic = MCLI_MAGIC; - api_cmd->version = MCLI_VERSION; - api_cmd->state = API_RESPONSE; - return 0; - } - if (api_cmd->state != API_REQUEST) { - return 0; - } - - switch (api_cmd->cmd) { - case API_GET_NC_NUM: - api_cmd->parm[API_PARM_NC_NUM] = nci->nci_num; - api_cmd->state = API_RESPONSE; - break; - - case API_GET_NC_INFO: - if (api_cmd->parm[API_PARM_NC_NUM] < nci->nci_num) { - api_cmd->u.nc_info = nci->nci[api_cmd->parm[API_PARM_NC_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - break; - case API_GET_TUNER_INFO: - if (api_cmd->parm[API_PARM_NC_NUM] < nci->nci_num) { - if (api_cmd->parm[API_PARM_TUNER_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].tuner_num) { - api_cmd->u.tuner_info = nci->nci[api_cmd->parm[API_PARM_NC_NUM]].tuner[api_cmd->parm[API_PARM_TUNER_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - break; - case API_GET_SAT_LIST_INFO: - if (api_cmd->parm[API_PARM_NC_NUM] < nci->nci_num) { - if (api_cmd->parm[API_PARM_SAT_LIST_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list_num) { - api_cmd->u.sat_list = nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - break; - case API_GET_SAT_INFO: - if (api_cmd->parm[API_PARM_NC_NUM] < nci->nci_num) { - if (api_cmd->parm[API_PARM_SAT_LIST_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list_num) { - if (api_cmd->parm[API_PARM_SAT_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]].sat_num) { - api_cmd->u.sat_info = nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]].sat[api_cmd->parm[API_PARM_SAT_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - break; - - case API_GET_SAT_COMP_INFO: - if (api_cmd->parm[API_PARM_NC_NUM] < nci->nci_num) { - if (api_cmd->parm[API_PARM_SAT_LIST_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list_num) { - if (api_cmd->parm[API_PARM_SAT_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]].sat_num) { - if (api_cmd->parm[API_PARM_SAT_COMP_NUM] < nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]].sat[api_cmd->parm[API_PARM_SAT_NUM]].comp_num) { - api_cmd->u.sat_comp = nci->nci[api_cmd->parm[API_PARM_NC_NUM]].sat_list[api_cmd->parm[API_PARM_SAT_LIST_NUM]].sat[api_cmd->parm[API_PARM_SAT_NUM]].comp[api_cmd->parm[API_PARM_SAT_COMP_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - } else { - api_cmd->state = API_ERROR; - } - break; - case API_GET_TRA_NUM: - api_cmd->parm[API_PARM_TRA_NUM] = trl->tra_num; - api_cmd->state = API_RESPONSE; - break; - case API_GET_TRA_INFO: - if (api_cmd->parm[API_PARM_TRA_NUM] < trl->tra_num) { - api_cmd->u.tra = trl->tra[api_cmd->parm[API_PARM_TRA_NUM]]; - api_cmd->state = API_RESPONSE; - } else { - api_cmd->state = API_ERROR; - } - break; - default: - api_cmd->state = API_ERROR; - } - return 1; -} -#endif -#ifdef API_SOCK -typedef struct -{ - pthread_t thread; - int fd; - struct sockaddr_un addr; - socklen_t len; - int run; -} sock_t; - -static void *sock_cmd_loop (void *p) -{ - sock_t *s = (sock_t *) p; - api_cmd_t sock_cmd; - int n; - netceiver_info_list_t *nc_list=nc_get_list(); - tra_info_t *tra_list=tra_get_list(); - - dbg ("new api client connected\n"); - s->run = 1; - while (s->run){ - n = recv (s->fd, &sock_cmd, sizeof (api_cmd_t), 0); - if (n == sizeof (api_cmd_t)) { - nc_lock_list(); - process_cmd (&sock_cmd, tra_list, nc_list); - nc_unlock_list(); - send (s->fd, &sock_cmd, sizeof (api_cmd_t), 0); - } else { - sock_cmd.magic = MCLI_MAGIC; - sock_cmd.version = MCLI_VERSION; - sock_cmd.state = API_RESPONSE; - send (s->fd, &sock_cmd, sizeof (api_cmd_t), 0); - break; - } - pthread_testcancel(); - } - - close (s->fd); - pthread_detach (s->thread); - free (s); - return NULL; -} - -static void *sock_cmd_listen_loop (void *p) -{ - sock_t tmp; - sock_t *s = (sock_t *) p; - dbg ("sock api listen loop started\n"); - s->run = 1; - - while (s->run) { - tmp.len = sizeof (struct sockaddr_un); - tmp.fd = accept (s->fd, (struct sockaddr*)&tmp.addr, &tmp.len); - if (tmp.fd >= 0) { - sock_t *as = (sock_t *) malloc (sizeof (sock_t)); - if (as == NULL) { - err ("Cannot get memory for socket\n"); - } - *as=tmp; - as->run = 0; - pthread_create (&as->thread, NULL, sock_cmd_loop, as); - } else { - break; - } - pthread_testcancel(); - } - pthread_detach (s->thread); - return NULL; -} - -static sock_t s; -int api_sock_init (const char *cmd_sock_path) -{ - s.addr.sun_family = AF_UNIX; - strcpy (s.addr.sun_path, cmd_sock_path); - s.len = sizeof(struct sockaddr_un); //strlen (cmd_sock_path) + sizeof (s.addr.sun_family); - - if ((s.fd = socket (AF_UNIX, SOCK_STREAM, 0)) < 0) { - warn ("Cannot get socket %d\n", errno); - return -1; - } - unlink (cmd_sock_path); - if (bind (s.fd, (struct sockaddr*)&s.addr, s.len) < 0) { - warn ("Cannot bind control socket\n"); - return -1; - } - if (chmod(cmd_sock_path, S_IRWXU|S_IRWXG|S_IRWXO)) { - warn ("Cannot chmod 777 socket %s\n", cmd_sock_path); - } - if (listen (s.fd, 5) < 0) { - warn ("Cannot listen on socket\n"); - return -1; - } - return pthread_create (&s.thread, NULL, sock_cmd_listen_loop, &s); -} - -void api_sock_exit (void) -{ - //FIXME memory leak on exit in context structres - s.run=0; - close(s.fd); - - if(pthread_exist(s.thread) && !pthread_cancel (s.thread)) { - pthread_join (s.thread, NULL); - } -} -#endif -#ifdef API_SHM -static api_cmd_t *api_cmd = NULL; -static pthread_t api_cmd_loop_thread; - -static void *api_cmd_loop (void *p) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - tra_info_t *tra_list=tra_get_list(); - while (1) { - nc_lock_list(); - process_cmd (api_cmd, tra_list, nc_list); - nc_unlock_list(); - usleep (1); - pthread_testcancel(); - } - - return NULL; -} - -int api_shm_init (void) -{ - int fd = shm_open (API_SHM_NAMESPACE, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); - if (fd == -1) { - warn ("Cannot get a shared memory handle\n"); - return -1; - } - if (ftruncate (fd, sizeof (api_cmd_t)) == -1) { - err ("Cannot truncate shared memory\n"); - } - api_cmd = mmap (NULL, sizeof (api_cmd_t), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (api_cmd == MAP_FAILED) { - err ("MMap of shared memory region failed\n"); - } - close (fd); - - memset (api_cmd, 0, sizeof (api_cmd_t)); - - pthread_create (&api_cmd_loop_thread, NULL, api_cmd_loop, NULL); - return 0; -} - -void api_shm_exit (void) -{ - if(pthread_exist(api_cmd_loop_thread) && !pthread_cancel (api_cmd_loop_thread)) { - pthread_join (api_cmd_loop_thread, NULL); - } - shm_unlink (API_SHM_NAMESPACE); -} -#endif -#ifdef API_WIN - -void *api_cmd_loop(void *lpvParam) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - tra_info_t *tra_list=tra_get_list(); - api_cmd_t sock_cmd; - DWORD cbBytesRead, cbWritten; - BOOL fSuccess; - HANDLE hPipe; - - hPipe = (HANDLE) lpvParam; - - while (1) { - fSuccess = ReadFile( - hPipe, // handle to pipe - &sock_cmd, // buffer to receive data - sizeof(sock_cmd), // size of buffer - &cbBytesRead, // number of bytes read - NULL); // not overlapped I/O - - if (! fSuccess || cbBytesRead == 0) { - break; - } - - if (cbBytesRead == sizeof (api_cmd_t)) { - nc_lock_list(); - process_cmd (&sock_cmd, tra_list, nc_list); - nc_unlock_list(); - - fSuccess = WriteFile( - hPipe, // handle to pipe - &sock_cmd, // buffer to write from - sizeof(sock_cmd), // number of bytes to write - &cbWritten, // number of bytes written - NULL); // not overlapped I/O - - if (! fSuccess || sizeof(sock_cmd) != cbWritten) { - break; - } - } else { - sock_cmd.magic = MCLI_MAGIC; - sock_cmd.version = MCLI_VERSION; - sock_cmd.state = API_RESPONSE; - fSuccess = WriteFile( - hPipe, // handle to pipe - &sock_cmd, // buffer to write from - sizeof(sock_cmd), // number of bytes to write - &cbWritten, // number of bytes written - NULL); // not overlapped I/O - - if (! fSuccess || sizeof(sock_cmd) != cbWritten) { - break; - } - break; - } - } - - FlushFileBuffers(hPipe); - DisconnectNamedPipe(hPipe); - CloseHandle(hPipe); - - return NULL; -} - -#define BUFSIZE 2048 -void *api_listen_loop(void *p) -{ - BOOL fConnected; - pthread_t api_cmd_loop_thread; - HANDLE hPipe; - LPTSTR lpszPipename=(LPTSTR)p; - - while(1) { - hPipe = CreateNamedPipe( - lpszPipename, // pipe name - PIPE_ACCESS_DUPLEX, // read/write access - PIPE_TYPE_MESSAGE | // message type pipe - PIPE_READMODE_MESSAGE | // message-read mode - PIPE_WAIT, // blocking mode - PIPE_UNLIMITED_INSTANCES, // max. instances - BUFSIZE, // output buffer size - BUFSIZE, // input buffer size - 0, // client time-out - NULL); // default security attribute - - if (hPipe == INVALID_HANDLE_VALUE) { - err ("CreatePipe failed"); - return NULL; - } - pthread_testcancel(); - fConnected = ConnectNamedPipe(hPipe, NULL) ? TRUE : (GetLastError() == ERROR_PIPE_CONNECTED); - - if (fConnected) { - if(pthread_create(&api_cmd_loop_thread, NULL, api_cmd_loop, hPipe)) { - err ("CreateThread failed"); - return NULL; - } else { - pthread_detach(api_cmd_loop_thread); - } - } - else { - CloseHandle(hPipe); - } - } - return NULL; -} - -pthread_t api_listen_loop_thread; - -int api_init (LPTSTR cmd_pipe_path) -{ - return pthread_create (&api_listen_loop_thread, NULL, api_listen_loop, cmd_pipe_path); -} - -void api_exit (void) -{ - if(pthread_exist(api_listen_loop_thread) && !pthread_cancel (api_listen_loop_thread)) { - TerminateThread(pthread_getw32threadhandle_np(api_listen_loop_thread),0); - pthread_join (api_listen_loop_thread, NULL); - } -} - -#endif diff --git a/mcast/client/.svn/text-base/api_server.h.svn-base b/mcast/client/.svn/text-base/api_server.h.svn-base deleted file mode 100644 index e0f946f..0000000 --- a/mcast/client/.svn/text-base/api_server.h.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#define API_SHM_NAMESPACE "/mcli" -#define API_SOCK_NAMESPACE "/var/tmp/mcli.sock" - -typedef enum { API_IDLE, - API_REQUEST, - API_RESPONSE, - API_ERROR -} api_state_t; - -typedef enum { API_GET_NC_NUM, - API_GET_NC_INFO, - API_GET_TUNER_INFO, - API_GET_SAT_LIST_INFO, - API_GET_SAT_INFO, - API_GET_SAT_COMP_INFO, - API_GET_TRA_NUM, - API_GET_TRA_INFO, - API_GET_DEVICE_INFO -} api_cmdval_t; - -typedef enum { API_PARM_NC_NUM=0, - API_PARM_DEVICE_NUM=0, - API_PARM_TUNER_NUM, - API_PARM_SAT_LIST_NUM, - API_PARM_SAT_NUM, - API_PARM_SAT_COMP_NUM, - API_PARM_TRA_NUM, - API_PARM_MAX -} api_parm_t; - -typedef struct { - int magic; - int version; - - api_cmdval_t cmd; - api_state_t state; - int parm[API_PARM_MAX]; - union { - netceiver_info_t nc_info; - tuner_info_t tuner_info; - satellite_list_t sat_list; - satellite_info_t sat_info; - satellite_component_t sat_comp; - tra_t tra; - } u; -} api_cmd_t; - -#ifdef API_SHM -DLL_SYMBOL int api_shm_init (void); -DLL_SYMBOL void api_shm_exit (void); -#endif -#ifdef API_SOCK -DLL_SYMBOL int api_sock_init (const char *cmd_sock_path); -DLL_SYMBOL void api_sock_exit (void); -#endif -#ifdef API_WIN -DLL_SYMBOL int api_init (LPTSTR cmd_pipe_path); -DLL_SYMBOL void api_exit (void); -#endif diff --git a/mcast/client/.svn/text-base/api_shm_test.c.svn-base b/mcast/client/.svn/text-base/api_shm_test.c.svn-base deleted file mode 100644 index fa5a0e7..0000000 --- a/mcast/client/.svn/text-base/api_shm_test.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link api_test.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/api_sock_test.c.svn-base b/mcast/client/.svn/text-base/api_sock_test.c.svn-base deleted file mode 100644 index fa5a0e7..0000000 --- a/mcast/client/.svn/text-base/api_sock_test.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link api_test.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/api_test.c.svn-base b/mcast/client/.svn/text-base/api_test.c.svn-base deleted file mode 100644 index cfe6afd..0000000 --- a/mcast/client/.svn/text-base/api_test.c.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - - -int main (int argc, char **argv) -{ -#ifdef USE_SHM_API - #define API_WAIT_RESPONSE(cmd) { cmd->state=API_REQUEST; while (cmd->state == API_REQUEST) usleep(10*1000); if (cmd->state == API_ERROR) warn ("SHM parameter error\n");} - - int fd = shm_open (API_SHM_NAMESPACE, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); - if (fd == -1 ) { - warn ("Cannot get a shared memory handle\n"); - return -1; - } - - if (ftruncate (fd, sizeof(api_cmd_t)) == -1) { - err ("Cannot truncate shared memory\n"); - } - - api_cmd_t *api_cmd = mmap(NULL, sizeof(api_cmd_t), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if ( api_cmd == MAP_FAILED ) { - err ("MMap of shared memory region failed\n"); - } - close(fd); -#endif -#ifdef USE_SOCK_API - #define API_WAIT_RESPONSE(cmd) { cmd->state=API_REQUEST; send (sock_comm, &sock_cmd, sizeof(api_cmd_t), 0); recv (sock_comm, &sock_cmd, sizeof(api_cmd_t), 0); if (cmd->state == API_ERROR) warn ("SHM parameter error\n");} - - int sock_comm; - int sock_name_len = 0; - struct sockaddr_un sock_name; - api_cmd_t sock_cmd; - api_cmd_t *api_cmd=&sock_cmd; - sock_name.sun_family = AF_UNIX; - - strcpy(sock_name.sun_path, API_SOCK_NAMESPACE); - sock_name_len = strlen(API_SOCK_NAMESPACE) + sizeof(sock_name.sun_family); - - if((sock_comm = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) - { - warn ("socket create failure %d\n", errno); - return -1; - } - - if (connect(sock_comm, &sock_name, sock_name_len) < 0) { - err ("connect failure\n"); - } -#endif - api_cmd->cmd=API_GET_NC_NUM; - API_WAIT_RESPONSE(api_cmd); - - printf("nc_num: %d\n", api_cmd->parm[API_PARM_NC_NUM]); - int nc_num=api_cmd->parm[API_PARM_NC_NUM]; - int i; - for(i=0;i<nc_num;i++) { - api_cmd->cmd=API_GET_NC_INFO; - api_cmd->parm[API_PARM_NC_NUM]=i; - API_WAIT_RESPONSE(api_cmd); - printf("nc_info.uuid: %s nc_info.lastseen: %u nc_info.tuner_num: %d\n", api_cmd->u.nc_info.uuid, (unsigned int) api_cmd->u.nc_info.lastseen, api_cmd->u.nc_info.tuner_num); - int j; - int tuner_num=api_cmd->u.nc_info.tuner_num; - for(j=0;j<tuner_num;j++) { - api_cmd->cmd=API_GET_TUNER_INFO; - api_cmd->parm[API_PARM_TUNER_NUM]=j; - API_WAIT_RESPONSE(api_cmd); - printf("tuner_info.fe_info.name: %s SatList: %s\n",api_cmd->u.tuner_info.fe_info.name, api_cmd->u.tuner_info.SatelliteListName); - } - - - int sat_list_num=api_cmd->u.nc_info.sat_list_num; - for(j=0;j<sat_list_num;j++) { - api_cmd->cmd=API_GET_SAT_LIST_INFO; - api_cmd->parm[API_PARM_NC_NUM]=i; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - API_WAIT_RESPONSE(api_cmd); - - printf("sat_list_info.Name: %s sat_list_info.sat_num: %d\n", api_cmd->u.sat_list.Name, api_cmd->u.sat_list.sat_num); - - int sat_num=api_cmd->u.sat_list.sat_num; - int k; - for(k=0;k<sat_num;k++) { - api_cmd->cmd=API_GET_SAT_INFO; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - api_cmd->parm[API_PARM_SAT_NUM]=k; - API_WAIT_RESPONSE(api_cmd); - printf("sat_info.Name: %s\n",api_cmd->u.sat_info.Name); - int comp_num=api_cmd->u.sat_info.comp_num; - int l; - for(l=0;l<comp_num;l++) { - api_cmd->cmd=API_GET_SAT_COMP_INFO; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - api_cmd->parm[API_PARM_SAT_NUM]=k; - api_cmd->parm[API_PARM_SAT_COMP_NUM]=l; - API_WAIT_RESPONSE(api_cmd); - printf("sat_comp.Polarisation: %d sat_comp.RangeMin: %d sat_comp.RangeMax: %d sat_comp.LOF: %d\n", api_cmd->u.sat_comp.Polarisation, api_cmd->u.sat_comp.RangeMin, api_cmd->u.sat_comp.RangeMax, api_cmd->u.sat_comp.LOF); - } - } - } - } - - while (1) { - api_cmd->cmd=API_GET_TRA_NUM; - API_WAIT_RESPONSE(api_cmd); - - printf("tra_num: %d\n", api_cmd->parm[API_PARM_TRA_NUM]); - int tra_num=api_cmd->parm[API_PARM_TRA_NUM]; - for(i=0;i<tra_num;i++) { - api_cmd->cmd=API_GET_TRA_INFO; - api_cmd->parm[API_PARM_TRA_NUM]=i; - API_WAIT_RESPONSE(api_cmd); - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &api_cmd->u.tra.mcg, (char *) host, INET6_ADDRSTRLEN); - - printf("tra.slot:%d tra.fe_type: %d tra.InUse: % 3d tra.mcg: %s tra.uuid: %s tra.lastseen: %u tra.lock:%d tra.strength:%d tra.snr:%d tra.ber:%d\n", api_cmd->u.tra.slot, api_cmd->u.tra.fe_type, api_cmd->u.tra.InUse, host, api_cmd->u.tra.uuid, (unsigned int) api_cmd->u.tra.lastseen, api_cmd->u.tra.s.st, api_cmd->u.tra.s.strength, api_cmd->u.tra.s.snr, api_cmd->u.tra.s.ber); - } - sleep(2); - } - return 0; -} - diff --git a/mcast/client/.svn/text-base/ci_handler.c.svn-base b/mcast/client/.svn/text-base/ci_handler.c.svn-base deleted file mode 100644 index beef8ff..0000000 --- a/mcast/client/.svn/text-base/ci_handler.c.svn-base +++ /dev/null @@ -1,321 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -//#define SHOW_TPDU - -static ci_dev_t devs; -static int dev_num = 0; -static int ci_run = 0; -static pthread_t ci_handler_thread; -static int port = 23000; -static char iface[IFNAMSIZ]; - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int ci_connect (ci_dev_t * c) -{ - int ret; - int j; - struct in6_addr nc; - - if (c->connected) { - return 0; - } - - if (c->fd_ci) { - closesocket (c->fd_ci); - } - - c->fd_ci = socket (PF_INET6, SOCK_STREAM, 0); - j = 1; - if (setsockopt (c->fd_ci, SOL_SOCKET, SO_REUSEADDR, (_SOTYPE) & j, sizeof (j)) < 0) { - warn ("setsockopt REUSEADDR\n"); - } - - j = 1; - if (setsockopt (c->fd_ci, SOL_SOCKET, TCP_NODELAY, (_SOTYPE) & j, sizeof (j)) < 0) { - warn ("setsockopt TCP_NODELAY\n"); - } - - inet_pton (AF_INET6, c->uuid, &nc); -#ifdef SHOW_TPDU - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &nc, (char *) host, INET6_ADDRSTRLEN); - info ("Connect To: %s\n", host); -#endif - struct sockaddr_in6 addr; - memset (&addr, 0, sizeof (struct sockaddr_in6)); - - addr.sin6_family = AF_INET6; - addr.sin6_port = htons (port); - addr.sin6_addr = nc; - addr.sin6_scope_id = if_nametoindex (iface); - - ret = connect (c->fd_ci, (struct sockaddr *) &addr, sizeof (struct sockaddr_in6)); - if (ret < 0) { - warn ("Failed to access NetCeiver CA support\n"); - } else { - c->connected = 1; - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int ci_write_pdu (ci_dev_t * c, ci_pdu_t * tpdu) -{ - int ret = -1; - - dbg ("ci_write_pdu: %p %d\n", tpdu->data, tpdu->len); - - ci_decode_ll (tpdu->data, tpdu->len); - memcpy (c->txdata + 2, tpdu->data, tpdu->len); - c->txdata[0] = tpdu->len >> 8; - c->txdata[1] = tpdu->len & 0xff; - if (!ci_connect (c)) { -#ifdef SHOW_TPDU - int j; - info ("Send TPDU: "); - for (j = 0; j < tpdu->len; j++) { - info ("%02x ", tpdu->data[j]); - } - info ("\n"); -#endif - ret = send (c->fd_ci, (char *) c->txdata, tpdu->len + 2, 0); - if (ret < 0) { - c->connected = 0; - } - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void clean_ci_recv_thread (void *argp) -{ - ci_dev_t *c = (ci_dev_t *) argp; - if (c->txdata) { - free (c->txdata); - } - if (c->rxdata) { - free (c->rxdata); - } - closesocket (c->fd_ci); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void *ci_recv (void *argp) -{ - ci_dev_t *c = (ci_dev_t *) argp; - ci_pdu_t tpdu; - int ret = -1; - - pthread_cleanup_push (clean_ci_recv_thread, c); - - c->rxdata = (u_int8_t *) malloc (CA_TPDU_MAX + 2); - if (!c->rxdata) - err ("ci_recv: out of memory\n"); - c->txdata = (u_int8_t *) malloc (CA_TPDU_MAX + 2); - if (!c->txdata) - err ("ci_recv: out of memory\n"); - - if (c->rxdata && c->txdata) { - c->recv_run = 1; - - while (c->recv_run) { - if (c->connected) { - ret = recv (c->fd_ci, (char *) c->rxdata, CA_TPDU_MAX + 2, 0); - if (ret > 0) { - tpdu.data = c->rxdata; - while (ret > 0) { - tpdu.len = ntohs16 (tpdu.data); - if (tpdu.len >= ret) { - break; - } - tpdu.data += 2; -#ifdef SHOW_TPDU - int j; - info ("Received TPDU: "); - for (j = 0; j < tpdu.len; j++) { - info ("%02x ", tpdu.data[j]); - } - info ("\n"); -#endif - ci_decode_ll (tpdu.data, tpdu.len); - unsigned int slot = (unsigned int) tpdu.data[0]; - if (slot < CA_MAX_SLOTS) { - if (c->handle_ci_slot[slot]) { - c->handle_ci_slot[slot] (&tpdu, c->handle_ci_slot_context[slot]); - } - } - - tpdu.data += tpdu.len; - ret -= tpdu.len + 2; - } - } else { - if (errno == EAGAIN) { - ret = 0; - } else { - c->connected = 0; - } - } - } - usleep (10 * 1000); - } - } - pthread_cleanup_pop (1); - - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int ci_register_handler (ci_dev_t * c, int slot, int (*p) (ci_pdu_t *, void *), void *context) -{ - if (slot < CA_MAX_SLOTS) { - c->handle_ci_slot[slot] = p; - c->handle_ci_slot_context[slot] = context; - return 0; - } - return -1; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int ci_unregister_handler (ci_dev_t * c, int slot) -{ - if (slot < CA_MAX_SLOTS) { - c->handle_ci_slot[slot] = NULL; - c->handle_ci_slot_context[slot] = NULL; - return 0; - } - return -1; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static ci_dev_t *ci_add (void) -{ - ci_dev_t *c = (ci_dev_t *) malloc (sizeof (ci_dev_t)); - if (!c) - return NULL; - memset (c, 0, sizeof (ci_dev_t)); - dvbmc_list_add_head (&devs.list, &c->list); - return c; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void ci_del (ci_dev_t * c) -{ - c->recv_run = 0; - if (pthread_exist(c->ci_recv_thread) && !pthread_cancel (c->ci_recv_thread)) { - pthread_join (c->ci_recv_thread, NULL); - } - dvbmc_list_remove (&c->list); - free (c); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - - -ci_dev_t *ci_find_dev_by_uuid (char *uuid) -{ - ci_dev_t *c; - DVBMC_LIST_FOR_EACH_ENTRY (c, &devs.list, ci_dev_t, list) { - if (!strcmp (c->uuid, uuid)) { - return c; - } - } - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void *ci_handler (void *p) -{ - int n; - netceiver_info_list_t *nc_list = nc_get_list (); - ci_run = 1; - while (ci_run) { - nc_lock_list (); - for (n = 0; n < nc_list->nci_num; n++) { - netceiver_info_t *nci = nc_list->nci + n; - char *uuid = nci->uuid; - if (!strlen (uuid) || ci_find_dev_by_uuid (uuid)) { - //already seen - continue; - } - - ci_dev_t *c = ci_add (); - if (!c) { - err ("Cannot get memory for dvb loopback context\n"); - } - - dbg ("allocate ci dev %d for uuid %s\n", dev_num, uuid); - - strcpy (c->uuid, uuid); - c->cacaps = &nci->ci; - c->device = dev_num++; - - info ("Starting ci thread for netceiver UUID %s\n", c->uuid); - int ret = pthread_create (&c->ci_recv_thread, NULL, ci_recv, c); - while (!ret && !c->recv_run) { - usleep (10000); - } - if (ret) { - err ("pthread_create failed with %d\n", ret); - } - } - nc_unlock_list (); - sleep (1); - } - return NULL; -} - -int ci_init (int ca_enable, char *intf, int p) -{ - int ret = 0; - if (intf) { - strcpy (iface, intf); - } else { - iface[0] = 0; - } - if (p) { - port = p; - } - - dvbmc_list_init (&devs.list); - if (ca_enable) { - ret = pthread_create (&ci_handler_thread, NULL, ci_handler, NULL); - while (!ret && !ci_run) { - usleep (10000); - } - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -void ci_exit (void) -{ - ci_dev_t *c; - ci_dev_t *ctmp; - if (pthread_exist (ci_handler_thread)) { - if (pthread_exist(ci_handler_thread) && !pthread_cancel (ci_handler_thread)) { - pthread_join (ci_handler_thread, NULL); - } - - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (c, ctmp, &devs.list, ci_dev_t, list) { - ci_del (c); - } - } -} diff --git a/mcast/client/.svn/text-base/ci_handler.h.svn-base b/mcast/client/.svn/text-base/ci_handler.h.svn-base deleted file mode 100644 index 3ecfc02..0000000 --- a/mcast/client/.svn/text-base/ci_handler.h.svn-base +++ /dev/null @@ -1,30 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -typedef struct { - struct list list; - - pthread_t ci_recv_thread; - char uuid[UUID_SIZE]; - SOCKET fd_ci; - int recv_run; - int device; - int connected; - recv_cacaps_t *cacaps; - u_int8_t *txdata; - u_int8_t *rxdata; - int (*handle_ci_slot[CA_MAX_SLOTS]) (ci_pdu_t *tpdu, void *context); - void *handle_ci_slot_context[CA_MAX_SLOTS]; -} ci_dev_t; - -DLL_SYMBOL int ci_register_handler(ci_dev_t *c, int slot, int (*p) (ci_pdu_t *, void *), void *context); -DLL_SYMBOL int ci_unregister_handler(ci_dev_t *c, int slot); -DLL_SYMBOL int ci_write_pdu(ci_dev_t *c, ci_pdu_t *tpdu); -DLL_SYMBOL ci_dev_t *ci_find_dev_by_uuid (char *uuid); -DLL_SYMBOL int ci_init (int ca_enable, char *intf, int p); -DLL_SYMBOL void ci_exit (void); diff --git a/mcast/client/.svn/text-base/ciparser.c.svn-base b/mcast/client/.svn/text-base/ciparser.c.svn-base deleted file mode 100644 index 0a2c0bf..0000000 --- a/mcast/client/.svn/text-base/ciparser.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/ciparser.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/dummy_client.c.svn-base b/mcast/client/.svn/text-base/dummy_client.c.svn-base deleted file mode 100644 index 2a397d9..0000000 --- a/mcast/client/.svn/text-base/dummy_client.c.svn-base +++ /dev/null @@ -1,101 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#define DEBUG 1 -#include "headers.h" - - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dummy_handle_ts (unsigned char *buffer, size_t len, void *p) -{ - FILE *f=(FILE*)p; - fwrite(buffer, len, 1, f); - return len; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dummy_handle_ten (tra_t *ten, void *p) -{ - FILE *f=(FILE*)p; - if(ten) { - fprintf(f,"Status: %02X, Strength: %04X, SNR: %04X, BER: %04X\n",ten->s.st,ten->s.strength, ten->s.snr, ten->s.ber); - } - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -void dummy_client (void) -{ - int i; - int n; - int run=1; - FILE *f; - recv_info_t *r; - recv_sec_t sec; - struct dvb_frontend_parameters fep; - dvb_pid_t pids[3]; - - netceiver_info_list_t *nc_list=nc_get_list(); -#if 0 - printf("Looking for netceivers out there....\n"); - while(run) { - nc_lock_list(); - for (n = 0; n < nc_list->nci_num; n++) { - netceiver_info_t *nci = nc_list->nci + n; - printf("\nFound NetCeiver: %s\n",nci->uuid); - for (i = 0; i < nci->tuner_num; i++) { - printf(" Tuner: %s, Type %d\n",nci->tuner[i].fe_info.name, nci->tuner[i].fe_info.type); - } - } - nc_unlock_list(); - if(nc_list->nci_num) { - break; - } - sleep(1); - } -#endif - f=fopen("out.ts","wb"); - - r = recv_add(); - if (!r) { - fprintf (stderr, "Cannot get memory for receiver\n"); - return; - } - register_ten_handler (r, dummy_handle_ten, stderr); - register_ts_handler (r, dummy_handle_ts, f); - - memset(&sec, 0, sizeof(recv_sec_t)); - sec.voltage=SEC_VOLTAGE_18; - sec.mini_cmd=SEC_MINI_A; - sec.tone_mode=SEC_TONE_ON; - - memset(&fep, 0, sizeof(struct dvb_frontend_parameters)); - fep.frequency=12544000; - fep.inversion=INVERSION_AUTO; - fep.u.qpsk.symbol_rate=22000000; - fep.u.qpsk.fec_inner=FEC_5_6; - - memset(&pids, 0, sizeof(pids)); - pids[0].pid=511; - pids[1].pid=512; - pids[2].pid=511; - pids[2].id=2; - pids[3].pid=511; - pids[3].id=1; - pids[4].pid=-1; - - printf("\nTuning a station and writing transport data to file 'out.ts':\n"); - recv_tune (r, (fe_type_t)FE_QPSK, 1800+192, &sec, &fep, pids); - getchar(); - register_ten_handler (r, NULL, NULL); - register_ts_handler (r, NULL, NULL); - fclose(f); -} diff --git a/mcast/client/.svn/text-base/dummy_client.h.svn-base b/mcast/client/.svn/text-base/dummy_client.h.svn-base deleted file mode 100644 index e79cbf1..0000000 --- a/mcast/client/.svn/text-base/dummy_client.h.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -void dummy_client (void); - diff --git a/mcast/client/.svn/text-base/dvblo_handler.c.svn-base b/mcast/client/.svn/text-base/dvblo_handler.c.svn-base deleted file mode 100644 index 875749d..0000000 --- a/mcast/client/.svn/text-base/dvblo_handler.c.svn-base +++ /dev/null @@ -1,716 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" -#include "dvblo_ioctl.h" -#include "dvblo_handler.h" - -//#define SHOW_EVENTS -//#define SHOW_TPDU -//#define SHOW_PIDS - -#define TUNE_FORCED_TIMEOUT 5 - -extern pthread_mutex_t lock; -extern recv_info_t receivers; - -static dvblo_dev_t devs; -static int dev_num = 0; -static int dvblo_run = 1; -static int cidev = 0; -static int reload = 0; -static dvblo_cacaps_t cacaps; - -static int special_status_mode=0; // 1: return rotor mode and tuner slot in status - -static int dvblo_get_nc_addr (char *addrstr, char *uuid) -{ - int len = strlen (uuid); - if (len <= 5) { - return -1; - } - memset (addrstr, 0, INET6_ADDRSTRLEN); - - strncpy (addrstr, uuid, len - 5); - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dvblo_handle_ts (unsigned char *buffer, size_t len, void *p) -{ - dvblo_dev_t * d=( dvblo_dev_t *)p; - return write (d->fd, buffer, len); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dvblo_handle_ten (tra_t * ten, void *c) -{ - dvblo_dev_t *d = (dvblo_dev_t *) c; - dbg ("TEN: %ld %p %p\n", gettid (), ten, d); - - if (ten) { - dvblo_festatus_t stat; - memcpy(&stat, &ten->s, sizeof(dvblo_festatus_t)); - - d->ten = *ten; - - if (special_status_mode) { - stat.st|=(ten->rotor_status&3)<<8; - stat.st|=(1+ten->slot)<<12; - } - - return ioctl (d->fd, DVBLO_SET_FRONTEND_STATUS, (dvblo_festatus_t*)&stat); - } else { - dvblo_festatus_t s; - memset (&s, 0, sizeof (dvblo_festatus_t)); - - return ioctl (d->fd, DVBLO_SET_FRONTEND_STATUS, &s); - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void sig_handler (int signal) -{ - dbg ("Signal: %d\n", signal); - - switch (signal) { - case SIGHUP: - reload = 1; - break; - case SIGTERM: - case SIGINT: - dbg ("Trying to exit, got signal %d...\n", signal); - dvblo_run = 0; - break; - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int dvblo_init (void) -{ - char char_dev[100]; - int j, k = 0; - struct dvb_frontend_info fe_info; - dvblo_festatus_t fe_status; - - dvbmc_list_init (&devs.list); - - memset (&fe_info, 0, sizeof (struct dvb_frontend_info)); - fe_info.type = -1; - strcpy (fe_info.name, "Unconfigured"); - memset (&fe_status, 0, sizeof (dvblo_festatus_t)); - - for (j = 0; j < MAX_DEVICES; j++) { - - sprintf (char_dev, "/dev/dvblo%d", j); - int fd = open (char_dev, O_RDWR); - - if (fd == -1) { - warn ("Cannot Open %s\n", char_dev); - continue; - } - k++; - ioctl (fd, DVBLO_SET_FRONTEND_INFO, &fe_info); - ioctl (fd, DVBLO_SET_FRONTEND_STATUS, &fe_status); - ioctl (fd, DVBLO_SET_CA_CAPS, &cacaps); - dvblo_tpdu_t tpdu; - while (1) { - if (ioctl (fd, DVBLO_GET_TPDU, &tpdu) || !tpdu.len) { - break; - } - } - close (fd); - } - - signal (SIGTERM, &sig_handler); - signal (SIGINT, &sig_handler); - signal (SIGHUP, &sig_handler); - signal (SIGPIPE, &sig_handler); - return k; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dvblo_convert_pids (dvblo_dev_t * d) -{ - dvb_pid_t *dst = d->dstpids; - dvblo_pids_t *src = &d->pids; - int i; -#ifdef SHOW_PIDS - info ("devnum:%d pidnum:%d\n", d->device, src->num); -#endif - for (i = 0; i < src->num; i++) { -#ifdef SHOW_PIDS - printf ("devnum:%d pid:%04x\n", d->device, src->pid[i]); -#endif - dst[i].pid = src->pid[i]; - if (d->ca_enable) { - dst[i].id = ci_cpl_find_caid_by_pid (src->pid[i]); - if (dst[i].id != 0) { - dbg ("pid: %04x id: %04x\n", dst[i].pid, dst[i].id); - } - } - } - dst[i].pid = -1; - return i; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int dvblo_tune (dvblo_dev_t * d, int force) -{ - satellite_reference_t satref; - int SatPos; - int mode; - int ret = 0; - - nc_lock_list (); - - for (mode = 0; mode < 3; mode++) { - if (satellite_find_by_diseqc (&satref, (recv_sec_t*)&d->sec, &d->fe_parms, mode)) - break; - } - - if (mode == 3 || (mode == 2 && (d->type == FE_QAM || d->type == FE_OFDM))) { - SatPos = NO_SAT_POS; - } else { - int LOF = 0; - if (mode) { - LOF = satellite_get_lof_by_ref (&satref); - d->fe_parms.frequency += LOF * 1000; - } - SatPos = satellite_get_pos_by_ref (&satref); - recv_sec_t *sec=satellite_find_sec_by_ref (&satref); - memcpy(&d->sec, sec, sizeof(recv_sec_t)); - d->sec.voltage = satellite_find_pol_by_ref (&satref); -#if 1 //def SHOW_EVENTS - printf ("Found satellite position: %d fe_parms: %d LOF: %d voltage: %d mode: %d\n", SatPos, d->fe_parms.frequency, LOF, d->sec.voltage, mode); -#endif - } - nc_unlock_list (); - if (force && d->pids.num == 0) { - d->dstpids[0].pid = 0; - d->dstpids[0].id = 0; - d->dstpids[1].pid = -1; - ret = 2; - } else { - dvblo_convert_pids (d); - } - recv_tune (d->r, d->type, SatPos, (recv_sec_t*)&d->sec, &d->fe_parms, d->dstpids); - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int dvblo_write_ci (ci_pdu_t * pdu, void *context) -{ - dvblo_dev_t *d = (dvblo_dev_t *) context; - dvblo_tpdu_t tpdu; - memcpy (tpdu.data, pdu->data, pdu->len); - tpdu.len = pdu->len; - if (!cmd.reelcammode) - tpdu.data[0] = 0; - return ioctl (d->fd, DVBLO_SET_TPDU, &tpdu); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void clean_dvblo_recv_thread (void *argp) -{ - dvblo_dev_t *d = (dvblo_dev_t *) argp; - recv_del (d->r); - close (d->fd); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void *dvblo_recv (void *argp) -{ - dvblo_dev_t *d = (dvblo_dev_t *) argp; - dvblo_tpdu_t tpdu; - struct dvb_frontend_parameters old_fe_parms; - dvblo_sec_t old_sec; - struct pollfd fds[1]; - int timeout_msecs = 50; - int ret; - time_t last_ci_reset = 0; - char char_dev[100]; - int need_tune = 0; - time_t forced = 0; - unsigned int event = 0; - - dvblo_cacaps_t cacap; - - sprintf (char_dev, "/dev/dvblo%d", d->device); - dbg ("Using character device %s for dvb loopback\n", char_dev); - - d->fd = open (char_dev, O_RDWR); - - if (d->fd < 0) { - err ("Cannot open %s - dvbloop driver loaded?\n", char_dev); - } - - pthread_cleanup_push (clean_dvblo_recv_thread, d); - - fds[0].fd = d->fd; - - if (!ioctl (d->fd, DVBLO_IOCCHECKDEV)) { - if (!ioctl (d->fd, DVBLO_IOCADDDEV)) { - info ("created dvb adapter: %d\n", d->device); - } - } - d->info.frequency_min = 1; - d->info.frequency_max = 2000000000; - - ioctl (d->fd, DVBLO_SET_FRONTEND_INFO, &d->info); - ioctl (d->fd, DVBLO_GET_FRONTEND_PARAMETERS, &d->fe_parms); - ioctl (d->fd, DVBLO_GET_PIDLIST, &d->pids); - ioctl (d->fd, DVBLO_GET_SEC_PARAMETERS, &d->sec); - - old_fe_parms = d->fe_parms; - old_sec = d->sec; -#ifdef DEBUG - print_fe_info (&d->info); -#endif - d->recv_run = 1; - - if (dvblo_tune (d, 1) == 2) { - forced = time (NULL); - } - - while (d->recv_run) { - if (d->cacaps->cap.slot_num) { - nc_lock_list (); -#ifdef SHOW_TPDU - info ("ca_caps->: %p ci_slot:%d info[0]:%02x info[1]:%02x\n", d->cacaps, d->ci_slot, d->cacaps->info[0].flags, d->cacaps->info[1].flags); -#endif - cacap = *d->cacaps; - if (!cmd.reelcammode) { - if (d->ci_slot != 0) { - cacap.info[0] = cacap.info[d->ci_slot]; - } - cacap.cap.slot_num = 1; - } - if ((time (NULL) - last_ci_reset) < cmd.ci_timeout) { - cacap.info[0].flags = 0; - } - ioctl (d->fd, DVBLO_SET_CA_CAPS, &cacap); - nc_unlock_list (); - } - - fds[0].events = POLLIN; - ret = poll (fds, 1, timeout_msecs); - if (ret > 0) { - ioctl (d->fd, DVBLO_GET_EVENT_MASK, &event); - ioctl (d->fd, DVBLO_GET_FRONTEND_PARAMETERS, &d->fe_parms); - ioctl (d->fd, DVBLO_GET_PIDLIST, &d->pids); - ioctl (d->fd, DVBLO_GET_SEC_PARAMETERS, &d->sec); - if (event & EV_MASK_FE) { -#ifdef SHOW_EVENTS - printf ("%p/%p Event Received: FE+Tuner/", d, d->r); - if (event & EV_FRONTEND) { - printf ("Frontend "); - } - if (event & EV_TUNER) { - printf ("Tuner "); - } - if (event & EV_FREQUENCY) { - printf ("Frequency:%d ", d->fe_parms.frequency); - } - if (event & EV_BANDWIDTH) { - printf ("Bandwidth "); - } - printf ("\n"); -#endif - if (memcmp (&d->fe_parms, &old_fe_parms, sizeof (struct dvb_frontend_parameters))) { - old_fe_parms = d->fe_parms; - dbg ("fe_parms have changed!\n"); - need_tune = 1; - if (d->ca_enable) { - ci_cpl_clear (d->ci_slot); - } - } - } - if (event & EV_MASK_SEC) { -#ifdef SHOW_EVENTS - printf ("%p/%p Event Received: SEC/", d, d->r); - if (event & EV_TONE) { - printf ("Tone:%d ", d->sec.tone_mode); - } - if (event & EV_VOLTAGE) { - printf ("Voltage:%d ", d->sec.voltage); - } - if (event & EV_DISEC_MSG) { - printf ("DISEC-Message:"); - int j; - for (j = 0; j < d->sec.diseqc_cmd.msg_len; j++) { - printf ("%02x ", d->sec.diseqc_cmd.msg[j]); - } - } - if (event & EV_DISEC_BURST) { - printf ("DISEC-Burst:%d ", d->sec.mini_cmd); - } - printf ("\n"); -#endif - if (d->sec.voltage == SEC_VOLTAGE_OFF) { - recv_stop (d->r); - memset (&old_fe_parms, 0, sizeof (struct dvb_frontend_parameters)); - need_tune = 0; - dbg ("Stop %p\n", d->r); - } else if (memcmp (&d->sec, &old_sec, sizeof (dvblo_sec_t))) { - dbg ("SEC parms have changed!\n"); - old_sec = d->sec; - need_tune = 1; - if (d->ca_enable) { - ci_cpl_clear (d->ci_slot); - } - } - } - if (event & EV_MASK_CA) { -#ifdef SHOW_EVENTS - printf ("%p/%p Event Received: CA/", d, d->r); -#endif - if (event & EV_CA_WRITE) { -#ifdef SHOW_EVENTS - printf ("WRITE "); -#endif - while (1) { - if (!ioctl (d->fd, DVBLO_GET_TPDU, &tpdu) && tpdu.len) { - if (d->c && d->ca_enable) { - ci_pdu_t pdu; - pdu.len = tpdu.len; - pdu.data = tpdu.data; - if (!cmd.reelcammode) { - pdu.data[0] = d->ci_slot; - } - ci_write_pdu (d->c, &pdu); - event |= EV_PIDFILTER; - } - } else { - break; - } - } - } - if (event & EV_CA_RESET) { -#ifdef SHOW_EVENTS - printf ("RESET "); -#endif - last_ci_reset = time (NULL); - if (d->ca_enable) { - ci_cpl_clear (d->ci_slot); - } - } -#ifdef SHOW_EVENTS - printf ("\n"); -#endif - } - if (need_tune) { - if (dvblo_tune (d, 1) == 2) { - forced = time (NULL); - } - need_tune = 0; - } else if (event & EV_MASK_PID) { -#ifdef SHOW_EVENTS - printf ("%p/%p Event Received: Demux/", d, d->r); - if (event & EV_PIDFILTER) { - printf ("PID filter: %d pids", d->pids.num); - } - printf ("\n"); -#endif - forced = 0; - } - } - if (forced) { - if ((time (NULL) - forced) < TUNE_FORCED_TIMEOUT) { - event &= ~EV_PIDFILTER; - } else { - event |= EV_PIDFILTER; - forced = 0; - } - } - if (event & EV_PIDFILTER) { - dvblo_convert_pids (d); - recv_pids (d->r, d->dstpids); - } - event = 0; - } - pthread_cleanup_pop (1); - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static dvblo_dev_t *dvblo_add (void) -{ - dvblo_dev_t *d = (dvblo_dev_t *) malloc (sizeof (dvblo_dev_t)); - - if (!d) - return NULL; - memset (d, 0, sizeof (dvblo_dev_t)); - dvbmc_list_add_head (&devs.list, &d->list); - return d; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void dvblo_del (dvblo_dev_t * d) -{ - d->recv_run = 0; - if (pthread_exist(d->dvblo_recv_thread) && !pthread_cancel (d->dvblo_recv_thread)) { - pthread_join (d->dvblo_recv_thread, NULL); - } - dvbmc_list_remove (&d->list); - free (d); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -void dvblo_exit (void) -{ - dvblo_dev_t *d; - dvblo_dev_t *dtmp; - - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (d, dtmp, &devs.list, dvblo_dev_t, list) { - dvblo_del (d); - } -} - -static dvblo_dev_t *find_dev_by_uuid (dvblo_dev_t * devs, char *uuid) -{ - dvblo_dev_t *d; - DVBMC_LIST_FOR_EACH_ENTRY (d, &devs->list, dvblo_dev_t, list) { - if (!strcmp (d->uuid, uuid)) { - return d; - } - } - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int count_dev_by_type (dvblo_dev_t * devs, fe_type_t type) -{ - int ret = 0; - dvblo_dev_t *d; - DVBMC_LIST_FOR_EACH_ENTRY (d, &devs->list, dvblo_dev_t, list) { - if (type == d->type) { - ret++; - } - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -satellite_list_t *dvblo_get_sat_list (char *SatelliteListName, netceiver_info_t * nci) -{ - int i; - dbg ("looking for %s\n", SatelliteListName); - for (i = 0; i < nci->sat_list_num; i++) { - if (!strcmp (SatelliteListName, nci->sat_list[i].Name)) { - dbg ("found uuid in sat list %d\n", i); - return nci->sat_list + i; - } - } - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int diseqc_write_conf (char *disec_conf_path, char *rotor_conf_path, dvblo_dev_t * devs, int mode) -{ - int j, k; - dvblo_dev_t *d; - char buf[80]; - char tstr[16]; - FILE *f = NULL; - FILE *fr = NULL; - - f = fopen (disec_conf_path, "wt"); - if (f == NULL) { - return 0; - } - fprintf (f, "# diseqc.conf in VDR format auto generated\n\n"); - - if (strlen(rotor_conf_path)) { - special_status_mode=1; - fr = fopen (rotor_conf_path, "wt"); - } - if (fr) - fprintf (fr, "# rotor.conf auto generated\n\n"); - - DVBMC_LIST_FOR_EACH_ENTRY (d, &devs->list, dvblo_dev_t, list) { - satellite_list_t *sat_list = dvblo_get_sat_list (d->nci->tuner[d->tuner].SatelliteListName, d->nci); - if (!sat_list) { - continue; - } - for (j = 0; j < sat_list->sat_num; j++) { - satellite_info_t *sat = sat_list->sat + j; - for (k = 0; k < sat->comp_num; k++) { - satellite_component_t *comp = sat->comp + k; - int newpos = sat->SatPos ^ 1800; - sprintf (buf, "e0 10 6f %02x %02x %02x", newpos & 0xff, (newpos >> 8) & 0xff, comp->Polarisation << 1 | !(comp->sec.tone_mode & 1)); - if (mode) { - sprintf (tstr, "A%d ", d->device + 1); - } else { - tstr[0] = 0; - } - fprintf (f, "%s%s %d %c 0 [ %s ]\n", tstr, sat->Name, comp->RangeMax, comp->Polarisation == POL_H ? 'H' : 'V', buf); - } - fprintf (f, "\n"); - if (j==0 && fr && sat->type==SAT_SRC_ROTOR) { - fprintf(fr, "%s %i %i %i %i %i\n", tstr, sat->SatPosMin, sat->SatPosMax, - sat->AutoFocus, sat->Latitude, sat->Longitude); - } - } - } - info ("created %s\n", disec_conf_path); - fclose (f); - if (fr) { - info ("created %s\n", rotor_conf_path); - fclose(fr); - } - return 1; -} - -void dvblo_handler (void) -{ - int i; - int n; - int nci_num = 0; - int write_conf = strlen (cmd.disec_conf_path); - netceiver_info_list_t *nc_list = nc_get_list (); - memset (&cacaps, 0, sizeof (dvblo_cacaps_t)); - - info ("Device Type Limits: DVB-S: %d DVB-C: %d DVB-T: %d ATSC: %d DVB-S2: %d\n\n", cmd.tuner_type_limit[FE_QPSK], cmd.tuner_type_limit[FE_QAM], cmd.tuner_type_limit[FE_OFDM], cmd.tuner_type_limit[FE_ATSC], cmd.tuner_type_limit[FE_DVBS2]); - - while (dvblo_run) { - nc_lock_list (); - for (n = 0; n < nc_list->nci_num; n++) { - netceiver_info_t *nci = nc_list->nci + n; - for (i = 0; i < nci->tuner_num; i++) { - char *uuid = nci->tuner[i].uuid; - if (nci->tuner[i].preference < 0 || !strlen (uuid) || find_dev_by_uuid (&devs, uuid)) { - //already seen - continue; - } - fe_type_t type = nci->tuner[i].fe_info.type; - - if (type > FE_DVBS2) { - continue; - } - if(dev_num >= MAX_DEVICES) { - dbg("Limit dev_num reached limit of "MAX_DEVICES"\n"); - continue; - } - if (count_dev_by_type (&devs, type) == cmd.tuner_type_limit[type]) { - dbg ("Limit: %d %d>%d\n", type, count_dev_by_type (&devs, type), cmd.tuner_type_limit[type]); - continue; - } - - dvblo_dev_t *d = dvblo_add (); - if (!d) { - err ("Cannot get memory for dvb loopback context\n"); - } - - dbg ("allocate dev %d for uuid %s\n", dev_num, uuid); - - d->info = nci->tuner[i].fe_info; - - if (type == FE_DVBS2) { - d->info.type = FE_QPSK; - } - - strcpy (d->uuid, nci->tuner[i].uuid); - if (!cmd.reelcammode) { - if (cidev < CA_MAX_SLOTS && (cmd.ca_enable & (1 << dev_num))) { - d->cacaps=(dvblo_cacaps_t*)((void *) &nci->ci); - d->ca_enable = 1; - dbg ("Enabling CA support for device %d\n", dev_num); - char addrstr[INET6_ADDRSTRLEN]; - dvblo_get_nc_addr (addrstr, d->uuid); - dbg ("dvblo_get_nc_addr: %s %s\n", addrstr, d->uuid); - d->c = ci_find_dev_by_uuid (addrstr); - if (d->c) { - dbg ("Attaching ci dev %p to dvblo dev %p\n", d->c, d); - ci_register_handler (d->c, cidev, dvblo_write_ci, d); - d->ci_slot = cidev++; - } else { - dvblo_del (d); //retry next time - break; - } - } else { - d->cacaps = &cacaps; - d->ca_enable = 0; - dbg ("Disabling CA support for device %d\n", dev_num); - } - } else { - if (nci->ci.cap.slot_num && cmd.ca_enable) { - d->ca_enable = 1; - dbg ("Enabling CA support for device %d\n", dev_num); - if (!cidev) { - d->cacaps = (dvblo_cacaps_t*)((void *) &nci->ci); - char addrstr[INET6_ADDRSTRLEN]; - dvblo_get_nc_addr (addrstr, d->uuid); - dbg ("dvblo_get_nc_addr: %s %s\n", addrstr, d->uuid); - d->c = ci_find_dev_by_uuid (addrstr); - if (d->c) { - dbg ("Attaching ci dev %p to dvblo dev %p\n", d->c, d); - ci_register_handler (d->c, cidev++, dvblo_write_ci, d); - ci_register_handler (d->c, cidev++, dvblo_write_ci, d); - } else { - dvblo_del (d); //retry next time - break; - } - } else { - d->cacaps = &cacaps; - } - } else { - d->cacaps = &cacaps; - d->ca_enable = 0; - dbg ("Disabling CA support for device %d\n", dev_num); - } - } - - d->r = recv_add (); - if (!d->r) { - err ("Cannot get memory for receiver\n"); - } - - d->device = dev_num++; - d->type = type; - d->tuner = i; - d->nci = nci; - - register_ten_handler (d->r, dvblo_handle_ten, d); - register_ts_handler (d->r, dvblo_handle_ts, d); - - info ("Starting thread for tuner UUID %s [%s] at device %d with type %d\n", d->uuid, nci->tuner[i].fe_info.name, nci->tuner[i].slot, nci->tuner[i].fe_info.type); - int ret = pthread_create (&d->dvblo_recv_thread, NULL, dvblo_recv, d); - while (!ret && !d->recv_run) { - usleep (10000); - } - if (ret) { - err ("pthread_create failed with %d\n", ret); - } - } - } - if (write_conf) { - if (reload || (nci_num != nc_list->nci_num)) { - nci_num = nc_list->nci_num; - diseqc_write_conf (cmd.disec_conf_path, cmd.rotor_conf_path, &devs, cmd.vdrdiseqcmode); - reload = 0; - } - } - nc_unlock_list (); - sleep (1); - } -} diff --git a/mcast/client/.svn/text-base/dvblo_handler.h.svn-base b/mcast/client/.svn/text-base/dvblo_handler.h.svn-base deleted file mode 100644 index beaa7ac..0000000 --- a/mcast/client/.svn/text-base/dvblo_handler.h.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#define MAX_DEVICES 8 - -typedef struct dvblo_dev { - struct list list; - - pthread_t dvblo_recv_thread; - char uuid[UUID_SIZE]; - int device; - int fd; - pthread_t dvblo_ca_thread; - int fd_ca; - int recv_run; - int ci_slot; - int ca_enable; - - fe_type_t type; - recv_info_t *r; - ci_dev_t *c; - struct dvb_frontend_info info; - dvblo_cacaps_t *cacaps; - dvblo_pids_t pids; - dvb_pid_t dstpids[RECV_MAX_PIDS]; - dvblo_sec_t sec; - struct dvb_frontend_parameters fe_parms; - tra_t ten; - int tuner; - netceiver_info_t *nci; -} dvblo_dev_t; - -int dvblo_init (void); -void dvblo_exit (void); -void dvblo_handler (void); diff --git a/mcast/client/.svn/text-base/headers.h.svn-base b/mcast/client/.svn/text-base/headers.h.svn-base deleted file mode 100644 index c371395..0000000 --- a/mcast/client/.svn/text-base/headers.h.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#ifndef __HEADERS_H__ -#define __HEADERS_H__ - -#include "defs.h" -#include "version.h" -#include "list.h" -#include "satlists.h" -#include "mcast.h" -#include "input.h" -#include "recv_ccpp.h" -#include "recv_tv.h" -#include "tools.h" -#include "interfaces.h" -#include "mcast.h" -#include "mld.h" -#include "api_server.h" -#include "tca_handler.h" -#include "tra_handler.h" -#include "mld_reporter.h" -#include "ciparser.h" -#include "ci_handler.h" -#include "mmi_handler.h" -#include "siparser.h" -#endif diff --git a/mcast/client/.svn/text-base/inet_aton.c.svn-base b/mcast/client/.svn/text-base/inet_aton.c.svn-base deleted file mode 100644 index 1fd34cc..0000000 --- a/mcast/client/.svn/text-base/inet_aton.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/win32/inet_aton.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/inet_ntop.c.svn-base b/mcast/client/.svn/text-base/inet_ntop.c.svn-base deleted file mode 100644 index d11af10..0000000 --- a/mcast/client/.svn/text-base/inet_ntop.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/win32/inet_ntop.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/inet_pton.c.svn-base b/mcast/client/.svn/text-base/inet_pton.c.svn-base deleted file mode 100644 index 7956a55..0000000 --- a/mcast/client/.svn/text-base/inet_pton.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/win32/inet_pton.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/input.c.svn-base b/mcast/client/.svn/text-base/input.c.svn-base deleted file mode 100644 index f10cf4f..0000000 --- a/mcast/client/.svn/text-base/input.c.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" -#define CI_RESET_WAIT 10 - -#ifdef __MINGW32__ -#include <getopt.h> -#endif - -cmdline_t cmd; - -//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void print_help (int argc, char *argv[]) -{ - printf ("Usage:\n" \ - " mcli --ifname <network interface>\n" \ - " mcli --port <port> (default: -port 23000)\n" \ - " mcli --dvb-s <num> --dvb-c <num> --dvb-t <num> --atsc <num> --dvb-s2 <num>\n" \ - " limit number of device types (default: 8 of every type)\n" \ - " mcli --diseqc-conf <filepath>\n" \ - " mcli --rotor-conf <filepath>\n" \ - " mcli --mld-reporter-disable\n" \ - " mcli --sock-path <filepath>\n"\ - " mcli --ca-enable <bitmask>\n"\ - " mcli --ci-timeout <time>\n"\ - " mcli --vdr-diseqc-bind <0|1>\n"\ - " mcli --reel-cam-mode\n"\ - "\n"); -} - -//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void init_cmd_line_parameters () -{ - int i; - memset (&cmd, 0, sizeof (cmdline_t)); - - for (i=0; i<=FE_DVBS2; i++) { - cmd.tuner_type_limit[i] = 8; - } - cmd.port = 23000; - cmd.mld_start = 1; - cmd.ca_enable = 3; - cmd.vdrdiseqcmode = 1; - cmd.reelcammode = 0; - cmd.ci_timeout = CI_RESET_WAIT; - strcpy (cmd.cmd_sock_path, API_SOCK_NAMESPACE); - cmd.disec_conf_path[0]=0; - cmd.rotor_conf_path[0]=0; -} - -//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -void get_options (int argc, char *argv[]) -{ - int tuners = 0, i; - char c; - int ret; - //init parameters - init_cmd_line_parameters (); - while (1) { - //int this_option_optind = optind ? optind : 1; - int option_index = 0; - static struct option long_options[] = { - {"port", 1, 0, 0}, //0 - {"ifname", 1, 0, 0}, //1 - {"help", 0, 0, 0}, //2 - {"dvb-s", 1, 0, 0}, //3 - {"dvb-c", 1, 0, 0}, //4 - {"dvb-t", 1, 0, 0}, //5 - {"atsc", 1, 0, 0}, //6 - {"dvb-s2", 1, 0, 0}, //7 - {"diseqc-conf", 1, 0, 0}, //8 - {"mld-reporter-disable", 0, 0, 0}, //9 - {"sock-path", 1, 0, 0}, //10 - {"ca-enable", 1, 0, 0}, //11 - {"ci-timeout", 1, 0, 0}, //12 - {"vdr-diseqc-bind", 1, 0, 0}, //13 - {"reel-cam-mode", 0, 0, 0}, //14 - {"rotor-conf", 1, 0, 0}, //15 - {NULL, 0, 0, 0} - }; - - ret = getopt_long_only (argc, argv, "", long_options, &option_index); - c=(char)ret; - if (ret == -1 || c == '?') { - break; - } - - switch (option_index) { - case 0: - cmd.port = atoi (optarg); - break; - case 1: - strncpy (cmd.iface, optarg, IFNAMSIZ-1); - break; - case 2: - print_help (argc, argv); - exit (0); - break; - case 3: - case 4: - case 5: - case 6: - case 7: - i = atoi (optarg); - if (!tuners) { - memset (cmd.tuner_type_limit, 0, sizeof (cmd.tuner_type_limit)); - } - cmd.tuner_type_limit[option_index - 3] = i; - tuners += i; - break; - case 8: - strncpy (cmd.disec_conf_path, optarg, _POSIX_PATH_MAX-1); - break; - case 9: - cmd.mld_start = 0; - break; - case 10: - strncpy (cmd.cmd_sock_path, optarg, _POSIX_PATH_MAX-1); - break; - case 11: - cmd.ca_enable=atoi(optarg); - break; - case 12: - cmd.ci_timeout=atoi(optarg); - break; - case 13: - cmd.vdrdiseqcmode=atoi(optarg); - break; - case 14: - cmd.reelcammode = 1; - break; - case 15: - strncpy (cmd.rotor_conf_path, optarg, _POSIX_PATH_MAX-1); - break; - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } -} diff --git a/mcast/client/.svn/text-base/interfaces.c.svn-base b/mcast/client/.svn/text-base/interfaces.c.svn-base deleted file mode 100644 index 177e32f..0000000 --- a/mcast/client/.svn/text-base/interfaces.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/interfaces.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/main.c.svn-base b/mcast/client/.svn/text-base/main.c.svn-base deleted file mode 100644 index 895fced..0000000 --- a/mcast/client/.svn/text-base/main.c.svn-base +++ /dev/null @@ -1,83 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" -#if ! (defined WIN32 || defined APPLE) - #include "dvblo_ioctl.h" - #include "dvblo_handler.h" -#else - #include "dummy_client.h" -#endif - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -int main (int argc, char **argv) -{ - printf ("DVB - TV Client Version " MCLI_VERSION_STR " (c) BayCom GmbH\n\n"); -//#if (defined WIN32 || defined APPLE) -#ifdef WIN32 -#ifndef __MINGW32__ - cmdline_t cmd; - cmd.iface[0]=0; - cmd.port=0; - cmd.mld_start=1; -#else - get_options (argc, argv); -#endif -#else -#ifdef BACKTRACE - signal(SIGSEGV, SignalHandlerCrash); - signal(SIGBUS, SignalHandlerCrash); - signal(SIGABRT, SignalHandlerCrash); -#endif - get_options (argc, argv); -#endif - recv_init (cmd.iface, cmd.port); - - #ifdef API_SHM - api_shm_init(); - #endif - #ifdef API_SOCK - api_sock_init(cmd.cmd_sock_path); - #endif - #ifdef API_WIN - api_init(TEXT("\\\\.\\pipe\\mcli")); - #endif - - if(cmd.mld_start) { - mld_client_init (cmd.iface); - } -#if ! (defined WIN32 || defined APPLE) - ci_init(cmd.ca_enable, cmd.iface, cmd.port); - dvblo_init(); - - dvblo_handler(); - - dvblo_exit(); - ci_exit(); -#else - dummy_client (); -#endif - - if(cmd.mld_start) { - mld_client_exit (); - } - - #ifdef API_SHM - api_shm_exit(); - #endif - #ifdef API_SOCK - api_sock_exit(); - #endif - #ifdef API_WIN - api_exit(); - #endif - - recv_exit (); - - return 0; -} diff --git a/mcast/client/.svn/text-base/mcast.c.svn-base b/mcast/client/.svn/text-base/mcast.c.svn-base deleted file mode 100644 index 8900452..0000000 --- a/mcast/client/.svn/text-base/mcast.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/mcast.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/mld_client.c.svn-base b/mcast/client/.svn/text-base/mld_client.c.svn-base deleted file mode 100644 index 1871f5d..0000000 --- a/mcast/client/.svn/text-base/mld_client.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/mld_client.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/mld_common.c.svn-base b/mcast/client/.svn/text-base/mld_common.c.svn-base deleted file mode 100644 index ee607dc..0000000 --- a/mcast/client/.svn/text-base/mld_common.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/mld_common.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/mld_reporter.c.svn-base b/mcast/client/.svn/text-base/mld_reporter.c.svn-base deleted file mode 100644 index e0530ab..0000000 --- a/mcast/client/.svn/text-base/mld_reporter.c.svn-base +++ /dev/null @@ -1,225 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#undef DEBUG -#include "headers.h" - -extern pthread_mutex_t lock; -extern recv_info_t receivers; - -extern int mld_start; -static pthread_t mld_send_reports_thread; -static char iface[IFNAMSIZ]; - -static int find_mcg_in_mld_mcas (struct in6_addr *mld_mca, int len, struct in6_addr *mcg) -{ - int i; - - for (i = 0; i < len; i++) { - if (!memcmp (mld_mca + i, mcg, sizeof (struct in6_addr))) { - return 1; - } - } - return 0; -} -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -typedef struct { - struct in6_addr *mld_mca_add; - struct in6_addr *mld_mca_drop; -} mld_reporter_context_t; - -static void clean_mld_send_reports_thread(void *p) -{ - mld_reporter_context_t *c=(mld_reporter_context_t*)p; - if(c->mld_mca_add) { - free(c->mld_mca_add); - } - if(c->mld_mca_drop) { - free(c->mld_mca_drop); - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void *mld_send_reports (void *arg) -{ - recv_info_t *receivers = (recv_info_t *) arg; - - int grec_num_drop; - int grec_num_add; - pid_info_t *p; - pid_info_t *ptmp; - recv_info_t *r; - int maxpids=128; - mld_reporter_context_t c; - memset(&c, 0, sizeof(mld_reporter_context_t)); - - c.mld_mca_add=(struct in6_addr *)malloc(maxpids*sizeof(struct in6_addr)); - if (!c.mld_mca_add) - err ("mld_send_reports: out of memory\n"); - c.mld_mca_drop=(struct in6_addr *)malloc(maxpids*sizeof(struct in6_addr)); - if (!c.mld_mca_drop) - err ("mld_send_reports: out of memory\n"); - - pthread_cleanup_push (clean_mld_send_reports_thread, &c); - - struct intnode *intn = int_find_name (iface); - - if( !c.mld_mca_add || !c.mld_mca_drop) { - err ("Cannot get memory for add/drop list\n"); - } - mld_start=1; - while (mld_start) { - grec_num_drop=0; - pthread_mutex_lock (&lock); - - int pids=count_all_pids(receivers); - if(pids>maxpids) { - maxpids=pids; - c.mld_mca_add=(struct in6_addr *)realloc(c.mld_mca_add, pids*sizeof(struct in6_addr)); - if (!c.mld_mca_add) - err ("mld_send_reports: out of memory\n"); - c.mld_mca_drop=(struct in6_addr *)realloc(c.mld_mca_drop, pids*sizeof(struct in6_addr)); - if (!c.mld_mca_drop) - err ("mld_send_reports: out of memory\n"); - } - - //Send listener reports for all recently dropped MCGs - DVBMC_LIST_FOR_EACH_ENTRY (r, &receivers->list, recv_info_t, list) { - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (p, ptmp, &r->slots.list, pid_info_t, list) { - // prevent a somewhere running mcg on any device to be dropped and prevent to drop same mcg multiple times - if (!p->run) { - if ( p->dropped && !find_any_slot_by_mcg (receivers, &p->mcg) && !find_mcg_in_mld_mcas (c.mld_mca_drop, grec_num_drop, &p->mcg)) { - memcpy (c.mld_mca_drop + grec_num_drop++, &p->mcg.s6_addr, sizeof (struct in6_addr)); - p->dropped--; -#ifdef DEBUG - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, p->mcg.s6_addr, (char *) host, INET6_ADDRSTRLEN); - dbg ("DROP_GROUP %d %s\n", grec_num_drop, host); -#endif - } else { - dvbmc_list_remove(&p->list); - free(p); - } - } - } - } - if(grec_num_drop > maxpids) { - err ("Wrong number of pids: %d>%d\n", grec_num_drop, maxpids); - } - grec_num_add=0; - //Send listener reports for all current MCG in use - DVBMC_LIST_FOR_EACH_ENTRY (r, &receivers->list, recv_info_t, list) { - DVBMC_LIST_FOR_EACH_ENTRY (p, &r->slots.list, pid_info_t, list) { - if (p->run && !find_mcg_in_mld_mcas (c.mld_mca_add, grec_num_add, &p->mcg)) { - memcpy (c.mld_mca_add + grec_num_add++, p->mcg.s6_addr, sizeof (struct in6_addr)); -#ifdef DEBUG - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &p->mcg.s6_addr, (char *) host, INET6_ADDRSTRLEN); - dbg ("ADD_GROUP %d %s\n", grec_num_add, host); -#endif - } - } - } - - if(grec_num_add > maxpids) { - err ("Wrong number of pids: %d>%d\n", grec_num_add, maxpids); - } - - pthread_mutex_unlock (&lock); - - if (intn && intn->mtu) { - if (grec_num_drop) { - send_mldv2_report (intn, grec_num_drop, c.mld_mca_drop, 0, NULL, MLD2_MODE_IS_INCLUDE); - } - if (grec_num_add) { - send_mldv2_report (intn, grec_num_add, c.mld_mca_add, 0, NULL, MLD2_MODE_IS_EXCLUDE); - } - } - usleep (REP_TIME); - pthread_testcancel(); - } - pthread_cleanup_pop (1); - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int mld_client_init (char *intf) -{ - if(intf) { - strcpy(iface, intf); - } else { - iface[0]=0; - } - - if (!strlen (iface)) { - struct intnode *intn = int_find_first (); - if (intn) { - strcpy (iface, intn->name); - } else { - warn ("Cannot find any usable network interface\n"); - return -1; - } - } - -#if ! (defined WIN32 || defined APPLE) - g_conf->rawsocket = socket (PF_PACKET, SOCK_DGRAM, htons (ETH_P_ALL)); -#endif -#ifdef WIN32 - g_conf->rawsocket = socket (PF_INET6, SOCK_RAW, IPPROTO_ICMPV6); -#endif -#ifdef APPLE - g_conf->rawsocket = socket (PF_INET6, SOCK_RAW, IPPROTO_HOPOPTS); -#endif - if (g_conf->rawsocket < 0) { - warn ("Cannot get a packet socket\n"); - return -1; - } -#ifdef WIN32 - #define IPV6_HDRINCL 2 - DWORD n=1; - if (setsockopt (g_conf->rawsocket, IPPROTO_IPV6, IPV6_HDRINCL, (char *)&n, sizeof (n)) < 0) { - err ("setsockopt IPV6_HDRINCL"); - } - int idx; - if ((idx = if_nametoindex (iface))>0) { - int ret=setsockopt (g_conf->rawsocket, IPPROTO_IPV6, IPV6_MULTICAST_IF, (_SOTYPE)&idx, sizeof (idx)); - if(ret<0) { - warn("setsockopt for IPV6_MULTICAST_IF failed with %d error %s (%d)\n",ret,strerror (errno), errno); - } - } -#endif - pthread_create (&mld_send_reports_thread, NULL, mld_send_reports, &receivers); - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -void mld_client_exit (void) -{ - if(g_conf) { - mld_start=0; - if(pthread_exist(mld_send_reports_thread)) { - if(pthread_exist(mld_send_reports_thread) && !pthread_cancel (mld_send_reports_thread)) { - pthread_join (mld_send_reports_thread, NULL); - } - } -#if 0 - struct intnode *intn; - unsigned int i; - for (i = 0; i < g_conf->maxinterfaces; i++) { - intn = &g_conf->ints[i]; - if (intn->mtu == 0) - continue; - int_destroy (intn); - } -#endif - closesocket(g_conf->rawsocket); - } -} diff --git a/mcast/client/.svn/text-base/mld_reporter.h.svn-base b/mcast/client/.svn/text-base/mld_reporter.h.svn-base deleted file mode 100644 index 3036061..0000000 --- a/mcast/client/.svn/text-base/mld_reporter.h.svn-base +++ /dev/null @@ -1,11 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -DLL_SYMBOL int mld_client_init (char *intf); -DLL_SYMBOL void mld_client_exit (void); - diff --git a/mcast/client/.svn/text-base/mmi_handler.c.svn-base b/mcast/client/.svn/text-base/mmi_handler.c.svn-base deleted file mode 100644 index 716c7f1..0000000 --- a/mcast/client/.svn/text-base/mmi_handler.c.svn-base +++ /dev/null @@ -1,336 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - * modified by Reel Multimedia, http://www.reel-multimedia.com, info@reel-multimedia.com - * 01042010 DL: use a single thread for reading from network layer (uses less resources) - * - */ - -#include "headers.h" - -//--------------------------------------------------------------------------------------------- -void mmi_print_info (mmi_info_t * m) -{ - char str[INET6_ADDRSTRLEN]; - printf ("------------------\n"); - inet_ntop (AF_INET6, &m->ipv6, (char *) str, INET6_ADDRSTRLEN); - printf ("IP: %s\n", str); - printf ("UUID: %s\n", m->uuid); - printf ("Slot: %d\n", m->slot); - - int i; - for (i = 0; i < m->caid_num; i++) { - caid_mcg_t *cm = m->caids + i; - printf ("%i.SID: %d\n", i, cm->caid); - inet_ntop (AF_INET6, &cm->mcg, (char *) str, INET6_ADDRSTRLEN); - printf ("%i.MCG: %s\n", i, str); - } - printf ("TEXT:\n===================\n %s \n===================\n", m->mmi_text); - -} - -//--------------------------------------------------------------------------------------------- -int mmi_open_menu_session (char *uuid, char *intf, int port, int cmd) -{ - int ret; - int j, sockfd; - struct in6_addr ipv6; - char iface[IFNAMSIZ]; - - inet_pton (AF_INET6, uuid, &ipv6); - - if (!intf || !strlen (intf)) { - struct intnode *intn = int_find_first (); - if (intn) { - strcpy (iface, intn->name); - } - } else { - strncpy (iface, intf, sizeof (iface)); - iface[sizeof (iface) - 1] = 0; - } - if (!port) { - port = 23013; - } - - sockfd = socket (PF_INET6, SOCK_STREAM, 0); - j = 1; - if (setsockopt (sockfd, SOL_SOCKET, SO_REUSEADDR, (_SOTYPE) & j, sizeof (j)) < 0) { - err ("setsockopt REUSEADDR\n"); - } - - j = 1; - if (setsockopt (sockfd, SOL_SOCKET, TCP_NODELAY, (_SOTYPE) & j, sizeof (j)) < 0) { - warn ("setsockopt TCP_NODELAY\n"); - } - - dbg ("Connect To: %s\n", uuid); - - struct sockaddr_in6 addr; - memset (&addr, 0, sizeof (struct sockaddr_in6)); - - addr.sin6_family = AF_INET6; - addr.sin6_port = htons (port); - addr.sin6_addr = ipv6; - addr.sin6_scope_id = if_nametoindex (iface); - - ret = connect (sockfd, (struct sockaddr *) &addr, sizeof (struct sockaddr_in6)); - if (ret < 0) { - dbg ("Failed to access NetCeiver MMI support\n"); - return -1; - } - //send init cmd - char buf[128]; - memset (buf, 0, sizeof (buf)); - dbg ("Request CAM slot %d \n", cmd); - sprintf (buf, "%x", cmd); - int n = send (sockfd, buf, strlen (buf) + 1, 0); - if (n < 0) { - dbg ("unable to sent mmi connection cmd !\n"); - closesocket (sockfd); - return -1; - } - dbg ("MMI SESSION : OK\n"); - return sockfd; -} - -//--------------------------------------------------------------------------------------------- -void mmi_close_menu_session (int s) -{ - closesocket (s); -} - -//--------------------------------------------------------------------------------------------- -int mmi_cam_reset (char *uuid, char *intf, int port, int slot) -{ - int cmd = (slot << 12) | 0xfff; - printf ("Reseting slot %d (cmd %x)...\n", slot, cmd); - int sock = mmi_open_menu_session (uuid, intf, port, cmd); - if (sock < 1) { - printf ("Unable to reset slot %d on netceiver %s...\n", slot, uuid); - } - closesocket (sock); - return 0; -} -//--------------------------------------------------------------------------------------------- -int mmi_cam_reinit (char *uuid, char *intf, int port, int slot) -{ - int cmd = (slot << 12) | 0xeee; - printf ("Reinitializing slot %d (cmd %x)...\n", slot, cmd); - int sock = mmi_open_menu_session (uuid, intf, port, cmd); - if (sock < 1) { - printf ("Unable to reset slot %d on netceiver %s...\n", slot, uuid); - } - closesocket (sock); - return 0; -} -//--------------------------------------------------------------------------------------------- -int mmi_get_menu_text (int sockfd, char *buf, int buf_len, int timeout) -{ - int n = -1; - struct pollfd p; - memset (buf, 0, buf_len); - p.fd = sockfd; - p.events = POLLIN; - if (poll (&p, 1, (timeout+999)>>10) > 0) { - n = recv (sockfd, buf, buf_len, 0); //MSG_DONTWAIT); - } - if (n > 0) { - dbg ("recv:\n%s \n", buf); - } - return n; -} - -//--------------------------------------------------------------------------------------------- -int mmi_send_menu_answer (int sockfd, char *buf, int buf_len) -{ - dbg ("send: %s len %d \n", buf, buf_len); - int n; - n = send (sockfd, buf, buf_len, 0); - if (n < 0) { - dbg ("mmi_send_answer: error sending !\n"); - } - return n; -} - -//--------------------------------------------------------------------------------------------- -UDPContext *mmi_broadcast_client_init (int port, char *intf) -{ - UDPContext *s; - char mcg[1024]; - char iface[IFNAMSIZ]; - //FIXME: move to common - strcpy (mcg, "ff18:6000::"); - if (!intf || !strlen (intf)) { - struct intnode *intn = int_find_first (); - if (intn) { - strcpy (iface, intn->name); - } - } else { - strncpy (iface, intf, sizeof (iface)); - iface[sizeof (iface) - 1] = 0; - } - if (!port) { - port = 23000; - } - - s = client_udp_open_host (mcg, port, iface); - if (!s) { - dbg ("client udp open host error !\n"); - } - - return s; -} - -void mmi_broadcast_client_exit (UDPContext * s) -{ - udp_close (s); -} - -//--------------------------------------------------------------------------------------------- -typedef struct -{ - xmlDocPtr doc; - xmlChar *str, *key; -} xml_parser_context_t; - -static void clean_xml_parser_thread (void *arg) -{ - xml_parser_context_t *c = (xml_parser_context_t *) arg; - if (c->str) { - xmlFree (c->str); - } - if (c->key) { - xmlFree (c->key); - } - if (c->doc) { - xmlFreeDoc (c->doc); - } - dbg ("Free XML parser structures!\n"); -} - -//--------------------------------------------------------------------------------------------- -int mmi_get_data (xmlChar * xmlbuff, int buffersize, mmi_info_t * mmi_info) -{ - xml_parser_context_t c; - xmlNode *root_element = NULL, *cur_node = NULL; - - xmlKeepBlanksDefault (0); //reomve this f. "text" nodes - c.doc = xmlParseMemory ((char *) xmlbuff, buffersize); - root_element = xmlDocGetRootElement (c.doc); - pthread_cleanup_push (clean_xml_parser_thread, &c); - - - if (root_element != NULL) { - cur_node = root_element->children; - if (!xmlStrcmp (cur_node->name, (xmlChar *) "Description")) { - root_element = cur_node->children; - while (root_element != NULL) { - c.key = NULL; - c.str = NULL; - if ((xmlStrcmp (root_element->name, (const xmlChar *) "component"))) { - warn ("Cannot parse XML data\n"); - root_element = root_element->next; - continue; - } - cur_node = root_element->children; - if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "Description"))) { - c.str = xmlGetProp (cur_node, (unsigned char *) "about"); - //fprintf(stdout,"\n%s:\n",c.str); - //fprintf(stdout,"-----------------------------------------------------------\n"); - } else { - warn ("Cannot parse XML data\n"); - root_element = root_element->next; - continue; - } - if (c.str && (!xmlStrcmp (c.str, (const xmlChar *) "MMIData"))) { - cur_node = cur_node->children; - while (cur_node != NULL) { - if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "IP"))) { - c.key = xmlNodeListGetString (c.doc, cur_node->xmlChildrenNode, 1); - if (c.key) { - dbg ("IP: %s\n", c.key); - inet_pton (AF_INET6, (char *) c.key, &mmi_info->ipv6); - xmlFree (c.key); - } - } else if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "UUID"))) { - c.key = xmlNodeListGetString (c.doc, cur_node->xmlChildrenNode, 1); - if (c.key) { - dbg ("UUID: %s\n", c.key); - strcpy (mmi_info->uuid, (char *) c.key); - xmlFree (c.key); - } - } else if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "Slot"))) { - c.key = xmlNodeListGetString (c.doc, cur_node->xmlChildrenNode, 1); - if (c.key) { - dbg ("Slot: %s\n", c.key); - mmi_info->slot = atoi ((char *) c.key); - xmlFree (c.key); - } - } else if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "TEXT"))) { - c.key = xmlNodeListGetString (c.doc, cur_node->xmlChildrenNode, 1); - if (c.key) { - dbg ("TEXT: %s\n", c.key); - int olen = MMI_TEXT_LENGTH, ilen = strlen ((char *) c.key); - - UTF8Toisolat1 ((unsigned char *) mmi_info->mmi_text, &olen, c.key, &ilen); - - xmlFree (c.key); - } - } - cur_node = cur_node->next; - } - } else if (c.str && (!xmlStrcmp (c.str, (const xmlChar *) "ProgramNumberIDs"))) { - cur_node = cur_node->children; - while (cur_node != NULL) { - if ((!xmlStrcmp (cur_node->name, (const xmlChar *) "MCG"))) { - c.key = xmlNodeListGetString (c.doc, cur_node->xmlChildrenNode, 1); - if (c.key) { - dbg ("MCG: %s\n", c.key); - struct in6_addr mcg; - inet_pton (AF_INET6, (char *) c.key, &mcg); - int sid; - mcg_get_id (&mcg, &sid); - mcg_set_id (&mcg, 0); - mmi_info->caids = (caid_mcg_t *) realloc (mmi_info->caids, sizeof (caid_mcg_t) * (mmi_info->caid_num + 1)); - if (!mmi_info->caids) - err ("mmi_get_data: out of memory\n"); - caid_mcg_t *cm = mmi_info->caids + mmi_info->caid_num; - cm->caid = sid; - cm->mcg = mcg; - mmi_info->caid_num++; - xmlFree (c.key); - } - } - cur_node = cur_node->next; - } - } - xmlFree (c.str); - root_element = root_element->next; - } - } - } - - xmlFreeDoc (c.doc); - pthread_cleanup_pop (0); - return 1; -} - -//--------------------------------------------------------------------------------------------- -int mmi_poll_for_menu_text (UDPContext * s, mmi_info_t * m, int timeout) -{ - char buf[8192]; - int n = 0; - if (s) { - n = udp_read (s, (unsigned char *) buf, sizeof (buf), timeout, NULL); - if (n > 0) { - dbg ("recv:\n%s \n", buf); - memset (m, 0, sizeof (mmi_info_t)); - mmi_get_data ((xmlChar *) buf, n, m); - } - } - return n; -} -//--------------------------------------------------------------------------------------------- diff --git a/mcast/client/.svn/text-base/mmi_handler.h.svn-base b/mcast/client/.svn/text-base/mmi_handler.h.svn-base deleted file mode 100644 index 37b0af5..0000000 --- a/mcast/client/.svn/text-base/mmi_handler.h.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#ifndef _MMI_HANDLER_H -#define _MMI_HANDLER_H - -#define MMI_TEXT_LENGTH 1024 - -typedef struct caid_mcg { - - int caid; - struct in6_addr mcg; - - -} caid_mcg_t; - -typedef struct mmi_info { - - int slot; - caid_mcg_t *caids; - int caid_num; - - struct in6_addr ipv6; - char uuid[UUID_SIZE]; - - char mmi_text[MMI_TEXT_LENGTH]; - -} mmi_info_t; - -DLL_SYMBOL void mmi_print_info(mmi_info_t *m); -DLL_SYMBOL int mmi_get_menu_text(int sockfd, char *buf, int buf_len, int timeout); -DLL_SYMBOL int mmi_send_menu_answer(int sockfd, char *buf, int buf_len); -DLL_SYMBOL UDPContext *mmi_broadcast_client_init(int port, char *iface); -DLL_SYMBOL void mmi_broadcast_client_exit(UDPContext *s); -DLL_SYMBOL int mmi_poll_for_menu_text(UDPContext *s, mmi_info_t *m, int timeout); -DLL_SYMBOL int mmi_open_menu_session(char *uuid, char *iface,int port, int cmd); -DLL_SYMBOL void mmi_close_menu_session(int s); -DLL_SYMBOL int mmi_cam_reset(char *uuid, char *intf, int port, int slot); -DLL_SYMBOL int mmi_cam_reinit(char *uuid, char *intf, int port, int slot); - -#endif diff --git a/mcast/client/.svn/text-base/recv_ccpp.c.svn-base b/mcast/client/.svn/text-base/recv_ccpp.c.svn-base deleted file mode 100644 index cdd7e14..0000000 --- a/mcast/client/.svn/text-base/recv_ccpp.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/recv_ccpp.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/recv_tv.c.svn-base b/mcast/client/.svn/text-base/recv_tv.c.svn-base deleted file mode 100644 index f453ed4..0000000 --- a/mcast/client/.svn/text-base/recv_tv.c.svn-base +++ /dev/null @@ -1,905 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - * modified by Reel Multimedia, http://www.reel-multimedia.com, info@reel-multimedia.com - * 01042010 DL: use a single thread for reading from network layer (uses less resources) - * - */ - -//#define DEBUG 1 -#include "headers.h" -#if ! defined WIN32 || defined __CYGWIN__ -#define RT -#endif - -#define RE 1 - -#if defined(RE) -int set_redirected(recv_info_t *r, int sid); -int check_if_already_redirected(recv_info_t *r, int sid); -#endif - -recv_info_t receivers; -pthread_mutex_t lock; - -int mld_start=0; - -int port=23000; -char iface[IFNAMSIZ]; - -static pthread_t recv_tra_thread; -static pthread_t recv_tca_thread; - -#if ! defined WIN32 || defined __CYGWIN__ -static void sig_handler (int signal) -{ - dbg ("Signal: %d\n", signal); - - switch (signal) { - case SIGUSR1: - recv_show_all_pids (&receivers); - break; - } -} -#endif - -#ifdef MULTI_THREAD_RECEIVER -static void clean_recv_ts_thread (void *arg) -{ - pid_info_t *p = (pid_info_t *) arg; -#ifdef DEBUG - dbg ("Stop stream receiving for pid %d\n", p->pid.pid); -#endif - - if (p->s) { - udp_close (p->s); - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void *recv_ts (void *arg) -{ - unsigned char buf[32712]; - unsigned char *ptr; - int n, res; - int cont_old = -1; - - pid_info_t *p = (pid_info_t *) arg; - recv_info_t *r = p->recv; - -#ifdef RT -#if 1 - if (setpriority (PRIO_PROCESS, 0, -15) == -1) -#else - if (pthread_setschedprio (p->recv_ts_thread, -15)) -#endif - { - dbg ("Cannot raise priority to -15\n"); - } -#endif - - pthread_cleanup_push (clean_recv_ts_thread, p); -#ifdef DEBUG - char addr_str[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, p->mcg.s6_addr, addr_str, INET6_ADDRSTRLEN); - dbg ("Start stream receiving for %s on port %d %s\n", addr_str, port, iface); -#endif - p->s = client_udp_open (&p->mcg, port, iface); - if (!p->s) { - warn ("client_udp_open error !\n"); - } else { - p->run = 1; - } - while (p->run>0) { - n = udp_read (p->s, buf, sizeof (buf), 1000, NULL); - if (n >0 ) { - ptr = buf; - if (n % 188) { - warn ("Received %d bytes is not multiple of 188!\n", n); - } - int i; - for (i = 0; i < (n / 188); i++) { - unsigned char *ts = buf + (i * 188); - int adaption_field = (ts[3] >> 4) & 3; - int cont = ts[3] & 0xf; - int pid = ((ts[1] << 8) | ts[2]) & 0x1fff; - int transport_error_indicator = ts[1]&0x80; - - if (pid != 8191 && (adaption_field & 1) && (((cont_old + 1) & 0xf) != cont) && cont_old >= 0) { - warn ("Discontinuity on receiver %p for pid %d: %d->%d at pos %d/%d\n", r, pid, cont_old, cont, i, n / 188); - } - if (transport_error_indicator) { - warn ("Transport error indicator set on receiver %p for pid %d: %d->%d at pos %d/%d\n", r, pid, cont_old, cont, i, n / 188); - } - cont_old = cont; - } - if(r->handle_ts) { - while (n) { - res = r->handle_ts (ptr, n, r->handle_ts_context); - if (res != n) { - warn ("Not same amount of data written: res:%d<=n:%d\n", res, n); - } - if (res < 0) { - warn ("write of %d bytes returned %d\n", n, res); - perror ("Write failed"); - break; - } else { - ptr += res; - n -= res; - } - } - } - } - pthread_testcancel(); - } - pthread_cleanup_pop (1); - - return NULL; - } - -#else -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void recv_ts_func (unsigned char *buf, int n, void *arg) { - if (n >0 ) { - pid_info_t *p = (pid_info_t *) arg; - recv_info_t *r = p->recv; - int i; - for (i = 0; i < n; i += 188) { - unsigned char *ts = buf + i; - int adaption_field = (ts[3] >> 4) & 3; - int cont = ts[3] & 0xf; - int pid = ((ts[1] << 8) | ts[2]) & 0x1fff; - int transport_error_indicator = ts[1]&0x80; - - if (pid != 8191 && (adaption_field & 1) && (((p->cont_old + 1) & 0xf) != cont) && p->cont_old >= 0) { - warn ("Discontinuity on receiver %p for pid %d: %d->%d at pos %d/%d\n", r, pid, p->cont_old, cont, i / 188, n / 188); - } - if (transport_error_indicator) { - warn ("Transport error indicator set on receiver %p for pid %d: %d->%d at pos %d/%d\n", r, pid, p->cont_old, cont, i / 188, n / 188); - } - p->cont_old = cont; - } - if (i != n) { - warn ("Received %d bytes is not multiple of 188!\n", n); - } - if(r->handle_ts) { - while (n) { - int res = r->handle_ts (buf, n, r->handle_ts_context); - if (res != n) { - warn ("Not same amount of data written: res:%d<=n:%d\n", res, n); - } - if (res < 0) { - warn ("write of %d bytes returned %d\n", n, res); - perror ("Write failed"); - break; - } else { - buf += res; - n -= res; - } - } - } - } -} -#endif -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int register_ts_handler (recv_info_t * r, int (*p)(unsigned char *, size_t, void *), void *c) -{ - r->handle_ts=(int (*)(unsigned char *buffer, size_t len, void *context))p; - r->handle_ts_context=c; - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static pid_info_t *find_slot_by_pid (recv_info_t * r, int pid, int id) -{ - pid_info_t *slot; - DVBMC_LIST_FOR_EACH_ENTRY (slot, &r->slots.list, pid_info_t, list) { - if (slot->run && slot->pid.pid == pid && (id == -1 || slot->pid.id == id)) { - return slot; - } - } - - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static pid_info_t *find_slot_by_mcg (recv_info_t * r, struct in6_addr *mcg) -{ - pid_info_t *slot; - - DVBMC_LIST_FOR_EACH_ENTRY (slot, &r->slots.list, pid_info_t, list) { - if (slot->run && !memcmp (&slot->mcg, mcg, sizeof (struct in6_addr))) { - return slot; - } - } - return NULL; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int find_any_slot_by_mcg (recv_info_t * receivers, struct in6_addr *mcg) -{ - recv_info_t *r; - int ret=0; - - DVBMC_LIST_FOR_EACH_ENTRY (r, &receivers->head->list, recv_info_t, list) { - pid_info_t *slot = find_slot_by_mcg (r, mcg); - if(slot) { - ret++; - } - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int count_receivers(recv_info_t *receivers) -{ - int ret=0; - struct list *pos; - - DVBMC_LIST_FOR_EACH (pos, &receivers->list) { - ret++; - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int count_pids(recv_info_t *r) -{ - int ret=0; - struct list *pos; - - DVBMC_LIST_FOR_EACH (pos, &r->slots.list) { - ret++; - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int count_all_pids (recv_info_t * receivers) -{ - int ret=0; - recv_info_t *r; - - DVBMC_LIST_FOR_EACH_ENTRY (r, &receivers->head->list, recv_info_t, list) { - ret += count_pids(r); - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -void recv_show_pids(recv_info_t *r) -{ - pid_info_t *slot; - char addr_str[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, r->mcg.s6_addr, addr_str, INET6_ADDRSTRLEN); - - info("pids on receiver %p (%s):\n",r, addr_str); - DVBMC_LIST_FOR_EACH_ENTRY (slot, &r->slots.list, pid_info_t, list) { - info("%d,", slot->pid.pid); - } - info("\n"); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_show_all_pids (recv_info_t * receivers) -{ - int ret=0; - recv_info_t *r; - DVBMC_LIST_FOR_EACH_ENTRY (r, &receivers->head->list, recv_info_t, list) { - recv_show_pids(r); - } - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void deallocate_slot (recv_info_t * r, pid_info_t *p) -{ - int nodrop=0; - -#ifdef MULTI_THREAD_RECEIVER - if (pthread_exist(p->recv_ts_thread)) { -#else - if (p->run) { - -#endif //info ("Deallocating PID %d from slot %p\n", p->pid.pid, p); - p->run = 0; - - //Do not leave multicast group if there is another dvb adapter using the same group - if (find_any_slot_by_mcg (r, &p->mcg)) { - dbg ("MCG is still in use not dropping\n"); - p->s->is_multicast = 0; - nodrop=1; - } - -#ifdef MULTI_THREAD_RECEIVER - pthread_join (p->recv_ts_thread, NULL); -#else - udp_close_buff(p->s); -#endif - p->dropped = MAX_DROP_NUM; - } - //printf("NO DROP: %d\n",nodrop); - if(!mld_start || nodrop) { - dvbmc_list_remove(&p->list); - free(p); - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static pid_info_t *allocate_slot (recv_info_t * r, struct in6_addr *mcg, dvb_pid_t *pid) -{ - pid_info_t *p = (pid_info_t *)malloc(sizeof(pid_info_t)); - if(!p) { - err ("Cannot get memory for pid\n"); - } - - dbg ("Allocating new PID %d to Slot %p\n", pid->pid, p); - - memset(p, 0, sizeof(pid_info_t)); - - p->cont_old = -1; - p->mcg = *mcg; - mcg_set_pid (&p->mcg, pid->pid); -#if defined(RE) - if (!check_if_already_redirected(r, pid->id)) { - //printf("PID %d not red. ===> SETTING ID to %d\n",pid->pid,pid->id); - mcg_set_id (&p->mcg, pid->id); - mcg_set_priority(&p->mcg, pid->priority); - } else { - set_redirected(r, pid->id); - //printf("send pid %d to noid mcg !\n",pid->pid); - mcg_set_id(&p->mcg, 0); - mcg_set_priority(&p->mcg, 0); - } - //mcg_set_id(&p->mcg,pid->id); -#else - mcg_set_id (&p->mcg, pid->id); - mcg_set_priority(&p->mcg, pid->priority); -#endif - - -#ifdef DEBUG - print_mcg (&p->mcg); -#endif - p->pid = *pid; - p->recv = r; -#ifdef MULTI_THREAD_RECEIVER - int ret = pthread_create (&p->recv_ts_thread, NULL, recv_ts, p); - while (!ret && !p->run) { - usleep (10000); - } - if (ret) { - err ("pthread_create failed with %d\n", ret); -#else - p->cont_old=-1; - p->s = client_udp_open_cb (&p->mcg, port, iface, recv_ts_func, p); - if (!p->s) { - warn ("client_udp_open error !\n"); - return 0; -#endif - } else { - p->run = 1; - dvbmc_list_add_head (&r->slots.list, &p->list); - } - - return p; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void stop_ten_receive (recv_info_t * r) -{ - dbg ("->>>>>>>>>>>>>>>>>stop_ten_receive on receiver %p\n",r); - if (pthread_exist(r->recv_ten_thread) && r->ten_run) { - dbg ("cancel TEN receiver %p %p\n", r, r->recv_ten_thread); - - r->ten_run=0; - pthread_mutex_unlock (&lock); - do { - dbg ("wait TEN stop receiver %p %p\n", r, r->recv_ten_thread); - usleep(10000); - } while (!r->ten_run); - pthread_mutex_lock (&lock); - r->ten_run=0; - dbg ("cancel TEN done receiver %p\n", r); - pthread_detach (r->recv_ten_thread); - pthread_null(r->recv_ten_thread); - } -} - - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void start_ten_receive (recv_info_t * r) -{ - if (r->pidsnum && !pthread_exist(r->recv_ten_thread)) { -#ifdef DEBUG - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &r->mcg, (char *) host, INET6_ADDRSTRLEN); - - dbg ("Start TEN for receiver %p %s\n", r, host); -#endif - r->ten_run = 0; - - int ret = pthread_create (&r->recv_ten_thread, NULL, recv_ten, r); - while (!ret && !r->ten_run) { - dbg ("wait TEN startup receiver %p %p\n", r, r->recv_ten_thread); - usleep (10000); - } - if (ret) { - err ("pthread_create failed with %d\n", ret); - } - } -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int cmppids(const void *p1, const void *p2) -{ - dvb_pid_t *pid1=(dvb_pid_t *)p1; - dvb_pid_t *pid2=(dvb_pid_t *)p2; - - if(pid1->pid == pid2->pid) { - return pid1->id < pid2->id; - } - return pid1->pid < pid2->pid; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static void update_mcg (recv_info_t * r, int handle_ten) -{ - int i; - pid_info_t *p; - pid_info_t *ptmp; - - if(handle_ten) { - if(r->pidsnum) { - start_ten_receive(r); - } else { - stop_ten_receive(r); - } - } - dbg("update_mcg(%p, %d)\n", r, handle_ten); - qsort(r->pids, r->pidsnum, sizeof(dvb_pid_t), cmppids); - - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (p, ptmp, &r->slots.list, pid_info_t, list) { - //dbg ("DVBMC_LIST_FOR_EACH_ENTRY_SAFE: %p\n", p); - if(p->run) { - int found_pid = 0; - for (i = 0; i < r->pidsnum; i++) { - // pid already there without id but now also with id required - if (r->pids[i].pid == p->pid.pid && r->pids[i].id && !p->pid.id) { - found_pid = 0; - break; - } - if (r->pids[i].pid == p->pid.pid && r->pids[i].id == p->pid.id) { - found_pid = 1; - } - } - if (!found_pid) { - deallocate_slot (r, p); - } - } - } - - for (i = 0; i < r->pidsnum; i++) { - unsigned int pid = r->pids[i].pid; - if (!find_slot_by_pid (r, pid, -1)) { //pid with any id there? - allocate_slot (r, &r->mcg, r->pids+i); - } - } - - -} -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -static void stop_receive (recv_info_t * r, int mode) -{ - dbg ("stop_receive on receiver %p mode %d\n",r, mode); - int pidsnum=r->pidsnum; - //Remove all PIDs - r->pidsnum = 0; - update_mcg (r, mode); - r->pidsnum=pidsnum; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -#ifdef RE -#if 0 -static int find_redirected_sid (recv_info_t * r, int id) -{ - pid_info_t *slot; - DVBMC_LIST_FOR_EACH_ENTRY (slot, &r->slots.list, pid_info_t, list) { - if (slot->pid.id == id && slot->pid.re) { - return 1; - } - } - - return 0; -} -#endif - -int check_if_already_redirected(recv_info_t *r, int sid) -{ - int i; - for (i = 0; i < r->pidsnum; i++) { - //printf("PID %d SID %d RE %d\n",r->pids[i].pid, r->pids[i].id, r->pids[i].re); - if (r->pids[i].re && r->pids[i].id == sid) { - return 1; - } - } - - return 0; -} - -int check_if_sid_in(recv_info_t *r, int sid) -{ - int i; - for (i = 0; i < r->pidsnum; i++) { - //printf("PID %d SID %d RE %d\n",r->pids[i].pid, r->pids[i].id, r->pids[i].re); - if (r->pids[i].id == sid) { -// printf("%s: SID in %d!\n",__func__,sid); - return 1; - } - } - - return 0; -} - -int set_redirected(recv_info_t *r, int sid) -{ - int i; - for (i = 0; i < r->pidsnum; i++) { - if (r->pids[i].id == sid) - r->pids[i].re=1; - } - - return 0; -} -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -int stop_sid_mcgs(recv_info_t *r, int sid) -{ - pid_info_t *p; - pid_info_t *ptmp; - - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (p, ptmp, &r->slots.list, pid_info_t, list) { - if(p->run) { - if (p->pid.pid && p->pid.id == sid) { - //info ("Deallocating PID %d ID %d RE %d from slot %p\n", p->pid.pid,p->pid.id,p->pid.re, p); - deallocate_slot (r, p); - } - } - } - - return 0; -} -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -int rejoin_mcgs(recv_info_t *r, int sid) -{ - - int i; - for (i = 0; i < r->pidsnum; i++) { - unsigned int pid = r->pids[i].pid; - unsigned int id = r->pids[i].id; - if (!find_slot_by_pid (r, pid, id) && id == sid) { - char addr_str[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &r->mcg, addr_str, INET6_ADDRSTRLEN); - //info ("Rejoin mcg %s with no ID (PID %d ID %d RE %d)...\n", addr_str, pid, id, r->pids[i].re); - allocate_slot (r, &r->mcg, r->pids+i); - } - } - - return 0; -} -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -#endif -int recv_redirect (recv_info_t * r, struct in6_addr mcg) -{ - int ret = 0; - - pthread_mutex_lock (&lock); - dbg ("\n+++++++++++++\nIn redirect for receiver %p\n", r); -#if 0 - char addr_str[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &r->mcg, addr_str, INET6_ADDRSTRLEN); - info ("Redirect to ===> %s\n",addr_str); -#endif - int sid; - mcg_get_id(&mcg,&sid); - mcg_set_id(&mcg,0); - - //printf("SID in: %d\n",sid); - - if (!sid || ( !check_if_already_redirected(r, sid) && check_if_sid_in(r, sid)) ) { - if (sid == 0) { - stop_receive (r, 0); - r->mcg = mcg; - update_mcg (r, 0); - ret = 1; - } else { - //stop sid mcgs - stop_sid_mcgs(r, sid); - set_redirected(r, sid); - //start new mcgs with no sid - rejoin_mcgs(r, sid); - } - } - - dbg ("Redirect done for receiver %p\n", r); - pthread_mutex_unlock (&lock); - - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_stop (recv_info_t * r) -{ - pthread_mutex_lock (&lock); - stop_receive (r, 1); - pthread_mutex_unlock (&lock); - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_count_pids(recv_info_t * r) -{ - int i; - for (i=0; r->pids[i].pid!=-1; i++); - return i; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -static int recv_copy_pids(dvb_pid_t *dst, dvb_pid_t *src) -{ - int i; - for (i=0; (src[i].pid!=-1) && (i<(RECV_MAX_PIDS-1)); i++) { - dst[i]=src[i]; - } - if(i==(RECV_MAX_PIDS-1)) { - warn("Cannot receive more than %d pids\n", RECV_MAX_PIDS-1); - } - return i; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_pids (recv_info_t *r, dvb_pid_t *pids) -{ - pthread_mutex_lock (&lock); - if(pids) { - r->pidsnum=recv_copy_pids(r->pids, pids); - } - update_mcg(r, 1); - pthread_mutex_unlock (&lock); - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_pids_get (recv_info_t *r, dvb_pid_t *pids) -{ - pthread_mutex_lock (&lock); - if(pids) { - memcpy(pids, r->pids, sizeof(dvb_pid_t)*r->pidsnum); - pids[r->pidsnum].pid=-1; - } - pthread_mutex_unlock (&lock); - return r->pidsnum; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_pid_add (recv_info_t * r, dvb_pid_t *pid) -{ - int ret=0; - - pthread_mutex_lock (&lock); - pid_info_t *p=find_slot_by_pid (r, pid->pid, pid->id); - if(!p && (r->pidsnum < (RECV_MAX_PIDS-2))) { -#if defined(RE) - r->pids[r->pidsnum].re = 0; -#endif - r->pids[r->pidsnum]=*pid; - r->pids[++r->pidsnum].pid=-1; - update_mcg(r, 1); - ret = 1; - } - pthread_mutex_unlock (&lock); - - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_pid_del (recv_info_t * r, int pid) -{ - int i; - int ret=0; - - pthread_mutex_lock (&lock); - if(pid>=0) { - for (i = 0; i < r->pidsnum; i++) { - if(r->pids[i].pid==pid || ret) { - r->pids[i]=r->pids[i+1]; - ret=1; - } - } - if(ret) { - r->pidsnum--; - update_mcg(r, 1); - } - } else { - r->pids[0].pid=-1; - r->pidsnum=0; - update_mcg(r, 1); - } - pthread_mutex_unlock (&lock); - - return ret; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_tune (recv_info_t * r, fe_type_t type, int satpos, recv_sec_t *sec, struct dvb_frontend_parameters *fe_parms, dvb_pid_t *pids) -{ - pthread_mutex_lock (&lock); - dbg ("kick_tune receiver %p\n", r); - - stop_receive (r, 1); - if(fe_parms) { - r->fe_parms=*fe_parms; - } - if(sec) { - r->sec=*sec; - } - if(pids) { - r->pidsnum=recv_copy_pids(r->pids, pids); - } - - fe_parms_to_mcg (&r->mcg, STREAMING_PID, type, &r->sec, &r->fe_parms, 0); - mcg_set_satpos (&r->mcg, satpos); - - update_mcg (r, 1); - - pthread_mutex_unlock (&lock); - dbg ("kick_tune done receiver %p\n", r); - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -recv_info_t *recv_add (void) -{ - recv_info_t *r=(recv_info_t *)malloc(sizeof(recv_info_t)); - if(!r) { - err ("Cannot get memory for receiver\n"); - } - memset (r, 0, sizeof (recv_info_t)); - r->head=&receivers; - dvbmc_list_init (&r->slots.list); - pthread_mutex_lock (&lock); - dvbmc_list_add_head(&receivers.list, &r->list); - pthread_mutex_unlock (&lock); - return r; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -void recv_del (recv_info_t *r) -{ - pthread_mutex_lock (&lock); - stop_receive (r, 1); - dvbmc_list_remove(&r->list); - pthread_mutex_unlock (&lock); - free(r); -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_init(char *intf, int p) -{ - LIBXML_TEST_VERSION; -#ifdef WIN32 - WSADATA wsaData; - if (WSAStartup (MAKEWORD (2, 2), &wsaData) != 0) { - err ("WSAStartup failed\n"); - } -#endif - - if(intf) { - strcpy(iface, intf); - } else { - iface[0]=0; - } - if(p) { - port=p; - } - - g_conf = (struct conf*) malloc (sizeof (struct conf)); - if (!g_conf) { - err ("Cannot get memory for configuration\n"); - exit (-1); - } - - memset (g_conf, 0, sizeof (struct conf)); - update_interfaces (NULL); - - if (!strlen (iface)) { - struct intnode *intn = int_find_first (); - if (intn) { - strcpy (iface, intn->name); - } else { - warn ("Cannot find any usable network interface\n"); - if(g_conf->ints) { - free (g_conf->ints); - } - #ifdef PTW32_STATIC_LIB - pthread_win32_process_detach_np(); - #endif - free(g_conf); - return -1; - } - } - - dvbmc_list_init (&receivers.list); - pthread_mutex_init (&lock, NULL); - receivers.head=&receivers; -#if ! defined WIN32 || defined __CYGWIN__ - signal (SIGUSR1, &sig_handler); -#endif -#ifdef PTW32_STATIC_LIB - pthread_win32_process_attach_np(); -#endif - pthread_create (&recv_tra_thread, NULL, recv_tra, NULL); - pthread_create (&recv_tca_thread, NULL, recv_tca, NULL); - - return 0; -} - -//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -int recv_exit(void) -{ - recv_info_t *r; - recv_info_t *rtmp; - if(pthread_exist(recv_tra_thread) && !pthread_cancel (recv_tra_thread)) { - pthread_join (recv_tra_thread, NULL); - } - if(pthread_exist(recv_tca_thread) && !pthread_cancel (recv_tca_thread)) { - pthread_join (recv_tca_thread, NULL); - } - DVBMC_LIST_FOR_EACH_ENTRY_SAFE (r, rtmp, &receivers.head->list, recv_info_t, list) { - recv_del(r); - } -#if ! defined WIN32 || defined __CYGWIN__ - signal (SIGUSR1, NULL); -#endif - g_conf->maxinterfaces=0; - if(g_conf->ints) { - free (g_conf->ints); - } -#ifdef PTW32_STATIC_LIB - pthread_win32_process_detach_np(); -#endif - free(g_conf); - xmlCleanupParser (); - xmlMemoryDump (); - return 0; -} diff --git a/mcast/client/.svn/text-base/recv_tv.h.svn-base b/mcast/client/.svn/text-base/recv_tv.h.svn-base deleted file mode 100644 index 9feb673..0000000 --- a/mcast/client/.svn/text-base/recv_tv.h.svn-base +++ /dev/null @@ -1,96 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - * modified by Reel Multimedia, http://www.reel-multimedia.com, info@reel-multimedia.com - * 01042010 DL: use a single thread for reading from network layer (uses less resources) - * - */ - -#ifndef __RECV_TV_H__ -#define __RECV_TV__H__ - -#define REP_TIME 1000000 -#define MAX_DROP_NUM 5 -#define RECV_MAX_PIDS 256 - -//typedef struct recv_info recv_info_t; - -typedef struct { - int pid; - int id; - int priority; -#if 1 - int re; -#endif -} dvb_pid_t; - -typedef struct pid_info -{ - struct list list; - UDPContext *s; - dvb_pid_t pid; - struct in6_addr mcg; - recv_info_t *recv; - pthread_t recv_ts_thread; - int run; - int dropped; - int cont_old; -} pid_info_t; - -struct recv_info -{ - struct list list; - recv_info_t *head; - pid_info_t slots; - int lastalloc; - pthread_t recv_ten_thread; - struct in6_addr mcg; - int ten_run; - - dvb_pid_t pids[RECV_MAX_PIDS]; - int pidsnum; - recv_sec_t sec; - struct dvb_frontend_parameters fe_parms; - - recv_festatus_t fe_status; - - int (*handle_ten) (tra_t *ten, void *context); - void *handle_ten_context; - - int (*handle_ts) (unsigned char *buffer, size_t len, void *context); - void *handle_ts_context; -}; - -// Internal Stuff -int recv_redirect (recv_info_t * r, struct in6_addr mcg); -int count_all_pids (recv_info_t * receivers); -int count_receivers(recv_info_t *receivers); - -// PID-Handling -DLL_SYMBOL int recv_pid_add (recv_info_t * r, dvb_pid_t *pid); -DLL_SYMBOL int recv_pid_del (recv_info_t * r, int pid); -DLL_SYMBOL int recv_pids (recv_info_t * r, dvb_pid_t *pids); -DLL_SYMBOL int recv_pids_get (recv_info_t *r, dvb_pid_t *pids); -DLL_SYMBOL int recv_show_all_pids (recv_info_t * receivers); -void recv_show_pids(recv_info_t *r); - -// Complete Tune -DLL_SYMBOL int recv_tune (recv_info_t * r, fe_type_t type, int satpos, recv_sec_t *sec, struct dvb_frontend_parameters *fe_parms, dvb_pid_t *pids); - -// Receiver Handling -DLL_SYMBOL recv_info_t *recv_add (void); -DLL_SYMBOL void recv_del (recv_info_t *r); -DLL_SYMBOL int recv_stop (recv_info_t * r); -DLL_SYMBOL int register_ts_handler (recv_info_t * r, int (*p)(unsigned char *, size_t, void *), void *c); - -// Module global functions -DLL_SYMBOL int recv_init(char *intf, int p); -DLL_SYMBOL int recv_exit(void); - - -int find_any_slot_by_mcg (recv_info_t * receivers, struct in6_addr *mcg); - -#endif diff --git a/mcast/client/.svn/text-base/satlists.c.svn-base b/mcast/client/.svn/text-base/satlists.c.svn-base deleted file mode 100644 index 6dccb39..0000000 --- a/mcast/client/.svn/text-base/satlists.c.svn-base +++ /dev/null @@ -1,133 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -int satellite_find_by_diseqc (satellite_reference_t * ref, recv_sec_t *sec, struct dvb_frontend_parameters *fep, int mode) -{ - int i, j, k, l; - netceiver_info_list_t *nc_list=nc_get_list(); - char buf[6]; - memcpy(buf,"\xe0\x10\x6f\x0\x0\x0",6); - int freq = fep->frequency/1000; - int ret=0; - int explicit_position=NO_SAT_POS; - - if (sec->diseqc_cmd.msg_len > 6 || !ref || !freq) { - return 0; - } - - for (l = 0; l < nc_list->nci_num; l++) { - netceiver_info_t *nci = nc_list->nci + l; - - for (i = 0; i < nci->sat_list_num; i++) { - satellite_list_t *sat_list = nci->sat_list + i; - - for (j = 0; j < sat_list->sat_num; j++) { - satellite_info_t *sat = sat_list->sat + j; - - for (k = 0; k < sat->comp_num; k++) { - satellite_component_t *comp = sat->comp + k; - int oldpos=sat->SatPos^1800; - int newpos=(sec->diseqc_cmd.msg[3]+(sec->diseqc_cmd.msg[4]<<8))^1800; - // prepare synthetic messsage from satpos and pol./volt. - buf[3]=oldpos; - buf[4]=oldpos>>8; - buf[5]=(comp->Polarisation&1)<<1 | !(comp->sec.tone_mode&1); - dbg("compare: old/new %i/%i, %02x %02x %02x %02x %02x %02x <-> %02x %02x %02x %02x %02x %02x\n", oldpos, newpos, - buf[0]&0xff,buf[1]&0xff,buf[2]&0xff,buf[3]&0xff, buf[4]&0xff, buf[5]&0xff, - sec->diseqc_cmd.msg[0], sec->diseqc_cmd.msg[1], sec->diseqc_cmd.msg[2], - sec->diseqc_cmd.msg[3], sec->diseqc_cmd.msg[4], sec->diseqc_cmd.msg[5]); - - dbg("%i mode %i, len %i, %i > %i , %i < %i, %i < %i, %i > %i\n",sat->type, - mode, sec->diseqc_cmd.msg_len, freq, comp->RangeMin, freq, comp->RangeMax, - sat->SatPosMin, newpos , sat->SatPosMax, newpos); - - // Check if coded sat pos matches - if ((sat->type==SAT_SRC_LNB || sat->type==SAT_SRC_UNI) && mode == 0 && sec->diseqc_cmd.msg_len>0 && - (freq >= comp->RangeMin) && (freq <= comp->RangeMax) && - !memcmp (buf, &sec->diseqc_cmd.msg, sec->diseqc_cmd.msg_len)) { - dbg("Satpos MATCH\n"); - ret=1; - } - // check for rotor - else if (sat->type==SAT_SRC_ROTOR && mode == 0 && sec->diseqc_cmd.msg_len>0 && - (freq >= comp->RangeMin) && (freq <= comp->RangeMax) && - (buf[5]==sec->diseqc_cmd.msg[5]) && - (sat->SatPosMin<=newpos && sat->SatPosMax>=newpos)) { - dbg("ROTOR MATCH %i\n",newpos); - explicit_position=newpos; - ret=1; - } - // check if given diseqc matches raw tuner diseqc - else if (mode == 1 && sec->diseqc_cmd.msg_len>0 && !memcmp (&comp->sec.diseqc_cmd.msg, &sec->diseqc_cmd.msg, sec->diseqc_cmd.msg_len)) { - dbg("Diseqc 1.0 Match %02x %02x %02x %02x %02x %02x\n", - comp->sec.diseqc_cmd.msg[0], comp->sec.diseqc_cmd.msg[1], comp->sec.diseqc_cmd.msg[2], - comp->sec.diseqc_cmd.msg[3], comp->sec.diseqc_cmd.msg[4], comp->sec.diseqc_cmd.msg[5]); - ret=1; - }else if (mode == 2 && (fe_sec_voltage_t)comp->Polarisation == sec->voltage && comp->sec.tone_mode== sec->tone_mode && comp->sec.mini_cmd == sec->mini_cmd) { - dbg("Legacy Match, pol %i, tone %i, cmd %i\n",comp->Polarisation,comp->sec.tone_mode,comp->sec.mini_cmd); - ret=1; - } - if (ret) { - ref->netceiver = l; - ref->sat_list = i; - ref->sat = j; - ref->comp = k; - ref->position=explicit_position; - info("Sat found: %d %d %d %d, rotor %d\n",l,i,j,k, explicit_position); - return ret; - } - } - } - } - } - return ret; -} - -int satellite_get_pos_by_ref (satellite_reference_t * ref) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - netceiver_info_t *nci = nc_list->nci + ref->netceiver; - satellite_list_t *sat_list = nci->sat_list + ref->sat_list; - satellite_info_t *sat = sat_list->sat + ref->sat; - if (sat->type==SAT_SRC_ROTOR && ref->position!=NO_SAT_POS) { - return ref->position; - } - return sat->SatPos; -} - -int satellite_get_lof_by_ref (satellite_reference_t * ref) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - netceiver_info_t *nci = nc_list->nci + ref->netceiver; - satellite_list_t *sat_list = nci->sat_list + ref->sat_list; - satellite_info_t *sat = sat_list->sat + ref->sat; - satellite_component_t *comp = sat->comp + ref->comp; - return comp->LOF; -} - -recv_sec_t *satellite_find_sec_by_ref (satellite_reference_t * ref) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - netceiver_info_t *nci = nc_list->nci + ref->netceiver; - satellite_list_t *sat_list = nci->sat_list + ref->sat_list; - satellite_info_t *sat = sat_list->sat + ref->sat; - satellite_component_t *comp = sat->comp + ref->comp; - return &comp->sec; -} - -polarisation_t satellite_find_pol_by_ref (satellite_reference_t * ref) -{ - netceiver_info_list_t *nc_list=nc_get_list(); - netceiver_info_t *nci = nc_list->nci + ref->netceiver; - satellite_list_t *sat_list = nci->sat_list + ref->sat_list; - satellite_info_t *sat = sat_list->sat + ref->sat; - satellite_component_t *comp = sat->comp + ref->comp; - return comp->Polarisation; -} diff --git a/mcast/client/.svn/text-base/sock_test.c.svn-base b/mcast/client/.svn/text-base/sock_test.c.svn-base deleted file mode 100644 index 1b4fd39..0000000 --- a/mcast/client/.svn/text-base/sock_test.c.svn-base +++ /dev/null @@ -1,93 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -#define SHM_WAIT_RESPONSE(cmd) { cmd->state=SHM_REQUEST; send (sock_comm, &sock_cmd, sizeof(shm_cmd_t), 0); recv (sock_comm, &sock_cmd, sizeof(shm_cmd_t), 0); if (cmd->state == SHM_ERROR) warn ("SHM parameter error\n");} - -int main (int argc, char **argv) -{ - int sock_comm; - int sock_name_len = 0; - struct sockaddr sock_name; - shm_cmd_t sock_cmd; - shm_cmd_t *shm_cmd=&sock_cmd; - sock_name.sa_family = AF_UNIX; - - strcpy(sock_name.sa_data, SOCK_NAMESPACE); - sock_name_len = strlen(sock_name.sa_data) + sizeof(sock_name.sa_family); - - if((sock_comm = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) - { - warn ("socket create failure %d\n", errno); - return -1; - } - - if (connect(sock_comm, &sock_name, sock_name_len) < 0) { - err ("connect failure\n"); - } - - shm_cmd->cmd=SHM_GET_NC_NUM; - SHM_WAIT_RESPONSE(shm_cmd); - - printf("nc_num: %d\n", shm_cmd->parm[SHM_PARM_NC_NUM]); - int nc_num=shm_cmd->parm[SHM_PARM_NC_NUM]; - int i; - for(i=0;i<nc_num;i++) { - shm_cmd->cmd=SHM_GET_NC_INFO; - shm_cmd->parm[SHM_PARM_NC_NUM]=i; - SHM_WAIT_RESPONSE(shm_cmd); - printf("nc_info.uuid: %s nc_info.lastseen: %u nc_info.tuner_num: %d\n", shm_cmd->u.nc_info.uuid, (unsigned int) shm_cmd->u.nc_info.lastseen, shm_cmd->u.nc_info.tuner_num); - int j; - int tuner_num=shm_cmd->u.nc_info.tuner_num; - for(j=0;j<tuner_num;j++) { - shm_cmd->cmd=SHM_GET_TUNER_INFO; - shm_cmd->parm[SHM_PARM_TUNER_NUM]=j; - SHM_WAIT_RESPONSE(shm_cmd); - printf("tuner_info.fe_info.name: %s\n",shm_cmd->u.tuner_info.fe_info.name); - } - - - int sat_list_num=shm_cmd->u.nc_info.sat_list_num; - for(j=0;j<sat_list_num;j++) { - shm_cmd->cmd=SHM_GET_SAT_LIST_INFO; - shm_cmd->parm[SHM_PARM_NC_NUM]=i; - shm_cmd->parm[SHM_PARM_SAT_LIST_NUM]=j; - SHM_WAIT_RESPONSE(shm_cmd); - - printf("sat_list_info.Name: %s sat_list_info.sat_num: %d\n", shm_cmd->u.sat_list.Name, shm_cmd->u.sat_list.sat_num); - - int sat_num=shm_cmd->u.sat_list.sat_num; - int k; - for(k=0;k<sat_num;k++) { - shm_cmd->cmd=SHM_GET_SAT_INFO; - shm_cmd->parm[SHM_PARM_SAT_LIST_NUM]=j; - shm_cmd->parm[SHM_PARM_SAT_NUM]=k; - SHM_WAIT_RESPONSE(shm_cmd); - printf("sat_info.Name: %s\n",shm_cmd->u.sat_info.Name); - } - } - } - - while (1) { - shm_cmd->cmd=SHM_GET_TRA_NUM; - SHM_WAIT_RESPONSE(shm_cmd); - - printf("tra_num: %d\n", shm_cmd->parm[SHM_PARM_TRA_NUM]); - int tra_num=shm_cmd->parm[SHM_PARM_TRA_NUM]; - for(i=0;i<tra_num;i++) { - shm_cmd->cmd=SHM_GET_TRA_INFO; - shm_cmd->parm[SHM_PARM_TRA_NUM]=i; - SHM_WAIT_RESPONSE(shm_cmd); - printf("tra uuid: %s lastseen: %u lock:%d str:%d snr:%d ber:%d\n", shm_cmd->u.tra.uuid, (unsigned int) shm_cmd->u.tra.lastseen, shm_cmd->u.tra.s.st, shm_cmd->u.tra.s.strength, shm_cmd->u.tra.s.snr, shm_cmd->u.tra.s.ber); - } - sleep(2); - } - return 0; -} - diff --git a/mcast/client/.svn/text-base/tca_handler.c.svn-base b/mcast/client/.svn/text-base/tca_handler.c.svn-base deleted file mode 100644 index 3817332..0000000 --- a/mcast/client/.svn/text-base/tca_handler.c.svn-base +++ /dev/null @@ -1,84 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -static netceiver_info_list_t nc_list; -static pthread_mutex_t nci_lock=PTHREAD_MUTEX_INITIALIZER; - -static netceiver_info_t *nci_find_unique (netceiver_info_list_t * ncl, char *uuid) -{ - int i; - for (i = 0; i < ncl->nci_num; i++) { - if (!strcmp (ncl->nci[i].uuid, uuid)) { - return ncl->nci + i; - } - } - return NULL; -} - -static void nci_free(netceiver_info_t * nc_info) -{ - int i, j; - for (i = 0; i < nc_info->sat_list_num; i++) { - satellite_list_t *sat_list = nc_info->sat_list + i; - - for (j = 0; j < sat_list->sat_num; j++) { - satellite_info_t *sat = sat_list->sat + j; - - free (sat->comp); - } - free (sat_list->sat); - } - free (nc_info->sat_list); - free (nc_info->tuner); -} - -static int nci_add_unique (netceiver_info_list_t * ncl, netceiver_info_t * nci) -{ - netceiver_info_t *ncf=nci_find_unique (ncl, nci->uuid); - if (!ncf) { - ncl->nci = (netceiver_info_t *) realloc (ncl->nci, sizeof (netceiver_info_t) * (ncl->nci_num + 1)); - if (!ncl->nci) { - err ("Cannot get memory for netceiver_info\n"); - } - memcpy (ncl->nci + ncl->nci_num, nci, sizeof (netceiver_info_t)); - (ncl->nci+ncl->nci_num)->lastseen = time(NULL); - ncl->nci_num++; - return 1; - } else { - nci_free(ncf); - memcpy(ncf, nci, sizeof (netceiver_info_t)); - ncf->lastseen = time(NULL); - } - return 0; -} - -netceiver_info_list_t *nc_get_list(void) -{ - return &nc_list; -} - -int nc_lock_list(void) -{ - return pthread_mutex_lock (&nci_lock); -} - -int nc_unlock_list(void) -{ - return pthread_mutex_unlock (&nci_lock); -} - -void handle_tca (netceiver_info_t * nc_info) -{ - nc_lock_list(); - if (nci_add_unique (&nc_list, nc_info)) { - dbg ("New TCA from %s added\n", nc_info->uuid); - } - nc_unlock_list(); -} diff --git a/mcast/client/.svn/text-base/tca_handler.h.svn-base b/mcast/client/.svn/text-base/tca_handler.h.svn-base deleted file mode 100644 index 1803b28..0000000 --- a/mcast/client/.svn/text-base/tca_handler.h.svn-base +++ /dev/null @@ -1,18 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -typedef struct -{ - netceiver_info_t *nci; - int nci_num; -} netceiver_info_list_t; - -DLL_SYMBOL netceiver_info_list_t *nc_get_list(void); -DLL_SYMBOL int nc_lock_list(void); -DLL_SYMBOL int nc_unlock_list(void); -void handle_tca (netceiver_info_t * nc_info); diff --git a/mcast/client/.svn/text-base/tools.c.svn-base b/mcast/client/.svn/text-base/tools.c.svn-base deleted file mode 100644 index d249f01..0000000 --- a/mcast/client/.svn/text-base/tools.c.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/tools.c
\ No newline at end of file diff --git a/mcast/client/.svn/text-base/tra_handler.c.svn-base b/mcast/client/.svn/text-base/tra_handler.c.svn-base deleted file mode 100644 index 8148a1f..0000000 --- a/mcast/client/.svn/text-base/tra_handler.c.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -#include "headers.h" - -static tra_info_t tra_list; - -static tra_t *tra_find_unique (tra_info_t *trl, char *uuid) -{ - int i; - for (i = 0; i < trl->tra_num; i++) { - if (!strcmp (trl->tra[i].uuid, uuid)) { - return trl->tra + i; - } - } - return NULL; -} - -static int tra_add_unique (tra_info_t *trl, tra_t *tri) -{ - tra_t *trf=tra_find_unique (trl, tri->uuid); - if (!trf) { - trl->tra = (tra_t *) realloc (trl->tra, sizeof (tra_t) * (trl->tra_num + 1)); - if (!trl->tra) { - err ("Cannot get memory for netceiver_info\n"); - } - trf = trl->tra + trl->tra_num; - trl->tra_num++; - } - memcpy (trf, tri, sizeof (tra_t)); - return 1; -} - -tra_info_t *tra_get_list(void) -{ - return &tra_list; -} - -int handle_tra(tra_info_t *tra_info) -{ - int i; - if(tra_info->tra_num) { - for (i = 0; i < tra_info->tra_num; i++) { - tra_add_unique (&tra_list, tra_info->tra+i); - } - memcpy(tra_list.cam, tra_info->cam, MAX_CAMS*sizeof(cam_info_t)); - free (tra_info->tra); - return 1; - } - return 0; -} diff --git a/mcast/client/.svn/text-base/tra_handler.h.svn-base b/mcast/client/.svn/text-base/tra_handler.h.svn-base deleted file mode 100644 index fe5ac2c..0000000 --- a/mcast/client/.svn/text-base/tra_handler.h.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -/* - * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de - * - * See the COPYING file for copyright information and - * how to reach the author. - * - */ - -DLL_SYMBOL tra_info_t *tra_get_list(void); -int handle_tra(tra_info_t *tra_info); diff --git a/mcast/client/.svn/text-base/win32.svn-base b/mcast/client/.svn/text-base/win32.svn-base deleted file mode 100644 index c90f0e1..0000000 --- a/mcast/client/.svn/text-base/win32.svn-base +++ /dev/null @@ -1 +0,0 @@ -link ../common/win32
\ No newline at end of file diff --git a/mcast/client/mingw/.svn/entries b/mcast/client/mingw/.svn/entries deleted file mode 100644 index 23db38d..0000000 --- a/mcast/client/mingw/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -18963 -svn://reelbox.org/testing/src/vdr-plugins/src/mcli-1/mcast/client/mingw -svn://reelbox.org - - - -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - -12be777f-adf9-0310-842f-e37ecc4c7426 - -Makefile -file - - - - -2012-09-27T17:22:49.674848Z -deb39207a48338fe8c29c810cded35f8 -2011-07-12T13:36:23.313379Z -16905 -rollercoaster - - - - - - - - - - - - - - - - - - - - - -1469 - -build.cmd -file - - - - -2012-09-27T17:22:49.674848Z -f09be9592dd9c22b707bba5dc4591931 -2011-08-18T10:09:14.813360Z -17158 -dirk - - - - - - - - - - - - - - - - - - - - - -44 - diff --git a/mcast/client/mingw/.svn/text-base/Makefile.svn-base b/mcast/client/mingw/.svn/text-base/Makefile.svn-base deleted file mode 100644 index 356ecf3..0000000 --- a/mcast/client/mingw/.svn/text-base/Makefile.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -PATH:=/MinGW/bin/:$(PATH) -CC:=gcc - -#Comment this out to disable debugging output -DEBUG=1 -#VERBOSE=1 -#API_SOCK=1 - -DEFS=-DCLIENT -DLIBRARY -DWIN32 -D_REENTRANT -D_GNU_SOURCE - -ifdef VERBOSE -DEFS:= $(DEFS) -DDEBUG -DEBUG=1 -endif - -CFLAGS:= $(DEFS) -Wall -Iwin32/include $(CFLAGS) -LDFLAGS:= -Lwin32/lib $(LDFLAGS) -LDLIBS:= -lwsock32 -liphlpapi -lpthreadGC2 -lxml2 -lzdll - -ifdef DEBUG -LDFLAGS:= $(LDFLAGS) -g -CFLAGS:= $(CFLAGS) -g -else -#CFLAGS:= $(CFLAGS) -Os -endif - -MCLI = mcli -MCLI_OBJS = mld_common.o mld_client.o mld_reporter.o mcast.o recv_tv.o recv_ccpp.o tools.o tca_handler.o tra_handler.o satlists.o interfaces.o inet_pton.o inet_ntop.o inet_aton.o -MCLI_SOBJS := main.o dummy_client.o - -all: lib$(MCLI) - -lib$(MCLI): $(MCLI_OBJS) - $(CC) $(LDFLAGS) -shared -o $@.dll $(MCLI_OBJS) $(LDLIBS) -Wl,--out-implib,$@.a -Wl,--output-def,$@.def -# $(AR) $(ARFLAGS) $@.a $(MCLI_OBJS) - @copy /b $@.dll win32\\lib\\ - @copy /b $@.a win32\\lib\\ - @copy /b $@.def win32\\lib\\ - lib.exe /def:$@.def /machine:x86 /out:win32\\lib\\$@.lib - @echo "You can find all libraries in directory win32\lib" - -$(MCLI): $(MCLI_OBJS) $(MCLI_SOBJS) - $(CC) $(LDFLAGS) -o $@ $(MCLI_OBJS) $(MCLI_SOBJS) $(LDLIBS) - -$(MCLI)-shared: lib$(MCLI) - $(CC) -c $(CFLAGS) -ULIBRARY -o main.o main.c - $(CC) -c $(CFLAGS) -ULIBRARY -o dummy_client.o dummy_client.c - $(CC) $(LDFLAGS) -o $@ $(MCLI_SOBJS) $(LDLIBS) -lmcli - -clean: - @del $(MCLI)*.exe lib$(MCLI).* *.lib *.o *.la *~ - -%.o: %.c - $(CC) -c $(CFLAGS) -o $@ $< - diff --git a/mcast/client/mingw/.svn/text-base/build.cmd.svn-base b/mcast/client/mingw/.svn/text-base/build.cmd.svn-base deleted file mode 100644 index 3d3efdb..0000000 --- a/mcast/client/mingw/.svn/text-base/build.cmd.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -@set PATH=c:\MinGw\bin;%PATH% -@mingw32-make |