From 5aa9ff86a8a46a57de6749381320c6775e174eb7 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Wed, 6 Jan 2010 17:00:19 +0000 Subject: [PATCH] added span signaling status APIs git-svn-id: http://svn.openzap.org/svn/openzap/branches/sangoma_boost@947 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/freetdm/src/include/openzap.h | 10 ++- libs/freetdm/src/include/zap_types.h | 23 ++++--- .../ozmod_sangoma_boost/ozmod_sangoma_boost.c | 57 +++++++++++++++-- .../sangoma_boost_interface.h | 61 +++++++++++++------ libs/freetdm/src/zap_io.c | 53 +++++++++++++--- 5 files changed, 165 insertions(+), 39 deletions(-) diff --git a/libs/freetdm/src/include/openzap.h b/libs/freetdm/src/include/openzap.h index 15ddf350c1..5a311e6c6f 100644 --- a/libs/freetdm/src/include/openzap.h +++ b/libs/freetdm/src/include/openzap.h @@ -568,7 +568,10 @@ struct zap_span { teletone_multi_tone_t tone_finder[ZAP_TONEMAP_INVALID+1]; zap_channel_t *channels[ZAP_MAX_CHANNELS_SPAN+1]; zio_channel_outgoing_call_t outgoing_call; - zio_channel_get_sig_status_t get_sig_status; + zio_channel_set_sig_status_t set_channel_sig_status; + zio_channel_get_sig_status_t get_channel_sig_status; + zio_span_set_sig_status_t set_span_sig_status; + zio_span_get_sig_status_t get_span_sig_status; zio_channel_request_t channel_request; zap_span_start_t start; zap_span_stop_t stop; @@ -697,7 +700,10 @@ OZ_DECLARE(zap_status_t) zap_fsk_data_add_mdmf(zap_fsk_data_state_t *state, zap_ OZ_DECLARE(zap_status_t) zap_fsk_data_add_checksum(zap_fsk_data_state_t *state); OZ_DECLARE(zap_status_t) zap_fsk_data_add_sdmf(zap_fsk_data_state_t *state, const char *date, char *number); OZ_DECLARE(zap_status_t) zap_channel_outgoing_call(zap_channel_t *zchan); -OZ_DECLARE(zap_status_t) zap_channel_get_sig_status(zap_channel_t *zchan, zap_channel_sig_status_t *status); +OZ_DECLARE(zap_status_t) zap_channel_set_sig_status(zap_channel_t *zchan, zap_signaling_status_t status); +OZ_DECLARE(zap_status_t) zap_channel_get_sig_status(zap_channel_t *zchan, zap_signaling_status_t *status); +OZ_DECLARE(zap_status_t) zap_span_set_sig_status(zap_span_t *span, zap_signaling_status_t status); +OZ_DECLARE(zap_status_t) zap_span_get_sig_status(zap_span_t *span, zap_signaling_status_t *status); OZ_DECLARE(void) zap_channel_rotate_tokens(zap_channel_t *zchan); OZ_DECLARE(void) zap_channel_clear_detected_tones(zap_channel_t *zchan); OZ_DECLARE(void) zap_channel_clear_needed_tones(zap_channel_t *zchan); diff --git a/libs/freetdm/src/include/zap_types.h b/libs/freetdm/src/include/zap_types.h index 98571e9b84..eb5c698f5e 100644 --- a/libs/freetdm/src/include/zap_types.h +++ b/libs/freetdm/src/include/zap_types.h @@ -187,20 +187,20 @@ typedef enum { } zap_signal_type_t; /*! - \brief Signaling status on the channel + \brief Signaling status on a given span or specific channel on protocols that support it */ typedef enum { - /* The channel signaling link is down (no d-chans up in the span/group, MFC-R2 bit pattern unidentified) */ + /* The signaling link is down (no d-chans up in the span/group, MFC-R2 bit pattern unidentified) */ ZAP_SIG_STATE_DOWN, - /* The channel signaling link is suspended (MFC-R2 bit pattern blocked, ss7 blocked?) */ + /* The signaling link is suspended (MFC-R2 bit pattern blocked, ss7 blocked?) */ ZAP_SIG_STATE_SUSPENDED, - /* The channel signaling link is ready and calls can be placed */ + /* The signaling link is ready and calls can be placed */ ZAP_SIG_STATE_UP, /* Invalid status */ ZAP_SIG_STATE_INVALID -} zap_channel_sig_status_t; +} zap_signaling_status_t; #define SIGSTATUS_STRINGS "DOWN", "SUSPENDED", "UP", "INVALID" -ZAP_STR2ENUM_P(zap_str2zap_channel_sig_status, zap_sig_status2str, zap_channel_sig_status_t) +ZAP_STR2ENUM_P(zap_str2zap_signaling_status, zap_signaling_status2str, zap_signaling_status_t) typedef enum { ZAP_SIGEVENT_START, @@ -470,7 +470,10 @@ typedef zap_status_t (*zap_stream_handle_write_function_t) (zap_stream_handle_t #define ZIO_CHANNEL_REQUEST_ARGS (zap_span_t *span, uint32_t chan_id, zap_direction_t direction, zap_caller_data_t *caller_data, zap_channel_t **zchan) #define ZIO_CHANNEL_OUTGOING_CALL_ARGS (zap_channel_t *zchan) -#define ZIO_CHANNEL_GET_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_channel_sig_status_t *status) +#define ZIO_CHANNEL_SET_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_signaling_status_t status) +#define ZIO_CHANNEL_GET_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_signaling_status_t *status) +#define ZIO_SPAN_SET_SIG_STATUS_ARGS (zap_span_t *span, zap_signaling_status_t status) +#define ZIO_SPAN_GET_SIG_STATUS_ARGS (zap_span_t *span, zap_signaling_status_t *status) #define ZIO_SPAN_POLL_EVENT_ARGS (zap_span_t *span, uint32_t ms) #define ZIO_SPAN_NEXT_EVENT_ARGS (zap_span_t *span, zap_event_t **event) #define ZIO_SIGNAL_CB_ARGS (zap_sigmsg_t *sigmsg) @@ -497,7 +500,10 @@ typedef zap_status_t (*zap_stream_handle_write_function_t) (zap_stream_handle_t typedef zap_status_t (*zio_channel_request_t) ZIO_CHANNEL_REQUEST_ARGS ; typedef zap_status_t (*zio_channel_outgoing_call_t) ZIO_CHANNEL_OUTGOING_CALL_ARGS ; +typedef zap_status_t (*zio_channel_set_sig_status_t) ZIO_CHANNEL_SET_SIG_STATUS_ARGS; typedef zap_status_t (*zio_channel_get_sig_status_t) ZIO_CHANNEL_GET_SIG_STATUS_ARGS; +typedef zap_status_t (*zio_span_set_sig_status_t) ZIO_SPAN_SET_SIG_STATUS_ARGS; +typedef zap_status_t (*zio_span_get_sig_status_t) ZIO_SPAN_GET_SIG_STATUS_ARGS; typedef zap_status_t (*zio_span_poll_event_t) ZIO_SPAN_POLL_EVENT_ARGS ; typedef zap_status_t (*zio_span_next_event_t) ZIO_SPAN_NEXT_EVENT_ARGS ; typedef zap_status_t (*zio_signal_cb_t) ZIO_SIGNAL_CB_ARGS ; @@ -525,7 +531,10 @@ typedef zap_status_t (*zio_api_t) ZIO_API_ARGS ; #define ZIO_CHANNEL_REQUEST_FUNCTION(name) zap_status_t name ZIO_CHANNEL_REQUEST_ARGS #define ZIO_CHANNEL_OUTGOING_CALL_FUNCTION(name) zap_status_t name ZIO_CHANNEL_OUTGOING_CALL_ARGS +#define ZIO_CHANNEL_SET_SIG_STATUS_FUNCTION(name) zap_status_t name ZIO_CHANNEL_SET_SIG_STATUS_ARGS #define ZIO_CHANNEL_GET_SIG_STATUS_FUNCTION(name) zap_status_t name ZIO_CHANNEL_GET_SIG_STATUS_ARGS +#define ZIO_SPAN_SET_SIG_STATUS_FUNCTION(name) zap_status_t name ZIO_SPAN_SET_SIG_STATUS_ARGS +#define ZIO_SPAN_GET_SIG_STATUS_FUNCTION(name) zap_status_t name ZIO_SPAN_GET_SIG_STATUS_ARGS #define ZIO_SPAN_POLL_EVENT_FUNCTION(name) zap_status_t name ZIO_SPAN_POLL_EVENT_ARGS #define ZIO_SPAN_NEXT_EVENT_FUNCTION(name) zap_status_t name ZIO_SPAN_NEXT_EVENT_ARGS #define ZIO_SIGNAL_CB_FUNCTION(name) zap_status_t name ZIO_SIGNAL_CB_ARGS diff --git a/libs/freetdm/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c b/libs/freetdm/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c index 94dbcb58aa..5e5723dc66 100644 --- a/libs/freetdm/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c +++ b/libs/freetdm/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c @@ -1770,7 +1770,7 @@ static BOOST_SIG_STATUS_CB_FUNCTION(zap_boost_sig_status_change) { zap_sigmsg_t sig; zap_sangoma_boost_data_t *sangoma_boost_data = zchan->span->signal_data; - zap_log(ZAP_LOG_DEBUG, "%d:%d Signaling link status changed to %s\n", zchan->span_id, zchan->chan_id, zap_sig_status2str(status)); + zap_log(ZAP_LOG_NOTICE, "%d:%d Signaling link status changed to %s\n", zchan->span_id, zchan->chan_id, zap_signaling_status2str(status)); memset(&sig, 0, sizeof(sig)); sig.chan_id = zchan->chan_id; @@ -1782,14 +1782,60 @@ static BOOST_SIG_STATUS_CB_FUNCTION(zap_boost_sig_status_change) return; } -static ZIO_CHANNEL_GET_SIG_STATUS_FUNCTION(sangoma_boost_get_sig_status) +static ZIO_CHANNEL_SET_SIG_STATUS_FUNCTION(sangoma_boost_set_channel_sig_status) +{ + zap_sangoma_boost_data_t *sangoma_boost_data = zchan->span->signal_data; + if (!sangoma_boost_data->sigmod) { + zap_log(ZAP_LOG_ERROR, "Cannot set signaling status in boost channel with no signaling module configured\n"); + return ZAP_FAIL; + } + if (!sangoma_boost_data->sigmod->set_channel_sig_status) { + zap_log(ZAP_LOG_ERROR, "Cannot set signaling status in boost channel: method not implemented\n"); + return ZAP_NOTIMPL; + } + return sangoma_boost_data->sigmod->set_channel_sig_status(zchan, status); +} + +static ZIO_CHANNEL_GET_SIG_STATUS_FUNCTION(sangoma_boost_get_channel_sig_status) { zap_sangoma_boost_data_t *sangoma_boost_data = zchan->span->signal_data; if (!sangoma_boost_data->sigmod) { zap_log(ZAP_LOG_ERROR, "Cannot get signaling status in boost channel with no signaling module configured\n"); return ZAP_FAIL; } - return sangoma_boost_data->sigmod->get_sig_status(zchan, status); + if (!sangoma_boost_data->sigmod->get_channel_sig_status) { + zap_log(ZAP_LOG_ERROR, "Cannot get signaling status in boost channel: method not implemented\n"); + return ZAP_NOTIMPL; + } + return sangoma_boost_data->sigmod->get_channel_sig_status(zchan, status); +} + +static ZIO_SPAN_SET_SIG_STATUS_FUNCTION(sangoma_boost_set_span_sig_status) +{ + zap_sangoma_boost_data_t *sangoma_boost_data = span->signal_data; + if (!sangoma_boost_data->sigmod) { + zap_log(ZAP_LOG_ERROR, "Cannot set signaling status in boost span with no signaling module configured\n"); + return ZAP_FAIL; + } + if (!sangoma_boost_data->sigmod->set_span_sig_status) { + zap_log(ZAP_LOG_ERROR, "Cannot set signaling status in boost span: method not implemented\n"); + return ZAP_NOTIMPL; + } + return sangoma_boost_data->sigmod->set_span_sig_status(span, status); +} + +static ZIO_SPAN_GET_SIG_STATUS_FUNCTION(sangoma_boost_get_span_sig_status) +{ + zap_sangoma_boost_data_t *sangoma_boost_data = span->signal_data; + if (!sangoma_boost_data->sigmod) { + zap_log(ZAP_LOG_ERROR, "Cannot get signaling status in boost span with no signaling module configured\n"); + return ZAP_FAIL; + } + if (!sangoma_boost_data->sigmod->get_span_sig_status) { + zap_log(ZAP_LOG_ERROR, "Cannot get signaling status in boost span: method not implemented\n"); + return ZAP_NOTIMPL; + } + return sangoma_boost_data->sigmod->get_span_sig_status(span, status); } /** @@ -1910,7 +1956,10 @@ static ZIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(zap_sangoma_boost_configure_span) span->signal_type = ZAP_SIGTYPE_SANGOMABOOST; span->outgoing_call = sangoma_boost_outgoing_call; span->channel_request = sangoma_boost_channel_request; - span->get_sig_status = sangoma_boost_get_sig_status; + span->get_channel_sig_status = sangoma_boost_get_channel_sig_status; + span->set_channel_sig_status = sangoma_boost_set_channel_sig_status; + span->get_span_sig_status = sangoma_boost_get_span_sig_status; + span->set_span_sig_status = sangoma_boost_set_span_sig_status; span->state_map = &boost_state_map; zap_set_flag_locked(span, ZAP_SPAN_SUSPENDED); return ZAP_SUCCESS; diff --git a/libs/freetdm/src/ozmod/ozmod_sangoma_boost/sangoma_boost_interface.h b/libs/freetdm/src/ozmod/ozmod_sangoma_boost/sangoma_boost_interface.h index 8757adcab3..5faa474727 100644 --- a/libs/freetdm/src/ozmod/ozmod_sangoma_boost/sangoma_boost_interface.h +++ b/libs/freetdm/src/ozmod/ozmod_sangoma_boost/sangoma_boost_interface.h @@ -47,7 +47,7 @@ extern "C" { \param zchan The openzap channel where the signaling status just changed \param status The new signaling status */ -#define BOOST_SIG_STATUS_CB_ARGS (zap_channel_t *zchan, zap_channel_sig_status_t status) +#define BOOST_SIG_STATUS_CB_ARGS (zap_channel_t *zchan, zap_signaling_status_t status) typedef void (*boost_sig_status_cb_func_t) BOOST_SIG_STATUS_CB_ARGS; #define BOOST_SIG_STATUS_CB_FUNCTION(name) void name BOOST_SIG_STATUS_CB_ARGS @@ -78,6 +78,16 @@ typedef zap_status_t (*boost_write_msg_func_t) BOOST_WRITE_MSG_ARGS; typedef void (*boost_set_write_msg_cb_func_t) BOOST_SET_WRITE_MSG_CB_ARGS; #define BOOST_SET_WRITE_MSG_CB_FUNCTION(name) void name BOOST_SET_WRITE_MSG_CB_ARGS +/*! + \brief Notify hardware status change + \param zchan The openzap channel + \param status The hw status + \return ZAP_SUCCESS or ZAP_FAIL + */ +#define BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS (zap_channel_t *zchan, zap_channel_hw_link_status_t status) +typedef void (*boost_on_hw_link_status_change_func_t) BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS; +#define BOOST_ON_HW_LINK_STATUS_CHANGE_FUNCTION(name) void name BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS + /*! \brief Set signaling status callback used by the signaling module to report signaling status changes \param callback The callback to be used by the signaling module @@ -89,24 +99,14 @@ typedef void (*boost_set_write_msg_cb_func_t) BOOST_SET_WRITE_MSG_CB_ARGS; typedef void (*boost_set_sig_status_cb_func_t) BOOST_SET_SIG_STATUS_CB_ARGS; #define BOOST_SET_SIG_STATUS_CB_FUNCTION(name) void name BOOST_SET_SIG_STATUS_CB_ARGS -/*! - \brief Notify hardware status change - \param zchan The openzap channel - \param status The hw status - \return ZAP_SUCCESS or ZAP_FAIL - */ -#define BOOST_GET_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_channel_sig_status_t *status) -typedef zap_status_t (*boost_get_sig_status_func_t) BOOST_GET_SIG_STATUS_ARGS; -#define BOOST_GET_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_GET_SIG_STATUS_ARGS - /*! \brief Get the signaling status on the given channel. \param zchan The openzap channel \param status The status pointer where the current signaling status will be set */ -#define BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS (zap_channel_t *zchan, zap_channel_hw_link_status_t status) -typedef void (*boost_on_hw_link_status_change_func_t) BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS; -#define BOOST_ON_HW_LINK_STATUS_CHANGE_FUNCTION(name) void name BOOST_ON_HW_LINK_STATUS_CHANGE_ARGS +#define BOOST_GET_CHANNEL_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_signaling_status_t *status) +typedef zap_status_t (*boost_get_channel_sig_status_func_t) BOOST_GET_CHANNEL_SIG_STATUS_ARGS; +#define BOOST_GET_CHANNEL_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_GET_CHANNEL_SIG_STATUS_ARGS /*! \brief Set the signaling status on the given channel. @@ -114,9 +114,28 @@ typedef void (*boost_on_hw_link_status_change_func_t) BOOST_ON_HW_LINK_STATUS_CH \param status The new status for the channel \return ZAP_SUCCESS or ZAP_FAIL */ -#define BOOST_SET_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_channel_sig_status_t status) -typedef zap_status_t (*boost_set_sig_status_func_t) BOOST_SET_SIG_STATUS_ARGS; -#define BOOST_SET_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_SET_SIG_STATUS_ARGS +#define BOOST_SET_CHANNEL_SIG_STATUS_ARGS (zap_channel_t *zchan, zap_signaling_status_t status) +typedef zap_status_t (*boost_set_channel_sig_status_func_t) BOOST_SET_CHANNEL_SIG_STATUS_ARGS; +#define BOOST_SET_CHANNEL_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_SET_CHANNEL_SIG_STATUS_ARGS + +/*! + \brief Get the signaling status on the given span. + \param span The openzap span + \param status The status pointer where the current signaling status will be set + */ +#define BOOST_GET_SPAN_SIG_STATUS_ARGS (zap_span_t *span, zap_signaling_status_t *status) +typedef zap_status_t (*boost_get_span_sig_status_func_t) BOOST_GET_SPAN_SIG_STATUS_ARGS; +#define BOOST_GET_SPAN_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_GET_SPAN_SIG_STATUS_ARGS + +/*! + \brief Set the signaling status on the given span. + \param zchan The openzap span + \param status The new status for the span + \return ZAP_SUCCESS or ZAP_FAIL + */ +#define BOOST_SET_SPAN_SIG_STATUS_ARGS (zap_span_t *span, zap_signaling_status_t status) +typedef zap_status_t (*boost_set_span_sig_status_func_t) BOOST_SET_SPAN_SIG_STATUS_ARGS; +#define BOOST_SET_SPAN_SIG_STATUS_FUNCTION(name) zap_status_t name BOOST_SET_SPAN_SIG_STATUS_ARGS /*! \brief Configure the given span signaling @@ -174,9 +193,13 @@ typedef struct boost_sigmod_interface_s { /*! \brief set the user signaling status function */ boost_set_sig_status_cb_func_t set_sig_status_cb; /*! \brief get channel signaling status */ - boost_get_sig_status_func_t get_sig_status; + boost_get_channel_sig_status_func_t get_channel_sig_status; /*! \brief set channel signaling status */ - boost_set_sig_status_func_t set_sig_status; + boost_set_channel_sig_status_func_t set_channel_sig_status; + /*! \brief get span signaling status */ + boost_get_span_sig_status_func_t get_span_sig_status; + /*! \brief set span signaling status */ + boost_set_span_sig_status_func_t set_span_sig_status; /*! \brief set notify hardware link status change */ boost_on_hw_link_status_change_func_t on_hw_link_status_change; /*! \brief configure span signaling */ diff --git a/libs/freetdm/src/zap_io.c b/libs/freetdm/src/zap_io.c index e95550471c..5aec3021fb 100644 --- a/libs/freetdm/src/zap_io.c +++ b/libs/freetdm/src/zap_io.c @@ -119,8 +119,8 @@ ZAP_STR2ENUM(zap_str2zap_mdmf_type, zap_mdmf_type2str, zap_mdmf_type_t, MDMF_TYP ZAP_ENUM_NAMES(CHAN_TYPE_NAMES, CHAN_TYPE_STRINGS) ZAP_STR2ENUM(zap_str2zap_chan_type, zap_chan_type2str, zap_chan_type_t, CHAN_TYPE_NAMES, ZAP_CHAN_TYPE_COUNT) -ZAP_ENUM_NAMES(CHAN_SIG_STATUS_NAMES, SIGSTATUS_STRINGS) -ZAP_STR2ENUM(zap_str2zap_channel_sig_status, zap_sig_status2str, zap_channel_sig_status_t, CHAN_SIG_STATUS_NAMES, ZAP_SIG_STATE_INVALID) +ZAP_ENUM_NAMES(SIGNALING_STATUS_NAMES, SIGSTATUS_STRINGS) +ZAP_STR2ENUM(zap_str2zap_signaling_status, zap_signaling_status2str, zap_signaling_status_t, SIGNALING_STATUS_NAMES, ZAP_SIG_STATE_INVALID) static const char *cut_path(const char *in) { @@ -1397,15 +1397,54 @@ OZ_DECLARE(zap_status_t) zap_channel_outgoing_call(zap_channel_t *zchan) return ZAP_FAIL; } -OZ_DECLARE(zap_status_t) zap_channel_get_sig_status(zap_channel_t *zchan, zap_channel_sig_status_t *sigstatus) +OZ_DECLARE(zap_status_t) zap_channel_set_sig_status(zap_channel_t *zchan, zap_signaling_status_t sigstatus) { zap_assert_return(zchan != NULL, ZAP_FAIL, "Null channel\n"); - zap_assert_return(sigstatus != NULL, ZAP_FAIL, "Null sig status"); + zap_assert_return(zchan->span != NULL, ZAP_FAIL, "Null span\n"); - if (zchan->span->get_sig_status) { - return zchan->span->get_sig_status(zchan, sigstatus); + if (zchan->span->set_channel_sig_status) { + return zchan->span->set_channel_sig_status(zchan, sigstatus); } else { - zap_log(ZAP_LOG_ERROR, "get_sig_status method not implemented!\n"); + zap_log(ZAP_LOG_ERROR, "set_channel_sig_status method not implemented!\n"); + return ZAP_FAIL; + } +} + +OZ_DECLARE(zap_status_t) zap_channel_get_sig_status(zap_channel_t *zchan, zap_signaling_status_t *sigstatus) +{ + zap_assert_return(zchan != NULL, ZAP_FAIL, "Null channel\n"); + zap_assert_return(zchan->span != NULL, ZAP_FAIL, "Null span\n"); + zap_assert_return(sigstatus != NULL, ZAP_FAIL, "Null sig status parameter\n"); + + if (zchan->span->get_channel_sig_status) { + return zchan->span->get_channel_sig_status(zchan, sigstatus); + } else { + zap_log(ZAP_LOG_ERROR, "get_channel_sig_status method not implemented!\n"); + return ZAP_FAIL; + } +} + +OZ_DECLARE(zap_status_t) zap_span_set_sig_status(zap_span_t *span, zap_signaling_status_t sigstatus) +{ + zap_assert_return(span != NULL, ZAP_FAIL, "Null span\n"); + + if (span->set_span_sig_status) { + return span->set_span_sig_status(span, sigstatus); + } else { + zap_log(ZAP_LOG_ERROR, "set_span_sig_status method not implemented!\n"); + return ZAP_FAIL; + } +} + +OZ_DECLARE(zap_status_t) zap_span_get_sig_status(zap_span_t *span, zap_signaling_status_t *sigstatus) +{ + zap_assert_return(span != NULL, ZAP_FAIL, "Null span\n"); + zap_assert_return(sigstatus != NULL, ZAP_FAIL, "Null sig status parameter\n"); + + if (span->get_span_sig_status) { + return span->get_span_sig_status(span, sigstatus); + } else { + zap_log(ZAP_LOG_ERROR, "get_span_sig_status method not implemented!\n"); return ZAP_FAIL; } }