我是靠谱客的博主 过时香水,最近开发中收集的这篇文章主要介绍er-coap-13 源码分析一、er-coap 接口介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、er-coap 接口介绍

1、coap_set_header_uri_path

//多级目录会被分割成多个option 比如 /3/0/1 会生成三个 option
//因为会调用  free_multi_option(coap_pkt->uri_path) 后面调用会释放掉之前配置的uri-path。
//如果需要同时使用coap_set_header_uri_path和coap_set_header_uri_path_segment 需要先调用 coap_set_header_uri_path.
int coap_set_header_uri_path(void *packet, const char *path)
{
    coap_packet_t *coap_pkt = (coap_packet_t *) packet;
    int length = 0;

    free_multi_option(coap_pkt->uri_path);
    coap_pkt->uri_path = NULL;

    if (path[0] == '/') ++path;

    do
    {
        int i = 0;

        while (path[i] != 0 && path[i] != '/') i++;
        coap_add_multi_option(&(coap_pkt->uri_path), (uint8_t *)path, i, 0);

        if (path[i] == '/') i++;
        path += i;
        length += i;
    } while (path[0] != 0);

    SET_OPTION(coap_pkt, COAP_OPTION_URI_PATH);
    return length;
}

2、coap_set_header_uri_path_segment

//多级目录不会被分割成多个option 比如 /3/0/1 仅生成一个 option
//允许多次添加
int coap_set_header_uri_path_segment(void *packet, const char *segment)
{
    coap_packet_t *coap_pkt = (coap_packet_t *) packet;
    int length;

    if (segment == NULL || segment[0] == 0)
    {
        coap_add_multi_option(&(coap_pkt->uri_path), NULL, 0, 1);
        length = 0;
    }
    else
    {
        length = strlen(segment);
        coap_add_multi_option(&(coap_pkt->uri_path), (uint8_t *)segment, length, 0);
    }

    SET_OPTION(coap_pkt, COAP_OPTION_URI_PATH);
    return length;
}

3、coap_serialize_get_size

该接口返回的长度不一定等于 实际要发送的数据长度。
当没有添加任何option的时候,才与实际要发送的数据长度相等。
当配置的option越多,该接口返回的长度和实际发送的数据长度误差越大。
实际发送数据长度 使用 coap_serialize_message接口的返回值。

最后

以上就是过时香水为你收集整理的er-coap-13 源码分析一、er-coap 接口介绍的全部内容,希望文章能够帮你解决er-coap-13 源码分析一、er-coap 接口介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部