From 836adbb7b42a05f5b38cf5cc90b2377751e01f4d Mon Sep 17 00:00:00 2001 From: Bruno Randolf Date: Sat, 5 Jan 2019 18:27:58 +0000 Subject: HciAdapter: Endian fixes Keep code and dataSize before converting to network format, otherwise we will use the network converted values on the host side later. This fixes errors I have encountered on a MIPS platform. Signed-off-by: Bruno Randolf --- src/HciAdapter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/HciAdapter.cpp b/src/HciAdapter.cpp index eb1990f..9ab44d1 100644 --- a/src/HciAdapter.cpp +++ b/src/HciAdapter.cpp @@ -510,18 +510,21 @@ bool HciAdapter::sendCommand(HciHeader &request) return false; } + uint16_t code = request.code; + uint16_t dataSize = request.dataSize; + conditionalValue = -1; std::future fut = std::async(std::launch::async, [&]() mutable { - return waitForCommandResponse(request.code, kMaxEventWaitTimeMS); + return waitForCommandResponse(code, kMaxEventWaitTimeMS); }); // Prepare the request to be sent (endianness correction) request.toNetwork(); uint8_t *pRequest = reinterpret_cast(&request); - std::vector requestPacket = std::vector(pRequest, pRequest + sizeof(request) + request.dataSize); + std::vector requestPacket = std::vector(pRequest, pRequest + sizeof(request) + dataSize); if (!hciSocket.write(requestPacket)) { return false; -- cgit v1.2.3