[Freeswitch-branches] [commit] r10750 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
Author: gmaruzz Date: Sat Dec 13 03:31:50 2008 New Revision: 10750 Log: skypiax: cleaning, restructuring 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 Sat Dec 13 03:31:50 2008 @@ -20,6 +20,7 @@ int fd; int calls; char hold_music[256]; + skypiax_interface_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES]; switch_mutex_t *mutex; } globals; @@ -30,14 +31,11 @@ switch_endpoint_interface_t *skypiax_endpoint_interface; switch_memory_pool_t *skypiax_module_pool = NULL; int running = 1; -skypiax_interface_t SKYPIAX_INTERFACES[SKYPIAX_MAX_INTERFACES]; switch_core_session_t *global_session = NULL; #ifdef WIN32 HANDLE win32_hGlobal_ThreadShutdownEvent; HWND win32_hInit_MainWindowHandle; #endif /* WIN32 */ -switch_thread_t *skypiax_do_controldev_thread_thread; -switch_thread_t *do_skype_thread_thread; /*************************************************/ /*************************************************/ /*************************************************/ @@ -509,7 +507,7 @@ switch_core_session_add_stream(*new_session, NULL); if ((tech_pvt = (private_t *) switch_core_session_alloc(*new_session, sizeof(private_t))) != 0) { - tech_pvt->p = &SKYPIAX_INTERFACES[2]; //FIXME + tech_pvt->p = &globals.SKYPIAX_INTERFACES[2]; //FIXME channel = switch_core_session_get_channel(*new_session); skypiax_tech_init(tech_pvt, *new_session, NULL); } else { @@ -754,44 +752,54 @@ if (name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "name=%s\n", name); } + +#ifndef WIN32 + if (!XInitThreads()) { + ERRORA("Not initialized XInitThreads!\n", SKYPIAX_P_LOG); + } else { + DEBUGA_SKYPE("Initialized XInitThreads!\n", SKYPIAX_P_LOG); + } + switch_sleep(100); +#endif /* WIN32 */ + if (interface_id && interface_id < SKYPIAX_MAX_INTERFACES) { struct skypiax_interface newconf; switch_threadattr_t *do_skype_thd_attr = NULL; switch_threadattr_t *skypiax_do_controldev_thread_thd_attr = NULL; memset(&newconf, '\0', sizeof(newconf)); - SKYPIAX_INTERFACES[interface_id] = newconf; + globals.SKYPIAX_INTERFACES[interface_id] = newconf; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CONFIGURING interface_id=%d\n", interface_id); - switch_set_string(SKYPIAX_INTERFACES[interface_id].interface_id, id); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].interface_id, id); if (name) { - switch_set_string(SKYPIAX_INTERFACES[interface_id].name, name); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, name); } else { - switch_set_string(SKYPIAX_INTERFACES[interface_id].name, "N/A"); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].name, "N/A"); } - switch_set_string(SKYPIAX_INTERFACES[interface_id].X11_display, X11_display); - switch_set_string(SKYPIAX_INTERFACES[interface_id].context, context); - switch_set_string(SKYPIAX_INTERFACES[interface_id].dialplan, dialplan); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].X11_display, X11_display); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].context, context); + switch_set_string(globals.SKYPIAX_INTERFACES[interface_id].dialplan, dialplan); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", - interface_id, SKYPIAX_INTERFACES[interface_id].X11_display); + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].X11_display=%s\n", + interface_id, globals.SKYPIAX_INTERFACES[interface_id].X11_display); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d SKYPIAX_INTERFACES[interface_id].name=%s\n", - interface_id, SKYPIAX_INTERFACES[interface_id].name); + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].name=%s\n", + interface_id, globals.SKYPIAX_INTERFACES[interface_id].name); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d SKYPIAX_INTERFACES[interface_id].context=%s\n", - interface_id, SKYPIAX_INTERFACES[interface_id].context); + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].context=%s\n", + interface_id, globals.SKYPIAX_INTERFACES[interface_id].context); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "interface_id=%d SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", - interface_id, SKYPIAX_INTERFACES[interface_id].dialplan); + "interface_id=%d globals.SKYPIAX_INTERFACES[interface_id].dialplan=%s\n", + interface_id, globals.SKYPIAX_INTERFACES[interface_id].dialplan); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "STARTING interface_id=%d\n", interface_id); switch_threadattr_create(&do_skype_thd_attr, skypiax_module_pool); //switch_threadattr_detach_set(do_skype_thd_attr, 1); switch_threadattr_stacksize_set(do_skype_thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&do_skype_thread_thread, do_skype_thd_attr, do_skype_thread, - &SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); + switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread, do_skype_thd_attr, do_skype_thread, + &globals.SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); switch_sleep(100000); @@ -800,14 +808,14 @@ //switch_threadattr_detach_set(skypiax_do_controldev_thread_thd_attr, 1); switch_threadattr_stacksize_set(skypiax_do_controldev_thread_thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&skypiax_do_controldev_thread_thread, + switch_thread_create(&globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread, skypiax_do_controldev_thread_thd_attr, skypiax_do_controldev_thread, - &SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); + &globals.SKYPIAX_INTERFACES[interface_id], skypiax_module_pool); switch_sleep(1000000); - skypiax_skypeaudio_init(&SKYPIAX_INTERFACES[interface_id]); + skypiax_skypeaudio_init(&globals.SKYPIAX_INTERFACES[interface_id]); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "STARTED interface_id=%d\n", interface_id); @@ -822,22 +830,22 @@ } for (i = 0; i < SKYPIAX_MAX_INTERFACES; i++) { - if (strlen(SKYPIAX_INTERFACES[i].name)) { + if (strlen(globals.SKYPIAX_INTERFACES[i].name)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d SKYPIAX_INTERFACES[%d].interface_id=%s\n", i, i, - SKYPIAX_INTERFACES[i].interface_id); + "i=%d globals.SKYPIAX_INTERFACES[%d].interface_id=%s\n", i, i, + globals.SKYPIAX_INTERFACES[i].interface_id); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d SKYPIAX_INTERFACES[%d].X11_display=%s\n", i, i, - SKYPIAX_INTERFACES[i].X11_display); + "i=%d globals.SKYPIAX_INTERFACES[%d].X11_display=%s\n", i, i, + globals.SKYPIAX_INTERFACES[i].X11_display); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d SKYPIAX_INTERFACES[%d].name=%s\n", i, i, - SKYPIAX_INTERFACES[i].name); + "i=%d globals.SKYPIAX_INTERFACES[%d].name=%s\n", i, i, + globals.SKYPIAX_INTERFACES[i].name); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d SKYPIAX_INTERFACES[%d].context=%s\n", i, i, - SKYPIAX_INTERFACES[i].context); + "i=%d globals.SKYPIAX_INTERFACES[%d].context=%s\n", i, i, + globals.SKYPIAX_INTERFACES[i].context); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, - "i=%d SKYPIAX_INTERFACES[%d].dialplan=%s\n", i, i, - SKYPIAX_INTERFACES[i].dialplan); + "i=%d globals.SKYPIAX_INTERFACES[%d].dialplan=%s\n", i, i, + globals.SKYPIAX_INTERFACES[i].dialplan); } } } @@ -849,21 +857,12 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load) { - struct skypiax_interface *p = NULL; + struct skypiax_interface *p = NULL; //for logging skypiax_module_pool = pool; memset(&globals, '\0', sizeof(globals)); - memset(SKYPIAX_INTERFACES, '\0', sizeof(SKYPIAX_INTERFACES)); - -#ifndef WIN32 - if (!XInitThreads()) { - ERRORA("Not initialized XInitThreads!\n", SKYPIAX_P_LOG); - } else { - DEBUGA_SKYPE("Initialized XInitThreads!\n", SKYPIAX_P_LOG); - } - switch_sleep(100); -#endif /* _WINDOWS_ */ + //memset(globals.SKYPIAX_INTERFACES, '\0', sizeof(globals.SKYPIAX_INTERFACES)); load_config(); @@ -892,13 +891,20 @@ struct skypiax_interface *p = NULL; switch_status_t status; unsigned int howmany = 8; +int interface_id; - p = &SKYPIAX_INTERFACES[2]; + //p = &globals.SKYPIAX_INTERFACES[2]; running = 0; +for(interface_id=0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++){ + p = &globals.SKYPIAX_INTERFACES[interface_id]; + +if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread){ switch_file_write(p->AsteriskHandlesAst.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die + } +if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread){ #ifdef WIN32 if (SendMessage(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()); @@ -917,12 +923,18 @@ XSendEvent(p->AsteriskHandlesAst.disp, p->AsteriskHandlesAst.win, False, 0, &e); XSync(p->AsteriskHandlesAst.disp, False); #endif + } while (x) { x--; switch_yield(20000); } - switch_thread_join(&status, skypiax_do_controldev_thread_thread); - switch_thread_join(&status, do_skype_thread_thread); +if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread){ + switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_controldev_thread_thread); + } +if(globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread){ + switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_do_skype_thread_thread); + } + } return SWITCH_STATUS_SUCCESS; } 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 Sat Dec 13 03:31:50 2008 @@ -173,6 +173,8 @@ switch_file_t *audioskypepipe[2]; 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[160]; int audiobuf_is_loaded; 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 Sat Dec 13 03:31:50 2008 @@ -5,7 +5,6 @@ extern switch_core_session_t *global_session; extern switch_endpoint_interface_t *skypiax_endpoint_interface; extern int running; -extern skypiax_interface_t SKYPIAX_INTERFACES; #ifdef WIN32 extern HWND win32_hInit_MainWindowHandle; #endif /* WIN32 */ @@ -575,7 +574,7 @@ /* destroy window class */ struct skypiax_interface *p; - DWORD MsgWaitResult; + //DWORD MsgWaitResult; p = obj; switch_file_pipe_create_ex(&p->AsteriskHandlesAst.fdesc[0], @@ -603,7 +602,7 @@ if (!running) break; while (GetMessage(&oMessage, 0, 0, 0)) { - break; + //break; TranslateMessage(&oMessage); DispatchMessage(&oMessage); }
participants (1)
-
FreeSWITCH SVN