<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[Freeswitch-trunk][16458] </title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<div id="header">FreeSWITCH Subversion</div>
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://fisheye.freeswitch.org/changelog/FreeSWITCH?cs=16458">16458</a></dd>
<dt>Author</dt> <dd>gmaruzz</dd>
<dt>Date</dt> <dd>2010-01-22 09:26:50 -0600 (Fri, 22 Jan 2010)</dd>
</dl>
<h3>Log Message</h3>
<pre>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</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#freeswitchbranchesgmaruzzmod_gsmopengsmopen_protocolcpp">freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp</a></li>
<li><a href="#freeswitchbranchesgmaruzzmod_gsmopenmod_gsmopencpp">freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="freeswitchbranchesgmaruzzmod_gsmopengsmopen_protocolcpp"></a>
<div class="modfile"><h4>Modified: freeswitch/branches/gmaruzz/mod_gsmopen/gsmopen_protocol.cpp (16457 => 16458)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -591,7 +591,7 @@
</span><span class="cx">                 //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8
</span><span class="cx">                 sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927");        // dataCodingScheme = 8 , text=ciao 123 belè новости לק ראת ﺎﻠﺠﻤﻋﺓ 人大
</span><span class="cx">                 //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0
</span><del>-                NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
</del><ins>+                //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
</ins><span class="cx">
</span><span class="cx">                 memset(content2, '\0', sizeof(content2));
</span><span class="cx">                 if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) {
</span><span class="lines">@@ -603,8 +603,8 @@
</span><span class="cx">                         ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
</span><span class="cx">
</span><span class="cx">                 }
</span><del>-                NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
-                NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
</del><ins>+                //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
+                //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
</ins><span class="cx"> #endif// NO_GSMLIB
</span><span class="cx">
</span><span class="cx">         if (tech_pvt->controldevprotocol == PROTOCOL_AT)
</span><span class="lines">@@ -756,6 +756,11 @@
</span><span class="cx">                         DEBUGA_GSMOPEN("AT+CREG? failed\n", GSMOPEN_P_LOG);
</span><span class="cx">                 }
</span><span class="cx">         }
</span><ins>+        /* query signal strength */
+        res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSQ");
+        if (res) {
+                DEBUGA_GSMOPEN("AT+CSQ failed\n", GSMOPEN_P_LOG);
+        }
</ins><span class="cx">         /* IMEI */
</span><span class="cx">         tech_pvt->requesting_imei = 1;
</span><span class="cx">         res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+GSN");
</span><span class="lines">@@ -803,7 +808,7 @@
</span><span class="cx"> #else // NO_GSMLIB
</span><span class="cx">         res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0");
</span><span class="cx">         if (res) {
</span><del>-                ERRORA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG);
</del><ins>+                WARNINGA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG);
</ins><span class="cx">                 tech_pvt->sms_pdu_not_supported = 1;
</span><span class="cx">                 res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1");
</span><span class="cx">                 if (res) {
</span><span class="lines">@@ -3203,7 +3208,7 @@
</span><span class="cx">                 //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8
</span><span class="cx">                 sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927");        // dataCodingScheme = 8 , text=ciao 123 belè новости לק ראת ﺎﻠﺠﻤﻋﺓ 人大
</span><span class="cx">                 //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0
</span><del>-                NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
</del><ins>+                //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str());
</ins><span class="cx">
</span><span class="cx">                 memset(content2, '\0', sizeof(content2));
</span><span class="cx">                 if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) {
</span><span class="lines">@@ -3215,8 +3220,8 @@
</span><span class="cx">                         ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
</span><span class="cx">
</span><span class="cx">                 }
</span><del>-                NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
-                NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
</del><ins>+                //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet());
+                //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2);
</ins><span class="cx"> #endif// NO_GSMLIB
</span><span class="cx">
</span><span class="cx">         }
</span></span></pre></div>
<a id="freeswitchbranchesgmaruzzmod_gsmopenmod_gsmopencpp"></a>
<div class="modfile"><h4>Modified: freeswitch/branches/gmaruzz/mod_gsmopen/mod_gsmopen.cpp (16457 => 16458)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> #if 1
</span><span class="cx"> SWITCH_STANDARD_API(gsm_function);
</span><span class="cx"> /* BEGIN: Changes here */
</span><del>-#define GSM_SYNTAX "list [full] || console || AT_command || remove < gsmopenusername | #interface_name | #interface_id > || reload"
</del><ins>+#define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload"
</ins><span class="cx"> /* END: Changes heres */
</span><span class="cx"> SWITCH_STANDARD_API(gsmopen_function);
</span><span class="cx"> #define GSMOPEN_SYNTAX "interface_name AT_command"
</span><span class="lines">@@ -460,8 +460,8 @@
</span><span class="cx">         //running = 0;
</span><span class="cx">
</span><span class="cx">
</span><del>-        if (*the_interface == '#') {        /* remove by interface id or interface name */
-                the_interface++;
</del><ins>+        //XXX if (*the_interface == '#') {        /* remove by interface id or interface name */
+                //XXX the_interface++;
</ins><span class="cx">                 switch_assert(the_interface);
</span><span class="cx">                 interface_id = atoi(the_interface);
</span><span class="cx">
</span><span class="lines">@@ -477,14 +477,14 @@
</span><span class="cx">                                 }
</span><span class="cx">                         }
</span><span class="cx">                 }
</span><del>-        } 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;
-                        }
-                }
-        }
</del><ins>+        //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;
+                        //}
+                //}
+        //}
</ins><span class="cx">
</span><span class="cx">         if (!tech_pvt) {
</span><span class="cx">                 DEBUGA_GSMOPEN("interface '%s' does not exist\n", GSMOPEN_P_LOG, the_interface);
</span><span class="lines">@@ -1881,7 +1881,12 @@
</span><span class="cx">                                                 gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed);
</span><span class="cx">                                         if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) {
</span><span class="cx">                                                 ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">                                         }
</span><span class="cx">                                 }
</span><span class="cx">
</span><span class="lines">@@ -1890,7 +1895,12 @@
</span><span class="cx">                                         res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]);
</span><span class="cx">                                         if (res) {
</span><span class="cx">                                                 ERRORA("gsmopen_serial_config failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">                                         }
</span><span class="cx">                                 }
</span><span class="cx">
</span><span class="lines">@@ -1898,32 +1908,53 @@
</span><span class="cx"> #ifdef GSMOPEN_ALSA
</span><span class="cx">                                         if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
</span><span class="cx">                                                 ERRORA("alsa_init failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">
</span><span class="cx">                                         }
</span><span class="cx">
</span><span class="cx">                                         if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
</span><span class="cx">                                                 ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">
</span><span class="cx">                                         }
</span><span class="cx"> #endif// GSMOPEN_ALSA
</span><span class="cx"> #ifdef GSMOPEN_PORTAUDIO
</span><span class="cx">                                         if (gsmopen_portaudio_init(&globals.GSMOPEN_INTERFACES[interface_id])) {
</span><span class="cx">                                                 ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">
</span><span class="cx">                                         }
</span><span class="cx">
</span><span class="cx">                                         if (gsmopen_portaudio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) {
</span><span class="cx">                                                 ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG);
</span><del>-                                                return SWITCH_STATUS_FALSE;
</del><ins>+                                                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;
</ins><span class="cx">
</span><span class="cx">                                         }
</span><span class="cx"> #endif// GSMOPEN_PORTAUDIO
</span><del>-
</del><span class="cx">                                 }
</span><span class="cx">
</span><ins>+                                globals.GSMOPEN_INTERFACES[interface_id].active=1;
+
</ins><span class="cx">                                 //gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME
</span><span class="cx">                                 //gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME
</span><span class="cx">                                 gsmopen_store_boost((char *) capture_boost, &globals.GSMOPEN_INTERFACES[interface_id].capture_boost);        //FIXME
</span><span class="lines">@@ -2147,11 +2178,11 @@
</span><span class="cx">                                 switch_yield(50000);
</span><span class="cx">                         }
</span><span class="cx">                         fd = tech_pvt->controldevfd;
</span><del>-                        WARNINGA("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
</del><ins>+                        //DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
</ins><span class="cx">                         if (fd) {
</span><span class="cx">                                 //close(fd);
</span><span class="cx">                                 //tech_pvt->controldevfd = -1;
</span><del>-                                WARNINGA("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
</del><ins>+                                DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd);
</ins><span class="cx">                         }
</span><span class="cx"> #ifndef WIN32
</span><span class="cx">                         shutdown(tech_pvt->audiogsmopenpipe[0], 2);
</span><span class="lines">@@ -2872,7 +2903,7 @@
</span><span class="cx">                                 gsmopen_serial_getstatus_AT(tech_pvt);
</span><span class="cx">                         }
</span><span class="cx">                 }
</span><del>-        WARNINGA("EXIT\n", GSMOPEN_P_LOG);
</del><ins>+        DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG);
</ins><span class="cx">         //running = 0;
</span><span class="cx">         return NULL;
</span><span class="cx">
</span></span></pre>
</div>
</div>
<div id="footer">See you at ClueCon</div>
</body>
</html>