This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3135MOD:mDNS -多器件广播

Guru**** 2770105 points

Other Parts Discussed in Thread: CC3135

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1022217/cc3135mod-mdns---multiple-devices-advertising

器件型号:CC3135MOD
主题中讨论的其他器件:CC3135

大家好、

我使用 CC3135模块连接到 WiFi 网络。 我的设备使用由特定于设备的 ID 和通用服务名称组成的服务名称在网络上进行广播:

int simplelink_configure_mdns(int mode, char *name, char* txt, int port)
{
    static char mds_service[64];
    int retval;

    retval = simplelink_start_stop_mdns(1);  // Start mdns service <-- Registration of a new service should be performed only if the mDNS service is enabled  
    ASSERT_ON_ERROR(retval, NETAPP_ERROR);
    // unregister mdns services
    retval = sl_NetAppMDNSUnRegisterService(0, 0, 0);            
    ASSERT_ON_ERROR(retval, NETAPP_ERROR);

    if (!mode)
    {
        return retval;
    }
    
    //name = device ID
    //MDNS_STRING = "_smartcam._tcp.local"
    sprintf(mds_service, "%s.%s", name, MDNS_STRING);
    
    /* Stop continuous query */
    retval = sl_NetAppSet(SL_NETAPP_MDNS_ID, SL_NETAPP_MDNS_CONT_QUERY_OPT,0 , 0);

    /* Register mDNS services */
    // Advertise (Mdns host) broadcasts its own IP address, port number and message to 224.0.0.251 + 5353 

    uint32_t opt = /*SL_NETAPP_MDNS_OPTIONS_IS_UNIQUE_BIT |*/ SL_NETAPP_MDNS_IPV4_ONLY_SERVICE | SL_NETAPP_MDNS_OPTIONS_IS_NOT_PERSISTENT;
    retval = sl_NetAppMDNSRegisterService((const signed char*)mds_service, strlen(mds_service), 
                                          (const signed char*)txt, strlen(txt), port, TTL_VALUE, opt);
    ASSERT_ON_ERROR(retval, NETAPP_ERROR);
    LOG_SERIAL_INFO("[mDNS advertise] : service name %s registered successfully", mds_service);


    /* The below parameters are used to configure the advertise times and interval
       For example:
        If:
        Period is set to T
        Repetitions are set to P
        Telescopic factor is K=2
        The transmission shall be:
        advertise P times
        wait T
        advertise P times
        wait 4 * T
        advertise P time
        wait 16 * T  ... (till max time reached / configuration changed / query issued)
     */
    SlNetAppServiceAdvertiseTimingParameters_t Timing;
    
    Timing.t = 100; // 1 seconds Default is 100 ticks for 1 second
    Timing.p = 2; // 2 repetitions
    Timing.k = 2; // Telescopic factor 1
    Timing.RetransInterval = 500;
    Timing.Maxinterval = 1000;
    Timing.max_time = 0xFF;    // in seconds FOREVER
    retval = sl_NetAppSet(SL_NETAPP_MDNS_ID, SL_NETAPP_MDNS_TIMING_PARAMS_OPT, sizeof(Timing), (const unsigned char*)&Timing);
    if (retval < 0)
    {
        LOG_SERIAL_ERROR("[mDNS advertise] : mDNS set timing params %d", retval);
    }

    return retval;
}

当我 只有一个器件广播时、我会在查找器件的软件中的"标准查询"后看到"标准查询响应":

而当我有2个器件时、我也会看到两个器件发送查询作为对软件查询的答复(请参阅突出显示的消息)

设备似乎正在向 PC 发送查询而不是查询响应。

有人能解释一下原因吗? 我可以通过某种方式避免它吗? 这种行为似乎正在减慢 PC 对器件的检测速度。

谢谢你

此致

Arianna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Arianna、

    这看起来像是 一个通告通知(内部 HTTP 服务器)。

    我不确定这会如何减慢检测速度。

    BR、

    Kobi   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kobi、

    感谢您的回复!

    那么、这是正常行为吗? 当有一个或多个器件时、行为是否正常?

    [报价 userid="132163" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1022217/cc3135mod-mdns---multiple-devices-advertising/3778986 #3778986"]我不确定这会如何减慢检测速度。[/quot]

    我们的软件会查找"查询响应"消息;只有一个设备时、它会快速到达、而当有两个设备时、我们会看到许多查询到达、但我们必须等待更多的时间才能获得"查询响应"。

    我们可以尝试拦截并解析广播消息、但我们希望确保这是检测器件的正确方法。

    再次感谢你

    Arianna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的意思是、您需要等待更多的响应?

    还有多少钱?

    当具有多个器件时、可能会有无线连接(2个器件尝试同时响应)、这会导致一些延迟、但这种延迟应该太大。

    我认为该广告不包含您正在寻找的信息(适用于 http 服务器)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查看以下示例:

    软件查询从 t=5.37s 开始、第一个器件立即回复、而第二个器件的响应仅在 t=28、79 s 到达、等待时间将近半分钟。

    等待时间是随机的、但在开启2个器件的情况下至少为10秒。
    对时序参数进行一些调整可能会有所帮助?

    感谢您的回复、

    Arianna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    设备似乎错过了一些查询。

    器件是否会达到低功耗(可能是 LSI)、从而可能错过广播?

    它没有说明与单个器件用例的区别。

    根据最新的日志,您可以尝试发送几次查询重传(即减少7-8秒的间隔)。

    BR、

    Kobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kobi、

    是的、您答对了、LSI 已启用、最大睡眠时间为500ms。
    我尝试将电源策略设置为正常、现在发现速度似乎要快得多(最多2个查询可从两个设备获得响应!)。

    正如您所说的、并不完全清楚为什么使用2个器件时差异如此之大、也许这是 LSI 延迟和无线连接的总和。

    感谢您的支持、

    此致、

    Arianna