2007-05-24 03:42:40 +00:00
|
|
|
#include "openzap.h"
|
|
|
|
#include "zap_analog.h"
|
|
|
|
|
2007-05-24 21:57:03 +00:00
|
|
|
|
|
|
|
static void *test_call(zap_thread_t *me, void *obj)
|
|
|
|
{
|
|
|
|
zap_channel_t *chan = (zap_channel_t *) obj;
|
|
|
|
uint8_t frame[1024];
|
|
|
|
zap_size_t len;
|
|
|
|
|
|
|
|
|
2007-05-27 04:42:10 +00:00
|
|
|
zap_sleep(10 * 1000);
|
2007-05-24 21:57:03 +00:00
|
|
|
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_DEBUG, "answer call and start echo test\n");
|
2007-05-24 21:57:03 +00:00
|
|
|
|
|
|
|
zap_set_state_locked(chan, ZAP_CHANNEL_STATE_UP);
|
|
|
|
|
|
|
|
while (chan->state == ZAP_CHANNEL_STATE_UP) {
|
|
|
|
zap_wait_flag_t flags = ZAP_READ;
|
|
|
|
|
|
|
|
if (zap_channel_wait(chan, &flags, -1) == ZAP_FAIL) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
len = sizeof(frame);
|
|
|
|
if (flags & ZAP_READ) {
|
|
|
|
if (zap_channel_read(chan, frame, &len) == ZAP_SUCCESS) {
|
2007-05-25 14:42:34 +00:00
|
|
|
//zap_log(ZAP_LOG_DEBUG, "WRITE %d\n", len);
|
2007-05-24 21:57:03 +00:00
|
|
|
zap_channel_write(chan, frame, &len);
|
|
|
|
} else {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (chan->state == ZAP_CHANNEL_STATE_UP) {
|
|
|
|
zap_set_state_locked(chan, ZAP_CHANNEL_STATE_BUSY);
|
|
|
|
}
|
|
|
|
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_DEBUG, "call over\n");
|
2007-05-24 21:57:03 +00:00
|
|
|
|
2007-05-27 04:42:10 +00:00
|
|
|
return 0;
|
2007-05-24 21:57:03 +00:00
|
|
|
}
|
|
|
|
|
2007-05-24 03:42:40 +00:00
|
|
|
static ZIO_SIGNAL_CB_FUNCTION(on_signal)
|
|
|
|
{
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_DEBUG, "got sig [%s]\n", zap_signal_event2str(sigmsg->event_id));
|
2007-05-24 21:57:03 +00:00
|
|
|
|
|
|
|
switch(sigmsg->event_id) {
|
|
|
|
case ZAP_SIGEVENT_START:
|
|
|
|
zap_set_state_locked(sigmsg->channel, ZAP_CHANNEL_STATE_RING);
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_DEBUG, "launching thread and indicating ring\n");
|
2007-05-24 21:57:03 +00:00
|
|
|
zap_thread_create_detached(test_call, sigmsg->channel);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return ZAP_SUCCESS;
|
2007-05-24 03:42:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
zap_span_t *span;
|
2007-05-31 02:41:50 +00:00
|
|
|
int span_id;
|
2007-05-31 20:15:16 +00:00
|
|
|
|
2007-05-31 02:41:50 +00:00
|
|
|
if (argc < 2) {
|
|
|
|
printf("usage %s <spanno>\n", argv[0]);
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
span_id = atoi(argv[1]);
|
2007-05-24 03:42:40 +00:00
|
|
|
|
|
|
|
zap_global_set_default_logger(ZAP_LOG_LEVEL_DEBUG);
|
|
|
|
|
|
|
|
if (zap_global_init() != ZAP_SUCCESS) {
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_ERROR, "Error loading OpenZAP\n");
|
2007-05-24 03:42:40 +00:00
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_DEBUG, "OpenZAP loaded\n");
|
2007-05-24 03:42:40 +00:00
|
|
|
|
2007-05-31 02:41:50 +00:00
|
|
|
if (zap_span_find(span_id, &span) != ZAP_SUCCESS) {
|
2007-05-25 14:42:34 +00:00
|
|
|
zap_log(ZAP_LOG_ERROR, "Error finding OpenZAP span\n");
|
2007-05-31 02:41:50 +00:00
|
|
|
goto done;
|
2007-05-24 03:42:40 +00:00
|
|
|
}
|
|
|
|
|
2007-05-30 01:01:32 +00:00
|
|
|
if (zap_analog_configure_span(span, "us", 2000, 11, on_signal) != ZAP_SUCCESS) {
|
|
|
|
zap_log(ZAP_LOG_ERROR, "Error configuring OpenZAP span\n");
|
2007-05-31 02:41:50 +00:00
|
|
|
goto done;
|
2007-05-30 01:01:32 +00:00
|
|
|
}
|
2007-05-24 03:42:40 +00:00
|
|
|
zap_analog_start(span);
|
|
|
|
|
|
|
|
while(zap_test_flag(span->analog_data, ZAP_ANALOG_RUNNING)) {
|
2007-05-27 04:42:10 +00:00
|
|
|
zap_sleep(1 * 1000);
|
2007-05-24 03:42:40 +00:00
|
|
|
}
|
|
|
|
|
2007-05-31 02:41:50 +00:00
|
|
|
|
|
|
|
done:
|
|
|
|
|
2007-05-24 03:42:40 +00:00
|
|
|
zap_global_destroy();
|
|
|
|
|
|
|
|
}
|