From 1b0c776f7203ecc67c5c5867dae3745714882905 Mon Sep 17 00:00:00 2001 From: ndeadly <24677491+ndeadly@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:22:37 +0200 Subject: [PATCH] btdrv-mitm: misc hid report changes --- .../source/bluetooth/bluetooth_hid_report.cpp | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/btdrv-mitm/source/bluetooth/bluetooth_hid_report.cpp b/btdrv-mitm/source/bluetooth/bluetooth_hid_report.cpp index eeead78..da16e05 100644 --- a/btdrv-mitm/source/bluetooth/bluetooth_hid_report.cpp +++ b/btdrv-mitm/source/bluetooth/bluetooth_hid_report.cpp @@ -127,29 +127,27 @@ namespace ams::bluetooth::hid::report { /* Only used for < 7.0.0. newer firmwares read straight from shared memory */ Result GetEventInfo(HidEventType *type, u8* buffer, size_t size) { std::scoped_lock lk(g_eventDataLock); - { - *type = g_currentEventType; - - if (g_currentEventType == HidEvent_GetReport) { - HidEventData *eventData = reinterpret_cast(g_eventDataBuffer); - auto controller = ams::mitm::btdrv::locateController(&eventData->getReport.address); - if (controller && !controller->isSwitchController()) { - BTDRV_LOG_FMT("btdrv-mitm: GetHidReportEventInfo - Non-Switch controller"); + *type = g_currentEventType; + + if (g_currentEventType == HidEvent_GetReport) { + HidEventData *eventData = reinterpret_cast(g_eventDataBuffer); - // TODO: Modify report data if coming from a non-switch controller - //controller->convertReportFormat(inReport, outReport); + auto controller = ams::mitm::btdrv::locateController(&eventData->getReport.address); + if (controller && !controller->isSwitchController()) { + BTDRV_LOG_FMT("btdrv-mitm: GetHidReportEventInfo - Non-Switch controller"); - //eventData->getReport.report_length = 0x42; - } - else { - std::memcpy(buffer, g_eventDataBuffer, eventData->getReport.report_length + 0); // Todo: check this size is correct, might need to add header size - } + // TODO: Modify report data if coming from a non-switch controller + //controller->convertReportFormat(inReport, outReport); + + //eventData->getReport.report_length = 0x42; } else { - std::memcpy(buffer, g_eventDataBuffer, size); + std::memcpy(buffer, g_eventDataBuffer, eventData->getReport.report_length + 0); // Todo: check this size is correct, might need to add header size } - + } + else { + std::memcpy(buffer, g_eventDataBuffer, size); } return ams::ResultSuccess(); @@ -157,7 +155,9 @@ namespace ams::bluetooth::hid::report { void HandleEvent(void) { controller::BluetoothController *controller; - CircularBufferPacket *realPacket; + CircularBufferPacket *realPacket; + + //BTDRV_LOG_FMT("btdrv-mitm: HidReportEvent"); // Take snapshot of current write offset u32 writeOffset = g_realBuffer->writeOffset; @@ -238,8 +238,10 @@ namespace ams::bluetooth::hid::report { break; default: - BTDRV_LOG_DATA_MSG(&realPacket->data, realPacket->header.size, "unknown packet received: %d", realPacket->header.type); - g_fakeBuffer->Write(realPacket->header.type, &realPacket->data, realPacket->header.size); + //BTDRV_LOG_DATA_MSG(&realPacket->data, realPacket->header.size, "unknown packet received: %d", realPacket->header.type); + + BTDRV_LOG_FMT("unknown packet received: %d", realPacket->header.type); + //g_fakeBuffer->Write(realPacket->header.type, &realPacket->data, realPacket->header.size); break; }