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

ResourceProvider does not send response if it's too large

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

  /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 - 超时,但如果使 tmp 缓冲区更小(121 个或更少的元素),它会完美无缺地工作。
我做错了什么吗?

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

白板限制在文件中定义 WhiteboardConfig.h

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