⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inet_msg_sip.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
        *param++ = '\0';
    }

    ss = inet_malloc(mem_func, sizeof(inet_subscription_state_struct));
    if (!ss)
    {
        goto ss_error;
    }

    ss->state = inet_msg_strdup(mem_func, text);
    if (!ss->state)
    {
        goto ss_error;
    }

    if (param)
    {
        ss->param_list = (inet_param_list_struct*) inet_msg_unpack_param(mem_func, param);
        if (!ss->param_list)
        {
            goto ss_error;
        }
    }

    return (kal_uint32) ss;

  ss_error:

    inet_subscription_state_struct_free_fn(mem_func, ss);

    return 0;

}   /* end of inet_msg_unpack_subscription_state */


/*****************************************************************************
 * FUNCTION
 *  inet_msg_unpack_answer_mode
 * DESCRIPTION
 *  This function unpacks the Event.
 * GRAMMER
 *  
 *  Answer-Mode = "Answer-Mode" HCOLON answer-mode (SEMI options)
 *  Priv-Answer-Mode = "Priv-Answer-Mode" HCOLON answer-mode (SEMI* options)
 *  answer-mode = "Manual" / "Auto"
 *  options=option *( COMMA am-option)
 *  am-option = "Require" / token*
 *  example:
 *  
 *  Answer-Mode: Auto; Require
 *  Pri-Answer-Mode: Manual
 * PARAMETERS
 *  mem_func        [IN]        Memory function
 *  text            [IN]        String of field value
 * RETURNS
 *  inet_answer_mode_struct pointer
 *****************************************************************************/
kal_uint32 inet_msg_unpack_answer_mode(inet_mem_func_struct *mem_func, kal_char *text)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_char *param;

    inet_answer_mode_struct *ss = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    param = strchr(text, ';');
    if (param)
    {
        *param++ = '\0';
    }

    ss = inet_malloc(mem_func, sizeof(inet_answer_mode_struct));
    if (!ss)
    {
        goto ss_error;
    }

    ss->answer_mode = inet_msg_strdup(mem_func, text);
    if (!ss->answer_mode)
    {
        goto ss_error;
    }

    if (param)
    {
        ss->param_list = (inet_param_list_struct*) inet_msg_unpack_param(mem_func, param);
        if (!ss->param_list)
        {
            goto ss_error;
        }
    }

    return (kal_uint32) ss;

  ss_error:

    inet_answer_mode_struct_free_fn(mem_func, ss);

    return 0;

}   /* end of inet_msg_unpack_answer_mode */

/***************************************************************************** 
* Pack functions
*****************************************************************************/


/*****************************************************************************
 * FUNCTION
 *  inet_msg_pack_session_expires
 * DESCRIPTION
 *  This function packs the  inet_session_expires_struct header value.
 * PARAMETERS
 *  app_type        [IN]            application type
 *  arg             [IN]            pointer of header value
 *  buf             [IN]            buffer to store packed header value
 *  buf_len         [IN]            available data size of buffer
 *  r_size          [IN/OUT]        real data size to pack
 * RETURNS
 *  INET result code
 *****************************************************************************/
inet_result_enum inet_msg_pack_session_expires(
                    kal_uint8 app_type,
                    void *arg,
                    kal_char *buf,
                    kal_int32 buf_len,
                    kal_int32 *r_size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 l;
    kal_int32 size = 0;
    inet_result_enum ret;
    inet_session_expires_struct *se = (inet_session_expires_struct*) arg;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (se->expires != 0)
    {
        l = _snprintf(buf, buf_len, "%d", se->expires);
        CHECK_INET_PACK_ENBUF(l) size += l;
    }
    if (se->param_list)
    {
        if ((ret = inet_msg_pack_param_list(
                    app_type,
                    (void*)se->param_list,
                    buf + size,
                    buf_len - size,
                    &l)) != INET_RESULT_OK)
        {
            return ret;
        }
        size += l;
    }

    *r_size = size;
    return INET_RESULT_OK;
}   /* end of inet_msg_pack_session_expires */


/*****************************************************************************
 * FUNCTION
 *  inet_msg_pack_event
 * DESCRIPTION
 *  This function packs the  inet_event_struct header value.
 * PARAMETERS
 *  app_type        [IN]            application type
 *  arg             [IN]            pointer of header value
 *  buf             [IN]            buffer to store packed header value
 *  buf_len         [IN]            available data size of buffer
 *  r_size          [IN/OUT]        real data size to pack
 * RETURNS
 *  INET result code
 *****************************************************************************/
