Revision
15083
Author
gmaruzz
Date
2009-10-05 09:01:59 -0500 (Mon, 05 Oct 2009)

Log Message

gsmopen: heh, opening a serial port can return an fd==0. Go figure... :)

Modified Paths

Diff

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.c (15082 => 15083)


--- freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.c	2009-10-05 12:40:50 UTC (rev 15082)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.c	2009-10-05 14:01:59 UTC (rev 15083)
@@ -33,13 +33,14 @@
 		close(fd);
 	}
 /*  open the serial port */
-#ifdef __CYGWIN__
+//#ifdef __CYGWIN__
 	fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK);
 	sleep(1);
 	close(fd);
-#endif /* __CYGWIN__ */
+//#endif /* __CYGWIN__ */
 	fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK);
 	if (fd == -1) {
+		perror("open error ");
 		DEBUGA_GSMOPEN("serial error: %s\n", GSMOPEN_P_LOG, strerror(errno));
 		tech_pvt->controldevfd = fd;
 		return -1;
@@ -93,7 +94,7 @@
 	ioctl(fd, TIOCMSET, &status);
 #endif /* __CYGWIN__ */
 	tech_pvt->controldevfd = fd;
-	DEBUGA_GSMOPEN("Syncing Serial\n", GSMOPEN_P_LOG);
+	DEBUGA_GSMOPEN("Syncing Serial, fd=%d, protocol=%d\n", GSMOPEN_P_LOG, fd, tech_pvt->controldevprotocol);
 	rt = gsmopen_serial_sync(tech_pvt);
 	if (rt == -1) {
 		ERRORA("Serial init error\n", GSMOPEN_P_LOG);

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.c (15082 => 15083)


--- freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.c	2009-10-05 12:40:50 UTC (rev 15082)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.c	2009-10-05 14:01:59 UTC (rev 15083)
@@ -1589,7 +1589,7 @@
 				if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) {
 					globals.GSMOPEN_INTERFACES[interface_id].controldevfd =
 						gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed);
-					if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd < 1) {
+					if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) {
 						ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG);
 						return SWITCH_STATUS_FALSE;
 					}
@@ -1776,6 +1776,7 @@
 	switch_status_t status;
 	unsigned int howmany = 8;
 	int interface_id;
+	int fd;
 
 	running = 0;
 
@@ -1805,6 +1806,14 @@
 			if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) {
 				switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread);
 			}
+	fd = tech_pvt->controldevfd;
+		WARNINGA("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
+	if (fd) {
+		close(fd);
+		//tech_pvt->controldevfd = -1;
+		WARNINGA("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
+	}
+
 #ifndef WIN32
 			WARNINGA("SHUTDOWN interface_id=%d\n", GSMOPEN_P_LOG, interface_id);
 			shutdown(tech_pvt->audiogsmopenpipe[0], 2);
@@ -2397,6 +2406,7 @@
 		running = 0;
 		return NULL;
 	}
+	WARNINGA("EXIT\n", GSMOPEN_P_LOG);
 	//running = 0;
 	return NULL;