r282 - in trunk/software/gsm0710muxd: . src

smartphones-commits at lists.linuxtogo.org smartphones-commits at lists.linuxtogo.org
Tue Apr 29 15:19:29 CEST 2008


Author: emdete
Date: 2008-04-29 15:19:27 +0200 (Tue, 29 Apr 2008)
New Revision: 282

Modified:
   trunk/software/gsm0710muxd/autogen.sh
   trunk/software/gsm0710muxd/configure.ac
   trunk/software/gsm0710muxd/src/Makefile.am
   trunk/software/gsm0710muxd/src/gsm0710muxd.c
   trunk/software/gsm0710muxd/src/gsm0710muxd.vapi
   trunk/software/gsm0710muxd/src/mux.xml
   trunk/software/gsm0710muxd/src/muxercontrol.c
   trunk/software/gsm0710muxd/src/muxercontrol.h
   trunk/software/gsm0710muxd/src/muxercontrol.vala
Log:
added patches from marcel


Modified: trunk/software/gsm0710muxd/autogen.sh
===================================================================
--- trunk/software/gsm0710muxd/autogen.sh	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/autogen.sh	2008-04-29 13:19:27 UTC (rev 282)
@@ -5,10 +5,9 @@
 
 touch README
 
-echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
+echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || exit 1
 echo "Running autoheader..." ; autoheader || exit 1
 echo "Running autoconf..." ; autoconf || exit 1
-echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
 echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
 
 if [ -z "$NOCONFIGURE" ]; then

Modified: trunk/software/gsm0710muxd/configure.ac
===================================================================
--- trunk/software/gsm0710muxd/configure.ac	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/configure.ac	2008-04-29 13:19:27 UTC (rev 282)
@@ -17,6 +17,8 @@
 AC_PROG_CC
 AC_PROG_INSTALL
 
+AC_PATH_PROG(VALAC, [valac])
+
 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.10, dummy=yes,
 				AC_MSG_ERROR(libglib-2.0 is required))
 AC_SUBST(DBUS_CFLAGS)

Modified: trunk/software/gsm0710muxd/src/Makefile.am
===================================================================
--- trunk/software/gsm0710muxd/src/Makefile.am	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/Makefile.am	2008-04-29 13:19:27 UTC (rev 282)
@@ -11,11 +11,15 @@
 
 nodist_gsm0710muxd_SOURCES = $(BUILT_SOURCES)
 
-CLEANFILES = $(BUILT_SOURCES)
+CLEANFILES = mux-glue.h
 
-EXTRA_DIST = mux.xml muxercontrol.h muxercontrol.c muxercontrol.vala
+EXTRA_DIST = mux.xml muxercontrol.vala gsm0710muxd.vapi \
+				muxercontrol.h muxercontrol.c
 
 MAINTAINERCLEANFILES = Makefile.in
 
 mux-glue.h: mux.xml
 	$(DBUS_BINDING_TOOL) --prefix=mux --mode=glib-server --output=$@ $<
+
+vala: muxercontrol.vala
+	$(VALAC) --vapidir=$(top_srcdir)/src --pkg=gsm0710muxd --pkg=dbus-glib-1 --ccode $<

Modified: trunk/software/gsm0710muxd/src/gsm0710muxd.c
===================================================================
--- trunk/software/gsm0710muxd/src/gsm0710muxd.c	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/gsm0710muxd.c	2008-04-29 13:19:27 UTC (rev 282)
@@ -205,7 +205,7 @@
 ////////////////////////////////// constants & globals
 static unsigned char close_channel_cmd[] = { GSM0710_CONTROL_CLD | GSM0710_CR, GSM0710_EA | (0 << 1) };
 static unsigned char test_channel_cmd[] = { GSM0710_CONTROL_TEST | GSM0710_CR, GSM0710_EA | (6 << 1), 'P', 'I', 'N', 'G', '\r', '\n', };
