[Freeswitch-branches] [commit] r11119 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax

FreeSWITCH SVN gmaruzz at freeswitch.org
Sun Jan 11 04:13:49 PST 2009


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;
 }



More information about the Freeswitch-branches mailing list