From ea1b3f28b55bd74efb013f832dde19e9b1c10e3a Mon Sep 17 00:00:00 2001 From: jaby Date: Mon, 3 Jun 2024 21:23:04 +0200 Subject: [PATCH] Add Enter/ExitCriticalSection to Periphery code --- .../PoolBox/application/src/asset_mgr.cpp | 2 +- src/Library/src/CD/cd.cpp | 1 - src/Library/src/Periphery/periphery.cpp | 65 ++++++++++--------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/examples/PoolBox/application/src/asset_mgr.cpp b/examples/PoolBox/application/src/asset_mgr.cpp index 8dfa430c..e9e62d30 100644 --- a/examples/PoolBox/application/src/asset_mgr.cpp +++ b/examples/PoolBox/application/src/asset_mgr.cpp @@ -111,7 +111,7 @@ namespace Assets { namespace XAAudio { void play_fox() { - CDXA::play(lba, FOX_XA, 1, true); + CDXA::play(lba, FOX_XA, 0, false); } } } \ No newline at end of file diff --git a/src/Library/src/CD/cd.cpp b/src/Library/src/CD/cd.cpp index 7b758d7b..ee678cda 100644 --- a/src/Library/src/CD/cd.cpp +++ b/src/Library/src/CD/cd.cpp @@ -176,7 +176,6 @@ namespace JabyEngine { send_read_n0(cur_file.cur_lba); } - void continue_reading() { if(current_state == State::BufferFull) { Command::wait_completed(); diff --git a/src/Library/src/Periphery/periphery.cpp b/src/Library/src/Periphery/periphery.cpp index 22686bc5..82d4bf28 100644 --- a/src/Library/src/Periphery/periphery.cpp +++ b/src/Library/src/Periphery/periphery.cpp @@ -1,5 +1,6 @@ #include "../../internal-include/periphery_internal.hpp" #include +#include namespace JabyEngine { namespace Periphery { @@ -87,47 +88,49 @@ namespace JabyEngine { void query_controller() { static constexpr auto TypeIDX = 1; - Periphery::connect_to(cur_controller_port); - for(uint32_t id = 0; id < Periphery::DeviceCount; id++) { - auto &cur_controller = controller[cur_controller_port][id]; + SysCall::EnterCriticalSection(); + Periphery::connect_to(cur_controller_port); + for(uint32_t id = 0; id < Periphery::DeviceCount; id++) { + auto &cur_controller = controller[cur_controller_port][id]; - uint8_t header[] = {static_cast((id + 1)), 0x42, 0x0}; - uint8_t data[] = {cur_controller.header.rumble0, cur_controller.header.rumble1, 0x0, 0x0, 0x0, 0x0}; + uint8_t header[] = {static_cast((id + 1)), 0x42, 0x0}; + uint8_t data[] = {cur_controller.header.rumble0, cur_controller.header.rumble1, 0x0, 0x0, 0x0, 0x0}; - // Can this move to the if?? - set_config_command(cur_controller.header.state, header, data); - if(ControllerHelper::is_config(cur_controller)) { - send_data(header, header, data, data); - ControllerHelper::advance_config(cur_controller); - } + // Can this move to the if?? + set_config_command(cur_controller.header.state, header, data); + if(ControllerHelper::is_config(cur_controller)) { + send_data(header, header, data, data); + ControllerHelper::advance_config(cur_controller); + } - else { - cur_controller.button.exchange_state(); + else { + cur_controller.button.exchange_state(); - send_data(header, header, data, ControllerHelper::raw_device_data(cur_controller)); - const bool isValidController = (header[TypeIDX] != 0xFF); + send_data(header, header, data, ControllerHelper::raw_device_data(cur_controller)); + const bool isValidController = (header[TypeIDX] != 0xFF); - if(header[TypeIDX] != cur_controller.header.type) { - cur_controller.header.type = header[TypeIDX]; - cur_controller.header.state = isValidController ? RawController::State::EnterConfigMode : RawController::State::Disconnected; + if(header[TypeIDX] != cur_controller.header.type) { + cur_controller.header.type = header[TypeIDX]; + cur_controller.header.state = isValidController ? RawController::State::EnterConfigMode : RawController::State::Disconnected; - /*if(!isValidController) - { - printf("Disconnected!\n"); + /*if(!isValidController) + { + printf("Disconnected!\n"); + } + + else + { + printf("ID: 0x%02X 0x%04X\n", header[TypeIDX], contData.button); + }*/ } - - else - { - printf("ID: 0x%02X 0x%04X\n", header[TypeIDX], contData.button); - }*/ } } - } - Periphery::close_connection(); + Periphery::close_connection(); - if(Configuration::Periphery::include_portB()) { - cur_controller_port ^= 0x1; - } + if(Configuration::Periphery::include_portB()) { + cur_controller_port ^= 0x1; + } + SysCall::ExitCriticalSection(); } } } \ No newline at end of file