Author: gmaruzz Date: Sun Jan 11 06:13:49 2009 New Revision: 11119 Log: skypiax: no more skypiax_interface pointers, only private_t pointers 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 Sun Jan 11 06:13:49 2009 @@ -19,7 +19,7 @@ int fd; int calls; char hold_music[256]; - skypiax_interface_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES]; + private_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES]; switch_mutex_t *mutex; } globals; @@ -56,7 +56,6 @@ static switch_status_t skypiax_codec(private_t * tech_pvt, int sample_rate, int codec_ms) { - skypiax_interface_t *p = NULL; if (switch_core_codec_init (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, @@ -84,8 +83,7 @@ } -void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session, - skypiax_interface_t * p) +void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); @@ -97,13 +95,8 @@ switch_core_session_get_pool(session)); switch_core_session_set_private(session, tech_pvt); tech_pvt->session = session; - if (p) { - tech_pvt->p = p; - p->tech_pvt = tech_pvt; - - } if (skypiax_codec(tech_pvt, SAMPLERATE_SKYPIAX, 20) != SWITCH_STATUS_SUCCESS) { - ERRORA("skypiax_docec FAILED\n", SKYPIAX_P_LOG); + ERRORA("skypiax_codec FAILED\n", SKYPIAX_P_LOG); } else { DEBUGA_SKYPE("skypiax_codec SUCCESS\n", SKYPIAX_P_LOG); } @@ -120,7 +113,6 @@ { switch_channel_t *channel; private_t *tech_pvt = NULL; - skypiax_interface_t *p = NULL; tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); @@ -146,7 +138,6 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - skypiax_interface_t *p = NULL; char msg_to_skype[256]; channel = switch_core_session_get_channel(session); @@ -155,17 +146,16 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - p = tech_pvt->p; switch_clear_flag_locked(tech_pvt, TFLAG_IO); switch_clear_flag_locked(tech_pvt, TFLAG_VOICE); //switch_set_flag_locked(tech_pvt, TFLAG_HANGUP); - if (strlen(p->skype_call_id)) { + if (strlen(tech_pvt->skype_call_id)) { //switch_thread_cond_signal(tech_pvt->cond); - WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, p->skype_call_id); - sprintf(msg_to_skype, "ALTER CALL %s HANGUP", p->skype_call_id); - skypiax_skype_write(p, msg_to_skype); + WARNINGA("hanging up skype call: %s\n", SKYPIAX_P_LOG, tech_pvt->skype_call_id); + sprintf(msg_to_skype, "ALTER CALL %s HANGUP", tech_pvt->skype_call_id); + skypiax_skype_write(tech_pvt, msg_to_skype); } if (tech_pvt->read_codec.implementation) { @@ -191,7 +181,6 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -209,7 +198,6 @@ switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -226,7 +214,6 @@ { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -256,14 +243,14 @@ static switch_status_t channel_on_exchange_media(switch_core_session_t * session) { - skypiax_interface_t *p = NULL; + private_t *tech_pvt = NULL; DEBUGA_SKYPE("CHANNEL LOOPBACK\n", SKYPIAX_P_LOG); return SWITCH_STATUS_SUCCESS; } static switch_status_t channel_on_soft_execute(switch_core_session_t * session) { - skypiax_interface_t *p = NULL; + private_t *tech_pvt = NULL; DEBUGA_SKYPE("CHANNEL TRANSMIT\n", SKYPIAX_P_LOG); return SWITCH_STATUS_SUCCESS; } @@ -271,15 +258,12 @@ 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); + skypiax_skype_senddigit(tech_pvt, dtmf->digit); return SWITCH_STATUS_SUCCESS; } @@ -291,7 +275,6 @@ switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; switch_byte_t *data; - skypiax_interface_t *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -362,7 +345,6 @@ switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; unsigned int sent; - struct skypiax_interface *p = NULL; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -370,8 +352,6 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - p = tech_pvt->p; - assert(p != NULL); if (!switch_test_flag(tech_pvt, TFLAG_IO)) { ERRORA("CIAPA \n", SKYPIAX_P_LOG); @@ -385,9 +365,9 @@ sent = frame->datalen; #ifdef WIN32 - switch_file_write(p->audioskypepipe[1], frame->data, &sent); + switch_file_write(tech_pvt->audioskypepipe[1], frame->data, &sent); #else /* WIN32 */ - sent = write(p->audioskypepipe[1], frame->data, sent); + sent = write(tech_pvt->audioskypepipe[1], frame->data, sent); #endif /* WIN32 */ if (sent != frame->datalen && sent != -1) { DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent); @@ -400,7 +380,6 @@ { private_t *tech_pvt; switch_channel_t *channel = NULL; - struct skypiax_interface *p; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -408,7 +387,6 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - p = tech_pvt->p; DEBUGA_SKYPE("ANSWERED! \n", SKYPIAX_P_LOG); @@ -420,7 +398,6 @@ { switch_channel_t *channel; private_t *tech_pvt; - struct skypiax_interface *p; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -428,7 +405,6 @@ tech_pvt = (private_t *) switch_core_session_get_private(session); assert(tech_pvt != NULL); - p = tech_pvt->p; switch (msg->message_id) { case SWITCH_MESSAGE_INDICATE_ANSWER: @@ -452,7 +428,6 @@ { struct private_object *tech_pvt = switch_core_session_get_private(session); char *body = switch_event_get_body(event); - skypiax_interface_t *p = NULL; switch_assert(tech_pvt != NULL); if (!body) { @@ -495,7 +470,6 @@ private_t *tech_pvt; switch_channel_t *channel; switch_caller_profile_t *caller_profile; - skypiax_interface_t *p = NULL; switch_core_session_add_stream(*new_session, NULL); @@ -522,8 +496,8 @@ DEBUGA_SKYPE("globals.SKYPIAX_INTERFACES[%d].name=|||%s|||?\n", SKYPIAX_P_LOG, i, globals.SKYPIAX_INTERFACES[i].name); - tech_pvt->p = &globals.SKYPIAX_INTERFACES[i]; //FIXME - globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt; //FIXME + tech_pvt = &globals.SKYPIAX_INTERFACES[i]; //FIXME + //globals.SKYPIAX_INTERFACES[i].tech_pvt = tech_pvt; //FIXME found = 1; break; } @@ -544,7 +518,7 @@ } channel = switch_core_session_get_channel(*new_session); - skypiax_tech_init(tech_pvt, *new_session, NULL); + skypiax_tech_init(tech_pvt, *new_session); } else { ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG); switch_core_session_destroy(new_session); @@ -555,7 +529,7 @@ char name[128]; snprintf(name, sizeof(name), "skypiax/%s", outbound_profile->destination_number); - //snprintf(name, sizeof(name), "skypiax/%s", p->name); + //snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name); switch_channel_set_name(channel, name); NOTICA("outbound_profile->destination_number=|||%s|||\n", SKYPIAX_P_LOG, outbound_profile->destination_number); @@ -575,7 +549,7 @@ return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } - skypiax_skype_call(tech_pvt->p, caller_profile->destination_number, 30, *new_session); + skypiax_skype_call(tech_pvt, caller_profile->destination_number, 30, *new_session); switch_channel_set_flag(channel, CF_OUTBOUND); switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND); @@ -593,27 +567,26 @@ static void *SWITCH_THREAD_FUNC skypiax_do_controldev_thread(switch_thread_t * thread, void *obj) { - struct skypiax_interface *p = obj; + private_t *tech_pvt = obj; int res; int forever = 1; DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); DEBUGA_SKYPE("In skypiax_do_controldev_thread: started, p=%p\n", SKYPIAX_P_LOG, - (void *) p); + (void *) tech_pvt); while (forever) { if (!running) break; - res = skypiax_skype_read(p); + res = skypiax_skype_read(tech_pvt); if (res == CALLFLOW_INCOMING_HANGUP) { switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; + //private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; DEBUGA_SKYPE("skype call ended\n", SKYPIAX_P_LOG); - tech_pvt = p->tech_pvt; if (tech_pvt) { session = tech_pvt->session; @@ -630,7 +603,7 @@ } else { ERRORA("no tech_pvt?\n", SKYPIAX_P_LOG); } - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; tech_pvt->session = NULL; //FIXME } } @@ -642,7 +615,7 @@ { char *cf = "skypiax.conf"; switch_xml_t cfg, xml, global_settings, param, interfaces, myinterface; - skypiax_interface_t *p = NULL; + private_t *tech_pvt = NULL; switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, skypiax_module_pool); if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { @@ -819,7 +792,7 @@ #endif /* WIN32 */ if (interface_id && interface_id < SKYPIAX_MAX_INTERFACES) { - struct skypiax_interface newconf; + private_t newconf; switch_threadattr_t *do_skype_thd_attr = NULL; switch_threadattr_t *skypiax_do_controldev_thread_thd_attr = NULL; @@ -943,7 +916,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load) { - struct skypiax_interface *p = NULL; //for logging + private_t *tech_pvt = NULL; //for logging skypiax_module_pool = pool; @@ -966,7 +939,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown) { int x = 100; - struct skypiax_interface *p = NULL; + private_t *tech_pvt = NULL; switch_status_t status; unsigned int howmany = 8; int interface_id; @@ -974,34 +947,34 @@ running = 0; for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) { - p = &globals.SKYPIAX_INTERFACES[interface_id]; + tech_pvt = &globals.SKYPIAX_INTERFACES[interface_id]; if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread) { #ifdef WIN32 - switch_file_write(p->SkypiaxHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die + switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die #else /* WIN32 */ - howmany = write(p->SkypiaxHandles.fdesc[1], "sciutati", howmany); + howmany = write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", howmany); #endif /* WIN32 */ } if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread) { #ifdef WIN32 - if (SendMessage(p->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die + if (SendMessage(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the do_skype_thread die ERRORA("WHY FALSE HERE? %d\n", SKYPIAX_P_LOG, GetLastError()); } #else XEvent e; Atom atom1 = - XInternAtom(p->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); + XInternAtom(tech_pvt->SkypiaxHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); memset(&e, 0, sizeof(e)); e.xclient.type = ClientMessage; e.xclient.message_type = atom1; /* leading message */ - e.xclient.display = p->SkypiaxHandles.disp; - e.xclient.window = p->SkypiaxHandles.skype_win; + e.xclient.display = tech_pvt->SkypiaxHandles.disp; + e.xclient.window = tech_pvt->SkypiaxHandles.skype_win; e.xclient.format = 8; - XSendEvent(p->SkypiaxHandles.disp, p->SkypiaxHandles.win, False, 0, &e); - XSync(p->SkypiaxHandles.disp, False); + XSendEvent(tech_pvt->SkypiaxHandles.disp, tech_pvt->SkypiaxHandles.win, False, 0, &e); + XSync(tech_pvt->SkypiaxHandles.disp, False); #endif } while (x) { 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 Sun Jan 11 06:13:49 2009 @@ -79,7 +79,7 @@ #define WARNINGA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][WARNINGA %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); #define NOTICA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "rev "SKYPIAX_SVN_VERSION "[%p|%-7lx][NOTICA %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); -#define SKYPIAX_P_LOG NULL, (unsigned long)55, __LINE__, p ? p->name ? p->name : "none" : "none", -1, p ? p->interface_state : -1, p ? p->skype_callflow : -1 +#define SKYPIAX_P_LOG NULL, (unsigned long)55, __LINE__, tech_pvt ? tech_pvt->name ? tech_pvt->name : "none" : "none", -1, tech_pvt ? tech_pvt->interface_state : -1, tech_pvt ? tech_pvt->skype_callflow : -1 /*********************************/ #define SKYPIAX_CAUSE_NORMAL 1 @@ -154,7 +154,8 @@ #endif //WIN32 -struct skypiax_interface { +#if 0 +private_t { char interface_id[80]; char name[80]; char dialplan[80]; @@ -221,7 +222,8 @@ char skype_password[256]; }; -typedef struct skypiax_interface skypiax_interface_t; +typedef private_t private_t; +#endif struct private_object { unsigned int flags; @@ -233,20 +235,88 @@ switch_caller_profile_t *caller_profile; switch_mutex_t *mutex; switch_mutex_t *flag_mutex; - skypiax_interface_t *p; + //private_t *p; //switch_thread_cond_t *cond; + + char interface_id[80]; + char name[80]; + char dialplan[80]; + char context[80]; + char dial_regex[256]; + char fail_dial_regex[256]; + char hold_music[256]; + char type[256]; + char X11_display[256]; +#ifdef WIN32 + unsigned short tcp_cli_port; + unsigned short tcp_srv_port; +#else + int tcp_cli_port; + int tcp_srv_port; +#endif + struct SkypiaxHandles SkypiaxHandles; + + int interface_state; /*!< \brief 'state' of the interface (channel) */ + char language[80]; /*!< \brief default Asterisk dialplan language for this interface */ + char exten[80]; /*!< \brief default Asterisk dialplan extension for this interface */ + int skypiax_sound_rate; /*!< \brief rate of the sound device, in Hz, eg: 8000 */ + switch_file_t *skypiax_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */ + char callid_name[50]; + char callid_number[50]; + double playback_boost; + double capture_boost; + int stripmsd; + switch_thread_t *skype_thread; + char skype_call_id[512]; + int skype_call_ongoing; + char skype_friends[4096]; + char skype_fullname[512]; + char skype_displayname[512]; + int skype_callflow; /*!< \brief 'callflow' of the skype interface (as opposed to phone interface) */ + int skype; /*!< \brief config flag, bool, Skype support on this interface (0 if false, -1 if true) */ + int control_to_send; +#ifdef WIN32 + switch_file_t *audiopipe[2]; + switch_file_t *audioskypepipe[2]; +#else /* WIN32 */ + int audiopipe[2]; + int audioskypepipe[2]; +#endif /* WIN32 */ + switch_thread_t *tcp_srv_thread; + switch_thread_t *tcp_cli_thread; + switch_thread_t *skypiax_do_controldev_thread_thread; + switch_thread_t *skypiax_do_skype_thread_thread; + short audiobuf[SAMPLES_PER_FRAME]; + int audiobuf_is_loaded; + + //int phonebook_listing; + //int phonebook_querying; + //int phonebook_listing_received_calls; + + //int phonebook_first_entry; + //int phonebook_last_entry; + //int phonebook_number_lenght; + //int phonebook_text_lenght; + FILE *phonebook_writing_fp; + int skypiax_dir_entry_extension_prefix; + //void *tech_pvt; + char skype_user[256]; + char skype_password[256]; + + + + }; typedef struct private_object private_t; void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj); -void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session, - skypiax_interface_t * p); +void skypiax_tech_init(private_t * tech_pvt, switch_core_session_t * session); switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt); -int skypiax_skypeaudio_init(struct skypiax_interface *p); -int skypiax_skype_write(struct skypiax_interface *p, char *msg_to_skype); -int skypiax_skype_read(struct skypiax_interface *p); +int skypiax_skypeaudio_init(private_t *p); +int skypiax_skype_write(private_t *p, char *msg_to_skype); +int skypiax_skype_read(private_t *p); -int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, +int skypiax_skype_call(private_t *p, char *idest, int timeout, switch_core_session_t * session); -int skypiax_skype_senddigit(struct skypiax_interface *p, char digit); +int skypiax_skype_senddigit(private_t *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 Sun Jan 11 06:13:49 2009 @@ -8,7 +8,7 @@ static void *SWITCH_THREAD_FUNC skypiax_do_tcp_srv_thread(switch_thread_t * thread, void *obj) { - struct skypiax_interface *p = obj; + private_t *tech_pvt = obj; int s; #ifdef WIN32 unsigned int len; @@ -40,7 +40,7 @@ memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ - my_addr.sin_port = htons(p->tcp_srv_port); + my_addr.sin_port = htons(tech_pvt->tcp_srv_port); if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ERRORA("socket Error\n", SKYPIAX_P_LOG); @@ -66,9 +66,9 @@ DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG); if (!running) break; - while (p->interface_state != SKYPIAX_STATE_DOWN - && (p->skype_callflow == CALLFLOW_STATUS_INPROGRESS - || p->skype_callflow == SKYPIAX_STATE_UP)) { + while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN + && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS + || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) { #ifdef WIN32 unsigned int fdselect; @@ -108,6 +108,8 @@ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { + ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); if (len > 0) { a = 0; for (i = 0; i < len / sizeof(short); i++) { @@ -116,17 +118,17 @@ a++; } - if (!p->audiobuf_is_loaded) { + if (!tech_pvt->audiobuf_is_loaded) { for (i = 0; i < (len / sizeof(short)) / 2; i++) { - p->audiobuf[i] = srv_out[i]; + tech_pvt->audiobuf[i] = srv_out[i]; } - p->audiobuf_is_loaded = 1; + tech_pvt->audiobuf_is_loaded = 1; } else { unsigned int howmany; howmany = len / 2 / 2; for (i = 0; i < howmany; i++) - totalbuf[i] = p->audiobuf[i]; + totalbuf[i] = tech_pvt->audiobuf[i]; howmany = len / 2 / 2; for (a = 0; a < howmany; a++) { @@ -137,11 +139,11 @@ howmany = len; #ifdef WIN32 - switch_file_write(p->audiopipe[1], totalbuf, &howmany); + switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); #else /* WIN32 */ - howmany = write(p->audiopipe[1], totalbuf, howmany); + howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); #endif /* WIN32 */ - p->audiobuf_is_loaded = 0; + tech_pvt->audiobuf_is_loaded = 0; } } else if (len == 0) { @@ -154,38 +156,40 @@ } } else if (SAMPLERATE_SKYPIAX == 16000) { + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); if (len > 0) { if (len == SAMPLES_PER_FRAME * sizeof(short)) { #ifdef WIN32 unsigned int howmany; howmany = len; - switch_file_write(p->audiopipe[1], srv_in, &howmany); + switch_file_write(tech_pvt->audiopipe[1], srv_in, &howmany); #else /* WIN32 */ - len = write(p->audiopipe[1], srv_in, len); + len = write(tech_pvt->audiopipe[1], srv_in, len); #endif /* WIN32 */ } else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) { - if (!p->audiobuf_is_loaded) { + if (!tech_pvt->audiobuf_is_loaded) { for (i = 0; i < (len / sizeof(short)); i++) { - p->audiobuf[i] = srv_in[i]; + tech_pvt->audiobuf[i] = srv_in[i]; } - p->audiobuf_is_loaded = 1; + tech_pvt->audiobuf_is_loaded = 1; } else { unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short); for (i = 0; i < (len / sizeof(short)); i++) - totalbuf[i] = p->audiobuf[i]; + totalbuf[i] = tech_pvt->audiobuf[i]; for (a = 0; a < (len / sizeof(short)); a++) { totalbuf[i] = srv_in[a]; i++; } #ifdef WIN32 - switch_file_write(p->audiopipe[1], totalbuf, &howmany); + switch_file_write(tech_pvt->audiopipe[1], totalbuf, &howmany); #else /* WIN32 */ - howmany = write(p->audiopipe[1], totalbuf, howmany); + howmany = write(tech_pvt->audiopipe[1], totalbuf, howmany); #endif /* WIN32 */ - p->audiobuf_is_loaded = 0; + tech_pvt->audiobuf_is_loaded = 0; } } else { @@ -212,24 +216,24 @@ } #ifdef WIN32 kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size); + switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(p->audioskypepipe[1], kill_cli_buff, &kill_cli_size); - p->interface_state = SKYPIAX_STATE_DOWN; + switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(p->audiopipe[1], kill_cli_buff, &kill_cli_size); + switch_file_write(tech_pvt->audiopipe[1], kill_cli_buff, &kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - switch_file_write(p->audioskypepipe[1], kill_cli_buff, &kill_cli_size); + switch_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, &kill_cli_size); #else /* WIN32 */ kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size); + len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size); - p->interface_state = SKYPIAX_STATE_DOWN; + len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - len = write(p->audiopipe[1], kill_cli_buff, kill_cli_size); + len = write(tech_pvt->audiopipe[1], kill_cli_buff, kill_cli_size); kill_cli_size = SAMPLES_PER_FRAME * sizeof(short); - len = write(p->audioskypepipe[1], kill_cli_buff, kill_cli_size); + len = write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size); #endif /* WIN32 */ DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); #ifndef WIN32 @@ -255,7 +259,7 @@ static void *SWITCH_THREAD_FUNC skypiax_do_tcp_cli_thread(switch_thread_t * thread, void *obj) { - struct skypiax_interface *p = obj; + private_t *tech_pvt = obj; int s; struct sockaddr_in my_addr; struct sockaddr_in remote_addr; @@ -284,7 +288,7 @@ memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_addr.s_addr = htonl(0x7f000001); /* use the localhost */ - my_addr.sin_port = htons(p->tcp_cli_port); //FIXME configurable! + my_addr.sin_port = htons(tech_pvt->tcp_cli_port); //FIXME configurable! if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ERRORA("socket Error\n", SKYPIAX_P_LOG); @@ -315,9 +319,9 @@ DEBUGA_SKYPE("ACCEPTED\n", SKYPIAX_P_LOG); if (!running) break; - while (p->interface_state != SKYPIAX_STATE_DOWN - && (p->skype_callflow == CALLFLOW_STATUS_INPROGRESS - || p->skype_callflow == SKYPIAX_STATE_UP)) { + while (tech_pvt->interface_state != SKYPIAX_STATE_DOWN + && (tech_pvt->skype_callflow == CALLFLOW_STATUS_INPROGRESS + || tech_pvt->skype_callflow == SKYPIAX_STATE_UP)) { #ifdef WIN32 unsigned int fdselect; #else @@ -332,7 +336,7 @@ #ifdef WIN32 fdselect = fd; //cannot select on audioskypepipe, let's select on socket write #else /* WIN32 */ - fdselect = p->audioskypepipe[0]; + fdselect = tech_pvt->audioskypepipe[0]; #endif /* WIN32 */ FD_ZERO(&fs); FD_SET(fdselect, &fs); @@ -348,9 +352,9 @@ if ((SAMPLERATE_SKYPIAX - 8000) == 0) { got = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(p->audioskypepipe[0], cli_in, &got); + switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ - got = read(p->audioskypepipe[0], cli_in, got); + got = read(tech_pvt->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ if (got > 0) { @@ -378,9 +382,9 @@ } else if (SAMPLERATE_SKYPIAX == 16000) { got = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(p->audioskypepipe[0], cli_in, &got); + switch_file_read(tech_pvt->audioskypepipe[0], cli_in, &got); #else /* WIN32 */ - got = read(p->audioskypepipe[0], cli_in, got); + got = read(tech_pvt->audioskypepipe[0], cli_in, got); #endif /* WIN32 */ if (got > 0) { @@ -434,25 +438,29 @@ return NULL; } -int skypiax_skypeaudio_init(struct skypiax_interface *p) +int skypiax_skypeaudio_init(private_t *tech_pvt) { #ifdef WIN32 switch_status_t rv; - rv = switch_file_pipe_create(&p->audiopipe[0], &p->audiopipe[1], skypiax_module_pool); + rv = switch_file_pipe_create(&tech_pvt->audiopipe[0], &tech_pvt->audiopipe[1], skypiax_module_pool); rv = - switch_file_pipe_create(&p->audioskypepipe[0], &p->audioskypepipe[1], + switch_file_pipe_create(&tech_pvt->audioskypepipe[0], &tech_pvt->audioskypepipe[1], skypiax_module_pool); #else /* WIN32 */ - if (pipe(p->audiopipe)) { - fcntl(p->audiopipe[0], F_SETFL, O_NONBLOCK); - fcntl(p->audiopipe[1], F_SETFL, O_NONBLOCK); - } - if (pipe(p->audioskypepipe)) { - fcntl(p->audioskypepipe[0], F_SETFL, O_NONBLOCK); - fcntl(p->audioskypepipe[1], F_SETFL, O_NONBLOCK); + if (pipe(tech_pvt->audiopipe)) { + fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK); + } + if (pipe(tech_pvt->audioskypepipe)) { + fcntl(tech_pvt->audioskypepipe[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->audioskypepipe[1], F_SETFL, O_NONBLOCK); } #endif /* WIN32 */ + + ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); + if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -461,7 +469,7 @@ switch_status_t skypiax_skypeaudio_read(private_t * tech_pvt) { - struct skypiax_interface *p; + //private_t *p; unsigned int samples; int rt; #ifndef WIN32 @@ -470,11 +478,10 @@ struct timeval to; #endif /* WIN32 */ - p = tech_pvt->p; #ifdef WIN32 rt = 1; #else /* WIN32 */ - fdselect = p->audiopipe[0]; + fdselect = tech_pvt->audiopipe[0]; FD_ZERO(&fs); FD_SET(fdselect, &fs); to.tv_usec = 2000000; //2000 msec @@ -484,15 +491,18 @@ if (rt > 0) { samples = SAMPLES_PER_FRAME * sizeof(short); #ifdef WIN32 - switch_file_read(p->audiopipe[0], tech_pvt->read_frame.data, &samples); + switch_file_read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, &samples); #else /* WIN32 */ - samples = read(p->audiopipe[0], tech_pvt->read_frame.data, samples); + samples = read(tech_pvt->audiopipe[0], tech_pvt->read_frame.data, samples); #endif /* WIN32 */ + //ERRORA("tech_pvt->audiopipe[0] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[0]); + //ERRORA("tech_pvt->audiopipe[1] = %d\n", SKYPIAX_P_LOG, tech_pvt->audiopipe[1]); if (samples != SAMPLES_PER_FRAME * sizeof(short)) { if (samples) ERRORA("SRV PIPE READ=====> NOT GOOD samples=%u expected=%lu\n", SKYPIAX_P_LOG, samples, SAMPLES_PER_FRAME * sizeof(short)); + assert(samples == SAMPLES_PER_FRAME * sizeof(short)); //do a crash, please //do nothing } else { /* A real frame */ @@ -554,24 +564,24 @@ { LRESULT lReturnCode; int fIssueDefProc; - struct skypiax_interface *p = NULL; + //private_t *p = NULL; lReturnCode = 0; fIssueDefProc = 0; - p = (struct skypiax_interface *) GetWindowLong(hWindow, GWL_USERDATA); + tech_pvt = (private_t *) GetWindowLong(hWindow, GWL_USERDATA); switch (uiMessage) { case WM_CREATE: - p = (struct skypiax_interface *) ((LPCREATESTRUCT) ulParam)->lpCreateParams; + tech_pvt = (private_t *) ((LPCREATESTRUCT) ulParam)->lpCreateParams; SetWindowLong(hWindow, GWL_USERDATA, (LONG) p); DEBUGA_SKYPE("got CREATE\n", SKYPIAX_P_LOG); break; case WM_DESTROY: NOTICA("got DESTROY\n", SKYPIAX_P_LOG); - p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; PostQuitMessage(0); break; case WM_COPYDATA: - if (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) { + if (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle == (HWND) uiParam) { unsigned int howmany; char msg_from_skype[2048]; @@ -582,21 +592,21 @@ sizeof(msg_from_skype) - 2); howmany = strlen(msg_from_skype) + 1; - switch_file_write(p->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany); + switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], msg_from_skype, &howmany); //NOTICA("From Skype API: %s\n", SKYPIAX_P_LOG, (const char *) poCopyData->lpData); lReturnCode = 1; } break; default: - if (p && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { - if (uiMessage == p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if (p && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { + if (uiMessage == tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach) { switch (ulParam) { case SKYPECONTROLAPI_ATTACH_SUCCESS: - if (!p->SkypiaxHandles.api_connected) { + if (!tech_pvt->SkypiaxHandles.api_connected) { NOTICA("\n\n\tConnected to Skype API!\n", SKYPIAX_P_LOG); - p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; - p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = - p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle; + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = (HWND) uiParam; + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle = + tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle; } break; case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION: @@ -604,11 +614,11 @@ ("\n\n\tIf I do not (almost) immediately connect to Skype API,\n\tplease give the Skype client authorization to be connected \n\tby Asterisk and to not ask you again.\n\n", SKYPIAX_P_LOG); switch_sleep(5000); - if (!p->SkypiaxHandles.api_connected) { + if (!tech_pvt->SkypiaxHandles.api_connected) { SendMessage(HWND_BROADCAST, - p->SkypiaxHandles. + tech_pvt->SkypiaxHandles. win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0); + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0); } break; case SKYPECONTROLAPI_ATTACH_REFUSED: @@ -620,11 +630,11 @@ case SKYPECONTROLAPI_ATTACH_API_AVAILABLE: DEBUGA_SKYPE("Skype API available\n", SKYPIAX_P_LOG); switch_sleep(5000); - if (!p->SkypiaxHandles.api_connected) { + if (!tech_pvt->SkypiaxHandles.api_connected) { SendMessage(HWND_BROADCAST, - p->SkypiaxHandles. + tech_pvt->SkypiaxHandles. win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0); + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0); } break; default: @@ -642,7 +652,7 @@ return (lReturnCode); } -int win32_Initialize_CreateWindowClass(struct skypiax_interface *p) +int win32_Initialize_CreateWindowClass(private_t *tech_pvt) { unsigned char *paucUUIDString; RPC_STATUS lUUIDResult; @@ -651,26 +661,26 @@ fReturnStatus = 0; lUUIDResult = UuidCreate(&oUUID); - p->SkypiaxHandles.win32_hInit_ProcessHandle = + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = (HINSTANCE) OpenProcess(PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId()); - if (p->SkypiaxHandles.win32_hInit_ProcessHandle != NULL + if (tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle != NULL && (lUUIDResult == RPC_S_OK || lUUIDResult == RPC_S_UUID_LOCAL_ONLY)) { if (UuidToString(&oUUID, &paucUUIDString) == RPC_S_OK) { WNDCLASS oWindowClass; - strcpy(p->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-"); - strcat(p->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString); + strcpy(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "Skype-API-Skypiax-"); + strcat(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, (char *) paucUUIDString); oWindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; oWindowClass.lpfnWndProc = (WNDPROC) & skypiax_skype_present; oWindowClass.cbClsExtra = 0; oWindowClass.cbWndExtra = 0; - oWindowClass.hInstance = p->SkypiaxHandles.win32_hInit_ProcessHandle; + oWindowClass.hInstance = tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle; oWindowClass.hIcon = NULL; oWindowClass.hCursor = NULL; oWindowClass.hbrBackground = NULL; oWindowClass.lpszMenuName = NULL; - oWindowClass.lpszClassName = p->SkypiaxHandles.win32_acInit_WindowClassName; + oWindowClass.lpszClassName = tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName; if (RegisterClass(&oWindowClass) != 0) fReturnStatus = 1; @@ -679,34 +689,34 @@ } } if (fReturnStatus == 0) - CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle), - p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; + CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle), + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; return (fReturnStatus); } -void win32_DeInitialize_DestroyWindowClass(struct skypiax_interface *p) +void win32_DeInitialize_DestroyWindowClass(private_t *tech_pvt) { - UnregisterClass(p->SkypiaxHandles.win32_acInit_WindowClassName, - p->SkypiaxHandles.win32_hInit_ProcessHandle); - CloseHandle(p->SkypiaxHandles.win32_hInit_ProcessHandle), - p->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; + UnregisterClass(tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle); + CloseHandle(tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle), + tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle = NULL; } -int win32_Initialize_CreateMainWindow(struct skypiax_interface *p) +int win32_Initialize_CreateMainWindow(private_t *tech_pvt) { - p->SkypiaxHandles.win32_hInit_MainWindowHandle = + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, - p->SkypiaxHandles.win32_acInit_WindowClassName, "", + tech_pvt->SkypiaxHandles.win32_acInit_WindowClassName, "", WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, - 128, 128, NULL, 0, p->SkypiaxHandles.win32_hInit_ProcessHandle, p); - return (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0); + 128, 128, NULL, 0, tech_pvt->SkypiaxHandles.win32_hInit_ProcessHandle, p); + return (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL ? 1 : 0); } -void win32_DeInitialize_DestroyMainWindow(struct skypiax_interface *p) +void win32_DeInitialize_DestroyMainWindow(private_t *tech_pvt) { - if (p->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL) - DestroyWindow(p->SkypiaxHandles.win32_hInit_MainWindowHandle), - p->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; + if (tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle != NULL) + DestroyWindow(tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle), + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = NULL; } DWORD win32_dwThreadId; @@ -722,28 +732,27 @@ /* destroy main window */ /* destroy window class */ - struct skypiax_interface *p; + private_t *tech_pvt = obj; - p = obj; - switch_file_pipe_create(&p->SkypiaxHandles.fdesc[0], - &p->SkypiaxHandles.fdesc[1], skypiax_module_pool); - p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach = + switch_file_pipe_create(&tech_pvt->SkypiaxHandles.fdesc[0], + &tech_pvt->SkypiaxHandles.fdesc[1], skypiax_module_pool); + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach = RegisterWindowMessage("SkypeControlAPIAttach"); - p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover = RegisterWindowMessage("SkypeControlAPIDiscover"); switch_sleep(2000000); - if (p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 - && p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { + if (tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIAttach != 0 + && tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover != 0) { if (win32_Initialize_CreateWindowClass(p)) { if (win32_Initialize_CreateMainWindow(p)) { if (SendMessage (HWND_BROADCAST, - p->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, - (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) { - p->SkypiaxHandles.win32_hInit_MainWindowHandle = - p->SkypiaxHandles.win32_hInit_MainWindowHandle; + tech_pvt->SkypiaxHandles.win32_uiGlobal_MsgID_SkypeControlAPIDiscover, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, 0) != 0) { + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle = + tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle; while (1) { MSG oMessage; if (!running) @@ -818,7 +827,7 @@ unsigned long bytes_after_ret; unsigned char *prop; int status; - struct skypiax_interface *p = NULL; + private_t *tech_pvt = NULL; //XLockDisplay(disp); status = @@ -846,7 +855,7 @@ int *dispptr; int disp; - struct skypiax_interface *p = NULL; + private_t *tech_pvt = NULL; dispptr = data; disp = *dispptr; @@ -865,28 +874,27 @@ void *SWITCH_THREAD_FUNC do_skype_thread(switch_thread_t * thread, void *obj) { - struct skypiax_interface *p; + private_t *tech_pvt = obj; struct SkypiaxHandles *SkypiaxHandles; char buf[512]; Display *disp = NULL; Window root = -1; Window win = -1; - p = obj; DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); - if (pipe(p->SkypiaxHandles.fdesc)) { - fcntl(p->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); - fcntl(p->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); + if (pipe(tech_pvt->SkypiaxHandles.fdesc)) { + fcntl(tech_pvt->SkypiaxHandles.fdesc[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->SkypiaxHandles.fdesc[1], F_SETFL, O_NONBLOCK); } - SkypiaxHandles = &p->SkypiaxHandles; - disp = XOpenDisplay(p->X11_display); + SkypiaxHandles = &tech_pvt->SkypiaxHandles; + disp = XOpenDisplay(tech_pvt->X11_display); if (!disp) { ERRORA("Cannot open X Display '%s', exiting skype thread\n", SKYPIAX_P_LOG, - p->X11_display); + tech_pvt->X11_display); return NULL; } else { - DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, p->X11_display); + DEBUGA_SKYPE("X Display '%s' opened\n", SKYPIAX_P_LOG, tech_pvt->X11_display); } int xfd; @@ -978,7 +986,7 @@ } #endif // WIN32 -int skypiax_skype_write(struct skypiax_interface *p, char *msg_to_skype) +int skypiax_skype_write(private_t *tech_pvt, char *msg_to_skype) { #ifdef WIN32 static char acInputRow[1024]; @@ -1003,14 +1011,14 @@ oCopyData.cbData = strlen(acInputRow) + 1; if (oCopyData.cbData != 1) { if (SendMessage - (p->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA, - (WPARAM) p->SkypiaxHandles.win32_hInit_MainWindowHandle, + (tech_pvt->SkypiaxHandles.win32_hGlobal_SkypeAPIWindowHandle, WM_COPYDATA, + (WPARAM) tech_pvt->SkypiaxHandles.win32_hInit_MainWindowHandle, (LPARAM) & oCopyData) == FALSE) { ERRORA ("Sending message failed - probably Skype crashed.\n\nPlease shutdown Skypiax (Asterisk), then restart Skype from the menu, then launch Skypiax and try again.\n", SKYPIAX_P_LOG); - p->skype = 0; - p->skype_thread = NULL; + tech_pvt->skype = 0; + tech_pvt->skype_thread = NULL; if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -1022,7 +1030,7 @@ if (option_debug > 100) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); } - SkypiaxHandles = &p->SkypiaxHandles; + SkypiaxHandles = &tech_pvt->SkypiaxHandles; if (!skypiax_skype_send_message(SkypiaxHandles, msg_to_skype)) { ERRORA @@ -1042,7 +1050,7 @@ } -int skypiax_skype_read(struct skypiax_interface *p) +int skypiax_skype_read(private_t *tech_pvt) { char read_from_pipe[4096]; @@ -1059,9 +1067,6 @@ 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); @@ -1074,7 +1079,7 @@ #ifdef WIN32 rt = 1; #else /* WIN32 */ - fdselect = p->SkypiaxHandles.fdesc[0]; + fdselect = tech_pvt->SkypiaxHandles.fdesc[0]; FD_ZERO(&fs); FD_SET(fdselect, &fs); to.tv_usec = 2000000; //500 msec @@ -1083,13 +1088,13 @@ #endif /* WIN32 */ if (rt > 0) { - if (p->SkypiaxHandles.fdesc[0]) { + if (tech_pvt->SkypiaxHandles.fdesc[0]) { howmany = sizeof(read_from_pipe); #ifdef WIN32 - switch_file_read(p->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany); + switch_file_read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, &howmany); #else /* WIN32 */ howmany = - read(p->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); + read(tech_pvt->SkypiaxHandles.fdesc[0], read_from_pipe, sizeof(read_from_pipe)); #endif /* WIN32 */ a = 0; @@ -1099,8 +1104,8 @@ if (read_from_pipe[i] == '\0') { - DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, - howmany, i, a, messaggio); + //DEBUGA_SKYPE("read_skype: howmany=%d, i=%d, a=%d, |||%s||| \n", SKYPIAX_P_LOG, howmany, i, a, messaggio); + DEBUGA_SKYPE("READING: |||%s||| \n", SKYPIAX_P_LOG, messaggio); if (!strcasecmp(messaggio, "ERROR 68")) { /* not yet protocol specified, just authorized */ @@ -1108,7 +1113,7 @@ ("If I don't connect immediately, please give the Skype client authorization to be connected by Skypiax (and to not ask you again)\n", SKYPIAX_P_LOG); switch_sleep(1000000); - skypiax_skype_write(p, "PROTOCOL 6"); + skypiax_skype_write(tech_pvt, "PROTOCOL 6"); switch_sleep(10000); return 0; } @@ -1116,19 +1121,19 @@ if (!strncasecmp(messaggio, "ERROR 92 CALL", 12)) { ERRORA("Skype got ERROR: |||%s|||, the number we called was not recognized\n", SKYPIAX_P_LOG, messaggio); - p->skype_callflow = CALLFLOW_STATUS_FINISHED; + tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; if (option_debug) DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); - p->skype_call_id[0] = '\0'; + tech_pvt->skype_call_id[0] = '\0'; - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; return CALLFLOW_INCOMING_HANGUP; } else { - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; } } @@ -1144,36 +1149,36 @@ if (!strcasecmp(messaggio, "#333")) { /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[11]: %s\n", SKYPIAX_P_LOG, * messaggio_2, &messaggio_2[11]); */ - memset(p->skype_friends, 0, 4096); - strncpy(p->skype_friends, &messaggio_2[11], 4095); + memset(tech_pvt->skype_friends, 0, 4096); + strncpy(tech_pvt->skype_friends, &messaggio_2[11], 4095); } if (!strcasecmp(messaggio, "#222")) { /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, * messaggio_2, &messaggio_2[10]); */ - memset(p->skype_fullname, 0, 512); - strncpy(p->skype_fullname, &messaggio_2[10], 511); + memset(tech_pvt->skype_fullname, 0, 512); + strncpy(tech_pvt->skype_fullname, &messaggio_2[10], 511); } if (!strcasecmp(messaggio, "#765")) { /* DEBUGA_SKYPE("Skype MSG: messaggio_2: %s, messaggio2[10]: %s\n", SKYPIAX_P_LOG, * messaggio_2, &messaggio_2[10]); */ - memset(p->skype_displayname, 0, 512); - strncpy(p->skype_displayname, &messaggio_2[10], 511); + memset(tech_pvt->skype_displayname, 0, 512); + strncpy(tech_pvt->skype_displayname, &messaggio_2[10], 511); } if (!strcasecmp(messaggio, "ERROR")) { ERRORA("Skype got ERROR: |||%s|||\n", SKYPIAX_P_LOG, messaggio); - p->skype_callflow = CALLFLOW_STATUS_FINISHED; + tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; if (option_debug) DEBUGA_SKYPE("skype_call now is DOWN\n", SKYPIAX_P_LOG); - p->skype_call_id[0] = '\0'; + tech_pvt->skype_call_id[0] = '\0'; - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; return CALLFLOW_INCOMING_HANGUP; } else { - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; } } if (!strcasecmp(messaggio, "CURRENTUSERHANDLE")) { @@ -1183,9 +1188,9 @@ strncpy(id, where, sizeof(id) - 1); - if (!strcasecmp(id, p->skype_user)) { - p->SkypiaxHandles.api_connected = 1; - //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, p->skype_user); + if (!strcasecmp(id, tech_pvt->skype_user)) { + tech_pvt->SkypiaxHandles.api_connected = 1; + //DEBUGA_SKYPE ("Skype MSG: messaggio: %s, currentuserhandle: %s, cuh: %s, skype_user: %s!\n", SKYPIAX_P_LOG, messaggio, obj, id, tech_pvt->skype_user); } } @@ -1207,7 +1212,7 @@ //FIXME: TODO: allow authorization based on config param sprintf(msg_to_skype, "SET USER %s ISAUTHORIZED TRUE", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); } } @@ -1236,7 +1241,7 @@ //FIXME: TODO: allow authorization based on config param sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); } } else if (!strcasecmp(prop, "BODY")) { char msg_to_skype[256]; @@ -1246,7 +1251,7 @@ //FIXME: TODO: on config param ??? sprintf(msg_to_skype, "SET MESSAGE %s SEEN", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); } } @@ -1275,39 +1280,38 @@ SKYPIAX_P_LOG, messaggio, obj, id, prop, value, where ? where : "NULL"); if (!strcasecmp(prop, "PARTNER_HANDLE")) { - strncpy(p->callid_number, value, sizeof(p->callid_number) - 1); + strncpy(tech_pvt->callid_number, value, sizeof(tech_pvt->callid_number) - 1); WARNINGA - ("the skype_call %s caller PARTNER_HANDLE (p->callid_number) is: %s\n", - SKYPIAX_P_LOG, id, p->callid_number); + ("the skype_call %s caller PARTNER_HANDLE (tech_pvt->callid_number) is: %s\n", + SKYPIAX_P_LOG, id, tech_pvt->callid_number); return CALLFLOW_INCOMING_RING; } if (!strcasecmp(prop, "PARTNER_DISPNAME")) { - snprintf(p->callid_name, sizeof(p->callid_name) - 1, "%s%s%s", value, + snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name) - 1, "%s%s%s", value, where ? " " : "", where ? where : ""); WARNINGA - ("the skype_call %s caller PARTNER_DISPNAME (p->callid_name) is: %s\n", - SKYPIAX_P_LOG, id, p->callid_name); + ("the skype_call %s caller PARTNER_DISPNAME (tech_pvt->callid_name) is: %s\n", + SKYPIAX_P_LOG, id, tech_pvt->callid_name); } if (!strcasecmp(prop, "CONF_ID") && !strcasecmp(value, "0")) { DEBUGA_SKYPE("the skype_call %s is NOT a conference call\n", SKYPIAX_P_LOG, id); - if (p->interface_state == SKYPIAX_STATE_DOWN) - p->interface_state = SKYPIAX_STATE_PRERING; + if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN) + tech_pvt->interface_state = SKYPIAX_STATE_PRERING; } if (!strcasecmp(prop, "CONF_ID") && strcasecmp(value, "0")) { DEBUGA_SKYPE("the skype_call %s is a conference call\n", SKYPIAX_P_LOG, id); - if (p->interface_state == SKYPIAX_STATE_DOWN) - p->interface_state = SKYPIAX_STATE_PRERING; + if (tech_pvt->interface_state == SKYPIAX_STATE_DOWN) + tech_pvt->interface_state = SKYPIAX_STATE_PRERING; } if (!strcasecmp(prop, "DTMF")) { switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; DEBUGA_SKYPE("Call %s received a DTMF: %s\n", SKYPIAX_P_LOG, id, value); - tech_pvt = p->tech_pvt; + //tech_pvt = p; session = tech_pvt->session; channel = switch_core_session_get_channel(session); @@ -1329,8 +1333,8 @@ SKYPIAX_P_LOG, id); } if (!strcasecmp(prop, "DURATION") && (!strcasecmp(value, "1"))) { - if (strcasecmp(id, p->skype_call_id)) { - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + if (strcasecmp(id, tech_pvt->skype_call_id)) { + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); if (option_debug > 1) DEBUGA_SKYPE ("We called a Skype contact and he answered us on skype_call: %s.\n", @@ -1342,34 +1346,34 @@ if (!strcasecmp(value, "RINGING")) { char msg_to_skype[1024]; - if (p->interface_state != SKYPIAX_STATE_DIALING) { + if (tech_pvt->interface_state != SKYPIAX_STATE_DIALING) { /* we are not calling out */ - if (!strlen(p->skype_call_id)) { //FIXME + if (!strlen(tech_pvt->skype_call_id)) { //FIXME /* we are not inside an active call */ - p->skype_callflow = CALLFLOW_STATUS_RINGING; - p->interface_state = SKYPIAX_STATE_RING; + tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING; + tech_pvt->interface_state = SKYPIAX_STATE_RING; /* no owner, no active call, let's answer */ - skypiax_skype_write(p, "SET AGC OFF"); + skypiax_skype_write(tech_pvt, "SET AGC OFF"); switch_sleep(10000); - skypiax_skype_write(p, "SET AEC OFF"); + skypiax_skype_write(tech_pvt, "SET AEC OFF"); switch_sleep(10000); sprintf(msg_to_skype, "GET CALL %s PARTNER_DISPNAME", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); switch_sleep(10000); sprintf(msg_to_skype, "GET CALL %s PARTNER_HANDLE", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); switch_sleep(10000); sprintf(msg_to_skype, "ALTER CALL %s ANSWER", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); if (option_debug) DEBUGA_SKYPE("We answered a Skype RING on skype_call %s\n", SKYPIAX_P_LOG, id); - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); } else { /* we're owned, we're in a call, let's refuse */ sprintf(msg_to_skype, "ALTER CALL %s END HANGUP", id); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); switch_sleep(10000); DEBUGA_SKYPE ("We have NOT answered a Skype RING on skype_call %s, because we are already in a skypiax call\n", @@ -1378,79 +1382,79 @@ } } else { /* we are calling out */ - p->skype_callflow = CALLFLOW_STATUS_RINGING; - p->interface_state = SKYPIAX_STATE_RINGING; - //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + tech_pvt->skype_callflow = CALLFLOW_STATUS_RINGING; + tech_pvt->interface_state = SKYPIAX_STATE_RINGING; + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); + 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); } } else if (!strcasecmp(value, "EARLYMEDIA")) { - p->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA; - p->interface_state = SKYPIAX_STATE_DIALING; - //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); + tech_pvt->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n", SKYPIAX_P_LOG, id); } else if (!strcasecmp(value, "MISSED")) { DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id); } else if (!strcasecmp(value, "FINISHED")) { - //p->skype_callflow = CALLFLOW_STATUS_FINISHED; + //tech_pvt->skype_callflow = CALLFLOW_STATUS_FINISHED; if (option_debug) DEBUGA_SKYPE("skype_call %s now is DOWN\n", SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; + tech_pvt->skype_call_id[0] = '\0'; - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } - //p->interface_state = SKYPIAX_STATE_DOWN; + //tech_pvt->interface_state = SKYPIAX_STATE_DOWN; return CALLFLOW_INCOMING_HANGUP; } else { - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; } } else if (!strcasecmp(value, "CANCELLED")) { - p->skype_callflow = CALLFLOW_STATUS_CANCELLED; + tech_pvt->skype_callflow = CALLFLOW_STATUS_CANCELLED; if (option_debug) DEBUGA_SKYPE ("we tried to call Skype on skype_call %s and Skype has now CANCELLED\n", SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; + tech_pvt->skype_call_id[0] = '\0'; - if (p->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { + if (tech_pvt->interface_state != SKYPIAX_STATE_HANGUP_REQUESTED) { if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; return CALLFLOW_INCOMING_HANGUP; } else { - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; } } else if (!strcasecmp(value, "FAILED")) { - p->skype_callflow = CALLFLOW_STATUS_FAILED; + tech_pvt->skype_callflow = CALLFLOW_STATUS_FAILED; if (option_debug) DEBUGA_SKYPE ("we tried to call Skype on skype_call %s and Skype has now FAILED\n", SKYPIAX_P_LOG, id); - p->skype_call_id[0] = '\0'; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - p->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->skype_call_id[0] = '\0'; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } return CALLFLOW_INCOMING_HANGUP; } else if (!strcasecmp(value, "REFUSED")) { - if (!strcasecmp(id, p->skype_call_id)) { + if (!strcasecmp(id, tech_pvt->skype_call_id)) { /* this is the id of the call we are in, probably we generated it */ - p->skype_callflow = CALLFLOW_STATUS_REFUSED; + tech_pvt->skype_callflow = CALLFLOW_STATUS_REFUSED; if (option_debug) DEBUGA_SKYPE ("we tried to call Skype on skype_call %s and Skype has now REFUSED\n", SKYPIAX_P_LOG, id); - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - p->interface_state = SKYPIAX_STATE_DOWN; - p->skype_call_id[0] = '\0'; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_DOWN; + tech_pvt->skype_call_id[0] = '\0'; if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -1461,19 +1465,19 @@ } } else if (!strcasecmp(value, "ROUTING")) { - p->skype_callflow = CALLFLOW_STATUS_ROUTING; - p->interface_state = SKYPIAX_STATE_DIALING; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + tech_pvt->skype_callflow = CALLFLOW_STATUS_ROUTING; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); DEBUGA_SKYPE("skype_call: %s is now ROUTING\n", SKYPIAX_P_LOG, id); } else if (!strcasecmp(value, "UNPLACED")) { - p->skype_callflow = CALLFLOW_STATUS_UNPLACED; - p->interface_state = SKYPIAX_STATE_DIALING; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); + tech_pvt->skype_callflow = CALLFLOW_STATUS_UNPLACED; + tech_pvt->interface_state = SKYPIAX_STATE_DIALING; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); DEBUGA_SKYPE("skype_call: %s is now UNPLACED\n", SKYPIAX_P_LOG, id); } else if (!strcasecmp(value, "INPROGRESS")) { - p->skype_callflow = CALLFLOW_STATUS_INPROGRESS; - strncpy(p->skype_call_id, id, sizeof(p->skype_call_id) - 1); - p->interface_state = SKYPIAX_STATE_UP; + tech_pvt->skype_callflow = CALLFLOW_STATUS_INPROGRESS; + strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1); + tech_pvt->interface_state = SKYPIAX_STATE_UP; if (option_debug > 1) DEBUGA_SKYPE("skype_call: %s is now active\n", SKYPIAX_P_LOG, id); @@ -1488,36 +1492,36 @@ switch_threadattr_create(&thd_attr, skypiax_module_pool); switch_threadattr_detach_set(thd_attr, 1); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&p->tcp_srv_thread, thd_attr, - skypiax_do_tcp_srv_thread, p, skypiax_module_pool); + switch_thread_create(&tech_pvt->tcp_srv_thread, thd_attr, + skypiax_do_tcp_srv_thread, tech_pvt, skypiax_module_pool); DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPIAX_P_LOG); switch_threadattr_create(&thd_attr, skypiax_module_pool); switch_threadattr_detach_set(thd_attr, 1); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&p->tcp_cli_thread, thd_attr, - skypiax_do_tcp_cli_thread, p, skypiax_module_pool); + switch_thread_create(&tech_pvt->tcp_cli_thread, thd_attr, + skypiax_do_tcp_cli_thread, tech_pvt, skypiax_module_pool); DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); switch_sleep(100000); sprintf(msg_to_skype, "ALTER CALL %s SET_OUTPUT PORT=\"%d\"", id, - p->tcp_srv_port); - skypiax_skype_write(p, msg_to_skype); + tech_pvt->tcp_srv_port); + skypiax_skype_write(tech_pvt, msg_to_skype); switch_sleep(100000); sprintf(msg_to_skype, "ALTER CALL %s SET_INPUT PORT=\"%d\"", id, - p->tcp_cli_port); - skypiax_skype_write(p, msg_to_skype); + tech_pvt->tcp_cli_port); + skypiax_skype_write(tech_pvt, msg_to_skype); switch_sleep(100000); } - p->skype_callflow = SKYPIAX_STATE_UP; + tech_pvt->skype_callflow = SKYPIAX_STATE_UP; //FIXME switch_core_session_t **new_session; //FIXME *new_session=switch_loadable_module_create_interface(skypiax_endpoint_interface, pool); - if (!p->tech_pvt || !tech_pvt->session) { //FIXME FIXME FIXME + if (!tech_pvt->session) { //FIXME FIXME FIXME switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; + //private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; NOTICA("New Inbound Channel!\n", SKYPIAX_P_LOG); @@ -1526,27 +1530,28 @@ switch_core_session_request(skypiax_endpoint_interface, NULL)) != 0) { switch_core_session_add_stream(session, NULL); - if ((tech_pvt = - (private_t *) switch_core_session_alloc(session, - sizeof(private_t))) != - 0) { channel = switch_core_session_get_channel(session); - skypiax_tech_init(tech_pvt, session, p); + skypiax_tech_init(tech_pvt, session); +#if 0 + if ((tech_pvt = (private_t *) switch_core_session_alloc(session, sizeof(private_t))) != 0) { + channel = switch_core_session_get_channel(session); + skypiax_tech_init(tech_pvt, session); } else { ERRORA("Hey where is my memory pool?\n", SKYPIAX_P_LOG); switch_core_session_destroy(&session); break; } +#endif if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), - "skypiax", "XML", p->callid_name, - p->callid_number, NULL, "calling_ani", + "skypiax", "XML", tech_pvt->callid_name, + tech_pvt->callid_number, NULL, "calling_ani", NULL, NULL, "mod_skypiax", "public", "5000")) != 0) { char name[128]; - //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", p->name, tech_pvt->caller_profile->destination_number); - switch_snprintf(name, sizeof(name), "skypiax/%s", p->name); + //switch_snprintf(name, sizeof(name), "skypiax/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); + switch_snprintf(name, sizeof(name), "skypiax/%s", tech_pvt->name); switch_channel_set_name(channel, name); switch_channel_set_caller_profile(channel, tech_pvt->caller_profile); @@ -1562,14 +1567,8 @@ switch_channel_mark_answered(channel); } else { switch_core_session_t *session = NULL; - private_t *tech_pvt = NULL; switch_channel_t *channel = NULL; - if (p->tech_pvt) { - tech_pvt = p->tech_pvt; - } else { - ERRORA("No p->tech_pvt???\n", SKYPIAX_P_LOG); - } if (tech_pvt->session) { session = tech_pvt->session; } else { @@ -1612,7 +1611,7 @@ return 0; } -int skypiax_skype_senddigit(struct skypiax_interface *p, char digit) +int skypiax_skype_senddigit(private_t *tech_pvt, char digit) { char msg_to_skype[1024]; if (option_debug > 10) { @@ -1621,9 +1620,9 @@ NOTICA("DIGIT received: %c\n", SKYPIAX_P_LOG, digit); - sprintf(msg_to_skype, "SET CALL %s DTMF %c", p->skype_call_id, digit); + sprintf(msg_to_skype, "SET CALL %s DTMF %c", tech_pvt->skype_call_id, digit); - skypiax_skype_write(p, msg_to_skype); + skypiax_skype_write(tech_pvt, msg_to_skype); if (option_debug > 10) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); @@ -1631,15 +1630,15 @@ return 0; } -int skypiax_skype_call(struct skypiax_interface *p, char *idest, int timeout, +int skypiax_skype_call(private_t *tech_pvt, char *idest, int timeout, switch_core_session_t * session) { char *rdest; char msg_to_skype[1024]; - private_t *tech_pvt; + //private_t *tech_pvt; switch_caller_profile_t *caller_profile; - tech_pvt = p->tech_pvt; + //tech_pvt = p; if (option_debug > 10) { DEBUGA_PBX("ENTERING FUNC\n", SKYPIAX_P_LOG); @@ -1652,13 +1651,13 @@ if (option_debug) DEBUGA_SKYPE("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest); NOTICA("Calling Skype, rdest is: %s\n", SKYPIAX_P_LOG, rdest); - skypiax_skype_write(p, "SET AGC OFF"); + skypiax_skype_write(tech_pvt, "SET AGC OFF"); switch_sleep(10000); - skypiax_skype_write(p, "SET AEC OFF"); + skypiax_skype_write(tech_pvt, "SET AEC OFF"); switch_sleep(10000); sprintf(msg_to_skype, "CALL %s", rdest); - if (skypiax_skype_write(p, msg_to_skype) < 0) { + if (skypiax_skype_write(tech_pvt, msg_to_skype) < 0) { ERRORA("failed to communicate with Skype client, now exit\n", SKYPIAX_P_LOG); if (option_debug > 10) { @@ -1670,6 +1669,6 @@ caller_profile = tech_pvt->caller_profile; caller_profile->destination_number = rdest; - //FIXME ast_queue_control(p->owner, SKYPIAX_CONTROL_RINGING); + //FIXME ast_queue_control(tech_pvt->owner, SKYPIAX_CONTROL_RINGING); return 0; }