-static unsigned char psc_channel_cmd[] = { GSM0710_CONTROL_PSC | GSM0710_CR, GSM0710_EA | (0 << 1), };
+//static unsigned char psc_channel_cmd[] = { GSM0710_CONTROL_PSC | GSM0710_CR, GSM0710_EA | (0 << 1), };
 static unsigned char wakeup_sequence[] = { GSM0710_FRAME_FLAG, };
 // crc table from gsm0710 spec
 static const unsigned char r_crctable[] = {//reversed, 8-bit, poly=0x07
@@ -234,7 +234,6 @@
 	0x57, 0xC6, 0xB3, 0x22, 0x50, 0xC1, 0xBA, 0x2B, 0x59, 0xC8, 0xBD,
 	0x2C, 0x5E, 0xCF, };
 // config stuff
-static int wait_for_daemon_status = 0;
 static int no_daemon = 1;
 static int pin_code = -1;
 static int use_ping = 0;
@@ -254,6 +253,7 @@
 static int cmux_port_speed = 5;
 // Maximum Frame Size (N1): 64/31
 static int cmux_N1 = 64;
+#if 0
 // Acknowledgement Timer (T1) sec/100: 10 
 static int cmux_T1 = 10;
 // Maximum number of retransmissions (N2): 3
@@ -264,6 +264,7 @@
 static int cmux_T3 = 10;
 // Window Size (k): 2
 static int cmux_k = 2;
+#endif
 // TODO: set automatically from at+cmux=?
 // neo: +CMUX: (1),(0),(1-5),(10-100),(1-255),(0-100),(2-255),(1-255),(1-7)
 
@@ -613,14 +614,14 @@
 static gboolean watchdog(gpointer data);
 static int close_devices();
 
-static gboolean c_get_power(const char* origin, int on)
+static gboolean c_get_power(const char* origin)
 {
 	LOG(LOG_DEBUG, "Enter");
 	LOG(LOG_DEBUG, "Leave");
 	return serial.state != MUX_STATE_OFF;
 }
 
-static gboolean c_power(const char* origin, int on)
+static gboolean c_set_power(const char* origin, gboolean on)
 {
 	LOG(LOG_DEBUG, "Enter");
 	if (on)
@@ -1369,9 +1370,9 @@
 //version test for Siemens terminals to enable version 2 functions
 	int frames_extracted = 0;
 	GSM0710_Frame *frame;
-	while (frame = cmux_mode
+	while ((frame = cmux_mode
 		? gsm0710_advanced_buffer_get_frame(buf)
-		: gsm0710_base_buffer_get_frame(buf))
+		: gsm0710_base_buffer_get_frame(buf)))
 	{
 		frames_extracted++;
 		if ((GSM0710_FRAME_IS(GSM0710_TYPE_UI, frame) || GSM0710_FRAME_IS(GSM0710_TYPE_UIH, frame)))
@@ -1484,58 +1485,6 @@
 }
 
 /**
- * Wait for child process to kill the parent.
- */
-static void parent_signal_treatment(
-	int param)
-{
-	fprintf(stderr, "started");
-	exit(0);
-}
-
-/**
- * Daemonize process, this process create the daemon
- */
-static int daemonize(
-	)
-{
-	static pid_t the_pid = -1;
-	LOG(LOG_DEBUG, "Enter");
-	if (!no_daemon)
-	{
-		signal(SIGHUP, parent_signal_treatment);
-		if ((the_pid = fork()) < 0)
-		{
-			wait_for_daemon_status = 0;
-			return -1;
-		}
-		else if (the_pid != 0)
-		{
-			if (wait_for_daemon_status)
-			{
-				wait(NULL);
-				fprintf(stderr, "startup failed. See syslog for details");
-				exit(1);
-			}
-			exit(0);// parent goes bye-bye
-		}
-//child continues
-		setsid();// become session leader
-//signal(SIGHUP, SIG_IGN);
-		if (wait_for_daemon_status == 0 && (the_pid = fork()) != 0)
-			exit(0);
-		chdir("/");// change working directory
-		umask(0);// clear our file mode creation mask
-//Close out the standard file descriptors
-		close(STDIN_FILENO);
-		close(STDOUT_FILENO);
-		close(STDERR_FILENO);
-	}
-//daemonize process stop here
-	return 0;
-}
-
-/**
  * Function responsible by all signal handlers treatment
  * any new signal must be added here
  */
@@ -1736,11 +1685,11 @@
 		, cmux_subset
 		, cmux_port_speed
 		, cmux_N1
-		, cmux_T1
-		, cmux_N2
-		, cmux_T2
-		, cmux_T3
-		, cmux_k
+		//, cmux_T1
+		//, cmux_N2
+		//, cmux_T2
+		//, cmux_T3
+		//, cmux_k
 		));
 	LOG(LOG_INFO, "Starting mux mode");
 	SYSCHECK(chat(serial->fd, gsm_command, 3));
