windows build building again. most of the functions filled in for windows. more to come!

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@37 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Michael Jerris 2007-05-19 05:05:29 +00:00
parent 9fd18e7e1a
commit ed59987e25
4 changed files with 98 additions and 15 deletions

View 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

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

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

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