如果 ResourceProvider 太大,则不发送响应

问题描述

我正在模拟器上使用 Movesense 2.0.0,并且正在实现我自己的 API。
这是(部分)我的带有 API 规范的 YAML

  /hs/Log/{Log_Id}/Data:
    get:
      description: |
        Function returning Log Data
      responses:
        200:
          description: Log Data
          schema:
            $ref: '#/deFinitions/LogData'
        404:
          description: Referenced log not found in LogBook.
    parameters:
       - $ref: '#/parameters/Log_Id'

parameters:
  Log_Id:
    name: Log_Id
    in: path
    required: true
    type: integer
    format: int32

deFinitions:
  LogData:
    required:
      - Data
    properties:
      Data:
        description: Log Data
        type: array
        items:
          type: integer
          format: int32

这是处理它的重写方法

void HSService::onGetRequest(const whiteboard::Request& request,const whiteboard::ParameterList& parameters)
{

    if (mModuleState != WB_RES::ModuleStateValues::STARTED)
    {
        return returnResult(request,wb::HTTP_CODE_SERVICE_UNAVAILABLE);
    }

    switch (request.getResourceConstId())
    {
    case WB_RES::LOCAL::HS_LOG_LOG_ID_DATA::ID:
    {
            WB_RES::LogData resp;
            int32_t tmp[128] = { 0 };
            resp.data = wb::MakeArray<int32_t>(tmp,128);
             return returnResult(request,whiteboard::HTTP_CODE_OK,ResponSEOptions::Empty,resp);
        }
    }
    break;

    default:
        return returnResult(request,whiteboard::HTTP_CODE_NOT_FOUND);
    }
}

当我使用 wbcmd 发送请求时,它会挂起,直到显示 408 - Timeout,但如果使 tmp 缓冲区变小(121 个或更少元素),它会正常工作。
我做错了什么吗?

解决方法

白板具有(限制传感器上的资源使用)最大数据包大小,这会导致最大有效负载大小。目前 WB_MAX_MESSAGE_PAYLOAD_LENGTH 为 466 字节。

白板限制在文件 WhiteboardConfig.h

中定义

完全免责声明:我为 Movesense 团队工作