Author: gmaruzz Date: Thu Jan 8 05:08:21 2009 New Revision: 11091 Log: skypiax: no more global_session, sends DTMFs. mod_skypiax is now virtually finished ;-) Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Thu Jan 8 05:08:21 2009 @@ -31,7 +31,7 @@ switch_endpoint_interface_t *skypiax_endpoint_interface; switch_memory_pool_t *skypiax_module_pool = NULL; int running = 1; -switch_core_session_t *global_session = NULL; +//switch_core_session_t *global_session = NULL; /*************************************************/ /*************************************************/ /*************************************************/ @@ -286,9 +286,16 @@ static switch_status_t channel_send_dtmf(switch_core_session_t * session, const switch_dtmf_t * dtmf) { + skypiax_interface_t *p = NULL; private_t *tech_pvt = switch_core_session_get_private(session); switch_assert(tech_pvt != NULL); + p = tech_pvt->p; + + NOTICA( "DTMF: %c\n", SKYPIAX_P_LOG, dtmf->digit); + +skypiax_skype_senddigit(p, dtmf->digit); + return SWITCH_STATUS_SUCCESS; } @@ -658,7 +665,7 @@ ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG); } p->interface_state = SKYPIAX_STATE_DOWN; - global_session = NULL; //FIXME + tech_pvt->session = NULL; //FIXME } } Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax.h Thu Jan 8 05:08:21 2009 @@ -249,3 +249,4 @@ int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, switch_core_session_t * session); +int skypiax_skype_senddigit(struct skypiax_interface *p, char digit); Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Thu Jan 8 05:08:21 2009 @@ -10,7 +10,7 @@ /**********************************************************/ /**********************************************************/ -extern switch_core_session_t *global_session; +//extern switch_core_session_t *global_session; #ifdef WIN32 #else /* NOT WIN32 */ @@ -1231,6 +1231,10 @@ fd_set fs; struct timeval to; #endif /* WIN32 */ + private_t *tech_pvt = NULL; + + tech_pvt = p->tech_pvt; + if (option_debug > 100) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); @@ -1623,7 +1627,7 @@ //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); - if (!global_session) { //FIXME FIXME FIXME + if (!p->tech_pvt || !tech_pvt->session) { //FIXME FIXME FIXME switch_core_session_t *session = NULL; private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; @@ -1680,8 +1684,8 @@ switch_channel_t *channel = NULL; tech_pvt = p->tech_pvt; - //session = tech_pvt->session; - session = global_session; + session = tech_pvt->session; + //session = global_session; channel = switch_core_session_get_channel(session); //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id); switch_channel_mark_answered(channel); @@ -1714,11 +1718,33 @@ return 0; } +int skypiax_skype_senddigit(struct skypiax_interface *p, char digit) +{ + char msg_to_skype[1024]; + if (option_debug > 10) { + DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); + } + + NOTICA("DIGIT received: %c\n", SKYPIAX_P_LOG, digit); + + sprintf(msg_to_skype, "SET CALL %s DTMF %c", p->skype_call_id, digit); + + skypiax_skype_write(p, msg_to_skype); + + if (option_debug > 10) { + DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); + } + return 0; +} + int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, switch_core_session_t * session) { char *rdest; char msg_to_skype[1024]; + private_t *tech_pvt; + + tech_pvt = p->tech_pvt; if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); @@ -1745,7 +1771,7 @@ } return -1; } - global_session = session; + tech_pvt->session = session; //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); return 0;