]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
windows build building again. most of the functions filled in for windows. more...
authorMichael Jerris <mike@jerris.com>
Sat, 19 May 2007 05:05:29 +0000 (05:05 +0000)
committerMichael Jerris <mike@jerris.com>
Sat, 19 May 2007 05:05:29 +0000 (05:05 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@37 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/include/openzap.h
libs/openzap/src/include/zap_types.h
libs/openzap/src/openzap.c
libs/openzap/src/zap_wanpipe.c

index c6e4e79343d31e454e8809408eed2724bacb6e27..d2a6fc08e655bb415fb922b672ddd1dd054f351e 100644 (file)
@@ -61,6 +61,9 @@
 #ifndef strcasecmp
 #define strcasecmp(s1, s2) _stricmp(s1, s2)
 #endif
+#ifndef strncasecmp
+#define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
+#endif
 #ifndef snprintf
 #define snprintf _snprintf
 #endif
index b8613e613b950742824b8a54335fca22be457f68..1d274de2b64d368142571936034a94dbc79f3a56 100644 (file)
@@ -37,6 +37,7 @@
 #ifdef WIN32
 #include <windows.h>
 typedef HANDLE zap_socket_t;
+typedef unsigned __int32 uint32_t;
 #else
 #include <stdint.h>
 typedef int zap_socket_t;
index 37a39c71cfbc792966dbe35d97b25bd7eda04387..eb32bb35ec1eca6b76b2e4458c3b748cb5217cfe 100644 (file)
@@ -703,7 +703,7 @@ ZINT_CODEC_FUNCTION(zint_alaw2ulaw)
 zap_status_t zap_channel_read(zap_channel_t *zchan, void *data, zap_size_t *datalen)
 {
        zap_status_t status = ZAP_FAIL;
-       zint_codec_t codec_func;
+       zint_codec_t codec_func = NULL;
        zap_size_t max = *datalen;
 
        assert(zchan != NULL);
@@ -772,7 +772,7 @@ zap_status_t zap_channel_read(zap_channel_t *zchan, void *data, zap_size_t *data
                        sln = sln_buf;
                }
 
-               teletone_dtmf_detect (&zchan->dtmf_detect, sln, slen);
+               teletone_dtmf_detect(&zchan->dtmf_detect, sln, (int)slen);
                teletone_dtmf_get(&zchan->dtmf_detect, digit_str, sizeof(digit_str));
                if(digit_str[0]) {
                        zint_event_cb_t event_callback = NULL;
@@ -806,7 +806,7 @@ zap_status_t zap_channel_read(zap_channel_t *zchan, void *data, zap_size_t *data
 zap_status_t zap_channel_write(zap_channel_t *zchan, void *data, zap_size_t *datalen)
 {
        zap_status_t status = ZAP_FAIL;
-       zint_codec_t codec_func;
+       zint_codec_t codec_func = NULL;
        zap_size_t dtmf_blen, max = *datalen;
        
        assert(zchan != NULL);
@@ -844,7 +844,7 @@ zap_status_t zap_channel_write(zap_channel_t *zchan, void *data, zap_size_t *dat
        if (zchan->dtmf_buffer && (dtmf_blen = zap_buffer_inuse(zchan->dtmf_buffer))) {
                zap_size_t dlen = *datalen;
                uint8_t auxbuf[1024];
-               uint32_t len, br;
+               zap_size_t len, br;
 
                if (zchan->native_codec != ZAP_CODEC_SLIN) {
                        dlen *= 2;
index cc86622b57a54712fcea5f009f22ab1653f72d89..b3fb8b297faf0bf0ef7a96277acd6ad5071378c9 100644 (file)
@@ -330,7 +330,7 @@ static ZINT_CLOSE_FUNCTION(wanpipe_close)
 static ZINT_COMMAND_FUNCTION(wanpipe_command)
 {
        wanpipe_tdm_api_t tdm_api;
-       int err;
+       int err = 0;
 
        ZINT_COMMAND_MUZZLE;
        
@@ -367,7 +367,74 @@ static ZINT_COMMAND_FUNCTION(wanpipe_command)
        return ZAP_SUCCESS;
 }
 
-static ZINT_WAIT_FUNCTION(wanpipe_wait)
+#ifdef __WINDOWS__
+
+static ZINT_WAIT_FUNCTION(wanpipe_wait_windows)
+{
+       API_POLL_STRUCT api_poll;
+       zap_wait_flag_t inflags = *flags;
+
+       memset(&api_poll, 0x00, sizeof(API_POLL_STRUCT));
+       
+       api_poll.user_flags_bitmap = inflags;
+       api_poll.timeout = to;
+
+       if(DoApiPollCommand(zchan->sockfd, &api_poll)){
+               snprintf(zchan->last_error, sizeof(zchan->last_error), "Poll failed");
+               return ZAP_FAIL;
+       }
+
+       *flags = ZAP_NO_FLAGS;
+
+       switch(api_poll.operation_status)
+       {
+               case SANG_STATUS_RX_DATA_AVAILABLE:
+                       break;
+
+               default:
+                       snprintf(zchan->last_error, sizeof(zchan->last_error), "Unknown Operation Status: %d\n", api_poll.operation_status);
+                       return ZAP_FAIL;
+       }
+
+       if(api_poll.poll_events_bitmap == 0){
+               snprintf(zchan->last_error, sizeof(zchan->last_error), "invalid Poll Events bitmap: 0x%X\n", api_poll.poll_events_bitmap);
+               return ZAP_FAIL;
+       }
+
+       if (api_poll.poll_events_bitmap & POLL_EVENT_TIMEOUT) {
+               return ZAP_TIMEOUT;
+       }
+
+       if (api_poll.poll_events_bitmap & POLL_EVENT_RX_DATA) {
+               *flags |= ZAP_READ;
+       }
+
+       if (api_poll.poll_events_bitmap & POLL_EVENT_TX_READY) {
+               *flags |= ZAP_WRITE;
+       }
+
+       if (api_poll.poll_events_bitmap & POLL_EVENT_LINK_STATE) {
+               *flags |= ZAP_ERROR;
+       }
+
+       return ZAP_SUCCESS;
+}
+
+static ZINT_READ_FUNCTION(wanpipe_read_windows)
+{
+       ZINT_READ_MUZZLE;
+       return ZAP_FAIL;
+}
+
+static ZINT_WRITE_FUNCTION(wanpipe_write_windows)
+{
+       ZINT_WRITE_MUZZLE;
+       return ZAP_FAIL;
+}
+
+#else
+
+static ZINT_WAIT_FUNCTION(wanpipe_wait_unix)
 {
        fd_set read_fds, write_fds, error_fds, *r = NULL, *w = NULL, *e = NULL;
        zap_wait_flag_t inflags = *flags;
@@ -430,8 +497,6 @@ static ZINT_WAIT_FUNCTION(wanpipe_wait)
        return ZAP_SUCCESS;
 }
 
-#ifndef __WINDOWS__
-
 static ZINT_READ_FUNCTION(wanpipe_read_unix)
 {
        int rx_len = 0;
@@ -502,8 +567,9 @@ static ZINT_WRITE_FUNCTION(wanpipe_write_unix)
 
 static ZINT_READ_FUNCTION(wanpipe_read)
 {
-
-#ifndef WIN32
+#ifdef __WINDOWS__
+       return wanpipe_read_windows(zchan, data, datalen);
+#else
        return wanpipe_read_unix(zchan, data, datalen);
 #endif
 
@@ -511,13 +577,20 @@ static ZINT_READ_FUNCTION(wanpipe_read)
 
 static ZINT_WRITE_FUNCTION(wanpipe_write)
 {
-       ZINT_WRITE_MUZZLE;
-
-#ifndef WIN32
+#ifdef __WINDOWS__
+       return wanpipe_write_windows(zchan, data, datalen);
+#else
        return wanpipe_write_unix(zchan, data, datalen);
 #endif
+}
 
-       return ZAP_FAIL;
+static ZINT_WAIT_FUNCTION(wanpipe_wait)
+{
+#ifdef __WINDOWS__
+       return wanpipe_wait_windows(zchan, flags, to);
+#else
+       return wanpipe_wait_unix(zchan, flags, to);
+#endif
 }
 
 zap_status_t wanpipe_init(zap_software_interface_t **zint)
@@ -539,6 +612,12 @@ zap_status_t wanpipe_init(zap_software_interface_t **zint)
        return ZAP_SUCCESS;
 }
 
+#if defined(__WINDOWS__)
+#define close(handle) CloseHandle(handle)
+#endif
+
+#define zap_wanpipe_socket_close(it) if (it != WP_INVALID_SOCKET) { close(it); it = WP_INVALID_SOCKET;}
+
 zap_status_t wanpipe_destroy(void)
 {
        unsigned int i,j;
@@ -551,7 +630,7 @@ zap_status_t wanpipe_destroy(void)
                                zap_channel_t *cur_chan = &cur_span->channels[j];
                                if (zap_test_flag(cur_chan, ZAP_CHANNEL_CONFIGURED)) {
                                        zap_log(ZAP_LOG_INFO, "Closing channel %u:%u fd:%d\n", cur_chan->span_id, cur_chan->chan_id, cur_chan->sockfd);
-                                       zap_socket_close(cur_chan->sockfd);
+                                       zap_wanpipe_socket_close(cur_chan->sockfd);
                                }
                        }
                }