@@ -1860,7 +1809,6 @@
 	fprintf(stderr, "Options:\n");
 	// process control
 	fprintf(stderr, "\t-d: Fork, get a daemon [%s]\n", no_daemon?"no":"yes");
-	fprintf(stderr, "\t-w: Wait for deamon startup success/failure [%s]\n", wait_for_daemon_status?"yes":"no");
 	fprintf(stderr, "\t-v: verbose logging\n");
 	// modem control
 	fprintf(stderr, "\t-s <serial port name>: Serial port device to connect to [%s]\n", serial.devicename);
@@ -1890,7 +1838,7 @@
 	pid_t parent_pid;
 //for fault tolerance
 	serial.devicename = "/dev/ttySAC0";
-	while ((opt = getopt(argc, argv, "dvws:t:p:f:h?m:b:P:x:")) > 0)
+	while ((opt = getopt(argc, argv, "dvs:t:p:f:h?m:b:P:x:")) > 0)
 	{
 		switch (opt)
 		{
@@ -1900,9 +1848,6 @@
 		case 'd':
 			no_daemon = !no_daemon;
 			break;
-		case 'w':
-			wait_for_daemon_status = !wait_for_daemon_status;
-			break;
 		case 'x':
 			serial.pm_base_dir = optarg;
 			break;
@@ -1946,21 +1891,27 @@
 		// auto detect - i hate windows-like-behavior but mickey want's it ;)
 		struct stat sb;
 		int i;
-		static const char* fn[] = {
+		static char* fn[] = {
 			"/sys/bus/platform/devices/neo1973-pm-gsm.0",
 			"/sys/bus/platform/devices/gta01-pm-gsm.0",
-			}
-		for (i=0;i<countof(fn);i++)
-			if (stat(fn, &sb) >= 0)
+			NULL
+			};
+		for (i=0;fn[i];i++)
+			if (stat(fn[i], &sb) >= 0)
 			{
-				serial.pm_base_dir = fn;
-				LOG(LOG_INFO, "using '%s' as basedir for pm", fn);
+				serial.pm_base_dir = fn[i];
+				LOG(LOG_INFO, "using '%s' as basedir for pm", fn[i]);
 				break;
 			}
 	}
 //daemonize show time
 	parent_pid = getpid();
-	daemonize();
+	if (!no_daemon && daemon(0, 0))
+	{
+		fprintf(stderr, "Failed to daemonize: %s (%d)", strerror(errno), errno);
+		exit(1);
+	}
+	umask(0);
 //signals treatment
 	signal(SIGHUP, signal_treatment);
 	signal(SIGPIPE, signal_treatment);
@@ -1982,11 +1933,6 @@
 		exit(-1);
 	}
 //Initialize modem and virtual ports
-	if (no_daemon)
-		LOG(LOG_INFO, "You can quit the daemon with SIGKILL or SIGTERM");
-	else
-		if (wait_for_daemon_status)
-			kill(parent_pid, SIGHUP);
 	serial.state = MUX_STATE_OPENING;
 	serial.g_source_watchdog = g_timeout_add_seconds(5, watchdog, &serial); // let the dog watch every 5 sec
 	LOG(LOG_INFO, "Watchdog started - initilization follows");