inet_result_enum inet_msg_pack_event(
                    kal_uint8 app_type,
                    void *arg,
                    kal_char *buf,
                    kal_int32 buf_len,
                    kal_int32 *r_size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 l;
    kal_int32 size = 0;
    inet_result_enum ret;
    inet_event_struct *evt = (inet_event_struct*) arg;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (evt->event)
    {
        l = _snprintf(buf, buf_len, "%s", evt->event);
        CHECK_INET_PACK_ENBUF(l) size += l;
    }
    if (evt->param_list)
    {
        if ((ret = inet_msg_pack_param_list(
                    app_type,
                    (void*)evt->param_list,
                    buf + size,
                    buf_len - size,
                    &l)) != INET_RESULT_OK)
        {
            return ret;
        }
        size += l;
    }

    *r_size = size;
    return INET_RESULT_OK;
}   /* end of inet_msg_pack_event */


/*****************************************************************************
 * FUNCTION
 *  inet_msg_pack_subscription_state
 * DESCRIPTION
 *  This function packs the  inet_event_struct header value.
 * PARAMETERS
 *  app_type        [IN]            application type
 *  arg             [IN]            pointer of header value
 *  buf             [IN]            buffer to store packed header value
 *  buf_len         [IN]            available data size of buffer
 *  r_size          [IN/OUT]        real data size to pack
 * RETURNS
 *  INET result code
 *****************************************************************************/
inet_result_enum inet_msg_pack_subscription_state(
                    kal_uint8 app_type,
                    void *arg,
                    kal_char *buf,
                    kal_int32 buf_len,
                    kal_int32 *r_size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 l;
    kal_int32 size = 0;
    inet_result_enum ret;
    inet_subscription_state_struct *ss = (inet_subscription_state_struct*) arg;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (ss->state)
    {
        l = _snprintf(buf, buf_len, "%s", ss->state);
        CHECK_INET_PACK_ENBUF(l) size += l;
    }
    if (ss->param_list)
    {
        if ((ret = inet_msg_pack_param_list(
                    app_type,
                    (void*)ss->param_list,
                    buf + size,
                    buf_len - size,
                    &l)) != INET_RESULT_OK)
        {
            return ret;
        }
        size += l;
    }

    *r_size = size;
    return INET_RESULT_OK;
}   /* end of inet_msg_pack_subscription_state */


/*****************************************************************************
 * FUNCTION
 *  inet_msg_pack_answer_mode
 * DESCRIPTION
 *  This function packs the  inet_answer_mode_struct header value.
 * PARAMETERS
 *  app_type        [IN]            application type
 *  arg             [IN]            pointer of header value
 *  buf             [IN]            buffer to store packed header value
 *  buf_len         [IN]            available data size of buffer
 *  r_size          [IN/OUT]        real data size to pack
 * RETURNS
 *  INET result code
 *****************************************************************************/
inet_result_enum inet_msg_pack_answer_mode(
                    kal_uint8 app_type,
                    void *arg,
                    kal_char *buf,
                    kal_int32 buf_len,
                    kal_int32 *r_size)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 l;
    kal_int32 size = 0;
    inet_result_enum ret;
    inet_answer_mode_struct *ss = (inet_answer_mode_struct*) arg;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (ss->answer_mode)
    {
        l = _snprintf(buf, buf_len, "%s", ss->answer_mode);
        CHECK_INET_PACK_ENBUF(l) size += l;
    }
    if (ss->param_list)
    {
        if ((ret = inet_msg_pack_param_list(
                    app_type,
                    (void*)ss->param_list,
                    buf + size,
                    buf_len - size,
                    &l)) != INET_RESULT_OK)
        {
            return ret;
        }
        size += l;
    }

    *r_size = size;
    return INET_RESULT_OK;
}   /* end of inet_msg_pack_answer_mode */

/***************************************************************************** 
* Copy functions
*****************************************************************************/


/*****************************************************************************
 * FUNCTION
 *  inet_session_expires_struct_copy_fn
 * DESCRIPTION
 *  
 * PARAMETERS
 *  mem_func        [?]     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -