MCU service consistency and a couple more functions (#381)

Also added MCUHWC_GetFwVerHigh and MCUHWC_GetFwVerLow
This commit is contained in:
Joel 2018-01-01 09:42:46 -06:00 committed by fincs
parent c941b0d2d2
commit 3bbd2dca16
2 changed files with 58 additions and 18 deletions

View File

@ -26,7 +26,7 @@ void mcuHwcExit(void);
* @param data Pointer to write the data to. * @param data Pointer to write the data to.
* @param size Size of data to be read * @param size Size of data to be read
*/ */
Result mcuHwcReadRegister(u8 reg, void *data, u32 size); Result MCUHWC_ReadRegister(u8 reg, void *data, u32 size);
/** /**
* @brief Writes data to a i2c device3 register * @brief Writes data to a i2c device3 register
@ -34,40 +34,52 @@ Result mcuHwcReadRegister(u8 reg, void *data, u32 size);
* @param data Pointer to write the data to. * @param data Pointer to write the data to.
* @param size Size of data to be written * @param size Size of data to be written
*/ */
Result mcuHwcWriteRegister(u8 reg, const void *data, u32 size); Result MCUHWC_WriteRegister(u8 reg, const void *data, u32 size);
/** /**
* @brief Gets the battery voltage * @brief Gets the battery voltage
* @param voltage Pointer to write the battery voltage to. * @param voltage Pointer to write the battery voltage to.
*/ */
Result mcuHwcGetBatteryVoltage(u8 *voltage); Result MCUHWC_GetBatteryVoltage(u8 *voltage);
/** /**
* @brief Gets the battery level * @brief Gets the battery level
* @param level Pointer to write the current battery level to. * @param level Pointer to write the current battery level to.
*/ */
Result mcuHwcGetBatteryLevel(u8 *level); Result MCUHWC_GetBatteryLevel(u8 *level);
/** /**
* @brief Gets the sound slider level * @brief Gets the sound slider level
* @param level Pointer to write the slider level to. * @param level Pointer to write the slider level to.
*/ */
Result mcuHwcGetSoundSliderLevel(u8 *level); Result MCUHWC_GetSoundSliderLevel(u8 *level);
/** /**
* @brief Sets Wifi LED state * @brief Sets Wifi LED state
* @param state State of Wifi LED. (True/False) * @param state State of Wifi LED. (True/False)
*/ */
Result mcuHwcSetWifiLedState(bool state); Result MCUHWC_SetWifiLedState(bool state);
/** /**
* @brief Sets Power LED state * @brief Sets Power LED state
* @param state powerLedState State of power LED. * @param state powerLedState State of power LED.
*/ */
Result mcuHwcSetPowerLedState(powerLedState state); Result MCUHWC_SetPowerLedState(powerLedState state);
/** /**
* @brief Gets 3d slider level * @brief Gets 3d slider level
* @param level Pointer to write 3D slider level to. * @param level Pointer to write 3D slider level to.
*/ */
Result mcuHwcGet3dSliderLevel(u8 *level); Result MCUHWC_Get3dSliderLevel(u8 *level);
/**
* @brief Gets the major MCU firmware version
* @param out Pointer to write the major firmware version to.
*/
Result MCUHWC_GetFwVerHigh(u8 *out);
/**
* @brief Gets the minor MCU firmware version
* @param out Pointer to write the minor firmware version to.
*/
Result MCUHWC_GetFwVerLow(u8 *out);

View File

@ -18,7 +18,7 @@ void mcuHwcExit(void)
svcCloseHandle(mcuHwcHandle); svcCloseHandle(mcuHwcHandle);
} }
Result mcuHwcReadRegister(u8 reg, void* data, u32 size) Result MCUHWC_ReadRegister(u8 reg, void* data, u32 size)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -34,7 +34,7 @@ Result mcuHwcReadRegister(u8 reg, void* data, u32 size)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcWriteRegister(u8 reg, const void *data, u32 size) Result MCUHWC_WriteRegister(u8 reg, const void *data, u32 size)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -50,7 +50,7 @@ Result mcuHwcWriteRegister(u8 reg, const void *data, u32 size)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcGetBatteryVoltage(u8 *voltage) Result MCUHWC_GetBatteryVoltage(u8 *voltage)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -64,7 +64,7 @@ Result mcuHwcGetBatteryVoltage(u8 *voltage)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcGetBatteryLevel(u8 *level) Result MCUHWC_GetBatteryLevel(u8 *level)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -78,7 +78,7 @@ Result mcuHwcGetBatteryLevel(u8 *level)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcSetPowerLedState(powerLedState state) Result MCUHWC_SetPowerLedState(powerLedState state)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -91,7 +91,7 @@ Result mcuHwcSetPowerLedState(powerLedState state)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcSetWifiLedState(bool state) Result MCUHWC_SetWifiLedState(bool state)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -104,7 +104,7 @@ Result mcuHwcSetWifiLedState(bool state)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcGetSoundSliderLevel(u8 *level) Result MCUHWC_GetSoundSliderLevel(u8 *level)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();
@ -118,7 +118,35 @@ Result mcuHwcGetSoundSliderLevel(u8 *level)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result mcuHwcGet3dSliderLevel(u8 *level) Result MCUHWC_Get3dSliderLevel(u8 *level)
{ {
return mcuHwcReadRegister(8, &level, 1); return MCUHWC_ReadRegister(8, &level, 1);
} }
Result MCUHWC_GetFwVerHigh(u8 *out)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x10,0,0); // 0x100000
if(R_FAILED(ret = svcSendSyncRequest(mcuHwcHandle)))return ret;
*out = cmdbuf[2];
return (Result)cmdbuf[1];
}
Result MCUHWC_GetFwVerLow(u8 *out)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x11,0,0); // 0x110000
if(R_FAILED(ret = svcSendSyncRequest(mcuHwcHandle)))return ret;
*out = cmdbuf[2];
return (Result)cmdbuf[1];
}