Modified: trunk/software/gsm0710muxd/src/gsm0710muxd.vapi
===================================================================
--- trunk/software/gsm0710muxd/src/gsm0710muxd.vapi	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/gsm0710muxd.vapi	2008-04-29 13:19:27 UTC (rev 282)
@@ -1,8 +1,8 @@
 namespace gsm0710muxd {
 	[CCode (cname = "c_get_power")]
 	public bool c_get_power (string origin);
-	[CCode (cname = "c_power")]
-	public bool c_power (string origin, bool on);
+	[CCode (cname = "c_set_power")]
+	public bool c_set_power (string origin, bool on);
 	[CCode (cname = "c_reset_modem")]
 	public bool c_reset_modem (string origin);
 	[CCode (cname = "c_alloc_channel")]

Modified: trunk/software/gsm0710muxd/src/mux.xml
===================================================================
--- trunk/software/gsm0710muxd/src/mux.xml	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/mux.xml	2008-04-29 13:19:27 UTC (rev 282)
@@ -12,7 +12,7 @@
 		<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="muxer_control"/>
 		<!-- switch modem on/off -->
 		<method name="SetPower">
-			<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="muxer_control_power"/>
+			<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="muxer_control_set_power"/>
 			<!-- origin of the call (see AllocChannel) -->
 			<arg name="origin" type="s" direction="in"/>
 			<!-- switch on? -->
@@ -20,7 +20,7 @@
 		</method>
 		<!-- get if modem is onor off -->
 		<method name="GetPower">
-			<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="muxer_control_power"/>
+			<annotation name="org.freedesktop.DBus.GLib.CSymbol" value="muxer_control_get_power"/>
 			<!-- origin of the call (see AllocChannel) -->
 			<arg name="origin" type="s" direction="in"/>
 			<!-- current state -->

Modified: trunk/software/gsm0710muxd/src/muxercontrol.c
===================================================================
--- trunk/software/gsm0710muxd/src/muxercontrol.c	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/muxercontrol.c	2008-04-29 13:19:27 UTC (rev 282)
@@ -34,12 +34,18 @@
 }
 
 
-gboolean muxer_control_power (MuxerControl* self, const char* origin, gboolean on) {
+gboolean muxer_control_set_power (MuxerControl* self, const char* origin, gboolean on) {
 	g_return_val_if_fail (IS_MUXER_CONTROL (self), FALSE);
-	return c_power (origin, on);
+	return c_set_power (origin, on);
 }
 
 
+gboolean muxer_control_get_power (MuxerControl* self, const char* origin, gboolean on) {
+	g_return_val_if_fail (IS_MUXER_CONTROL (self), FALSE);
+	return c_get_power (origin);
+}
+
+
 gboolean muxer_control_alloc_channel (MuxerControl* self, const char* origin, const char* channel) {
 	g_return_val_if_fail (IS_MUXER_CONTROL (self), FALSE);
 	return c_alloc_channel (origin, channel);

Modified: trunk/software/gsm0710muxd/src/muxercontrol.h
===================================================================
--- trunk/software/gsm0710muxd/src/muxercontrol.h	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/muxercontrol.h	2008-04-29 13:19:27 UTC (rev 282)
@@ -38,7 +38,8 @@
 
 void muxer_control_run (MuxerControl* self);
 gboolean muxer_control_reset_modem (MuxerControl* self, const char* origin);
-gboolean muxer_control_power (MuxerControl* self, const char* origin, gboolean on);
+gboolean muxer_control_set_power (MuxerControl* self, const char* origin, gboolean on);
+gboolean muxer_control_get_power (MuxerControl* self, const char* origin, gboolean on);
 gboolean muxer_control_alloc_channel (MuxerControl* self, const char* origin, const char* channel);
 MuxerControl* muxer_control_gen (void);
 MuxerControl* muxer_control_new (void);

Modified: trunk/software/gsm0710muxd/src/muxercontrol.vala
===================================================================
--- trunk/software/gsm0710muxd/src/muxercontrol.vala	2008-04-29 11:38:54 UTC (rev 281)
+++ trunk/software/gsm0710muxd/src/muxercontrol.vala	2008-04-29 13:19:27 UTC (rev 282)
@@ -17,9 +17,9 @@
 	{
 		return gsm0710muxd.c_reset_modem(origin);
 	}
-	public bool power(string origin, bool on)
+	public bool set_power(string origin, bool on)
 	{
-		return gsm0710muxd.c_power(origin, on);
+		return gsm0710muxd.c_set_power(origin, on);
 	}
 	public bool get_power(string origin, bool on)
 	{




More information about the Smartphones-commits mailing list