summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2011-11-08 21:30:47 +0000
committerChristian Pointner <equinox@mur.at>2011-11-08 21:30:47 +0000
commita54ea9d0d64abcc4a81b685c0e3d8161f98b0c88 (patch)
treeaf157964ab8a4c472b1a8b99c44347bd3f815e19 /tools
parentadded component diagram to docs (diff)
gencrx and gst-dtmf commands
git-svn-id: https://svn.spreadspace.org/mur.sat@186 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'tools')
-rw-r--r--tools/dtmf/Makefile21
-rwxr-xr-xtools/dtmf/gencrx.c116
-rw-r--r--tools/dtmf/gst-dtmf.c2
3 files changed, 128 insertions, 11 deletions
diff --git a/tools/dtmf/Makefile b/tools/dtmf/Makefile
index c85dae8..9c98516 100644
--- a/tools/dtmf/Makefile
+++ b/tools/dtmf/Makefile
@@ -36,15 +36,16 @@ CFLAGS := -g -O2 $(GST_CFLAGS)
LDFLAGS := -g -Wall -O2 $(GST_LDFLAGS)
STRIP := strip
-EXECUTABLE := gst-dtmf
+EXECUTABLES := gst-dtmf gencrx
-C_OBJS := gst-dtmf.o
+GST_DTMF_OBJS := gst-dtmf.o
+GENCRX_OBJS := gencrx.o
-C_SRCS := $(C_OBJS:%.o=%.c)
+C_SRCS := $(GST_DTMF_OBJS:%.o=%.c) $(GENCRX_OBJS:%.o=%.c)
.PHONY: clean
-all: $(EXECUTABLE)
+all: $(EXECUTABLES)
%.d: %.c
@set -e; rm -f $@; \
@@ -56,17 +57,17 @@ ifneq ($(MAKECMDGOALS),distclean)
-include $(C_SRCS:%.c=%.d)
endif
-$(EXECUTABLE): $(C_OBJS)
- $(CC) $(C_OBJS) -o $@ $(LDFLAGS)
+gst-dtmf: $(GST_DTMF_OBJS)
+ $(CC) $(GST_DTMF_OBJS) -o $@ $(LDFLAGS)
+
+gencrx: $(GENCRX_OBJS)
+ $(CC) $(GENCRX_OBJS) -o $@ $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -c $<
-strip: $(EXECUTABLE)
- $(STRIP) -s $(EXECUTABLE)
-
clean:
rm -f *.o
rm -f *.d
rm -f *.d.*
- rm -f $(EXECUTABLE)
+ rm -f $(EXECUTABLES)
diff --git a/tools/dtmf/gencrx.c b/tools/dtmf/gencrx.c
new file mode 100755
index 0000000..1c1f47f
--- /dev/null
+++ b/tools/dtmf/gencrx.c
@@ -0,0 +1,116 @@
+/*
+ * mur.sat
+ *
+ * Somewhen in the year 2011, mur.at will have a nano satellite launched
+ * into a low earth orbit (310 km above the surface of our planet). The
+ * satellite itself is a TubeSat personal satellite kit, developed and
+ * launched by interorbital systems. mur.sat is a joint venture of mur.at,
+ * ESC im Labor and realraum.
+ *
+ * Please visit the project hompage at sat.mur.at for further information.
+ *
+ *
+ * Copyright (C) 2011 Christian Pointner <equinox@mur.at>
+ *
+ * This file is part of mur.sat.
+ *
+ * mur.sat is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * mur.sat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with mur.sat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <termios.h>
+#include <ctype.h>
+
+char sign2bin(c)
+{
+ switch(c) {
+ case 'D': return 0;
+ case '1': return 1;
+ case '2': return 2;
+ case '3': return 3;
+ case '4': return 4;
+ case '5': return 5;
+ case '6': return 6;
+ case '7': return 7;
+ case '8': return 8;
+ case '9': return 9;
+ case '0': return 10;
+ case '*': return 11;
+ case '#': return 12;
+ case 'A': return 13;
+ case 'B': return 14;
+ case 'C': return 15;
+ }
+ return 0;
+}
+
+char bin2sign(c)
+{
+ switch(c) {
+ case 0: return 'D';
+ case 1: return '1';
+ case 2: return '2';
+ case 3: return '3';
+ case 4: return '4';
+ case 5: return '5';
+ case 6: return '6';
+ case 7: return '7';
+ case 8: return '8';
+ case 9: return '9';
+ case 10: return '0';
+ case 11: return '*';
+ case 12: return '#';
+ case 13: return 'A';
+ case 14: return 'B';
+ case 15: return 'C';
+ }
+ return 0;
+}
+
+void send_crx_string(c)
+{
+ c = toupper(c);
+ if(c == '#' || c == '*' ||
+ (c >= '0' && c <= '9') ||
+ (c >= 'A' && c <= 'D') ) {
+ char cs = bin2sign(0x0A ^ sign2bin(c));
+ int ret = write(1, &"#42", 3);
+ ret = write(1, &c, 1);
+ ret = write(1, &cs, 1);
+ ret = write(1, &" ", 1);
+ }
+}
+
+int main (int argc, char *argv[])
+{
+ struct termios T;
+ tcgetattr(0, &T);
+ T.c_lflag &= ~ECHO;
+ T.c_lflag &= ~ICANON;
+ tcsetattr(0, TCSANOW, &T);
+
+ char c;
+ for(;;) {
+ int ret = read(0, &c, 1);
+ if(!ret) break;
+ if(ret == 1) send_crx_string(c);
+ else {
+ perror("read error: ");
+ return 1;
+ }
+ }
+
+ return 0;
+}
diff --git a/tools/dtmf/gst-dtmf.c b/tools/dtmf/gst-dtmf.c
index 11ff679..97d832f 100644
--- a/tools/dtmf/gst-dtmf.c
+++ b/tools/dtmf/gst-dtmf.c
@@ -177,7 +177,7 @@ int main (int argc, char *argv[])
loop = g_main_loop_new (NULL, FALSE);
/* Create gstreamer elements */
- pipeline = gst_pipeline_new ("dtmftest");
+ pipeline = gst_pipeline_new ("gst-dtmf");
source = gst_element_factory_make ("dtmfsrc", "source");
sink = gst_element_factory_make ("autoaudiosink", "output");