#movesense
Вопрос:
Я работаю с Movesense 2.0.0 на симуляторе и внедряю свои собственные API.
Это (часть) моего 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::Requestamp; request,
const whiteboard::ParameterListamp; 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 или менее элементов), он работает безупречно.
Я делаю что-то не так?
Ответ №1:
Доска имеет (для ограничения использования ресурсов на датчике) максимальный размер пакета, что приводит к максимальному размеру полезной нагрузки. В настоящее время длина WB_MAX_MESSAGE_PAYLOAD_LENGTH составляет 466 байт.
Ограничения для белой доски определены в файле WhiteboardConfig.h
Полный отказ от ответственности: Я работаю в команде Movesense
Комментарии:
1. Спасибо. Каков предлагаемый способ передачи больших (до нескольких КБ) блоков данных?