MCU Services: Difference between revisions

MarcusD (talk | contribs)
MarcusD (talk | contribs)
Added IPC call names and headers
Line 123: Line 123:
!  Description
!  Description
|-
|-
| 0x0001....
| 0x00010080
| SetSystemClock (RTC)
| SetRTC
|-
|-
| 0x0002....
| 0x00020000
| GetSystemClock (RTC)
| GetRTC
|-
|-
| 0x0003....
| 0x00030040
| ?
| SetRTCSeconds
|-
|-
| 0x0004....
| 0x00040000
| GetSystemClockSeconds
| GetRTCSeconds
|-
|-
| 0x0005....
| 0x00050040
| ?
| SetRTCMinutes
|-
|-
| 0x0006....
| 0x00060000
| GetSystemClockMinutes ?
| GetRTCMinutes
|-
|-
| 0x0007....
| 0x00070040
| ?
| SetRTCHours
|-
|-
| 0x0008....
| 0x00080000
|  
| GetRTCHours
|-
|-
| 0x0009....
| 0x00090040
| ?
| SetRTCDayOfWeek
|-
|-
| 0x000A....
| 0x000A0000
| ?
| GetRTCDayOfWeek
|-
|-
| 0x000B....
| 0x000B0040
| ?
| SetRTCDayOfMonth
|-
|-
| 0x000C....
| 0x000C0000
| ?
| GetRTCDayOfMonth
|-
|-
| 0x000D....
| 0x000D0040
| ?
| SetRTCMonth
|-
|-
| 0x000E....
| 0x000E0000
| ?
| GetRTCMonth
|-
|-
| 0x000F....
| 0x000F0040
| ?
| SetRTCYear
|-
|-
| 0x0010....
| 0x00100000
| ?
| GetRTCYear
|-
|-
| 0x0011....
| 0x00110040
| ?
| SetRTCLeapYearCounter
|-
|-
| 0x0012....
| 0x00120000
| ?
| GetRTCLeapYearCounter
|-
|-
| 0x0013....
| 0x00130080
| ?
| SetRTCAlarm
|-
|-
| 0x0014....
| 0x00140000
| ?
| GetRTCAlarm
|-
|-
| 0x0015....
| 0x00150040
| ?
| SetRTCAlarmComponent[0]
|-
|-
| 0x0016....
| 0x00160000
| ?
| GetRTCAlarmComponent[0]
|-
|-
| 0x0017....
| 0x00170040
| ?
| SetRTCAlarmComponent[1]
|-
|-
| 0x0018....
| 0x00180000
| ?
| GetRTCAlarmComponent[1]
|-
|-
| 0x0019....
| 0x00190040
| ?
| SetRTCAlarmComponent[2]
|-
|-
| 0x001A....
| 0x001A0000
| ?
| GetRTCAlarmComponent[2]
|-
|-
| 0x001B....
| 0x001B0040
| ?
| SetRTCAlarmComponent[3]
|-
|-
| 0x001C....
| 0x001C0000
| ?
| GetRTCAlarmComponent[3]
|-
|-
| 0x001D....
| 0x001D0040
| ?
| SetRTCAlarmComponent[4]
|-
|-
| 0x001E....
| 0x001E0000
| ?
| GetRTCAlarmComponent[4]
|-
|-
| 0x001F0040
| 0x001F0040
Line 217: Line 217:
|-
|-
| 0x00200000
| 0x00200000
| GetPedometerState
| GetPedometerRecordingMode
|-
|-
| 0x00210080
| 0x00210080
| GetStepCount(for the current day)
| GetStepCount (for the current day)
|-
|-
| 0x0022....
| 0x00220042
| ?
| ReadRegister4Fh(u32 unused_size, translation_param size=0x156 << 4 <nowiki>|</nowiki> 0xC, u8[0x156] ptr)
|-
|-
| 0x0023....
| 0x00230000
| ?
| ??? writes 1 to register 0x4E which is not writable
|-
|-
| 0x0024....
| 0x00240000
| GetMcuRtcEventHandle. MCU notifications 1, 8, 9, 10, 13, 14 and 15 signal this.
| GetPowerEventHandle. MCU notifications 1, 8, 9, 10, 13, 14 and 15 signal this.
see [[I2C_Registers#Device_3|Register 0x18]]
|-
|-
| 0x0025....
| 0x00250000
| GetMcuRtcEventReason
| GetPowerInterruptHistory
|-
|-
| 0x0026....
| 0x00260000
| ?
| CheckRegister02hBit0
|-
|-
| 0x0027....
| 0x00270000
| Disables i2c register 2
| ClearRegister02hBit0 (does nothing since the register is not writable)
|-
|-
| 0x0028....
| 0x00280000
| ?
| CheckRegister02hBit1
|-
|-
| 0x0029....
| 0x00290000
| Same as 0x0027....
| ClearRegister02hBit1
|-
|-
| 0x002A0000
| 0x002A0000
Line 258: Line 259:
| [[MCURTC:GetBatteryLevel|GetBatteryLevel]]
| [[MCURTC:GetBatteryLevel|GetBatteryLevel]]
|-
|-
| 0x002E....
| 0x002E0000
| ?
| GetBatteryEmptyPatternByte0
|-
|-
| 0x002F....
| 0x002F0000
| ?
| GetBatteryEmptyPatternByte0_safe™
|-
|-
| 0x0030....
| 0x00300040
| ?
| SetLEDBrightness (see [[I2C_Registers#Device_3|Register 0x28]])
|-
|-
| 0x0031....
| 0x00310000
| ?
| GetLEDBrightness (see [[I2C_Registers#Device_3|Register 0x28]])
|-
|-
| 0x0032....
| 0x00320000
| [[MCURTC:PowerOff|PowerOff]] (writes 0x1 to i2c MCU device, reg 0x20)
| PowerOff (writes 0x1 to i2c MCU device, [[I2C_Registers#Device_3|reg 0x20]])
|-
|-
| 0x0033....
| 0x00330000
| [[MCURTC:HardwareReboot|HardwareReboot]] (writes 0x4 to i2c MCU device, reg 0x20)
| HardwareReboot (writes 0x4 to i2c MCU device, [[I2C_Registers#Device_3|reg 0x20]])
|-
|-
| 0x0034....
| 0x00340000
| ?
| WriteRegister reg=0x23 value=0x72 (writing to read-only registers does nothing)
|-
|-
| 0x0035....
| 0x00350000
| Writes 0x10 to i2c MCU device, reg 0x20
| Writes 0x10 to i2c MCU device, reg 0x20 (this bit of the register is not writable)
|-
|-
| 0x0036....
| 0x00360040
| SetWatchdogTimer
| SetWatchdogTimer
|-
|-
| 0x0037....
| 0x00370000
| GetWatchdogTimer
| GetWatchdogTimer
|-
|-
| 0x0038....
| 0x00380042
| ?
| ReadInfoRegister(u32 unused_size, translation_param size << 4 <nowiki>|</nowiki> 0xC, u8[0x13] ptr)
|-
|-
| 0x0039....
| 0x00390082
| ?
| WriteLoop (translation parameters too complex)
|-
|-
| 0x003A....
| 0x003A0082
| ?
| ReadLoop (translation parameters too complex)
|-
|-
| 0x003B0640
| 0x003B0640
Line 306: Line 307:
| [[MCURTC:GetInfoLEDStatus|GetInfoLEDStatus]]
| [[MCURTC:GetInfoLEDStatus|GetInfoLEDStatus]]
|-
|-
| 0x003E....
| 0x003E0040
| ?
| WriteRegister50h
|-
|-
| 0x003F....
| 0x003F0000
| ?
| ReadRegister50h
|-
|-
| 0x0040....
| 0x00400040
| ?
| WriteRegister51h
|-
|-
| 0x0041....
| 0x00410000
| ?
| ReadRegister51h
|-
|-
| 0x00420040
| 0x00420040
| [[MCURTC:SetBatteryEmptyLEDPattern|SetBatteryEmptyLEDPattern]]
| [[MCURTC:SetBatteryEmptyLEDPattern|SetBatteryEmptyLEDPattern]]
|-
|-
| 0x0043....
| 0x00430040
| ?
| SetScreenFlickerTop
|-
|-
| 0x0044....
| 0x00440000
| ?
| GetScreenFlickerTop
|-
|-
| 0x0045....
| 0x00450040
| ?
| SetScreenFlickerBottom
|-
|-
| 0x0046....
| 0x00460000
| ?
| GetScreenFlickerBottom
|-
|-
| 0x0047....
| 0x00470080
| ?
| SetVolumeSliderBounds
|-
|-
| 0x0048....
| 0x00480000
| ?
| GetVolumeSliderBounds
|-
|-
| 0x0049....
| 0x00490040
| ?
| SetInterruptMask (see [[I2C_Registers#Device_3|Register 0x18]])
|-
|-
| 0x004A....
| 0x004A0000
| ?
| GetInterruptMask (see [[I2C_Registers#Device_3|Register 0x18]])
|-
|-
| 0x004B....
| 0x004B0000
| ?
| ExitExclusiveInterruptMode
|-
|-
| 0x004C....
| 0x004C0000
| ?
| EnterExclusiveInterruptMode
|-
|-
| 0x004D....
| 0x004D0000
| [[MCURTC:ReadHidFlagRegister|ReadHidFlagRegister]] (reads i2c MCU device, reg 0x10)
| [[MCURTC:ReadHidFlagRegister|ReadInterrupt]] (see [[I2C_Registers#Device_3|Register 0x10]])
|-
|-
| 0x004E0040
| 0x004E0040
| [[MCURTC:PublishNotifications|PublishNotifications]]
| [[MCURTC:PublishNotifications|TriggerInterrupt]]
|-
|-
| 0x004F....
| 0x004F0040
| Sets some flag (otherwise set when uploading MCU firmware)
| SetMCUFirmUpdated(u32 flag) not used by anything
|-
|-
| 0x0050....
| 0x00500000
| Returns the above flag
| IsMCUFirmUpdated
|-
|-
| 0x00510040
| 0x00510040
Line 369: Line 370:
| [[MCURTC:GetSoftwareClosedFlag|GetSoftwareClosedFlag]]
| [[MCURTC:GetSoftwareClosedFlag|GetSoftwareClosedFlag]]
|-
|-
| 0x0053....
| 0x00530040
| ?
| ?
|-
|-
| 0x0054....
| 0x00540000
| ?
| ?
|-
|-
| 0x0055....
| 0x00550040
| ?
| ?
|-
|-
| 0x0056....
| 0x00560000
| ?
| ?
|-
|-
| 0x0057....
| 0x00570040
| ?
| ?
|-
|-
| 0x0058....
| 0x00580000
| ?
| ?
|-
|-
Line 393: Line 394:
| [[MCURTC:GetLegacyJumpProhibitedFlag|GetLegacyJumpProhibitedFlag]]
| [[MCURTC:GetLegacyJumpProhibitedFlag|GetLegacyJumpProhibitedFlag]]
|}
|}
Note that using invalid input with these InfoLED/SetBatteryEmptyLEDPattern commands(especially SetInfoLEDPattern) can cause the system to be bricked(however the boot failure may not begin immediately after using the invalid parameters).


=MCU sound service "mcu::SND"=
=MCU sound service "mcu::SND"=