Difference between revisions of "MIC Services"

From 3dbrew
Jump to navigation Jump to search
 
(18 intermediate revisions by 4 users not shown)
Line 13: Line 13:
 
|-
 
|-
 
| 0x00030140
 
| 0x00030140
| (u8 unk0, u8 unk1, u32 unk2, u32 offset, u8 unk3) ? (input offset = offset where the offset field is located in sharedmem, normally sharedmemsize-4)
+
| [[MICU:StartSampling|StartSampling]]
 
|-
 
|-
 
| 0x00040040
 
| 0x00040040
| (u8 input) ?
+
| [[MICU:AdjustSampling|AdjustSampling]]
 
|-
 
|-
 
| 0x00050000
 
| 0x00050000
| ?
+
| [[MICU:StopSampling|StopSampling]]
 
|-
 
|-
 
| 0x00060000
 
| 0x00060000
| This writes an output u8 to cmdreply indexword[2]. val = *((u16*)0x1ec62000) >> 15.
+
| [[MICU:IsSampling|IsSampling]]
 
|-
 
|-
 
| 0x00070000
 
| 0x00070000
| GetEventHandle.
+
| [[MICU:GetEventHandle|GetEventHandle]]
 
|-
 
|-
 
| 0x00080040
 
| 0x00080040
| SetControl(u8 input). This is a wrapper for CDCMIC command 0x00010040.
+
| [[MICU:SetGain|SetGain]]
 
|-
 
|-
 
| 0x00090000
 
| 0x00090000
| GetControl. This is a wrapper for CDCMIC command 0x00020000.
+
| [[MICU:GetGain|GetGain]]
 
|-
 
|-
 
| 0x000A0040
 
| 0x000A0040
| SetRecording(u8 input). This is a wrapper for CDCMIC command 0x00030040. 0 = disable recording, 1 = enable recording. When recording is disabled with this, MIC-module writes value 0xFFFF to the output audio sample data in shared-mem, since that's what the [[MIC]] hardware returns here.
+
| [[MICU:SetPower|SetPower]]
 
|-
 
|-
 
| 0x000B0000
 
| 0x000B0000
| IsRecording. This is a wrapper for CDCMIC command 0x00040000.
+
| [[MICU:GetPower|GetPower]]
 
|-
 
|-
 
| 0x000C0042
 
| 0x000C0042
| (size, [[IPC Command Structure|<translate-header>]], bufptr) This is a wrapper for CDCMIC command 0x00050042.
+
| [[MICU:SetIirFilterMic|SetIirFilterMic]]
 
|-
 
|-
 
| 0x000D0040
 
| 0x000D0040
| (u8 input) This writes the input value to a MIC-module state field.
+
| [[MICU:SetClamp|SetClamp]]
 
|-
 
|-
 
| 0x000E0000
 
| 0x000E0000
| This writes the u8 value of the MIC-module field also used by command 0x000D0040, to cmdreply indexword[2].
+
| [[MICU:GetClamp|GetClamp]]
 
|-
 
|-
 
| 0x000F0040
 
| 0x000F0040
| (u8 input) This writes the input u8 value to a MIC-module state field.
+
| [[MICU:SetAllowShellClosed|SetAllowShellClosed]]
 
|-
 
|-
 
| 0x00100040
 
| 0x00100040
| [[MICU:Initialize|Initialize]]
+
| When the input value is 0, value 1 is written to an u8 MIC module state field. Otherwise, value 0 is written there. Normally the input value is non-zero.
 
|}
 
|}
  
Line 59: Line 59:
 
Only one session can be open for this service total(that is, only one process can use this service at a time).
 
Only one session can be open for this service total(that is, only one process can use this service at a time).
  
=Control value=
+
==Encoding==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Bit
+
Enum
Description
+
Value
 
|-
 
|-
| 3-0
+
| ENCODING_PCM8
| ?
+
| 0
 
|-
 
|-
| 6-4
+
| ENCODING_PCM16
| Amplification, 0=none.
+
| 1
 
|-
 
|-
| 7
+
| ENCODING_PCM8_SIGNED
| ?
+
| 2
 +
|-
 +
| ENCODING_PCM16_SIGNED
 +
| 3
 
|}
 
|}
 +
 +
==SampleRate==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Enum
 +
!  Value
 +
|-
 +
| SAMPLE_RATE_32730
 +
| 0
 +
|-
 +
| SAMPLE_RATE_16360
 +
| 1
 +
|-
 +
| SAMPLE_RATE_10910
 +
| 2
 +
|-
 +
| SAMPLE_RATE_8180
 +
| 3
 +
|}
 +
 +
 +
The actual accurate sampling rate can be calculated using <code>(16756991 / 512) / (SampleRate + 1)</code> where <code>SampleRate</code> is one of the above values.
  
 
=See Also=
 
=See Also=
 
[[MIC Shared Memory]]
 
[[MIC Shared Memory]]

Latest revision as of 16:45, 17 March 2018

Microphone service "mic:u"[edit]

Command Header Description
0x00010042 MapSharedMem
0x00020000 UnmapSharedMem
0x00030140 StartSampling
0x00040040 AdjustSampling
0x00050000 StopSampling
0x00060000 IsSampling
0x00070000 GetEventHandle
0x00080040 SetGain
0x00090000 GetGain
0x000A0040 SetPower
0x000B0000 GetPower
0x000C0042 SetIirFilterMic
0x000D0040 SetClamp
0x000E0000 GetClamp
0x000F0040 SetAllowShellClosed
0x00100040 When the input value is 0, value 1 is written to an u8 MIC module state field. Otherwise, value 0 is written there. Normally the input value is non-zero.

This is an interface for using the MIC hardware via the "cdc:MIC" service and the MIC IO registers.

Only one session can be open for this service total(that is, only one process can use this service at a time).

Encoding[edit]

Enum Value
ENCODING_PCM8 0
ENCODING_PCM16 1
ENCODING_PCM8_SIGNED 2
ENCODING_PCM16_SIGNED 3

SampleRate[edit]

Enum Value
SAMPLE_RATE_32730 0
SAMPLE_RATE_16360 1
SAMPLE_RATE_10910 2
SAMPLE_RATE_8180 3


The actual accurate sampling rate can be calculated using (16756991 / 512) / (SampleRate + 1) where SampleRate is one of the above values.

See Also[edit]

MIC Shared Memory