From cbeac6b7ec3634643cf33c7bba814463c78e61da Mon Sep 17 00:00:00 2001 From: Pirater12 Date: Tue, 26 Sep 2017 13:29:17 +0530 Subject: [PATCH] Added more mcuHwc Functions --- libctru/include/3ds/services/mcuhwc.h | 26 ++++++++++++++++++++-- libctru/source/services/mcuhwc.c | 31 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/libctru/include/3ds/services/mcuhwc.h b/libctru/include/3ds/services/mcuhwc.h index 4f3f6d6..040dbde 100644 --- a/libctru/include/3ds/services/mcuhwc.h +++ b/libctru/include/3ds/services/mcuhwc.h @@ -1,9 +1,19 @@ /** - * @file mcuHwc.h + * @file mcuhwc.h * @brief mcuHwc service. */ #pragma once +typedef enum +{ + LED_NORMAL = 1, ///< The normal mode of the led + LED_SLEEP_MODE, ///< The led pulses slowly as it does in the sleep mode + LED_OFF, ///< Switch off power led + LED_RED, ///< Red state of the led + LED_BLUE, ///< Blue state of the led + LED_BLINK_RED, ///< Blinking red state of power led and notification led +}powerLedState; + /// Initializes mcuHwc. Result mcuHwcInit(void); @@ -42,4 +52,16 @@ Result mcuHwcGetBatteryLevel(u8 *level); * @brief Gets the sound slider level * @param level Pointer to write the slider level to. */ -Result mcuHwcGetSoundSliderLevel(u8 *level); \ No newline at end of file +Result mcuHwcGetSoundSliderLevel(u8 *level); + +/** + * @brief Sets Wifi LED state + * @param state State of Wifi LED. (True/False) + */ +Result mcuHwcSetWifiLedState(bool state); + +/** + * @brief Sets Power LED state + * @param state powerLedState State of power LED. + */ +Result mcuHwcSetPowerLedState(powerLedState state); \ No newline at end of file diff --git a/libctru/source/services/mcuhwc.c b/libctru/source/services/mcuhwc.c index dc7550f..3b93f03 100644 --- a/libctru/source/services/mcuhwc.c +++ b/libctru/source/services/mcuhwc.c @@ -78,6 +78,32 @@ Result mcuHwcGetBatteryLevel(u8 *level) return (Result)cmdbuf[1]; } +Result mcuHwcSetPowerLedState(powerLedState state) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x6,2,0); // 0x60040 + cmdbuf[1] = state; + + if(R_FAILED(ret = svcSendSyncRequest(mcuHwcHandle)))return ret; + + return (Result)cmdbuf[1]; +} + +Result mcuHwcSetWifiLedState(bool state) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x7,0,0); // 0x70000 + cmdbuf[1] = state; + + if(R_FAILED(ret = svcSendSyncRequest(mcuHwcHandle)))return ret; + + return (Result)cmdbuf[1]; +} + Result mcuHwcGetSoundSliderLevel(u8 *level) { Result ret = 0; @@ -90,4 +116,9 @@ Result mcuHwcGetSoundSliderLevel(u8 *level) *level = cmdbuf[2]; return (Result)cmdbuf[1]; +} + +Result mcuHwcGet3dSliderLevel(u8 *level) +{ + return mcuHwcReadRegister(8, &level, 1); } \ No newline at end of file