Revision
16458
Author
gmaruzz
Date
2010-01-22 09:26:50 -0600 (Fri, 22 Jan 2010)

Log Message

gsmopen: load the module also if not all interfaces initialized correctly, mark the interfaces failed as inactive and remove them from the module interface's list. Cosmetics on 'gsm remove' interface, now only works on interface name or id. 'gsm reload' will try to load the interfaces in the config file that are not actives in the module

Modified Paths

Diff

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp (16457 => 16458)


--- freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp	2010-01-22 14:55:33 UTC (rev 16457)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp	2010-01-22 15:26:50 UTC (rev 16458)
@@ -591,7 +591,7 @@
 		//sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8
 		sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927");	// dataCodingScheme = 8 , text=ciao 123 belè новости לק ראת ﺎﻠﺠﻤﻋﺓ 人大
 		//sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0
-		NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
+		//NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
 
 		memset(content2, '\0', sizeof(content2));
 		if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) {
@@ -603,8 +603,8 @@
 			ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
 
 		}
-		NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
-		NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
+		//NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
+		//NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
 #endif// NO_GSMLIB
 
 	if (tech_pvt->controldevprotocol == PROTOCOL_AT)
@@ -756,6 +756,11 @@
 			DEBUGA_GSMOPEN("AT+CREG? failed\n", GSMOPEN_P_LOG);
 		}
 	}
+	/* query signal strength */
+	res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSQ");
+	if (res) {
+		DEBUGA_GSMOPEN("AT+CSQ failed\n", GSMOPEN_P_LOG);
+	}
 	/* IMEI */
 	tech_pvt->requesting_imei = 1;
 	res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+GSN");
@@ -803,7 +808,7 @@
 #else // NO_GSMLIB
 	res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0");
 	if (res) {
-		ERRORA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG);
+		WARNINGA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG);
 		tech_pvt->sms_pdu_not_supported = 1;
 		res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1");
 		if (res) {
@@ -3203,7 +3208,7 @@
 		//sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8
 		sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927");	// dataCodingScheme = 8 , text=ciao 123 belè новости לק ראת ﺎﻠﺠﻤﻋﺓ 人大
 		//sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0
-		NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
+		//NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
 
 		memset(content2, '\0', sizeof(content2));
 		if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) {
@@ -3215,8 +3220,8 @@
 			ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
 
 		}
-		NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
-		NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
+		//NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
+		//NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
 #endif// NO_GSMLIB
 
 	}

Modified: freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp (16457 => 16458)


--- freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp	2010-01-22 14:55:33 UTC (rev 16457)
+++ freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp	2010-01-22 15:26:50 UTC (rev 16458)
@@ -92,7 +92,7 @@
 #if 1
 SWITCH_STANDARD_API(gsm_function);
 /* BEGIN: Changes here */
-#define GSM_SYNTAX "list [full] || console || AT_command || remove < gsmopenusername | #interface_name | #interface_id > || reload"
+#define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload"
 /* END: Changes heres */
 SWITCH_STANDARD_API(gsmopen_function);
 #define GSMOPEN_SYNTAX "interface_name AT_command"
@@ -460,8 +460,8 @@
 	//running = 0;
 
 
-	if (*the_interface == '#') {	/* remove by interface id or interface name */
-		the_interface++;
+	//XXX if (*the_interface == '#') {	/* remove by interface id or interface name */
+		//XXX the_interface++;
 		switch_assert(the_interface);
 		interface_id = atoi(the_interface);
 
@@ -477,14 +477,14 @@
 				}
 			}
 		}
-	} else {					/* remove by gsmopen_user */
-		for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) {
-			if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) {
-				tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id];
-				break;
-			}
-		}
-	}
+	//XXX } //else {					/* remove by gsmopen_user */
+		//for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) {
+			//if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) {
+				//tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id];
+				//break;
+			//}
+		//}
+	//}
 
 	if (!tech_pvt) {
 		DEBUGA_GSMOPEN("interface '%s' does not exist\n", GSMOPEN_P_LOG, the_interface);
@@ -1881,7 +1881,12 @@
 						gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed);
 					if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) {
 						ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 					}
 				}
 
@@ -1890,7 +1895,12 @@
 					res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]);
 					if (res) {
 						ERRORA("gsmopen_serial_config failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 					}
 				}
 
@@ -1898,32 +1908,53 @@
 #ifdef GSMOPEN_ALSA
 					if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
 						ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 
 					}
 
 					if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
 						ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 
 					}
 #endif// GSMOPEN_ALSA
 #ifdef GSMOPEN_PORTAUDIO
 					if (gsmopen_portaudio_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
 						ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 
 					}
 
 					if (gsmopen_portaudio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
 						ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG);
-						return SWITCH_STATUS_FALSE;
+						ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id);
+						//return SWITCH_STATUS_FALSE;
+						globals.GSMOPEN_INTERFACES[interface_id].running=0;
+						globals.GSMOPEN_INTERFACES[interface_id].active=0;
+						globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0';
+						continue;
 
 					}
 #endif// GSMOPEN_PORTAUDIO
-
 				}
 
+				globals.GSMOPEN_INTERFACES[interface_id].active=1;
+
 				//gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost);    //FIXME
 				//gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost);  //FIXME
 				gsmopen_store_boost((char *) capture_boost, &globals.GSMOPEN_INTERFACES[interface_id].capture_boost);	//FIXME
@@ -2147,11 +2178,11 @@
 				switch_yield(50000);
 			}
 			fd = tech_pvt->controldevfd;
-			WARNINGA("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
+			//DEBUGA_GSMOPEN("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);
+				DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
 			}
 #ifndef WIN32
 			shutdown(tech_pvt->audiogsmopenpipe[0], 2);
@@ -2872,7 +2903,7 @@
 				gsmopen_serial_getstatus_AT(tech_pvt);
 			}
 		}
-	WARNINGA("EXIT\n", GSMOPEN_P_LOG);
+	DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG);
 	//running = 0;
 	return NULL;