[Freeswitch-svn] [commit] r12174 - in freeswitch/trunk/src/mod/endpoints/mod_skypiax: . asterisk

FreeSWITCH SVN gmaruzz at freeswitch.org
Thu Feb 19 17:26:20 PST 2009


Author: gmaruzz
Date: Thu Feb 19 19:26:20 2009
New Revision: 12174

Log:
skypiax: ringback is ok now, early media in early stage (eg: not yet early media :-) )

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c
   freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h
   freeswitch/trunk/src/mod/endpoints/mod_skypiax/mod_skypiax.c
   freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax.h
   freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c	Thu Feb 19 19:26:20 2009
@@ -1880,40 +1880,31 @@
 #endif
   return 0;
 }
-
-int outbound_channel_answered(private_t * p)
+int remote_party_is_ringing(private_t * p)
 {
-#ifdef NOTDEF
-  switch_core_session_t *session = NULL;
-  switch_channel_t *channel = NULL;
-
-  if (strlen(tech_pvt->session_uuid_str)) {
-    session = switch_core_session_locate(tech_pvt->session_uuid_str);
-  } else {
-    ERRORA("No session???\n", SKYPIAX_P_LOG);
-  }
-  if (session) {
-    channel = switch_core_session_get_channel(session);
-  } else {
-    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  if (p->owner) {
+    ast_queue_control(p->owner, AST_CONTROL_RINGING);
   }
-  if (channel) {
-    switch_channel_mark_answered(channel);
-    //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
-  } else {
-    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+
+  return 0;
+}
+int remote_party_is_early_media(private_t * p)
+{
+  if (p->owner) {
+    ast_queue_control(p->owner, AST_CONTROL_RINGING);
   }
 
-  switch_core_session_rwunlock(session);
+  return 0;
+}
+
 
-#endif
+int outbound_channel_answered(private_t * p)
+{
 
   if (p->owner) {
     ast_queue_control(p->owner, AST_CONTROL_ANSWER);
   }
 
-  NOTICA("HERE!\n", SKYPIAX_P_LOG);
-
   return 0;
 }
 void *skypiax_do_tcp_srv_thread(void *obj)

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h	Thu Feb 19 19:26:20 2009
@@ -414,6 +414,8 @@
 #endif /* WIN32 */
 int skypiax_close_socket(unsigned int fd);
 private_t *find_available_skypiax_interface(void);
+int remote_party_is_ringing(private_t * tech_pvt);
+int remote_party_is_early_media(private_t * tech_pvt);
 #define		SKYPIAX_STATE_DOWN		AST_STATE_DOWN
 #define		SKYPIAX_STATE_RING		AST_STATE_RING
 #define		SKYPIAX_STATE_DIALING	AST_STATE_DIALING

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/mod_skypiax.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/mod_skypiax.c	Thu Feb 19 19:26:20 2009
@@ -1169,6 +1169,62 @@
   return 0;
 }
 
+int remote_party_is_ringing(private_t * tech_pvt)
+{
+  switch_core_session_t *session = NULL;
+  switch_channel_t *channel = NULL;
+
+  if (strlen(tech_pvt->session_uuid_str)) {
+    session = switch_core_session_locate(tech_pvt->session_uuid_str);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (session) {
+    channel = switch_core_session_get_channel(session);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (channel) {
+    switch_channel_mark_ring_ready(channel);
+    DEBUGA_SKYPE("skype_call: REMOTE PARTY RINGING\n", SKYPIAX_P_LOG);
+  } else {
+    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+  }
+
+  switch_core_session_rwunlock(session);
+
+  return 0;
+}
+
+
+int remote_party_is_early_media(private_t * tech_pvt)
+{
+  switch_core_session_t *session = NULL;
+  switch_channel_t *channel = NULL;
+
+  if (strlen(tech_pvt->session_uuid_str)) {
+    session = switch_core_session_locate(tech_pvt->session_uuid_str);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (session) {
+    channel = switch_core_session_get_channel(session);
+    switch_core_session_add_stream(session, NULL);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (channel) {
+    //switch_channel_mark_pre_answered(channel);
+    NOTICA("skype_call: REMOTE PARTY EARLY MEDIA, we will pass you the audio, just the code is not yet written :-)\n", SKYPIAX_P_LOG);
+  } else {
+    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+  }
+
+  switch_core_session_rwunlock(session);
+
+  return 0;
+}
+
 int outbound_channel_answered(private_t * tech_pvt)
 {
   switch_core_session_t *session = NULL;

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax.h	Thu Feb 19 19:26:20 2009
@@ -268,3 +268,5 @@
 #endif /* WIN32 */
 int skypiax_close_socket(unsigned int fd);
 private_t *find_available_skypiax_interface(void);
+int remote_party_is_ringing(private_t * tech_pvt);
+int remote_party_is_early_media(private_t * tech_pvt);

Modified: freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_skypiax/skypiax_protocol.c	Thu Feb 19 19:26:20 2009
@@ -267,12 +267,14 @@
               strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
               DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n",
                            SKYPIAX_P_LOG, id);
+              remote_party_is_ringing(tech_pvt);
             }
           } else if (!strcasecmp(value, "EARLYMEDIA")) {
             tech_pvt->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA;
             tech_pvt->interface_state = SKYPIAX_STATE_DIALING;
-            DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n",
+            NOTICA("Our remote party in skype_call %s is EARLYMEDIA\n",
                          SKYPIAX_P_LOG, id);
+              remote_party_is_early_media(tech_pvt);
           } else if (!strcasecmp(value, "MISSED")) {
             DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id);
           } else if (!strcasecmp(value, "FINISHED")) {



More information about the Freeswitch-svn mailing list