From 21d8017980b170e92a2c197096149c1d2ecbd6c9 Mon Sep 17 00:00:00 2001 From: Mark Drobnak Date: Sat, 28 Jan 2023 14:16:31 -0800 Subject: [PATCH 001/116] Use the human-readable error strings in the Error Display impl --- ctru-rs/src/error.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index bdd2d2e..9aaf410 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -101,13 +101,17 @@ impl fmt::Debug for Error { } } -// TODO: Expand libctru result code into human-readable error message. These should be useful: -// https://www.3dbrew.org/wiki/Error_codes -// https://github.com/devkitPro/libctru/blob/master/libctru/include/3ds/result.h impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - &Self::Os(err) => write!(f, "libctru result code: 0x{err:08X}"), + &Self::Os(err) => write!( + f, + "libctru result code 0x{err:08X}: [{} {}] {}: {}", + result_code_level_str(err), + result_code_module_str(err), + result_code_summary_str(err), + result_code_description_str(err) + ), Self::Libc(err) => write!(f, "{err}"), Self::ServiceAlreadyActive => write!(f, "Service already active"), Self::OutputAlreadyRedirected => { @@ -135,7 +139,7 @@ fn result_code_level_str(result: ctru_sys::Result) -> Cow<'static, str> { RL_PERMANENT => "permanent", RL_TEMPORARY => "temporary", RL_STATUS => "status", - code => return Cow::Owned(format!("(unknown: {code:#x})")), + code => return Cow::Owned(format!("(unknown level: {code:#x})")), }) } @@ -160,7 +164,7 @@ fn result_code_summary_str(result: ctru_sys::Result) -> Cow<'static, str> { RS_STATUSCHANGED => "status_changed", RS_INTERNAL => "internal", RS_INVALIDRESVAL => "invalid_res_val", - code => return Cow::Owned(format!("(unknown: {code:#x})")), + code => return Cow::Owned(format!("(unknown summary: {code:#x})")), }) } @@ -200,7 +204,7 @@ fn result_code_description_str(result: ctru_sys::Result) -> Cow<'static, str> { RD_NOT_AUTHORIZED => "not_authorized", RD_TOO_LARGE => "too_large", RD_INVALID_SELECTION => "invalid_selection", - code => return Cow::Owned(format!("(unknown: {code:#x})")), + code => return Cow::Owned(format!("(unknown description: {code:#x})")), }) } @@ -317,6 +321,6 @@ fn result_code_module_str(result: ctru_sys::Result) -> Cow<'static, str> { RM_NFP => "nfp", RM_APPLICATION => "application", RM_INVALIDRESVAL => "invalid_res_val", - code => return Cow::Owned(format!("(unknown: {code:#x})")), + code => return Cow::Owned(format!("(unknown module: {code:#x})")), }) } From 6629a6dc1f321b1ca9a51a2d9e2f39625b6893c4 Mon Sep 17 00:00:00 2001 From: Mark Drobnak Date: Sat, 28 Jan 2023 14:35:11 -0800 Subject: [PATCH 002/116] Try bumping CI nightly version to fix error --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8ccd74a..102c704 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: matrix: toolchain: # Run against a "known good" nightly - - nightly-2022-07-18 + - nightly-2023-01-13 # Check for breakage on latest nightly - nightly # But if latest nightly fails, allow the workflow to continue From 7a67600327d3dd61a9a8585c1af3655dd0a08f83 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sat, 11 Feb 2023 16:56:42 +0100 Subject: [PATCH 003/116] Refresh libctru to the latest version --- ctru-rs/src/linear.rs | 2 +- ctru-rs/src/services/ps.rs | 2 +- ctru-sys/bindgen.sh | 6 +- ctru-sys/src/bindings.rs | 9755 ++++++------------------------------ 4 files changed, 1505 insertions(+), 8260 deletions(-) diff --git a/ctru-rs/src/linear.rs b/ctru-rs/src/linear.rs index 6076dc9..77cf526 100644 --- a/ctru-rs/src/linear.rs +++ b/ctru-rs/src/linear.rs @@ -30,7 +30,7 @@ impl LinearAllocator { unsafe impl Allocator for LinearAllocator { fn allocate(&self, layout: Layout) -> Result, AllocError> { let pointer = - unsafe { ctru_sys::linearMemAlign(layout.size() as u32, layout.align() as u32) }; + unsafe { ctru_sys::linearMemAlign(layout.size(), layout.align()) }; NonNull::new(pointer.cast()) .map(|ptr| NonNull::slice_from_raw_parts(ptr, layout.size())) diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index 0e8cc5c..6a449c4 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -46,7 +46,7 @@ pub fn device_id() -> crate::Result { pub fn generate_random_bytes(out: &mut [u8]) -> crate::Result<()> { ResultCode(unsafe { - ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len() as u32) + ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len()) })?; Ok(()) } diff --git a/ctru-sys/bindgen.sh b/ctru-sys/bindgen.sh index 6fbaaab..edf27b7 100755 --- a/ctru-sys/bindgen.sh +++ b/ctru-sys/bindgen.sh @@ -11,9 +11,9 @@ bindgen "$DEVKITPRO/libctru/include/3ds.h" \ --ctypes-prefix "::libc" \ --no-prepend-enum-name \ --generate "functions,types,vars" \ - --blacklist-type "u(8|16|32|64)" \ - --blacklist-type "__builtin_va_list" \ - --blacklist-type "__va_list" \ + --blocklist-type "u(8|16|32|64)" \ + --blocklist-type "__builtin_va_list" \ + --blocklist-type "__va_list" \ --opaque-type "MiiData" \ --with-derive-default \ -- \ diff --git a/ctru-sys/src/bindings.rs b/ctru-sys/src/bindings.rs index ff6db4b..1401ccc 100644 --- a/ctru-sys/src/bindings.rs +++ b/ctru-sys/src/bindings.rs @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.60.1 */ +/* automatically generated by rust-bindgen 0.64.0 */ #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] @@ -1262,7 +1262,6 @@ pub type int_fast32_t = ::libc::c_int; pub type uint_fast32_t = ::libc::c_uint; pub type int_fast64_t = ::libc::c_longlong; pub type uint_fast64_t = ::libc::c_ulonglong; -pub type size_t = ::libc::c_uint; pub type wchar_t = ::libc::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -1586,9 +1585,7 @@ pub const MEMOP_LINEAR_FLAG: MemOp = 65536; #[doc = ""] pub const MEMOP_ALLOC_LINEAR: MemOp = 65539; -#[doc = "[`svcControlMemory`] operation flags"] -#[doc = ""] -#[doc = "The lowest 8 bits are the operation"] +#[doc = "[`svcControlMemory`] operation flags\n\n The lowest 8 bits are the operation"] #[doc = ""] pub type MemOp = ::libc::c_uint; @@ -1879,16 +1876,7 @@ pub const DMARST_RESUME_DEVICE: _bindgen_ty_6 = 2; #[doc = ""] pub type _bindgen_ty_6 = ::libc::c_uint; -#[doc = "Device configuration structure, part of [`DmaConfig`]"] -#[doc = ""] -#[doc = "- if (and only if) src/dst is a device, then src/dst won't be auto-incremented."] -#[doc = "- the kernel uses DMAMOV instead of DMAADNH, when having to decrement (possibly working around an erratum);"] -#[doc = "this forces all loops to be unrolled -- you need to keep that in mind when using negative increments, as the kernel"] -#[doc = "uses a limit of 100 DMA instruction bytes per channel."] -#[doc = ""] -#[doc = "# Notes"] -#[doc = ""] -#[doc = "*"] +#[doc = "Device configuration structure, part of [`DmaConfig.\n`] @note\n - if (and only if) src/dst is a device, then src/dst won't be auto-incremented.\n - the kernel uses DMAMOV instead of DMAADNH, when having to decrement (possibly working around an erratum);\n this forces all loops to be unrolled -- you need to keep that in mind when using negative increments, as the kernel\n uses a limit of 100 DMA instruction bytes per channel."] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -2076,14 +2064,7 @@ pub const PERFCOUNTEREVT_SCU_WRITE_BUSY_PORT1: PerfCounterEvent = 4113; pub const PERFCOUNTEREVT_SCU_EXTERNAL_READ: PerfCounterEvent = 4114; pub const PERFCOUNTEREVT_SCU_EXTERNAL_WRITE: PerfCounterEvent = 4115; pub const PERFCOUNTEREVT_SCU_CYCLE_COUNT: PerfCounterEvent = 4127; -#[doc = "Performance counter event IDs (CP15 or SCU)."] -#[doc = ""] -#[doc = "- CP15: "] -#[doc = "- SCU: "] -#[doc = ""] -#[doc = "# Notes"] -#[doc = ""] -#[doc = "* Refer to:"] +#[doc = "Performance counter event IDs (CP15 or SCU).\n\n @note Refer to:\n - CP15: - SCU: "] #[doc = ""] pub type PerfCounterEvent = ::libc::c_uint; @@ -2665,13 +2646,16 @@ pub type DebugThreadParameter = ::libc::c_uint; #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] -pub struct CodeSetInfo { +pub struct CodeSetHeader { #[doc = "ASCII name of codeset"] #[doc = ""] pub name: [u8_; 8usize], - pub unk1: u16_, - pub unk2: u16_, - pub unk3: u32_, + #[doc = "Version field of codeset (unused)"] + #[doc = ""] + pub version: u16_, + #[doc = "Padding"] + #[doc = ""] + pub padding: [u16_; 3usize], #[doc = ".text start address"] #[doc = ""] pub text_addr: u32_, @@ -2699,7 +2683,9 @@ pub struct CodeSetInfo { #[doc = "total pages for .data, .bss (aligned)"] #[doc = ""] pub rw_size_total: u32_, - pub unk4: u32_, + #[doc = "Padding"] + #[doc = ""] + pub padding2: u32_, #[doc = "Program ID"] #[doc = ""] pub program_id: u64_, @@ -2736,26 +2722,7 @@ impl Default for StartupInfo { } extern "C" { #[must_use] - #[doc = "# Memory management"] - #[doc = ""] - #[doc = "Controls memory mapping"] - #[doc = ""] - #[doc = "It has to be pointing to a RW memory."] - #[doc = "Use NULL if the operation is [`MEMOP_FREE`] or [`MEMOP_ALLOC`]"] - #[doc = "Value 0 is used when unmapping memory."] - #[doc = "If a memory is mapped for two or more addresses, you have to use MEMOP_UNMAP before being able to MEMOP_FREE it."] - #[doc = "MEMOP_MAP will fail if @p addr1 was already mapped to another address."] - #[doc = "More information is available at "] - #[doc = "[`svcControlProcessMemory`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addr_out` - The virtual address resulting from the operation. Usually the same as addr0. [Direction: In, Out]"] - #[doc = "* `addr0` - The virtual address to be used for the operation."] - #[doc = "* `addr1` - The virtual address to be (un)mirrored by @p addr0 when using [`MEMOP_MAP`] or [`MEMOP_UNMAP`]"] - #[doc = "* `size` - The requested size for [`MEMOP_ALLOC`] and [`MEMOP_ALLOC_LINEAR`]"] - #[doc = "* `op` - Operation flags. See [`MemOp`]"] - #[doc = "* `perm` - A combination of [`MEMPERM_READ`] and [`MEMPERM_WRITE`] Using MEMPERM_EXECUTE will return an error."] + #[doc = "# Memory management\n@{\n**\n* @brief Controls memory mapping\n* @param[out] addr_out The virtual address resulting from the operation. Usually the same as addr0.\n* @param addr0 The virtual address to be used for the operation.\n* @param addr1 The virtual address to be (un)mirrored by @p addr0 when using [`MEMOP_MAP`] or [`MEMOP_UNMAP.\n*`] It has to be pointing to a RW memory.\n* Use NULL if the operation is [`MEMOP_FREE`] or [`MEMOP_ALLOC.\n*`] @param size The requested size for [`MEMOP_ALLOC`] and [`MEMOP_ALLOC_LINEAR.\n*`] @param op Operation flags. See [`MemOp.\n*`] @param perm A combination of [`MEMPERM_READ`] and [`MEMPERM_WRITE`] Using MEMPERM_EXECUTE will return an error.\n* Value 0 is used when unmapping memory.\n*\n* If a memory is mapped for two or more addresses, you have to use MEMOP_UNMAP before being able to MEMOP_FREE it.\n* MEMOP_MAP will fail if @p addr1 was already mapped to another address.\n*\n* More information is available at [`svcControlProcessMemory\n*/`]"] #[doc = ""] pub fn svcControlMemory( addr_out: *mut u32_, @@ -2768,21 +2735,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Controls the memory mapping of a process"] - #[doc = ""] - #[doc = "This is the only SVC which allows mapping executable memory."] - #[doc = "Using [`MEMOP_PROT`] will change the memory permissions of an already mapped memory."] - #[doc = "[`svcControlProcess`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addr0` - The virtual address to map"] - #[doc = "* `addr1` - The virtual address to be mapped by @p addr0"] - #[doc = "* `type` - Only operations [`MEMOP_MAP`] [`MEMOP_UNMAP`] and [`MEMOP_PROT`] are allowed."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The pseudo handle for the current process is not supported by this service call."] + #[doc = "Controls the memory mapping of a process\n @param addr0 The virtual address to map\n @param addr1 The virtual address to be mapped by @p addr0\n @param type Only operations [`MEMOP_MAP`] [`MEMOP_UNMAP`] and [`MEMOP_PROT`] are allowed.\n\n This is the only SVC which allows mapping executable memory.\n Using [`MEMOP_PROT`] will change the memory permissions of an already mapped memory.\n\n @note The pseudo handle for the current process is not supported by this service call.\n [`svcControlProcess`]"] #[doc = ""] pub fn svcControlProcessMemory( process: Handle, @@ -2795,19 +2748,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a block of shared memory"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `memblock` - Pointer to store the handle of the block [Direction: In, Out]"] - #[doc = "* `addr` - Address of the memory to map, page-aligned. So its alignment must be 0x1000."] - #[doc = "* `size` - Size of the memory to map, a multiple of 0x1000."] - #[doc = "* `my_perm` - Memory permissions for the current process"] - #[doc = "* `other_perm` - Memory permissions for the other processes"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The shared memory block, and its rights, are destroyed when the handle is closed."] + #[doc = "Creates a block of shared memory\n @param[out] memblock Pointer to store the handle of the block\n @param addr Address of the memory to map, page-aligned. So its alignment must be 0x1000.\n @param size Size of the memory to map, a multiple of 0x1000.\n @param my_perm Memory permissions for the current process\n @param other_perm Memory permissions for the other processes\n\n @note The shared memory block, and its rights, are destroyed when the handle is closed."] #[doc = ""] pub fn svcCreateMemoryBlock( memblock: *mut Handle, @@ -2819,18 +2760,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Maps a block of shared memory"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `memblock` - Handle of the block"] - #[doc = "* `addr` - Address of the memory to map, page-aligned. So its alignment must be 0x1000."] - #[doc = "* `my_perm` - Memory permissions for the current process"] - #[doc = "* `other_perm` - Memory permissions for the other processes"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The shared memory block, and its rights, are destroyed when the handle is closed."] + #[doc = "Maps a block of shared memory\n @param memblock Handle of the block\n @param addr Address of the memory to map, page-aligned. So its alignment must be 0x1000.\n @param my_perm Memory permissions for the current process\n @param other_perm Memory permissions for the other processes\n\n @note The shared memory block, and its rights, are destroyed when the handle is closed."] #[doc = ""] pub fn svcMapMemoryBlock( memblock: Handle, @@ -2841,61 +2771,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Maps a block of process memory, starting from address 0x00100000."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `destAddress` - Address of the block of memory to map, in the current (destination) process."] - #[doc = "* `size` - Size of the block of memory to map (truncated to a multiple of 0x1000 bytes)."] + #[doc = "Maps a block of process memory, starting from address 0x00100000.\n @param process Handle of the process.\n @param destAddress Address of the block of memory to map, in the current (destination) process.\n @param size Size of the block of memory to map (truncated to a multiple of 0x1000 bytes)."] #[doc = ""] pub fn svcMapProcessMemory(process: Handle, destAddress: u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Unmaps a block of process memory, starting from address 0x00100000."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `destAddress` - Address of the block of memory to unmap, in the current (destination) process."] - #[doc = "* `size` - Size of the block of memory to unmap (truncated to a multiple of 0x1000 bytes)."] + #[doc = "Unmaps a block of process memory, starting from address 0x00100000.\n @param process Handle of the process.\n @param destAddress Address of the block of memory to unmap, in the current (destination) process.\n @param size Size of the block of memory to unmap (truncated to a multiple of 0x1000 bytes)."] #[doc = ""] pub fn svcUnmapProcessMemory(process: Handle, destAddress: u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Unmaps a block of shared memory"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `memblock` - Handle of the block"] - #[doc = "* `addr` - Address of the memory to unmap, page-aligned. So its alignment must be 0x1000."] + #[doc = "Unmaps a block of shared memory\n @param memblock Handle of the block\n @param addr Address of the memory to unmap, page-aligned. So its alignment must be 0x1000."] #[doc = ""] pub fn svcUnmapMemoryBlock(memblock: Handle, addr: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Queries memory information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output memory info to. [Direction: In, Out]"] - #[doc = "* `out` - Pointer to output page info to."] - #[doc = "* `addr` - Virtual memory address to query."] + #[doc = "Queries memory information.\n @param[out] info Pointer to output memory info to.\n @param out Pointer to output page info to.\n @param addr Virtual memory address to query."] #[doc = ""] pub fn svcQueryMemory(info: *mut MemInfo, out: *mut PageInfo, addr: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Queries process memory information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output memory info to. [Direction: In, Out]"] - #[doc = "* `out` - Pointer to output page info to. [Direction: In, Out]"] - #[doc = "* `process` - Process to query memory from."] - #[doc = "* `addr` - Virtual memory address to query."] + #[doc = "Queries process memory information.\n @param[out] info Pointer to output memory info to.\n @param[out] out Pointer to output page info to.\n @param process Process to query memory from.\n @param addr Virtual memory address to query."] #[doc = ""] pub fn svcQueryProcessMemory( info: *mut MemInfo, @@ -2906,64 +2806,36 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "# Process management"] - #[doc = ""] - #[doc = "Gets the handle of a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - The handle of the process [Direction: In, Out]"] - #[doc = "* `processId` - The ID of the process to open"] + #[doc = "# Process management\n@{\n**\n* @brief Gets the handle of a process.\n* @param[out] process The handle of the process\n* @param processId The ID of the process to open\n*/"] #[doc = ""] pub fn svcOpenProcess(process: *mut Handle, processId: u32_) -> Result; } extern "C" { #[doc = "Exits the current process."] #[doc = ""] - pub fn svcExitProcess(); + pub fn svcExitProcess() -> !; } extern "C" { #[must_use] - #[doc = "Terminates a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process to terminate."] + #[doc = "Terminates a process.\n @param process Handle of the process to terminate."] #[doc = ""] pub fn svcTerminateProcess(process: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets information about a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output process info to. [Direction: In, Out]"] - #[doc = "* `process` - Handle of the process to get information about."] - #[doc = "* `type` - Type of information to retreieve."] + #[doc = "Gets information about a process.\n @param[out] out Pointer to output process info to.\n @param process Handle of the process to get information about.\n @param type Type of information to retreieve."] #[doc = ""] pub fn svcGetProcessInfo(out: *mut s64, process: Handle, type_: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the ID of a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the process ID to. [Direction: In, Out]"] - #[doc = "* `handle` - Handle of the process to get the ID of."] + #[doc = "Gets the ID of a process.\n @param[out] out Pointer to output the process ID to.\n @param handle Handle of the process to get the ID of."] #[doc = ""] pub fn svcGetProcessId(out: *mut u32_, handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a list of running processes."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `processCount` - Pointer to output the process count to. [Direction: In, Out]"] - #[doc = "* `processIds` - Pointer to output the process IDs to. [Direction: In, Out]"] - #[doc = "* `processIdMaxCount` - Maximum number of process IDs."] + #[doc = "Gets a list of running processes.\n @param[out] processCount Pointer to output the process count to.\n @param[out] processIds Pointer to output the process IDs to.\n @param processIdMaxCount Maximum number of process IDs."] #[doc = ""] pub fn svcGetProcessList( processCount: *mut s32, @@ -2973,14 +2845,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a list of the threads of a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `threadCount` - Pointer to output the thread count to. [Direction: In, Out]"] - #[doc = "* `threadIds` - Pointer to output the thread IDs to. [Direction: In, Out]"] - #[doc = "* `threadIdMaxCount` - Maximum number of thread IDs."] - #[doc = "* `process` - Process handle to list the threads of."] + #[doc = "Gets a list of the threads of a process.\n @param[out] threadCount Pointer to output the thread count to.\n @param[out] threadIds Pointer to output the thread IDs to.\n @param threadIdMaxCount Maximum number of thread IDs.\n @param process Process handle to list the threads of."] #[doc = ""] pub fn svcGetThreadList( threadCount: *mut s32, @@ -2991,14 +2856,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `portServer` - Pointer to output the port server handle to. [Direction: In, Out]"] - #[doc = "* `portClient` - Pointer to output the port client handle to. [Direction: In, Out]"] - #[doc = "* `name` - Name of the port."] - #[doc = "* `maxSessions` - Maximum number of sessions that can connect to the port."] + #[doc = "Creates a port.\n @param[out] portServer Pointer to output the port server handle to.\n @param[out] portClient Pointer to output the port client handle to.\n @param name Name of the port.\n @param maxSessions Maximum number of sessions that can connect to the port."] #[doc = ""] pub fn svcCreatePort( portServer: *mut Handle, @@ -3009,62 +2867,36 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Connects to a port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the port handle to. [Direction: In, Out]"] - #[doc = "* `portName` - Name of the port."] + #[doc = "Connects to a port.\n @param[out] out Pointer to output the port handle to.\n @param portName Name of the port."] #[doc = ""] pub fn svcConnectToPort(out: *mut Handle, portName: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Sets up virtual address space for a new process"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the code set handle to. [Direction: In, Out]"] - #[doc = "* `info` - Description for setting up the addresses"] - #[doc = "* `code_ptr` - Pointer to .text in shared memory"] - #[doc = "* `ro_ptr` - Pointer to .rodata in shared memory"] - #[doc = "* `data_ptr` - Pointer to .data in shared memory"] + #[doc = "Sets up virtual address space for a new process.\n @param[out] out Pointer to output the codeset handle to.\n @param info Codeset header, contains process name, titleId and segment info.\n @param textSegmentLma Address of executable segment in caller's address space.\n @param roSegmentLma Address of read-only segment in caller's address space.\n @param dataSegmentLma Address of read-write segment in caller's address space.\n @note On success, the provided segments are unmapped from the caller's address space."] #[doc = ""] pub fn svcCreateCodeSet( out: *mut Handle, - info: *const CodeSetInfo, - code_ptr: *mut ::libc::c_void, - ro_ptr: *mut ::libc::c_void, - data_ptr: *mut ::libc::c_void, + info: *const CodeSetHeader, + textSegmentLma: u32_, + roSegmentLma: u32_, + dataSegmentLma: u32_, ) -> Result; } extern "C" { #[must_use] - #[doc = "Sets up virtual address space for a new process"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the process handle to. [Direction: In, Out]"] - #[doc = "* `codeset` - Codeset created for this process"] - #[doc = "* `arm11kernelcaps` - ARM11 Kernel Capabilities from exheader"] - #[doc = "* `arm11kernelcaps_num` - Number of kernel capabilities"] + #[doc = "Create a new process.\n @param[out] out Pointer to output the process handle to.\n @param codeset Codeset created for this process.\n @param arm11KernelCaps Arm11 Kernel Capabilities from exheader.\n @param numArm11KernelCaps Number of kernel capabilities."] #[doc = ""] pub fn svcCreateProcess( out: *mut Handle, codeset: Handle, - arm11kernelcaps: *const u32_, - arm11kernelcaps_num: u32_, + arm11KernelCaps: *const u32_, + numArm11KernelCaps: s32, ) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a process's affinity mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `affinitymask` - Pointer to store the affinity masks. [Direction: In, Out]"] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `processorcount` - Number of processors."] + #[doc = "Gets a process's affinity mask.\n @param[out] affinitymask Pointer to store the affinity masks.\n @param process Handle of the process.\n @param processorcount Number of processors."] #[doc = ""] pub fn svcGetProcessAffinityMask( affinitymask: *mut u8_, @@ -3074,13 +2906,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets a process's affinity mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `affinitymask` - Pointer to retrieve the affinity masks from."] - #[doc = "* `processorcount` - Number of processors."] + #[doc = "Sets a process's affinity mask.\n @param process Handle of the process.\n @param affinitymask Pointer to retrieve the affinity masks from.\n @param processorcount Number of processors."] #[doc = ""] pub fn svcSetProcessAffinityMask( process: Handle, @@ -3090,63 +2916,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a process's ideal processor."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `processorid` - Pointer to store the ID of the process's ideal processor. [Direction: In, Out]"] - #[doc = "* `process` - Handle of the process."] + #[doc = "Gets a process's ideal processor.\n @param[out] processorid Pointer to store the ID of the process's ideal processor.\n @param process Handle of the process."] #[doc = ""] pub fn svcGetProcessIdealProcessor(processorid: *mut s32, process: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a process's ideal processor."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `processorid` - ID of the process's ideal processor."] + #[doc = "Sets a process's ideal processor.\n @param process Handle of the process.\n @param processorid ID of the process's ideal processor."] #[doc = ""] pub fn svcSetProcessIdealProcessor(process: Handle, processorid: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Launches the main thread of the process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `info` - Pointer to a StartupInfo structure describing information for the main thread."] + #[doc = "Launches the main thread of the process.\n @param process Handle of the process.\n @param info Pointer to a StartupInfo structure describing information for the main thread."] #[doc = ""] pub fn svcRun(process: Handle, info: *const StartupInfo) -> Result; } extern "C" { #[must_use] - #[doc = "# Multithreading"] - #[doc = ""] - #[doc = "Creates a new thread."] - #[doc = ""] - #[doc = "For userland apps, this has to be within the range [0x18;0x3F]"] - #[doc = "For old 3ds it has to be <2, and for new 3DS <4."] - #[doc = "Value -1 means all CPUs and -2 read from the Exheader."] - #[doc = "The processor with ID 1 is the system processor."] - #[doc = "To enable multi-threading on this core you need to call APT_SetAppCpuTimeLimit at least once with a non-zero value."] - #[doc = "Since a thread is considered as a waitable object, you can use [`svcWaitSynchronization`]"] - #[doc = "and [`svcWaitSynchronizationN`] to join with it."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - The thread handle [Direction: In, Out]"] - #[doc = "* `entrypoint` - The function that will be called first upon thread creation"] - #[doc = "* `arg` - The argument passed to @p entrypoint"] - #[doc = "* `stack_top` - The top of the thread's stack. Must be 0x8 bytes mem-aligned."] - #[doc = "* `thread_priority` - Low values gives the thread higher priority."] - #[doc = "* `processor_id` - The id of the processor the thread should be ran on. Those are labelled starting from 0."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The kernel will clear the @p stack_top's address low 3 bits to make sure it is 0x8-bytes aligned."] + #[doc = "# Multithreading\n@{\n**\n* @brief Creates a new thread.\n* @param[out] thread The thread handle\n* @param entrypoint The function that will be called first upon thread creation\n* @param arg The argument passed to @p entrypoint\n* @param stack_top The top of the thread's stack. Must be 0x8 bytes mem-aligned.\n* @param thread_priority Low values gives the thread higher priority.\n* For userland apps, this has to be within the range [0x18;0x3F]\n* @param processor_id The id of the processor the thread should be ran on. Those are labelled starting from 0.\n* For old 3ds it has to be <2, and for new 3DS <4.\n* Value -1 means all CPUs and -2 read from the Exheader.\n*\n* The processor with ID 1 is the system processor.\n* To enable multi-threading on this core you need to call APT_SetAppCpuTimeLimit at least once with a non-zero value.\n*\n* Since a thread is considered as a waitable object, you can use [`svcWaitSynchronization\n*`] and [`svcWaitSynchronizationN`] to join with it.\n*\n* @note The kernel will clear the @p stack_top's address low 3 bits to make sure it is 0x8-bytes aligned.\n*/"] #[doc = ""] pub fn svcCreateThread( thread: *mut Handle, @@ -3159,30 +2947,17 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the handle of a thread."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - The handle of the thread [Direction: In, Out]"] - #[doc = "* `process` - The ID of the process linked to the thread"] + #[doc = "Gets the handle of a thread.\n @param[out] thread The handle of the thread\n @param process The ID of the process linked to the thread"] #[doc = ""] pub fn svcOpenThread(thread: *mut Handle, process: Handle, threadId: u32_) -> Result; } extern "C" { - #[doc = "Exits the current thread."] - #[doc = ""] - #[doc = "This will trigger a state change and hence release all [`svcWaitSynchronization`] operations."] - #[doc = "It means that you can join a thread by calling ```"] - #[doc = "svcWaitSynchronization(threadHandle,yourtimeout); ```"] + #[doc = "Exits the current thread.\n\n This will trigger a state change and hence release all [`svcWaitSynchronization`] operations.\n It means that you can join a thread by calling ``` svcWaitSynchronization(threadHandle,yourtimeout); ```"] #[doc = ""] - pub fn svcExitThread(); + pub fn svcExitThread() -> !; } extern "C" { - #[doc = "Puts the current thread to sleep."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ns` - The minimum number of nanoseconds to sleep for."] + #[doc = "Puts the current thread to sleep.\n @param ns The minimum number of nanoseconds to sleep for."] #[doc = ""] pub fn svcSleepThread(ns: s64); } @@ -3194,25 +2969,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Changes the priority of a thread"] - #[doc = ""] - #[doc = "Low values gives the thread higher priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `prio` - For userland apps, this has to be within the range [0x18;0x3F]"] + #[doc = "Changes the priority of a thread\n @param prio For userland apps, this has to be within the range [0x18;0x3F]\n\n Low values gives the thread higher priority."] #[doc = ""] pub fn svcSetThreadPriority(thread: Handle, prio: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a thread's affinity mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `affinitymask` - Pointer to output the affinity masks to. [Direction: In, Out]"] - #[doc = "* `thread` - Handle of the thread."] - #[doc = "* `processorcount` - Number of processors."] + #[doc = "Gets a thread's affinity mask.\n @param[out] affinitymask Pointer to output the affinity masks to.\n @param thread Handle of the thread.\n @param processorcount Number of processors."] #[doc = ""] pub fn svcGetThreadAffinityMask( affinitymask: *mut u8_, @@ -3222,13 +2985,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets a thread's affinity mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - Handle of the thread."] - #[doc = "* `affinitymask` - Pointer to retrieve the affinity masks from."] - #[doc = "* `processorcount` - Number of processors."] + #[doc = "Sets a thread's affinity mask.\n @param thread Handle of the thread.\n @param affinitymask Pointer to retrieve the affinity masks from.\n @param processorcount Number of processors."] #[doc = ""] pub fn svcSetThreadAffinityMask( thread: Handle, @@ -3238,65 +2995,36 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a thread's ideal processor."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `processorid` - Pointer to output the ID of the thread's ideal processor to. [Direction: In, Out]"] - #[doc = "* `thread` - Handle of the thread."] + #[doc = "Gets a thread's ideal processor.\n @param[out] processorid Pointer to output the ID of the thread's ideal processor to.\n @param thread Handle of the thread."] #[doc = ""] pub fn svcGetThreadIdealProcessor(processorid: *mut s32, thread: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a thread's ideal processor."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - Handle of the thread."] - #[doc = "* `processorid` - ID of the thread's ideal processor."] + #[doc = "Sets a thread's ideal processor.\n @param thread Handle of the thread.\n @param processorid ID of the thread's ideal processor."] #[doc = ""] pub fn svcSetThreadIdealProcessor(thread: Handle, processorid: s32) -> Result; } extern "C" { - #[doc = "Returns the ID of the processor the current thread is running on."] - #[doc = ""] - #[doc = "[`svcCreateThread`]"] + #[doc = "Returns the ID of the processor the current thread is running on.\n [`svcCreateThread`]"] #[doc = ""] pub fn svcGetProcessorID() -> s32; } extern "C" { #[must_use] - #[doc = "Gets the ID of a thread."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the thread ID of the thread @p handle to. [Direction: In, Out]"] - #[doc = "* `handle` - Handle of the thread."] + #[doc = "Gets the ID of a thread.\n @param[out] out Pointer to output the thread ID of the thread @p handle to.\n @param handle Handle of the thread."] #[doc = ""] pub fn svcGetThreadId(out: *mut u32_, handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the resource limit set of a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `resourceLimit` - Pointer to output the resource limit set handle to. [Direction: In, Out]"] - #[doc = "* `process` - Process to get the resource limits of."] + #[doc = "Gets the resource limit set of a process.\n @param[out] resourceLimit Pointer to output the resource limit set handle to.\n @param process Process to get the resource limits of."] #[doc = ""] pub fn svcGetResourceLimit(resourceLimit: *mut Handle, process: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the value limits of a resource limit set."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `values` - Pointer to output the value limits to. [Direction: In, Out]"] - #[doc = "* `resourceLimit` - Resource limit set to use."] - #[doc = "* `names` - Resource limit names to get the limits of."] - #[doc = "* `nameCount` - Number of resource limit names."] + #[doc = "Gets the value limits of a resource limit set.\n @param[out] values Pointer to output the value limits to.\n @param resourceLimit Resource limit set to use.\n @param names Resource limit names to get the limits of.\n @param nameCount Number of resource limit names."] #[doc = ""] pub fn svcGetResourceLimitLimitValues( values: *mut s64, @@ -3307,14 +3035,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the values of a resource limit set."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `values` - Pointer to output the values to. [Direction: In, Out]"] - #[doc = "* `resourceLimit` - Resource limit set to use."] - #[doc = "* `names` - Resource limit names to get the values of."] - #[doc = "* `nameCount` - Number of resource limit names."] + #[doc = "Gets the values of a resource limit set.\n @param[out] values Pointer to output the values to.\n @param resourceLimit Resource limit set to use.\n @param names Resource limit names to get the values of.\n @param nameCount Number of resource limit names."] #[doc = ""] pub fn svcGetResourceLimitCurrentValues( values: *mut s64, @@ -3325,37 +3046,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the resource limit set of a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Process to set the resource limit set to."] - #[doc = "* `resourceLimit` - Resource limit set handle."] + #[doc = "Sets the resource limit set of a process.\n @param process Process to set the resource limit set to.\n @param resourceLimit Resource limit set handle."] #[doc = ""] pub fn svcSetProcessResourceLimits(process: Handle, resourceLimit: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a resource limit set."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `resourceLimit` - Pointer to output the resource limit set handle to. [Direction: In, Out]"] + #[doc = "Creates a resource limit set.\n @param[out] resourceLimit Pointer to output the resource limit set handle to."] #[doc = ""] pub fn svcCreateResourceLimit(resourceLimit: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the value limits of a resource limit set."] - #[doc = ""] - #[doc = "set APPMEMALLOC in configuration memory, otherwise those bits are unused."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `resourceLimit` - Resource limit set to use."] - #[doc = "* `names` - Resource limit names to set the limits of."] - #[doc = "* `values` - Value limits to set. The high 32 bits of RESLIMIT_COMMIT are used to"] - #[doc = "* `nameCount` - Number of resource limit names."] + #[doc = "Sets the value limits of a resource limit set.\n @param resourceLimit Resource limit set to use.\n @param names Resource limit names to set the limits of.\n @param values Value limits to set. The high 32 bits of RESLIMIT_COMMIT are used to\nset APPMEMALLOC in configuration memory, otherwise those bits are unused.\n @param nameCount Number of resource limit names."] #[doc = ""] pub fn svcSetResourceLimitValues( resourceLimit: Handle, @@ -3366,131 +3069,68 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the process ID of a thread."] - #[doc = ""] - #[doc = "[`svcOpenProcess`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the process ID of the thread @p handle to. [Direction: In, Out]"] - #[doc = "* `handle` - Handle of the thread."] + #[doc = "Gets the process ID of a thread.\n @param[out] out Pointer to output the process ID of the thread @p handle to.\n @param handle Handle of the thread.\n [`svcOpenProcess`]"] #[doc = ""] pub fn svcGetProcessIdOfThread(out: *mut u32_, handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if a thread handle is valid."] - #[doc = ""] - #[doc = "This requests always return an error when called, it only checks if the handle is a thread or not."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 0xD8E007ED (BAD_ENUM) if the Handle is a Thread Handle"] - #[doc = "* 0xD8E007F7 (BAD_HANDLE) if it isn't."] + #[doc = "Checks if a thread handle is valid.\n This requests always return an error when called, it only checks if the handle is a thread or not.\n @return 0xD8E007ED (BAD_ENUM) if the Handle is a Thread Handle\n @return 0xD8E007F7 (BAD_HANDLE) if it isn't."] #[doc = ""] pub fn svcGetThreadInfo(out: *mut s64, thread: Handle, type_: ThreadInfoType) -> Result; } extern "C" { #[must_use] - #[doc = "# Synchronization"] - #[doc = ""] - #[doc = "Creates a mutex."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mutex` - Pointer to output the handle of the created mutex to. [Direction: In, Out]"] - #[doc = "* `initially_locked` - Whether the mutex should be initially locked."] + #[doc = "# Synchronization\n@{\n**\n* @brief Creates a mutex.\n* @param[out] mutex Pointer to output the handle of the created mutex to.\n* @param initially_locked Whether the mutex should be initially locked.\n*/"] #[doc = ""] pub fn svcCreateMutex(mutex: *mut Handle, initially_locked: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Releases a mutex."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the mutex."] + #[doc = "Releases a mutex.\n @param handle Handle of the mutex."] #[doc = ""] pub fn svcReleaseMutex(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphore` - Pointer to output the handle of the created semaphore to. [Direction: In, Out]"] - #[doc = "* `initial_count` - Initial count of the semaphore."] - #[doc = "* `max_count` - Maximum count of the semaphore."] + #[doc = "Creates a semaphore.\n @param[out] semaphore Pointer to output the handle of the created semaphore to.\n @param initial_count Initial count of the semaphore.\n @param max_count Maximum count of the semaphore."] #[doc = ""] pub fn svcCreateSemaphore(semaphore: *mut Handle, initial_count: s32, max_count: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Releases a semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `count` - Pointer to output the current count of the semaphore to. [Direction: In, Out]"] - #[doc = "* `semaphore` - Handle of the semaphore."] - #[doc = "* `release_count` - Number to increase the semaphore count by."] + #[doc = "Releases a semaphore.\n @param[out] count Pointer to output the current count of the semaphore to.\n @param semaphore Handle of the semaphore.\n @param release_count Number to increase the semaphore count by."] #[doc = ""] pub fn svcReleaseSemaphore(count: *mut s32, semaphore: Handle, release_count: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Creates an event handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to output the created event handle to. [Direction: In, Out]"] - #[doc = "* `reset_type` - Type of reset the event uses (RESET_ONESHOT/RESET_STICKY)."] + #[doc = "Creates an event handle.\n @param[out] event Pointer to output the created event handle to.\n @param reset_type Type of reset the event uses (RESET_ONESHOT/RESET_STICKY)."] #[doc = ""] pub fn svcCreateEvent(event: *mut Handle, reset_type: ResetType) -> Result; } extern "C" { #[must_use] - #[doc = "Signals an event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the event to signal."] + #[doc = "Signals an event.\n @param handle Handle of the event to signal."] #[doc = ""] pub fn svcSignalEvent(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Clears an event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the event to clear."] + #[doc = "Clears an event.\n @param handle Handle of the event to clear."] #[doc = ""] pub fn svcClearEvent(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Waits for synchronization on a handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle to wait on."] - #[doc = "* `nanoseconds` - Maximum nanoseconds to wait for."] + #[doc = "Waits for synchronization on a handle.\n @param handle Handle to wait on.\n @param nanoseconds Maximum nanoseconds to wait for."] #[doc = ""] pub fn svcWaitSynchronization(handle: Handle, nanoseconds: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Waits for synchronization on multiple handles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the index of the synchronized handle to. [Direction: In, Out]"] - #[doc = "* `handles` - Handles to wait on."] - #[doc = "* `handles_num` - Number of handles."] - #[doc = "* `wait_all` - Whether to wait for synchronization on all handles."] - #[doc = "* `nanoseconds` - Maximum nanoseconds to wait for."] + #[doc = "Waits for synchronization on multiple handles.\n @param[out] out Pointer to output the index of the synchronized handle to.\n @param handles Handles to wait on.\n @param handles_num Number of handles.\n @param wait_all Whether to wait for synchronization on all handles.\n @param nanoseconds Maximum nanoseconds to wait for."] #[doc = ""] pub fn svcWaitSynchronizationN( out: *mut s32, @@ -3502,35 +3142,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates an address arbiter"] - #[doc = ""] - #[doc = "[`svcArbitrateAddress`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mutex` - Pointer to output the handle of the created address arbiter to. [Direction: In, Out]"] + #[doc = "Creates an address arbiter\n @param[out] mutex Pointer to output the handle of the created address arbiter to.\n [`svcArbitrateAddress`]"] #[doc = ""] pub fn svcCreateAddressArbiter(arbiter: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Arbitrate an address, can be used for synchronization"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* Please use [`syncArbitrateAddressWithTimeout`] instead."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `arbiter` - Handle of the arbiter"] - #[doc = "* `addr` - A pointer to a s32 value."] - #[doc = "* `type` - Type of action to be performed by the arbiter"] - #[doc = "* `value` - Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison."] - #[doc = "* `timeout_ns` - Optional timeout in nanoseconds when using TIMEOUT actions, ignored otherwise. If not needed, use [`svcArbitrateAddressNoTimeout`] instead."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Usage of this syscall entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Arbitrate an address, can be used for synchronization\n @param arbiter Handle of the arbiter\n @param addr A pointer to a s32 value.\n @param type Type of action to be performed by the arbiter\n @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n @param timeout_ns Optional timeout in nanoseconds when using TIMEOUT actions, ignored otherwise. If not needed, use [`svcArbitrateAddressNoTimeout`] instead.\n @note Usage of this syscall entails an implicit Data Memory Barrier (dmb).\n @warning Please use [`syncArbitrateAddressWithTimeout`] instead."] #[doc = ""] pub fn svcArbitrateAddress( arbiter: Handle, @@ -3542,22 +3160,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Same as [`svcArbitrateAddress`] but with the timeout_ns parameter undefined."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* Please use [`syncArbitrateAddress`] instead."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `arbiter` - Handle of the arbiter"] - #[doc = "* `addr` - A pointer to a s32 value."] - #[doc = "* `type` - Type of action to be performed by the arbiter"] - #[doc = "* `value` - Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Usage of this syscall entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Same as [`svcArbitrateAddress`] but with the timeout_ns parameter undefined.\n @param arbiter Handle of the arbiter\n @param addr A pointer to a s32 value.\n @param type Type of action to be performed by the arbiter\n @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n @note Usage of this syscall entails an implicit Data Memory Barrier (dmb).\n @warning Please use [`syncArbitrateAddress`] instead."] #[doc = ""] pub fn svcArbitrateAddressNoTimeout( arbiter: Handle, @@ -3568,57 +3171,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sends a synchronized request to a session handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `session` - Handle of the session."] + #[doc = "Sends a synchronized request to a session handle.\n @param session Handle of the session."] #[doc = ""] pub fn svcSendSyncRequest(session: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Connects to a port via a handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `clientSession` - Pointer to output the client session handle to. [Direction: In, Out]"] - #[doc = "* `clientPort` - Port client endpoint to connect to."] + #[doc = "Connects to a port via a handle.\n @param[out] clientSession Pointer to output the client session handle to.\n @param clientPort Port client endpoint to connect to."] #[doc = ""] pub fn svcCreateSessionToPort(clientSession: *mut Handle, clientPort: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a linked pair of session endpoints."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `serverSession` - Pointer to output the created server endpoint handle to. [Direction: In, Out]"] - #[doc = "* `clientSession` - Pointer to output the created client endpoint handle to. [Direction: In, Out]"] + #[doc = "Creates a linked pair of session endpoints.\n @param[out] serverSession Pointer to output the created server endpoint handle to.\n @param[out] clientSession Pointer to output the created client endpoint handle to."] #[doc = ""] pub fn svcCreateSession(serverSession: *mut Handle, clientSession: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Accepts a session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `session` - Pointer to output the created session handle to. [Direction: In, Out]"] - #[doc = "* `port` - Handle of the port to accept a session from."] + #[doc = "Accepts a session.\n @param[out] session Pointer to output the created session handle to.\n @param port Handle of the port to accept a session from."] #[doc = ""] pub fn svcAcceptSession(session: *mut Handle, port: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Replies to and receives a new request."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `index` - Pointer to the index of the request."] - #[doc = "* `handles` - Session handles to receive requests from."] - #[doc = "* `handleCount` - Number of handles."] - #[doc = "* `replyTarget` - Handle of the session to reply to."] + #[doc = "Replies to and receives a new request.\n @param index Pointer to the index of the request.\n @param handles Session handles to receive requests from.\n @param handleCount Number of handles.\n @param replyTarget Handle of the session to reply to."] #[doc = ""] pub fn svcReplyAndReceive( index: *mut s32, @@ -3629,125 +3206,66 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "# Time"] - #[doc = ""] - #[doc = "Creates a timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timer` - Pointer to output the handle of the created timer to. [Direction: In, Out]"] - #[doc = "* `reset_type` - Type of reset to perform on the timer."] + #[doc = "# Time\n@{\n**\n* @brief Creates a timer.\n* @param[out] timer Pointer to output the handle of the created timer to.\n* @param reset_type Type of reset to perform on the timer.\n*/"] #[doc = ""] pub fn svcCreateTimer(timer: *mut Handle, reset_type: ResetType) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timer` - Handle of the timer to set."] - #[doc = "* `initial` - Initial value of the timer."] - #[doc = "* `interval` - Interval of the timer."] + #[doc = "Sets a timer.\n @param timer Handle of the timer to set.\n @param initial Initial value of the timer.\n @param interval Interval of the timer."] #[doc = ""] pub fn svcSetTimer(timer: Handle, initial: s64, interval: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Cancels a timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timer` - Handle of the timer to cancel."] + #[doc = "Cancels a timer.\n @param timer Handle of the timer to cancel."] #[doc = ""] pub fn svcCancelTimer(timer: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Clears a timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timer` - Handle of the timer to clear."] + #[doc = "Clears a timer.\n @param timer Handle of the timer to clear."] #[doc = ""] pub fn svcClearTimer(timer: Handle) -> Result; } extern "C" { - #[doc = "Gets the current system tick."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current system tick."] + #[doc = "Gets the current system tick.\n @return The current system tick."] #[doc = ""] pub fn svcGetSystemTick() -> u64_; } extern "C" { #[must_use] - #[doc = "# System"] - #[doc = ""] - #[doc = "Closes a handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle to close."] + #[doc = "# System\n@{\n**\n* @brief Closes a handle.\n* @param handle Handle to close.\n*/"] #[doc = ""] pub fn svcCloseHandle(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Duplicates a handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the duplicated handle to. [Direction: In, Out]"] - #[doc = "* `original` - Handle to duplicate."] + #[doc = "Duplicates a handle.\n @param[out] out Pointer to output the duplicated handle to.\n @param original Handle to duplicate."] #[doc = ""] pub fn svcDuplicateHandle(out: *mut Handle, original: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a handle info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the handle info to. [Direction: In, Out]"] - #[doc = "* `handle` - Handle to get the info for."] - #[doc = "* `param` - Parameter clarifying the handle info type."] + #[doc = "Gets a handle info.\n @param[out] out Pointer to output the handle info to.\n @param handle Handle to get the info for.\n @param param Parameter clarifying the handle info type."] #[doc = ""] pub fn svcGetHandleInfo(out: *mut s64, handle: Handle, param: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the system info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the system info to. [Direction: In, Out]"] - #[doc = "* `type` - Type of system info to retrieve."] - #[doc = "* `param` - Parameter clarifying the system info type."] + #[doc = "Gets the system info.\n @param[out] out Pointer to output the system info to.\n @param type Type of system info to retrieve.\n @param param Parameter clarifying the system info type."] #[doc = ""] pub fn svcGetSystemInfo(out: *mut s64, type_: u32_, param: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the current kernel state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `type` - Type of state to set (the other parameters depend on it)."] + #[doc = "Sets the current kernel state.\n @param type Type of state to set (the other parameters depend on it)."] #[doc = ""] pub fn svcKernelSetState(type_: u32_, ...) -> Result; } extern "C" { #[must_use] - #[doc = "Binds an event or semaphore handle to an ARM11 interrupt."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interruptId` - Interrupt identfier (see "] - #[doc = "* `eventOrSemaphore` - Event or semaphore handle to bind to the given interrupt."] - #[doc = "* `priority` - Priority of the interrupt for the current process."] - #[doc = "* `isManualClear` - Indicates whether the interrupt has to be manually cleared or not (= level-high active)."] + #[doc = "Binds an event or semaphore handle to an ARM11 interrupt.\n @param interruptId Interrupt identfier (see @param eventOrSemaphore Event or semaphore handle to bind to the given interrupt.\n @param priority Priority of the interrupt for the current process.\n @param isManualClear Indicates whether the interrupt has to be manually cleared or not (= level-high active)."] #[doc = ""] pub fn svcBindInterrupt( interruptId: u32_, @@ -3758,68 +3276,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unbinds an event or semaphore handle from an ARM11 interrupt."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interruptId` - Interrupt identfier, see (see "] - #[doc = "* `eventOrSemaphore` - Event or semaphore handle to unbind from the given interrupt."] + #[doc = "Unbinds an event or semaphore handle from an ARM11 interrupt.\n @param interruptId Interrupt identfier, see (see @param eventOrSemaphore Event or semaphore handle to unbind from the given interrupt."] #[doc = ""] pub fn svcUnbindInterrupt(interruptId: u32_, eventOrSemaphore: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Invalidates a process's data cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `addr` - Address to invalidate."] - #[doc = "* `size` - Size of the memory to invalidate."] + #[doc = "Invalidates a process's data cache.\n @param process Handle of the process.\n @param addr Address to invalidate.\n @param size Size of the memory to invalidate."] #[doc = ""] pub fn svcInvalidateProcessDataCache(process: Handle, addr: u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Cleans a process's data cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `addr` - Address to clean."] - #[doc = "* `size` - Size of the memory to clean."] + #[doc = "Cleans a process's data cache.\n @param process Handle of the process.\n @param addr Address to clean.\n @param size Size of the memory to clean."] #[doc = ""] pub fn svcStoreProcessDataCache(process: Handle, addr: u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Flushes (cleans and invalidates) a process's data cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Handle of the process."] - #[doc = "* `addr` - Address to flush."] - #[doc = "* `size` - Size of the memory to flush."] + #[doc = "Flushes (cleans and invalidates) a process's data cache.\n @param process Handle of the process.\n @param addr Address to flush.\n @param size Size of the memory to flush."] #[doc = ""] pub fn svcFlushProcessDataCache(process: Handle, addr: u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Begins an inter-process DMA transfer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dma` - Pointer to output the handle of the DMA channel object to. [Direction: In, Out]"] - #[doc = "* `dstProcess` - Destination process handle."] - #[doc = "* `dstAddr` - Address in the destination process to write data to."] - #[doc = "* `srcProcess` - Source process handle."] - #[doc = "* `srcAddr` - Address in the source to read data from."] - #[doc = "* `size` - Size of the data to transfer."] - #[doc = "* `cfg` - Configuration structure."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The handle is signaled when the transfer finishes."] + #[doc = "Begins an inter-process DMA transfer.\n @param[out] dma Pointer to output the handle of the DMA channel object to.\n @param dstProcess Destination process handle.\n @param dstAddr Address in the destination process to write data to.\n @param srcProcess Source process handle.\n @param srcAddr Address in the source to read data from.\n @param size Size of the data to transfer.\n @param cfg Configuration structure.\n @note The handle is signaled when the transfer finishes."] #[doc = ""] pub fn svcStartInterProcessDma( dma: *mut Handle, @@ -3833,41 +3314,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Stops an inter-process DMA transfer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dma` - Handle of the DMA channel object."] + #[doc = "Stops an inter-process DMA transfer.\n @param dma Handle of the DMA channel object."] #[doc = ""] pub fn svcStopDma(dma: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the state of an inter-process DMA transfer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to output the state of the DMA transfer to. [Direction: In, Out]"] - #[doc = "* `dma` - Handle of the DMA channel object."] + #[doc = "Gets the state of an inter-process DMA transfer.\n @param[out] state Pointer to output the state of the DMA transfer to.\n @param dma Handle of the DMA channel object."] #[doc = ""] pub fn svcGetDmaState(state: *mut DmaState, dma: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Restarts a DMA transfer, using the same configuration as before."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to output the state of the DMA transfer to. [Direction: In, Out]"] - #[doc = "* `dma` - Handle of the DMA channel object."] - #[doc = "* `dstAddr` - Address in the destination process to write data to."] - #[doc = "* `srcAddr` - Address in the source to read data from."] - #[doc = "* `size` - Size of the data to transfer."] - #[doc = "* `flags` - Restart flags, [`DMARST_UNLOCK`] and/or [`DMARST_RESUME_DEVICE`]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The first transfer has to be configured with [`DMACFG_KEEP_LOCKED`]"] + #[doc = "Restarts a DMA transfer, using the same configuration as before.\n @param[out] state Pointer to output the state of the DMA transfer to.\n @param dma Handle of the DMA channel object.\n @param dstAddr Address in the destination process to write data to.\n @param srcAddr Address in the source to read data from.\n @param size Size of the data to transfer.\n @param flags Restart flags, [`DMARST_UNLOCK`] and/or [`DMARST_RESUME_DEVICE.\n`] @note The first transfer has to be configured with [`DMACFG_KEEP_LOCKED`]"] #[doc = ""] pub fn svcRestartDma( dma: Handle, @@ -3879,43 +3338,23 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the GPU protection register to restrict the range of the GPU DMA. 11.3+ only."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `useApplicationRestriction` - Whether to use the register value used for APPLICATION titles."] + #[doc = "Sets the GPU protection register to restrict the range of the GPU DMA. 11.3+ only.\n @param useApplicationRestriction Whether to use the register value used for APPLICATION titles."] #[doc = ""] pub fn svcSetGpuProt(useApplicationRestriction: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Enables or disables Wi-Fi. 11.4+ only."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enabled` - Whether to enable or disable Wi-Fi."] + #[doc = "Enables or disables Wi-Fi. 11.4+ only.\n @param enabled Whether to enable or disable Wi-Fi."] #[doc = ""] pub fn svcSetWifiEnabled(enabled: bool) -> Result; } extern "C" { - #[doc = "# Debugging"] - #[doc = ""] - #[doc = "Breaks execution."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `breakReason` - Reason for breaking."] + #[doc = "# Debugging\n@{\n**\n* @brief Breaks execution.\n* @param breakReason Reason for breaking.\n*/"] #[doc = ""] pub fn svcBreak(breakReason: UserBreakType); } extern "C" { - #[doc = "Breaks execution (LOAD_RO and UNLOAD_RO)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `breakReason` - Debug reason for breaking."] - #[doc = "* `croInfo` - Library information."] - #[doc = "* `croInfoSize` - Size of the above structure."] + #[doc = "Breaks execution (LOAD_RO and UNLOAD_RO).\n @param breakReason Debug reason for breaking.\n @param croInfo Library information.\n @param croInfoSize Size of the above structure."] #[doc = ""] pub fn svcBreakRO( breakReason: UserBreakType, @@ -3925,43 +3364,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Outputs a debug string."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `str` - String to output."] - #[doc = "* `length` - Length of the string to output, needs to be positive."] + #[doc = "Outputs a debug string.\n @param str String to output.\n @param length Length of the string to output, needs to be positive."] #[doc = ""] pub fn svcOutputDebugString(str_: *const ::libc::c_char, length: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Controls performance monitoring on the CP15 interface and the SCU."] - #[doc = ""] - #[doc = "The meaning of the parameters depend on the operation."] - #[doc = "The operations are the following:"] - #[doc = "- [`PERFCOUNTEROP_ENABLE`] (void) -> void, tries to enable and lock perfmon. functionality."] - #[doc = "- [`PERFCOUNTEROP_DISABLE`] (void) -> void, disable and forcibly unlocks perfmon. functionality."] - #[doc = "- [`PERFCOUNTEROP_GET_VALUE`] [`PerfCounterRegister`] reg) -> u64, gets the value of a particular counter register."] - #[doc = "- [`PERFCOUNTEROP_SET_VALUE`] [`PerfCounterRegister`] reg, u64 value) -> void, sets the value of a particular counter register."] - #[doc = "- [`PERFCOUNTEROP_GET_OVERFLOW_FLAGS`] (void) -> u32, gets the overflow flags of all CP15 and SCU registers."] - #[doc = "- Format is a bitfield of [`PerfCounterRegister`]"] - #[doc = "- [`PERFCOUNTEROP_RESET`] (u32 valueResetMask, u32 overflowFlagResetMask) -> void, resets the value and/or"] - #[doc = "overflow flags of selected registers."] - #[doc = "- Format is two bitfields of [`PerfCounterRegister`]"] - #[doc = "- [`PERFCOUNTEROP_GET_EVENT`] [`PerfCounterRegister`] reg) -> [`PerfCounterEvent`] gets the event associated"] - #[doc = "to a particular counter register."] - #[doc = "- [`PERFCOUNTEROP_SET_EVENT`] [`PerfCounterRegister`] reg, [`PerfCounterEvent)`] -> void, sets the event associated"] - #[doc = "to a particular counter register."] - #[doc = "- [`PERFCOUNTEROP_SET_VIRTUAL_COUNTER_ENABLED`] (bool enabled) -> void, (dis)allows the kernel to track counter overflows"] - #[doc = "and to use 64-bit counter values."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output. [Direction: In, Out]"] - #[doc = "* `op` - Operation, see details."] - #[doc = "* `param1` - First parameter."] - #[doc = "* `param2` - Second parameter."] + #[doc = "Controls performance monitoring on the CP15 interface and the SCU.\n The meaning of the parameters depend on the operation.\n @param[out] out Output.\n @param op Operation, see details.\n @param param1 First parameter.\n @param param2 Second parameter.\n @details The operations are the following:\n - [`PERFCOUNTEROP_ENABLE`] (void) -> void, tries to enable and lock perfmon. functionality.\n - [`PERFCOUNTEROP_DISABLE`] (void) -> void, disable and forcibly unlocks perfmon. functionality.\n - [`PERFCOUNTEROP_GET_VALUE`] [`PerfCounterRegister`] reg) -> u64, gets the value of a particular counter register.\n - [`PERFCOUNTEROP_SET_VALUE`] [`PerfCounterRegister`] reg, u64 value) -> void, sets the value of a particular counter register.\n - [`PERFCOUNTEROP_GET_OVERFLOW_FLAGS`] (void) -> u32, gets the overflow flags of all CP15 and SCU registers.\n - Format is a bitfield of [`PerfCounterRegister.\n`] - [`PERFCOUNTEROP_RESET`] (u32 valueResetMask, u32 overflowFlagResetMask) -> void, resets the value and/or\n overflow flags of selected registers.\n - Format is two bitfields of [`PerfCounterRegister.\n`] - [`PERFCOUNTEROP_GET_EVENT`] [`PerfCounterRegister`] reg) -> [`PerfCounterEvent`] gets the event associated\n to a particular counter register.\n - [`PERFCOUNTEROP_SET_EVENT`] [`PerfCounterRegister`] reg, [`PerfCounterEvent)`] -> void, sets the event associated\n to a particular counter register.\n - [`PERFCOUNTEROP_SET_VIRTUAL_COUNTER_ENABLED`] (bool enabled) -> void, (dis)allows the kernel to track counter overflows\n and to use 64-bit counter values."] #[doc = ""] pub fn svcControlPerformanceCounter( out: *mut u64_, @@ -3972,67 +3381,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a debug handle for an active process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Pointer to output the created debug handle to. [Direction: In, Out]"] - #[doc = "* `processId` - ID of the process to debug."] + #[doc = "Creates a debug handle for an active process.\n @param[out] debug Pointer to output the created debug handle to.\n @param processId ID of the process to debug."] #[doc = ""] pub fn svcDebugActiveProcess(debug: *mut Handle, processId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Breaks a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Debug handle of the process."] + #[doc = "Breaks a debugged process.\n @param debug Debug handle of the process."] #[doc = ""] pub fn svcBreakDebugProcess(debug: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Debug handle of the process."] + #[doc = "Terminates a debugged process.\n @param debug Debug handle of the process."] #[doc = ""] pub fn svcTerminateDebugProcess(debug: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current debug event of a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output the debug event information to. [Direction: In, Out]"] - #[doc = "* `debug` - Debug handle of the process."] + #[doc = "Gets the current debug event of a debugged process.\n @param[out] info Pointer to output the debug event information to.\n @param debug Debug handle of the process."] #[doc = ""] pub fn svcGetProcessDebugEvent(info: *mut DebugEventInfo, debug: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Continues the current debug event of a debugged process (not necessarily the same as [`svcGetProcessDebugEvent)`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Debug handle of the process."] - #[doc = "* `flags` - Flags to continue with, see [`DebugFlags`]"] + #[doc = "Continues the current debug event of a debugged process (not necessarily the same as [`svcGetProcessDebugEvent).\n`] @param debug Debug handle of the process.\n @param flags Flags to continue with, see [`DebugFlags`]"] #[doc = ""] pub fn svcContinueDebugEvent(debug: Handle, flags: DebugFlags) -> Result; } extern "C" { #[must_use] - #[doc = "Fetches the saved registers of a thread, either inactive or awaiting [`svcContinueDebugEvent`] belonging to a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Values of the registers to fetch, see [`ThreadContext`] [Direction: In, Out]"] - #[doc = "* `debug` - Debug handle of the parent process."] - #[doc = "* `threadId` - ID of the thread to fetch the saved registers of."] - #[doc = "* `controlFlags` - Which registers to fetch, see [`ThreadContextControlFlags`]"] + #[doc = "Fetches the saved registers of a thread, either inactive or awaiting [`svcContinueDebugEvent`] belonging to a debugged process.\n @param[out] context Values of the registers to fetch, see [`ThreadContext.\n`] @param debug Debug handle of the parent process.\n @param threadId ID of the thread to fetch the saved registers of.\n @param controlFlags Which registers to fetch, see [`ThreadContextControlFlags`]"] #[doc = ""] pub fn svcGetDebugThreadContext( context: *mut ThreadContext, @@ -4043,14 +3422,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Updates the saved registers of a thread, either inactive or awaiting [`svcContinueDebugEvent`] belonging to a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Debug handle of the parent process."] - #[doc = "* `threadId` - ID of the thread to update the saved registers of."] - #[doc = "* `context` - Values of the registers to update, see [`ThreadContext`]"] - #[doc = "* `controlFlags` - Which registers to update, see [`ThreadContextControlFlags`]"] + #[doc = "Updates the saved registers of a thread, either inactive or awaiting [`svcContinueDebugEvent`] belonging to a debugged process.\n @param debug Debug handle of the parent process.\n @param threadId ID of the thread to update the saved registers of.\n @param context Values of the registers to update, see [`ThreadContext.\n`] @param controlFlags Which registers to update, see [`ThreadContextControlFlags`]"] #[doc = ""] pub fn svcSetDebugThreadContext( debug: Handle, @@ -4061,14 +3433,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Queries memory information of a debugged process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output memory info to. [Direction: In, Out]"] - #[doc = "* `out` - Pointer to output page info to. [Direction: In, Out]"] - #[doc = "* `debug` - Debug handle of the process to query memory from."] - #[doc = "* `addr` - Virtual memory address to query."] + #[doc = "Queries memory information of a debugged process.\n @param[out] info Pointer to output memory info to.\n @param[out] out Pointer to output page info to.\n @param debug Debug handle of the process to query memory from.\n @param addr Virtual memory address to query."] #[doc = ""] pub fn svcQueryDebugProcessMemory( info: *mut MemInfo, @@ -4079,14 +3444,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from a debugged process's memory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buffer` - Buffer to read data to."] - #[doc = "* `debug` - Debug handle of the process."] - #[doc = "* `addr` - Address to read from."] - #[doc = "* `size` - Size of the memory to read."] + #[doc = "Reads from a debugged process's memory.\n @param buffer Buffer to read data to.\n @param debug Debug handle of the process.\n @param addr Address to read from.\n @param size Size of the memory to read."] #[doc = ""] pub fn svcReadProcessMemory( buffer: *mut ::libc::c_void, @@ -4097,14 +3455,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Writes to a debugged process's memory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `debug` - Debug handle of the process."] - #[doc = "* `buffer` - Buffer to write data from."] - #[doc = "* `addr` - Address to write to."] - #[doc = "* `size` - Size of the memory to write."] + #[doc = "Writes to a debugged process's memory.\n @param debug Debug handle of the process.\n @param buffer Buffer to write data from.\n @param addr Address to write to.\n @param size Size of the memory to write."] #[doc = ""] pub fn svcWriteProcessMemory( debug: Handle, @@ -4115,27 +3466,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets an hardware breakpoint or watchpoint. This is an interface to the BRP/WRP registers, see ."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `registerId` - range 0..5 = breakpoints (BRP0-5), 0x100..0x101 = watchpoints (WRP0-1). The previous stop point for the register is disabled."] - #[doc = "* `control` - Value of the control regiser."] - #[doc = "* `value` - Value of the value register: either and address (if bit21 of control is clear) or the debug handle of a process to fetch the context ID of."] + #[doc = "Sets an hardware breakpoint or watchpoint. This is an interface to the BRP/WRP registers, see .\n @param registerId range 0..5 = breakpoints (BRP0-5), 0x100..0x101 = watchpoints (WRP0-1). The previous stop point for the register is disabled.\n @param control Value of the control regiser.\n @param value Value of the value register: either and address (if bit21 of control is clear) or the debug handle of a process to fetch the context ID of."] #[doc = ""] pub fn svcSetHardwareBreakPoint(registerId: s32, control: u32_, value: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a debugged thread's parameter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unused` - Unused. [Direction: In, Out]"] - #[doc = "* `out` - Output value. [Direction: In, Out]"] - #[doc = "* `debug` - Debug handle of the process."] - #[doc = "* `threadId` - ID of the thread"] - #[doc = "* `parameter` - Parameter to fetch, see [`DebugThreadParameter`]"] + #[doc = "Gets a debugged thread's parameter.\n @param[out] unused Unused.\n @param[out] out Output value.\n @param debug Debug handle of the process.\n @param threadId ID of the thread\n @param parameter Parameter to fetch, see [`DebugThreadParameter`]"] #[doc = ""] pub fn svcGetDebugThreadParam( unused: *mut s64, @@ -4147,11 +3484,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a function in supervisor mode."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `callback` - Function to execute."] + #[doc = "Executes a function in supervisor mode.\n @param callback Function to execute."] #[doc = ""] pub fn svcBackdoor(callback: ::core::option::Option s32>) -> Result; } @@ -4885,41 +4218,18 @@ extern "C" { pub fn srvExit(); } extern "C" { - #[doc = "Makes srvGetServiceHandle non-blocking for the current thread (or blocking, the default), in case of unavailable (full) requested services."] - #[doc = ""] - #[doc = "srvGetServiceHandle will always block if the service hasn't been registered yet,"] - #[doc = "use srvIsServiceRegistered to check whether that is the case or not."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `blocking` - Whether srvGetServiceHandle should be non-blocking."] + #[doc = "Makes srvGetServiceHandle non-blocking for the current thread (or blocking, the default), in case of unavailable (full) requested services.\n @param blocking Whether srvGetServiceHandle should be non-blocking.\n srvGetServiceHandle will always block if the service hasn't been registered yet,\n use srvIsServiceRegistered to check whether that is the case or not."] #[doc = ""] pub fn srvSetBlockingPolicy(nonBlocking: bool); } extern "C" { - #[doc = "Gets the current service API session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current service API session handle."] + #[doc = "Gets the current service API session handle.\n @return The current service API session handle."] #[doc = ""] pub fn srvGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Retrieves a service handle, retrieving from the environment handle list if possible."] - #[doc = ""] - #[doc = "0xD8E06406 if the caller has no right to access the service,"] - #[doc = "0xD0401834 if the requested service port is full and srvGetServiceHandle is non-blocking (see [`srvSetBlockingPolicy)`]"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 0 if no error occured,"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the handle to."] - #[doc = "* `name` - Name of the service."] + #[doc = "Retrieves a service handle, retrieving from the environment handle list if possible.\n @param out Pointer to write the handle to.\n @param name Name of the service.\n @return 0 if no error occured,\n 0xD8E06406 if the caller has no right to access the service,\n 0xD0401834 if the requested service port is full and srvGetServiceHandle is non-blocking (see [`srvSetBlockingPolicy)`]"] #[doc = ""] pub fn srvGetServiceHandle(out: *mut Handle, name: *const ::libc::c_char) -> Result; } @@ -4931,23 +4241,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Enables service notificatios, returning a notification semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphoreOut` - Pointer to output the notification semaphore to."] + #[doc = "Enables service notificatios, returning a notification semaphore.\n @param semaphoreOut Pointer to output the notification semaphore to."] #[doc = ""] pub fn srvEnableNotification(semaphoreOut: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Registers the current process as a service."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the service handle to."] - #[doc = "* `name` - Name of the service."] - #[doc = "* `maxSessions` - Maximum number of sessions the service can handle."] + #[doc = "Registers the current process as a service.\n @param out Pointer to write the service handle to.\n @param name Name of the service.\n @param maxSessions Maximum number of sessions the service can handle."] #[doc = ""] pub fn srvRegisterService( out: *mut Handle, @@ -4957,124 +4257,67 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unregisters the current process as a service."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Name of the service."] + #[doc = "Unregisters the current process as a service.\n @param name Name of the service."] #[doc = ""] pub fn srvUnregisterService(name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Retrieves a service handle."] - #[doc = ""] - #[doc = "0xD8E06406 if the caller has no right to access the service,"] - #[doc = "0xD0401834 if the requested service port is full and srvGetServiceHandle is non-blocking (see [`srvSetBlockingPolicy)`]"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 0 if no error occured,"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the handle to."] - #[doc = "* `name` - Name of the service."] + #[doc = "Retrieves a service handle.\n @param out Pointer to output the handle to.\n @param name Name of the service.\n * @return 0 if no error occured,\n 0xD8E06406 if the caller has no right to access the service,\n 0xD0401834 if the requested service port is full and srvGetServiceHandle is non-blocking (see [`srvSetBlockingPolicy)`]"] #[doc = ""] pub fn srvGetServiceHandleDirect(out: *mut Handle, name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Registers a port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Name of the port."] - #[doc = "* `clientHandle` - Client handle of the port."] + #[doc = "Registers a port.\n @param name Name of the port.\n @param clientHandle Client handle of the port."] #[doc = ""] pub fn srvRegisterPort(name: *const ::libc::c_char, clientHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Unregisters a port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Name of the port."] + #[doc = "Unregisters a port.\n @param name Name of the port."] #[doc = ""] pub fn srvUnregisterPort(name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Retrieves a port handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the handle to."] - #[doc = "* `name` - Name of the port."] + #[doc = "Retrieves a port handle.\n @param out Pointer to output the handle to.\n @param name Name of the port."] #[doc = ""] pub fn srvGetPort(out: *mut Handle, name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Waits for a port to be registered."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Name of the port to wait for registration."] + #[doc = "Waits for a port to be registered.\n @param name Name of the port to wait for registration."] #[doc = ""] pub fn srvWaitForPortRegistered(name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Subscribes to a notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationId` - ID of the notification."] + #[doc = "Subscribes to a notification.\n @param notificationId ID of the notification."] #[doc = ""] pub fn srvSubscribe(notificationId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Unsubscribes from a notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationId` - ID of the notification."] + #[doc = "Unsubscribes from a notification.\n @param notificationId ID of the notification."] #[doc = ""] pub fn srvUnsubscribe(notificationId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Receives a notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationIdOut` - Pointer to output the ID of the received notification to."] + #[doc = "Receives a notification.\n @param notificationIdOut Pointer to output the ID of the received notification to."] #[doc = ""] pub fn srvReceiveNotification(notificationIdOut: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Publishes a notification to subscribers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationId` - ID of the notification."] - #[doc = "* `flags` - Flags to publish with. (bit 0 = only fire if not fired, bit 1 = do not report an error if there are more than 16 pending notifications)"] + #[doc = "Publishes a notification to subscribers.\n @param notificationId ID of the notification.\n @param flags Flags to publish with. (bit 0 = only fire if not fired, bit 1 = do not report an error if there are more than 16 pending notifications)"] #[doc = ""] pub fn srvPublishToSubscriber(notificationId: u32_, flags: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Publishes a notification to subscribers and retrieves a list of all processes that were notified."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `processIdCountOut` - Pointer to output the number of process IDs to."] - #[doc = "* `processIdsOut` - Pointer to output the process IDs to. Should have size \"60 * sizeof(u32)\"."] - #[doc = "* `notificationId` - ID of the notification."] + #[doc = "Publishes a notification to subscribers and retrieves a list of all processes that were notified.\n @param processIdCountOut Pointer to output the number of process IDs to.\n @param processIdsOut Pointer to output the process IDs to. Should have size \"60 * sizeof(u32)\".\n @param notificationId ID of the notification."] #[doc = ""] pub fn srvPublishAndGetSubscriber( processIdCountOut: *mut u32_, @@ -5084,50 +4327,40 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks whether a service is registered."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `registeredOut` - Pointer to output the registration status to."] - #[doc = "* `name` - Name of the service to check."] + #[doc = "Checks whether a service is registered.\n @param registeredOut Pointer to output the registration status to.\n @param name Name of the service to check."] #[doc = ""] pub fn srvIsServiceRegistered(registeredOut: *mut bool, name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Checks whether a port is registered."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `registeredOut` - Pointer to output the registration status to."] - #[doc = "* `name` - Name of the port to check."] + #[doc = "Checks whether a port is registered.\n @param registeredOut Pointer to output the registration status to.\n @param name Name of the port to check."] #[doc = ""] pub fn srvIsPortRegistered(registeredOut: *mut bool, name: *const ::libc::c_char) -> Result; } -#[doc = "For generic errors. Shows miscellaneous info."] +#[doc = "Generic fatal error. Shows miscellaneous info, including the address of the caller"] #[doc = ""] pub const ERRF_ERRTYPE_GENERIC: ERRF_ErrType = 0; -#[doc = "Same output as generic, but informs the user that \"the System Memory has been damaged\"."] +#[doc = "Damaged NAND (CC_ERROR after reading CSR)"] #[doc = ""] -pub const ERRF_ERRTYPE_MEM_CORRUPT: ERRF_ErrType = 1; -#[doc = "Displays the \"The Game Card was removed.\" message."] +pub const ERRF_ERRTYPE_NAND_DAMAGED: ERRF_ErrType = 1; +#[doc = "Game content storage medium (cartridge and/or SD card) ejected. Not logged"] #[doc = ""] pub const ERRF_ERRTYPE_CARD_REMOVED: ERRF_ErrType = 2; -#[doc = "For exceptions, or more specifically 'crashes'. union data should be exception_data."] +#[doc = "CPU or VFP exception"] #[doc = ""] pub const ERRF_ERRTYPE_EXCEPTION: ERRF_ErrType = 3; -#[doc = "For general failure. Shows a message. union data should have a string set in failure_mesg"] +#[doc = "Fatal error with a message instead of the caller's address"] #[doc = ""] pub const ERRF_ERRTYPE_FAILURE: ERRF_ErrType = 4; -#[doc = "Outputs logs to NAND in some cases."] +#[doc = "Log-level failure. Does not display the exception and does not force the system to reboot"] #[doc = ""] -pub const ERRF_ERRTYPE_LOGGED: ERRF_ErrType = 5; +pub const ERRF_ERRTYPE_LOG_ONLY: ERRF_ErrType = 5; #[doc = "Types of errors that can be thrown by err:f."] #[doc = ""] @@ -5215,13 +4448,13 @@ pub struct ERRF_FatalErrInfo { #[doc = "PC address at exception"] #[doc = ""] pub pcAddr: u32_, - #[doc = "Process ID."] + #[doc = "Process ID of the caller"] #[doc = ""] pub procId: u32_, - #[doc = "Title ID."] + #[doc = "Title ID of the caller"] #[doc = ""] pub titleId: u64_, - #[doc = "Application Title ID."] + #[doc = "Title ID of the running application"] #[doc = ""] pub appTitleId: u64_, #[doc = "The different types of data for errors."] @@ -5268,75 +4501,44 @@ extern "C" { pub fn errfExit(); } extern "C" { - #[doc = "Gets the current err:f API session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current err:f API session handle."] + #[doc = "Gets the current err:f API session handle.\n @return The current err:f API session handle."] #[doc = ""] pub fn errfGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Throws a system error and possibly results in ErrDisp triggering."] - #[doc = ""] - #[doc = "After performing this, the system may panic and need to be rebooted. Extra information will be displayed on the"] - #[doc = "top screen with a developer console or the proper patches in a CFW applied."] - #[doc = "The error may not be shown and execution aborted until errfExit(void) is called."] - #[doc = "You may wish to use ERRF_ThrowResult() or ERRF_ThrowResultWithMessage() instead of"] - #[doc = "constructing the ERRF_FatalErrInfo struct yourself."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `error` - Error to throw. [Direction: In]"] + #[doc = "Throws a system error and possibly logs it.\n @param[in] error Error to throw.\n\n ErrDisp may convert the error info to [`ERRF_ERRTYPE_NAND_DAMAGED`] or [`ERRF_ERRTYPE_CARD_REMOVED\n`] depending on the error code.\n\n Except with [`ERRF_ERRTYPE_LOG_ONLY`] the system will panic and will need to be rebooted.\n Fatal error information will also be logged into a file, unless the type either [`ERRF_ERRTYPE_NAND_DAMAGED\n`] or [`ERRF_ERRTYPE_CARD_REMOVED.\n\n`] No error will be shown if the system is asleep.\n\n On retail units with vanilla firmware, no detailed information will be displayed on screen.\n\n You may wish to use ERRF_ThrowResult() or ERRF_ThrowResultWithMessage() instead of\n constructing the ERRF_FatalErrInfo struct yourself."] #[doc = ""] pub fn ERRF_Throw(error: *const ERRF_FatalErrInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Throws a system error with the given Result code."] - #[doc = ""] - #[doc = "This calls ERRF_Throw() with error type ERRF_ERRTYPE_GENERIC and fills in the required data."] - #[doc = "This function \\em does fill in the address where this function was called from."] - #[doc = "See for expected top screen output"] - #[doc = "on development units/patched ErrDisp."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `failure` - Result code to throw. [Direction: In]"] + #[doc = "Throws (and logs) a system error with the given Result code.\n @param[in] failure Result code to throw.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_GENERIC`] and fills in the required data.\n\n This function \\em does fill in the address where this function was called from."] #[doc = ""] pub fn ERRF_ThrowResult(failure: Result) -> Result; } extern "C" { #[must_use] - #[doc = "Throws a system error with the given Result code and message."] - #[doc = ""] - #[doc = "This calls ERRF_Throw() with error type ERRF_ERRTYPE_FAILURE and fills in the required data."] - #[doc = "This function does \\em not fill in the address where this function was called from because it"] - #[doc = "would not be displayed."] - #[doc = "The message is only displayed on development units/patched ErrDisp."] - #[doc = "See for expected top screen output"] - #[doc = "on development units/patched ErrDisp."] + #[doc = "Logs a system error with the given Result code.\n @param[in] failure Result code to log.\n\n Similar to [`ERRF_Throw`] except that it does not display anything on the screen,\n nor does it force the system to reboot.\n\n This function \\em does fill in the address where this function was called from."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `failure` - Result code to throw. [Direction: In]"] - #[doc = "* `message` - The message to display. [Direction: In]"] + pub fn ERRF_LogResult(failure: Result) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Throws a system error with the given Result code and message.\n @param[in] failure Result code to throw.\n @param[in] message The message to display.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_FAILURE`] and fills in the required data.\n\n This function does \\em not fill in the address where this function was called from because it\n would not be displayed."] #[doc = ""] pub fn ERRF_ThrowResultWithMessage(failure: Result, message: *const ::libc::c_char) -> Result; } extern "C" { - #[doc = "Handles an exception using ErrDisp."] - #[doc = ""] - #[doc = "You might want to clear ENVINFO's bit0 to be able to see any debugging information."] - #[doc = "[`threadOnException`]"] - #[doc = ""] - #[doc = "# Arguments"] + #[must_use] + #[doc = "Specify an additional user string to use for error reporting.\n @param[in] user_string User string (up to 256 bytes, not including NUL byte)"] #[doc = ""] - #[doc = "* `excep` - Exception information"] - #[doc = "* `regs` - CPU registers"] + pub fn ERRF_SetUserString(user_string: *const ::libc::c_char) -> Result; +} +extern "C" { + #[doc = "Handles an exception using ErrDisp.\n @param excep Exception information\n @param regs CPU registers\n\n You might want to clear ENVINFO's bit0 to be able to see any debugging information.\n [`threadOnException`]"] #[doc = ""] - pub fn ERRF_ExceptionHandler(excep: *mut ERRF_ExceptionInfo, regs: *mut CpuRegisters); + pub fn ERRF_ExceptionHandler(excep: *mut ERRF_ExceptionInfo, regs: *mut CpuRegisters) -> !; } #[doc = "Kernel configuration page (read-only)."] #[doc = ""] @@ -5431,100 +4633,43 @@ pub struct OS_VersionBin { pub reserved_x5: [u8_; 3usize], } extern "C" { - #[doc = "Converts an address from virtual (process) memory to physical memory."] - #[doc = ""] - #[doc = "It is sometimes required by services or when using the GPU command buffer."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The corresponding physical address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `vaddr` - Input virtual address."] + #[doc = "Converts an address from virtual (process) memory to physical memory.\n @param vaddr Input virtual address.\n @return The corresponding physical address.\n It is sometimes required by services or when using the GPU command buffer."] #[doc = ""] pub fn osConvertVirtToPhys(vaddr: *const ::libc::c_void) -> u32_; } extern "C" { - #[doc = "Converts 0x14* vmem to 0x30*."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The corresponding address in the 0x30* range, the input address if it's already within the new vmem, or 0 if it's outside of both ranges."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `vaddr` - Input virtual address."] + #[doc = "Converts 0x14* vmem to 0x30*.\n @param vaddr Input virtual address.\n @return The corresponding address in the 0x30* range, the input address if it's already within the new vmem, or 0 if it's outside of both ranges."] #[doc = ""] pub fn osConvertOldLINEARMemToNew(vaddr: *const ::libc::c_void) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Retrieves basic information about a service error."] - #[doc = ""] - #[doc = "This can be used to get some details about an error returned by a service call."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A string containing a summary of an error."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `error` - Error to retrieve information about."] + #[doc = "Retrieves basic information about a service error.\n @param error Error to retrieve information about.\n @return A string containing a summary of an error.\n\n This can be used to get some details about an error returned by a service call."] #[doc = ""] pub fn osStrError(error: Result) -> *const ::libc::c_char; } extern "C" { - #[doc = "Reads the latest reference timepoint published by PTM."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Structure (see [`osTimeRef_s)`]"] + #[doc = "Reads the latest reference timepoint published by PTM.\n @return Structure (see [`osTimeRef_s)`]"] #[doc = ""] pub fn osGetTimeRef() -> osTimeRef_s; } extern "C" { - #[doc = "Gets the current time."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The number of milliseconds since 1st Jan 1900 00:00."] + #[doc = "Gets the current time.\n @return The number of milliseconds since 1st Jan 1900 00:00."] #[doc = ""] pub fn osGetTime() -> u64_; } extern "C" { - #[doc = "Reads the elapsed time in a tick counter."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The number of milliseconds elapsed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cnt` - The tick counter."] + #[doc = "Reads the elapsed time in a tick counter.\n @param cnt The tick counter.\n @return The number of milliseconds elapsed."] #[doc = ""] pub fn osTickCounterRead(cnt: *const TickCounter) -> f64; } extern "C" { - #[doc = "Configures the New 3DS speedup."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Specifies whether to enable or disable the speedup."] + #[doc = "Configures the New 3DS speedup.\n @param enable Specifies whether to enable or disable the speedup."] #[doc = ""] pub fn osSetSpeedupEnable(enable: bool); } extern "C" { #[must_use] - #[doc = "Gets the NAND system-version stored in NVer/CVer."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The result-code. This value can be positive if opening \"romfs:/version.bin\" fails with stdio, since errno would be returned in that case. In some cases the error can be special negative values as well."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nver_versionbin` - Output OS_VersionBin structure for the data read from NVer."] - #[doc = "* `cver_versionbin` - Output OS_VersionBin structure for the data read from CVer."] + #[doc = "Gets the NAND system-version stored in NVer/CVer.\n @param nver_versionbin Output OS_VersionBin structure for the data read from NVer.\n @param cver_versionbin Output OS_VersionBin structure for the data read from CVer.\n @return The result-code. This value can be positive if opening \"romfs:/version.bin\" fails with stdio, since errno would be returned in that case. In some cases the error can be special negative values as well."] #[doc = ""] pub fn osGetSystemVersionData( nver_versionbin: *mut OS_VersionBin, @@ -5533,18 +4678,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This is a wrapper for osGetSystemVersionData."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* See osGetSystemVersionData."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nver_versionbin` - Optional output OS_VersionBin structure for the data read from NVer, can be NULL."] - #[doc = "* `cver_versionbin` - Optional output OS_VersionBin structure for the data read from CVer, can be NULL."] - #[doc = "* `sysverstr` - Output string where the printed system-version will be written, in the same format displayed by the System Settings title."] - #[doc = "* `sysverstr_maxsize` - Max size of the above string buffer, *including* NULL-terminator."] + #[doc = "This is a wrapper for osGetSystemVersionData.\n @param nver_versionbin Optional output OS_VersionBin structure for the data read from NVer, can be NULL.\n @param cver_versionbin Optional output OS_VersionBin structure for the data read from CVer, can be NULL.\n @param sysverstr Output string where the printed system-version will be written, in the same format displayed by the System Settings title.\n @param sysverstr_maxsize Max size of the above string buffer, *including* NULL-terminator.\n @return See osGetSystemVersionData."] #[doc = ""] pub fn osGetSystemVersionDataString( nver_versionbin: *mut OS_VersionBin, @@ -5633,49 +4767,13 @@ pub struct LightSemaphore { } extern "C" { #[must_use] - #[doc = "Function used to implement user-mode synchronization primitives."] - #[doc = ""] - #[doc = "This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr."] - #[doc = "```"] - #[doc = ""] - #[doc = "s32 val=0;"] - #[doc = "// Does *nothing* since val >= 0"] - #[doc = "syncArbitrateAddress(&val,ARBITRATION_WAIT_IF_LESS_THAN,0);"] - #[doc = "```"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addr` - Pointer to a signed 32-bit value whose address will be used to identify waiting threads."] - #[doc = "* `type` - Type of action to be performed by the arbiter"] - #[doc = "* `value` - Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Usage of this function entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Function used to implement user-mode synchronization primitives.\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter\n @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Does *nothing* since val >= 0\n syncArbitrateAddress(&val,ARBITRATION_WAIT_IF_LESS_THAN,0);\n ``` @note Usage of this function entails an implicit Data Memory Barrier (dmb)."] #[doc = ""] pub fn syncArbitrateAddress(addr: *mut s32, type_: ArbitrationType, value: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Function used to implement user-mode synchronization primitives (with timeout)."] - #[doc = ""] - #[doc = "This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr."] - #[doc = "```"] - #[doc = ""] - #[doc = "s32 val=0;"] - #[doc = "// Thread will wait for a signal or wake up after 10000000 nanoseconds because val 1."] - #[doc = "syncArbitrateAddressWithTimeout(&val,ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT,1,10000000LL);"] - #[doc = "```"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addr` - Pointer to a signed 32-bit value whose address will be used to identify waiting threads."] - #[doc = "* `type` - Type of action to be performed by the arbiter (must use [`ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT`] or [`ARBITRATION_DECREMENT_AND_WAIT_IF_LESS_THAN_TIMEOUT)`]"] - #[doc = "* `value` - Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Usage of this function entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Function used to implement user-mode synchronization primitives (with timeout).\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter (must use [`ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT`] or [`ARBITRATION_DECREMENT_AND_WAIT_IF_LESS_THAN_TIMEOUT)\n`] @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Thread will wait for a signal or wake up after 10000000 nanoseconds because val < 1.\n syncArbitrateAddressWithTimeout(&val,ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT,1,10000000LL);\n ``` @note Usage of this function entails an implicit Data Memory Barrier (dmb)."] #[doc = ""] pub fn syncArbitrateAddressWithTimeout( addr: *mut s32, @@ -5685,116 +4783,57 @@ extern "C" { ) -> Result; } extern "C" { - #[doc = "Initializes a light lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Initializes a light lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn LightLock_Init(lock: *mut LightLock); } extern "C" { - #[doc = "Locks a light lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Locks a light lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn LightLock_Lock(lock: *mut LightLock); } extern "C" { - #[doc = "Attempts to lock a light lock."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Zero on success, non-zero on failure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Attempts to lock a light lock.\n @param lock Pointer to the lock.\n @return Zero on success, non-zero on failure."] #[doc = ""] pub fn LightLock_TryLock(lock: *mut LightLock) -> ::libc::c_int; } extern "C" { - #[doc = "Unlocks a light lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Unlocks a light lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn LightLock_Unlock(lock: *mut LightLock); } extern "C" { - #[doc = "Initializes a recursive lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Initializes a recursive lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn RecursiveLock_Init(lock: *mut RecursiveLock); } extern "C" { - #[doc = "Locks a recursive lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Locks a recursive lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn RecursiveLock_Lock(lock: *mut RecursiveLock); } extern "C" { - #[doc = "Attempts to lock a recursive lock."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Zero on success, non-zero on failure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Attempts to lock a recursive lock.\n @param lock Pointer to the lock.\n @return Zero on success, non-zero on failure."] #[doc = ""] pub fn RecursiveLock_TryLock(lock: *mut RecursiveLock) -> ::libc::c_int; } extern "C" { - #[doc = "Unlocks a recursive lock."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `lock` - Pointer to the lock."] + #[doc = "Unlocks a recursive lock.\n @param lock Pointer to the lock."] #[doc = ""] pub fn RecursiveLock_Unlock(lock: *mut RecursiveLock); } extern "C" { - #[doc = "Initializes a condition variable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cv` - Pointer to the condition variable."] + #[doc = "Initializes a condition variable.\n @param cv Pointer to the condition variable."] #[doc = ""] pub fn CondVar_Init(cv: *mut CondVar); } extern "C" { - #[doc = "Waits on a condition variable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cv` - Pointer to the condition variable."] - #[doc = "* `lock` - Pointer to the lock to atomically unlock/relock during the wait."] + #[doc = "Waits on a condition variable.\n @param cv Pointer to the condition variable.\n @param lock Pointer to the lock to atomically unlock/relock during the wait."] #[doc = ""] pub fn CondVar_Wait(cv: *mut CondVar, lock: *mut LightLock); } extern "C" { - #[doc = "Waits on a condition variable with a timeout."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Zero on success, non-zero on failure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cv` - Pointer to the condition variable."] - #[doc = "* `lock` - Pointer to the lock to atomically unlock/relock during the wait."] - #[doc = "* `timeout_ns` - Timeout in nanoseconds."] + #[doc = "Waits on a condition variable with a timeout.\n @param cv Pointer to the condition variable.\n @param lock Pointer to the lock to atomically unlock/relock during the wait.\n @param timeout_ns Timeout in nanoseconds.\n @return Zero on success, non-zero on failure."] #[doc = ""] pub fn CondVar_WaitTimeout( cv: *mut CondVar, @@ -5803,130 +4842,62 @@ extern "C" { ) -> ::libc::c_int; } extern "C" { - #[doc = "Wakes up threads waiting on a condition variable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cv` - Pointer to the condition variable."] - #[doc = "* `num_threads` - Maximum number of threads to wake up (or [`ARBITRATION_SIGNAL_ALL`] to wake them all)."] + #[doc = "Wakes up threads waiting on a condition variable.\n @param cv Pointer to the condition variable.\n @param num_threads Maximum number of threads to wake up (or [`ARBITRATION_SIGNAL_ALL`] to wake them all)."] #[doc = ""] pub fn CondVar_WakeUp(cv: *mut CondVar, num_threads: s32); } extern "C" { - #[doc = "Initializes a light event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] - #[doc = "* `reset_type` - Type of reset the event uses (RESET_ONESHOT/RESET_STICKY)."] + #[doc = "Initializes a light event.\n @param event Pointer to the event.\n @param reset_type Type of reset the event uses (RESET_ONESHOT/RESET_STICKY)."] #[doc = ""] pub fn LightEvent_Init(event: *mut LightEvent, reset_type: ResetType); } extern "C" { - #[doc = "Clears a light event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] + #[doc = "Clears a light event.\n @param event Pointer to the event."] #[doc = ""] pub fn LightEvent_Clear(event: *mut LightEvent); } extern "C" { - #[doc = "Wakes up threads waiting on a sticky light event without signaling it. If the event had been signaled before, it is cleared instead."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] + #[doc = "Wakes up threads waiting on a sticky light event without signaling it. If the event had been signaled before, it is cleared instead.\n @param event Pointer to the event."] #[doc = ""] pub fn LightEvent_Pulse(event: *mut LightEvent); } extern "C" { - #[doc = "Signals a light event, waking up threads waiting on it."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] + #[doc = "Signals a light event, waking up threads waiting on it.\n @param event Pointer to the event."] #[doc = ""] pub fn LightEvent_Signal(event: *mut LightEvent); } extern "C" { - #[doc = "Attempts to wait on a light event."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Non-zero if the event was signaled, zero otherwise."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] + #[doc = "Attempts to wait on a light event.\n @param event Pointer to the event.\n @return Non-zero if the event was signaled, zero otherwise."] #[doc = ""] pub fn LightEvent_TryWait(event: *mut LightEvent) -> ::libc::c_int; } extern "C" { - #[doc = "Waits on a light event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] + #[doc = "Waits on a light event.\n @param event Pointer to the event."] #[doc = ""] pub fn LightEvent_Wait(event: *mut LightEvent); } extern "C" { - #[doc = "Waits on a light event until either the event is signaled or the timeout is reached."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Non-zero on timeout, zero otherwise."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the event."] - #[doc = "* `timeout_ns` - Timeout in nanoseconds."] + #[doc = "Waits on a light event until either the event is signaled or the timeout is reached.\n @param event Pointer to the event.\n @param timeout_ns Timeout in nanoseconds.\n @return Non-zero on timeout, zero otherwise."] #[doc = ""] pub fn LightEvent_WaitTimeout(event: *mut LightEvent, timeout_ns: s64) -> ::libc::c_int; } extern "C" { - #[doc = "Initializes a light semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to the semaphore."] - #[doc = "* `max_count` - Initial count of the semaphore."] - #[doc = "* `max_count` - Maximum count of the semaphore."] + #[doc = "Initializes a light semaphore.\n @param event Pointer to the semaphore.\n @param max_count Initial count of the semaphore.\n @param max_count Maximum count of the semaphore."] #[doc = ""] pub fn LightSemaphore_Init(semaphore: *mut LightSemaphore, initial_count: s16, max_count: s16); } extern "C" { - #[doc = "Acquires a light semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphore` - Pointer to the semaphore."] - #[doc = "* `count` - Acquire count"] + #[doc = "Acquires a light semaphore.\n @param semaphore Pointer to the semaphore.\n @param count Acquire count"] #[doc = ""] pub fn LightSemaphore_Acquire(semaphore: *mut LightSemaphore, count: s32); } extern "C" { - #[doc = "Attempts to acquire a light semaphore."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Zero on success, non-zero on failure"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphore` - Pointer to the semaphore."] - #[doc = "* `count` - Acquire count"] + #[doc = "Attempts to acquire a light semaphore.\n @param semaphore Pointer to the semaphore.\n @param count Acquire count\n @return Zero on success, non-zero on failure"] #[doc = ""] pub fn LightSemaphore_TryAcquire(semaphore: *mut LightSemaphore, count: s32) -> ::libc::c_int; } extern "C" { - #[doc = "Releases a light semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphore` - Pointer to the semaphore."] - #[doc = "* `count` - Release count"] + #[doc = "Releases a light semaphore.\n @param semaphore Pointer to the semaphore.\n @param count Release count"] #[doc = ""] pub fn LightSemaphore_Release(semaphore: *mut LightSemaphore, count: s32); } @@ -5946,125 +4917,52 @@ pub type ExceptionHandler = ::core::option::Option< unsafe extern "C" fn(excep: *mut ERRF_ExceptionInfo, regs: *mut CpuRegisters), >; extern "C" { - #[doc = "Creates a new libctru thread."] - #[doc = ""] - #[doc = "For userland apps, this has to be within the range [0x18;0x3F]."] - #[doc = "The main thread usually has a priority of 0x30, but not always. Use svcGetThreadPriority() if you need"] - #[doc = "to create a thread with a priority that is explicitly greater or smaller than that of the main thread."] - #[doc = "On Old3DS it must be <2, and on New3DS it must be <4."] - #[doc = "Pass -1 to execute the thread on all CPUs and -2 to execute the thread on the default CPU (read from the Exheader)."] - #[doc = "- Processor #0 is the application core. It is always possible to create a thread on this core."] - #[doc = "- Processor #1 is the system core. If APT_SetAppCpuTimeLimit is used, it is possible to create a single thread on this core."] - #[doc = "- Processor #2 is New3DS exclusive. Normal applications can create threads on this core if the exheader kernel flags bitmask has 0x2000 set."] - #[doc = "- Processor #3 is New3DS exclusive. Normal applications cannot create threads on this core."] - #[doc = "- Processes in the BASE memory region can always create threads on processors #2 and #3."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* [`svcExitThread`] should never be called from the thread, use [`threadExit`] instead."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The libctru thread handle on success, NULL on failure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `entrypoint` - The function that will be called first upon thread creation"] - #[doc = "* `arg` - The argument passed to @p entrypoint"] - #[doc = "* `stack_size` - The size of the stack that will be allocated for the thread (will be rounded to a multiple of 8 bytes)"] - #[doc = "* `prio` - Low values gives the thread higher priority."] - #[doc = "* `core_id` - The ID of the processor the thread should be ran on. Processor IDs are labeled starting from 0."] - #[doc = "* `detached` - When set to true, the thread is automatically freed when it finishes."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Default exit code of a thread is 0."] + #[doc = "Creates a new libctru thread.\n @param entrypoint The function that will be called first upon thread creation\n @param arg The argument passed to @p entrypoint\n @param stack_size The size of the stack that will be allocated for the thread (will be rounded to a multiple of 8 bytes)\n @param prio Low values gives the thread higher priority.\n For userland apps, this has to be within the range [0x18;0x3F].\n The main thread usually has a priority of 0x30, but not always. Use svcGetThreadPriority() if you need\n to create a thread with a priority that is explicitly greater or smaller than that of the main thread.\n @param core_id The ID of the processor the thread should be ran on. Processor IDs are labeled starting from 0.\n On Old3DS it must be <2, and on New3DS it must be <4.\n Pass -1 to execute the thread on all CPUs and -2 to execute the thread on the default CPU (read from the Exheader).\n @param detached When set to true, the thread is automatically freed when it finishes.\n @return The libctru thread handle on success, NULL on failure.\n\n - Processor #0 is the application core. It is always possible to create a thread on this core.\n - Processor #1 is the system core. If APT_SetAppCpuTimeLimit is used, it is possible to create a single thread on this core.\n - Processor #2 is New3DS exclusive. Normal applications can create threads on this core if the exheader kernel flags bitmask has 0x2000 set.\n - Processor #3 is New3DS exclusive. Normal applications cannot create threads on this core.\n - Processes in the BASE memory region can always create threads on processors #2 and #3.\n\n @note Default exit code of a thread is 0.\n @warning [`svcExitThread`] should never be called from the thread, use [`threadExit`] instead."] #[doc = ""] pub fn threadCreate( entrypoint: ThreadFunc, arg: *mut ::libc::c_void, - stack_size: size_t, + stack_size: usize, prio: ::libc::c_int, core_id: ::libc::c_int, detached: bool, ) -> Thread; } extern "C" { - #[doc = "Retrieves the OS thread handle of a libctru thread."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* OS thread handle"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - libctru thread handle"] + #[doc = "Retrieves the OS thread handle of a libctru thread.\n @param thread libctru thread handle\n @return OS thread handle"] #[doc = ""] pub fn threadGetHandle(thread: Thread) -> Handle; } extern "C" { - #[doc = "Retrieves the exit code of a finished libctru thread."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Exit code"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - libctru thread handle"] + #[doc = "Retrieves the exit code of a finished libctru thread.\n @param thread libctru thread handle\n @return Exit code"] #[doc = ""] pub fn threadGetExitCode(thread: Thread) -> ::libc::c_int; } extern "C" { - #[doc = "Frees a finished libctru thread."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - libctru thread handle"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This function should not be called if the thread is detached, as it is freed automatically when it finishes."] + #[doc = "Frees a finished libctru thread.\n @param thread libctru thread handle\n @remarks This function should not be called if the thread is detached, as it is freed automatically when it finishes."] #[doc = ""] pub fn threadFree(thread: Thread); } extern "C" { #[must_use] - #[doc = "Waits for a libctru thread to finish (or returns immediately if it is already finished)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - libctru thread handle"] - #[doc = "* `timeout_ns` - Timeout in nanoseconds. Pass U64_MAX if a timeout isn't desired"] + #[doc = "Waits for a libctru thread to finish (or returns immediately if it is already finished).\n @param thread libctru thread handle\n @param timeout_ns Timeout in nanoseconds. Pass U64_MAX if a timeout isn't desired"] #[doc = ""] pub fn threadJoin(thread: Thread, timeout_ns: u64_) -> Result; } extern "C" { - #[doc = "Changes a thread's status from attached to detached."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `thread` - libctru thread handle"] + #[doc = "Changes a thread's status from attached to detached.\n @param thread libctru thread handle"] #[doc = ""] pub fn threadDetach(thread: Thread); } extern "C" { - #[doc = "Retrieves the libctru thread handle of the current thread."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* libctru thread handle of the current thread, or NULL for the main thread"] + #[doc = "Retrieves the libctru thread handle of the current thread.\n @return libctru thread handle of the current thread, or NULL for the main thread"] #[doc = ""] pub fn threadGetCurrent() -> Thread; } extern "C" { - #[doc = "Exits the current libctru thread with an exit code (not usable from the main thread)."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Exits the current libctru thread with an exit code (not usable from the main thread).\n @param rc Exit code"] #[doc = ""] - #[doc = "* `rc` - Exit code"] - #[doc = ""] - pub fn threadExit(rc: ::libc::c_int); + pub fn threadExit(rc: ::libc::c_int) -> !; } #[doc = "Framebuffer information."] #[doc = ""] @@ -6219,11 +5117,7 @@ extern "C" { pub fn gspExit(); } extern "C" { - #[doc = "Gets a pointer to the current gsp::Gpu session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current gsp::Gpu session handle."] + #[doc = "Gets a pointer to the current gsp::Gpu session handle.\n @return A pointer to the current gsp::Gpu session handle."] #[doc = ""] pub fn gspGetSessionHandle() -> *mut Handle; } @@ -6233,24 +5127,7 @@ extern "C" { pub fn gspHasGpuRight() -> bool; } extern "C" { - #[doc = "Presents a buffer to the specified screen."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* true if a buffer had already been presented to the screen but not processed yet by GSP, false otherwise."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`GSP_SCREEN_TOP`] and [`GSP_SCREEN_BOTTOM)`]"] - #[doc = "* `swap` - Specifies which set of framebuffer registers to configure and activate (0 or 1)"] - #[doc = "* `fb_a` - Pointer to the framebuffer (in stereo mode: left eye)"] - #[doc = "* `fb_b` - Pointer to the secondary framebuffer (only used in stereo mode for the right eye, otherwise pass the same as fb_a)"] - #[doc = "* `stride` - Stride in bytes between scanlines"] - #[doc = "* `mode` - Mode configuration to be written to LCD register"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The most recently presented buffer is processed and configured during the specified screen's next VBlank event."] + #[doc = "Presents a buffer to the specified screen.\n @param screen Screen ID (see [`GSP_SCREEN_TOP`] and [`GSP_SCREEN_BOTTOM)\n`] @param swap Specifies which set of framebuffer registers to configure and activate (0 or 1)\n @param fb_a Pointer to the framebuffer (in stereo mode: left eye)\n @param fb_b Pointer to the secondary framebuffer (only used in stereo mode for the right eye, otherwise pass the same as fb_a)\n @param stride Stride in bytes between scanlines\n @param mode Mode configuration to be written to LCD register\n @return true if a buffer had already been presented to the screen but not processed yet by GSP, false otherwise.\n @note The most recently presented buffer is processed and configured during the specified screen's next VBlank event."] #[doc = ""] pub fn gspPresentBuffer( screen: ::libc::c_uint, @@ -6262,23 +5139,12 @@ extern "C" { ) -> bool; } extern "C" { - #[doc = "Returns true if a prior [`gspPresentBuffer`] command is still pending to be processed by GSP."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`GSP_SCREEN_TOP`] and [`GSP_SCREEN_BOTTOM)`]"] + #[doc = "Returns true if a prior [`gspPresentBuffer`] command is still pending to be processed by GSP.\n @param screen Screen ID (see [`GSP_SCREEN_TOP`] and [`GSP_SCREEN_BOTTOM)`]"] #[doc = ""] pub fn gspIsPresentPending(screen: ::libc::c_uint) -> bool; } extern "C" { - #[doc = "Configures a callback to run when a GSPGPU event occurs."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the event."] - #[doc = "* `cb` - Callback to run."] - #[doc = "* `data` - Data to be passed to the callback."] - #[doc = "* `oneShot` - When true, the callback is only executed once. When false, the callback is executed every time the event occurs."] + #[doc = "Configures a callback to run when a GSPGPU event occurs.\n @param id ID of the event.\n @param cb Callback to run.\n @param data Data to be passed to the callback.\n @param oneShot When true, the callback is only executed once. When false, the callback is executed every time the event occurs."] #[doc = ""] pub fn gspSetEventCallback( id: GSPGPU_Event, @@ -6288,43 +5154,24 @@ extern "C" { ); } extern "C" { - #[doc = "Waits for a GSPGPU event to occur."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the event."] - #[doc = "* `nextEvent` - Whether to discard the current event and wait for the next event."] + #[doc = "Waits for a GSPGPU event to occur.\n @param id ID of the event.\n @param nextEvent Whether to discard the current event and wait for the next event."] #[doc = ""] pub fn gspWaitForEvent(id: GSPGPU_Event, nextEvent: bool); } extern "C" { - #[doc = "Waits for any GSPGPU event to occur."] - #[doc = ""] - #[doc = "The function returns immediately if there are unprocessed events at the time of call."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The ID of the event that occurred."] + #[doc = "Waits for any GSPGPU event to occur.\n @return The ID of the event that occurred.\n\n The function returns immediately if there are unprocessed events at the time of call."] #[doc = ""] pub fn gspWaitForAnyEvent() -> GSPGPU_Event; } extern "C" { #[must_use] - #[doc = "Submits a GX command."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `gxCommand` - GX command to execute."] + #[doc = "Submits a GX command.\n @param gxCommand GX command to execute."] #[doc = ""] pub fn gspSubmitGxCommand(gxCommand: *const u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Acquires GPU rights."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to acquire with."] + #[doc = "Acquires GPU rights.\n @param flags Flags to acquire with."] #[doc = ""] pub fn GSPGPU_AcquireRight(flags: u8_) -> Result; } @@ -6336,11 +5183,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Retrieves display capture info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `captureinfo` - Pointer to output capture info to."] + #[doc = "Retrieves display capture info.\n @param captureinfo Pointer to output capture info to."] #[doc = ""] pub fn GSPGPU_ImportDisplayCaptureInfo(captureinfo: *mut GSPGPU_CaptureInfo) -> Result; } @@ -6364,22 +5207,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets whether to force the LCD to black."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Whether to force the LCD to black. (0 = no, non-zero = yes)"] + #[doc = "Sets whether to force the LCD to black.\n @param flags Whether to force the LCD to black. (0 = no, non-zero = yes)"] #[doc = ""] pub fn GSPGPU_SetLcdForceBlack(flags: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Updates a screen's framebuffer state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screenid` - ID of the screen to update."] - #[doc = "* `framebufinfo` - Framebuffer information to update with."] + #[doc = "Updates a screen's framebuffer state.\n @param screenid ID of the screen to update.\n @param framebufinfo Framebuffer information to update with."] #[doc = ""] pub fn GSPGPU_SetBufferSwap( screenid: u32_, @@ -6388,49 +5222,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Flushes memory from the data cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `adr` - Address to flush."] - #[doc = "* `size` - Size of the memory to flush."] + #[doc = "Flushes memory from the data cache.\n @param adr Address to flush.\n @param size Size of the memory to flush."] #[doc = ""] pub fn GSPGPU_FlushDataCache(adr: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Invalidates memory in the data cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `adr` - Address to invalidate."] - #[doc = "* `size` - Size of the memory to invalidate."] + #[doc = "Invalidates memory in the data cache.\n @param adr Address to invalidate.\n @param size Size of the memory to invalidate."] #[doc = ""] pub fn GSPGPU_InvalidateDataCache(adr: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes to GPU hardware registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regAddr` - Register address to write to."] - #[doc = "* `data` - Data to write."] - #[doc = "* `size` - Size of the data to write."] + #[doc = "Writes to GPU hardware registers.\n @param regAddr Register address to write to.\n @param data Data to write.\n @param size Size of the data to write."] #[doc = ""] pub fn GSPGPU_WriteHWRegs(regAddr: u32_, data: *const u32_, size: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes to GPU hardware registers with a mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regAddr` - Register address to write to."] - #[doc = "* `data` - Data to write."] - #[doc = "* `datasize` - Size of the data to write."] - #[doc = "* `maskdata` - Data of the mask."] - #[doc = "* `masksize` - Size of the mask."] + #[doc = "Writes to GPU hardware registers with a mask.\n @param regAddr Register address to write to.\n @param data Data to write.\n @param datasize Size of the data to write.\n @param maskdata Data of the mask.\n @param masksize Size of the mask."] #[doc = ""] pub fn GSPGPU_WriteHWRegsWithMask( regAddr: u32_, @@ -6442,26 +5252,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from GPU hardware registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regAddr` - Register address to read from."] - #[doc = "* `data` - Buffer to read data to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Reads from GPU hardware registers.\n @param regAddr Register address to read from.\n @param data Buffer to read data to.\n @param size Size of the buffer."] #[doc = ""] pub fn GSPGPU_ReadHWRegs(regAddr: u32_, data: *mut u32_, size: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Registers the interrupt relay queue."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `eventHandle` - Handle of the GX command event."] - #[doc = "* `flags` - Flags to register with."] - #[doc = "* `outMemHandle` - Pointer to output the shared memory handle to."] - #[doc = "* `threadID` - Pointer to output the GSP thread ID to."] + #[doc = "Registers the interrupt relay queue.\n @param eventHandle Handle of the GX command event.\n @param flags Flags to register with.\n @param outMemHandle Pointer to output the shared memory handle to.\n @param threadID Pointer to output the GSP thread ID to."] #[doc = ""] pub fn GSPGPU_RegisterInterruptRelayQueue( eventHandle: Handle, @@ -6484,11 +5281,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets 3D_LEDSTATE to the input state value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `disable` - False = 3D LED enable, true = 3D LED disable."] + #[doc = "Sets 3D_LEDSTATE to the input state value.\n @param disable False = 3D LED enable, true = 3D LED disable."] #[doc = ""] pub fn GSPGPU_SetLedForceOff(disable: bool) -> Result; } @@ -6512,36 +5305,17 @@ pub const GFX_LEFT: gfx3dSide_t = 0; #[doc = ""] pub const GFX_RIGHT: gfx3dSide_t = 1; -#[doc = "Top screen framebuffer side."] -#[doc = ""] -#[doc = "This is only meaningful when stereoscopic 3D is enabled on the top screen."] -#[doc = "In any other case, use [`GFX_LEFT`]"] +#[doc = "Top screen framebuffer side.\n\n This is only meaningful when stereoscopic 3D is enabled on the top screen.\n In any other case, use [`GFX_LEFT`]"] #[doc = ""] pub type gfx3dSide_t = ::libc::c_uint; extern "C" { - #[doc = "Initializes the LCD framebuffers with default parameters"] - #[doc = ""] - #[doc = "This is equivalent to calling: ```"] - #[doc = "gfxInit(GSP_BGR8_OES,GSP_BGR8_OES,false); ```"] + #[doc = "Initializes the LCD framebuffers with default parameters\n This is equivalent to calling: ``` gfxInit(GSP_BGR8_OES,GSP_BGR8_OES,false); ```"] #[doc = ""] pub fn gfxInitDefault(); } extern "C" { - #[doc = "Initializes the LCD framebuffers."] - #[doc = ""] - #[doc = "This function allocates memory for the framebuffers in the specified memory region."] - #[doc = "Initially, stereoscopic 3D is disabled and double buffering is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `topFormat` - The format of the top screen framebuffers."] - #[doc = "* `bottomFormat` - The format of the bottom screen framebuffers."] - #[doc = "* `vramBuffers` - Whether to allocate the framebuffers in VRAM."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This function internally calls [`gspInit`]"] + #[doc = "Initializes the LCD framebuffers.\n @param topFormat The format of the top screen framebuffers.\n @param bottomFormat The format of the bottom screen framebuffers.\n @param vramBuffers Whether to allocate the framebuffers in VRAM.\n\n This function allocates memory for the framebuffers in the specified memory region.\n Initially, stereoscopic 3D is disabled and double buffering is enabled.\n\n @note This function internally calls [`gspInit`]"] #[doc = ""] pub fn gfxInit( topFormat: GSPGPU_FramebufferFormat, @@ -6550,122 +5324,47 @@ extern "C" { ); } extern "C" { - #[doc = "Deinitializes and frees the LCD framebuffers."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This function internally calls [`gspExit`]"] + #[doc = "Deinitializes and frees the LCD framebuffers.\n @note This function internally calls [`gspExit`]"] #[doc = ""] pub fn gfxExit(); } extern "C" { - #[doc = "Enables or disables the 3D stereoscopic effect on the top screen."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Pass true to enable, false to disable."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Stereoscopic 3D is disabled by default."] + #[doc = "Enables or disables the 3D stereoscopic effect on the top screen.\n @param enable Pass true to enable, false to disable.\n @note Stereoscopic 3D is disabled by default."] #[doc = ""] pub fn gfxSet3D(enable: bool); } extern "C" { - #[doc = "Retrieves the status of the 3D stereoscopic effect on the top screen."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* true if 3D enabled, false otherwise."] + #[doc = "Retrieves the status of the 3D stereoscopic effect on the top screen.\n @return true if 3D enabled, false otherwise."] #[doc = ""] pub fn gfxIs3D() -> bool; } extern "C" { - #[doc = "Retrieves the status of the 800px (double-height) high resolution display mode of the top screen."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* true if wide mode enabled, false otherwise."] + #[doc = "Retrieves the status of the 800px (double-height) high resolution display mode of the top screen.\n @return true if wide mode enabled, false otherwise."] #[doc = ""] pub fn gfxIsWide() -> bool; } extern "C" { - #[doc = "Enables or disables the 800px (double-height) high resolution display mode of the top screen."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* Wide mode does not work on Old 2DS consoles (however it does work on New 2DS XL consoles)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Pass true to enable, false to disable."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Wide mode is disabled by default."] - #[doc = "* Wide and stereoscopic 3D modes are mutually exclusive."] - #[doc = "* In wide mode pixels are not square, since scanlines are half as tall as they normally are."] + #[doc = "Enables or disables the 800px (double-height) high resolution display mode of the top screen.\n @param enable Pass true to enable, false to disable.\n @note Wide mode is disabled by default.\n @note Wide and stereoscopic 3D modes are mutually exclusive.\n @note In wide mode pixels are not square, since scanlines are half as tall as they normally are.\n @warning Wide mode does not work on Old 2DS consoles (however it does work on New 2DS XL consoles)."] #[doc = ""] pub fn gfxSetWide(enable: bool); } extern "C" { - #[doc = "Changes the pixel format of a screen."] - #[doc = ""] - #[doc = "they are freed and new ones are reallocated."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`gfxScreen_t)`]"] - #[doc = "* `format` - Pixel format (see [`GSPGPU_FramebufferFormat)`]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* If the currently allocated framebuffers are too small for the specified format,"] + #[doc = "Changes the pixel format of a screen.\n @param screen Screen ID (see [`gfxScreen_t)\n`] @param format Pixel format (see [`GSPGPU_FramebufferFormat)\n`] @note If the currently allocated framebuffers are too small for the specified format,\n they are freed and new ones are reallocated."] #[doc = ""] pub fn gfxSetScreenFormat(screen: gfxScreen_t, format: GSPGPU_FramebufferFormat); } extern "C" { - #[doc = "Retrieves the current pixel format of a screen."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Pixel format (see [`GSPGPU_FramebufferFormat)`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`gfxScreen_t)`]"] + #[doc = "Retrieves the current pixel format of a screen.\n @param screen Screen ID (see [`gfxScreen_t)\n`] @return Pixel format (see [`GSPGPU_FramebufferFormat)`]"] #[doc = ""] pub fn gfxGetScreenFormat(screen: gfxScreen_t) -> GSPGPU_FramebufferFormat; } extern "C" { - #[doc = "Enables or disables double buffering on a screen."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`gfxScreen_t)`]"] - #[doc = "* `enable` - Pass true to enable, false to disable."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Double buffering is enabled by default."] + #[doc = "Enables or disables double buffering on a screen.\n @param screen Screen ID (see [`gfxScreen_t)\n`] @param enable Pass true to enable, false to disable.\n @note Double buffering is enabled by default."] #[doc = ""] pub fn gfxSetDoubleBuffering(screen: gfxScreen_t, enable: bool); } extern "C" { - #[doc = "Retrieves the framebuffer of the specified screen to which graphics should be rendered."] - #[doc = ""] - #[doc = "Please remember that the returned pointer will change every frame if double buffering is enabled."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current framebuffer of the chosen screen."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen ID (see [`gfxScreen_t)`]"] - #[doc = "* `side` - Framebuffer side (see [`gfx3dSide_t)`] (pass [`GFX_LEFT`] if not using stereoscopic 3D)"] - #[doc = "* `width` - Pointer that will hold the width of the framebuffer in pixels."] - #[doc = "* `height` - Pointer that will hold the height of the framebuffer in pixels."] + #[doc = "Retrieves the framebuffer of the specified screen to which graphics should be rendered.\n @param screen Screen ID (see [`gfxScreen_t)\n`] @param side Framebuffer side (see [`gfx3dSide_t)`] (pass [`GFX_LEFT`] if not using stereoscopic 3D)\n @param width Pointer that will hold the width of the framebuffer in pixels.\n @param height Pointer that will hold the height of the framebuffer in pixels.\n @return A pointer to the current framebuffer of the chosen screen.\n\n Please remember that the returned pointer will change every frame if double buffering is enabled."] #[doc = ""] pub fn gfxGetFramebuffer( screen: gfxScreen_t, @@ -6675,56 +5374,22 @@ extern "C" { ) -> *mut u8_; } extern "C" { - #[doc = "Flushes the data cache for the current framebuffers."] - #[doc = ""] - #[doc = "it is preferred to call this only once per frame, after all software rendering is completed."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* This is **only used during software rendering**. Since this function has significant overhead,"] + #[doc = "Flushes the data cache for the current framebuffers.\n @warning This is **only used during software rendering**. Since this function has significant overhead,\n it is preferred to call this only once per frame, after all software rendering is completed."] #[doc = ""] pub fn gfxFlushBuffers(); } extern "C" { - #[doc = "Updates the configuration of the specified screen, swapping the buffers if double buffering is enabled."] - #[doc = ""] - #[doc = "for both eyes, or false if the left image should be duplicated to the right eye."] - #[doc = "since this API does not implement triple buffering."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* Only call this once per screen per frame, otherwise graphical glitches will occur"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `scr` - Screen ID (see [`gfxScreen_t)`]"] - #[doc = "* `hasStereo` - For the top screen in 3D mode: true if the framebuffer contains individual images"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Previously rendered content will be displayed on the screen after the next VBlank."] - #[doc = "* This function is still useful even if double buffering is disabled, as it must be used to commit configuration changes."] + #[doc = "Updates the configuration of the specified screen, swapping the buffers if double buffering is enabled.\n @param scr Screen ID (see [`gfxScreen_t)\n`] @param hasStereo For the top screen in 3D mode: true if the framebuffer contains individual images\n for both eyes, or false if the left image should be duplicated to the right eye.\n @note Previously rendered content will be displayed on the screen after the next VBlank.\n @note This function is still useful even if double buffering is disabled, as it must be used to commit configuration changes.\n @warning Only call this once per screen per frame, otherwise graphical glitches will occur\n since this API does not implement triple buffering."] #[doc = ""] pub fn gfxScreenSwapBuffers(scr: gfxScreen_t, hasStereo: bool); } extern "C" { - #[doc = "**Warning!** This is deprecated! - This function has been superseded by [`gfxScreenSwapBuffers`] please use that instead."] - #[doc = ""] - #[doc = "Same as [`gfxScreenSwapBuffers`] but with hasStereo set to true."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `scr` - Screen ID (see [`gfxScreen_t)`]"] - #[doc = "* `immediate` - This parameter no longer has any effect and is thus ignored."] + #[doc = "Same as [`gfxScreenSwapBuffers`] but with hasStereo set to true.\n @param scr Screen ID (see [`gfxScreen_t)\n`] @param immediate This parameter no longer has any effect and is thus ignored.\n @deprecated This function has been superseded by [`gfxScreenSwapBuffers`] please use that instead."] #[doc = ""] pub fn gfxConfigScreen(scr: gfxScreen_t, immediate: bool); } extern "C" { - #[doc = "Updates the configuration of both screens."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This function is equivalent to: ``` gfxScreenSwapBuffers(GFX_TOP,true); gfxScreenSwapBuffers(GFX_BOTTOM,true); ```"] + #[doc = "Updates the configuration of both screens.\n @note This function is equivalent to: ``` gfxScreenSwapBuffers(GFX_TOP,true); gfxScreenSwapBuffers(GFX_BOTTOM,true); ```"] #[doc = ""] pub fn gfxSwapBuffers(); } @@ -6763,15 +5428,7 @@ impl Default for ConsoleFont { } } } -#[doc = "Console structure used to store the state of a console render context."] -#[doc = ""] -#[doc = "Default values from consoleGetDefault();"] -#[doc = "```"] -#[doc = ""] -#[doc = "PrintConsole defaultConsole ="] -#[doc = "{"] -#[doc = "};"] -#[doc = "```"] +#[doc = "Console structure used to store the state of a console render context.\n\n Default values from consoleGetDefault();\n ``` PrintConsole defaultConsole =\n {\n \t//Font:\n \t{\n \t\t(u8*)default_font_bin, //font gfx\n \t\t0, //first ascii character in the set\n \t\t128, //number of characters in the font set\n\t},\n\t0,0, //cursorX cursorY\n\t0,0, //prevcursorX prevcursorY\n\t40, //console width\n\t30, //console height\n\t0, //window x\n\t0, //window y\n\t32, //window width\n\t24, //window height\n\t3, //tab size\n\t0, //font character offset\n\t0, //print callback\n\tfalse //console initialized\n };\n ```"] #[doc = ""] #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -6858,25 +5515,12 @@ pub const debugDevice_3DMOO: debugDevice = 1; pub type debugDevice = ::libc::c_uint; extern "C" { - #[doc = "Loads the font into the console."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `console` - Pointer to the console to update, if NULL it will update the current console."] - #[doc = "* `font` - The font to load."] + #[doc = "Loads the font into the console.\n @param console Pointer to the console to update, if NULL it will update the current console.\n @param font The font to load."] #[doc = ""] pub fn consoleSetFont(console: *mut PrintConsole, font: *mut ConsoleFont); } extern "C" { - #[doc = "Sets the print window."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `console` - Console to set, if NULL it will set the current console window."] - #[doc = "* `x` - X location of the window."] - #[doc = "* `y` - Y location of the window."] - #[doc = "* `width` - Width of the window."] - #[doc = "* `height` - Height of the window."] + #[doc = "Sets the print window.\n @param console Console to set, if NULL it will set the current console window.\n @param x X location of the window.\n @param y Y location of the window.\n @param width Width of the window.\n @param height Height of the window."] #[doc = ""] pub fn consoleSetWindow( console: *mut PrintConsole, @@ -6887,49 +5531,22 @@ extern "C" { ); } extern "C" { - #[doc = "Gets a pointer to the console with the default values."] - #[doc = ""] - #[doc = "This should only be used when using a single console or without changing the console that is returned, otherwise use consoleInit()."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the console with the default values."] + #[doc = "Gets a pointer to the console with the default values.\n This should only be used when using a single console or without changing the console that is returned, otherwise use consoleInit().\n @return A pointer to the console with the default values."] #[doc = ""] pub fn consoleGetDefault() -> *mut PrintConsole; } extern "C" { - #[doc = "Make the specified console the render target."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the previous console."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `console` - A pointer to the console struct (must have been initialized with consoleInit(PrintConsole* console))."] + #[doc = "Make the specified console the render target.\n @param console A pointer to the console struct (must have been initialized with consoleInit(PrintConsole* console)).\n @return A pointer to the previous console."] #[doc = ""] pub fn consoleSelect(console: *mut PrintConsole) -> *mut PrintConsole; } extern "C" { - #[doc = "Initialise the console."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current console."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - The screen to use for the console."] - #[doc = "* `console` - A pointer to the console data to initialize (if it's NULL, the default console will be used)."] + #[doc = "Initialise the console.\n @param screen The screen to use for the console.\n @param console A pointer to the console data to initialize (if it's NULL, the default console will be used).\n @return A pointer to the current console."] #[doc = ""] pub fn consoleInit(screen: gfxScreen_t, console: *mut PrintConsole) -> *mut PrintConsole; } extern "C" { - #[doc = "Initializes debug console output on stderr to the specified device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `device` - The debug device (or devices) to output debug print statements to."] + #[doc = "Initializes debug console output on stderr to the specified device.\n @param device The debug device (or devices) to output debug print statements to."] #[doc = ""] pub fn consoleDebugInit(device: debugDevice); } @@ -6955,15 +5572,7 @@ pub const RUNFLAG_APTCHAINLOAD: _bindgen_ty_9 = 4; pub type _bindgen_ty_9 = ::libc::c_uint; extern "C" { - #[doc = "Retrieves a handle from the environment handle list."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The retrieved handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Name of the handle."] + #[doc = "Retrieves a handle from the environment handle list.\n @param name Name of the handle.\n @return The retrieved handle."] #[doc = ""] pub fn envGetHandle(name: *const ::libc::c_char) -> Handle; } @@ -7107,7 +5716,6 @@ pub type uid_t = __uid_t; pub type gid_t = __gid_t; pub type pid_t = __pid_t; pub type key_t = __key_t; -pub type ssize_t = _ssize_t; pub type mode_t = __mode_t; pub type nlink_t = __nlink_t; pub type clockid_t = __clockid_t; @@ -7232,7 +5840,7 @@ pub struct decompressIOVec { pub data: *mut ::libc::c_void, #[doc = "Buffer size"] #[doc = ""] - pub size: size_t, + pub size: usize, } impl Default for decompressIOVec { fn default() -> Self { @@ -7250,505 +5858,186 @@ pub type decompressCallback = ::core::option::Option< unsafe extern "C" fn( userdata: *mut ::libc::c_void, buffer: *mut ::libc::c_void, - size: size_t, - ) -> ssize_t, + size: usize, + ) -> isize, >; extern "C" { - #[doc = "Decompression callback for file descriptors"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Number of bytes read"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `userdata` - Address of file descriptor [Direction: In]"] - #[doc = "* `buffer` - Buffer to write into [Direction: In]"] - #[doc = "* `size` - Size to read from file descriptor [Direction: In]"] + #[doc = "Decompression callback for file descriptors\n @param[in] userdata Address of file descriptor\n @param[in] buffer Buffer to write into\n @param[in] size Size to read from file descriptor\n @returns Number of bytes read"] #[doc = ""] pub fn decompressCallback_FD( userdata: *mut ::libc::c_void, buffer: *mut ::libc::c_void, - size: size_t, - ) -> ssize_t; + size: usize, + ) -> isize; } extern "C" { - #[doc = "Decompression callback for stdio FILE*"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Number of bytes read"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `userdata` - FILE* [Direction: In]"] - #[doc = "* `buffer` - Buffer to write into [Direction: In]"] - #[doc = "* `size` - Size to read from file descriptor [Direction: In]"] + #[doc = "Decompression callback for stdio FILE*\n @param[in] userdata FILE*\n @param[in] buffer Buffer to write into\n @param[in] size Size to read from file descriptor\n @returns Number of bytes read"] #[doc = ""] pub fn decompressCallback_Stdio( userdata: *mut ::libc::c_void, buffer: *mut ::libc::c_void, - size: size_t, - ) -> ssize_t; + size: usize, + ) -> isize; } extern "C" { - #[doc = "Decode decompression header"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Bytes consumed"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `type` - Decompression type [Direction: In, Out]"] - #[doc = "* `size` - Decompressed size [Direction: In, Out]"] - #[doc = "* `callback` - Data callback (see decompressV()) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see decompressV()) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see decompressV()) [Direction: In]"] - #[doc = ""] - #[doc = "# Return values"] - #[doc = "* -1 error"] + #[doc = "Decode decompression header\n @param[out] type Decompression type\n @param[out] size Decompressed size\n @param[in] callback Data callback (see decompressV())\n @param[in] userdata User data passed to callback (see decompressV())\n @param[in] insize Size of userdata (see decompressV())\n @returns Bytes consumed\n @retval -1 error"] #[doc = ""] pub fn decompressHeader( type_: *mut decompressType, - size: *mut size_t, + size: *mut usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, - ) -> ssize_t; + insize: usize, + ) -> isize; } extern "C" { - #[doc = "Decompress data"] - #[doc = ""] - #[doc = "and insize is the size of that data. If callback is not null,"] - #[doc = "userdata is passed to callback to fetch more data, and insize is"] - #[doc = "unused."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether succeeded"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `iov` - Output vector [Direction: In]"] - #[doc = "* `iovcnt` - Number of buffers [Direction: In]"] - #[doc = "* `callback` - Data callback (see note) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see note) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see note) [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* If callback is null, userdata is a pointer to memory to read from,"] + #[doc = "Decompress data\n @param[in] iov Output vector\n @param[in] iovcnt Number of buffers\n @param[in] callback Data callback (see note)\n @param[in] userdata User data passed to callback (see note)\n @param[in] insize Size of userdata (see note)\n @returns Whether succeeded\n\n @note If callback is null, userdata is a pointer to memory to read from,\n and insize is the size of that data. If callback is not null,\n userdata is passed to callback to fetch more data, and insize is\n unused."] #[doc = ""] pub fn decompressV( iov: *const decompressIOVec, - iovcnt: size_t, + iovcnt: usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, + insize: usize, ) -> bool; } extern "C" { - #[doc = "Decompress LZSS/LZ10"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether succeeded"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `iov` - Output vector [Direction: In]"] - #[doc = "* `iovcnt` - Number of buffers [Direction: In]"] - #[doc = "* `callback` - Data callback (see decompressV()) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see decompressV()) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see decompressV()) [Direction: In]"] + #[doc = "Decompress LZSS/LZ10\n @param[in] iov Output vector\n @param[in] iovcnt Number of buffers\n @param[in] callback Data callback (see decompressV())\n @param[in] userdata User data passed to callback (see decompressV())\n @param[in] insize Size of userdata (see decompressV())\n @returns Whether succeeded"] #[doc = ""] pub fn decompressV_LZSS( iov: *const decompressIOVec, - iovcnt: size_t, + iovcnt: usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, + insize: usize, ) -> bool; } extern "C" { - #[doc = "Decompress LZ11"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether succeeded"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `iov` - Output vector [Direction: In]"] - #[doc = "* `iovcnt` - Number of buffers [Direction: In]"] - #[doc = "* `callback` - Data callback (see decompressV()) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see decompressV()) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see decompressV()) [Direction: In]"] + #[doc = "Decompress LZ11\n @param[in] iov Output vector\n @param[in] iovcnt Number of buffers\n @param[in] callback Data callback (see decompressV())\n @param[in] userdata User data passed to callback (see decompressV())\n @param[in] insize Size of userdata (see decompressV())\n @returns Whether succeeded"] #[doc = ""] pub fn decompressV_LZ11( iov: *const decompressIOVec, - iovcnt: size_t, + iovcnt: usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, + insize: usize, ) -> bool; } extern "C" { - #[doc = "Decompress Huffman"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether succeeded"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bits` - Data size in bits (usually 4 or 8) [Direction: In]"] - #[doc = "* `iov` - Output vector [Direction: In]"] - #[doc = "* `iovcnt` - Number of buffers [Direction: In]"] - #[doc = "* `callback` - Data callback (see decompressV()) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see decompressV()) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see decompressV()) [Direction: In]"] + #[doc = "Decompress Huffman\n @param[in] bits Data size in bits (usually 4 or 8)\n @param[in] iov Output vector\n @param[in] iovcnt Number of buffers\n @param[in] callback Data callback (see decompressV())\n @param[in] userdata User data passed to callback (see decompressV())\n @param[in] insize Size of userdata (see decompressV())\n @returns Whether succeeded"] #[doc = ""] pub fn decompressV_Huff( - bits: size_t, + bits: usize, iov: *const decompressIOVec, - iovcnt: size_t, + iovcnt: usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, + insize: usize, ) -> bool; } extern "C" { - #[doc = "Decompress run-length encoding"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether succeeded"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `iov` - Output vector [Direction: In]"] - #[doc = "* `iovcnt` - Number of buffers [Direction: In]"] - #[doc = "* `callback` - Data callback (see decompressV()) [Direction: In]"] - #[doc = "* `userdata` - User data passed to callback (see decompressV()) [Direction: In]"] - #[doc = "* `insize` - Size of userdata (see decompressV()) [Direction: In]"] + #[doc = "Decompress run-length encoding\n @param[in] iov Output vector\n @param[in] iovcnt Number of buffers\n @param[in] callback Data callback (see decompressV())\n @param[in] userdata User data passed to callback (see decompressV())\n @param[in] insize Size of userdata (see decompressV())\n @returns Whether succeeded"] #[doc = ""] pub fn decompressV_RLE( iov: *const decompressIOVec, - iovcnt: size_t, + iovcnt: usize, callback: decompressCallback, userdata: *mut ::libc::c_void, - insize: size_t, + insize: usize, ) -> bool; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-32 codepoint"] - #[doc = ""] - #[doc = "Returns:"] + #[doc = "Convert a UTF-8 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] #[doc = ""] - #[doc = "* number of input code units consumed"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output codepoint [Direction: In, Out]"] - #[doc = "* `in` - Input sequence [Direction: In]"] - #[doc = ""] - pub fn decode_utf8(out: *mut u32, in_: *const u8) -> ssize_t; + pub fn decode_utf8(out: *mut u32, in_: *const u8) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-32 codepoint"] - #[doc = ""] - #[doc = "Returns:"] + #[doc = "Convert a UTF-16 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] #[doc = ""] - #[doc = "* number of input code units consumed"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output codepoint [Direction: In, Out]"] - #[doc = "* `in` - Input sequence [Direction: In]"] - #[doc = ""] - pub fn decode_utf16(out: *mut u32, in_: *const u16) -> ssize_t; + pub fn decode_utf16(out: *mut u32, in_: *const u16) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 codepoint into a UTF-8 sequence"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input codepoint [Direction: In]"] + #[doc = "Convert a UTF-32 codepoint into a UTF-8 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out must be able to store 4 code units"] #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out must be able to store 4 code units"] - #[doc = ""] - pub fn encode_utf8(out: *mut u8, in_: u32) -> ssize_t; + pub fn encode_utf8(out: *mut u8, in_: u32) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 codepoint into a UTF-16 sequence"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input codepoint [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out must be able to store 2 code units"] + #[doc = "Convert a UTF-32 codepoint into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out must be able to store 2 code units"] #[doc = ""] - pub fn encode_utf16(out: *mut u16, in_: u32) -> ssize_t; + pub fn encode_utf16(out: *mut u16, in_: u32) -> isize; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-16 sequence"] - #[doc = "Fills the output buffer up to \\a len code units."] - #[doc = "Returns the number of code units that the input would produce;"] - #[doc = "if it returns greater than \\a len, the output has been"] - #[doc = "truncated."] + #[doc = "Convert a UTF-8 sequence into a UTF-16 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] - #[doc = ""] - pub fn utf8_to_utf16(out: *mut u16, in_: *const u8, len: size_t) -> ssize_t; + pub fn utf8_to_utf16(out: *mut u16, in_: *const u8, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-32 sequence"] - #[doc = "Fills the output buffer up to \\a len code units."] - #[doc = "Returns the number of code units that the input would produce;"] - #[doc = "if it returns greater than \\a len, the output has been"] - #[doc = "truncated."] - #[doc = ""] - #[doc = "Returns:"] + #[doc = "Convert a UTF-8 sequence into a UTF-32 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] - #[doc = ""] - pub fn utf8_to_utf32(out: *mut u32, in_: *const u8, len: size_t) -> ssize_t; + pub fn utf8_to_utf32(out: *mut u32, in_: *const u8, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-8 sequence"] - #[doc = "Fills the output buffer up to \\a len code units."] - #[doc = "Returns the number of code units that the input would produce;"] - #[doc = "if it returns greater than \\a len, the output has been"] - #[doc = "truncated."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Convert a UTF-16 sequence into a UTF-8 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] - #[doc = ""] - pub fn utf16_to_utf8(out: *mut u8, in_: *const u16, len: size_t) -> ssize_t; + pub fn utf16_to_utf8(out: *mut u8, in_: *const u16, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-32 sequence"] - #[doc = "Fills the output buffer up to \\a len code units."] - #[doc = "Returns the number of code units that the input would produce;"] - #[doc = "if it returns greater than \\a len, the output has been"] - #[doc = "truncated."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] + #[doc = "Convert a UTF-16 sequence into a UTF-32 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] - #[doc = ""] - pub fn utf16_to_utf32(out: *mut u32, in_: *const u16, len: size_t) -> ssize_t; + pub fn utf16_to_utf32(out: *mut u32, in_: *const u16, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 sequence into a UTF-8 sequence"] - #[doc = "Fills the output buffer up to \\a len code units."] - #[doc = "Returns the number of code units that the input would produce;"] - #[doc = "if it returns greater than \\a len, the output has been"] - #[doc = "truncated."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] + #[doc = "Convert a UTF-32 sequence into a UTF-8 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - pub fn utf32_to_utf8(out: *mut u8, in_: *const u32, len: size_t) -> ssize_t; + pub fn utf32_to_utf8(out: *mut u8, in_: *const u32, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 sequence into a UTF-16 sequence"] + #[doc = "Convert a UTF-32 sequence into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* number of output code units produced"] - #[doc = "* -1 for error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output sequence [Direction: In, Out]"] - #[doc = "* `in` - Input sequence (null-terminated) [Direction: In]"] - #[doc = "* `len` - Output length [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* \\a out is not null-terminated"] - #[doc = ""] - pub fn utf32_to_utf16(out: *mut u16, in_: *const u32, len: size_t) -> ssize_t; + pub fn utf32_to_utf16(out: *mut u16, in_: *const u32, len: usize) -> isize; } extern "C" { - #[doc = "Allocates a 0x80-byte aligned buffer."] - #[doc = ""] - #[doc = "Returns:"] + #[doc = "Allocates a 0x80-byte aligned buffer.\n @param size Size of the buffer to allocate.\n @return The allocated buffer."] #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = ""] - pub fn linearAlloc(size: size_t) -> *mut ::libc::c_void; + pub fn linearAlloc(size: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Allocates a buffer aligned to the given size."] - #[doc = ""] - #[doc = "Returns:"] + #[doc = "Allocates a buffer aligned to the given size.\n @param size Size of the buffer to allocate.\n @param alignment Alignment to use.\n @return The allocated buffer."] #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = "* `alignment` - Alignment to use."] - #[doc = ""] - pub fn linearMemAlign(size: size_t, alignment: size_t) -> *mut ::libc::c_void; + pub fn linearMemAlign(size: usize, alignment: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Reallocates a buffer."] - #[doc = ""] - #[doc = "Note: Not implemented yet."] + #[doc = "Reallocates a buffer.\n Note: Not implemented yet.\n @param mem Buffer to reallocate.\n @param size Size of the buffer to allocate.\n @return The reallocated buffer."] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The reallocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mem` - Buffer to reallocate."] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = ""] - pub fn linearRealloc(mem: *mut ::libc::c_void, size: size_t) -> *mut ::libc::c_void; + pub fn linearRealloc(mem: *mut ::libc::c_void, size: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Retrieves the allocated size of a buffer."] + #[doc = "Retrieves the allocated size of a buffer.\n @return The size of the buffer."] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The size of the buffer."] - #[doc = ""] - pub fn linearGetSize(mem: *mut ::libc::c_void) -> size_t; + pub fn linearGetSize(mem: *mut ::libc::c_void) -> usize; } extern "C" { - #[doc = "Frees a buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mem` - Buffer to free."] + #[doc = "Frees a buffer.\n @param mem Buffer to free."] #[doc = ""] pub fn linearFree(mem: *mut ::libc::c_void); } extern "C" { - #[doc = "Gets the current linear free space."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current linear free space."] + #[doc = "Gets the current linear free space.\n @return The current linear free space."] #[doc = ""] pub fn linearSpaceFree() -> u32_; } extern "C" { - #[doc = "Initializes the mappable allocator."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addrMin` - Minimum address."] - #[doc = "* `addrMax` - Maxium address."] + #[doc = "Initializes the mappable allocator.\n @param addrMin Minimum address.\n @param addrMax Maxium address."] #[doc = ""] pub fn mappableInit(addrMin: u32_, addrMax: u32_); } extern "C" { - #[doc = "Finds a mappable memory area."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The mappable area."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Finds a mappable memory area.\n @param size Size of the area to find.\n @return The mappable area."] #[doc = ""] - #[doc = "* `size` - Size of the area to find."] - #[doc = ""] - pub fn mappableAlloc(size: size_t) -> *mut ::libc::c_void; + pub fn mappableAlloc(size: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Frees a mappable area (stubbed)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mem` - Mappable area to free."] + #[doc = "Frees a mappable area (stubbed).\n @param mem Mappable area to free."] #[doc = ""] pub fn mappableFree(mem: *mut ::libc::c_void); } @@ -7757,105 +6046,42 @@ pub const VRAM_ALLOC_B: vramAllocPos = 2; pub const VRAM_ALLOC_ANY: vramAllocPos = 3; pub type vramAllocPos = ::libc::c_uint; extern "C" { - #[doc = "Allocates a 0x80-byte aligned buffer."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] + #[doc = "Allocates a 0x80-byte aligned buffer.\n @param size Size of the buffer to allocate.\n @return The allocated buffer."] #[doc = ""] - pub fn vramAlloc(size: size_t) -> *mut ::libc::c_void; + pub fn vramAlloc(size: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Allocates a 0x80-byte aligned buffer in the given VRAM bank."] + #[doc = "Allocates a 0x80-byte aligned buffer in the given VRAM bank.\n @param size Size of the buffer to allocate.\n @param pos VRAM bank to use (see [`vramAllocPos).\n`] @return The allocated buffer."] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = "* `pos` - VRAM bank to use (see [`vramAllocPos)`]"] - #[doc = ""] - pub fn vramAllocAt(size: size_t, pos: vramAllocPos) -> *mut ::libc::c_void; + pub fn vramAllocAt(size: usize, pos: vramAllocPos) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Allocates a buffer aligned to the given size."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = "* `alignment` - Alignment to use."] + #[doc = "Allocates a buffer aligned to the given size.\n @param size Size of the buffer to allocate.\n @param alignment Alignment to use.\n @return The allocated buffer."] #[doc = ""] - pub fn vramMemAlign(size: size_t, alignment: size_t) -> *mut ::libc::c_void; + pub fn vramMemAlign(size: usize, alignment: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Allocates a buffer aligned to the given size in the given VRAM bank."] + #[doc = "Allocates a buffer aligned to the given size in the given VRAM bank.\n @param size Size of the buffer to allocate.\n @param alignment Alignment to use.\n @param pos VRAM bank to use (see [`vramAllocPos).\n`] @return The allocated buffer."] #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The allocated buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = "* `alignment` - Alignment to use."] - #[doc = "* `pos` - VRAM bank to use (see [`vramAllocPos)`]"] - #[doc = ""] - pub fn vramMemAlignAt( - size: size_t, - alignment: size_t, - pos: vramAllocPos, - ) -> *mut ::libc::c_void; + pub fn vramMemAlignAt(size: usize, alignment: usize, pos: vramAllocPos) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Reallocates a buffer."] - #[doc = ""] - #[doc = "Note: Not implemented yet."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The reallocated buffer."] + #[doc = "Reallocates a buffer.\n Note: Not implemented yet.\n @param mem Buffer to reallocate.\n @param size Size of the buffer to allocate.\n @return The reallocated buffer."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mem` - Buffer to reallocate."] - #[doc = "* `size` - Size of the buffer to allocate."] - #[doc = ""] - pub fn vramRealloc(mem: *mut ::libc::c_void, size: size_t) -> *mut ::libc::c_void; + pub fn vramRealloc(mem: *mut ::libc::c_void, size: usize) -> *mut ::libc::c_void; } extern "C" { - #[doc = "Retrieves the allocated size of a buffer."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The size of the buffer."] + #[doc = "Retrieves the allocated size of a buffer.\n @return The size of the buffer."] #[doc = ""] - pub fn vramGetSize(mem: *mut ::libc::c_void) -> size_t; + pub fn vramGetSize(mem: *mut ::libc::c_void) -> usize; } extern "C" { - #[doc = "Frees a buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mem` - Buffer to free."] + #[doc = "Frees a buffer.\n @param mem Buffer to free."] #[doc = ""] pub fn vramFree(mem: *mut ::libc::c_void); } extern "C" { - #[doc = "Gets the current VRAM free space."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current VRAM free space."] + #[doc = "Gets the current VRAM free space.\n @return The current VRAM free space."] #[doc = ""] pub fn vramSpaceFree() -> u32_; } @@ -7930,164 +6156,97 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the connected Wifi status."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the connected Wifi status to. (0 = not connected, 1 = O3DS Internet, 2 = N3DS Internet)"] + #[doc = "Gets the connected Wifi status.\n @param out Pointer to output the connected Wifi status to. (0 = not connected, 1 = O3DS Internet, 2 = N3DS Internet)"] #[doc = ""] pub fn ACU_GetWifiStatus(out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected Wifi status."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the connected Wifi status to. (1 = not connected, 3 = connected)"] + #[doc = "Gets the connected Wifi status.\n @param out Pointer to output the connected Wifi status to. (1 = not connected, 3 = connected)"] #[doc = ""] pub fn ACU_GetStatus(out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected Wifi security mode."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mode` - Pointer to output the connected Wifi security mode to. (0 = Open Authentication, 1 = WEP 40-bit, 2 = WEP 104-bit, 3 = WEP 128-bit, 4 = WPA TKIP, 5 = WPA2 TKIP, 6 = WPA AES, 7 = WPA2 AES)"] + #[doc = "Gets the connected Wifi security mode.\n @param mode Pointer to output the connected Wifi security mode to. (0 = Open Authentication, 1 = WEP 40-bit, 2 = WEP 104-bit, 3 = WEP 128-bit, 4 = WPA TKIP, 5 = WPA2 TKIP, 6 = WPA AES, 7 = WPA2 AES)"] #[doc = ""] pub fn ACU_GetSecurityMode(mode: *mut acSecurityMode) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected Wifi SSID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `SSID` - Pointer to output the connected Wifi SSID to."] + #[doc = "Gets the connected Wifi SSID.\n @param SSID Pointer to output the connected Wifi SSID to."] #[doc = ""] pub fn ACU_GetSSID(SSID: *mut ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected Wifi SSID length."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the connected Wifi SSID length to."] + #[doc = "Gets the connected Wifi SSID length.\n @param out Pointer to output the connected Wifi SSID length to."] #[doc = ""] pub fn ACU_GetSSIDLength(out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Determines whether proxy is enabled for the connected network."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Pointer to output the proxy status to."] + #[doc = "Determines whether proxy is enabled for the connected network.\n @param enable Pointer to output the proxy status to."] #[doc = ""] pub fn ACU_GetProxyEnable(enable: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected network's proxy port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the proxy port to."] + #[doc = "Gets the connected network's proxy port.\n @param out Pointer to output the proxy port to."] #[doc = ""] pub fn ACU_GetProxyPort(out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected network's proxy username."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `username` - Pointer to output the proxy username to. (The size must be at least 0x20-bytes)"] + #[doc = "Gets the connected network's proxy username.\n @param username Pointer to output the proxy username to. (The size must be at least 0x20-bytes)"] #[doc = ""] pub fn ACU_GetProxyUserName(username: *mut ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the connected network's proxy password."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `password` - Pointer to output the proxy password to. (The size must be at least 0x20-bytes)"] + #[doc = "Gets the connected network's proxy password.\n @param password Pointer to output the proxy password to. (The size must be at least 0x20-bytes)"] #[doc = ""] pub fn ACU_GetProxyPassword(password: *mut ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the last error to occur during a connection."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `errorCode` - Pointer to output the error code to."] + #[doc = "Gets the last error to occur during a connection.\n @param errorCode Pointer to output the error code to."] #[doc = ""] pub fn ACU_GetLastErrorCode(errorCode: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the last detailed error to occur during a connection."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `errorCode` - Pointer to output the error code to."] + #[doc = "Gets the last detailed error to occur during a connection.\n @param errorCode Pointer to output the error code to."] #[doc = ""] pub fn ACU_GetLastDetailErrorCode(errorCode: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares a buffer to hold the configuration data to start a connection."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to an acuConfig struct to contain the data."] + #[doc = "Prepares a buffer to hold the configuration data to start a connection.\n @param config Pointer to an acuConfig struct to contain the data."] #[doc = ""] pub fn ACU_CreateDefaultConfig(config: *mut acuConfig) -> Result; } extern "C" { #[must_use] - #[doc = "Sets something that makes the connection reliable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously."] - #[doc = "* `area` - Always 2 ?"] + #[doc = "Sets something that makes the connection reliable.\n @param config Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously.\n @param area Always 2 ?"] #[doc = ""] pub fn ACU_SetNetworkArea(config: *mut acuConfig, area: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the slot to use when connecting."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously."] - #[doc = "* `type` - Allowed slots flag. BIT(0) for slot 1, BIT(1) for slot 2, BIT(2) for slot 3."] + #[doc = "Sets the slot to use when connecting.\n @param config Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously.\n @param type Allowed slots flag. BIT(0) for slot 1, BIT(1) for slot 2, BIT(2) for slot 3."] #[doc = ""] pub fn ACU_SetAllowApType(config: *mut acuConfig, type_: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets something that makes the connection reliable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously."] + #[doc = "Sets something that makes the connection reliable.\n @param config Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously."] #[doc = ""] pub fn ACU_SetRequestEulaVersion(config: *mut acuConfig) -> Result; } extern "C" { #[must_use] - #[doc = "Starts the connection procedure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously."] - #[doc = "* `connectionHandle` - Handle created with svcCreateEvent to wait on until the connection succeeds or fails."] + #[doc = "Starts the connection procedure.\n @param config Pointer to an acuConfig struct used with ACU_CreateDefaultConfig previously.\n @param connectionHandle Handle created with svcCreateEvent to wait on until the connection succeeds or fails."] #[doc = ""] pub fn ACU_ConnectAsync(config: *const acuConfig, connectionHandle: Handle) -> Result; } @@ -8713,11 +6872,7 @@ extern "C" { pub fn fsExit(); } extern "C" { - #[doc = "Sets the FSUSER session to use in the current thread."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `session` - The handle of the FSUSER session to use."] + #[doc = "Sets the FSUSER session to use in the current thread.\n @param session The handle of the FSUSER session to use."] #[doc = ""] pub fn fsUseSession(session: Handle); } @@ -8727,59 +6882,28 @@ extern "C" { pub fn fsEndUseSession(); } extern "C" { - #[doc = "Exempts an archive from using alternate FS session handles provided with [`fsUseSession`]"] - #[doc = ""] - #[doc = "Instead, the archive will use the default FS session handle, opened with [`srvGetSessionHandle`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to exempt."] + #[doc = "Exempts an archive from using alternate FS session handles provided with [`fsUseSession\n`] Instead, the archive will use the default FS session handle, opened with [`srvGetSessionHandle\n`] @param archive Archive to exempt."] #[doc = ""] pub fn fsExemptFromSession(archive: FS_Archive); } extern "C" { - #[doc = "Unexempts an archive from using alternate FS session handles provided with [`fsUseSession`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to remove from the exemption list."] + #[doc = "Unexempts an archive from using alternate FS session handles provided with [`fsUseSession\n`] @param archive Archive to remove from the exemption list."] #[doc = ""] pub fn fsUnexemptFromSession(archive: FS_Archive); } extern "C" { - #[doc = "Creates an FS_Path instance."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The created FS_Path instance."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `type` - Type of path."] - #[doc = "* `path` - Path to use."] + #[doc = "Creates an FS_Path instance.\n @param type Type of path.\n @param path Path to use.\n @return The created FS_Path instance."] #[doc = ""] pub fn fsMakePath(type_: FS_PathType, path: *const ::libc::c_void) -> FS_Path; } extern "C" { - #[doc = "Gets the current FS session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current FS session handle."] + #[doc = "Gets the current FS session handle.\n @return The current FS session handle."] #[doc = ""] pub fn fsGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Performs a control operation on the filesystem."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `action` - Action to perform."] - #[doc = "* `input` - Buffer to read input from."] - #[doc = "* `inputSize` - Size of the input."] - #[doc = "* `output` - Buffer to write output to."] - #[doc = "* `outputSize` - Size of the output."] + #[doc = "Performs a control operation on the filesystem.\n @param action Action to perform.\n @param input Buffer to read input from.\n @param inputSize Size of the input.\n @param output Buffer to write output to.\n @param outputSize Size of the output."] #[doc = ""] pub fn FSUSER_Control( action: FS_Action, @@ -8791,25 +6915,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes a FSUSER session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `session` - The handle of the FSUSER session to initialize."] + #[doc = "Initializes a FSUSER session.\n @param session The handle of the FSUSER session to initialize."] #[doc = ""] pub fn FSUSER_Initialize(session: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Opens a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the file handle to."] - #[doc = "* `archive` - Archive containing the file."] - #[doc = "* `path` - Path of the file."] - #[doc = "* `openFlags` - Flags to open the file with."] - #[doc = "* `attributes` - Attributes of the file."] + #[doc = "Opens a file.\n @param out Pointer to output the file handle to.\n @param archive Archive containing the file.\n @param path Path of the file.\n @param openFlags Flags to open the file with.\n @param attributes Attributes of the file."] #[doc = ""] pub fn FSUSER_OpenFile( out: *mut Handle, @@ -8821,16 +6933,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a file directly, bypassing the requirement of an opened archive handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the file handle to."] - #[doc = "* `archiveId` - ID of the archive containing the file."] - #[doc = "* `archivePath` - Path of the archive containing the file."] - #[doc = "* `filePath` - Path of the file."] - #[doc = "* `openFlags` - Flags to open the file with."] - #[doc = "* `attributes` - Attributes of the file."] + #[doc = "Opens a file directly, bypassing the requirement of an opened archive handle.\n @param out Pointer to output the file handle to.\n @param archiveId ID of the archive containing the file.\n @param archivePath Path of the archive containing the file.\n @param filePath Path of the file.\n @param openFlags Flags to open the file with.\n @param attributes Attributes of the file."] #[doc = ""] pub fn FSUSER_OpenFileDirectly( out: *mut Handle, @@ -8843,25 +6946,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive containing the file."] - #[doc = "* `path` - Path of the file."] + #[doc = "Deletes a file.\n @param archive Archive containing the file.\n @param path Path of the file."] #[doc = ""] pub fn FSUSER_DeleteFile(archive: FS_Archive, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Renames a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `srcArchive` - Archive containing the source file."] - #[doc = "* `srcPath` - Path of the source file."] - #[doc = "* `dstArchive` - Archive containing the destination file."] - #[doc = "* `dstPath` - Path of the destination file."] + #[doc = "Renames a file.\n @param srcArchive Archive containing the source file.\n @param srcPath Path of the source file.\n @param dstArchive Archive containing the destination file.\n @param dstPath Path of the destination file."] #[doc = ""] pub fn FSUSER_RenameFile( srcArchive: FS_Archive, @@ -8872,36 +6963,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes a directory, failing if it is not empty."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive containing the directory."] - #[doc = "* `path` - Path of the directory."] + #[doc = "Deletes a directory, failing if it is not empty.\n @param archive Archive containing the directory.\n @param path Path of the directory."] #[doc = ""] pub fn FSUSER_DeleteDirectory(archive: FS_Archive, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes a directory, also deleting its contents."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive containing the directory."] - #[doc = "* `path` - Path of the directory."] + #[doc = "Deletes a directory, also deleting its contents.\n @param archive Archive containing the directory.\n @param path Path of the directory."] #[doc = ""] pub fn FSUSER_DeleteDirectoryRecursively(archive: FS_Archive, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to create the file in."] - #[doc = "* `path` - Path of the file."] - #[doc = "* `attributes` - Attributes of the file."] - #[doc = "* `fileSize` - Size of the file."] + #[doc = "Creates a file.\n @param archive Archive to create the file in.\n @param path Path of the file.\n @param attributes Attributes of the file.\n @param fileSize Size of the file."] #[doc = ""] pub fn FSUSER_CreateFile( archive: FS_Archive, @@ -8912,26 +6986,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a directory"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to create the directory in."] - #[doc = "* `path` - Path of the directory."] - #[doc = "* `attributes` - Attributes of the directory."] + #[doc = "Creates a directory\n @param archive Archive to create the directory in.\n @param path Path of the directory.\n @param attributes Attributes of the directory."] #[doc = ""] pub fn FSUSER_CreateDirectory(archive: FS_Archive, path: FS_Path, attributes: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Renames a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `srcArchive` - Archive containing the source directory."] - #[doc = "* `srcPath` - Path of the source directory."] - #[doc = "* `dstArchive` - Archive containing the destination directory."] - #[doc = "* `dstPath` - Path of the destination directory."] + #[doc = "Renames a directory.\n @param srcArchive Archive containing the source directory.\n @param srcPath Path of the source directory.\n @param dstArchive Archive containing the destination directory.\n @param dstPath Path of the destination directory."] #[doc = ""] pub fn FSUSER_RenameDirectory( srcArchive: FS_Archive, @@ -8942,40 +7003,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the directory handle to."] - #[doc = "* `archive` - Archive containing the directory."] - #[doc = "* `path` - Path of the directory."] + #[doc = "Opens a directory.\n @param out Pointer to output the directory handle to.\n @param archive Archive containing the directory.\n @param path Path of the directory."] #[doc = ""] pub fn FSUSER_OpenDirectory(out: *mut Handle, archive: FS_Archive, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Opens an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Pointer to output the opened archive to."] - #[doc = "* `id` - ID of the archive."] - #[doc = "* `path` - Path of the archive."] + #[doc = "Opens an archive.\n @param archive Pointer to output the opened archive to.\n @param id ID of the archive.\n @param path Path of the archive."] #[doc = ""] pub fn FSUSER_OpenArchive(archive: *mut FS_Archive, id: FS_ArchiveID, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Performs a control operation on an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to control."] - #[doc = "* `action` - Action to perform."] - #[doc = "* `input` - Buffer to read input from."] - #[doc = "* `inputSize` - Size of the input."] - #[doc = "* `output` - Buffer to write output to."] - #[doc = "* `outputSize` - Size of the output."] + #[doc = "Performs a control operation on an archive.\n @param archive Archive to control.\n @param action Action to perform.\n @param input Buffer to read input from.\n @param inputSize Size of the input.\n @param output Buffer to write output to.\n @param outputSize Size of the output."] #[doc = ""] pub fn FSUSER_ControlArchive( archive: FS_Archive, @@ -8988,146 +7028,85 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Closes an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to close."] + #[doc = "Closes an archive.\n @param archive Archive to close."] #[doc = ""] pub fn FSUSER_CloseArchive(archive: FS_Archive) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the number of free bytes within an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `freeBytes` - Pointer to output the free bytes to."] - #[doc = "* `archive` - Archive to check."] + #[doc = "Gets the number of free bytes within an archive.\n @param freeBytes Pointer to output the free bytes to.\n @param archive Archive to check."] #[doc = ""] pub fn FSUSER_GetFreeBytes(freeBytes: *mut u64_, archive: FS_Archive) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the inserted card type."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `type` - Pointer to output the card type to."] + #[doc = "Gets the inserted card type.\n @param type Pointer to output the card type to."] #[doc = ""] pub fn FSUSER_GetCardType(type_: *mut FS_CardType) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC archive resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archiveResource` - Pointer to output the archive resource information to."] + #[doc = "Gets the SDMC archive resource information.\n @param archiveResource Pointer to output the archive resource information to."] #[doc = ""] pub fn FSUSER_GetSdmcArchiveResource(archiveResource: *mut FS_ArchiveResource) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND archive resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archiveResource` - Pointer to output the archive resource information to."] + #[doc = "Gets the NAND archive resource information.\n @param archiveResource Pointer to output the archive resource information to."] #[doc = ""] pub fn FSUSER_GetNandArchiveResource(archiveResource: *mut FS_ArchiveResource) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the last SDMC fatfs error."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `error` - Pointer to output the error to."] + #[doc = "Gets the last SDMC fatfs error.\n @param error Pointer to output the error to."] #[doc = ""] pub fn FSUSER_GetSdmcFatfsError(error: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether an SD card is detected."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `detected` - Pointer to output the detection status to."] + #[doc = "Gets whether an SD card is detected.\n @param detected Pointer to output the detection status to."] #[doc = ""] pub fn FSUSER_IsSdmcDetected(detected: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the SD card is writable."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `writable` - Pointer to output the writable status to."] + #[doc = "Gets whether the SD card is writable.\n @param writable Pointer to output the writable status to."] #[doc = ""] pub fn FSUSER_IsSdmcWritable(writable: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC CID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the CID to."] - #[doc = "* `length` - Length of the CID buffer. (should be 0x10)"] + #[doc = "Gets the SDMC CID.\n @param out Pointer to output the CID to.\n @param length Length of the CID buffer. (should be 0x10)"] #[doc = ""] pub fn FSUSER_GetSdmcCid(out: *mut u8_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND CID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the CID to."] - #[doc = "* `length` - Length of the CID buffer. (should be 0x10)"] + #[doc = "Gets the NAND CID.\n @param out Pointer to output the CID to.\n @param length Length of the CID buffer. (should be 0x10)"] #[doc = ""] pub fn FSUSER_GetNandCid(out: *mut u8_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC speed info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `speedInfo` - Pointer to output the speed info to."] + #[doc = "Gets the SDMC speed info.\n @param speedInfo Pointer to output the speed info to."] #[doc = ""] pub fn FSUSER_GetSdmcSpeedInfo(speedInfo: *mut FS_SdMmcSpeedInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND speed info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `speedInfo` - Pointer to output the speed info to."] + #[doc = "Gets the NAND speed info.\n @param speedInfo Pointer to output the speed info to."] #[doc = ""] pub fn FSUSER_GetNandSpeedInfo(speedInfo: *mut FS_SdMmcSpeedInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC log."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the log to."] - #[doc = "* `length` - Length of the log buffer."] + #[doc = "Gets the SDMC log.\n @param out Pointer to output the log to.\n @param length Length of the log buffer."] #[doc = ""] pub fn FSUSER_GetSdmcLog(out: *mut u8_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND log."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the log to."] - #[doc = "* `length` - Length of the log buffer."] + #[doc = "Gets the NAND log.\n @param out Pointer to output the log to.\n @param length Length of the log buffer."] #[doc = ""] pub fn FSUSER_GetNandLog(out: *mut u8_, length: u32_) -> Result; } @@ -9145,74 +7124,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets whether a card is inserted."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inserted` - Pointer to output the insertion status to."] + #[doc = "Gets whether a card is inserted.\n @param inserted Pointer to output the insertion status to."] #[doc = ""] pub fn FSUSER_CardSlotIsInserted(inserted: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Powers on the card slot."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Powers on the card slot.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSUSER_CardSlotPowerOn(status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Powers off the card slot."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Powers off the card slot.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSUSER_CardSlotPowerOff(status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the card's power status."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Gets the card's power status.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSUSER_CardSlotGetCardIFPowerStatus(status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct command."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] + #[doc = "Executes a CARDNOR direct command.\n @param commandId ID of the command."] #[doc = ""] pub fn FSUSER_CardNorDirectCommand(commandId: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct command with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] + #[doc = "Executes a CARDNOR direct command with an address.\n @param commandId ID of the command.\n @param address Address to provide."] #[doc = ""] pub fn FSUSER_CardNorDirectCommandWithAddress(commandId: u8_, address: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct read."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR direct read.\n @param commandId ID of the command.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectRead( commandId: u8_, @@ -9222,14 +7170,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct read with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR direct read with an address.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectReadWithAddress( commandId: u8_, @@ -9240,13 +7181,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct write."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `output` - Input buffer."] + #[doc = "Executes a CARDNOR direct write.\n @param commandId ID of the command.\n @param size Size of the input buffer.\n @param output Input buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectWrite( commandId: u8_, @@ -9256,14 +7191,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct write with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `input` - Input buffer."] + #[doc = "Executes a CARDNOR direct write with an address.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the input buffer.\n @param input Input buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectWriteWithAddress( commandId: u8_, @@ -9274,14 +7202,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR 4xIO direct read."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR 4xIO direct read.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectRead_4xIO( commandId: u8_, @@ -9292,13 +7213,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct CPU write without verify."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `output` - Input buffer."] + #[doc = "Executes a CARDNOR direct CPU write without verify.\n @param address Address to provide.\n @param size Size of the input buffer.\n @param output Input buffer."] #[doc = ""] pub fn FSUSER_CardNorDirectCpuWriteWithoutVerify( address: u32_, @@ -9308,53 +7223,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct sector erase without verify."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Address to provide."] + #[doc = "Executes a CARDNOR direct sector erase without verify.\n @param address Address to provide."] #[doc = ""] pub fn FSUSER_CardNorDirectSectorEraseWithoutVerify(address: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a process's product info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output the product info to."] - #[doc = "* `processId` - ID of the process."] + #[doc = "Gets a process's product info.\n @param info Pointer to output the product info to.\n @param processId ID of the process."] #[doc = ""] pub fn FSUSER_GetProductInfo(info: *mut FS_ProductInfo, processId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a process's program launch info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output the program launch info to."] - #[doc = "* `processId` - ID of the process."] + #[doc = "Gets a process's program launch info.\n @param info Pointer to output the program launch info to.\n @param processId ID of the process."] #[doc = ""] pub fn FSUSER_GetProgramLaunchInfo(info: *mut FS_ProgramInfo, processId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the CARDSPI baud rate."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `baudRate` - Baud rate to set."] + #[doc = "Sets the CARDSPI baud rate.\n @param baudRate Baud rate to set."] #[doc = ""] pub fn FSUSER_SetCardSpiBaudRate(baudRate: FS_CardSpiBaudRate) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the CARDSPI bus mode."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `busMode` - Bus mode to set."] + #[doc = "Sets the CARDSPI bus mode.\n @param busMode Bus mode to set."] #[doc = ""] pub fn FSUSER_SetCardSpiBusMode(busMode: FS_CardSpiBusMode) -> Result; } @@ -9366,14 +7259,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a special content's index."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `index` - Pointer to output the index to."] - #[doc = "* `mediaType` - Media type of the special content."] - #[doc = "* `programId` - Program ID owning the special content."] - #[doc = "* `type` - Type of special content."] + #[doc = "Gets a special content's index.\n @param index Pointer to output the index to.\n @param mediaType Media type of the special content.\n @param programId Program ID owning the special content.\n @param type Type of special content."] #[doc = ""] pub fn FSUSER_GetSpecialContentIndex( index: *mut u16_, @@ -9384,13 +7270,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy ROM header of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy ROM header to. (size = 0x3B4)"] + #[doc = "Gets the legacy ROM header of a program.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy ROM header to. (size = 0x3B4)"] #[doc = ""] pub fn FSUSER_GetLegacyRomHeader( mediaType: FS_MediaType, @@ -9400,13 +7280,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy banner data of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy banner data to. (size = 0x23C0)"] + #[doc = "Gets the legacy banner data of a program.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy banner data to. (size = 0x23C0)"] #[doc = ""] pub fn FSUSER_GetLegacyBannerData( mediaType: FS_MediaType, @@ -9416,14 +7290,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks a process's authority to access a save data archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `access` - Pointer to output the access status to."] - #[doc = "* `mediaType` - Media type of the save data."] - #[doc = "* `saveId` - ID of the save data."] - #[doc = "* `processId` - ID of the process to check."] + #[doc = "Checks a process's authority to access a save data archive.\n @param access Pointer to output the access status to.\n @param mediaType Media type of the save data.\n @param saveId ID of the save data.\n @param processId ID of the process to check."] #[doc = ""] pub fn FSUSER_CheckAuthorityToAccessExtSaveData( access: *mut bool, @@ -9434,15 +7301,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Queries the total quota size of a save data archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `quotaSize` - Pointer to output the quota size to."] - #[doc = "* `directories` - Number of directories."] - #[doc = "* `files` - Number of files."] - #[doc = "* `fileSizeCount` - Number of file sizes to provide."] - #[doc = "* `fileSizes` - File sizes to provide."] + #[doc = "Queries the total quota size of a save data archive.\n @param quotaSize Pointer to output the quota size to.\n @param directories Number of directories.\n @param files Number of files.\n @param fileSizeCount Number of file sizes to provide.\n @param fileSizes File sizes to provide."] #[doc = ""] pub fn FSUSER_QueryTotalQuotaSize( quotaSize: *mut u64_, @@ -9454,11 +7313,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Abnegates an access right."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `accessRight` - Access right to abnegate."] + #[doc = "Abnegates an access right.\n @param accessRight Access right to abnegate."] #[doc = ""] pub fn FSUSER_AbnegateAccessRight(accessRight: u32_) -> Result; } @@ -9488,16 +7343,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Retrieves archive format info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `totalSize` - Pointer to output the total size to."] - #[doc = "* `directories` - Pointer to output the number of directories to."] - #[doc = "* `files` - Pointer to output the number of files to."] - #[doc = "* `duplicateData` - Pointer to output whether to duplicate data to."] - #[doc = "* `archiveId` - ID of the archive."] - #[doc = "* `path` - Path of the archive."] + #[doc = "Retrieves archive format info.\n @param totalSize Pointer to output the total size to.\n @param directories Pointer to output the number of directories to.\n @param files Pointer to output the number of files to.\n @param duplicateData Pointer to output whether to duplicate data to.\n @param archiveId ID of the archive.\n @param path Path of the archive."] #[doc = ""] pub fn FSUSER_GetFormatInfo( totalSize: *mut u32_, @@ -9510,14 +7356,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy ROM header of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `headerSize` - Size of the ROM header."] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy ROM header to."] + #[doc = "Gets the legacy ROM header of a program.\n @param headerSize Size of the ROM header.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy ROM header to."] #[doc = ""] pub fn FSUSER_GetLegacyRomHeader2( headerSize: u32_, @@ -9528,23 +7367,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the CTR SDMC root path."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the root path to."] - #[doc = "* `length` - Length of the output buffer."] + #[doc = "Gets the CTR SDMC root path.\n @param out Pointer to output the root path to.\n @param length Length of the output buffer."] #[doc = ""] pub fn FSUSER_GetSdmcCtrRootPath(out: *mut u8_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets an archive's resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archiveResource` - Pointer to output the archive resource information to."] - #[doc = "* `mediaType` - System media type to check."] + #[doc = "Gets an archive's resource information.\n @param archiveResource Pointer to output the archive resource information to.\n @param mediaType System media type to check."] #[doc = ""] pub fn FSUSER_GetArchiveResource( archiveResource: *mut FS_ArchiveResource, @@ -9553,11 +7382,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Exports the integrity verification seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Pointer to output the seed to."] + #[doc = "Exports the integrity verification seed.\n @param seed Pointer to output the seed to."] #[doc = ""] pub fn FSUSER_ExportIntegrityVerificationSeed( seed: *mut FS_IntegrityVerificationSeed, @@ -9565,11 +7390,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Imports an integrity verification seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Seed to import."] + #[doc = "Imports an integrity verification seed.\n @param seed Seed to import."] #[doc = ""] pub fn FSUSER_ImportIntegrityVerificationSeed( seed: *mut FS_IntegrityVerificationSeed, @@ -9577,18 +7398,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Formats save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archiveId` - ID of the save data archive."] - #[doc = "* `path` - Path of the save data."] - #[doc = "* `blocks` - Size of the save data in blocks. (512 bytes)"] - #[doc = "* `directories` - Number of directories."] - #[doc = "* `files` - Number of files."] - #[doc = "* `directoryBuckets` - Directory hash tree bucket count."] - #[doc = "* `fileBuckets` - File hash tree bucket count."] - #[doc = "* `duplicateData` - Whether to store an internal duplicate of the data."] + #[doc = "Formats save data.\n @param archiveId ID of the save data archive.\n @param path Path of the save data.\n @param blocks Size of the save data in blocks. (512 bytes)\n @param directories Number of directories.\n @param files Number of files.\n @param directoryBuckets Directory hash tree bucket count.\n @param fileBuckets File hash tree bucket count.\n @param duplicateData Whether to store an internal duplicate of the data."] #[doc = ""] pub fn FSUSER_FormatSaveData( archiveId: FS_ArchiveID, @@ -9603,14 +7413,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy sub banner data of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bannerSize` - Size of the banner."] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy sub banner data to."] + #[doc = "Gets the legacy sub banner data of a program.\n @param bannerSize Size of the banner.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy sub banner data to."] #[doc = ""] pub fn FSUSER_GetLegacySubBannerData( bannerSize: u32_, @@ -9621,13 +7424,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Hashes the given data and outputs a SHA256 hash."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to the data to be hashed."] - #[doc = "* `inputSize` - The size of the data."] - #[doc = "* `hash` - Hash output pointer."] + #[doc = "Hashes the given data and outputs a SHA256 hash.\n @param data Pointer to the data to be hashed.\n @param inputSize The size of the data.\n @param hash Hash output pointer."] #[doc = ""] pub fn FSUSER_UpdateSha256Context( data: *const ::libc::c_void, @@ -9637,14 +7434,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from a special file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bytesRead` - Pointer to output the number of bytes read to."] - #[doc = "* `fileOffset` - Offset of the file."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `data` - Buffer to read to."] + #[doc = "Reads from a special file.\n @param bytesRead Pointer to output the number of bytes read to.\n @param fileOffset Offset of the file.\n @param size Size of the buffer.\n @param data Buffer to read to."] #[doc = ""] pub fn FSUSER_ReadSpecialFile( bytesRead: *mut u32_, @@ -9655,26 +7445,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the size of a special file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `fileSize` - Pointer to output the size to."] + #[doc = "Gets the size of a special file.\n @param fileSize Pointer to output the size to."] #[doc = ""] pub fn FSUSER_GetSpecialFileSize(fileSize: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Creates ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] - #[doc = "* `directories` - Number of directories."] - #[doc = "* `files` - Number of files."] - #[doc = "* `sizeLimit` - Size limit of the save data."] - #[doc = "* `smdhSize` - Size of the save data's SMDH data."] - #[doc = "* `smdh` - SMDH data."] + #[doc = "Creates ext save data.\n @param info Info of the save data.\n @param directories Number of directories.\n @param files Number of files.\n @param sizeLimit Size limit of the save data.\n @param smdhSize Size of the save data's SMDH data.\n @param smdh SMDH data."] #[doc = ""] pub fn FSUSER_CreateExtSaveData( info: FS_ExtSaveDataInfo, @@ -9687,24 +7464,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] + #[doc = "Deletes ext save data.\n @param info Info of the save data."] #[doc = ""] pub fn FSUSER_DeleteExtSaveData(info: FS_ExtSaveDataInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Reads the SMDH icon of ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bytesRead` - Pointer to output the number of bytes read to."] - #[doc = "* `info` - Info of the save data."] - #[doc = "* `smdhSize` - Size of the save data SMDH."] - #[doc = "* `smdh` - Pointer to output SMDH data to."] + #[doc = "Reads the SMDH icon of ext save data.\n @param bytesRead Pointer to output the number of bytes read to.\n @param info Info of the save data.\n @param smdhSize Size of the save data SMDH.\n @param smdh Pointer to output SMDH data to."] #[doc = ""] pub fn FSUSER_ReadExtSaveDataIcon( bytesRead: *mut u32_, @@ -9715,14 +7481,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an ext data archive's block information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `totalBlocks` - Pointer to output the total blocks to."] - #[doc = "* `freeBlocks` - Pointer to output the free blocks to."] - #[doc = "* `blockSize` - Pointer to output the block size to."] - #[doc = "* `info` - Info of the save data."] + #[doc = "Gets an ext data archive's block information.\n @param totalBlocks Pointer to output the total blocks to.\n @param freeBlocks Pointer to output the free blocks to.\n @param blockSize Pointer to output the block size to.\n @param info Info of the save data."] #[doc = ""] pub fn FSUSER_GetExtDataBlockSize( totalBlocks: *mut u64_, @@ -9733,16 +7492,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Enumerates ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `idsWritten` - Pointer to output the number of IDs written to."] - #[doc = "* `idsSize` - Size of the IDs buffer."] - #[doc = "* `mediaType` - Media type to enumerate over."] - #[doc = "* `idSize` - Size of each ID element."] - #[doc = "* `shared` - Whether to enumerate shared ext save data."] - #[doc = "* `ids` - Pointer to output IDs to."] + #[doc = "Enumerates ext save data.\n @param idsWritten Pointer to output the number of IDs written to.\n @param idsSize Size of the IDs buffer.\n @param mediaType Media type to enumerate over.\n @param idSize Size of each ID element.\n @param shared Whether to enumerate shared ext save data.\n @param ids Pointer to output IDs to."] #[doc = ""] pub fn FSUSER_EnumerateExtSaveData( idsWritten: *mut u32_, @@ -9755,18 +7505,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates system save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] - #[doc = "* `totalSize` - Total size of the save data."] - #[doc = "* `blockSize` - Block size of the save data. (usually 0x1000)"] - #[doc = "* `directories` - Number of directories."] - #[doc = "* `files` - Number of files."] - #[doc = "* `directoryBuckets` - Directory hash tree bucket count."] - #[doc = "* `fileBuckets` - File hash tree bucket count."] - #[doc = "* `duplicateData` - Whether to store an internal duplicate of the data."] + #[doc = "Creates system save data.\n @param info Info of the save data.\n @param totalSize Total size of the save data.\n @param blockSize Block size of the save data. (usually 0x1000)\n @param directories Number of directories.\n @param files Number of files.\n @param directoryBuckets Directory hash tree bucket count.\n @param fileBuckets File hash tree bucket count.\n @param duplicateData Whether to store an internal duplicate of the data."] #[doc = ""] pub fn FSUSER_CreateSystemSaveData( info: FS_SystemSaveDataInfo, @@ -9781,32 +7520,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes system save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] + #[doc = "Deletes system save data.\n @param info Info of the save data."] #[doc = ""] pub fn FSUSER_DeleteSystemSaveData(info: FS_SystemSaveDataInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Initiates a device move as the source device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Pointer to output the context to."] + #[doc = "Initiates a device move as the source device.\n @param context Pointer to output the context to."] #[doc = ""] pub fn FSUSER_StartDeviceMoveAsSource(context: *mut FS_DeviceMoveContext) -> Result; } extern "C" { #[must_use] - #[doc = "Initiates a device move as the destination device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `clear` - Whether to clear the device's data first."] + #[doc = "Initiates a device move as the destination device.\n @param context Context to use.\n @param clear Whether to clear the device's data first."] #[doc = ""] pub fn FSUSER_StartDeviceMoveAsDestination( context: FS_DeviceMoveContext, @@ -9815,56 +7541,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets an archive's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to use."] - #[doc = "* `priority` - Priority to set."] + #[doc = "Sets an archive's priority.\n @param archive Archive to use.\n @param priority Priority to set."] #[doc = ""] pub fn FSUSER_SetArchivePriority(archive: FS_Archive, priority: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets an archive's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `priority` - Pointer to output the priority to."] - #[doc = "* `archive` - Archive to use."] + #[doc = "Gets an archive's priority.\n @param priority Pointer to output the priority to.\n @param archive Archive to use."] #[doc = ""] pub fn FSUSER_GetArchivePriority(priority: *mut u32_, archive: FS_Archive) -> Result; } extern "C" { #[must_use] - #[doc = "Configures CTRCARD latency emulation."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `latency` - Latency to apply, in milliseconds."] - #[doc = "* `emulateEndurance` - Whether to emulate card endurance."] + #[doc = "Configures CTRCARD latency emulation.\n @param latency Latency to apply, in milliseconds.\n @param emulateEndurance Whether to emulate card endurance."] #[doc = ""] pub fn FSUSER_SetCtrCardLatencyParameter(latency: u64_, emulateEndurance: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Toggles cleaning up invalid save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Whether to enable cleaning up invalid save data."] + #[doc = "Toggles cleaning up invalid save data.\n @param enable Whether to enable cleaning up invalid save data."] #[doc = ""] pub fn FSUSER_SwitchCleanupInvalidSaveData(enable: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Enumerates system save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `idsWritten` - Pointer to output the number of IDs written to."] - #[doc = "* `idsSize` - Size of the IDs buffer."] - #[doc = "* `ids` - Pointer to output IDs to."] + #[doc = "Enumerates system save data.\n @param idsWritten Pointer to output the number of IDs written to.\n @param idsSize Size of the IDs buffer.\n @param ids Pointer to output IDs to."] #[doc = ""] pub fn FSUSER_EnumerateSystemSaveData( idsWritten: *mut u32_, @@ -9874,45 +7575,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes a FSUSER session with an SDK version."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `session` - The handle of the FSUSER session to initialize."] - #[doc = "* `version` - SDK version to initialize with."] + #[doc = "Initializes a FSUSER session with an SDK version.\n @param session The handle of the FSUSER session to initialize.\n @param version SDK version to initialize with."] #[doc = ""] pub fn FSUSER_InitializeWithSdkVersion(session: Handle, version: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the file system priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `priority` - Priority to set."] + #[doc = "Sets the file system priority.\n @param priority Priority to set."] #[doc = ""] pub fn FSUSER_SetPriority(priority: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the file system priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `priority` - Pointer to output the priority to."] + #[doc = "Gets the file system priority.\n @param priority Pointer to output the priority to."] #[doc = ""] pub fn FSUSER_GetPriority(priority: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the save data secure value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Secure value to set."] - #[doc = "* `slot` - Slot of the secure value."] - #[doc = "* `titleUniqueId` - Unique ID of the title. (default = 0)"] - #[doc = "* `titleVariation` - Variation of the title. (default = 0)"] + #[doc = "Sets the save data secure value.\n @param value Secure value to set.\n @param slot Slot of the secure value.\n @param titleUniqueId Unique ID of the title. (default = 0)\n @param titleVariation Variation of the title. (default = 0)"] #[doc = ""] pub fn FSUSER_SetSaveDataSecureValue( value: u64_, @@ -9923,15 +7604,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the save data secure value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `exists` - Pointer to output whether the secure value exists to."] - #[doc = "* `value` - Pointer to output the secure value to."] - #[doc = "* `slot` - Slot of the secure value."] - #[doc = "* `titleUniqueId` - Unique ID of the title. (default = 0)"] - #[doc = "* `titleVariation` - Variation of the title. (default = 0)"] + #[doc = "Gets the save data secure value.\n @param exists Pointer to output whether the secure value exists to.\n @param value Pointer to output the secure value to.\n @param slot Slot of the secure value.\n @param titleUniqueId Unique ID of the title. (default = 0)\n @param titleVariation Variation of the title. (default = 0)"] #[doc = ""] pub fn FSUSER_GetSaveDataSecureValue( exists: *mut bool, @@ -9943,15 +7616,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Performs a control operation on a secure save."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `action` - Action to perform."] - #[doc = "* `input` - Buffer to read input from."] - #[doc = "* `inputSize` - Size of the input."] - #[doc = "* `output` - Buffer to write output to."] - #[doc = "* `outputSize` - Size of the output."] + #[doc = "Performs a control operation on a secure save.\n @param action Action to perform.\n @param input Buffer to read input from.\n @param inputSize Size of the input.\n @param output Buffer to write output to.\n @param outputSize Size of the output."] #[doc = ""] pub fn FSUSER_ControlSecureSave( action: FS_SecureSaveAction, @@ -9963,26 +7628,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the media type of the current application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Pointer to output the media type to."] + #[doc = "Gets the media type of the current application.\n @param mediaType Pointer to output the media type to."] #[doc = ""] pub fn FSUSER_GetMediaType(mediaType: *mut FS_MediaType) -> Result; } extern "C" { #[must_use] - #[doc = "Performs a control operation on a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `action` - Action to perform."] - #[doc = "* `input` - Buffer to read input from."] - #[doc = "* `inputSize` - Size of the input."] - #[doc = "* `output` - Buffer to write output to."] - #[doc = "* `outputSize` - Size of the output."] + #[doc = "Performs a control operation on a file.\n @param handle Handle of the file.\n @param action Action to perform.\n @param input Buffer to read input from.\n @param inputSize Size of the input.\n @param output Buffer to write output to.\n @param outputSize Size of the output."] #[doc = ""] pub fn FSFILE_Control( handle: Handle, @@ -9995,14 +7647,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a handle to a sub-section of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `subFile` - Pointer to output the sub-file to."] - #[doc = "* `offset` - Offset of the sub-section."] - #[doc = "* `size` - Size of the sub-section."] + #[doc = "Opens a handle to a sub-section of a file.\n @param handle Handle of the file.\n @param subFile Pointer to output the sub-file to.\n @param offset Offset of the sub-section.\n @param size Size of the sub-section."] #[doc = ""] pub fn FSFILE_OpenSubFile( handle: Handle, @@ -10013,15 +7658,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `bytesRead` - Pointer to output the number of bytes read to."] - #[doc = "* `offset` - Offset to read from."] - #[doc = "* `buffer` - Buffer to read to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Reads from a file.\n @param handle Handle of the file.\n @param bytesRead Pointer to output the number of bytes read to.\n @param offset Offset to read from.\n @param buffer Buffer to read to.\n @param size Size of the buffer."] #[doc = ""] pub fn FSFILE_Read( handle: Handle, @@ -10033,16 +7670,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Writes to a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `bytesWritten` - Pointer to output the number of bytes written to."] - #[doc = "* `offset` - Offset to write to."] - #[doc = "* `buffer` - Buffer to write from."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `flags` - Flags to use when writing."] + #[doc = "Writes to a file.\n @param handle Handle of the file.\n @param bytesWritten Pointer to output the number of bytes written to.\n @param offset Offset to write to.\n @param buffer Buffer to write from.\n @param size Size of the buffer.\n @param flags Flags to use when writing."] #[doc = ""] pub fn FSFILE_Write( handle: Handle, @@ -10055,113 +7683,61 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the size of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `size` - Pointer to output the size to."] + #[doc = "Gets the size of a file.\n @param handle Handle of the file.\n @param size Pointer to output the size to."] #[doc = ""] pub fn FSFILE_GetSize(handle: Handle, size: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the size of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `size` - Size to set."] + #[doc = "Sets the size of a file.\n @param handle Handle of the file.\n @param size Size to set."] #[doc = ""] pub fn FSFILE_SetSize(handle: Handle, size: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the attributes of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `attributes` - Pointer to output the attributes to."] + #[doc = "Gets the attributes of a file.\n @param handle Handle of the file.\n @param attributes Pointer to output the attributes to."] #[doc = ""] pub fn FSFILE_GetAttributes(handle: Handle, attributes: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the attributes of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `attributes` - Attributes to set."] + #[doc = "Sets the attributes of a file.\n @param handle Handle of the file.\n @param attributes Attributes to set."] #[doc = ""] pub fn FSFILE_SetAttributes(handle: Handle, attributes: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Closes a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] + #[doc = "Closes a file.\n @param handle Handle of the file."] #[doc = ""] pub fn FSFILE_Close(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Flushes a file's contents."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] + #[doc = "Flushes a file's contents.\n @param handle Handle of the file."] #[doc = ""] pub fn FSFILE_Flush(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a file's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `priority` - Priority to set."] + #[doc = "Sets a file's priority.\n @param handle Handle of the file.\n @param priority Priority to set."] #[doc = ""] pub fn FSFILE_SetPriority(handle: Handle, priority: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a file's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `priority` - Pointer to output the priority to."] + #[doc = "Gets a file's priority.\n @param handle Handle of the file.\n @param priority Pointer to output the priority to."] #[doc = ""] pub fn FSFILE_GetPriority(handle: Handle, priority: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Opens a duplicate handle to a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the file."] - #[doc = "* `linkFile` - Pointer to output the link handle to."] + #[doc = "Opens a duplicate handle to a file.\n @param handle Handle of the file.\n @param linkFile Pointer to output the link handle to."] #[doc = ""] pub fn FSFILE_OpenLinkFile(handle: Handle, linkFile: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Performs a control operation on a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the directory."] - #[doc = "* `action` - Action to perform."] - #[doc = "* `input` - Buffer to read input from."] - #[doc = "* `inputSize` - Size of the input."] - #[doc = "* `output` - Buffer to write output to."] - #[doc = "* `outputSize` - Size of the output."] + #[doc = "Performs a control operation on a directory.\n @param handle Handle of the directory.\n @param action Action to perform.\n @param input Buffer to read input from.\n @param inputSize Size of the input.\n @param output Buffer to write output to.\n @param outputSize Size of the output."] #[doc = ""] pub fn FSDIR_Control( handle: Handle, @@ -10174,14 +7750,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads one or more directory entries."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the directory."] - #[doc = "* `entriesRead` - Pointer to output the number of entries read to."] - #[doc = "* `entryCount` - Number of entries to read."] - #[doc = "* `entryOut` - Pointer to output directory entries to."] + #[doc = "Reads one or more directory entries.\n @param handle Handle of the directory.\n @param entriesRead Pointer to output the number of entries read to.\n @param entryCount Number of entries to read.\n @param entryOut Pointer to output directory entries to."] #[doc = ""] pub fn FSDIR_Read( handle: Handle, @@ -10192,33 +7761,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Closes a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the directory."] + #[doc = "Closes a directory.\n @param handle Handle of the directory."] #[doc = ""] pub fn FSDIR_Close(handle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a directory's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the directory."] - #[doc = "* `priority` - Priority to set."] + #[doc = "Sets a directory's priority.\n @param handle Handle of the directory.\n @param priority Priority to set."] #[doc = ""] pub fn FSDIR_SetPriority(handle: Handle, priority: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a directory's priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Handle of the directory."] - #[doc = "* `priority` - Pointer to output the priority to."] + #[doc = "Gets a directory's priority.\n @param handle Handle of the directory.\n @param priority Pointer to output the priority to."] #[doc = ""] pub fn FSDIR_GetPriority(handle: Handle, priority: *mut u32_) -> Result; } @@ -10381,25 +7936,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the number of titles for a given media type."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to get titles from."] - #[doc = "* `count` - Pointer to write the title count to. [Direction: In, Out]"] + #[doc = "Gets the number of titles for a given media type.\n @param mediatype Media type to get titles from.\n @param[out] count Pointer to write the title count to."] #[doc = ""] pub fn AM_GetTitleCount(mediatype: FS_MediaType, count: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a list of title IDs present in a mediatype."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titlesRead` - Pointer to output the number of read titles to. [Direction: In, Out]"] - #[doc = "* `mediatype` - Media type to get titles from."] - #[doc = "* `titleCount` - Number of title IDs to get."] - #[doc = "* `titleIds` - Buffer to output the retrieved title IDs to."] + #[doc = "Gets a list of title IDs present in a mediatype.\n @param[out] titlesRead Pointer to output the number of read titles to.\n @param mediatype Media type to get titles from.\n @param titleCount Number of title IDs to get.\n @param titleIds Buffer to output the retrieved title IDs to."] #[doc = ""] pub fn AM_GetTitleList( titlesRead: *mut u32_, @@ -10410,14 +7953,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a list of details about installed titles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to get titles from."] - #[doc = "* `titleCount` - Number of titles to list."] - #[doc = "* `titleIds` - List of title IDs to retrieve details for."] - #[doc = "* `titleInfo` - Buffer to write AM_TitleEntry's to."] + #[doc = "Gets a list of details about installed titles.\n @param mediatype Media type to get titles from.\n @param titleCount Number of titles to list.\n @param titleIds List of title IDs to retrieve details for.\n @param titleInfo Buffer to write AM_TitleEntry's to."] #[doc = ""] pub fn AM_GetTitleInfo( mediatype: FS_MediaType, @@ -10428,24 +7964,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the number of tickets installed on the system."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `count` - Pointer to output the ticket count to. [Direction: In, Out]"] + #[doc = "Gets the number of tickets installed on the system.\n @param[out] count Pointer to output the ticket count to."] #[doc = ""] pub fn AM_GetTicketCount(count: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a list of tickets installed on the system."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ticketsRead` - Pointer to output the number of read tickets to. [Direction: In, Out]"] - #[doc = "* `ticketCount` - Number of tickets to read."] - #[doc = "* `skip` - Number of tickets to skip."] - #[doc = "* `ticketIds` - Buffer to output the retrieved ticket IDs to."] + #[doc = "Gets a list of tickets installed on the system.\n @param[out] ticketsRead Pointer to output the number of read tickets to.\n @param ticketCount Number of tickets to read.\n @param skip Number of tickets to skip.\n @param ticketIds Buffer to output the retrieved ticket IDs to."] #[doc = ""] pub fn AM_GetTicketList( ticketsRead: *mut u32_, @@ -10456,13 +7981,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the number of pending titles on this system."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `count` - Pointer to output the pending title count to. [Direction: In, Out]"] - #[doc = "* `mediatype` - Media type of pending titles to count."] - #[doc = "* `statusMask` - Bit mask of status values to include."] + #[doc = "Gets the number of pending titles on this system.\n @param[out] count Pointer to output the pending title count to.\n @param mediatype Media type of pending titles to count.\n @param statusMask Bit mask of status values to include."] #[doc = ""] pub fn AM_GetPendingTitleCount( count: *mut u32_, @@ -10472,15 +7991,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a list of pending titles on this system."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titlesRead` - Pointer to output the number of read pending titles to. [Direction: In, Out]"] - #[doc = "* `titleCount` - Number of pending titles to read."] - #[doc = "* `mediatype` - Media type of pending titles to list."] - #[doc = "* `statusMask` - Bit mask of status values to include."] - #[doc = "* `titleIds` - Buffer to output the retrieved pending title IDs to."] + #[doc = "Gets a list of pending titles on this system.\n @param[out] titlesRead Pointer to output the number of read pending titles to.\n @param titleCount Number of pending titles to read.\n @param mediatype Media type of pending titles to list.\n @param statusMask Bit mask of status values to include.\n @param titleIds Buffer to output the retrieved pending title IDs to."] #[doc = ""] pub fn AM_GetPendingTitleList( titlesRead: *mut u32_, @@ -10492,14 +8003,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets information about pending titles on this system."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleCount` - Number of pending titles to read."] - #[doc = "* `mediatype` - Media type of pending titles to get information on."] - #[doc = "* `titleIds` - IDs of the titles to get information about."] - #[doc = "* `titleInfo` - Buffer to output the retrieved pending title info to."] + #[doc = "Gets information about pending titles on this system.\n @param titleCount Number of pending titles to read.\n @param mediatype Media type of pending titles to get information on.\n @param titleIds IDs of the titles to get information about.\n @param titleInfo Buffer to output the retrieved pending title info to."] #[doc = ""] pub fn AM_GetPendingTitleInfo( titleCount: u32_, @@ -10510,25 +8014,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a 32-bit device-specific ID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `deviceID` - Pointer to write the device ID to."] + #[doc = "Gets a 32-bit device-specific ID.\n @param deviceID Pointer to write the device ID to."] #[doc = ""] pub fn AM_GetDeviceId(deviceID: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Exports DSiWare to the specified filepath."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleID` - TWL titleID."] - #[doc = "* `operation` - DSiWare operation type."] - #[doc = "* `workbuf` - Work buffer."] - #[doc = "* `workbuf_size` - Work buffer size, must be >=0x20000."] - #[doc = "* `filepath` - UTF-8 filepath(converted to UTF-16 internally)."] + #[doc = "Exports DSiWare to the specified filepath.\n @param titleID TWL titleID.\n @param operation DSiWare operation type.\n @param workbuf Work buffer.\n @param workbuf_size Work buffer size, must be >=0x20000.\n @param filepath UTF-8 filepath(converted to UTF-16 internally)."] #[doc = ""] pub fn AM_ExportTwlBackup( titleID: u64_, @@ -10540,14 +8032,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Imports DSiWare from the specified file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `filehandle` - FSUSER file handle."] - #[doc = "* `operation` - DSiWare operation type."] - #[doc = "* `buffer` - Work buffer."] - #[doc = "* `size` - Buffer size, must be >=0x20000."] + #[doc = "Imports DSiWare from the specified file.\n @param filehandle FSUSER file handle.\n @param operation DSiWare operation type.\n @param buffer Work buffer.\n @param size Buffer size, must be >=0x20000."] #[doc = ""] pub fn AM_ImportTwlBackup( filehandle: Handle, @@ -10558,17 +8043,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads info from the specified DSiWare export file. This can only be used with DSiWare exported with certain operation value(s)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `filehandle` - FSUSER file handle."] - #[doc = "* `outinfo` - Output info buffer."] - #[doc = "* `outinfo_size` - Output info buffer size."] - #[doc = "* `workbuf` - Work buffer."] - #[doc = "* `workbuf_size` - Work buffer size."] - #[doc = "* `banner` - Output banner buffer."] - #[doc = "* `banner_size` - Output banner buffer size."] + #[doc = "Reads info from the specified DSiWare export file. This can only be used with DSiWare exported with certain operation value(s).\n @param filehandle FSUSER file handle.\n @param outinfo Output info buffer.\n @param outinfo_size Output info buffer size.\n @param workbuf Work buffer.\n @param workbuf_size Work buffer size.\n @param banner Output banner buffer.\n @param banner_size Output banner buffer size."] #[doc = ""] pub fn AM_ReadTwlBackupInfo( filehandle: Handle, @@ -10582,75 +8057,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Retrieves information about the NAND TWL partition."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output the TWL partition info to. [Direction: In, Out]"] + #[doc = "Retrieves information about the NAND TWL partition.\n @param[out] info Pointer to output the TWL partition info to."] #[doc = ""] pub fn AM_GetTWLPartitionInfo(info: *mut AM_TWLPartitionInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes the CIA install process, returning a handle to write CIA data to."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to install the CIA to."] - #[doc = "* `ciaHandle` - Pointer to write the CIA handle to. [Direction: In, Out]"] + #[doc = "Initializes the CIA install process, returning a handle to write CIA data to.\n @param mediatype Media type to install the CIA to.\n @param[out] ciaHandle Pointer to write the CIA handle to."] #[doc = ""] pub fn AM_StartCiaInstall(mediatype: FS_MediaType, ciaHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes the CIA install process for Download Play CIAs, returning a handle to write CIA data to."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ciaHandle` - Pointer to write the CIA handle to. [Direction: In, Out]"] + #[doc = "Initializes the CIA install process for Download Play CIAs, returning a handle to write CIA data to.\n @param[out] ciaHandle Pointer to write the CIA handle to."] #[doc = ""] pub fn AM_StartDlpChildCiaInstall(ciaHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Aborts the CIA install process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ciaHandle` - CIA handle to cancel."] + #[doc = "Aborts the CIA install process.\n @param ciaHandle CIA handle to cancel."] #[doc = ""] pub fn AM_CancelCIAInstall(ciaHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Finalizes the CIA install process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ciaHandle` - CIA handle to finalize."] + #[doc = "Finalizes the CIA install process.\n @param ciaHandle CIA handle to finalize."] #[doc = ""] pub fn AM_FinishCiaInstall(ciaHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Finalizes the CIA install process without committing the title to title.db or tmp*.db."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ciaHandle` - CIA handle to finalize."] + #[doc = "Finalizes the CIA install process without committing the title to title.db or tmp*.db.\n @param ciaHandle CIA handle to finalize."] #[doc = ""] pub fn AM_FinishCiaInstallWithoutCommit(ciaHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Commits installed CIAs."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Location of the titles to finalize."] - #[doc = "* `titleCount` - Number of titles to finalize."] - #[doc = "* `temp` - Whether the titles being finalized are in the temporary database."] - #[doc = "* `titleIds` - Title IDs to finalize."] + #[doc = "Commits installed CIAs.\n @param mediaType Location of the titles to finalize.\n @param titleCount Number of titles to finalize.\n @param temp Whether the titles being finalized are in the temporary database.\n @param titleIds Title IDs to finalize."] #[doc = ""] pub fn AM_CommitImportPrograms( mediaType: FS_MediaType, @@ -10661,65 +8104,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] - #[doc = "* `titleID` - ID of the title to delete."] + #[doc = "Deletes a title.\n @param mediatype Media type to delete from.\n @param titleID ID of the title to delete."] #[doc = ""] pub fn AM_DeleteTitle(mediatype: FS_MediaType, titleID: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes a title, provided that it is not a system title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] - #[doc = "* `titleID` - ID of the title to delete."] + #[doc = "Deletes a title, provided that it is not a system title.\n @param mediatype Media type to delete from.\n @param titleID ID of the title to delete."] #[doc = ""] pub fn AM_DeleteAppTitle(mediatype: FS_MediaType, titleID: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes a ticket."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleID` - ID of the ticket to delete."] + #[doc = "Deletes a ticket.\n @param titleID ID of the ticket to delete."] #[doc = ""] pub fn AM_DeleteTicket(ticketId: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes a pending title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] - #[doc = "* `titleId` - ID of the pending title to delete."] + #[doc = "Deletes a pending title.\n @param mediatype Media type to delete from.\n @param titleId ID of the pending title to delete."] #[doc = ""] pub fn AM_DeletePendingTitle(mediatype: FS_MediaType, titleId: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes pending titles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] - #[doc = "* `flags` - Flags used to select pending titles."] + #[doc = "Deletes pending titles.\n @param mediatype Media type to delete from.\n @param flags Flags used to select pending titles."] #[doc = ""] pub fn AM_DeletePendingTitles(mediatype: FS_MediaType, flags: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes all pending titles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] + #[doc = "Deletes all pending titles.\n @param mediatype Media type to delete from."] #[doc = ""] pub fn AM_DeleteAllPendingTitles(mediatype: FS_MediaType) -> Result; } @@ -10731,23 +8146,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Installs a NATIVE_FIRM title to NAND. Accepts 0004013800000002 or 0004013820000002 (N3DS)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleID` - Title ID of the NATIVE_FIRM to install."] + #[doc = "Installs a NATIVE_FIRM title to NAND. Accepts 0004013800000002 or 0004013820000002 (N3DS).\n @param titleID Title ID of the NATIVE_FIRM to install."] #[doc = ""] pub fn AM_InstallFirm(titleID: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the product code of a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type of the title."] - #[doc = "* `titleID` - ID of the title."] - #[doc = "* `productCode` - Pointer to output the product code to. (length = 16) [Direction: In, Out]"] + #[doc = "Gets the product code of a title.\n @param mediatype Media type of the title.\n @param titleID ID of the title.\n @param[out] productCode Pointer to output the product code to. (length = 16)"] #[doc = ""] pub fn AM_GetTitleProductCode( mediatype: FS_MediaType, @@ -10757,13 +8162,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the ext data ID of a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `extDataId` - Pointer to output the ext data ID to. [Direction: In, Out]"] - #[doc = "* `mediatype` - Media type of the title."] - #[doc = "* `titleID` - ID of the title."] + #[doc = "Gets the ext data ID of a title.\n @param[out] extDataId Pointer to output the ext data ID to.\n @param mediatype Media type of the title.\n @param titleID ID of the title."] #[doc = ""] pub fn AM_GetTitleExtDataId( extDataId: *mut u64_, @@ -10773,13 +8172,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an AM_TitleEntry instance for a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type that this CIA would be installed to."] - #[doc = "* `titleEntry` - Pointer to write the AM_TitleEntry instance to. [Direction: In, Out]"] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets an AM_TitleEntry instance for a CIA file.\n @param mediatype Media type that this CIA would be installed to.\n @param[out] titleEntry Pointer to write the AM_TitleEntry instance to.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaFileInfo( mediatype: FS_MediaType, @@ -10789,57 +8182,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the SMDH icon data of a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `icon` - Buffer to store the icon data in. Must be of size 0x36C0 bytes."] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the SMDH icon data of a CIA file.\n @param icon Buffer to store the icon data in. Must be of size 0x36C0 bytes.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaIcon(icon: *mut ::libc::c_void, fileHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the title ID dependency list of a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dependencies` - Buffer to store dependency title IDs in. Must be of size 0x300 bytes."] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the title ID dependency list of a CIA file.\n @param dependencies Buffer to store dependency title IDs in. Must be of size 0x300 bytes.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaDependencies(dependencies: *mut u64_, fileHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the meta section offset of a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `metaOffset` - Pointer to output the meta section offset to. [Direction: In, Out]"] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the meta section offset of a CIA file.\n @param[out] metaOffset Pointer to output the meta section offset to.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaMetaOffset(metaOffset: *mut u64_, fileHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the core version of a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coreVersion` - Pointer to output the core version to. [Direction: In, Out]"] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the core version of a CIA file.\n @param[out] coreVersion Pointer to output the core version to.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaCoreVersion(coreVersion: *mut u32_, fileHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the free space, in bytes, required to install a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `requiredSpace` - Pointer to output the required free space to. [Direction: In, Out]"] - #[doc = "* `mediaType` - Media type to check free space needed to install to."] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the free space, in bytes, required to install a CIA file.\n @param[out] requiredSpace Pointer to output the required free space to.\n @param mediaType Media type to check free space needed to install to.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaRequiredSpace( requiredSpace: *mut u64_, @@ -10849,13 +8216,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the full meta section of a CIA file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `meta` - Buffer to store the meta section in."] - #[doc = "* `size` - Size of the buffer. Must be greater than or equal to the actual section data's size."] - #[doc = "* `fileHandle` - Handle of the CIA file."] + #[doc = "Gets the full meta section of a CIA file.\n @param meta Buffer to store the meta section in.\n @param size Size of the buffer. Must be greater than or equal to the actual section data's size.\n @param fileHandle Handle of the CIA file."] #[doc = ""] pub fn AM_GetCiaMetaSection( meta: *mut ::libc::c_void, @@ -10865,63 +8226,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes the external (SD) title database."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `overwrite` - Overwrites the database if it already exists."] + #[doc = "Initializes the external (SD) title database.\n @param overwrite Overwrites the database if it already exists."] #[doc = ""] pub fn AM_InitializeExternalTitleDatabase(overwrite: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Queries whether the external title database is available."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `available` - Pointer to output the availability status to. [Direction: In, Out]"] + #[doc = "Queries whether the external title database is available.\n @param[out] available Pointer to output the availability status to."] #[doc = ""] pub fn AM_QueryAvailableExternalTitleDatabase(available: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Begins installing a ticket."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ticketHandle` - Pointer to output a handle to write ticket data to. [Direction: In, Out]"] + #[doc = "Begins installing a ticket.\n @param[out] ticketHandle Pointer to output a handle to write ticket data to."] #[doc = ""] pub fn AM_InstallTicketBegin(ticketHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Aborts installing a ticket."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ticketHandle` - Handle of the installation to abort."] + #[doc = "Aborts installing a ticket.\n @param ticketHandle Handle of the installation to abort."] #[doc = ""] pub fn AM_InstallTicketAbort(ticketHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Finishes installing a ticket."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ticketHandle` - Handle of the installation to finalize."] + #[doc = "Finishes installing a ticket.\n @param ticketHandle Handle of the installation to finalize."] #[doc = ""] pub fn AM_InstallTicketFinish(ticketHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Begins installing a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Destination to install to."] - #[doc = "* `titleId` - ID of the title to install."] - #[doc = "* `unk` - Unknown. (usually false)"] + #[doc = "Begins installing a title.\n @param mediaType Destination to install to.\n @param titleId ID of the title to install.\n @param unk Unknown. (usually false)"] #[doc = ""] pub fn AM_InstallTitleBegin(mediaType: FS_MediaType, titleId: u64_, unk: bool) -> Result; } @@ -10933,12 +8268,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Resumes installing a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Destination to install to."] - #[doc = "* `titleId` - ID of the title to install."] + #[doc = "Resumes installing a title.\n @param mediaType Destination to install to.\n @param titleId ID of the title to install."] #[doc = ""] pub fn AM_InstallTitleResume(mediaType: FS_MediaType, titleId: u64_) -> Result; } @@ -10956,14 +8286,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Commits installed titles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Location of the titles to finalize."] - #[doc = "* `titleCount` - Number of titles to finalize."] - #[doc = "* `temp` - Whether the titles being finalized are in the temporary database."] - #[doc = "* `titleIds` - Title IDs to finalize."] + #[doc = "Commits installed titles.\n @param mediaType Location of the titles to finalize.\n @param titleCount Number of titles to finalize.\n @param temp Whether the titles being finalized are in the temporary database.\n @param titleIds Title IDs to finalize."] #[doc = ""] pub fn AM_CommitImportTitles( mediaType: FS_MediaType, @@ -10974,76 +8297,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Begins installing a TMD."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tmdHandle` - Pointer to output a handle to write TMD data to. [Direction: In, Out]"] + #[doc = "Begins installing a TMD.\n @param[out] tmdHandle Pointer to output a handle to write TMD data to."] #[doc = ""] pub fn AM_InstallTmdBegin(tmdHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Aborts installing a TMD."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tmdHandle` - Handle of the installation to abort."] + #[doc = "Aborts installing a TMD.\n @param tmdHandle Handle of the installation to abort."] #[doc = ""] pub fn AM_InstallTmdAbort(tmdHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Finishes installing a TMD."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tmdHandle` - Handle of the installation to finalize."] - #[doc = "* `unk` - Unknown. (usually true)"] + #[doc = "Finishes installing a TMD.\n @param tmdHandle Handle of the installation to finalize.\n @param unk Unknown. (usually true)"] #[doc = ""] pub fn AM_InstallTmdFinish(tmdHandle: Handle, unk: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares to import title contents."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentCount` - Number of contents to be imported."] - #[doc = "* `contentIndices` - Indices of the contents to be imported."] + #[doc = "Prepares to import title contents.\n @param contentCount Number of contents to be imported.\n @param contentIndices Indices of the contents to be imported."] #[doc = ""] pub fn AM_CreateImportContentContexts(contentCount: u32_, contentIndices: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Begins installing title content."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentHandle` - Pointer to output a handle to write content data to. [Direction: In, Out]"] - #[doc = "* `index` - Index of the content to install."] + #[doc = "Begins installing title content.\n @param[out] contentHandle Pointer to output a handle to write content data to.\n @param index Index of the content to install."] #[doc = ""] pub fn AM_InstallContentBegin(contentHandle: *mut Handle, index: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Stops installing title content, generally to be resumed later."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentHandle` - Handle of the installation to abort."] + #[doc = "Stops installing title content, generally to be resumed later.\n @param contentHandle Handle of the installation to abort."] #[doc = ""] pub fn AM_InstallContentStop(contentHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Resumes installing title content."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentHandle` - Pointer to output a handle to write content data to. [Direction: In, Out]"] - #[doc = "* `resumeOffset` - Pointer to write the offset to resume content installation at to. [Direction: In, Out]"] - #[doc = "* `index` - Index of the content to install."] + #[doc = "Resumes installing title content.\n @param[out] contentHandle Pointer to output a handle to write content data to.\n @param[out] resumeOffset Pointer to write the offset to resume content installation at to.\n @param index Index of the content to install."] #[doc = ""] pub fn AM_InstallContentResume( contentHandle: *mut Handle, @@ -11053,38 +8343,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Cancels installing title content."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentHandle` - Handle of the installation to finalize."] + #[doc = "Cancels installing title content.\n @param contentHandle Handle of the installation to finalize."] #[doc = ""] pub fn AM_InstallContentCancel(contentHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Finishes installing title content."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentHandle` - Handle of the installation to finalize."] + #[doc = "Finishes installing title content.\n @param contentHandle Handle of the installation to finalize."] #[doc = ""] pub fn AM_InstallContentFinish(contentHandle: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Imports up to four certificates into the ticket certificate chain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cert1Size` - Size of the first certificate."] - #[doc = "* `cert1` - Data of the first certificate."] - #[doc = "* `cert2Size` - Size of the second certificate."] - #[doc = "* `cert2` - Data of the second certificate."] - #[doc = "* `cert3Size` - Size of the third certificate."] - #[doc = "* `cert3` - Data of the third certificate."] - #[doc = "* `cert4Size` - Size of the fourth certificate."] - #[doc = "* `cert4` - Data of the fourth certificate."] + #[doc = "Imports up to four certificates into the ticket certificate chain.\n @param cert1Size Size of the first certificate.\n @param cert1 Data of the first certificate.\n @param cert2Size Size of the second certificate.\n @param cert2 Data of the second certificate.\n @param cert3Size Size of the third certificate.\n @param cert3 Data of the third certificate.\n @param cert4Size Size of the fourth certificate.\n @param cert4 Data of the fourth certificate."] #[doc = ""] pub fn AM_ImportCertificates( cert1Size: u32_, @@ -11099,25 +8370,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Imports a certificate into the ticket certificate chain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `certSize` - Size of the certificate."] - #[doc = "* `cert` - Data of the certificate."] + #[doc = "Imports a certificate into the ticket certificate chain.\n @param certSize Size of the certificate.\n @param cert Data of the certificate."] #[doc = ""] pub fn AM_ImportCertificate(certSize: u32_, cert: *mut ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Commits installed titles, and updates FIRM if necessary."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Location of the titles to finalize."] - #[doc = "* `titleCount` - Number of titles to finalize."] - #[doc = "* `temp` - Whether the titles being finalized are in the temporary database."] - #[doc = "* `titleIds` - Title IDs to finalize."] + #[doc = "Commits installed titles, and updates FIRM if necessary.\n @param mediaType Location of the titles to finalize.\n @param titleCount Number of titles to finalize.\n @param temp Whether the titles being finalized are in the temporary database.\n @param titleIds Title IDs to finalize."] #[doc = ""] pub fn AM_CommitImportTitlesAndUpdateFirmwareAuto( mediaType: FS_MediaType, @@ -11140,11 +8399,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes all expired titles."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Media type to delete from."] + #[doc = "Deletes all expired titles.\n @param mediatype Media type to delete from."] #[doc = ""] pub fn AM_DeleteAllExpiredTitles(mediatype: FS_MediaType) -> Result; } @@ -11156,13 +8411,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the number of content index installed under the specified DLC title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `count` - Pointer to output the number of content indices to. [Direction: In, Out]"] - #[doc = "* `mediatype` - Media type of the title."] - #[doc = "* `titleID` - Title ID to retrieve the count for (high-id is 0x0004008C)."] + #[doc = "Gets the number of content index installed under the specified DLC title.\n @param[out] count Pointer to output the number of content indices to.\n @param mediatype Media type of the title.\n @param titleID Title ID to retrieve the count for (high-id is 0x0004008C)."] #[doc = ""] pub fn AMAPP_GetDLCContentInfoCount( count: *mut u32_, @@ -11172,16 +8421,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets content infos installed under the specified DLC title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `contentInfoRead` - Pointer to output the number of content infos read to. [Direction: In, Out]"] - #[doc = "* `mediatype` - Media type of the title."] - #[doc = "* `titleID` - Title ID to retrieve the content infos for (high-id is 0x0004008C)."] - #[doc = "* `contentInfoCount` - Number of content infos to retrieve."] - #[doc = "* `offset` - Offset from the first content index the count starts at."] - #[doc = "* `contentInfos` - Pointer to output the content infos read to. [Direction: In, Out]"] + #[doc = "Gets content infos installed under the specified DLC title.\n @param[out] contentInfoRead Pointer to output the number of content infos read to.\n @param mediatype Media type of the title.\n @param titleID Title ID to retrieve the content infos for (high-id is 0x0004008C).\n @param contentInfoCount Number of content infos to retrieve.\n @param offset Offset from the first content index the count starts at.\n @param[out] contentInfos Pointer to output the content infos read to."] #[doc = ""] pub fn AMAPP_ListDLCContentInfos( contentInfoRead: *mut u32_, @@ -11194,11 +8434,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes AMPXI."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `servhandle` - Optional service session handle to use for AMPXI, if zero srvGetServiceHandle() will be used."] + #[doc = "Initializes AMPXI.\n @param servhandle Optional service session handle to use for AMPXI, if zero srvGetServiceHandle() will be used."] #[doc = ""] pub fn ampxiInit(servhandle: Handle) -> Result; } @@ -11209,16 +8445,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Writes a TWL save-file to NAND. "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleid` - ID of the TWL title."] - #[doc = "* `buffer` - Savedata buffer ptr."] - #[doc = "* `size` - Size of the savedata buffer."] - #[doc = "* `image_filepos` - Filepos to use for writing the data to the NAND savedata file."] - #[doc = "* `section_type` - "] - #[doc = "* `operation` - "] + #[doc = "Writes a TWL save-file to NAND. @param titleid ID of the TWL title.\n @param buffer Savedata buffer ptr.\n @param size Size of the savedata buffer.\n @param image_filepos Filepos to use for writing the data to the NAND savedata file.\n @param section_type @param operation "] #[doc = ""] pub fn AMPXI_WriteTWLSavedata( titleid: u64_, @@ -11231,15 +8458,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Finalizes title installation. "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Mediatype of the titles to finalize."] - #[doc = "* `db` - Which title database to use."] - #[doc = "* `size` - Size of the savedata buffer."] - #[doc = "* `titlecount` - Total titles."] - #[doc = "* `tidlist` - List of titleIDs."] + #[doc = "Finalizes title installation. @param mediaType Mediatype of the titles to finalize.\n @param db Which title database to use.\n @param size Size of the savedata buffer.\n @param titlecount Total titles.\n @param tidlist List of titleIDs."] #[doc = ""] pub fn AMPXI_InstallTitlesFinish( mediaType: FS_MediaType, @@ -11329,9 +8548,7 @@ pub const APPID_EXTRAPAD: NS_APPID = 1032; #[doc = ""] pub const APPID_MEMOLIB: NS_APPID = 1033; -#[doc = "NS Application IDs."] -#[doc = ""] -#[doc = "Retrieved from "] +#[doc = "NS Application IDs.\n\n Retrieved from "] #[doc = ""] pub type NS_APPID = ::libc::c_uint; @@ -11585,7 +8802,7 @@ pub type aptMessageCb = ::core::option::Option< user: *mut ::libc::c_void, sender: NS_APPID, msg: *mut ::libc::c_void, - msgsize: size_t, + msgsize: usize, ), >; extern "C" { @@ -11601,11 +8818,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sends an APT command through IPC, taking care of locking, opening and closing an APT session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `aptcmdbuf` - Pointer to command buffer (should have capacity for at least 16 words)."] + #[doc = "Sends an APT command through IPC, taking care of locking, opening and closing an APT session.\n @param aptcmdbuf Pointer to command buffer (should have capacity for at least 16 words)."] #[doc = ""] pub fn aptSendCommand(aptcmdbuf: *mut u32_) -> Result; } @@ -11660,58 +8873,32 @@ extern "C" { pub fn aptJumpToHomeMenu(); } extern "C" { - #[doc = "Main function which handles sleep mode and HOME/power buttons - call this at the beginning of every frame."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* true if the application should keep running, false otherwise (see [`aptShouldClose)`]"] + #[doc = "Main function which handles sleep mode and HOME/power buttons - call this at the beginning of every frame.\n @return true if the application should keep running, false otherwise (see [`aptShouldClose)`]"] #[doc = ""] pub fn aptMainLoop() -> bool; } extern "C" { - #[doc = "Sets up an APT status hook."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cookie` - Hook cookie to use."] - #[doc = "* `callback` - Function to call when APT's status changes."] - #[doc = "* `param` - User-defined parameter to pass to the callback."] + #[doc = "Sets up an APT status hook.\n @param cookie Hook cookie to use.\n @param callback Function to call when APT's status changes.\n @param param User-defined parameter to pass to the callback."] #[doc = ""] pub fn aptHook(cookie: *mut aptHookCookie, callback: aptHookFn, param: *mut ::libc::c_void); } extern "C" { - #[doc = "Removes an APT status hook."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cookie` - Hook cookie to remove."] + #[doc = "Removes an APT status hook.\n @param cookie Hook cookie to remove."] #[doc = ""] pub fn aptUnhook(cookie: *mut aptHookCookie); } extern "C" { - #[doc = "Sets the function to be called when an APT message from another applet is received."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `callback` - Callback function."] - #[doc = "* `user` - User-defined data to be passed to the callback."] + #[doc = "Sets the function to be called when an APT message from another applet is received.\n @param callback Callback function.\n @param user User-defined data to be passed to the callback."] #[doc = ""] pub fn aptSetMessageCallback(callback: aptMessageCb, user: *mut ::libc::c_void); } extern "C" { - #[doc = "Launches a library applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appId` - ID of the applet to launch."] - #[doc = "* `buf` - Input/output buffer that contains launch parameters on entry and result data on exit."] - #[doc = "* `bufsize` - Size of the buffer."] - #[doc = "* `handle` - Handle to pass to the library applet."] + #[doc = "Launches a library applet.\n @param appId ID of the applet to launch.\n @param buf Input/output buffer that contains launch parameters on entry and result data on exit.\n @param bufsize Size of the buffer.\n @param handle Handle to pass to the library applet."] #[doc = ""] pub fn aptLaunchLibraryApplet( appId: NS_APPID, buf: *mut ::libc::c_void, - bufsize: size_t, + bufsize: usize, handle: Handle, ); } @@ -11721,12 +8908,7 @@ extern "C" { pub fn aptClearChainloader(); } extern "C" { - #[doc = "Configures the chainloader to launch a specific application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programID` - ID of the program to chainload to."] - #[doc = "* `mediatype` - Media type of the program to chainload to."] + #[doc = "Configures the chainloader to launch a specific application.\n @param programID ID of the program to chainload to.\n @param mediatype Media type of the program to chainload to."] #[doc = ""] pub fn aptSetChainloader(programID: u64_, mediatype: u8_); } @@ -11737,25 +8919,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an APT lock handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to use."] - #[doc = "* `lockHandle` - Pointer to output the lock handle to."] + #[doc = "Gets an APT lock handle.\n @param flags Flags to use.\n @param lockHandle Pointer to output the lock handle to."] #[doc = ""] pub fn APT_GetLockHandle(flags: u16_, lockHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes an application's registration with APT."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appId` - ID of the application."] - #[doc = "* `attr` - Attributes of the application."] - #[doc = "* `signalEvent` - Pointer to output the signal event handle to."] - #[doc = "* `resumeEvent` - Pointer to output the resume event handle to."] + #[doc = "Initializes an application's registration with APT.\n @param appId ID of the application.\n @param attr Attributes of the application.\n @param signalEvent Pointer to output the signal event handle to.\n @param resumeEvent Pointer to output the resume event handle to."] #[doc = ""] pub fn APT_Initialize( appId: NS_APPID, @@ -11766,11 +8936,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Terminates an application's registration with APT."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] + #[doc = "Terminates an application's registration with APT.\n @param appID ID of the application."] #[doc = ""] pub fn APT_Finalize(appId: NS_APPID) -> Result; } @@ -11782,25 +8948,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Enables APT."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `attr` - Attributes of the application."] + #[doc = "Enables APT.\n @param attr Attributes of the application."] #[doc = ""] pub fn APT_Enable(attr: APT_AppletAttr) -> Result; } extern "C" { #[must_use] - #[doc = "Gets applet management info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inpos` - Requested applet position."] - #[doc = "* `outpos` - Pointer to output the position of the current applet to."] - #[doc = "* `req_appid` - Pointer to output the AppID of the applet at the requested position to."] - #[doc = "* `menu_appid` - Pointer to output the HOME menu AppID to."] - #[doc = "* `active_appid` - Pointer to output the AppID of the currently active applet to."] + #[doc = "Gets applet management info.\n @param inpos Requested applet position.\n @param outpos Pointer to output the position of the current applet to.\n @param req_appid Pointer to output the AppID of the applet at the requested position to.\n @param menu_appid Pointer to output the HOME menu AppID to.\n @param active_appid Pointer to output the AppID of the currently active applet to."] #[doc = ""] pub fn APT_GetAppletManInfo( inpos: APT_AppletPos, @@ -11812,16 +8966,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an applet's information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the applet."] - #[doc = "* `pProgramID` - Pointer to output the program ID to."] - #[doc = "* `pMediaType` - Pointer to output the media type to."] - #[doc = "* `pRegistered` - Pointer to output the registration status to."] - #[doc = "* `pLoadState` - Pointer to output the load state to."] - #[doc = "* `pAttributes` - Pointer to output the applet atrributes to."] + #[doc = "Gets an applet's information.\n @param appID AppID of the applet.\n @param pProgramID Pointer to output the program ID to.\n @param pMediaType Pointer to output the media type to.\n @param pRegistered Pointer to output the registration status to.\n @param pLoadState Pointer to output the load state to.\n @param pAttributes Pointer to output the applet atrributes to."] #[doc = ""] pub fn APT_GetAppletInfo( appID: NS_APPID, @@ -11834,31 +8979,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an applet's program information."] - #[doc = ""] - #[doc = "Flags:"] - #[doc = "- 0x01: Use AM_ListTitles with NAND media type."] - #[doc = "- 0x02: Use AM_ListTitles with SDMC media type."] - #[doc = "- 0x04: Use AM_ListTitles with GAMECARD media type."] - #[doc = "- 0x10: Input ID is an app ID. Must be set if 0x20 is not."] - #[doc = "- 0x20: Input ID is a program ID. Must be set if 0x10 is not."] - #[doc = "- 0x100: Sets program ID high to 0x00040000, else it is 0x00040010. Only used when 0x20 is set."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the applet."] - #[doc = "* `flags` - Flags to use when retreiving the information."] - #[doc = "* `titleversion` - Pointer to output the applet's title version to."] + #[doc = "Gets an applet's program information.\n @param id ID of the applet.\n @param flags Flags to use when retreiving the information.\n @param titleversion Pointer to output the applet's title version to.\n\n Flags:\n - 0x01: Use AM_ListTitles with NAND media type.\n - 0x02: Use AM_ListTitles with SDMC media type.\n - 0x04: Use AM_ListTitles with GAMECARD media type.\n - 0x10: Input ID is an app ID. Must be set if 0x20 is not.\n - 0x20: Input ID is a program ID. Must be set if 0x10 is not.\n - 0x100: Sets program ID high to 0x00040000, else it is 0x00040010. Only used when 0x20 is set."] #[doc = ""] pub fn APT_GetAppletProgramInfo(id: u32_, flags: u32_, titleversion: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current application's program ID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pProgramID` - Pointer to output the program ID to."] + #[doc = "Gets the current application's program ID.\n @param pProgramID Pointer to output the program ID to."] #[doc = ""] pub fn APT_GetProgramID(pProgramID: *mut u64_) -> Result; } @@ -11870,108 +8997,64 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Jumps to the home menu."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `param` - Parameters to jump with."] - #[doc = "* `Size` - of the parameter buffer."] - #[doc = "* `handle` - Handle to pass."] + #[doc = "Jumps to the home menu.\n @param param Parameters to jump with.\n @param Size of the parameter buffer.\n @param handle Handle to pass."] #[doc = ""] pub fn APT_JumpToHomeMenu( param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, handle: Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares to jump to an application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `exiting` - Specifies whether the applet is exiting."] + #[doc = "Prepares to jump to an application.\n @param exiting Specifies whether the applet is exiting."] #[doc = ""] pub fn APT_PrepareToJumpToApplication(exiting: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Jumps to an application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `param` - Parameters to jump with."] - #[doc = "* `Size` - of the parameter buffer."] - #[doc = "* `handle` - Handle to pass."] + #[doc = "Jumps to an application.\n @param param Parameters to jump with.\n @param Size of the parameter buffer.\n @param handle Handle to pass."] #[doc = ""] pub fn APT_JumpToApplication( param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, handle: Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether an application is registered."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] - #[doc = "* `out` - Pointer to output the registration state to."] + #[doc = "Gets whether an application is registered.\n @param appID ID of the application.\n @param out Pointer to output the registration state to."] #[doc = ""] pub fn APT_IsRegistered(appID: NS_APPID, out: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Inquires as to whether a signal has been received."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] - #[doc = "* `signalType` - Pointer to output the signal type to."] + #[doc = "Inquires as to whether a signal has been received.\n @param appID ID of the application.\n @param signalType Pointer to output the signal type to."] #[doc = ""] pub fn APT_InquireNotification(appID: u32_, signalType: *mut APT_Signal) -> Result; } extern "C" { #[must_use] - #[doc = "Requests to enter sleep mode, and later sets wake events if allowed to."] - #[doc = ""] - #[doc = "and \"shell opened\", \"shell closed\" and \"HOME button pressed\" for the MCU interrupts part."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `wakeEvents` - The wake events. Limited to \"shell\" (bit 1) for the PDN wake events part"] + #[doc = "Requests to enter sleep mode, and later sets wake events if allowed to.\n @param wakeEvents The wake events. Limited to \"shell\" (bit 1) for the PDN wake events part\n and \"shell opened\", \"shell closed\" and \"HOME button pressed\" for the MCU interrupts part."] #[doc = ""] pub fn APT_SleepSystem(wakeEvents: *const PtmWakeEvents) -> Result; } extern "C" { #[must_use] - #[doc = "Notifies an application to wait."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] + #[doc = "Notifies an application to wait.\n @param appID ID of the application."] #[doc = ""] pub fn APT_NotifyToWait(appID: NS_APPID) -> Result; } extern "C" { #[must_use] - #[doc = "Calls an applet utility function."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - Utility function to call."] - #[doc = "* `out` - Pointer to write output data to."] - #[doc = "* `outSize` - Size of the output buffer."] - #[doc = "* `in` - Pointer to the input data."] - #[doc = "* `inSize` - Size of the input buffer."] + #[doc = "Calls an applet utility function.\n @param id Utility function to call.\n @param out Pointer to write output data to.\n @param outSize Size of the output buffer.\n @param in Pointer to the input data.\n @param inSize Size of the input buffer."] #[doc = ""] pub fn APT_AppletUtility( id: ::libc::c_int, out: *mut ::libc::c_void, - outSize: size_t, + outSize: usize, in_: *const ::libc::c_void, - inSize: size_t, + inSize: usize, ) -> Result; } extern "C" { @@ -11982,96 +9065,53 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Locks a transition (?)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `transition` - Transition ID."] - #[doc = "* `flag` - Flag (?)"] + #[doc = "Locks a transition (?).\n @param transition Transition ID.\n @param flag Flag (?)"] #[doc = ""] pub fn APT_LockTransition(transition: u32_, flag: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Tries to lock a transition (?)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `transition` - Transition ID."] - #[doc = "* `succeeded` - Pointer to output whether the lock was successfully applied."] + #[doc = "Tries to lock a transition (?).\n @param transition Transition ID.\n @param succeeded Pointer to output whether the lock was successfully applied."] #[doc = ""] pub fn APT_TryLockTransition(transition: u32_, succeeded: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Unlocks a transition (?)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `transition` - Transition ID."] + #[doc = "Unlocks a transition (?).\n @param transition Transition ID."] #[doc = ""] pub fn APT_UnlockTransition(transition: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Glances at a receieved parameter without removing it from the queue."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the application."] - #[doc = "* `buffer` - Buffer to receive to."] - #[doc = "* `bufferSize` - Size of the buffer."] - #[doc = "* `sender` - Pointer to output the sender's AppID to."] - #[doc = "* `command` - Pointer to output the command ID to."] - #[doc = "* `actualSize` - Pointer to output the actual received data size to."] - #[doc = "* `parameter` - Pointer to output the parameter handle to."] + #[doc = "Glances at a receieved parameter without removing it from the queue.\n @param appID AppID of the application.\n @param buffer Buffer to receive to.\n @param bufferSize Size of the buffer.\n @param sender Pointer to output the sender's AppID to.\n @param command Pointer to output the command ID to.\n @param actualSize Pointer to output the actual received data size to.\n @param parameter Pointer to output the parameter handle to."] #[doc = ""] pub fn APT_GlanceParameter( appID: NS_APPID, buffer: *mut ::libc::c_void, - bufferSize: size_t, + bufferSize: usize, sender: *mut NS_APPID, command: *mut APT_Command, - actualSize: *mut size_t, + actualSize: *mut usize, parameter: *mut Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Receives a parameter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the application."] - #[doc = "* `buffer` - Buffer to receive to."] - #[doc = "* `bufferSize` - Size of the buffer."] - #[doc = "* `sender` - Pointer to output the sender's AppID to."] - #[doc = "* `command` - Pointer to output the command ID to."] - #[doc = "* `actualSize` - Pointer to output the actual received data size to."] - #[doc = "* `parameter` - Pointer to output the parameter handle to."] + #[doc = "Receives a parameter.\n @param appID AppID of the application.\n @param buffer Buffer to receive to.\n @param bufferSize Size of the buffer.\n @param sender Pointer to output the sender's AppID to.\n @param command Pointer to output the command ID to.\n @param actualSize Pointer to output the actual received data size to.\n @param parameter Pointer to output the parameter handle to."] #[doc = ""] pub fn APT_ReceiveParameter( appID: NS_APPID, buffer: *mut ::libc::c_void, - bufferSize: size_t, + bufferSize: usize, sender: *mut NS_APPID, command: *mut APT_Command, - actualSize: *mut size_t, + actualSize: *mut usize, parameter: *mut Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Sends a parameter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `source` - AppID of the source application."] - #[doc = "* `dest` - AppID of the destination application."] - #[doc = "* `command` - Command to send."] - #[doc = "* `buffer` - Buffer to send."] - #[doc = "* `bufferSize` - Size of the buffer."] - #[doc = "* `parameter` - Parameter handle to pass."] + #[doc = "Sends a parameter.\n @param source AppID of the source application.\n @param dest AppID of the destination application.\n @param command Command to send.\n @param buffer Buffer to send.\n @param bufferSize Size of the buffer.\n @param parameter Parameter handle to pass."] #[doc = ""] pub fn APT_SendParameter( source: NS_APPID, @@ -12084,208 +9124,125 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Cancels a parameter which matches the specified source and dest AppIDs."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `source` - AppID of the source application (use APPID_NONE to disable the check)."] - #[doc = "* `dest` - AppID of the destination application (use APPID_NONE to disable the check)."] - #[doc = "* `success` - Pointer to output true if a parameter was cancelled, or false otherwise."] + #[doc = "Cancels a parameter which matches the specified source and dest AppIDs.\n @param source AppID of the source application (use APPID_NONE to disable the check).\n @param dest AppID of the destination application (use APPID_NONE to disable the check).\n @param success Pointer to output true if a parameter was cancelled, or false otherwise."] #[doc = ""] pub fn APT_CancelParameter(source: NS_APPID, dest: NS_APPID, success: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sends capture buffer information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `captureBuf` - Capture buffer information to send."] + #[doc = "Sends capture buffer information.\n @param captureBuf Capture buffer information to send."] #[doc = ""] pub fn APT_SendCaptureBufferInfo(captureBuf: *const aptCaptureBufInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Replies to a sleep query."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] - #[doc = "* `reply` - Query reply value."] + #[doc = "Replies to a sleep query.\n @param appID ID of the application.\n @param reply Query reply value."] #[doc = ""] pub fn APT_ReplySleepQuery(appID: NS_APPID, reply: APT_QueryReply) -> Result; } extern "C" { #[must_use] - #[doc = "Replies that a sleep notification has been completed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - ID of the application."] + #[doc = "Replies that a sleep notification has been completed.\n @param appID ID of the application."] #[doc = ""] pub fn APT_ReplySleepNotificationComplete(appID: NS_APPID) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares to close the application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cancelPreload` - Whether applet preloads should be cancelled."] + #[doc = "Prepares to close the application.\n @param cancelPreload Whether applet preloads should be cancelled."] #[doc = ""] pub fn APT_PrepareToCloseApplication(cancelPreload: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Closes the application."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `param` - Parameters to close with."] - #[doc = "* `paramSize` - Size of param."] - #[doc = "* `handle` - Handle to pass."] + #[doc = "Closes the application.\n @param param Parameters to close with.\n @param paramSize Size of param.\n @param handle Handle to pass."] #[doc = ""] pub fn APT_CloseApplication( param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, handle: Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the application's CPU time limit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `percent` - CPU time limit percentage to set."] + #[doc = "Sets the application's CPU time limit.\n @param percent CPU time limit percentage to set."] #[doc = ""] pub fn APT_SetAppCpuTimeLimit(percent: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the application's CPU time limit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `percent` - Pointer to output the CPU time limit percentage to."] + #[doc = "Gets the application's CPU time limit.\n @param percent Pointer to output the CPU time limit percentage to."] #[doc = ""] pub fn APT_GetAppCpuTimeLimit(percent: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks whether the system is a New 3DS."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the New 3DS flag to."] + #[doc = "Checks whether the system is a New 3DS.\n @param out Pointer to write the New 3DS flag to."] #[doc = ""] pub fn APT_CheckNew3DS(out: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares for an applicaton jump."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to use."] - #[doc = "* `programID` - ID of the program to jump to."] - #[doc = "* `mediatype` - Media type of the program to jump to."] + #[doc = "Prepares for an applicaton jump.\n @param flags Flags to use.\n @param programID ID of the program to jump to.\n @param mediatype Media type of the program to jump to."] #[doc = ""] pub fn APT_PrepareToDoApplicationJump(flags: u8_, programID: u64_, mediatype: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Performs an application jump."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `param` - Parameter buffer."] - #[doc = "* `paramSize` - Size of parameter buffer."] - #[doc = "* `hmac` - HMAC buffer (should be 0x20 bytes long)."] + #[doc = "Performs an application jump.\n @param param Parameter buffer.\n @param paramSize Size of parameter buffer.\n @param hmac HMAC buffer (should be 0x20 bytes long)."] #[doc = ""] pub fn APT_DoApplicationJump( param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, hmac: *const ::libc::c_void, ) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares to start a library applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the applet to start."] + #[doc = "Prepares to start a library applet.\n @param appID AppID of the applet to start."] #[doc = ""] pub fn APT_PrepareToStartLibraryApplet(appID: NS_APPID) -> Result; } extern "C" { #[must_use] - #[doc = "Starts a library applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the applet to launch."] - #[doc = "* `param` - Buffer containing applet parameters."] - #[doc = "* `paramsize` - Size of the buffer."] - #[doc = "* `handle` - Handle to pass to the applet."] + #[doc = "Starts a library applet.\n @param appID AppID of the applet to launch.\n @param param Buffer containing applet parameters.\n @param paramsize Size of the buffer.\n @param handle Handle to pass to the applet."] #[doc = ""] pub fn APT_StartLibraryApplet( appID: NS_APPID, param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, handle: Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "Prepares to start a system applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the applet to start."] + #[doc = "Prepares to start a system applet.\n @param appID AppID of the applet to start."] #[doc = ""] pub fn APT_PrepareToStartSystemApplet(appID: NS_APPID) -> Result; } extern "C" { #[must_use] - #[doc = "Starts a system applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appID` - AppID of the applet to launch."] - #[doc = "* `param` - Buffer containing applet parameters."] - #[doc = "* `paramSize` - Size of the parameter buffer."] - #[doc = "* `handle` - Handle to pass to the applet."] + #[doc = "Starts a system applet.\n @param appID AppID of the applet to launch.\n @param param Buffer containing applet parameters.\n @param paramSize Size of the parameter buffer.\n @param handle Handle to pass to the applet."] #[doc = ""] pub fn APT_StartSystemApplet( appID: NS_APPID, param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, handle: Handle, ) -> Result; } extern "C" { #[must_use] - #[doc = "mapAddr Pointer to write the mapping address of the system font memory block to."] + #[doc = "Retrieves the shared system font.\n @brief fontHandle Pointer to write the handle of the system font memory block to.\n @brief mapAddr Pointer to write the mapping address of the system font memory block to."] #[doc = ""] pub fn APT_GetSharedFont(fontHandle: *mut Handle, mapAddr: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Receives the deliver (launch) argument"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `param` - Parameter buffer."] - #[doc = "* `paramSize` - Size of parameter buffer."] - #[doc = "* `hmac` - HMAC buffer (should be 0x20 bytes long)."] - #[doc = "* `sender` - Pointer to output the sender's AppID to."] - #[doc = "* `received` - Pointer to output whether an argument was received to."] + #[doc = "Receives the deliver (launch) argument\n @param param Parameter buffer.\n @param paramSize Size of parameter buffer.\n @param hmac HMAC buffer (should be 0x20 bytes long).\n @param sender Pointer to output the sender's AppID to.\n @param received Pointer to output whether an argument was received to."] #[doc = ""] pub fn APT_ReceiveDeliverArg( param: *const ::libc::c_void, - paramSize: size_t, + paramSize: usize, hmac: *const ::libc::c_void, sender: *mut u64_, received: *mut bool, @@ -12342,22 +9299,13 @@ pub const bossNsDataHeaderInfoTypeSize_ContentSize: bossNsDataHeaderInfoTypeSize pub type bossNsDataHeaderInfoTypeSizes = ::libc::c_uint; extern "C" { #[must_use] - #[doc = "Initializes BOSS."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programID` - programID to use, 0 for the current process. Only used when BOSSP is available without *hax payload."] - #[doc = "* `force_user` - When true, just use bossU instead of trying to initialize with bossP first."] + #[doc = "Initializes BOSS.\n @param programID programID to use, 0 for the current process. Only used when BOSSP is available without *hax payload.\n @param force_user When true, just use bossU instead of trying to initialize with bossP first."] #[doc = ""] pub fn bossInit(programID: u64_, force_user: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Run the InitializeSession service cmd. This is mainly for changing the programID associated with the current BOSS session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programID` - programID to use, 0 for the current process."] + #[doc = "Run the InitializeSession service cmd. This is mainly for changing the programID associated with the current BOSS session.\n @param programID programID to use, 0 for the current process."] #[doc = ""] pub fn bossReinit(programID: u64_) -> Result; } @@ -12373,13 +9321,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Set the content data storage location."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `extdataID` - u64 extdataID, must have the high word set to the shared-extdata value when it's for NAND."] - #[doc = "* `boss_size` - Probably the max size in the extdata which BOSS can use."] - #[doc = "* `mediaType` - Roughly the same as FS mediatype."] + #[doc = "Set the content data storage location.\n @param extdataID u64 extdataID, must have the high word set to the shared-extdata value when it's for NAND.\n @param boss_size Probably the max size in the extdata which BOSS can use.\n @param mediaType Roughly the same as FS mediatype."] #[doc = ""] pub fn bossSetStorageInfo(extdataID: u64_, boss_size: u32_, mediaType: u8_) -> Result; } @@ -12391,48 +9333,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Register a task."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] - #[doc = "* `unk0` - Unknown, usually zero."] - #[doc = "* `unk1` - Unknown, usually zero."] + #[doc = "Register a task.\n @param taskID BOSS taskID.\n @param unk0 Unknown, usually zero.\n @param unk1 Unknown, usually zero."] #[doc = ""] pub fn bossRegisterTask(taskID: *const ::libc::c_char, unk0: u8_, unk1: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Send a property."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `PropertyID` - PropertyID"] - #[doc = "* `buf` - Input buffer data."] - #[doc = "* `size` - Buffer size."] + #[doc = "Send a property.\n @param PropertyID PropertyID\n @param buf Input buffer data.\n @param size Buffer size."] #[doc = ""] pub fn bossSendProperty(PropertyID: u16_, buf: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes the content file for the specified NsDataId."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `NsDataId` - NsDataId"] + #[doc = "Deletes the content file for the specified NsDataId.\n @param NsDataId NsDataId"] #[doc = ""] pub fn bossDeleteNsData(NsDataId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets header info for the specified NsDataId."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `NsDataId` - NsDataId"] - #[doc = "* `type` - Type of data to load."] - #[doc = "* `buffer` - Output buffer."] - #[doc = "* `size` - Output buffer size."] + #[doc = "Gets header info for the specified NsDataId.\n @param NsDataId NsDataId\n @param type Type of data to load.\n @param buffer Output buffer.\n @param size Output buffer size."] #[doc = ""] pub fn bossGetNsDataHeaderInfo( NsDataId: u32_, @@ -12443,16 +9362,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads data from the content for the specified NsDataId."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `NsDataId` - NsDataId"] - #[doc = "* `offset` - Offset in the content."] - #[doc = "* `buffer` - Output buffer."] - #[doc = "* `size` - Output buffer size."] - #[doc = "* `transfer_total` - Optional output actual read size, can be NULL."] - #[doc = "* `unk_out` - Optional unknown output, can be NULL."] + #[doc = "Reads data from the content for the specified NsDataId.\n @param NsDataId NsDataId\n @param offset Offset in the content.\n @param buffer Output buffer.\n @param size Output buffer size.\n @param transfer_total Optional output actual read size, can be NULL.\n @param unk_out Optional unknown output, can be NULL."] #[doc = ""] pub fn bossReadNsData( NsDataId: u32_, @@ -12465,46 +9375,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Starts a task soon after running this command."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] + #[doc = "Starts a task soon after running this command.\n @param taskID BOSS taskID."] #[doc = ""] pub fn bossStartTaskImmediate(taskID: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Similar to bossStartTaskImmediate?"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] + #[doc = "Similar to bossStartTaskImmediate?\n @param taskID BOSS taskID."] #[doc = ""] pub fn bossStartBgImmediate(taskID: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes a task by using CancelTask and UnregisterTask internally."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] - #[doc = "* `unk` - Unknown, usually zero?"] + #[doc = "Deletes a task by using CancelTask and UnregisterTask internally.\n @param taskID BOSS taskID.\n @param unk Unknown, usually zero?"] #[doc = ""] pub fn bossDeleteTask(taskID: *const ::libc::c_char, unk: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Returns task state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] - #[doc = "* `inval` - Unknown, normally 0?"] - #[doc = "* `status` - Output status, see bossTaskStatus."] - #[doc = "* `out1` - Output field."] - #[doc = "* `out2` - Output field."] + #[doc = "Returns task state.\n @param taskID BOSS taskID.\n @param inval Unknown, normally 0?\n @param status Output status, see bossTaskStatus.\n @param out1 Output field.\n @param out2 Output field."] #[doc = ""] pub fn bossGetTaskState( taskID: *const ::libc::c_char, @@ -12516,22 +9405,12 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This loads the current state of PropertyID 0x0 for the specified task."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `taskID` - BOSS taskID."] + #[doc = "This loads the current state of PropertyID 0x0 for the specified task.\n @param taskID BOSS taskID."] #[doc = ""] pub fn bossGetTaskProperty0(taskID: *const ::libc::c_char, out: *mut u8_) -> Result; } extern "C" { - #[doc = "Setup a BOSS context with the default config."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bossContext` - BOSS context."] - #[doc = "* `seconds_interval` - Interval in seconds for running the task automatically."] - #[doc = "* `url` - Task URL."] + #[doc = "Setup a BOSS context with the default config.\n @param bossContext BOSS context.\n @param seconds_interval Interval in seconds for running the task automatically.\n @param url Task URL."] #[doc = ""] pub fn bossSetupContextDefault( ctx: *mut bossContext, @@ -12541,11 +9420,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sends the config stored in the context. Used before registering a task."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bossContext` - BOSS context."] + #[doc = "Sends the config stored in the context. Used before registering a task.\n @param bossContext BOSS context."] #[doc = ""] pub fn bossSendContextConfig(ctx: *mut bossContext) -> Result; } @@ -12569,9 +9444,7 @@ pub const INPUT_YUV420_INDIV_16: Y2RU_InputFormat = 3; #[doc = ""] pub const INPUT_YUV422_BATCH: Y2RU_InputFormat = 4; -#[doc = "Input color formats"] -#[doc = ""] -#[doc = "For the 16-bit per component formats, bits 15-8 are padding and 7-0 contains the value."] +#[doc = "Input color formats\n\n For the 16-bit per component formats, bits 15-8 are padding and 7-0 contains the value."] #[doc = ""] pub type Y2RU_InputFormat = ::libc::c_uint; @@ -12591,9 +9464,7 @@ pub const OUTPUT_RGB_16_555: Y2RU_OutputFormat = 2; #[doc = ""] pub const OUTPUT_RGB_16_565: Y2RU_OutputFormat = 3; -#[doc = "Output color formats"] -#[doc = ""] -#[doc = "Those are the same as the framebuffer and GPU texture formats."] +#[doc = "Output color formats\n\n Those are the same as the framebuffer and GPU texture formats."] #[doc = ""] pub type Y2RU_OutputFormat = ::libc::c_uint; @@ -12625,24 +9496,11 @@ pub const BLOCK_LINE: Y2RU_BlockAlignment = 0; #[doc = ""] pub const BLOCK_8_BY_8: Y2RU_BlockAlignment = 1; -#[doc = "Block alignment of output"] -#[doc = ""] -#[doc = "Defines the way the output will be laid out in memory."] +#[doc = "Block alignment of output\n\n Defines the way the output will be laid out in memory."] #[doc = ""] pub type Y2RU_BlockAlignment = ::libc::c_uint; -#[doc = "Coefficients of the YUV->RGB conversion formula."] -#[doc = ""] -#[doc = "A set of coefficients configuring the RGB to YUV conversion. Coefficients 0-4 are unsigned 2.8"] -#[doc = "fixed pointer numbers representing entries on the conversion matrix, while coefficient 5-7 are"] -#[doc = "signed 11.5 fixed point numbers added as offsets to the RGB result."] -#[doc = "The overall conversion process formula is:"] -#[doc = "```"] -#[doc = ""] -#[doc = "R = trunc((rgb_Y * Y + r_V * V) + 0.75 + r_offset)"] -#[doc = "G = trunc((rgb_Y * Y - g_U * U - g_V * V) + 0.75 + g_offset)"] -#[doc = "B = trunc((rgb_Y * Y + b_U * U ) + 0.75 + b_offset)"] -#[doc = "```"] +#[doc = "Coefficients of the YUV->RGB conversion formula.\n\n A set of coefficients configuring the RGB to YUV conversion. Coefficients 0-4 are unsigned 2.8\n fixed pointer numbers representing entries on the conversion matrix, while coefficient 5-7 are\n signed 11.5 fixed point numbers added as offsets to the RGB result.\n\n The overall conversion process formula is:\n ``` R = trunc((rgb_Y * Y + r_V * V) + 0.75 + r_offset)\n G = trunc((rgb_Y * Y - g_U * U - g_V * V) + 0.75 + g_offset)\n B = trunc((rgb_Y * Y + b_U * U ) + 0.75 + b_offset)\n ```"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -12688,15 +9546,11 @@ pub const COEFFICIENT_ITU_R_BT_601_SCALING: Y2RU_StandardCoefficient = 2; #[doc = ""] pub const COEFFICIENT_ITU_R_BT_709_SCALING: Y2RU_StandardCoefficient = 3; -#[doc = "Preset conversion coefficients based on ITU standards for the YUV->RGB formula."] -#[doc = ""] -#[doc = "For more details refer to [`Y2RU_ColorCoefficients`]"] +#[doc = "Preset conversion coefficients based on ITU standards for the YUV->RGB formula.\n\n For more details refer to [`Y2RU_ColorCoefficients`]"] #[doc = ""] pub type Y2RU_StandardCoefficient = ::libc::c_uint; -#[doc = "Structure used to configure all parameters at once."] -#[doc = ""] -#[doc = "You can send a batch of configuration parameters using this structure and [`Y2RU_SetConversionParams`]"] +#[doc = "Structure used to configure all parameters at once.\n\n You can send a batch of configuration parameters using this structure and [`Y2RU_SetConversionParams`]"] #[doc = ""] #[repr(C)] #[repr(align(4))] @@ -12878,258 +9732,132 @@ pub struct Y2RU_DitheringWeightParams { } extern "C" { #[must_use] - #[doc = "Initializes the y2r service."] - #[doc = ""] - #[doc = "This will internally get the handle of the service, and on success call Y2RU_DriverInitialize."] + #[doc = "Initializes the y2r service.\n\n This will internally get the handle of the service, and on success call Y2RU_DriverInitialize."] #[doc = ""] pub fn y2rInit() -> Result; } extern "C" { - #[doc = "Closes the y2r service."] - #[doc = ""] - #[doc = "This will internally call Y2RU_DriverFinalize and close the handle of the service."] + #[doc = "Closes the y2r service.\n\n This will internally call Y2RU_DriverFinalize and close the handle of the service."] #[doc = ""] pub fn y2rExit(); } extern "C" { #[must_use] - #[doc = "Used to configure the input format."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `format` - Input format to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the input format.\n @param format Input format to use.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetInputFormat(format: Y2RU_InputFormat) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured input format."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `format` - Pointer to output the input format to."] + #[doc = "Gets the configured input format.\n @param format Pointer to output the input format to."] #[doc = ""] pub fn Y2RU_GetInputFormat(format: *mut Y2RU_InputFormat) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the output format."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `format` - Output format to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the output format.\n @param format Output format to use.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetOutputFormat(format: Y2RU_OutputFormat) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured output format."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `format` - Pointer to output the output format to."] + #[doc = "Gets the configured output format.\n @param format Pointer to output the output format to."] #[doc = ""] pub fn Y2RU_GetOutputFormat(format: *mut Y2RU_OutputFormat) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the rotation of the output."] - #[doc = ""] - #[doc = "It seems to apply the rotation per batch of 8 lines, so the output will be (height/8) images of size 8 x width."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `rotation` - Rotation to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the rotation of the output.\n @param rotation Rotation to use.\n\n It seems to apply the rotation per batch of 8 lines, so the output will be (height/8) images of size 8 x width.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetRotation(rotation: Y2RU_Rotation) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured rotation."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `rotation` - Pointer to output the rotation to."] + #[doc = "Gets the configured rotation.\n @param rotation Pointer to output the rotation to."] #[doc = ""] pub fn Y2RU_GetRotation(rotation: *mut Y2RU_Rotation) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the alignment of the output buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `alignment` - Alignment to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the alignment of the output buffer.\n @param alignment Alignment to use.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetBlockAlignment(alignment: Y2RU_BlockAlignment) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured alignment."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `alignment` - Pointer to output the alignment to."] + #[doc = "Gets the configured alignment.\n @param alignment Pointer to output the alignment to."] #[doc = ""] pub fn Y2RU_GetBlockAlignment(alignment: *mut Y2RU_BlockAlignment) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether to use spacial dithering."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Whether to use spacial dithering."] + #[doc = "Sets whether to use spacial dithering.\n @param enable Whether to use spacial dithering."] #[doc = ""] pub fn Y2RU_SetSpacialDithering(enable: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether to use spacial dithering."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Pointer to output the spacial dithering state to."] + #[doc = "Gets whether to use spacial dithering.\n @param enable Pointer to output the spacial dithering state to."] #[doc = ""] pub fn Y2RU_GetSpacialDithering(enabled: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether to use temporal dithering."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Whether to use temporal dithering."] + #[doc = "Sets whether to use temporal dithering.\n @param enable Whether to use temporal dithering."] #[doc = ""] pub fn Y2RU_SetTemporalDithering(enable: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether to use temporal dithering."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Pointer to output the temporal dithering state to."] + #[doc = "Gets whether to use temporal dithering.\n @param enable Pointer to output the temporal dithering state to."] #[doc = ""] pub fn Y2RU_GetTemporalDithering(enabled: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the width of the image."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `line_width` - Width of the image in pixels. Must be a multiple of 8, up to 1024."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the width of the image.\n @param line_width Width of the image in pixels. Must be a multiple of 8, up to 1024.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetInputLineWidth(line_width: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured input line width."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `line_width` - Pointer to output the line width to."] - #[doc = ""] - pub fn Y2RU_GetInputLineWidth(line_width: *mut u16_) -> Result; -} -extern "C" { - #[must_use] - #[doc = "Used to configure the height of the image."] - #[doc = ""] - #[doc = "A multiple of 8 seems to be preferred."] - #[doc = "If using the [`BLOCK_8_BY_8`] mode, it must be a multiple of 8."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `num_lines` - Number of lines to be converted."] - #[doc = ""] - #[doc = "# Notes"] + #[doc = "Gets the configured input line width.\n @param line_width Pointer to output the line width to."] #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + pub fn Y2RU_GetInputLineWidth(line_width: *mut u16_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Used to configure the height of the image.\n @param num_lines Number of lines to be converted.\n\n A multiple of 8 seems to be preferred.\n If using the [`BLOCK_8_BY_8`] mode, it must be a multiple of 8.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetInputLines(num_lines: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured number of input lines."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `num_lines` - Pointer to output the input lines to."] + #[doc = "Gets the configured number of input lines.\n @param num_lines Pointer to output the input lines to."] #[doc = ""] pub fn Y2RU_GetInputLines(num_lines: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the color conversion formula."] - #[doc = ""] - #[doc = "See [`Y2RU_ColorCoefficients`] for more information about the coefficients."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coefficients` - Coefficients to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the color conversion formula.\n @param coefficients Coefficients to use.\n\n See [`Y2RU_ColorCoefficients`] for more information about the coefficients.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetCoefficients(coefficients: *const Y2RU_ColorCoefficients) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured color coefficients."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `num_lines` - Pointer to output the coefficients to."] + #[doc = "Gets the configured color coefficients.\n @param num_lines Pointer to output the coefficients to."] #[doc = ""] pub fn Y2RU_GetCoefficients(coefficients: *mut Y2RU_ColorCoefficients) -> Result; } extern "C" { #[must_use] - #[doc = "Used to configure the color conversion formula with ITU stantards coefficients."] - #[doc = ""] - #[doc = "See [`Y2RU_ColorCoefficients`] for more information about the coefficients."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coefficient` - Standard coefficient to use."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the color conversion formula with ITU stantards coefficients.\n @param coefficient Standard coefficient to use.\n\n See [`Y2RU_ColorCoefficients`] for more information about the coefficients.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetStandardCoefficient(coefficient: Y2RU_StandardCoefficient) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the color coefficient parameters of a standard coefficient."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coefficients` - Pointer to output the coefficients to."] - #[doc = "* `standardCoeff` - Standard coefficient to check."] + #[doc = "Gets the color coefficient parameters of a standard coefficient.\n @param coefficients Pointer to output the coefficients to.\n @param standardCoeff Standard coefficient to check."] #[doc = ""] pub fn Y2RU_GetStandardCoefficient( coefficients: *mut Y2RU_ColorCoefficients, @@ -13138,91 +9866,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Used to configure the alpha value of the output."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `alpha` - 8-bit value to be used for the output when the format requires it."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] + #[doc = "Used to configure the alpha value of the output.\n @param alpha 8-bit value to be used for the output when the format requires it.\n\n @note Prefer using [`Y2RU_SetConversionParams`] if you have to set multiple parameters."] #[doc = ""] pub fn Y2RU_SetAlpha(alpha: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured output alpha value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `alpha` - Pointer to output the alpha value to."] + #[doc = "Gets the configured output alpha value.\n @param alpha Pointer to output the alpha value to."] #[doc = ""] pub fn Y2RU_GetAlpha(alpha: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Used to enable the end of conversion interrupt."] - #[doc = ""] - #[doc = "It is possible to fire an interrupt when the conversion is finished, and that the DMA is done copying the data."] - #[doc = "This interrupt will then be used to fire an event. See [`Y2RU_GetTransferEndEvent`]"] - #[doc = "By default the interrupt is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `should_interrupt` - Enables the interrupt if true, disable it if false."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* It seems that the event can be fired too soon in some cases, depending the transfer_unit size.\\n Please see the note at [`Y2RU_SetReceiving`]"] + #[doc = "Used to enable the end of conversion interrupt.\n @param should_interrupt Enables the interrupt if true, disable it if false.\n\n It is possible to fire an interrupt when the conversion is finished, and that the DMA is done copying the data.\n This interrupt will then be used to fire an event. See [`Y2RU_GetTransferEndEvent.\n`] By default the interrupt is enabled.\n\n @note It seems that the event can be fired too soon in some cases, depending the transfer_unit size.\\n Please see the note at [`Y2RU_SetReceiving`]"] #[doc = ""] pub fn Y2RU_SetTransferEndInterrupt(should_interrupt: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the transfer end interrupt is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `should_interrupt` - Pointer to output the interrupt state to."] + #[doc = "Gets whether the transfer end interrupt is enabled.\n @param should_interrupt Pointer to output the interrupt state to."] #[doc = ""] pub fn Y2RU_GetTransferEndInterrupt(should_interrupt: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets an handle to the end of conversion event."] - #[doc = ""] - #[doc = "To enable this event you have to use ```"] - #[doc = "```"] - #[doc = "The event will be triggered when the corresponding interrupt is fired."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `end_event` - Pointer to the event handle to be set to the end of conversion event. It isn't necessary to create or close this handle."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* It is recommended to use a timeout when waiting on this event, as it sometimes (but rarely) isn't triggered."] + #[doc = "Gets an handle to the end of conversion event.\n @param end_event Pointer to the event handle to be set to the end of conversion event. It isn't necessary to create or close this handle.\n\n To enable this event you have to use ``` ``` The event will be triggered when the corresponding interrupt is fired.\n\n @note It is recommended to use a timeout when waiting on this event, as it sometimes (but rarely) isn't triggered."] #[doc = ""] pub fn Y2RU_GetTransferEndEvent(end_event: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Configures the Y plane buffer."] - #[doc = ""] - #[doc = "This specifies the Y data buffer for the planar input formats (INPUT_YUV42*_INDIV_*)."] - #[doc = "The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* transfer_unit+transfer_gap must be less than 32768 (0x8000)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src_buf` - A pointer to the beginning of your Y data buffer."] - #[doc = "* `image_size` - The total size of the data buffer."] - #[doc = "* `transfer_unit` - Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size."] - #[doc = "* `transfer_gap` - Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it."] + #[doc = "Configures the Y plane buffer.\n @param src_buf A pointer to the beginning of your Y data buffer.\n @param image_size The total size of the data buffer.\n @param transfer_unit Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size.\n @param transfer_gap Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it.\n\n @warning transfer_unit+transfer_gap must be less than 32768 (0x8000)\n\n This specifies the Y data buffer for the planar input formats (INPUT_YUV42*_INDIV_*).\n The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] #[doc = ""] pub fn Y2RU_SetSendingY( src_buf: *const ::libc::c_void, @@ -13233,21 +9907,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the U plane buffer."] - #[doc = ""] - #[doc = "This specifies the U data buffer for the planar input formats (INPUT_YUV42*_INDIV_*)."] - #[doc = "The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* transfer_unit+transfer_gap must be less than 32768 (0x8000)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src_buf` - A pointer to the beginning of your Y data buffer."] - #[doc = "* `image_size` - The total size of the data buffer."] - #[doc = "* `transfer_unit` - Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size."] - #[doc = "* `transfer_gap` - Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it."] + #[doc = "Configures the U plane buffer.\n @param src_buf A pointer to the beginning of your Y data buffer.\n @param image_size The total size of the data buffer.\n @param transfer_unit Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size.\n @param transfer_gap Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it.\n\n @warning transfer_unit+transfer_gap must be less than 32768 (0x8000)\n\n This specifies the U data buffer for the planar input formats (INPUT_YUV42*_INDIV_*).\n The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] #[doc = ""] pub fn Y2RU_SetSendingU( src_buf: *const ::libc::c_void, @@ -13258,21 +9918,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the V plane buffer."] - #[doc = ""] - #[doc = "This specifies the V data buffer for the planar input formats (INPUT_YUV42*_INDIV_*)."] - #[doc = "The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* transfer_unit+transfer_gap must be less than 32768 (0x8000)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src_buf` - A pointer to the beginning of your Y data buffer."] - #[doc = "* `image_size` - The total size of the data buffer."] - #[doc = "* `transfer_unit` - Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size."] - #[doc = "* `transfer_gap` - Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it."] + #[doc = "Configures the V plane buffer.\n @param src_buf A pointer to the beginning of your Y data buffer.\n @param image_size The total size of the data buffer.\n @param transfer_unit Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size.\n @param transfer_gap Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it.\n\n @warning transfer_unit+transfer_gap must be less than 32768 (0x8000)\n\n This specifies the V data buffer for the planar input formats (INPUT_YUV42*_INDIV_*).\n The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] #[doc = ""] pub fn Y2RU_SetSendingV( src_buf: *const ::libc::c_void, @@ -13283,21 +9929,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the YUYV source buffer."] - #[doc = ""] - #[doc = "This specifies the YUYV data buffer for the packed input format [`INPUT_YUV422_BATCH`]"] - #[doc = "The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* transfer_unit+transfer_gap must be less than 32768 (0x8000)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src_buf` - A pointer to the beginning of your Y data buffer."] - #[doc = "* `image_size` - The total size of the data buffer."] - #[doc = "* `transfer_unit` - Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size."] - #[doc = "* `transfer_gap` - Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it."] + #[doc = "Configures the YUYV source buffer.\n @param src_buf A pointer to the beginning of your Y data buffer.\n @param image_size The total size of the data buffer.\n @param transfer_unit Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size.\n @param transfer_gap Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it.\n\n @warning transfer_unit+transfer_gap must be less than 32768 (0x8000)\n\n This specifies the YUYV data buffer for the packed input format [`INPUT_YUV422_BATCH.\n`] The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] #[doc = ""] pub fn Y2RU_SetSendingYUYV( src_buf: *const ::libc::c_void, @@ -13308,30 +9940,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the destination buffer."] - #[doc = ""] - #[doc = "This specifies the destination buffer of the conversion."] - #[doc = "The actual transfer will only happen after calling [`Y2RU_StartConversion`]"] - #[doc = "The buffer does NOT need to be allocated in the linear heap."] - #[doc = "It seems that depending on the size of the image and of the transfer unit,\\n"] - #[doc = "it is possible for the end of conversion interrupt to be triggered right after the conversion began.\\n"] - #[doc = "One line as transfer_unit seems to trigger this issue for 400x240, setting to 2/4/8 lines fixes it."] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* transfer_unit+transfer_gap must be less than 32768 (0x8000)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src_buf` - A pointer to the beginning of your destination buffer in FCRAM"] - #[doc = "* `image_size` - The total size of the data buffer."] - #[doc = "* `transfer_unit` - Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size."] - #[doc = "* `transfer_gap` - Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "*"] - #[doc = "* Setting a transfer_unit of 4 or 8 lines seems to bring the best results in terms of speed for a 400x240 image."] + #[doc = "Configures the destination buffer.\n @param src_buf A pointer to the beginning of your destination buffer in FCRAM\n @param image_size The total size of the data buffer.\n @param transfer_unit Specifies the size of 1 DMA transfer. Usually set to 1 line. This has to be a divisor of image_size.\n @param transfer_gap Specifies the gap (offset) to be added after each transfer. Can be used to convert images with stride or only a part of it.\n\n This specifies the destination buffer of the conversion.\n The actual transfer will only happen after calling [`Y2RU_StartConversion.\n`] The buffer does NOT need to be allocated in the linear heap.\n\n @warning transfer_unit+transfer_gap must be less than 32768 (0x8000)\n\n @note\n It seems that depending on the size of the image and of the transfer unit,\\n\n it is possible for the end of conversion interrupt to be triggered right after the conversion began.\\n\n One line as transfer_unit seems to trigger this issue for 400x240, setting to 2/4/8 lines fixes it.\n\n @note Setting a transfer_unit of 4 or 8 lines seems to bring the best results in terms of speed for a 400x240 image."] #[doc = ""] pub fn Y2RU_SetReceiving( dst_buf: *mut ::libc::c_void, @@ -13342,93 +9951,49 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks if the DMA has finished sending the Y buffer."] - #[doc = ""] - #[doc = "True if the DMA has finished transferring the Y plane, false otherwise. To be used with [`Y2RU_SetSendingY`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_done` - Pointer to the boolean that will hold the result."] + #[doc = "Checks if the DMA has finished sending the Y buffer.\n @param is_done Pointer to the boolean that will hold the result.\n\n True if the DMA has finished transferring the Y plane, false otherwise. To be used with [`Y2RU_SetSendingY`]"] #[doc = ""] pub fn Y2RU_IsDoneSendingY(is_done: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if the DMA has finished sending the U buffer."] - #[doc = ""] - #[doc = "True if the DMA has finished transferring the U plane, false otherwise. To be used with [`Y2RU_SetSendingU`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_done` - Pointer to the boolean that will hold the result."] + #[doc = "Checks if the DMA has finished sending the U buffer.\n @param is_done Pointer to the boolean that will hold the result.\n\n True if the DMA has finished transferring the U plane, false otherwise. To be used with [`Y2RU_SetSendingU`]"] #[doc = ""] pub fn Y2RU_IsDoneSendingU(is_done: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if the DMA has finished sending the V buffer."] - #[doc = ""] - #[doc = "True if the DMA has finished transferring the V plane, false otherwise. To be used with [`Y2RU_SetSendingV`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_done` - Pointer to the boolean that will hold the result."] + #[doc = "Checks if the DMA has finished sending the V buffer.\n @param is_done Pointer to the boolean that will hold the result.\n\n True if the DMA has finished transferring the V plane, false otherwise. To be used with [`Y2RU_SetSendingV`]"] #[doc = ""] pub fn Y2RU_IsDoneSendingV(is_done: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if the DMA has finished sending the YUYV buffer."] - #[doc = ""] - #[doc = "True if the DMA has finished transferring the YUYV buffer, false otherwise. To be used with [`Y2RU_SetSendingYUYV`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_done` - Pointer to the boolean that will hold the result."] + #[doc = "Checks if the DMA has finished sending the YUYV buffer.\n @param is_done Pointer to the boolean that will hold the result.\n\n True if the DMA has finished transferring the YUYV buffer, false otherwise. To be used with [`Y2RU_SetSendingYUYV`]"] #[doc = ""] pub fn Y2RU_IsDoneSendingYUYV(is_done: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if the DMA has finished sending the converted result."] - #[doc = ""] - #[doc = "True if the DMA has finished transferring data to your destination buffer, false otherwise."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_done` - Pointer to the boolean that will hold the result."] + #[doc = "Checks if the DMA has finished sending the converted result.\n @param is_done Pointer to the boolean that will hold the result.\n\n True if the DMA has finished transferring data to your destination buffer, false otherwise."] #[doc = ""] pub fn Y2RU_IsDoneReceiving(is_done: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Configures the dithering weight parameters."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `params` - Dithering weight parameters to use."] + #[doc = "Configures the dithering weight parameters.\n @param params Dithering weight parameters to use."] #[doc = ""] pub fn Y2RU_SetDitheringWeightParams(params: *const Y2RU_DitheringWeightParams) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the configured dithering weight parameters."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `params` - Pointer to output the dithering weight parameters to."] + #[doc = "Gets the configured dithering weight parameters.\n @param params Pointer to output the dithering weight parameters to."] #[doc = ""] pub fn Y2RU_GetDitheringWeightParams(params: *mut Y2RU_DitheringWeightParams) -> Result; } extern "C" { #[must_use] - #[doc = "Sets all of the parameters of Y2RU_ConversionParams at once."] - #[doc = ""] - #[doc = "Faster than calling the individual value through Y2R_Set* because only one system call is made."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `params` - Conversion parameters to set."] + #[doc = "Sets all of the parameters of Y2RU_ConversionParams at once.\n @param params Conversion parameters to set.\n\n Faster than calling the individual value through Y2R_Set* because only one system call is made."] #[doc = ""] pub fn Y2RU_SetConversionParams(params: *const Y2RU_ConversionParams) -> Result; } @@ -13446,23 +10011,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks if the conversion and DMA transfer are finished."] - #[doc = ""] - #[doc = "This can have the same problems as the event and interrupt. See [`Y2RU_SetTransferEndInterrupt`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_busy` - Pointer to output the busy state to."] + #[doc = "Checks if the conversion and DMA transfer are finished.\n @param is_busy Pointer to output the busy state to.\n\n This can have the same problems as the event and interrupt. See [`Y2RU_SetTransferEndInterrupt`]"] #[doc = ""] pub fn Y2RU_IsBusyConversion(is_busy: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Checks whether Y2R is ready to be used."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ping` - Pointer to output the ready status to."] + #[doc = "Checks whether Y2R is ready to be used.\n @param ping Pointer to output the ready status to."] #[doc = ""] pub fn Y2RU_PingProcess(ping: *mut u8_) -> Result; } @@ -14088,93 +10643,54 @@ pub struct CAMU_PackageParameterContextDetail { } extern "C" { #[must_use] - #[doc = "Initializes the cam service."] - #[doc = ""] - #[doc = "This will internally get the handle of the service, and on success call CAMU_DriverInitialize."] + #[doc = "Initializes the cam service.\n\n This will internally get the handle of the service, and on success call CAMU_DriverInitialize."] #[doc = ""] pub fn camInit() -> Result; } extern "C" { - #[doc = "Closes the cam service."] - #[doc = ""] - #[doc = "This will internally call CAMU_DriverFinalize and close the handle of the service."] + #[doc = "Closes the cam service.\n\n This will internally call CAMU_DriverFinalize and close the handle of the service."] #[doc = ""] pub fn camExit(); } extern "C" { #[must_use] - #[doc = "Begins capture on the specified camera port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to begin capture on."] + #[doc = "Begins capture on the specified camera port.\n @param port Port to begin capture on."] #[doc = ""] pub fn CAMU_StartCapture(port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates capture on the specified camera port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to terminate capture on."] + #[doc = "Terminates capture on the specified camera port.\n @param port Port to terminate capture on."] #[doc = ""] pub fn CAMU_StopCapture(port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the specified camera port is busy."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `busy` - Pointer to output the busy state to."] - #[doc = "* `port` - Port to check."] + #[doc = "Gets whether the specified camera port is busy.\n @param busy Pointer to output the busy state to.\n @param port Port to check."] #[doc = ""] pub fn CAMU_IsBusy(busy: *mut bool, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Clears the buffer and error flags of the specified camera port."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to clear."] + #[doc = "Clears the buffer and error flags of the specified camera port.\n @param port Port to clear."] #[doc = ""] pub fn CAMU_ClearBuffer(port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a handle to the event signaled on vsync interrupts."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to output the event handle to."] - #[doc = "* `port` - Port to use."] + #[doc = "Gets a handle to the event signaled on vsync interrupts.\n @param event Pointer to output the event handle to.\n @param port Port to use."] #[doc = ""] pub fn CAMU_GetVsyncInterruptEvent(event: *mut Handle, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a handle to the event signaled on camera buffer errors."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to output the event handle to."] - #[doc = "* `port` - Port to use."] + #[doc = "Gets a handle to the event signaled on camera buffer errors.\n @param event Pointer to output the event handle to.\n @param port Port to use."] #[doc = ""] pub fn CAMU_GetBufferErrorInterruptEvent(event: *mut Handle, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Initiates the process of receiving a camera frame."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to output the completion event handle to."] - #[doc = "* `dst` - Buffer to write data to."] - #[doc = "* `port` - Port to receive from."] - #[doc = "* `imageSize` - Size of the image to receive."] - #[doc = "* `transferUnit` - Transfer unit to use when receiving."] + #[doc = "Initiates the process of receiving a camera frame.\n @param event Pointer to output the completion event handle to.\n @param dst Buffer to write data to.\n @param port Port to receive from.\n @param imageSize Size of the image to receive.\n @param transferUnit Transfer unit to use when receiving."] #[doc = ""] pub fn CAMU_SetReceiving( event: *mut Handle, @@ -14186,109 +10702,55 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets whether the specified camera port has finished receiving image data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `finishedReceiving` - Pointer to output the receiving status to."] - #[doc = "* `port` - Port to check."] + #[doc = "Gets whether the specified camera port has finished receiving image data.\n @param finishedReceiving Pointer to output the receiving status to.\n @param port Port to check."] #[doc = ""] pub fn CAMU_IsFinishedReceiving(finishedReceiving: *mut bool, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the number of lines to transfer into an image buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to use."] - #[doc = "* `lines` - Lines to transfer."] - #[doc = "* `width` - Width of the image."] - #[doc = "* `height` - Height of the image."] + #[doc = "Sets the number of lines to transfer into an image buffer.\n @param port Port to use.\n @param lines Lines to transfer.\n @param width Width of the image.\n @param height Height of the image."] #[doc = ""] pub fn CAMU_SetTransferLines(port: u32_, lines: s16, width: s16, height: s16) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the maximum number of lines that can be saved to an image buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `maxLines` - Pointer to write the maximum number of lines to."] - #[doc = "* `width` - Width of the image."] - #[doc = "* `height` - Height of the image."] + #[doc = "Gets the maximum number of lines that can be saved to an image buffer.\n @param maxLines Pointer to write the maximum number of lines to.\n @param width Width of the image.\n @param height Height of the image."] #[doc = ""] pub fn CAMU_GetMaxLines(maxLines: *mut s16, width: s16, height: s16) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the number of bytes to transfer into an image buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to use."] - #[doc = "* `bytes` - Bytes to transfer."] - #[doc = "* `width` - Width of the image."] - #[doc = "* `height` - Height of the image."] + #[doc = "Sets the number of bytes to transfer into an image buffer.\n @param port Port to use.\n @param bytes Bytes to transfer.\n @param width Width of the image.\n @param height Height of the image."] #[doc = ""] pub fn CAMU_SetTransferBytes(port: u32_, bytes: u32_, width: s16, height: s16) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the number of bytes to transfer into an image buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `transferBytes` - Pointer to write the number of bytes to."] - #[doc = "* `port` - Port to use."] + #[doc = "Gets the number of bytes to transfer into an image buffer.\n @param transferBytes Pointer to write the number of bytes to.\n @param port Port to use."] #[doc = ""] pub fn CAMU_GetTransferBytes(transferBytes: *mut u32_, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the maximum number of bytes that can be saved to an image buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `maxBytes` - Pointer to write the maximum number of bytes to."] - #[doc = "* `width` - Width of the image."] - #[doc = "* `height` - Height of the image."] + #[doc = "Gets the maximum number of bytes that can be saved to an image buffer.\n @param maxBytes Pointer to write the maximum number of bytes to.\n @param width Width of the image.\n @param height Height of the image."] #[doc = ""] pub fn CAMU_GetMaxBytes(maxBytes: *mut u32_, width: s16, height: s16) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether image trimming is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to use."] - #[doc = "* `trimming` - Whether image trimming is enabled."] + #[doc = "Sets whether image trimming is enabled.\n @param port Port to use.\n @param trimming Whether image trimming is enabled."] #[doc = ""] pub fn CAMU_SetTrimming(port: u32_, trimming: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether image trimming is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `trimming` - Pointer to output the trim state to."] - #[doc = "* `port` - Port to use."] + #[doc = "Gets whether image trimming is enabled.\n @param trimming Pointer to output the trim state to.\n @param port Port to use."] #[doc = ""] pub fn CAMU_IsTrimming(trimming: *mut bool, port: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the parameters used for trimming images."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to use."] - #[doc = "* `xStart` - Start X coordinate."] - #[doc = "* `yStart` - Start Y coordinate."] - #[doc = "* `xEnd` - End X coordinate."] - #[doc = "* `yEnd` - End Y coordinate."] + #[doc = "Sets the parameters used for trimming images.\n @param port Port to use.\n @param xStart Start X coordinate.\n @param yStart Start Y coordinate.\n @param xEnd End X coordinate.\n @param yEnd End Y coordinate."] #[doc = ""] pub fn CAMU_SetTrimmingParams( port: u32_, @@ -14300,15 +10762,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the parameters used for trimming images."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `xStart` - Pointer to write the start X coordinate to."] - #[doc = "* `yStart` - Pointer to write the start Y coordinate to."] - #[doc = "* `xEnd` - Pointer to write the end X coordinate to."] - #[doc = "* `yEnd` - Pointer to write the end Y coordinate to."] - #[doc = "* `port` - Port to use."] + #[doc = "Gets the parameters used for trimming images.\n @param xStart Pointer to write the start X coordinate to.\n @param yStart Pointer to write the start Y coordinate to.\n @param xEnd Pointer to write the end X coordinate to.\n @param yEnd Pointer to write the end Y coordinate to.\n @param port Port to use."] #[doc = ""] pub fn CAMU_GetTrimmingParams( xStart: *mut s16, @@ -14320,15 +10774,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the parameters used for trimming images, relative to the center of the image."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `port` - Port to use."] - #[doc = "* `trimWidth` - Trim width."] - #[doc = "* `trimHeight` - Trim height."] - #[doc = "* `camWidth` - Camera width."] - #[doc = "* `camHeight` - Camera height."] + #[doc = "Sets the parameters used for trimming images, relative to the center of the image.\n @param port Port to use.\n @param trimWidth Trim width.\n @param trimHeight Trim height.\n @param camWidth Camera width.\n @param camHeight Camera height."] #[doc = ""] pub fn CAMU_SetTrimmingParamsCenter( port: u32_, @@ -14340,57 +10786,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Activates the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] + #[doc = "Activates the specified camera.\n @param select Camera to use."] #[doc = ""] pub fn CAMU_Activate(select: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Switches the specified camera's active context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `context` - Context to use."] + #[doc = "Switches the specified camera's active context.\n @param select Camera to use.\n @param context Context to use."] #[doc = ""] pub fn CAMU_SwitchContext(select: u32_, context: CAMU_Context) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the exposure value of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `exposure` - Exposure value to use."] + #[doc = "Sets the exposure value of the specified camera.\n @param select Camera to use.\n @param exposure Exposure value to use."] #[doc = ""] pub fn CAMU_SetExposure(select: u32_, exposure: s8) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the white balance mode of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `whiteBalance` - White balance mode to use."] + #[doc = "Sets the white balance mode of the specified camera.\n @param select Camera to use.\n @param whiteBalance White balance mode to use."] #[doc = ""] pub fn CAMU_SetWhiteBalance(select: u32_, whiteBalance: CAMU_WhiteBalance) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the white balance mode of the specified camera."] - #[doc = ""] - #[doc = "TODO: Explain \"without base up\"?"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `whiteBalance` - White balance mode to use."] + #[doc = "Sets the white balance mode of the specified camera.\n TODO: Explain \"without base up\"?\n @param select Camera to use.\n @param whiteBalance White balance mode to use."] #[doc = ""] pub fn CAMU_SetWhiteBalanceWithoutBaseUp( select: u32_, @@ -14399,85 +10819,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the sharpness of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `sharpness` - Sharpness to use."] + #[doc = "Sets the sharpness of the specified camera.\n @param select Camera to use.\n @param sharpness Sharpness to use."] #[doc = ""] pub fn CAMU_SetSharpness(select: u32_, sharpness: s8) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether auto exposure is enabled on the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `autoWhiteBalance` - Whether auto exposure is enabled."] + #[doc = "Sets whether auto exposure is enabled on the specified camera.\n @param select Camera to use.\n @param autoWhiteBalance Whether auto exposure is enabled."] #[doc = ""] pub fn CAMU_SetAutoExposure(select: u32_, autoExposure: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether auto exposure is enabled on the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `autoExposure` - Pointer to output the auto exposure state to."] - #[doc = "* `select` - Camera to use."] + #[doc = "Gets whether auto exposure is enabled on the specified camera.\n @param autoExposure Pointer to output the auto exposure state to.\n @param select Camera to use."] #[doc = ""] pub fn CAMU_IsAutoExposure(autoExposure: *mut bool, select: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether auto white balance is enabled on the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `autoWhiteBalance` - Whether auto white balance is enabled."] + #[doc = "Sets whether auto white balance is enabled on the specified camera.\n @param select Camera to use.\n @param autoWhiteBalance Whether auto white balance is enabled."] #[doc = ""] pub fn CAMU_SetAutoWhiteBalance(select: u32_, autoWhiteBalance: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether auto white balance is enabled on the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `autoWhiteBalance` - Pointer to output the auto white balance state to."] - #[doc = "* `select` - Camera to use."] + #[doc = "Gets whether auto white balance is enabled on the specified camera.\n @param autoWhiteBalance Pointer to output the auto white balance state to.\n @param select Camera to use."] #[doc = ""] pub fn CAMU_IsAutoWhiteBalance(autoWhiteBalance: *mut bool, select: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Flips the image of the specified camera in the specified context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `flip` - Flip mode to use."] - #[doc = "* `context` - Context to use."] + #[doc = "Flips the image of the specified camera in the specified context.\n @param select Camera to use.\n @param flip Flip mode to use.\n @param context Context to use."] #[doc = ""] pub fn CAMU_FlipImage(select: u32_, flip: CAMU_Flip, context: CAMU_Context) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the image resolution of the given camera in the given context, in detail."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `width` - Width to use."] - #[doc = "* `height` - Height to use."] - #[doc = "* `cropX0` - First crop point X."] - #[doc = "* `cropY0` - First crop point Y."] - #[doc = "* `cropX1` - Second crop point X."] - #[doc = "* `cropY1` - Second crop point Y."] - #[doc = "* `context` - Context to use."] + #[doc = "Sets the image resolution of the given camera in the given context, in detail.\n @param select Camera to use.\n @param width Width to use.\n @param height Height to use.\n @param cropX0 First crop point X.\n @param cropY0 First crop point Y.\n @param cropX1 Second crop point X.\n @param cropY1 Second crop point Y.\n @param context Context to use."] #[doc = ""] pub fn CAMU_SetDetailSize( select: u32_, @@ -14492,81 +10870,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the image resolution of the given camera in the given context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `size` - Size to use."] - #[doc = "* `context` - Context to use."] + #[doc = "Sets the image resolution of the given camera in the given context.\n @param select Camera to use.\n @param size Size to use.\n @param context Context to use."] #[doc = ""] pub fn CAMU_SetSize(select: u32_, size: CAMU_Size, context: CAMU_Context) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the frame rate of the given camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `frameRate` - Frame rate to use."] + #[doc = "Sets the frame rate of the given camera.\n @param select Camera to use.\n @param frameRate Frame rate to use."] #[doc = ""] pub fn CAMU_SetFrameRate(select: u32_, frameRate: CAMU_FrameRate) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the photo mode of the given camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `photoMode` - Photo mode to use."] + #[doc = "Sets the photo mode of the given camera.\n @param select Camera to use.\n @param photoMode Photo mode to use."] #[doc = ""] pub fn CAMU_SetPhotoMode(select: u32_, photoMode: CAMU_PhotoMode) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the special effects of the given camera in the given context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `effect` - Effect to use."] - #[doc = "* `context` - Context to use."] + #[doc = "Sets the special effects of the given camera in the given context.\n @param select Camera to use.\n @param effect Effect to use.\n @param context Context to use."] #[doc = ""] pub fn CAMU_SetEffect(select: u32_, effect: CAMU_Effect, context: CAMU_Context) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the contrast mode of the given camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `contrast` - Contrast mode to use."] + #[doc = "Sets the contrast mode of the given camera.\n @param select Camera to use.\n @param contrast Contrast mode to use."] #[doc = ""] pub fn CAMU_SetContrast(select: u32_, contrast: CAMU_Contrast) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the lens correction mode of the given camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `lensCorrection` - Lens correction mode to use."] + #[doc = "Sets the lens correction mode of the given camera.\n @param select Camera to use.\n @param lensCorrection Lens correction mode to use."] #[doc = ""] pub fn CAMU_SetLensCorrection(select: u32_, lensCorrection: CAMU_LensCorrection) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the output format of the given camera in the given context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `format` - Format to output."] - #[doc = "* `context` - Context to use."] + #[doc = "Sets the output format of the given camera in the given context.\n @param select Camera to use.\n @param format Format to output.\n @param context Context to use."] #[doc = ""] pub fn CAMU_SetOutputFormat( select: u32_, @@ -14576,15 +10916,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the region to base auto exposure off of for the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `x` - X of the region."] - #[doc = "* `y` - Y of the region."] - #[doc = "* `width` - Width of the region."] - #[doc = "* `height` - Height of the region."] + #[doc = "Sets the region to base auto exposure off of for the specified camera.\n @param select Camera to use.\n @param x X of the region.\n @param y Y of the region.\n @param width Width of the region.\n @param height Height of the region."] #[doc = ""] pub fn CAMU_SetAutoExposureWindow( select: u32_, @@ -14596,15 +10928,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the region to base auto white balance off of for the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `x` - X of the region."] - #[doc = "* `y` - Y of the region."] - #[doc = "* `width` - Width of the region."] - #[doc = "* `height` - Height of the region."] + #[doc = "Sets the region to base auto white balance off of for the specified camera.\n @param select Camera to use.\n @param x X of the region.\n @param y Y of the region.\n @param width Width of the region.\n @param height Height of the region."] #[doc = ""] pub fn CAMU_SetAutoWhiteBalanceWindow( select: u32_, @@ -14616,45 +10940,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets whether the specified camera's noise filter is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to use."] - #[doc = "* `noiseFilter` - Whether the noise filter is enabled."] + #[doc = "Sets whether the specified camera's noise filter is enabled.\n @param select Camera to use.\n @param noiseFilter Whether the noise filter is enabled."] #[doc = ""] pub fn CAMU_SetNoiseFilter(select: u32_, noiseFilter: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Synchronizes the specified cameras' vsync timing."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select1` - First camera."] - #[doc = "* `select2` - Second camera."] + #[doc = "Synchronizes the specified cameras' vsync timing.\n @param select1 First camera.\n @param select2 Second camera."] #[doc = ""] pub fn CAMU_SynchronizeVsyncTiming(select1: u32_, select2: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the vsync timing record of the specified camera for the specified number of signals."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timing` - Pointer to write timing data to. (size \"past * sizeof(s64)\")"] - #[doc = "* `port` - Port to use."] - #[doc = "* `past` - Number of past timings to retrieve."] + #[doc = "Gets the vsync timing record of the specified camera for the specified number of signals.\n @param timing Pointer to write timing data to. (size \"past * sizeof(s64)\")\n @param port Port to use.\n @param past Number of past timings to retrieve."] #[doc = ""] pub fn CAMU_GetLatestVsyncTiming(timing: *mut s64, port: u32_, past: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the specified camera's stereo camera calibration data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to output the stereo camera data to."] + #[doc = "Gets the specified camera's stereo camera calibration data.\n @param data Pointer to output the stereo camera data to."] #[doc = ""] pub fn CAMU_GetStereoCameraCalibrationData( data: *mut CAMU_StereoCameraCalibrationData, @@ -14662,79 +10966,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the specified camera's stereo camera calibration data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Data to set."] + #[doc = "Sets the specified camera's stereo camera calibration data.\n @param data Data to set."] #[doc = ""] pub fn CAMU_SetStereoCameraCalibrationData(data: CAMU_StereoCameraCalibrationData) -> Result; } extern "C" { #[must_use] - #[doc = "Writes to the specified I2C register of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to write to."] - #[doc = "* `addr` - Address to write to."] - #[doc = "* `data` - Data to write."] + #[doc = "Writes to the specified I2C register of the specified camera.\n @param select Camera to write to.\n @param addr Address to write to.\n @param data Data to write."] #[doc = ""] pub fn CAMU_WriteRegisterI2c(select: u32_, addr: u16_, data: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes to the specified MCU variable of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to write to."] - #[doc = "* `addr` - Address to write to."] - #[doc = "* `data` - Data to write."] + #[doc = "Writes to the specified MCU variable of the specified camera.\n @param select Camera to write to.\n @param addr Address to write to.\n @param data Data to write."] #[doc = ""] pub fn CAMU_WriteMcuVariableI2c(select: u32_, addr: u16_, data: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Reads the specified I2C register of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to read data to."] - #[doc = "* `select` - Camera to read from."] - #[doc = "* `addr` - Address to read."] + #[doc = "Reads the specified I2C register of the specified camera.\n @param data Pointer to read data to.\n @param select Camera to read from.\n @param addr Address to read."] #[doc = ""] pub fn CAMU_ReadRegisterI2cExclusive(data: *mut u16_, select: u32_, addr: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Reads the specified MCU variable of the specified camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to read data to."] - #[doc = "* `select` - Camera to read from."] - #[doc = "* `addr` - Address to read."] + #[doc = "Reads the specified MCU variable of the specified camera.\n @param data Pointer to read data to.\n @param select Camera to read from.\n @param addr Address to read."] #[doc = ""] pub fn CAMU_ReadMcuVariableI2cExclusive(data: *mut u16_, select: u32_, addr: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the specified camera's image quality calibration data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Data to set."] + #[doc = "Sets the specified camera's image quality calibration data.\n @param data Data to set."] #[doc = ""] pub fn CAMU_SetImageQualityCalibrationData(data: CAMU_ImageQualityCalibrationData) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the specified camera's image quality calibration data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to write the quality data to."] + #[doc = "Gets the specified camera's image quality calibration data.\n @param data Pointer to write the quality data to."] #[doc = ""] pub fn CAMU_GetImageQualityCalibrationData( data: *mut CAMU_ImageQualityCalibrationData, @@ -14742,11 +11010,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures a camera with pre-packaged configuration data without a context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `Parameter` - to use."] + #[doc = "Configures a camera with pre-packaged configuration data without a context.\n @param Parameter to use."] #[doc = ""] pub fn CAMU_SetPackageParameterWithoutContext( param: CAMU_PackageParameterCameraSelect, @@ -14754,21 +11018,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures a camera with pre-packaged configuration data with a context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `Parameter` - to use."] + #[doc = "Configures a camera with pre-packaged configuration data with a context.\n @param Parameter to use."] #[doc = ""] pub fn CAMU_SetPackageParameterWithContext(param: CAMU_PackageParameterContext) -> Result; } extern "C" { #[must_use] - #[doc = "Configures a camera with pre-packaged configuration data without a context and extra resolution details."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `Parameter` - to use."] + #[doc = "Configures a camera with pre-packaged configuration data without a context and extra resolution details.\n @param Parameter to use."] #[doc = ""] pub fn CAMU_SetPackageParameterWithContextDetail( param: CAMU_PackageParameterContextDetail, @@ -14776,11 +11032,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the Y2R coefficient applied to image data by the camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coefficient` - Pointer to output the Y2R coefficient to."] + #[doc = "Gets the Y2R coefficient applied to image data by the camera.\n @param coefficient Pointer to output the Y2R coefficient to."] #[doc = ""] pub fn CAMU_GetSuitableY2rStandardCoefficient( coefficient: *mut Y2RU_StandardCoefficient, @@ -14788,11 +11040,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Plays the specified shutter sound."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sound` - Shutter sound to play."] + #[doc = "Plays the specified shutter sound.\n @param sound Shutter sound to play."] #[doc = ""] pub fn CAMU_PlayShutterSound(sound: CAMU_ShutterSoundType) -> Result; } @@ -14810,51 +11058,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the current activated camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Pointer to output the current activated camera to."] + #[doc = "Gets the current activated camera.\n @param select Pointer to output the current activated camera to."] #[doc = ""] pub fn CAMU_GetActivatedCamera(select: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current sleep camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Pointer to output the current sleep camera to."] + #[doc = "Gets the current sleep camera.\n @param select Pointer to output the current sleep camera to."] #[doc = ""] pub fn CAMU_GetSleepCamera(select: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the current sleep camera."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `select` - Camera to set."] + #[doc = "Sets the current sleep camera.\n @param select Camera to set."] #[doc = ""] pub fn CAMU_SetSleepCamera(select: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether to enable synchronization of left and right camera brightnesses."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `brightnessSynchronization` - Whether to enable brightness synchronization."] + #[doc = "Sets whether to enable synchronization of left and right camera brightnesses.\n @param brightnessSynchronization Whether to enable brightness synchronization."] #[doc = ""] pub fn CAMU_SetBrightnessSynchronization(brightnessSynchronization: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes CFGNOR."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Unknown, usually 1."] + #[doc = "Initializes CFGNOR.\n @param value Unknown, usually 1."] #[doc = ""] pub fn cfgnorInit(value: u8_) -> Result; } @@ -14865,33 +11093,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Dumps the NOR flash."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to dump to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Dumps the NOR flash.\n @param buf Buffer to dump to.\n @param size Size of the buffer."] #[doc = ""] pub fn cfgnorDumpFlash(buf: *mut u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes the NOR flash."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to write from."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Writes the NOR flash.\n @param buf Buffer to write from.\n @param size Size of the buffer."] #[doc = ""] pub fn cfgnorWriteFlash(buf: *mut u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes the CFGNOR session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Unknown, usually 1."] + #[doc = "Initializes the CFGNOR session.\n @param value Unknown, usually 1."] #[doc = ""] pub fn CFGNOR_Initialize(value: u8_) -> Result; } @@ -14903,25 +11117,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads data from NOR."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `offset` - Offset to read from."] - #[doc = "* `buf` - Buffer to read data to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Reads data from NOR.\n @param offset Offset to read from.\n @param buf Buffer to read data to.\n @param size Size of the buffer."] #[doc = ""] pub fn CFGNOR_ReadData(offset: u32_, buf: *mut u32_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes data to NOR."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `offset` - Offset to write to."] - #[doc = "* `buf` - Buffer to write data from."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Writes data to NOR.\n @param offset Offset to write to.\n @param buf Buffer to write data from.\n @param size Size of the buffer."] #[doc = ""] pub fn CFGNOR_WriteData(offset: u32_, buf: *mut u32_, size: u32_) -> Result; } @@ -15047,144 +11249,79 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the system's region from secure info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `region` - Pointer to output the region to. (see [`CFG_Region)`]"] + #[doc = "Gets the system's region from secure info.\n @param region Pointer to output the region to. (see [`CFG_Region)`]"] #[doc = ""] pub fn CFGU_SecureInfoGetRegion(region: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Generates a console-unique hash."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `appIDSalt` - Salt to use."] - #[doc = "* `hash` - Pointer to output the hash to."] + #[doc = "Generates a console-unique hash.\n @param appIDSalt Salt to use.\n @param hash Pointer to output the hash to."] #[doc = ""] pub fn CFGU_GenHashConsoleUnique(appIDSalt: u32_, hash: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the system's region is Canada or USA."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Pointer to output the result to. (0 = no, 1 = yes)"] + #[doc = "Gets whether the system's region is Canada or USA.\n @param value Pointer to output the result to. (0 = no, 1 = yes)"] #[doc = ""] pub fn CFGU_GetRegionCanadaUSA(value: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the system's model."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `model` - Pointer to output the model to. (see [`CFG_SystemModel)`]"] + #[doc = "Gets the system's model.\n @param model Pointer to output the model to. (see [`CFG_SystemModel)`]"] #[doc = ""] pub fn CFGU_GetSystemModel(model: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the system is a 2DS."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Pointer to output the result to. (0 = yes, 1 = no)"] + #[doc = "Gets whether the system is a 2DS.\n @param value Pointer to output the result to. (0 = yes, 1 = no)"] #[doc = ""] pub fn CFGU_GetModelNintendo2DS(value: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a string representing a country code."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `code` - Country code to use."] - #[doc = "* `string` - Pointer to output the string to."] + #[doc = "Gets a string representing a country code.\n @param code Country code to use.\n @param string Pointer to output the string to."] #[doc = ""] pub fn CFGU_GetCountryCodeString(code: u16_, string: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a country code ID from its string."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `string` - String to use."] - #[doc = "* `code` - Pointer to output the country code to."] + #[doc = "Gets a country code ID from its string.\n @param string String to use.\n @param code Pointer to output the country code to."] #[doc = ""] pub fn CFGU_GetCountryCodeID(string: u16_, code: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if NFC (code name: fangate) is supported."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `isSupported` - pointer to the output the result to."] + #[doc = "Checks if NFC (code name: fangate) is supported.\n @param isSupported pointer to the output the result to."] #[doc = ""] pub fn CFGU_IsNFCSupported(isSupported: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a config info block with flags = 2."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to retrieve."] - #[doc = "* `blkID` - ID of the block to retrieve."] - #[doc = "* `outData` - Pointer to write the block data to."] + #[doc = "Gets a config info block with flags = 2.\n @param size Size of the data to retrieve.\n @param blkID ID of the block to retrieve.\n @param outData Pointer to write the block data to."] #[doc = ""] pub fn CFGU_GetConfigInfoBlk2(size: u32_, blkID: u32_, outData: *mut ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a config info block with flags = 4."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to retrieve."] - #[doc = "* `blkID` - ID of the block to retrieve."] - #[doc = "* `outData` - Pointer to write the block data to."] + #[doc = "Gets a config info block with flags = 4.\n @param size Size of the data to retrieve.\n @param blkID ID of the block to retrieve.\n @param outData Pointer to write the block data to."] #[doc = ""] pub fn CFG_GetConfigInfoBlk4(size: u32_, blkID: u32_, outData: *mut ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Gets a config info block with flags = 8."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to retrieve."] - #[doc = "* `blkID` - ID of the block to retrieve."] - #[doc = "* `outData` - Pointer to write the block data to."] + #[doc = "Gets a config info block with flags = 8.\n @param size Size of the data to retrieve.\n @param blkID ID of the block to retrieve.\n @param outData Pointer to write the block data to."] #[doc = ""] pub fn CFG_GetConfigInfoBlk8(size: u32_, blkID: u32_, outData: *mut ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a config info block with flags = 4."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to retrieve."] - #[doc = "* `blkID` - ID of the block to retrieve."] - #[doc = "* `inData` - Pointer to block data to write."] + #[doc = "Sets a config info block with flags = 4.\n @param size Size of the data to retrieve.\n @param blkID ID of the block to retrieve.\n @param inData Pointer to block data to write."] #[doc = ""] pub fn CFG_SetConfigInfoBlk4(size: u32_, blkID: u32_, inData: *const ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a config info block with flags = 8."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to retrieve."] - #[doc = "* `blkID` - ID of the block to retrieve."] - #[doc = "* `inData` - Pointer to block data to write."] + #[doc = "Sets a config info block with flags = 8.\n @param size Size of the data to retrieve.\n @param blkID ID of the block to retrieve.\n @param inData Pointer to block data to write."] #[doc = ""] pub fn CFG_SetConfigInfoBlk8(size: u32_, blkID: u32_, inData: *const ::libc::c_void) -> Result; } @@ -15196,11 +11333,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the system's language."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `language` - Pointer to write the language to. (see [`CFG_Language)`]"] + #[doc = "Gets the system's language.\n @param language Pointer to write the language to. (see [`CFG_Language)`]"] #[doc = ""] pub fn CFGU_GetSystemLanguage(language: *mut u8_) -> Result; } @@ -15247,52 +11380,32 @@ extern "C" { pub fn CFGI_VerifySigSecureInfo() -> Result; } extern "C" { - #[must_use] - #[doc = "Gets the system's serial number."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `serial` - Pointer to output the serial to. (This is normally 0xF)"] + #[must_use] + #[doc = "Gets the system's serial number.\n @param serial Pointer to output the serial to. (This is normally 0xF)"] #[doc = ""] pub fn CFGI_SecureInfoGetSerialNumber(serial: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the 0x110-byte buffer containing the data for the LocalFriendCodeSeed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to output the buffer. (The size must be at least 0x110-bytes)"] + #[doc = "Gets the 0x110-byte buffer containing the data for the LocalFriendCodeSeed.\n @param data Pointer to output the buffer. (The size must be at least 0x110-bytes)"] #[doc = ""] pub fn CFGI_GetLocalFriendCodeSeedData(data: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the 64-bit local friend code seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Pointer to write the friend code seed to."] + #[doc = "Gets the 64-bit local friend code seed.\n @param seed Pointer to write the friend code seed to."] #[doc = ""] pub fn CFGI_GetLocalFriendCodeSeed(seed: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the 0x11-byte data following the SecureInfo signature."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to output the buffer. (The size must be at least 0x11-bytes)"] + #[doc = "Gets the 0x11-byte data following the SecureInfo signature.\n @param data Pointer to output the buffer. (The size must be at least 0x11-bytes)"] #[doc = ""] pub fn CFGI_GetSecureInfoData(data: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the 0x100-byte RSA-2048 SecureInfo signature."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `data` - Pointer to output the buffer. (The size must be at least 0x100-bytes)"] + #[doc = "Gets the 0x100-byte RSA-2048 SecureInfo signature.\n @param data Pointer to output the buffer. (The size must be at least 0x100-bytes)"] #[doc = ""] pub fn CFGI_GetSecureInfoSignature(data: *mut u8_) -> Result; } @@ -15528,62 +11641,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Acquires a capture unit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Pointer to output the capture unit to."] + #[doc = "Acquires a capture unit.\n @param capUnit Pointer to output the capture unit to."] #[doc = ""] pub fn CSND_AcquireCapUnit(capUnit: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Releases a capture unit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to release."] + #[doc = "Releases a capture unit.\n @param capUnit Capture unit to release."] #[doc = ""] pub fn CSND_ReleaseCapUnit(capUnit: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Flushes the data cache of a memory region."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `adr` - Address of the memory region."] - #[doc = "* `size` - Size of the memory region."] + #[doc = "Flushes the data cache of a memory region.\n @param adr Address of the memory region.\n @param size Size of the memory region."] #[doc = ""] pub fn CSND_FlushDataCache(adr: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Stores the data cache of a memory region."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `adr` - Address of the memory region."] - #[doc = "* `size` - Size of the memory region."] + #[doc = "Stores the data cache of a memory region.\n @param adr Address of the memory region.\n @param size Size of the memory region."] #[doc = ""] pub fn CSND_StoreDataCache(adr: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Invalidates the data cache of a memory region."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `adr` - Address of the memory region."] - #[doc = "* `size` - Size of the memory region."] + #[doc = "Invalidates the data cache of a memory region.\n @param adr Address of the memory region.\n @param size Size of the memory region."] #[doc = ""] pub fn CSND_InvalidateDataCache(adr: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Resets CSND."] - #[doc = ""] - #[doc = "Note: Currently breaks sound, don't use for now!"] + #[doc = "Resets CSND.\n Note: Currently breaks sound, don't use for now!"] #[doc = ""] pub fn CSND_Reset() -> Result; } @@ -15599,150 +11687,73 @@ extern "C" { pub fn csndExit(); } extern "C" { - #[doc = "Adds a command to the list, returning a buffer to write arguments to."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A buffer to write command arguments to."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cmdid` - ID of the command to add."] + #[doc = "Adds a command to the list, returning a buffer to write arguments to.\n @param cmdid ID of the command to add.\n @return A buffer to write command arguments to."] #[doc = ""] pub fn csndAddCmd(cmdid: ::libc::c_int) -> *mut u32_; } extern "C" { - #[doc = "Adds a command to the list, copying its arguments from a buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cmdid` - ID of the command to add."] - #[doc = "* `cmdparams` - Buffer containing the command's parameters."] + #[doc = "Adds a command to the list, copying its arguments from a buffer.\n @param cmdid ID of the command to add.\n @param cmdparams Buffer containing the command's parameters."] #[doc = ""] pub fn csndWriteCmd(cmdid: ::libc::c_int, cmdparams: *mut u8_); } extern "C" { #[must_use] - #[doc = "Executes pending CSND commands."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `waitDone` - Whether to wait until the commands have finished executing."] + #[doc = "Executes pending CSND commands.\n @param waitDone Whether to wait until the commands have finished executing."] #[doc = ""] pub fn csndExecCmds(waitDone: bool) -> Result; } extern "C" { - #[doc = "Sets a channel's play state, resetting registers on stop."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `value` - Play state to set."] + #[doc = "Sets a channel's play state, resetting registers on stop.\n @param channel Channel to use.\n @param value Play state to set."] #[doc = ""] pub fn CSND_SetPlayStateR(channel: u32_, value: u32_); } extern "C" { - #[doc = "Sets a channel's play state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `value` - Play state to set."] + #[doc = "Sets a channel's play state.\n @param channel Channel to use.\n @param value Play state to set."] #[doc = ""] pub fn CSND_SetPlayState(channel: u32_, value: u32_); } extern "C" { - #[doc = "Sets a channel's encoding."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `value` - Encoding to set."] + #[doc = "Sets a channel's encoding.\n @param channel Channel to use.\n @param value Encoding to set."] #[doc = ""] pub fn CSND_SetEncoding(channel: u32_, value: u32_); } extern "C" { - #[doc = "Sets the data of a channel's block."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `block` - Block to set."] - #[doc = "* `physaddr` - Physical address to set the block to."] - #[doc = "* `size` - Size of the block."] + #[doc = "Sets the data of a channel's block.\n @param channel Channel to use.\n @param block Block to set.\n @param physaddr Physical address to set the block to.\n @param size Size of the block."] #[doc = ""] pub fn CSND_SetBlock(channel: u32_, block: ::libc::c_int, physaddr: u32_, size: u32_); } extern "C" { - #[doc = "Sets whether to loop a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `value` - Whether to loop the channel."] + #[doc = "Sets whether to loop a channel.\n @param channel Channel to use.\n @param value Whether to loop the channel."] #[doc = ""] pub fn CSND_SetLooping(channel: u32_, value: u32_); } extern "C" { - #[doc = "Sets bit 7 of a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `set` - Value to set."] + #[doc = "Sets bit 7 of a channel.\n @param channel Channel to use.\n @param set Value to set."] #[doc = ""] pub fn CSND_SetBit7(channel: u32_, set: bool); } extern "C" { - #[doc = "Sets whether a channel should use interpolation."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `interp` - Whether to use interpolation."] + #[doc = "Sets whether a channel should use interpolation.\n @param channel Channel to use.\n @param interp Whether to use interpolation."] #[doc = ""] pub fn CSND_SetInterp(channel: u32_, interp: bool); } extern "C" { - #[doc = "Sets a channel's duty."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `duty` - Duty to set."] + #[doc = "Sets a channel's duty.\n @param channel Channel to use.\n @param duty Duty to set."] #[doc = ""] pub fn CSND_SetDuty(channel: u32_, duty: CSND_DutyCycle); } extern "C" { - #[doc = "Sets a channel's timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `timer` - Timer to set."] + #[doc = "Sets a channel's timer.\n @param channel Channel to use.\n @param timer Timer to set."] #[doc = ""] pub fn CSND_SetTimer(channel: u32_, timer: u32_); } extern "C" { - #[doc = "Sets a channel's volume."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `chnVolumes` - Channel volume data to set."] - #[doc = "* `capVolumes` - Capture volume data to set."] + #[doc = "Sets a channel's volume.\n @param channel Channel to use.\n @param chnVolumes Channel volume data to set.\n @param capVolumes Capture volume data to set."] #[doc = ""] pub fn CSND_SetVol(channel: u32_, chnVolumes: u32_, capVolumes: u32_); } extern "C" { - #[doc = "Sets a channel's ADPCM state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `block` - Current block."] - #[doc = "* `sample` - Current sample."] - #[doc = "* `index` - Current index."] + #[doc = "Sets a channel's ADPCM state.\n @param channel Channel to use.\n @param block Current block.\n @param sample Current sample.\n @param index Current index."] #[doc = ""] pub fn CSND_SetAdpcmState( channel: u32_, @@ -15752,26 +11763,12 @@ extern "C" { ); } extern "C" { - #[doc = "Sets a whether channel's ADPCM data should be reloaded when the second block is played."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to use."] - #[doc = "* `reload` - Whether to reload ADPCM data."] + #[doc = "Sets a whether channel's ADPCM data should be reloaded when the second block is played.\n @param channel Channel to use.\n @param reload Whether to reload ADPCM data."] #[doc = ""] pub fn CSND_SetAdpcmReload(channel: u32_, reload: bool); } extern "C" { - #[doc = "Sets CSND's channel registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to set."] - #[doc = "* `physaddr0` - Physical address of the first buffer to play."] - #[doc = "* `physaddr1` - Physical address of the second buffer to play."] - #[doc = "* `totalbytesize` - Total size of the data to play."] - #[doc = "* `chnVolumes` - Channel volume data."] - #[doc = "* `capVolumes` - Capture volume data."] + #[doc = "Sets CSND's channel registers.\n @param flags Flags to set.\n @param physaddr0 Physical address of the first buffer to play.\n @param physaddr1 Physical address of the second buffer to play.\n @param totalbytesize Total size of the data to play.\n @param chnVolumes Channel volume data.\n @param capVolumes Capture volume data."] #[doc = ""] pub fn CSND_SetChnRegs( flags: u32_, @@ -15783,14 +11780,7 @@ extern "C" { ); } extern "C" { - #[doc = "Sets CSND's PSG channel registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to set."] - #[doc = "* `chnVolumes` - Channel volume data."] - #[doc = "* `capVolumes` - Capture volume data."] - #[doc = "* `duty` - Duty value to set."] + #[doc = "Sets CSND's PSG channel registers.\n @param flags Flags to set.\n @param chnVolumes Channel volume data.\n @param capVolumes Capture volume data.\n @param duty Duty value to set."] #[doc = ""] pub fn CSND_SetChnRegsPSG( flags: u32_, @@ -15800,125 +11790,60 @@ extern "C" { ); } extern "C" { - #[doc = "Sets CSND's noise channel registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flags` - Flags to set."] - #[doc = "* `chnVolumes` - Channel volume data."] - #[doc = "* `capVolumes` - Capture volume data."] + #[doc = "Sets CSND's noise channel registers.\n @param flags Flags to set.\n @param chnVolumes Channel volume data.\n @param capVolumes Capture volume data."] #[doc = ""] pub fn CSND_SetChnRegsNoise(flags: u32_, chnVolumes: u32_, capVolumes: u32_); } extern "C" { - #[doc = "Sets whether a capture unit is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `enable` - Whether to enable the capture unit."] + #[doc = "Sets whether a capture unit is enabled.\n @param capUnit Capture unit to use.\n @param enable Whether to enable the capture unit."] #[doc = ""] pub fn CSND_CapEnable(capUnit: u32_, enable: bool); } extern "C" { - #[doc = "Sets whether a capture unit should repeat."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `repeat` - Whether the capture unit should repeat."] + #[doc = "Sets whether a capture unit should repeat.\n @param capUnit Capture unit to use.\n @param repeat Whether the capture unit should repeat."] #[doc = ""] pub fn CSND_CapSetRepeat(capUnit: u32_, repeat: bool); } extern "C" { - #[doc = "Sets a capture unit's format."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `eightbit` - Format to use."] + #[doc = "Sets a capture unit's format.\n @param capUnit Capture unit to use.\n @param eightbit Format to use."] #[doc = ""] pub fn CSND_CapSetFormat(capUnit: u32_, eightbit: bool); } extern "C" { - #[doc = "Sets a capture unit's second bit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `set` - Value to set."] + #[doc = "Sets a capture unit's second bit.\n @param capUnit Capture unit to use.\n @param set Value to set."] #[doc = ""] pub fn CSND_CapSetBit2(capUnit: u32_, set: bool); } extern "C" { - #[doc = "Sets a capture unit's timer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `timer` - Timer to set."] + #[doc = "Sets a capture unit's timer.\n @param capUnit Capture unit to use.\n @param timer Timer to set."] #[doc = ""] pub fn CSND_CapSetTimer(capUnit: u32_, timer: u32_); } extern "C" { - #[doc = "Sets a capture unit's buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `addr` - Buffer address to use."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Sets a capture unit's buffer.\n @param capUnit Capture unit to use.\n @param addr Buffer address to use.\n @param size Size of the buffer."] #[doc = ""] pub fn CSND_CapSetBuffer(capUnit: u32_, addr: u32_, size: u32_); } extern "C" { - #[doc = "Sets a capture unit's capture registers."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to use."] - #[doc = "* `flags` - Capture unit flags."] - #[doc = "* `addr` - Capture unit buffer address."] - #[doc = "* `size` - Buffer size."] + #[doc = "Sets a capture unit's capture registers.\n @param capUnit Capture unit to use.\n @param flags Capture unit flags.\n @param addr Capture unit buffer address.\n @param size Buffer size."] #[doc = ""] pub fn CSND_SetCapRegs(capUnit: u32_, flags: u32_, addr: u32_, size: u32_); } extern "C" { #[must_use] - #[doc = "Sets up DSP flags."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `waitDone` - Whether to wait for completion."] + #[doc = "Sets up DSP flags.\n @param waitDone Whether to wait for completion."] #[doc = ""] pub fn CSND_SetDspFlags(waitDone: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Updates CSND information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `waitDone` - Whether to wait for completion."] + #[doc = "Updates CSND information.\n @param waitDone Whether to wait for completion."] #[doc = ""] pub fn CSND_UpdateInfo(waitDone: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Plays a sound."] - #[doc = ""] - #[doc = "In this implementation if the loop mode is used, data1 must be in the range [data0 ; data0 + size]. Sound will be played once from data0 to data0 + size and then loop between data1 and data0+size."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `chn` - Channel to play the sound on."] - #[doc = "* `flags` - Flags containing information about the sound."] - #[doc = "* `sampleRate` - Sample rate of the sound."] - #[doc = "* `vol` - The volume, ranges from 0.0 to 1.0 included."] - #[doc = "* `pan` - The pan, ranges from -1.0 to 1.0 included."] - #[doc = "* `data0` - First block of sound data."] - #[doc = "* `data1` - Second block of sound data. This is the block that will be looped over."] - #[doc = "* `size` - Size of the sound data."] + #[doc = "Plays a sound.\n @param chn Channel to play the sound on.\n @param flags Flags containing information about the sound.\n @param sampleRate Sample rate of the sound.\n @param vol The volume, ranges from 0.0 to 1.0 included.\n @param pan The pan, ranges from -1.0 to 1.0 included.\n @param data0 First block of sound data.\n @param data1 Second block of sound data. This is the block that will be looped over.\n @param size Size of the sound data.\n\n In this implementation if the loop mode is used, data1 must be in the range [data0 ; data0 + size]. Sound will be played once from data0 to data0 + size and then loop between data1 and data0+size."] #[doc = ""] pub fn csndPlaySound( chn: ::libc::c_int, @@ -15932,66 +11857,29 @@ extern "C" { ) -> Result; } extern "C" { - #[doc = "Gets CSND's DSP flags."] - #[doc = ""] - #[doc = "Note: Requires previous CSND_UpdateInfo()"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outSemFlags` - Pointer to write semaphore flags to."] - #[doc = "* `outIrqFlags` - Pointer to write interrupt flags to."] + #[doc = "Gets CSND's DSP flags.\n Note: Requires previous CSND_UpdateInfo()\n @param outSemFlags Pointer to write semaphore flags to.\n @param outIrqFlags Pointer to write interrupt flags to."] #[doc = ""] pub fn csndGetDspFlags(outSemFlags: *mut u32_, outIrqFlags: *mut u32_); } extern "C" { - #[doc = "Gets a channel's information."] - #[doc = ""] - #[doc = "Note: Requires previous CSND_UpdateInfo()"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The channel's information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to get information for."] + #[doc = "Gets a channel's information.\n Note: Requires previous CSND_UpdateInfo()\n @param channel Channel to get information for.\n @return The channel's information."] #[doc = ""] pub fn csndGetChnInfo(channel: u32_) -> *mut CSND_ChnInfo; } extern "C" { - #[doc = "Gets a capture unit's information."] - #[doc = ""] - #[doc = "Note: Requires previous CSND_UpdateInfo()"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The capture unit's information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `capUnit` - Capture unit to get information for."] + #[doc = "Gets a capture unit's information.\n Note: Requires previous CSND_UpdateInfo()\n @param capUnit Capture unit to get information for.\n @return The capture unit's information."] #[doc = ""] pub fn csndGetCapInfo(capUnit: u32_) -> *mut CSND_CapInfo; } extern "C" { #[must_use] - #[doc = "Gets a channel's state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to get the state of."] - #[doc = "* `out` - Pointer to output channel information to."] + #[doc = "Gets a channel's state.\n @param channel Channel to get the state of.\n @param out Pointer to output channel information to."] #[doc = ""] pub fn csndGetState(channel: u32_, out: *mut CSND_ChnInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether a channel is playing."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Channel to check."] - #[doc = "* `status` - Pointer to output the channel status to."] + #[doc = "Gets whether a channel is playing.\n @param channel Channel to check.\n @param status Pointer to output the channel status to."] #[doc = ""] pub fn csndIsPlaying(channel: u32_, status: *mut u8_) -> Result; } @@ -16050,23 +11938,12 @@ impl Default for tag_dspHookCookie { pub type dspHookCookie = tag_dspHookCookie; extern "C" { #[must_use] - #[doc = "Initializes the dsp service."] - #[doc = ""] - #[doc = "Call this before calling any DSP_* function."] - #[doc = "It is done this way since you have to provide your binary when the 3DS leaves sleep mode anyway."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This will also unload any previously loaded DSP binary."] + #[doc = "Initializes the dsp service.\n\n Call this before calling any DSP_* function.\n @note This will also unload any previously loaded DSP binary.\n It is done this way since you have to provide your binary when the 3DS leaves sleep mode anyway."] #[doc = ""] pub fn dspInit() -> Result; } extern "C" { - #[doc = "Closes the dsp service."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This will also unload the DSP binary."] + #[doc = "Closes the dsp service.\n @note This will also unload the DSP binary."] #[doc = ""] pub fn dspExit(); } @@ -16076,106 +11953,54 @@ extern "C" { pub fn dspIsComponentLoaded() -> bool; } extern "C" { - #[doc = "Sets up a DSP status hook."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cookie` - Hook cookie to use."] - #[doc = "* `callback` - Function to call when DSP's status changes."] + #[doc = "Sets up a DSP status hook.\n @param cookie Hook cookie to use.\n @param callback Function to call when DSP's status changes."] #[doc = ""] pub fn dspHook(cookie: *mut dspHookCookie, callback: dspHookFn); } extern "C" { - #[doc = "Removes a DSP status hook."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cookie` - Hook cookie to remove."] + #[doc = "Removes a DSP status hook.\n @param cookie Hook cookie to remove."] #[doc = ""] pub fn dspUnhook(cookie: *mut dspHookCookie); } extern "C" { #[must_use] - #[doc = "Checks if a headphone is inserted."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `is_inserted` - Pointer to output the insertion status to."] + #[doc = "Checks if a headphone is inserted.\n @param is_inserted Pointer to output the insertion status to."] #[doc = ""] pub fn DSP_GetHeadphoneStatus(is_inserted: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Flushes the cache"] - #[doc = ""] - #[doc = "Flushes the cache for the specified memory range and invalidates the cache"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Beginning of the memory range to flush, inside the Linear or DSP memory regions"] - #[doc = "* `size` - Size of the memory range to flush"] + #[doc = "Flushes the cache\n @param address Beginning of the memory range to flush, inside the Linear or DSP memory regions\n @param size Size of the memory range to flush\n\n Flushes the cache for the specified memory range and invalidates the cache"] #[doc = ""] pub fn DSP_FlushDataCache(address: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Invalidates the cache"] - #[doc = ""] - #[doc = "Invalidates the cache for the specified memory range"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Beginning of the memory range to invalidate, inside the Linear or DSP memory regions"] - #[doc = "* `size` - Size of the memory range to flush"] + #[doc = "Invalidates the cache\n @param address Beginning of the memory range to invalidate, inside the Linear or DSP memory regions\n @param size Size of the memory range to flush\n\n Invalidates the cache for the specified memory range"] #[doc = ""] pub fn DSP_InvalidateDataCache(address: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Retrieves the handle of the DSP semaphore."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `semaphore` - Pointer to output the semaphore to."] + #[doc = "Retrieves the handle of the DSP semaphore.\n @param semaphore Pointer to output the semaphore to."] #[doc = ""] pub fn DSP_GetSemaphoreHandle(semaphore: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the DSP hardware semaphore value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Value to set."] + #[doc = "Sets the DSP hardware semaphore value.\n @param value Value to set."] #[doc = ""] pub fn DSP_SetSemaphore(value: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Masks the DSP hardware semaphore value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mask` - Mask to apply."] + #[doc = "Masks the DSP hardware semaphore value.\n @param mask Mask to apply."] #[doc = ""] pub fn DSP_SetSemaphoreMask(mask: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Loads a DSP binary and starts the DSP"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `component` - The program file address in memory"] - #[doc = "* `size` - The size of the program"] - #[doc = "* `prog_mask` - DSP memory block related ? Default is 0xff."] - #[doc = "* `data_mask` - DSP memory block related ? Default is 0xff."] - #[doc = "* `is_loaded` - Indicates if the DSP was succesfully loaded."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The binary must be signed (http://3dbrew.org/wiki/DSP_Binary)"] - #[doc = "* Seems to be called when the 3ds leaves the Sleep mode"] + #[doc = "Loads a DSP binary and starts the DSP\n @param component The program file address in memory\n @param size The size of the program\n @param prog_mask DSP memory block related ? Default is 0xff.\n @param data_mask DSP memory block related ? Default is 0xff.\n @param is_loaded Indicates if the DSP was succesfully loaded.\n\n @note The binary must be signed (http://3dbrew.org/wiki/DSP_Binary)\n @note Seems to be called when the 3ds leaves the Sleep mode"] #[doc = ""] pub fn DSP_LoadComponent( component: *const ::libc::c_void, @@ -16193,31 +12018,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Registers an event handle with the DSP through IPC"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Event handle to register."] - #[doc = "* `interrupt` - The type of interrupt that will trigger the event. Usual value is DSP_INTERRUPT_PIPE."] - #[doc = "* `channel` - The pipe channel. Usual value is 2"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* It is possible that interrupt are inverted"] + #[doc = "Registers an event handle with the DSP through IPC\n @param handle Event handle to register.\n @param interrupt The type of interrupt that will trigger the event. Usual value is DSP_INTERRUPT_PIPE.\n @param channel The pipe channel. Usual value is 2\n\n @note It is possible that interrupt are inverted"] #[doc = ""] pub fn DSP_RegisterInterruptEvents(handle: Handle, interrupt: u32_, channel: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Reads a pipe if possible."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - unknown. Usually 2"] - #[doc = "* `peer` - unknown. Usually 0"] - #[doc = "* `buffer` - The buffer that will store the values read from the pipe"] - #[doc = "* `length` - Length of the buffer"] - #[doc = "* `length_read` - Number of bytes read by the command"] + #[doc = "Reads a pipe if possible.\n @param channel unknown. Usually 2\n @param peer unknown. Usually 0\n @param buffer The buffer that will store the values read from the pipe\n @param length Length of the buffer\n @param length_read Number of bytes read by the command"] #[doc = ""] pub fn DSP_ReadPipeIfPossible( channel: u32_, @@ -16229,13 +12036,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Writes to a pipe."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - unknown. Usually 2"] - #[doc = "* `buffer` - The message to send to the DSP process"] - #[doc = "* `length` - Length of the message"] + #[doc = "Writes to a pipe.\n @param channel unknown. Usually 2\n @param buffer The message to send to the DSP process\n @param length Length of the message"] #[doc = ""] pub fn DSP_WriteProcessPipe( channel: u32_, @@ -16245,12 +12046,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Converts a DSP memory address to a virtual address usable by the process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dsp_address` - Address to convert."] - #[doc = "* `arm_address` - Pointer to output the converted address to."] + #[doc = "Converts a DSP memory address to a virtual address usable by the process.\n @param dsp_address Address to convert.\n @param arm_address Pointer to output the converted address to."] #[doc = ""] pub fn DSP_ConvertProcessAddressFromDspDram( dsp_address: u32_, @@ -16259,53 +12055,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads a DSP register"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regNo` - Offset of the hardware register, base address is 0x1EC40000"] - #[doc = "* `value` - Pointer to read the register value to."] + #[doc = "Reads a DSP register\n @param regNo Offset of the hardware register, base address is 0x1EC40000\n @param value Pointer to read the register value to."] #[doc = ""] pub fn DSP_RecvData(regNo: u16_, value: *mut u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if you can read a DSP register"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* This call might hang if the data is not ready. See [`DSP_SendDataIsEmpty`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regNo` - Offset of the hardware register, base address is 0x1EC40000"] - #[doc = "* `is_ready` - Pointer to write the ready status to."] + #[doc = "Checks if you can read a DSP register\n @param regNo Offset of the hardware register, base address is 0x1EC40000\n @param is_ready Pointer to write the ready status to.\n\n @warning This call might hang if the data is not ready. See [`DSP_SendDataIsEmpty`]"] #[doc = ""] pub fn DSP_RecvDataIsReady(regNo: u16_, is_ready: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Writes to a DSP register"] - #[doc = ""] - #[doc = "**Warning!**"] - #[doc = ""] - #[doc = "* This call might hang if the SendData is not empty. See [`DSP_SendDataIsEmpty`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regNo` - Offset of the hardware register, base address is 0x1EC40000"] - #[doc = "* `value` - Value to write."] + #[doc = "Writes to a DSP register\n @param regNo Offset of the hardware register, base address is 0x1EC40000\n @param value Value to write.\n\n @warning This call might hang if the SendData is not empty. See [`DSP_SendDataIsEmpty`]"] #[doc = ""] pub fn DSP_SendData(regNo: u16_, value: u16_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if you can write to a DSP register ?"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `regNo` - Offset of the hardware register, base address is 0x1EC40000"] - #[doc = "* `is_empty` - Pointer to write the empty status to."] + #[doc = "Checks if you can write to a DSP register ?\n @param regNo Offset of the hardware register, base address is 0x1EC40000\n @param is_empty Pointer to write the empty status to."] #[doc = ""] pub fn DSP_SendDataIsEmpty(regNo: u16_, is_empty: *mut bool) -> Result; } @@ -16314,15 +12082,7 @@ pub type FSPXI_File = u64_; pub type FSPXI_Directory = u64_; extern "C" { #[must_use] - #[doc = "Opens a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the file handle to."] - #[doc = "* `archive` - Archive containing the file."] - #[doc = "* `path` - Path of the file."] - #[doc = "* `flags` - Flags to open the file with."] - #[doc = "* `attributes` - Attributes of the file."] + #[doc = "Opens a file.\n @param out Pointer to output the file handle to.\n @param archive Archive containing the file.\n @param path Path of the file.\n @param flags Flags to open the file with.\n @param attributes Attributes of the file."] #[doc = ""] pub fn FSPXI_OpenFile( serviceHandle: Handle, @@ -16335,26 +12095,14 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive containing the file."] - #[doc = "* `path` - Path of the file."] + #[doc = "Deletes a file.\n @param archive Archive containing the file.\n @param path Path of the file."] #[doc = ""] pub fn FSPXI_DeleteFile(serviceHandle: Handle, archive: FSPXI_Archive, path: FS_Path) -> Result; } extern "C" { #[must_use] - #[doc = "Renames a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `srcArchive` - Archive containing the source file."] - #[doc = "* `srcPath` - Path of the source file."] - #[doc = "* `dstArchive` - Archive containing the destination file."] - #[doc = "* `dstPath` - Path of the destination file."] + #[doc = "Renames a file.\n @param srcArchive Archive containing the source file.\n @param srcPath Path of the source file.\n @param dstArchive Archive containing the destination file.\n @param dstPath Path of the destination file."] #[doc = ""] pub fn FSPXI_RenameFile( serviceHandle: Handle, @@ -16366,12 +12114,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Deletes a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive containing the directory."] - #[doc = "* `path` - Path of the directory."] + #[doc = "Deletes a directory.\n @param archive Archive containing the directory.\n @param path Path of the directory."] #[doc = ""] pub fn FSPXI_DeleteDirectory( serviceHandle: Handle, @@ -16381,14 +12124,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to create the file in."] - #[doc = "* `path` - Path of the file."] - #[doc = "* `attributes` - Attributes of the file."] - #[doc = "* `size` - Size of the file."] + #[doc = "Creates a file.\n @param archive Archive to create the file in.\n @param path Path of the file.\n @param attributes Attributes of the file.\n @param size Size of the file."] #[doc = ""] pub fn FSPXI_CreateFile( serviceHandle: Handle, @@ -16400,13 +12136,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to create the directory in."] - #[doc = "* `path` - Path of the directory."] - #[doc = "* `attributes` - Attributes of the directory."] + #[doc = "Creates a directory.\n @param archive Archive to create the directory in.\n @param path Path of the directory.\n @param attributes Attributes of the directory."] #[doc = ""] pub fn FSPXI_CreateDirectory( serviceHandle: Handle, @@ -16417,14 +12147,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Renames a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `srcArchive` - Archive containing the source directory."] - #[doc = "* `srcPath` - Path of the source directory."] - #[doc = "* `dstArchive` - Archive containing the destination directory."] - #[doc = "* `dstPath` - Path of the destination directory."] + #[doc = "Renames a directory.\n @param srcArchive Archive containing the source directory.\n @param srcPath Path of the source directory.\n @param dstArchive Archive containing the destination directory.\n @param dstPath Path of the destination directory."] #[doc = ""] pub fn FSPXI_RenameDirectory( serviceHandle: Handle, @@ -16436,13 +12159,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a directory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the directory handle to."] - #[doc = "* `archive` - Archive containing the directory."] - #[doc = "* `path` - Path of the directory."] + #[doc = "Opens a directory.\n @param out Pointer to output the directory handle to.\n @param archive Archive containing the directory.\n @param path Path of the directory."] #[doc = ""] pub fn FSPXI_OpenDirectory( serviceHandle: Handle, @@ -16453,15 +12170,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to read from."] - #[doc = "* `bytesRead` - Pointer to output the number of read bytes to."] - #[doc = "* `offset` - Offset to read from."] - #[doc = "* `buffer` - Buffer to read to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Reads from a file.\n @param file File to read from.\n @param bytesRead Pointer to output the number of read bytes to.\n @param offset Offset to read from.\n @param buffer Buffer to read to.\n @param size Size of the buffer."] #[doc = ""] pub fn FSPXI_ReadFile( serviceHandle: Handle, @@ -16474,13 +12183,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Calculate SHA256 of a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to calculate the hash of."] - #[doc = "* `buffer` - Buffer to output the hash to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Calculate SHA256 of a file.\n @param file File to calculate the hash of.\n @param buffer Buffer to output the hash to.\n @param size Size of the buffer."] #[doc = ""] pub fn FSPXI_CalculateFileHashSHA256( serviceHandle: Handle, @@ -16491,16 +12194,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Writes to a file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to write to."] - #[doc = "* `bytesWritten` - Pointer to output the number of bytes written to."] - #[doc = "* `offset` - Offset to write to."] - #[doc = "* `buffer` - Buffer to write from."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `flags` - Flags to use when writing."] + #[doc = "Writes to a file.\n @param file File to write to.\n @param bytesWritten Pointer to output the number of bytes written to.\n @param offset Offset to write to.\n @param buffer Buffer to write from.\n @param size Size of the buffer.\n @param flags Flags to use when writing."] #[doc = ""] pub fn FSPXI_WriteFile( serviceHandle: Handle, @@ -16514,15 +12208,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Calculates the MAC used in a DISA/DIFF header?"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - Unsure"] - #[doc = "* `inBuffer` - 0x100-byte DISA/DIFF input buffer."] - #[doc = "* `inSize` - Size of inBuffer."] - #[doc = "* `outBuffer` - Buffer to write MAC to."] - #[doc = "* `outSize` - Size of outBuffer."] + #[doc = "Calculates the MAC used in a DISA/DIFF header?\n @param file Unsure\n @param inBuffer 0x100-byte DISA/DIFF input buffer.\n @param inSize Size of inBuffer.\n @param outBuffer Buffer to write MAC to.\n @param outSize Size of outBuffer."] #[doc = ""] pub fn FSPXI_CalcSavegameMAC( serviceHandle: Handle, @@ -16535,46 +12221,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Get size of a file"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to get the size of."] - #[doc = "* `size` - Pointer to output size to."] + #[doc = "Get size of a file\n @param file File to get the size of.\n @param size Pointer to output size to."] #[doc = ""] pub fn FSPXI_GetFileSize(serviceHandle: Handle, file: FSPXI_File, size: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Set size of a file"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to set the size of"] - #[doc = "* `size` - Size to set the file to"] + #[doc = "Set size of a file\n @param file File to set the size of\n @param size Size to set the file to"] #[doc = ""] pub fn FSPXI_SetFileSize(serviceHandle: Handle, file: FSPXI_File, size: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Close a file"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to close"] + #[doc = "Close a file\n @param file File to close"] #[doc = ""] pub fn FSPXI_CloseFile(serviceHandle: Handle, file: FSPXI_File) -> Result; } extern "C" { #[must_use] - #[doc = "Reads one or more directory entries."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `directory` - Directory to read from."] - #[doc = "* `entriesRead` - Pointer to output the number of entries read to."] - #[doc = "* `entryCount` - Number of entries to read."] - #[doc = "* `entryOut` - Pointer to output directory entries to."] + #[doc = "Reads one or more directory entries.\n @param directory Directory to read from.\n @param entriesRead Pointer to output the number of entries read to.\n @param entryCount Number of entries to read.\n @param entryOut Pointer to output directory entries to."] #[doc = ""] pub fn FSPXI_ReadDirectory( serviceHandle: Handle, @@ -16586,23 +12251,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Close a directory"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `directory` - Directory to close."] + #[doc = "Close a directory\n @param directory Directory to close."] #[doc = ""] pub fn FSPXI_CloseDirectory(serviceHandle: Handle, directory: FSPXI_Directory) -> Result; } extern "C" { #[must_use] - #[doc = "Opens an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Pointer to output the opened archive to."] - #[doc = "* `id` - ID of the archive."] - #[doc = "* `path` - Path of the archive."] + #[doc = "Opens an archive.\n @param archive Pointer to output the opened archive to.\n @param id ID of the archive.\n @param path Path of the archive."] #[doc = ""] pub fn FSPXI_OpenArchive( serviceHandle: Handle, @@ -16613,13 +12268,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks if the archive contains a file at path."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to check."] - #[doc = "* `out` - Pointer to output existence to."] - #[doc = "* `path` - Path to check for file"] + #[doc = "Checks if the archive contains a file at path.\n @param archive Archive to check.\n @param out Pointer to output existence to.\n @param path Path to check for file"] #[doc = ""] pub fn FSPXI_HasFile( serviceHandle: Handle, @@ -16630,13 +12279,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks if the archive contains a directory at path."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to check."] - #[doc = "* `out` - Pointer to output existence to."] - #[doc = "* `path` - Path to check for directory"] + #[doc = "Checks if the archive contains a directory at path.\n @param archive Archive to check.\n @param out Pointer to output existence to.\n @param path Path to check for directory"] #[doc = ""] pub fn FSPXI_HasDirectory( serviceHandle: Handle, @@ -16647,37 +12290,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Commits an archive's save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to commit."] - #[doc = "* `id` - Archive action sent by FSUSER_ControlArchive. Must not be 0 or 0x789D"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Unsure why id is sent. This appears to be the default action for FSUSER_ControlArchive, with every action other than 0 and 0x789D being sent to this command."] + #[doc = "Commits an archive's save data.\n @param archive Archive to commit.\n @param id Archive action sent by FSUSER_ControlArchive. Must not be 0 or 0x789D\n @remark Unsure why id is sent. This appears to be the default action for FSUSER_ControlArchive, with every action other than 0 and 0x789D being sent to this command."] #[doc = ""] pub fn FSPXI_CommitSaveData(serviceHandle: Handle, archive: FSPXI_Archive, id: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Close an archive"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive to close."] + #[doc = "Close an archive\n @param archive Archive to close."] #[doc = ""] pub fn FSPXI_CloseArchive(serviceHandle: Handle, archive: FSPXI_Archive) -> Result; } extern "C" { #[must_use] - #[doc = "Unknown 0x17. Appears to be an \"is archive handle valid\" command?"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - Archive handle to check validity of."] - #[doc = "* `out` - Pointer to output validity to."] + #[doc = "Unknown 0x17. Appears to be an \"is archive handle valid\" command?\n @param archive Archive handle to check validity of.\n @param out Pointer to output validity to."] #[doc = ""] pub fn FSPXI_Unknown0x17( serviceHandle: Handle, @@ -16687,21 +12312,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the inserted card type."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the card type to."] + #[doc = "Gets the inserted card type.\n @param out Pointer to output the card type to."] #[doc = ""] pub fn FSPXI_GetCardType(serviceHandle: Handle, out: *mut FS_CardType) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC archive resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the archive resource information to."] + #[doc = "Gets the SDMC archive resource information.\n @param out Pointer to output the archive resource information to."] #[doc = ""] pub fn FSPXI_GetSdmcArchiveResource( serviceHandle: Handle, @@ -16710,11 +12327,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the NAND archive resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the archive resource information to."] + #[doc = "Gets the NAND archive resource information.\n @param out Pointer to output the archive resource information to."] #[doc = ""] pub fn FSPXI_GetNandArchiveResource( serviceHandle: Handle, @@ -16723,95 +12336,55 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the error code from the SDMC FatFS driver"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the error code to"] + #[doc = "Gets the error code from the SDMC FatFS driver\n @param out Pointer to output the error code to"] #[doc = ""] pub fn FSPXI_GetSdmcFatFsError(serviceHandle: Handle, out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether PXIFS0 detects the SD"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the detection status to"] + #[doc = "Gets whether PXIFS0 detects the SD\n @param out Pointer to output the detection status to"] #[doc = ""] pub fn FSPXI_IsSdmcDetected(serviceHandle: Handle, out: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether PXIFS0 can write to the SD"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the writable status to"] + #[doc = "Gets whether PXIFS0 can write to the SD\n @param out Pointer to output the writable status to"] #[doc = ""] pub fn FSPXI_IsSdmcWritable(serviceHandle: Handle, out: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC CID"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the CID to."] - #[doc = "* `size` - Size of buffer."] + #[doc = "Gets the SDMC CID\n @param out Buffer to output the CID to.\n @param size Size of buffer."] #[doc = ""] pub fn FSPXI_GetSdmcCid(serviceHandle: Handle, out: *mut ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND CID"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the CID to."] - #[doc = "* `size` - Size of buffer."] + #[doc = "Gets the NAND CID\n @param out Buffer to output the CID to.\n @param size Size of buffer."] #[doc = ""] pub fn FSPXI_GetNandCid(serviceHandle: Handle, out: *mut ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC speed info"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the speed info to."] + #[doc = "Gets the SDMC speed info\n @param out Buffer to output the speed info to."] #[doc = ""] pub fn FSPXI_GetSdmcSpeedInfo(serviceHandle: Handle, out: *mut FS_SdMmcSpeedInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND speed info"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the speed info to."] + #[doc = "Gets the NAND speed info\n @param out Buffer to output the speed info to."] #[doc = ""] pub fn FSPXI_GetNandSpeedInfo(serviceHandle: Handle, out: *mut FS_SdMmcSpeedInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the SDMC log"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the log to."] - #[doc = "* `size` - Size of buffer."] + #[doc = "Gets the SDMC log\n @param out Buffer to output the log to.\n @param size Size of buffer."] #[doc = ""] pub fn FSPXI_GetSdmcLog(serviceHandle: Handle, out: *mut ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the NAND log"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Buffer to output the log to."] - #[doc = "* `size` - Size of buffer."] + #[doc = "Gets the NAND log\n @param out Buffer to output the log to.\n @param size Size of buffer."] #[doc = ""] pub fn FSPXI_GetNandLog(serviceHandle: Handle, out: *mut ::libc::c_void, size: u32_) -> Result; } @@ -16829,62 +12402,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets whether a card is inserted."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inserted` - Pointer to output the insertion status to."] + #[doc = "Gets whether a card is inserted.\n @param inserted Pointer to output the insertion status to."] #[doc = ""] pub fn FSPXI_CardSlotIsInserted(serviceHandle: Handle, inserted: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Powers on the card slot."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Powers on the card slot.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSPXI_CardSlotPowerOn(serviceHandle: Handle, status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Powers off the card slot."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Powers off the card slot.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSPXI_CardSlotPowerOff(serviceHandle: Handle, status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the card's power status."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `status` - Pointer to output the power status to."] + #[doc = "Gets the card's power status.\n @param status Pointer to output the power status to."] #[doc = ""] pub fn FSPXI_CardSlotGetCardIFPowerStatus(serviceHandle: Handle, status: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct command."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] + #[doc = "Executes a CARDNOR direct command.\n @param commandId ID of the command."] #[doc = ""] pub fn FSPXI_CardNorDirectCommand(serviceHandle: Handle, commandId: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct command with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] + #[doc = "Executes a CARDNOR direct command with an address.\n @param commandId ID of the command.\n @param address Address to provide."] #[doc = ""] pub fn FSPXI_CardNorDirectCommandWithAddress( serviceHandle: Handle, @@ -16894,13 +12442,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct read."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR direct read.\n @param commandId ID of the command.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSPXI_CardNorDirectRead( serviceHandle: Handle, @@ -16911,14 +12453,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct read with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR direct read with an address.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSPXI_CardNorDirectReadWithAddress( serviceHandle: Handle, @@ -16930,17 +12465,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct write."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `output` - Input buffer."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Stubbed in latest firmware, since ?.?.?"] + #[doc = "Executes a CARDNOR direct write.\n @param commandId ID of the command.\n @param size Size of the input buffer.\n @param output Input buffer.\n @remark Stubbed in latest firmware, since ?.?.?"] #[doc = ""] pub fn FSPXI_CardNorDirectWrite( serviceHandle: Handle, @@ -16951,14 +12476,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct write with an address."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `input` - Input buffer."] + #[doc = "Executes a CARDNOR direct write with an address.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the input buffer.\n @param input Input buffer."] #[doc = ""] pub fn FSPXI_CardNorDirectWriteWithAddress( serviceHandle: Handle, @@ -16970,14 +12488,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR 4xIO direct read."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `commandId` - ID of the command."] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the output buffer."] - #[doc = "* `output` - Output buffer."] + #[doc = "Executes a CARDNOR 4xIO direct read.\n @param commandId ID of the command.\n @param address Address to provide.\n @param size Size of the output buffer.\n @param output Output buffer."] #[doc = ""] pub fn FSPXI_CardNorDirectRead_4xIO( serviceHandle: Handle, @@ -16989,13 +12500,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct CPU write without verify."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Address to provide."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `output` - Input buffer."] + #[doc = "Executes a CARDNOR direct CPU write without verify.\n @param address Address to provide.\n @param size Size of the input buffer.\n @param output Input buffer."] #[doc = ""] pub fn FSPXI_CardNorDirectCpuWriteWithoutVerify( serviceHandle: Handle, @@ -17006,11 +12511,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Executes a CARDNOR direct sector erase without verify."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `address` - Address to provide."] + #[doc = "Executes a CARDNOR direct sector erase without verify.\n @param address Address to provide."] #[doc = ""] pub fn FSPXI_CardNorDirectSectorEraseWithoutVerify( serviceHandle: Handle, @@ -17019,12 +12520,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an NCCH's product info"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Pointer to output the product info to."] - #[doc = "* `archive` - Open NCCH content archive"] + #[doc = "Gets an NCCH's product info\n @param info Pointer to output the product info to.\n @param archive Open NCCH content archive"] #[doc = ""] pub fn FSPXI_GetProductInfo( serviceHandle: Handle, @@ -17034,66 +12530,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the CARDSPI baud rate."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `baudRate` - Baud rate to set."] + #[doc = "Sets the CARDSPI baud rate.\n @param baudRate Baud rate to set."] #[doc = ""] pub fn FSPXI_SetCardSpiBaudrate(serviceHandle: Handle, baudRate: FS_CardSpiBaudRate) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the CARDSPI bus mode."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `busMode` - Bus mode to set."] + #[doc = "Sets the CARDSPI bus mode.\n @param busMode Bus mode to set."] #[doc = ""] pub fn FSPXI_SetCardSpiBusMode(serviceHandle: Handle, busMode: FS_CardSpiBusMode) -> Result; } extern "C" { #[must_use] - #[doc = "Sends initialization info to ARM9"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unk` - FS sends *(0x1FF81086)"] + #[doc = "Sends initialization info to ARM9\n @param unk FS sends *(0x1FF81086)"] #[doc = ""] pub fn FSPXI_SendInitializeInfoTo9(serviceHandle: Handle, unk: u8_) -> Result; } extern "C" { - #[must_use] - #[doc = "Creates ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] + #[must_use] + #[doc = "Creates ext save data.\n @param info Info of the save data."] #[doc = ""] pub fn FSPXI_CreateExtSaveData(serviceHandle: Handle, info: FS_ExtSaveDataInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Deletes ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Info of the save data."] + #[doc = "Deletes ext save data.\n @param info Info of the save data."] #[doc = ""] pub fn FSPXI_DeleteExtSaveData(serviceHandle: Handle, info: FS_ExtSaveDataInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Enumerates ext save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `idsWritten` - Pointer to output the number of IDs written to."] - #[doc = "* `idsSize` - Size of the IDs buffer."] - #[doc = "* `mediaType` - Media type to enumerate over."] - #[doc = "* `idSize` - Size of each ID element."] - #[doc = "* `shared` - Whether to enumerate shared ext save data."] - #[doc = "* `ids` - Pointer to output IDs to."] + #[doc = "Enumerates ext save data.\n @param idsWritten Pointer to output the number of IDs written to.\n @param idsSize Size of the IDs buffer.\n @param mediaType Media type to enumerate over.\n @param idSize Size of each ID element.\n @param shared Whether to enumerate shared ext save data.\n @param ids Pointer to output IDs to."] #[doc = ""] pub fn FSPXI_EnumerateExtSaveData( serviceHandle: Handle, @@ -17107,14 +12574,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a special content's index."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `index` - Pointer to output the index to."] - #[doc = "* `mediaType` - Media type of the special content."] - #[doc = "* `programId` - Program ID owning the special content."] - #[doc = "* `type` - Type of special content."] + #[doc = "Gets a special content's index.\n @param index Pointer to output the index to.\n @param mediaType Media type of the special content.\n @param programId Program ID owning the special content.\n @param type Type of special content."] #[doc = ""] pub fn FSPXI_GetSpecialContentIndex( serviceHandle: Handle, @@ -17126,13 +12586,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy ROM header of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy ROM header to. (size = 0x3B4)"] + #[doc = "Gets the legacy ROM header of a program.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy ROM header to. (size = 0x3B4)"] #[doc = ""] pub fn FSPXI_GetLegacyRomHeader( serviceHandle: Handle, @@ -17143,14 +12597,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy banner data of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `banner` - Pointer to output the legacy banner data to. (size = 0x23C0)"] - #[doc = "* `unk` - Unknown. Always 1?"] + #[doc = "Gets the legacy banner data of a program.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param banner Pointer to output the legacy banner data to. (size = 0x23C0)\n @param unk Unknown. Always 1?"] #[doc = ""] pub fn FSPXI_GetLegacyBannerData( serviceHandle: Handle, @@ -17162,11 +12609,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Formats the CARDNOR device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unk` - Unknown. Transaction?"] + #[doc = "Formats the CARDNOR device.\n @param unk Unknown. Transaction?"] #[doc = ""] pub fn FSPXI_FormatCardNorDevice(serviceHandle: Handle, unk: u32_) -> Result; } @@ -17196,23 +12639,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the CTR SDMC root path."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to output the root path to."] - #[doc = "* `length` - Length of the output buffer in bytes."] + #[doc = "Gets the CTR SDMC root path.\n @param out Pointer to output the root path to.\n @param length Length of the output buffer in bytes."] #[doc = ""] pub fn FSPXI_GetSdmcCtrRootPath(serviceHandle: Handle, out: *mut u16_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets an archive's resource information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archiveResource` - Pointer to output the archive resource information to."] - #[doc = "* `mediaType` - System media type to check."] + #[doc = "Gets an archive's resource information.\n @param archiveResource Pointer to output the archive resource information to.\n @param mediaType System media type to check."] #[doc = ""] pub fn FSPXI_GetArchiveResource( serviceHandle: Handle, @@ -17222,11 +12655,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Exports the integrity verification seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Pointer to output the seed to."] + #[doc = "Exports the integrity verification seed.\n @param seed Pointer to output the seed to."] #[doc = ""] pub fn FSPXI_ExportIntegrityVerificationSeed( serviceHandle: Handle, @@ -17235,11 +12664,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Imports an integrity verification seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Seed to import."] + #[doc = "Imports an integrity verification seed.\n @param seed Seed to import."] #[doc = ""] pub fn FSPXI_ImportIntegrityVerificationSeed( serviceHandle: Handle, @@ -17248,14 +12673,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the legacy sub banner data of a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bannerSize` - Size of the banner."] - #[doc = "* `mediaType` - Media type of the program."] - #[doc = "* `programId` - ID of the program."] - #[doc = "* `header` - Pointer to output the legacy sub banner data to."] + #[doc = "Gets the legacy sub banner data of a program.\n @param bannerSize Size of the banner.\n @param mediaType Media type of the program.\n @param programId ID of the program.\n @param header Pointer to output the legacy sub banner data to."] #[doc = ""] pub fn FSPXI_GetLegacySubBannerData( serviceHandle: Handle, @@ -17267,12 +12685,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Generates random bytes. Uses same code as PSPXI_GenerateRandomBytes"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to output random bytes to."] - #[doc = "* `size` - Size of buffer."] + #[doc = "Generates random bytes. Uses same code as PSPXI_GenerateRandomBytes\n @param buf Buffer to output random bytes to.\n @param size Size of buffer."] #[doc = ""] pub fn FSPXI_GenerateRandomBytes( serviceHandle: Handle, @@ -17282,14 +12695,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the last modified time of a file in an archive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `archive` - The archive that contains the file."] - #[doc = "* `out` - The pointer to write the timestamp to."] - #[doc = "* `path` - The UTF-16 path of the file."] - #[doc = "* `size` - The size of the path."] + #[doc = "Gets the last modified time of a file in an archive.\n @param archive The archive that contains the file.\n @param out The pointer to write the timestamp to.\n @param path The UTF-16 path of the file.\n @param size The size of the path."] #[doc = ""] pub fn FSPXI_GetFileLastModified( serviceHandle: Handle, @@ -17301,14 +12707,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads from a special file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bytesRead` - Pointer to output the number of bytes read to."] - #[doc = "* `fileOffset` - Offset of the file."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `data` - Buffer to read to."] + #[doc = "Reads from a special file.\n @param bytesRead Pointer to output the number of bytes read to.\n @param fileOffset Offset of the file.\n @param size Size of the buffer.\n @param data Buffer to read to."] #[doc = ""] pub fn FSPXI_ReadSpecialFile( serviceHandle: Handle, @@ -17320,21 +12719,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the size of a special file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `fileSize` - Pointer to output the size to."] + #[doc = "Gets the size of a special file.\n @param fileSize Pointer to output the size to."] #[doc = ""] pub fn FSPXI_GetSpecialFileSize(serviceHandle: Handle, fileSize: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Initiates a device move as the source device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Pointer to output the context to."] + #[doc = "Initiates a device move as the source device.\n @param context Pointer to output the context to."] #[doc = ""] pub fn FSPXI_StartDeviceMoveAsSource( serviceHandle: Handle, @@ -17343,12 +12734,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initiates a device move as the destination device."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `clear` - Whether to clear the device's data first."] + #[doc = "Initiates a device move as the destination device.\n @param context Context to use.\n @param clear Whether to clear the device's data first."] #[doc = ""] pub fn FSPXI_StartDeviceMoveAsDestination( serviceHandle: Handle, @@ -17358,18 +12744,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads data and stores SHA256 hashes of blocks"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to read from."] - #[doc = "* `bytesRead` - Pointer to output the number of read bytes to."] - #[doc = "* `offset` - Offset to read from."] - #[doc = "* `readBuffer` - Pointer to store read data in."] - #[doc = "* `readBufferSize` - Size of readBuffer."] - #[doc = "* `hashtable` - Pointer to store SHA256 hashes in."] - #[doc = "* `hashtableSize` - Size of hashtable."] - #[doc = "* `unk` - Unknown. Always 0x00001000? Possibly block size?"] + #[doc = "Reads data and stores SHA256 hashes of blocks\n @param file File to read from.\n @param bytesRead Pointer to output the number of read bytes to.\n @param offset Offset to read from.\n @param readBuffer Pointer to store read data in.\n @param readBufferSize Size of readBuffer.\n @param hashtable Pointer to store SHA256 hashes in.\n @param hashtableSize Size of hashtable.\n @param unk Unknown. Always 0x00001000? Possibly block size?"] #[doc = ""] pub fn FSPXI_ReadFileSHA256( serviceHandle: Handle, @@ -17385,19 +12760,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Assumedly writes data and stores SHA256 hashes of blocks"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `file` - File to write to."] - #[doc = "* `bytesWritten` - Pointer to output the number of written bytes to."] - #[doc = "* `offset` - Offset to write to."] - #[doc = "* `writeBuffer` - Buffer to write from."] - #[doc = "* `writeBufferSize` - Size of writeBuffer."] - #[doc = "* `hashtable` - Pointer to store SHA256 hashes in."] - #[doc = "* `hashtableSize` - Size of hashtable"] - #[doc = "* `unk1` - Unknown. Might match with ReadFileSHA256's unknown?"] - #[doc = "* `unk2` - Unknown. Might match with ReadFileSHA256's unknown?"] + #[doc = "Assumedly writes data and stores SHA256 hashes of blocks\n @param file File to write to.\n @param bytesWritten Pointer to output the number of written bytes to.\n @param offset Offset to write to.\n @param writeBuffer Buffer to write from.\n @param writeBufferSize Size of writeBuffer.\n @param hashtable Pointer to store SHA256 hashes in.\n @param hashtableSize Size of hashtable\n @param unk1 Unknown. Might match with ReadFileSHA256's unknown?\n @param unk2 Unknown. Might match with ReadFileSHA256's unknown?"] #[doc = ""] pub fn FSPXI_WriteFileSHA256( serviceHandle: Handle, @@ -17414,43 +12777,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures CTRCARD latency emulation."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `latency` - Latency to apply."] + #[doc = "Configures CTRCARD latency emulation.\n @param latency Latency to apply."] #[doc = ""] pub fn FSPXI_SetCtrCardLatencyParameter(serviceHandle: Handle, latency: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the file system priority."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `priority` - Priority to set."] + #[doc = "Sets the file system priority.\n @param priority Priority to set."] #[doc = ""] pub fn FSPXI_SetPriority(serviceHandle: Handle, priority: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Toggles cleaning up invalid save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enable` - Whether to enable cleaning up invalid save data."] + #[doc = "Toggles cleaning up invalid save data.\n @param enable Whether to enable cleaning up invalid save data."] #[doc = ""] pub fn FSPXI_SwitchCleanupInvalidSaveData(serviceHandle: Handle, enable: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Enumerates system save data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `idsWritten` - Pointer to output the number of IDs written to."] - #[doc = "* `idsSize` - Size of the IDs buffer."] - #[doc = "* `ids` - Pointer to output IDs to."] + #[doc = "Enumerates system save data.\n @param idsWritten Pointer to output the number of IDs written to.\n @param idsSize Size of the IDs buffer.\n @param ids Pointer to output IDs to."] #[doc = ""] pub fn FSPXI_EnumerateSystemSaveData( serviceHandle: Handle, @@ -17461,13 +12806,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads the NAND report."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unk` - Unknown"] - #[doc = "* `buffer` - Buffer to write the report to."] - #[doc = "* `size` - Size of buffer"] + #[doc = "Reads the NAND report.\n @param unk Unknown\n @param buffer Buffer to write the report to.\n @param size Size of buffer"] #[doc = ""] pub fn FSPXI_ReadNandReport( serviceHandle: Handle, @@ -17478,11 +12817,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unknown command 0x56"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Called by FSUSER_ControlArchive with ArchiveAction 0x789D"] + #[doc = "Unknown command 0x56\n @remark Called by FSUSER_ControlArchive with ArchiveAction 0x789D"] #[doc = ""] pub fn FSPXI_Unknown0x56( serviceHandle: Handle, @@ -17503,24 +12838,13 @@ extern "C" { pub fn fsRegExit(); } extern "C" { - #[doc = "Gets the current fs:REG session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current fs:REG session handle."] + #[doc = "Gets the current fs:REG session handle.\n @return The current fs:REG session handle."] #[doc = ""] pub fn fsRegGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Registers a program's storage information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pid` - The Process ID of the program."] - #[doc = "* `programHandle` - The program handle."] - #[doc = "* `programInfo` - Information about the program."] - #[doc = "* `storageInfo` - Storage information to register."] + #[doc = "Registers a program's storage information.\n @param pid The Process ID of the program.\n @param programHandle The program handle.\n @param programInfo Information about the program.\n @param storageInfo Storage information to register."] #[doc = ""] pub fn FSREG_Register( pid: u32_, @@ -17531,23 +12855,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unregisters a program's storage information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pid` - The Process ID of the program."] + #[doc = "Unregisters a program's storage information.\n @param pid The Process ID of the program."] #[doc = ""] pub fn FSREG_Unregister(pid: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Retrives the exheader information set(s) (SCI+ACI) about a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `exheaderInfos[out]` - Pointer to the output exheader information set(s)."] - #[doc = "* `maxNumEntries` - The maximum number of entries."] - #[doc = "* `programHandle` - The program handle."] + #[doc = "Retrives the exheader information set(s) (SCI+ACI) about a program.\n @param exheaderInfos[out] Pointer to the output exheader information set(s).\n @param maxNumEntries The maximum number of entries.\n @param programHandle The program handle."] #[doc = ""] pub fn FSREG_GetProgramInfo( exheaderInfos: *mut ExHeader_Info, @@ -17557,12 +12871,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Loads a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle[out]` - Pointer to the output the program handle to."] - #[doc = "* `programInfo` - Information about the program to load."] + #[doc = "Loads a program.\n @param programHandle[out] Pointer to the output the program handle to.\n @param programInfo Information about the program to load."] #[doc = ""] pub fn FSREG_LoadProgram( programHandle: *mut u64_, @@ -17571,21 +12880,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unloads a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle` - The program handle."] + #[doc = "Unloads a program.\n @param programHandle The program handle."] #[doc = ""] pub fn FSREG_UnloadProgram(programHandle: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if a program has been loaded by fs:REG."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle` - The program handle."] + #[doc = "Checks if a program has been loaded by fs:REG.\n @param programHandle The program handle."] #[doc = ""] pub fn FSREG_CheckHostLoadId(programHandle: u64_) -> Result; } @@ -18882,21 +14183,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the login status of the current user."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write the current user's login status to."] + #[doc = "Gets the login status of the current user.\n @param state Pointer to write the current user's login status to."] #[doc = ""] pub fn FRDU_HasLoggedIn(state: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the online status of the current user."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write the current user's online status to."] + #[doc = "Gets the online status of the current user.\n @param state Pointer to write the current user's online status to."] #[doc = ""] pub fn FRDU_IsOnline(state: *mut bool) -> Result; } @@ -18908,33 +14201,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Log in to Nintendo's friend server."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Event to signal when Login is done."] + #[doc = "Log in to Nintendo's friend server.\n @param event Event to signal when Login is done."] #[doc = ""] pub fn FRD_Login(event: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's friend key."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `key` - Pointer to write the current user's friend key to."] + #[doc = "Gets the current user's friend key.\n @param key Pointer to write the current user's friend key to."] #[doc = ""] pub fn FRD_GetMyFriendKey(key: *mut FriendKey) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's privacy information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `isPublicMode` - Determines whether friends are notified of the current user's online status."] - #[doc = "* `isShowGameName` - Determines whether friends are notified of the application that the current user is running."] - #[doc = "* `isShowPlayedGame` - Determiens whether to display the current user's game history."] + #[doc = "Gets the current user's privacy information.\n @param isPublicMode Determines whether friends are notified of the current user's online status.\n @param isShowGameName Determines whether friends are notified of the application that the current user is running.\n @param isShowPlayedGame Determiens whether to display the current user's game history."] #[doc = ""] pub fn FRD_GetMyPreference( isPublicMode: *mut bool, @@ -18944,76 +14223,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the current user's profile information."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `profile` - Pointer to write the current user's profile information to."] + #[doc = "Gets the current user's profile information.\n @param profile Pointer to write the current user's profile information to."] #[doc = ""] pub fn FRD_GetMyProfile(profile: *mut FriendProfile) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's screen name."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the current user's screen name.\n @param name Pointer to write the current user's screen name to.\n @param max_size Max size of the screen name."] #[doc = ""] - #[doc = "* `name` - Pointer to write the current user's screen name to."] - #[doc = "* `max_size` - Max size of the screen name."] - #[doc = ""] - pub fn FRD_GetMyScreenName(name: *mut ::libc::c_char, max_size: size_t) -> Result; + pub fn FRD_GetMyScreenName(name: *mut ::libc::c_char, max_size: usize) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's Mii data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mii` - Pointer to write the current user's mii data to."] + #[doc = "Gets the current user's Mii data.\n @param mii Pointer to write the current user's mii data to."] #[doc = ""] pub fn FRD_GetMyMii(mii: *mut MiiData) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's playing game."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleId` - Pointer to write the current user's playing game to."] + #[doc = "Gets the current user's playing game.\n @param titleId Pointer to write the current user's playing game to."] #[doc = ""] pub fn FRD_GetMyPlayingGame(titleId: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's favourite game."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleId` - Pointer to write the title ID of current user's favourite game to."] + #[doc = "Gets the current user's favourite game.\n @param titleId Pointer to write the title ID of current user's favourite game to."] #[doc = ""] pub fn FRD_GetMyFavoriteGame(titleId: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's comment on their friend profile."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the current user's comment on their friend profile.\n @param comment Pointer to write the current user's comment to.\n @param max_size Max size of the comment."] #[doc = ""] - #[doc = "* `comment` - Pointer to write the current user's comment to."] - #[doc = "* `max_size` - Max size of the comment."] - #[doc = ""] - pub fn FRD_GetMyComment(comment: *mut ::libc::c_char, max_size: size_t) -> Result; + pub fn FRD_GetMyComment(comment: *mut ::libc::c_char, max_size: usize) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current user's friend key list."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `friendKeyList` - Pointer to write the friend key list to."] - #[doc = "* `num` - Stores the number of friend keys obtained."] - #[doc = "* `offset` - The index of the friend key to start with."] - #[doc = "* `size` - Size of the friend key list. (FRIEND_LIST_SIZE)"] + #[doc = "Gets the current user's friend key list.\n @param friendKeyList Pointer to write the friend key list to.\n @param num Stores the number of friend keys obtained.\n @param offset The index of the friend key to start with.\n @param size Size of the friend key list. (FRIEND_LIST_SIZE)"] #[doc = ""] pub fn FRD_GetFriendKeyList( friendKeyList: *mut FriendKey, @@ -19024,61 +14270,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the current user's friends' Mii data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `miiDataList` - Pointer to write Mii data to."] - #[doc = "* `friendKeyList` - Pointer to FriendKeys."] - #[doc = "* `size` - Number of Friendkeys."] + #[doc = "Gets the current user's friends' Mii data.\n @param miiDataList Pointer to write Mii data to.\n @param friendKeyList Pointer to FriendKeys.\n @param size Number of Friendkeys."] #[doc = ""] pub fn FRD_GetFriendMii( miiDataList: *mut MiiData, friendKeyList: *const FriendKey, - size: size_t, + size: usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Get the current user's friends' profile data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `profile` - Pointer to write profile data to."] - #[doc = "* `friendKeyList` - Pointer to FriendKeys."] - #[doc = "* `size` - Number of FriendKeys."] + #[doc = "Get the current user's friends' profile data.\n @param profile Pointer to write profile data to.\n @param friendKeyList Pointer to FriendKeys.\n @param size Number of FriendKeys."] #[doc = ""] pub fn FRD_GetFriendProfile( profile: *mut FriendProfile, friendKeyList: *const FriendKey, - size: size_t, + size: usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Get the current user's friends' playing game."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `desc` - Pointer to write Game Description data to."] - #[doc = "* `friendKeyList` - Pointer to FriendKeys,"] - #[doc = "* `size` - Number Of FriendKeys."] + #[doc = "Get the current user's friends' playing game.\n @param desc Pointer to write Game Description data to.\n @param friendKeyList Pointer to FriendKeys,\n @param size Number Of FriendKeys."] #[doc = ""] pub fn FRD_GetFriendPlayingGame( desc: *mut GameDescription, friendKeyList: *const FriendKey, - size: size_t, + size: usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Get the current user's friends' favourite game."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `desc` - Pointer to write Game Description data to."] - #[doc = "* `friendKeyList` - Pointer to FriendKeys,"] - #[doc = "* `count` - Number Of FriendKeys."] + #[doc = "Get the current user's friends' favourite game.\n @param desc Pointer to write Game Description data to.\n @param friendKeyList Pointer to FriendKeys,\n @param count Number Of FriendKeys."] #[doc = ""] pub fn FRD_GetFriendFavouriteGame( desc: *mut GameDescription, @@ -19088,44 +14310,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets whether a friend key is included in the current user's friend list."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `friendKeyList` - Pointer to a list of friend keys."] - #[doc = "* `isFromList` - Pointer to a write the friendship status to."] + #[doc = "Gets whether a friend key is included in the current user's friend list.\n @param friendKeyList Pointer to a list of friend keys.\n @param isFromList Pointer to a write the friendship status to."] #[doc = ""] pub fn FRD_IsInFriendList(friendKeyList: *mut FriendKey, isFromList: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Updates the game mode description string."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `desc` - Pointer to write the game mode description to."] + #[doc = "Updates the game mode description string.\n @param desc Pointer to write the game mode description to."] #[doc = ""] pub fn FRD_UpdateGameModeDescription(desc: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Event which is signaled when friend login states change."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - event which will be signaled."] + #[doc = "Event which is signaled when friend login states change.\n @param event event which will be signaled."] #[doc = ""] pub fn FRD_AttachToEventNotification(event: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Get Latest Event Notification"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Pointer to write recieved notification event struct to."] - #[doc = "* `count` - Number of events"] - #[doc = "* `recievedNotifCount` - Number of notification reccieved."] + #[doc = "Get Latest Event Notification\n @param event Pointer to write recieved notification event struct to.\n @param count Number of events\n @param recievedNotifCount Number of notification reccieved."] #[doc = ""] pub fn FRD_GetEventNotification( event: *mut NotificationEvent, @@ -19135,66 +14338,37 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Returns the friend code using the given principal ID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `principalId` - The principal ID being used."] - #[doc = "* `friendCode` - Pointer to write the friend code to."] + #[doc = "Returns the friend code using the given principal ID.\n @param principalId The principal ID being used.\n @param friendCode Pointer to write the friend code to."] #[doc = ""] pub fn FRD_PrincipalIdToFriendCode(principalId: u32_, friendCode: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the principal ID using the given friend code."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `friendCode` - The friend code being used."] - #[doc = "* `principalId` - Pointer to write the principal ID to."] + #[doc = "Returns the principal ID using the given friend code.\n @param friendCode The friend code being used.\n @param principalId Pointer to write the principal ID to."] #[doc = ""] pub fn FRD_FriendCodeToPrincipalId(friendCode: u64_, principalId: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if the friend code is valid."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `friendCode` - The friend code being used."] - #[doc = "* `isValid` - Pointer to write the validity of the friend code to."] + #[doc = "Checks if the friend code is valid.\n @param friendCode The friend code being used.\n @param isValid Pointer to write the validity of the friend code to."] #[doc = ""] pub fn FRD_IsValidFriendCode(friendCode: u64_, isValid: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the Friend API to use a specific SDK version."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sdkVer` - The SDK version needed to be used."] + #[doc = "Sets the Friend API to use a specific SDK version.\n @param sdkVer The SDK version needed to be used."] #[doc = ""] pub fn FRD_SetClientSdkVersion(sdkVer: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Add a Friend online."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `event` - Event signaled when friend is registered."] - #[doc = "* `principalId` - PrincipalId of the friend to add."] + #[doc = "Add a Friend online.\n @param event Event signaled when friend is registered.\n @param principalId PrincipalId of the friend to add."] #[doc = ""] pub fn FRD_AddFriendOnline(event: Handle, principalId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Remove a Friend."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `principalId` - PrinipalId of the friend code to remove."] - #[doc = "* `localFriendCode` - LocalFriendCode of the friend code to remove."] + #[doc = "Remove a Friend.\n @param principalId PrinipalId of the friend code to remove.\n @param localFriendCode LocalFriendCode of the friend code to remove."] #[doc = ""] pub fn FRD_RemoveFriend(principalId: u32_, localFriendCode: u64_) -> Result; } @@ -19226,11 +14400,7 @@ extern "C" { pub fn gspLcdExit(); } extern "C" { - #[doc = "Gets a pointer to the current gsp::Lcd session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current gsp::Lcd session handle."] + #[doc = "Gets a pointer to the current gsp::Lcd session handle.\n @return A pointer to the current gsp::Lcd session handle."] #[doc = ""] pub fn gspLcdGetSessionHandle() -> *mut Handle; } @@ -19248,74 +14418,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Powers on the backlight."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen to power on."] + #[doc = "Powers on the backlight.\n @param screen Screen to power on."] #[doc = ""] pub fn GSPLCD_PowerOnBacklight(screen: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Powers off the backlight."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen to power off."] + #[doc = "Powers off the backlight.\n @param screen Screen to power off."] #[doc = ""] pub fn GSPLCD_PowerOffBacklight(screen: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets 3D_LEDSTATE to the input state value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `disable` - False = 3D LED enable, true = 3D LED disable."] + #[doc = "Sets 3D_LEDSTATE to the input state value.\n @param disable False = 3D LED enable, true = 3D LED disable."] #[doc = ""] pub fn GSPLCD_SetLedForceOff(disable: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the LCD screens' vendors. Stubbed on old 3ds."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `vendor` - Pointer to output the screen vendors to."] + #[doc = "Gets the LCD screens' vendors. Stubbed on old 3ds.\n @param vendor Pointer to output the screen vendors to."] #[doc = ""] pub fn GSPLCD_GetVendors(vendors: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the LCD screens' brightness. Stubbed on old 3ds."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen to get the brightness value of."] - #[doc = "* `brightness` - Brightness value returned."] + #[doc = "Gets the LCD screens' brightness. Stubbed on old 3ds.\n @param screen Screen to get the brightness value of.\n @param brightness Brightness value returned."] #[doc = ""] pub fn GSPLCD_GetBrightness(screen: u32_, brightness: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the LCD screens' brightness."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen to set the brightness value of."] - #[doc = "* `brightness` - Brightness value set."] + #[doc = "Sets the LCD screens' brightness.\n @param screen Screen to set the brightness value of.\n @param brightness Brightness value set."] #[doc = ""] pub fn GSPLCD_SetBrightness(screen: u32_, brightness: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the LCD screens' raw brightness."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `screen` - Screen to set the brightness value of."] - #[doc = "* `brightness` - Brightness value set."] + #[doc = "Sets the LCD screens' raw brightness.\n @param screen Screen to set the brightness value of.\n @param brightness Brightness value set."] #[doc = ""] pub fn GSPLCD_SetBrightnessRaw(screen: u32_, brightness: u32_) -> Result; } @@ -19535,12 +14674,7 @@ extern "C" { pub fn hidExit(); } extern "C" { - #[doc = "Sets the key repeat parameters for [`hidKeysRepeat`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `delay` - Initial delay."] - #[doc = "* `interval` - Repeat interval."] + #[doc = "Sets the key repeat parameters for [`hidKeysRepeat.\n`] @param delay Initial delay.\n @param interval Repeat interval."] #[doc = ""] pub fn hidSetRepeatParameters(delay: u32_, interval: u32_); } @@ -19550,119 +14684,59 @@ extern "C" { pub fn hidScanInput(); } extern "C" { - #[doc = "Returns a bitmask of held buttons."] - #[doc = ""] - #[doc = "Individual buttons can be extracted using binary AND."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 32-bit bitmask of held buttons (1+ frames)."] + #[doc = "Returns a bitmask of held buttons.\n Individual buttons can be extracted using binary AND.\n @return 32-bit bitmask of held buttons (1+ frames)."] #[doc = ""] pub fn hidKeysHeld() -> u32_; } extern "C" { - #[doc = "Returns a bitmask of newly pressed buttons, this frame."] - #[doc = ""] - #[doc = "Individual buttons can be extracted using binary AND."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 32-bit bitmask of newly pressed buttons."] + #[doc = "Returns a bitmask of newly pressed buttons, this frame.\n Individual buttons can be extracted using binary AND.\n @return 32-bit bitmask of newly pressed buttons."] #[doc = ""] pub fn hidKeysDown() -> u32_; } extern "C" { - #[doc = "Returns a bitmask of newly pressed or repeated buttons, this frame."] - #[doc = ""] - #[doc = "Individual buttons can be extracted using binary AND."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 32-bit bitmask of newly pressed or repeated buttons."] + #[doc = "Returns a bitmask of newly pressed or repeated buttons, this frame.\n Individual buttons can be extracted using binary AND.\n @return 32-bit bitmask of newly pressed or repeated buttons."] #[doc = ""] pub fn hidKeysDownRepeat() -> u32_; } extern "C" { - #[doc = "Returns a bitmask of newly released buttons, this frame."] - #[doc = ""] - #[doc = "Individual buttons can be extracted using binary AND."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 32-bit bitmask of newly released buttons."] + #[doc = "Returns a bitmask of newly released buttons, this frame.\n Individual buttons can be extracted using binary AND.\n @return 32-bit bitmask of newly released buttons."] #[doc = ""] pub fn hidKeysUp() -> u32_; } extern "C" { - #[doc = "Reads the current touch position."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pos` - Pointer to output the touch position to."] + #[doc = "Reads the current touch position.\n @param pos Pointer to output the touch position to."] #[doc = ""] pub fn hidTouchRead(pos: *mut touchPosition); } extern "C" { - #[doc = "Reads the current circle pad position."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pos` - Pointer to output the circle pad position to."] + #[doc = "Reads the current circle pad position.\n @param pos Pointer to output the circle pad position to."] #[doc = ""] pub fn hidCircleRead(pos: *mut circlePosition); } extern "C" { - #[doc = "Reads the current accelerometer data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `vector` - Pointer to output the accelerometer data to."] + #[doc = "Reads the current accelerometer data.\n @param vector Pointer to output the accelerometer data to."] #[doc = ""] pub fn hidAccelRead(vector: *mut accelVector); } extern "C" { - #[doc = "Reads the current gyroscope data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `rate` - Pointer to output the gyroscope data to."] + #[doc = "Reads the current gyroscope data.\n @param rate Pointer to output the gyroscope data to."] #[doc = ""] pub fn hidGyroRead(rate: *mut angularRate); } extern "C" { - #[doc = "Waits for an HID event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the event."] - #[doc = "* `nextEvent` - Whether to discard the current event and wait for the next event."] + #[doc = "Waits for an HID event.\n @param id ID of the event.\n @param nextEvent Whether to discard the current event and wait for the next event."] #[doc = ""] pub fn hidWaitForEvent(id: HID_Event, nextEvent: bool); } extern "C" { #[must_use] - #[doc = "Waits for any HID or IRRST event."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nextEvents` - Whether to discard the current events and wait for the next events."] - #[doc = "* `cancelEvent` - Optional additional handle to wait on, otherwise 0."] - #[doc = "* `timeout` - Timeout."] + #[doc = "Waits for any HID or IRRST event.\n @param nextEvents Whether to discard the current events and wait for the next events.\n @param cancelEvent Optional additional handle to wait on, otherwise 0.\n @param timeout Timeout."] #[doc = ""] pub fn hidWaitForAnyEvent(nextEvents: bool, cancelEvent: Handle, timeout: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the handles for HID operation."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outMemHandle` - Pointer to output the shared memory handle to."] - #[doc = "* `eventpad0` - Pointer to output the pad 0 event handle to."] - #[doc = "* `eventpad1` - Pointer to output the pad 1 event handle to."] - #[doc = "* `eventaccel` - Pointer to output the accelerometer event handle to."] - #[doc = "* `eventgyro` - Pointer to output the gyroscope event handle to."] - #[doc = "* `eventdebugpad` - Pointer to output the debug pad event handle to."] + #[doc = "Gets the handles for HID operation.\n @param outMemHandle Pointer to output the shared memory handle to.\n @param eventpad0 Pointer to output the pad 0 event handle to.\n @param eventpad1 Pointer to output the pad 1 event handle to.\n @param eventaccel Pointer to output the accelerometer event handle to.\n @param eventgyro Pointer to output the gyroscope event handle to.\n @param eventdebugpad Pointer to output the debug pad event handle to."] #[doc = ""] pub fn HIDUSER_GetHandles( outMemHandle: *mut Handle, @@ -19699,21 +14773,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the gyroscope raw to dps coefficient."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coeff` - Pointer to output the coefficient to."] + #[doc = "Gets the gyroscope raw to dps coefficient.\n @param coeff Pointer to output the coefficient to."] #[doc = ""] pub fn HIDUSER_GetGyroscopeRawToDpsCoefficient(coeff: *mut f32) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current volume slider value. (0-63)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `volume` - Pointer to write the volume slider value to."] + #[doc = "Gets the current volume slider value. (0-63)\n @param volume Pointer to write the volume slider value to."] #[doc = ""] pub fn HIDUSER_GetSoundVolume(volume: *mut u8_) -> Result; } @@ -19749,51 +14815,29 @@ extern "C" { pub fn irrstScanInput(); } extern "C" { - #[doc = "Gets IRRST's held keys."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* IRRST's held keys."] + #[doc = "Gets IRRST's held keys.\n @return IRRST's held keys."] #[doc = ""] pub fn irrstKeysHeld() -> u32_; } extern "C" { - #[doc = "Reads the current c-stick position."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pos` - Pointer to output the current c-stick position to."] + #[doc = "Reads the current c-stick position.\n @param pos Pointer to output the current c-stick position to."] #[doc = ""] pub fn irrstCstickRead(pos: *mut circlePosition); } extern "C" { - #[doc = "Waits for the IRRST input event to trigger."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nextEvent` - Whether to discard the current event and wait until the next event."] + #[doc = "Waits for the IRRST input event to trigger.\n @param nextEvent Whether to discard the current event and wait until the next event."] #[doc = ""] pub fn irrstWaitForEvent(nextEvent: bool); } extern "C" { #[must_use] - #[doc = "Gets the shared memory and event handles for IRRST."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outMemHandle` - Pointer to write the shared memory handle to."] - #[doc = "* `outEventHandle` - Pointer to write the event handle to."] + #[doc = "Gets the shared memory and event handles for IRRST.\n @param outMemHandle Pointer to write the shared memory handle to.\n @param outEventHandle Pointer to write the event handle to."] #[doc = ""] pub fn IRRST_GetHandles(outMemHandle: *mut Handle, outEventHandle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes IRRST."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unk1` - Unknown."] - #[doc = "* `unk2` - Unknown."] + #[doc = "Initializes IRRST.\n @param unk1 Unknown.\n @param unk2 Unknown."] #[doc = ""] pub fn IRRST_Initialize(unk1: u32_, unk2: u8_) -> Result; } @@ -19850,33 +14894,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - Output contexthandle."] + #[doc = "Creates a RootCertChain.\n @param RootCertChain_contexthandle Output contexthandle."] #[doc = ""] pub fn sslcCreateRootCertChain(RootCertChain_contexthandle: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Destroys a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain contexthandle."] + #[doc = "Destroys a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain contexthandle."] #[doc = ""] pub fn sslcDestroyRootCertChain(RootCertChain_contexthandle: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Adds a trusted RootCA cert to a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `cert` - Pointer to the DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] + #[doc = "Adds a trusted RootCA cert to a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param cert Pointer to the DER cert.\n @param certsize Size of the DER cert."] #[doc = ""] pub fn sslcAddTrustedRootCA( RootCertChain_contexthandle: u32_, @@ -19887,13 +14917,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a default RootCA cert to a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `certID` - ID of the cert to add."] - #[doc = "* `cert_contexthandle` - Optional, the cert contexthandle can be written here."] + #[doc = "Adds a default RootCA cert to a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param certID ID of the cert to add.\n @param cert_contexthandle Optional, the cert contexthandle can be written here."] #[doc = ""] pub fn sslcRootCertChainAddDefaultCert( RootCertChain_contexthandle: u32_, @@ -19903,12 +14927,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Removes the specified cert from the RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `cert_contexthandle` - Cert contexthandle to remove from the RootCertChain."] + #[doc = "Removes the specified cert from the RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param cert_contexthandle Cert contexthandle to remove from the RootCertChain."] #[doc = ""] pub fn sslcRootCertChainRemoveCert( RootCertChain_contexthandle: u32_, @@ -19917,33 +14936,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Creates an unknown CertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `CertChain_contexthandle` - Output contexthandle."] + #[doc = "Creates an unknown CertChain.\n @param CertChain_contexthandle Output contexthandle."] #[doc = ""] pub fn sslcCreate8CertChain(CertChain_contexthandle: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Destroys a CertChain from sslcCreate8CertChain()."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `CertChain_contexthandle` - CertChain contexthandle."] + #[doc = "Destroys a CertChain from sslcCreate8CertChain().\n @param CertChain_contexthandle CertChain contexthandle."] #[doc = ""] pub fn sslcDestroy8CertChain(CertChain_contexthandle: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Adds a cert to a CertChain from sslcCreate8CertChain()."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `CertChain_contexthandle` - CertChain to use."] - #[doc = "* `cert` - Pointer to the cert."] - #[doc = "* `certsize` - Size of the cert."] + #[doc = "Adds a cert to a CertChain from sslcCreate8CertChain().\n @param CertChain_contexthandle CertChain to use.\n @param cert Pointer to the cert.\n @param certsize Size of the cert."] #[doc = ""] pub fn sslc8CertChainAddCert( CertChain_contexthandle: u32_, @@ -19954,13 +14959,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a default cert to a CertChain from sslcCreate8CertChain(). Not actually usable since no certIDs are implemented in SSL-module for this."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `CertChain_contexthandle` - CertChain to use."] - #[doc = "* `certID` - ID of the cert to add."] - #[doc = "* `cert_contexthandle` - Optional, the cert contexthandle can be written here."] + #[doc = "Adds a default cert to a CertChain from sslcCreate8CertChain(). Not actually usable since no certIDs are implemented in SSL-module for this.\n @param CertChain_contexthandle CertChain to use.\n @param certID ID of the cert to add.\n @param cert_contexthandle Optional, the cert contexthandle can be written here."] #[doc = ""] pub fn sslc8CertChainAddDefaultCert( CertChain_contexthandle: u32_, @@ -19970,12 +14969,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Removes the specified cert from the CertChain from sslcCreate8CertChain()."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `CertChain_contexthandle` - CertChain to use."] - #[doc = "* `cert_contexthandle` - Cert contexthandle to remove from the CertChain."] + #[doc = "Removes the specified cert from the CertChain from sslcCreate8CertChain().\n @param CertChain_contexthandle CertChain to use.\n @param cert_contexthandle Cert contexthandle to remove from the CertChain."] #[doc = ""] pub fn sslc8CertChainRemoveCert( CertChain_contexthandle: u32_, @@ -19984,15 +14978,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a new ClientCert-context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cert` - Pointer to the DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] - #[doc = "* `key` - Pointer to the DER key."] - #[doc = "* `keysize` - Size of the DER key."] - #[doc = "* `ClientCert_contexthandle` - Output contexthandle."] + #[doc = "Opens a new ClientCert-context.\n @param cert Pointer to the DER cert.\n @param certsize Size of the DER cert.\n @param key Pointer to the DER key.\n @param keysize Size of the DER key.\n @param ClientCert_contexthandle Output contexthandle."] #[doc = ""] pub fn sslcOpenClientCertContext( cert: *const u8_, @@ -20004,12 +14990,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a ClientCert-context with a default certID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `certID` - ID of the ClientCert to use."] - #[doc = "* `ClientCert_contexthandle` - Output contexthandle."] + #[doc = "Opens a ClientCert-context with a default certID.\n @param certID ID of the ClientCert to use.\n @param ClientCert_contexthandle Output contexthandle."] #[doc = ""] pub fn sslcOpenDefaultClientCertContext( certID: SSLC_DefaultClientCert, @@ -20018,11 +14999,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Closes the specified ClientCert-context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ClientCert_contexthandle` - ClientCert-context to use."] + #[doc = "Closes the specified ClientCert-context.\n @param ClientCert_contexthandle ClientCert-context to use."] #[doc = ""] pub fn sslcCloseClientCertContext(ClientCert_contexthandle: u32_) -> Result; } @@ -20034,25 +15011,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This uses ps:ps GenerateRandomData internally."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Output buffer."] - #[doc = "* `size` - Output size."] + #[doc = "This uses ps:ps GenerateRandomData internally.\n @param buf Output buffer.\n @param size Output size."] #[doc = ""] pub fn sslcGenerateRandomData(buf: *mut u8_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a sslc context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - sslc context."] - #[doc = "* `sockfd` - Socket fd, this code automatically uses the required SOC command before using the actual sslc command."] - #[doc = "* `input_opt` - Input sslc options bitmask."] - #[doc = "* `hostname` - Server hostname."] + #[doc = "Creates a sslc context.\n @param context sslc context.\n @param sockfd Socket fd, this code automatically uses the required SOC command before using the actual sslc command.\n @param input_opt Input sslc options bitmask.\n @param hostname Server hostname."] #[doc = ""] pub fn sslcCreateContext( context: *mut sslcContext, @@ -20078,13 +15043,13 @@ extern "C" { pub fn sslcRead( context: *mut sslcContext, buf: *mut ::libc::c_void, - len: size_t, + len: usize, peek: bool, ) -> Result; } extern "C" { #[must_use] - pub fn sslcWrite(context: *mut sslcContext, buf: *const ::libc::c_void, len: size_t) -> Result; + pub fn sslcWrite(context: *mut sslcContext, buf: *const ::libc::c_void, len: usize) -> Result; } extern "C" { #[must_use] @@ -20177,13 +15142,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to open."] - #[doc = "* `url` - URL to connect to."] - #[doc = "* `use_defaultproxy` - Whether the default proxy should be used (0 for default)"] + #[doc = "Opens a HTTP context.\n @param context Context to open.\n @param url URL to connect to.\n @param use_defaultproxy Whether the default proxy should be used (0 for default)"] #[doc = ""] pub fn httpcOpenContext( context: *mut httpcContext, @@ -20194,33 +15153,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Closes a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to close."] + #[doc = "Closes a HTTP context.\n @param context Context to close."] #[doc = ""] pub fn httpcCloseContext(context: *mut httpcContext) -> Result; } extern "C" { #[must_use] - #[doc = "Cancels a HTTP connection."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to close."] + #[doc = "Cancels a HTTP connection.\n @param context Context to close."] #[doc = ""] pub fn httpcCancelConnection(context: *mut httpcContext) -> Result; } extern "C" { #[must_use] - #[doc = "Adds a request header field to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `name` - Name of the field."] - #[doc = "* `value` - Value of the field."] + #[doc = "Adds a request header field to a HTTP context.\n @param context Context to use.\n @param name Name of the field.\n @param value Value of the field."] #[doc = ""] pub fn httpcAddRequestHeaderField( context: *mut httpcContext, @@ -20230,13 +15175,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a POST form field to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `name` - Name of the field."] - #[doc = "* `value` - Value of the field."] + #[doc = "Adds a POST form field to a HTTP context.\n @param context Context to use.\n @param name Name of the field.\n @param value Value of the field."] #[doc = ""] pub fn httpcAddPostDataAscii( context: *mut httpcContext, @@ -20246,14 +15185,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a POST form field with binary data to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `name` - Name of the field."] - #[doc = "* `value` - The binary data to pass as a value."] - #[doc = "* `len` - Length of the binary data which has been passed."] + #[doc = "Adds a POST form field with binary data to a HTTP context.\n @param context Context to use.\n @param name Name of the field.\n @param value The binary data to pass as a value.\n @param len Length of the binary data which has been passed."] #[doc = ""] pub fn httpcAddPostDataBinary( context: *mut httpcContext, @@ -20264,48 +15196,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a POST body to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `data` - The data to be passed as raw into the body of the post request."] - #[doc = "* `len` - Length of data passed by data param."] + #[doc = "Adds a POST body to a HTTP context.\n @param context Context to use.\n @param data The data to be passed as raw into the body of the post request.\n @param len Length of data passed by data param."] #[doc = ""] pub fn httpcAddPostDataRaw(context: *mut httpcContext, data: *const u32_, len: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Begins a HTTP request."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] + #[doc = "Begins a HTTP request.\n @param context Context to use."] #[doc = ""] pub fn httpcBeginRequest(context: *mut httpcContext) -> Result; } extern "C" { #[must_use] - #[doc = "Receives data from a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `buffer` - Buffer to receive data to."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Receives data from a HTTP context.\n @param context Context to use.\n @param buffer Buffer to receive data to.\n @param size Size of the buffer."] #[doc = ""] pub fn httpcReceiveData(context: *mut httpcContext, buffer: *mut u8_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Receives data from a HTTP context with a timeout value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `buffer` - Buffer to receive data to."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `timeout` - Maximum time in nanoseconds to wait for a reply."] + #[doc = "Receives data from a HTTP context with a timeout value.\n @param context Context to use.\n @param buffer Buffer to receive data to.\n @param size Size of the buffer.\n @param timeout Maximum time in nanoseconds to wait for a reply."] #[doc = ""] pub fn httpcReceiveDataTimeout( context: *mut httpcContext, @@ -20316,12 +15225,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the request state of a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `out` - Pointer to output the HTTP request state to."] + #[doc = "Gets the request state of a HTTP context.\n @param context Context to use.\n @param out Pointer to output the HTTP request state to."] #[doc = ""] pub fn httpcGetRequestState( context: *mut httpcContext, @@ -20330,13 +15234,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the download size state of a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `downloadedsize` - Pointer to output the downloaded size to."] - #[doc = "* `contentsize` - Pointer to output the total content size to."] + #[doc = "Gets the download size state of a HTTP context.\n @param context Context to use.\n @param downloadedsize Pointer to output the downloaded size to.\n @param contentsize Pointer to output the total content size to."] #[doc = ""] pub fn httpcGetDownloadSizeState( context: *mut httpcContext, @@ -20346,24 +15244,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the response code of the HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to get the response code of."] - #[doc = "* `out` - Pointer to write the response code to."] + #[doc = "Gets the response code of the HTTP context.\n @param context Context to get the response code of.\n @param out Pointer to write the response code to."] #[doc = ""] pub fn httpcGetResponseStatusCode(context: *mut httpcContext, out: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the response code of the HTTP context with a timeout value."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to get the response code of."] - #[doc = "* `out` - Pointer to write the response code to."] - #[doc = "* `timeout` - Maximum time in nanoseconds to wait for a reply."] + #[doc = "Gets the response code of the HTTP context with a timeout value.\n @param context Context to get the response code of.\n @param out Pointer to write the response code to.\n @param timeout Maximum time in nanoseconds to wait for a reply."] #[doc = ""] pub fn httpcGetResponseStatusCodeTimeout( context: *mut httpcContext, @@ -20373,14 +15260,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a response header field from a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `name` - Name of the field."] - #[doc = "* `value` - Pointer to output the value of the field to."] - #[doc = "* `valuebuf_maxsize` - Maximum size of the value buffer."] + #[doc = "Gets a response header field from a HTTP context.\n @param context Context to use.\n @param name Name of the field.\n @param value Pointer to output the value of the field to.\n @param valuebuf_maxsize Maximum size of the value buffer."] #[doc = ""] pub fn httpcGetResponseHeader( context: *mut httpcContext, @@ -20391,13 +15271,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a trusted RootCA cert to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `cert` - Pointer to DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] + #[doc = "Adds a trusted RootCA cert to a HTTP context.\n @param context Context to use.\n @param cert Pointer to DER cert.\n @param certsize Size of the DER cert."] #[doc = ""] pub fn httpcAddTrustedRootCA( context: *mut httpcContext, @@ -20407,23 +15281,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a default RootCA cert to a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `certID` - ID of the cert to add, see sslc.h."] + #[doc = "Adds a default RootCA cert to a HTTP context.\n @param context Context to use.\n @param certID ID of the cert to add, see sslc.h."] #[doc = ""] pub fn httpcAddDefaultCert(context: *mut httpcContext, certID: SSLC_DefaultRootCert) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the RootCertChain for a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `RootCertChain_contexthandle` - Contexthandle for the RootCertChain."] + #[doc = "Sets the RootCertChain for a HTTP context.\n @param context Context to use.\n @param RootCertChain_contexthandle Contexthandle for the RootCertChain."] #[doc = ""] pub fn httpcSelectRootCertChain( context: *mut httpcContext, @@ -20432,15 +15296,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the ClientCert for a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `cert` - Pointer to DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] - #[doc = "* `privk` - Pointer to the DER private key."] - #[doc = "* `privk_size` - Size of the privk."] + #[doc = "Sets the ClientCert for a HTTP context.\n @param context Context to use.\n @param cert Pointer to DER cert.\n @param certsize Size of the DER cert.\n @param privk Pointer to the DER private key.\n @param privk_size Size of the privk."] #[doc = ""] pub fn httpcSetClientCert( context: *mut httpcContext, @@ -20452,12 +15308,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the default clientcert for a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `certID` - ID of the cert to add, see sslc.h."] + #[doc = "Sets the default clientcert for a HTTP context.\n @param context Context to use.\n @param certID ID of the cert to add, see sslc.h."] #[doc = ""] pub fn httpcSetClientCertDefault( context: *mut httpcContext, @@ -20466,12 +15317,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the ClientCert contexthandle for a HTTP context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to use."] - #[doc = "* `ClientCert_contexthandle` - Contexthandle for the ClientCert."] + #[doc = "Sets the ClientCert contexthandle for a HTTP context.\n @param context Context to use.\n @param ClientCert_contexthandle Contexthandle for the ClientCert."] #[doc = ""] pub fn httpcSetClientCertContext( context: *mut httpcContext, @@ -20480,60 +15326,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets SSL options for the context."] - #[doc = ""] - #[doc = "The HTTPC SSL option bits are the same as those defined in sslc.h"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to set flags on."] - #[doc = "* `options` - SSL option flags."] + #[doc = "Sets SSL options for the context.\n The HTTPC SSL option bits are the same as those defined in sslc.h\n @param context Context to set flags on.\n @param options SSL option flags."] #[doc = ""] pub fn httpcSetSSLOpt(context: *mut httpcContext, options: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the SSL options which will be cleared for the context."] - #[doc = ""] - #[doc = "The HTTPC SSL option bits are the same as those defined in sslc.h"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to clear flags on."] - #[doc = "* `options` - SSL option flags."] + #[doc = "Sets the SSL options which will be cleared for the context.\n The HTTPC SSL option bits are the same as those defined in sslc.h\n @param context Context to clear flags on.\n @param options SSL option flags."] #[doc = ""] pub fn httpcSetSSLClearOpt(context: *mut httpcContext, options: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Creates a RootCertChain. Up to 2 RootCertChains can be created under this user-process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - Output RootCertChain contexthandle."] + #[doc = "Creates a RootCertChain. Up to 2 RootCertChains can be created under this user-process.\n @param RootCertChain_contexthandle Output RootCertChain contexthandle."] #[doc = ""] pub fn httpcCreateRootCertChain(RootCertChain_contexthandle: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Destroy a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] + #[doc = "Destroy a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use."] #[doc = ""] pub fn httpcDestroyRootCertChain(RootCertChain_contexthandle: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Adds a RootCA cert to a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `cert` - Pointer to DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] - #[doc = "* `cert_contexthandle` - Optional output ptr for the cert contexthandle(this can be NULL)."] + #[doc = "Adds a RootCA cert to a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param cert Pointer to DER cert.\n @param certsize Size of the DER cert.\n @param cert_contexthandle Optional output ptr for the cert contexthandle(this can be NULL)."] #[doc = ""] pub fn httpcRootCertChainAddCert( RootCertChain_contexthandle: u32_, @@ -20544,13 +15361,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a default RootCA cert to a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `certID` - ID of the cert to add, see sslc.h."] - #[doc = "* `cert_contexthandle` - Optional output ptr for the cert contexthandle(this can be NULL)."] + #[doc = "Adds a default RootCA cert to a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param certID ID of the cert to add, see sslc.h.\n @param cert_contexthandle Optional output ptr for the cert contexthandle(this can be NULL)."] #[doc = ""] pub fn httpcRootCertChainAddDefaultCert( RootCertChain_contexthandle: u32_, @@ -20560,12 +15371,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Removes a cert from a RootCertChain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `RootCertChain_contexthandle` - RootCertChain to use."] - #[doc = "* `cert_contexthandle` - Contexthandle of the cert to remove."] + #[doc = "Removes a cert from a RootCertChain.\n @param RootCertChain_contexthandle RootCertChain to use.\n @param cert_contexthandle Contexthandle of the cert to remove."] #[doc = ""] pub fn httpcRootCertChainRemoveCert( RootCertChain_contexthandle: u32_, @@ -20574,15 +15380,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a ClientCert-context. Up to 2 ClientCert-contexts can be open under this user-process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cert` - Pointer to DER cert."] - #[doc = "* `certsize` - Size of the DER cert."] - #[doc = "* `privk` - Pointer to the DER private key."] - #[doc = "* `privk_size` - Size of the privk."] - #[doc = "* `ClientCert_contexthandle` - Output ClientCert context handle."] + #[doc = "Opens a ClientCert-context. Up to 2 ClientCert-contexts can be open under this user-process.\n @param cert Pointer to DER cert.\n @param certsize Size of the DER cert.\n @param privk Pointer to the DER private key.\n @param privk_size Size of the privk.\n @param ClientCert_contexthandle Output ClientCert context handle."] #[doc = ""] pub fn httpcOpenClientCertContext( cert: *const u8_, @@ -20594,12 +15392,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Opens a ClientCert-context with a default clientclient. Up to 2 ClientCert-contexts can be open under this user-process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `certID` - ID of the cert to add, see sslc.h."] - #[doc = "* `ClientCert_contexthandle` - Output ClientCert context handle."] + #[doc = "Opens a ClientCert-context with a default clientclient. Up to 2 ClientCert-contexts can be open under this user-process.\n @param certID ID of the cert to add, see sslc.h.\n @param ClientCert_contexthandle Output ClientCert context handle."] #[doc = ""] pub fn httpcOpenDefaultClientCertContext( certID: SSLC_DefaultClientCert, @@ -20608,26 +15401,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Closes a ClientCert context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ClientCert_contexthandle` - ClientCert context to use."] + #[doc = "Closes a ClientCert context.\n @param ClientCert_contexthandle ClientCert context to use."] #[doc = ""] pub fn httpcCloseClientCertContext(ClientCert_contexthandle: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Downloads data from the HTTP context into a buffer."] - #[doc = ""] - #[doc = "The *entire* content must be downloaded before using httpcCloseContext(), otherwise httpcCloseContext() will hang."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to download data from."] - #[doc = "* `buffer` - Buffer to write data to."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `downloadedsize` - Pointer to write the size of the downloaded data to."] + #[doc = "Downloads data from the HTTP context into a buffer.\n The *entire* content must be downloaded before using httpcCloseContext(), otherwise httpcCloseContext() will hang.\n @param context Context to download data from.\n @param buffer Buffer to write data to.\n @param size Size of the buffer.\n @param downloadedsize Pointer to write the size of the downloaded data to."] #[doc = ""] pub fn httpcDownloadData( context: *mut httpcContext, @@ -20638,12 +15418,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets Keep-Alive for the context."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context` - Context to set the KeepAlive flag on."] - #[doc = "* `option` - HTTPC_KeepAlive option."] + #[doc = "Sets Keep-Alive for the context.\n @param context Context to set the KeepAlive flag on.\n @param option HTTPC_KeepAlive option."] #[doc = ""] pub fn httpcSetKeepAlive(context: *mut httpcContext, option: HTTPC_KeepAlive) -> Result; } @@ -20821,14 +15596,9 @@ pub const UDSCONTYPE_Spectator: udsConnectionType = 2; pub type udsConnectionType = ::libc::c_uint; extern "C" { #[must_use] - #[doc = "Initializes UDS."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Initializes UDS.\n @param sharedmem_size This must be 0x1000-byte aligned.\n @param username Optional custom UTF-8 username(converted to UTF-16 internally) that other nodes on the UDS network can use. If not set the username from system-config is used. Max len is 10 characters without NUL-terminator."] #[doc = ""] - #[doc = "* `sharedmem_size` - This must be 0x1000-byte aligned."] - #[doc = "* `username` - Optional custom UTF-8 username(converted to UTF-16 internally) that other nodes on the UDS network can use. If not set the username from system-config is used. Max len is 10 characters without NUL-terminator."] - #[doc = ""] - pub fn udsInit(sharedmem_size: size_t, username: *const ::libc::c_char) -> Result; + pub fn udsInit(sharedmem_size: usize, username: *const ::libc::c_char) -> Result; } extern "C" { #[doc = "Exits UDS."] @@ -20837,12 +15607,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Generates a NodeInfo struct with data loaded from system-config."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nodeinfo` - Output NodeInfo struct."] - #[doc = "* `username` - If set, this is the UTF-8 string to convert for use in the struct. Max len is 10 characters without NUL-terminator."] + #[doc = "Generates a NodeInfo struct with data loaded from system-config.\n @param nodeinfo Output NodeInfo struct.\n @param username If set, this is the UTF-8 string to convert for use in the struct. Max len is 10 characters without NUL-terminator."] #[doc = ""] pub fn udsGenerateNodeInfo( nodeinfo: *mut udsNodeInfo, @@ -20851,12 +15616,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Loads the UTF-16 username stored in the input NodeInfo struct, converted to UTF-8."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nodeinfo` - Input NodeInfo struct."] - #[doc = "* `username` - This is the output UTF-8 string. Max len is 10 characters without NUL-terminator."] + #[doc = "Loads the UTF-16 username stored in the input NodeInfo struct, converted to UTF-8.\n @param nodeinfo Input NodeInfo struct.\n @param username This is the output UTF-8 string. Max len is 10 characters without NUL-terminator."] #[doc = ""] pub fn udsGetNodeInfoUsername( nodeinfo: *const udsNodeInfo, @@ -20864,23 +15624,12 @@ extern "C" { ) -> Result; } extern "C" { - #[doc = "Checks whether a NodeInfo struct was initialized by NWM-module(not any output from udsGenerateNodeInfo())."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nodeinfo` - Input NodeInfo struct."] + #[doc = "Checks whether a NodeInfo struct was initialized by NWM-module(not any output from udsGenerateNodeInfo()).\n @param nodeinfo Input NodeInfo struct."] #[doc = ""] pub fn udsCheckNodeInfoInitialized(nodeinfo: *const udsNodeInfo) -> bool; } extern "C" { - #[doc = "Generates a default NetworkStruct for creating networks."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `network` - The output struct."] - #[doc = "* `wlancommID` - Unique local-WLAN communications ID for each application."] - #[doc = "* `id8` - Additional ID that can be used by the application for different types of networks."] - #[doc = "* `max_nodes` - Maximum number of nodes(devices) that can be connected to the network, including the host."] + #[doc = "Generates a default NetworkStruct for creating networks.\n @param network The output struct.\n @param wlancommID Unique local-WLAN communications ID for each application.\n @param id8 Additional ID that can be used by the application for different types of networks.\n @param max_nodes Maximum number of nodes(devices) that can be connected to the network, including the host."] #[doc = ""] pub fn udsGenerateDefaultNetworkStruct( network: *mut udsNetworkStruct, @@ -20891,21 +15640,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Scans for networks via beacon-scanning."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outbuf` - Buffer which will be used by the beacon-scanning command and for the data parsing afterwards. Normally there's no need to use the contents of this buffer once this function returns."] - #[doc = "* `maxsize` - Max size of the buffer."] - #[doc = "* `wlancommID` - Unique local-WLAN communications ID for each application."] - #[doc = "* `id8` - Additional ID that can be used by the application for different types of networks."] - #[doc = "* `host_macaddress` - When set, this code will only return network info from the specified host MAC address."] + #[doc = "Scans for networks via beacon-scanning.\n @param outbuf Buffer which will be used by the beacon-scanning command and for the data parsing afterwards. Normally there's no need to use the contents of this buffer once this function returns.\n @param maxsize Max size of the buffer.\n @Param networks Ptr where the allocated udsNetworkScanInfo array buffer is written. The allocsize is sizeof(udsNetworkScanInfo)*total_networks.\n @Param total_networks Total number of networks stored under the networks buffer.\n @param wlancommID Unique local-WLAN communications ID for each application.\n @param id8 Additional ID that can be used by the application for different types of networks.\n @param host_macaddress When set, this code will only return network info from the specified host MAC address.\n @connected When not connected to a network this *must* be false. When connected to a network this *must* be true."] #[doc = ""] pub fn udsScanBeacons( outbuf: *mut ::libc::c_void, - maxsize: size_t, + maxsize: usize, networks: *mut *mut udsNetworkScanInfo, - total_networks: *mut size_t, + total_networks: *mut usize, wlancommID: u32_, id8: u8_, host_macaddress: *const u8_, @@ -20914,59 +15655,34 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This can be used by the host to set the appdata contained in the broadcasted beacons."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "This can be used by the host to set the appdata contained in the broadcasted beacons.\n @param buf Appdata buffer.\n @param size Size of the input appdata."] #[doc = ""] - #[doc = "* `buf` - Appdata buffer."] - #[doc = "* `size` - Size of the input appdata."] - #[doc = ""] - pub fn udsSetApplicationData(buf: *const ::libc::c_void, size: size_t) -> Result; + pub fn udsSetApplicationData(buf: *const ::libc::c_void, size: usize) -> Result; } extern "C" { #[must_use] - #[doc = "This can be used while on a network(host/client) to get the appdata from the current beacon."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Appdata buffer."] - #[doc = "* `size` - Max size of the output buffer."] - #[doc = "* `actual_size` - If set, the actual size of the appdata written into the buffer is stored here."] + #[doc = "This can be used while on a network(host/client) to get the appdata from the current beacon.\n @param buf Appdata buffer.\n @param size Max size of the output buffer.\n @param actual_size If set, the actual size of the appdata written into the buffer is stored here."] #[doc = ""] pub fn udsGetApplicationData( buf: *mut ::libc::c_void, - size: size_t, - actual_size: *mut size_t, + size: usize, + actual_size: *mut usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "This can be used with a NetworkStruct, from udsScanBeacons() mainly, for getting the appdata."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Appdata buffer."] - #[doc = "* `size` - Max size of the output buffer."] - #[doc = "* `actual_size` - If set, the actual size of the appdata written into the buffer is stored here."] + #[doc = "This can be used with a NetworkStruct, from udsScanBeacons() mainly, for getting the appdata.\n @param buf Appdata buffer.\n @param size Max size of the output buffer.\n @param actual_size If set, the actual size of the appdata written into the buffer is stored here."] #[doc = ""] pub fn udsGetNetworkStructApplicationData( network: *const udsNetworkStruct, buf: *mut ::libc::c_void, - size: size_t, - actual_size: *mut size_t, + size: usize, + actual_size: *mut usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Create a bind."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bindcontext` - The output bind context."] - #[doc = "* `NetworkNodeID` - This is the NetworkNodeID which this bind can receive data from."] - #[doc = "* `spectator` - False for a regular bind, true for a spectator."] - #[doc = "* `data_channel` - This is an arbitrary value to use for data-frame filtering. This bind will only receive data frames which contain a matching data_channel value, which was specified by udsSendTo(). The data_channel must be non-zero."] - #[doc = "* `recv_buffer_size` - Size of the buffer under sharedmem used for temporarily storing received data-frames which are then loaded by udsPullPacket(). The system requires this to be >=0x5F4. UDS_DEFAULT_RECVBUFSIZE can be used for this."] + #[doc = "Create a bind.\n @param bindcontext The output bind context.\n @param NetworkNodeID This is the NetworkNodeID which this bind can receive data from.\n @param spectator False for a regular bind, true for a spectator.\n @param data_channel This is an arbitrary value to use for data-frame filtering. This bind will only receive data frames which contain a matching data_channel value, which was specified by udsSendTo(). The data_channel must be non-zero.\n @param recv_buffer_size Size of the buffer under sharedmem used for temporarily storing received data-frames which are then loaded by udsPullPacket(). The system requires this to be >=0x5F4. UDS_DEFAULT_RECVBUFSIZE can be used for this."] #[doc = ""] pub fn udsBind( bindcontext: *mut udsBindContext, @@ -20978,26 +15694,12 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Remove a bind."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bindcontext` - The bind context."] + #[doc = "Remove a bind.\n @param bindcontext The bind context."] #[doc = ""] pub fn udsUnbind(bindcontext: *mut udsBindContext) -> Result; } extern "C" { - #[doc = "Waits for the bind event to occur, or checks if the event was signaled. This event is signaled every time new data is available via udsPullPacket()."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Always true. However if wait=false, this will return false if the event wasn't signaled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bindcontext` - The bind context."] - #[doc = "* `nextEvent` - Whether to discard the current event and wait for the next event."] - #[doc = "* `wait` - When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it."] + #[doc = "Waits for the bind event to occur, or checks if the event was signaled. This event is signaled every time new data is available via udsPullPacket().\n @return Always true. However if wait=false, this will return false if the event wasn't signaled.\n @param bindcontext The bind context.\n @param nextEvent Whether to discard the current event and wait for the next event.\n @param wait When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it."] #[doc = ""] pub fn udsWaitDataAvailable( bindcontext: *const udsBindContext, @@ -21007,71 +15709,42 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Receives data over the network. This data is loaded from the recv_buffer setup by udsBind(). When a node disconnects, this will still return data from that node until there's no more frames from that node in the recv_buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bindcontext` - Bind context."] - #[doc = "* `buf` - Output receive buffer."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `actual_size` - If set, the actual size written into the output buffer is stored here. This is zero when no data was received."] - #[doc = "* `src_NetworkNodeID` - If set, the source NetworkNodeID is written here. This is zero when no data was received."] + #[doc = "Receives data over the network. This data is loaded from the recv_buffer setup by udsBind(). When a node disconnects, this will still return data from that node until there's no more frames from that node in the recv_buffer.\n @param bindcontext Bind context.\n @param buf Output receive buffer.\n @param size Size of the buffer.\n @param actual_size If set, the actual size written into the output buffer is stored here. This is zero when no data was received.\n @param src_NetworkNodeID If set, the source NetworkNodeID is written here. This is zero when no data was received."] #[doc = ""] pub fn udsPullPacket( bindcontext: *const udsBindContext, buf: *mut ::libc::c_void, - size: size_t, - actual_size: *mut size_t, + size: usize, + actual_size: *mut usize, src_NetworkNodeID: *mut u16_, ) -> Result; } extern "C" { #[must_use] - #[doc = "Sends data over the network."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dst_NetworkNodeID` - Destination NetworkNodeID."] - #[doc = "* `data_channel` - See udsBind()."] - #[doc = "* `flags` - Send flags, see the UDS_SENDFLAG enum values."] - #[doc = "* `buf` - Input send buffer."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Sends data over the network.\n @param dst_NetworkNodeID Destination NetworkNodeID.\n @param data_channel See udsBind().\n @param flags Send flags, see the UDS_SENDFLAG enum values.\n @param buf Input send buffer.\n @param size Size of the buffer."] #[doc = ""] pub fn udsSendTo( dst_NetworkNodeID: u16_, data_channel: u8_, flags: u8_, buf: *const ::libc::c_void, - size: size_t, + size: usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the wifi channel currently being used."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `channel` - Output channel."] + #[doc = "Gets the wifi channel currently being used.\n @param channel Output channel."] #[doc = ""] pub fn udsGetChannel(channel: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Starts hosting a new network."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `network` - The NetworkStruct, you can use udsGenerateDefaultNetworkStruct() for generating this."] - #[doc = "* `passphrase` - Raw input passphrase buffer."] - #[doc = "* `passphrase_size` - Size of the passphrase buffer."] - #[doc = "* `context` - Optional output bind context which will be created for this host, with NetworkNodeID=UDS_BROADCAST_NETWORKNODEID."] - #[doc = "* `data_channel` - This is the data_channel value which will be passed to udsBind() internally."] - #[doc = "* `recv_buffer_size` - This is the recv_buffer_size value which will be passed to udsBind() internally."] + #[doc = "Starts hosting a new network.\n @param network The NetworkStruct, you can use udsGenerateDefaultNetworkStruct() for generating this.\n @param passphrase Raw input passphrase buffer.\n @param passphrase_size Size of the passphrase buffer.\n @param context Optional output bind context which will be created for this host, with NetworkNodeID=UDS_BROADCAST_NETWORKNODEID.\n @param data_channel This is the data_channel value which will be passed to udsBind() internally.\n @param recv_buffer_size This is the recv_buffer_size value which will be passed to udsBind() internally."] #[doc = ""] pub fn udsCreateNetwork( network: *const udsNetworkStruct, passphrase: *const ::libc::c_void, - passphrase_size: size_t, + passphrase_size: usize, context: *mut udsBindContext, data_channel: u8_, recv_buffer_size: u32_, @@ -21079,23 +15752,12 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Connect to a network."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `network` - The NetworkStruct, you can use udsScanBeacons() for this."] - #[doc = "* `passphrase` - Raw input passphrase buffer."] - #[doc = "* `passphrase_size` - Size of the passphrase buffer."] - #[doc = "* `context` - Optional output bind context which will be created for this host."] - #[doc = "* `recv_NetworkNodeID` - This is the NetworkNodeID passed to udsBind() internally."] - #[doc = "* `connection_type` - Type of connection, see the udsConnectionType enum values."] - #[doc = "* `data_channel` - This is the data_channel value which will be passed to udsBind() internally."] - #[doc = "* `recv_buffer_size` - This is the recv_buffer_size value which will be passed to udsBind() internally."] + #[doc = "Connect to a network.\n @param network The NetworkStruct, you can use udsScanBeacons() for this.\n @param passphrase Raw input passphrase buffer.\n @param passphrase_size Size of the passphrase buffer.\n @param context Optional output bind context which will be created for this host.\n @param recv_NetworkNodeID This is the NetworkNodeID passed to udsBind() internally.\n @param connection_type Type of connection, see the udsConnectionType enum values.\n @param data_channel This is the data_channel value which will be passed to udsBind() internally.\n @param recv_buffer_size This is the recv_buffer_size value which will be passed to udsBind() internally."] #[doc = ""] pub fn udsConnectNetwork( network: *const udsNetworkStruct, passphrase: *const ::libc::c_void, - passphrase_size: size_t, + passphrase_size: usize, context: *mut udsBindContext, recv_NetworkNodeID: u16_, connection_type: udsConnectionType, @@ -21117,11 +15779,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This can be used by the host to force-disconnect client(s)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `NetworkNodeID` - Target NetworkNodeID. UDS_BROADCAST_NETWORKNODEID can be used to disconnect all clients."] + #[doc = "This can be used by the host to force-disconnect client(s).\n @param NetworkNodeID Target NetworkNodeID. UDS_BROADCAST_NETWORKNODEID can be used to disconnect all clients."] #[doc = ""] pub fn udsEjectClient(NetworkNodeID: u16_) -> Result; } @@ -21133,24 +15791,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This can be used by the host to update the network attributes. If bitmask 0x4 is clear in the input bitmask, this clears that bit in the value before actually writing the value into state. Normally you should use the below wrapper functions."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bitmask` - Bitmask to clear/set in the attributes. See the UDSNETATTR enum values."] - #[doc = "* `flag` - When false, bit-clear, otherwise bit-set."] + #[doc = "This can be used by the host to update the network attributes. If bitmask 0x4 is clear in the input bitmask, this clears that bit in the value before actually writing the value into state. Normally you should use the below wrapper functions.\n @param bitmask Bitmask to clear/set in the attributes. See the UDSNETATTR enum values.\n @param flag When false, bit-clear, otherwise bit-set."] #[doc = ""] pub fn udsUpdateNetworkAttribute(bitmask: u16_, flag: bool) -> Result; } extern "C" { #[must_use] - #[doc = "This uses udsUpdateNetworkAttribute() for (un)blocking new connections to this host."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `block` - When true, block the specified connection types(bitmask set). Otherwise allow them(bitmask clear)."] - #[doc = "* `clients` - When true, (un)block regular clients."] - #[doc = "* `flag` - When true, update UDSNETATTR_x4. Normally this should be false."] + #[doc = "This uses udsUpdateNetworkAttribute() for (un)blocking new connections to this host.\n @param block When true, block the specified connection types(bitmask set). Otherwise allow them(bitmask clear).\n @param clients When true, (un)block regular clients.\n @param flag When true, update UDSNETATTR_x4. Normally this should be false."] #[doc = ""] pub fn udsSetNewConnectionsBlocked(block: bool, clients: bool, flag: bool) -> Result; } @@ -21162,36 +15809,18 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "This loads the current ConnectionStatus struct."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `output` - Output ConnectionStatus struct."] + #[doc = "This loads the current ConnectionStatus struct.\n @param output Output ConnectionStatus struct."] #[doc = ""] pub fn udsGetConnectionStatus(output: *mut udsConnectionStatus) -> Result; } extern "C" { - #[doc = "Waits for the ConnectionStatus event to occur, or checks if the event was signaled. This event is signaled when the data from udsGetConnectionStatus() was updated internally."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Always true. However if wait=false, this will return false if the event wasn't signaled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `nextEvent` - Whether to discard the current event and wait for the next event."] - #[doc = "* `wait` - When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it."] + #[doc = "Waits for the ConnectionStatus event to occur, or checks if the event was signaled. This event is signaled when the data from udsGetConnectionStatus() was updated internally.\n @return Always true. However if wait=false, this will return false if the event wasn't signaled.\n @param nextEvent Whether to discard the current event and wait for the next event.\n @param wait When true this will not return until the event is signaled. When false this checks if the event was signaled without waiting for it."] #[doc = ""] pub fn udsWaitConnectionStatusEvent(nextEvent: bool, wait: bool) -> bool; } extern "C" { #[must_use] - #[doc = "This loads a NodeInfo struct for the specified NetworkNodeID. The broadcast alias can't be used with this."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `NetworkNodeID` - Target NetworkNodeID."] - #[doc = "* `output` - Output NodeInfo struct."] + #[doc = "This loads a NodeInfo struct for the specified NetworkNodeID. The broadcast alias can't be used with this.\n @param NetworkNodeID Target NetworkNodeID.\n @param output Output NodeInfo struct."] #[doc = ""] pub fn udsGetNodeInformation(NetworkNodeID: u16_, output: *mut udsNodeInfo) -> Result; } @@ -21254,11 +15883,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the network daemon to an exclusive state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - State specified in the ndmExclusiveState enumerator."] + #[doc = "Sets the network daemon to an exclusive state.\n @param state State specified in the ndmExclusiveState enumerator."] #[doc = ""] pub fn NDMU_EnterExclusiveState(state: ndmExclusiveState) -> Result; } @@ -21270,11 +15895,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Returns the exclusive state for the network daemon."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write the exclsuive state to."] + #[doc = "Returns the exclusive state for the network daemon.\n @param state Pointer to write the exclsuive state to."] #[doc = ""] pub fn NDMU_GetExclusiveState(state: *mut ndmExclusiveState) -> Result; } @@ -21292,31 +15913,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Suspends network daemon."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mask` - The specified daemon."] + #[doc = "Suspends network daemon.\n @param mask The specified daemon."] #[doc = ""] pub fn NDMU_SuspendDaemons(mask: ndmDaemonMask) -> Result; } extern "C" { #[must_use] - #[doc = "Resumes network daemon."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mask` - The specified daemon."] + #[doc = "Resumes network daemon.\n @param mask The specified daemon."] #[doc = ""] pub fn NDMU_ResumeDaemons(mask: ndmDaemonMask) -> Result; } extern "C" { #[must_use] - #[doc = "Suspends scheduling for all network daemons."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `flag` - 0 = Wait for completion, 1 = Perform in background."] + #[doc = "Suspends scheduling for all network daemons.\n @param flag 0 = Wait for completion, 1 = Perform in background."] #[doc = ""] pub fn NDMU_SuspendScheduler(flag: u32_) -> Result; } @@ -21328,51 +15937,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Returns the current state for the network daemon."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write the current state to."] + #[doc = "Returns the current state for the network daemon.\n @param state Pointer to write the current state to."] #[doc = ""] pub fn NDMU_GetCurrentState(state: *mut ndmState) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the daemon state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write the daemons state to."] + #[doc = "Returns the daemon state.\n @param state Pointer to write the daemons state to."] #[doc = ""] pub fn NDMU_QueryStatus(status: *mut ndmDaemonStatus) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the scan interval."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interval` - Value to set the scan interval to."] + #[doc = "Sets the scan interval.\n @param interval Value to set the scan interval to."] #[doc = ""] pub fn NDMU_SetScanInterval(interval: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the scan interval."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interval` - Pointer to write the interval value to."] + #[doc = "Returns the scan interval.\n @param interval Pointer to write the interval value to."] #[doc = ""] pub fn NDMU_GetScanInterval(interval: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the retry interval."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interval` - Pointer to write the interval value to."] + #[doc = "Returns the retry interval.\n @param interval Pointer to write the interval value to."] #[doc = ""] pub fn NDMU_GetRetryInterval(interval: *mut u32_) -> Result; } @@ -21384,11 +15973,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the current default daemon bit mask."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `interval` - Pointer to write the default daemon mask value to. The default value is (DAEMONMASK_CEC | DAEMONMASK_FRIENDS)"] + #[doc = "Gets the current default daemon bit mask.\n @param interval Pointer to write the default daemon mask value to. The default value is (DAEMONMASK_CEC | DAEMONMASK_FRIENDS)"] #[doc = ""] pub fn NDMU_GetDefaultDaemons(mask: *mut ndmDaemonMask) -> Result; } @@ -21517,28 +16102,17 @@ pub struct NIM_TitleProgress { } extern "C" { #[must_use] - #[doc = "Initializes nim:s. This uses networking and is blocking."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Initializes nim:s. This uses networking and is blocking.\n @param buffer A buffer for internal use. It must be at least 0x20000 bytes long.\n @param buffer_len Length of the passed buffer."] #[doc = ""] - #[doc = "* `buffer` - A buffer for internal use. It must be at least 0x20000 bytes long."] - #[doc = "* `buffer_len` - Length of the passed buffer."] - #[doc = ""] - pub fn nimsInit(buffer: *mut ::libc::c_void, buffer_len: size_t) -> Result; + pub fn nimsInit(buffer: *mut ::libc::c_void, buffer_len: usize) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes nim:s with the given TIN. This uses networking and is blocking."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buffer` - A buffer for internal use. It must be at least 0x20000 bytes long."] - #[doc = "* `buffer_len` - Length of the passed buffer."] - #[doc = "* `TIN` - The TIN to initialize nim:s with. If you do not know what a TIN is or why you would want to change it, use [`nimsInit`] instead."] + #[doc = "Initializes nim:s with the given TIN. This uses networking and is blocking.\n @param buffer A buffer for internal use. It must be at least 0x20000 bytes long.\n @param buffer_len Length of the passed buffer.\n @param TIN The TIN to initialize nim:s with. If you do not know what a TIN is or why you would want to change it, use [`nimsInit`] instead."] #[doc = ""] pub fn nimsInitWithTIN( buffer: *mut ::libc::c_void, - buffer_len: size_t, + buffer_len: usize, TIN: *const ::libc::c_char, ) -> Result; } @@ -21554,35 +16128,18 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets an attribute."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `attr` - Name of the attribute."] - #[doc = "* `val` - Value of the attribute."] + #[doc = "Sets an attribute.\n @param attr Name of the attribute.\n @param val Value of the attribute."] #[doc = ""] pub fn NIMS_SetAttribute(attr: *const ::libc::c_char, val: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Checks if nim wants a system update."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `want_update` - Set to true if a system update is required. Can be NULL."] + #[doc = "Checks if nim wants a system update.\n @param want_update Set to true if a system update is required. Can be NULL."] #[doc = ""] pub fn NIMS_WantUpdate(want_update: *mut bool) -> Result; } extern "C" { - #[doc = "Makes a TitleConfig struct for use with [`NIMS_RegisterTask`] [`NIMS_StartDownload`] or [`NIMS_StartDownloadSimple`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cfg` - Struct to initialize."] - #[doc = "* `titleId` - Title ID to download and install."] - #[doc = "* `version` - Version of the title to download and install."] - #[doc = "* `ratingAge` - Age for which the title is aged; used by parental controls in HOME Menu."] - #[doc = "* `mediaType` - Media type of the title to download and install."] + #[doc = "Makes a TitleConfig struct for use with [`NIMS_RegisterTask`] [`NIMS_StartDownload`] or [`NIMS_StartDownloadSimple.\n`] @param cfg Struct to initialize.\n @param titleId Title ID to download and install.\n @param version Version of the title to download and install.\n @param ratingAge Age for which the title is aged; used by parental controls in HOME Menu.\n @param mediaType Media type of the title to download and install."] #[doc = ""] pub fn NIMS_MakeTitleConfig( cfg: *mut NIM_TitleConfig, @@ -21594,13 +16151,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Registers a background download task with NIM. These are processed in sleep mode only."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cfg` - Title config to use. See [`NIMS_MakeTitleConfig`]"] - #[doc = "* `name` - Name of the title in UTF-8. Will be displayed on the HOME Menu. Maximum 73 characters."] - #[doc = "* `maker` - Name of the maker/publisher in UTF-8. Will be displayed on the HOME Menu. Maximum 37 characters."] + #[doc = "Registers a background download task with NIM. These are processed in sleep mode only.\n @param cfg Title config to use. See [`NIMS_MakeTitleConfig.\n`] @param name Name of the title in UTF-8. Will be displayed on the HOME Menu. Maximum 73 characters.\n @param maker Name of the maker/publisher in UTF-8. Will be displayed on the HOME Menu. Maximum 37 characters."] #[doc = ""] pub fn NIMS_RegisterTask( cfg: *const NIM_TitleConfig, @@ -21610,53 +16161,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Checks whether a background download task for the given title is registered with NIM."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleId` - Title ID to check for."] - #[doc = "* `registered` - Whether there is a background download task registered."] + #[doc = "Checks whether a background download task for the given title is registered with NIM.\n @param titleId Title ID to check for.\n @param registered Whether there is a background download task registered."] #[doc = ""] pub fn NIMS_IsTaskRegistered(titleId: u64_, registered: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Unregisters a background download task."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleId` - Title ID whose background download task to cancel."] + #[doc = "Unregisters a background download task.\n @param titleId Title ID whose background download task to cancel."] #[doc = ""] pub fn NIMS_UnregisterTask(titleId: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Starts an active download with NIM. Progress can be checked with [`NIMS_GetProcess`] Do not exit the process while a download is in progress without calling [`NIMS_CancelDownload`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cfg` - Title config to use. See [`NIMS_MakeTitleConfig`]"] - #[doc = "* `mode` - The installation mode to use. See [`NIM_InstallationMode`]"] + #[doc = "Starts an active download with NIM. Progress can be checked with [`NIMS_GetProcess`] Do not exit the process while a download is in progress without calling [`NIMS_CancelDownload.\n`] @param cfg Title config to use. See [`NIMS_MakeTitleConfig.\n`] @param mode The installation mode to use. See [`NIM_InstallationMode`]"] #[doc = ""] pub fn NIMS_StartDownload(cfg: *const NIM_TitleConfig, mode: NIM_InstallationMode) -> Result; } extern "C" { #[must_use] - #[doc = "Starts an active download with NIM with default installation mode; cannot reinstall titles. Progress can be checked with [`NIMS_GetProcess`] Do not exit the process while a download is in progress without calling [`NIMS_CancelDownload`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cfg` - Title config to use. See [`NIMS_MakeTitleConfig`]"] + #[doc = "Starts an active download with NIM with default installation mode; cannot reinstall titles. Progress can be checked with [`NIMS_GetProcess`] Do not exit the process while a download is in progress without calling [`NIMS_CancelDownload.\n`] @param cfg Title config to use. See [`NIMS_MakeTitleConfig`]"] #[doc = ""] pub fn NIMS_StartDownloadSimple(cfg: *const NIM_TitleConfig) -> Result; } extern "C" { #[must_use] - #[doc = "Checks the status of the current active download."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tp` - Title progress struct to write to. See [`NIM_TitleProgress`]"] + #[doc = "Checks the status of the current active download.\n @param tp Title progress struct to write to. See [`NIM_TitleProgress`]"] #[doc = ""] pub fn NIMS_GetProgress(tp: *mut NIM_TitleProgress) -> Result; } @@ -21675,24 +16204,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Turns wireless on or off."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `enableWifi` - True enables it, false disables it."] + #[doc = "Turns wireless on or off.\n @param enableWifi True enables it, false disables it."] #[doc = ""] pub fn NWMEXT_ControlWirelessEnabled(enableWifi: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Initializes IRU."] - #[doc = ""] - #[doc = "The permissions for the specified memory is set to RO. This memory must be already mapped."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sharedmem_addr` - Address of the shared memory block to use."] - #[doc = "* `sharedmem_size` - Size of the shared memory block."] + #[doc = "Initializes IRU.\n The permissions for the specified memory is set to RO. This memory must be already mapped.\n @param sharedmem_addr Address of the shared memory block to use.\n @param sharedmem_size Size of the shared memory block."] #[doc = ""] pub fn iruInit(sharedmem_addr: *mut u32_, sharedmem_size: u32_) -> Result; } @@ -21702,37 +16220,19 @@ extern "C" { pub fn iruExit(); } extern "C" { - #[doc = "Gets the IRU service handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The IRU service handle."] + #[doc = "Gets the IRU service handle.\n @return The IRU service handle."] #[doc = ""] pub fn iruGetServHandle() -> Handle; } extern "C" { #[must_use] - #[doc = "Sends IR data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to send data from."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `wait` - Whether to wait for the data to be sent."] + #[doc = "Sends IR data.\n @param buf Buffer to send data from.\n @param size Size of the buffer.\n @param wait Whether to wait for the data to be sent."] #[doc = ""] pub fn iruSendData(buf: *mut u8_, size: u32_, wait: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Receives IR data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to receive data to."] - #[doc = "* `size` - Size of the buffer."] - #[doc = "* `flag` - Flags to receive data with."] - #[doc = "* `transfercount` - Pointer to output the number of bytes read to."] - #[doc = "* `wait` - Whether to wait for the data to be received."] + #[doc = "Receives IR data.\n @param buf Buffer to receive data to.\n @param size Size of the buffer.\n @param flag Flags to receive data with.\n @param transfercount Pointer to output the number of bytes read to.\n @param wait Whether to wait for the data to be received."] #[doc = ""] pub fn iruRecvData( buf: *mut u8_, @@ -21756,12 +16256,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Begins sending data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Buffer to send."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Begins sending data.\n @param buf Buffer to send.\n @param size Size of the buffer."] #[doc = ""] pub fn IRU_StartSendTransfer(buf: *mut u8_, size: u32_) -> Result; } @@ -21773,64 +16268,51 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Begins receiving data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data to receive."] - #[doc = "* `flag` - Flags to use when receiving."] + #[doc = "Begins receiving data.\n @param size Size of the data to receive.\n @param flag Flags to use when receiving."] #[doc = ""] pub fn IRU_StartRecvTransfer(size: u32_, flag: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Waits for a receive operation to complete."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `transfercount` - Pointer to output the number of bytes read to."] + #[doc = "Waits for a receive operation to complete.\n @param transfercount Pointer to output the number of bytes read to."] #[doc = ""] pub fn IRU_WaitRecvTransfer(transfercount: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the IR bit rate."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Bit rate to set."] + #[doc = "Sets the IR bit rate.\n @param value Bit rate to set."] #[doc = ""] pub fn IRU_SetBitRate(value: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the IR bit rate."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the bit rate to."] + #[doc = "Gets the IR bit rate.\n @param out Pointer to write the bit rate to."] #[doc = ""] pub fn IRU_GetBitRate(out: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the IR LED state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - IR LED state to set."] + #[doc = "Sets the IR LED state.\n @param value IR LED state to set."] #[doc = ""] pub fn IRU_SetIRLEDState(value: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the IR LED state."] + #[doc = "Gets the IR LED state.\n @param out Pointer to write the IR LED state to."] #[doc = ""] - #[doc = "# Arguments"] + pub fn IRU_GetIRLEDRecvState(out: *mut u32_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Gets an event which is signaled once a send finishes.\n @param out Pointer to write the event handle to."] #[doc = ""] - #[doc = "* `out` - Pointer to write the IR LED state to."] + pub fn IRU_GetSendFinishedEvent(out: *mut Handle) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Gets an event which is signaled once a receive finishes.\n @param out Pointer to write the event handle to."] #[doc = ""] - pub fn IRU_GetIRLEDRecvState(out: *mut u32_) -> Result; + pub fn IRU_GetRecvFinishedEvent(out: *mut Handle) -> Result; } extern "C" { #[must_use] @@ -21845,23 +16327,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Launches a title and the required firmware (only if necessary)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleid` - ID of the title to launch, 0 for gamecard, JPN System Settings' titleID for System Settings."] + #[doc = "Launches a title and the required firmware (only if necessary).\n @param titleid ID of the title to launch, 0 for gamecard, JPN System Settings' titleID for System Settings."] #[doc = ""] pub fn NS_LaunchFIRM(titleid: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Launches a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleid` - ID of the title to launch, or 0 for gamecard."] - #[doc = "* `launch_flags` - Flags used when launching the title."] - #[doc = "* `procid` - Pointer to write the process ID of the launched title to."] + #[doc = "Launches a title.\n @param titleid ID of the title to launch, or 0 for gamecard.\n @param launch_flags Flags used when launching the title.\n @param procid Pointer to write the process ID of the launched title to."] #[doc = ""] pub fn NS_LaunchTitle(titleid: u64_, launch_flags: u32_, procid: *mut u32_) -> Result; } @@ -21873,34 +16345,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Launches a title and the required firmware."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleid` - ID of the title to launch, 0 for gamecard."] - #[doc = "* `flags` - Flags for firm-launch. bit0: require an application title-info structure in FIRM paramters to be specified via FIRM parameters. bit1: if clear, NS will check certain Configuration Memory fields."] + #[doc = "Launches a title and the required firmware.\n @param titleid ID of the title to launch, 0 for gamecard.\n @param flags Flags for firm-launch. bit0: require an application title-info structure in FIRM paramters to be specified via FIRM parameters. bit1: if clear, NS will check certain Configuration Memory fields."] #[doc = ""] pub fn NS_LaunchApplicationFIRM(titleid: u64_, flags: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Reboots to a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mediatype` - Mediatype of the title."] - #[doc = "* `titleid` - ID of the title to launch."] + #[doc = "Reboots to a title.\n @param mediatype Mediatype of the title.\n @param titleid ID of the title to launch."] #[doc = ""] pub fn NS_RebootToTitle(mediatype: u8_, titleid: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates the process with the specified titleid."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleid` - ID of the title to terminate."] - #[doc = "* `timeout` - Timeout in nanoseconds. Pass 0 if not required."] + #[doc = "Terminates the process with the specified titleid.\n @param titleid ID of the title to terminate.\n @param timeout Timeout in nanoseconds. Pass 0 if not required."] #[doc = ""] pub fn NS_TerminateProcessTID(titleid: u64_, timeout: u64_) -> Result; } @@ -21940,34 +16397,19 @@ extern "C" { pub fn pmAppExit(); } extern "C" { - #[doc = "Gets the current pm:app session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current pm:app session handle."] + #[doc = "Gets the current pm:app session handle.\n @return The current pm:app session handle."] #[doc = ""] pub fn pmAppGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Launches a title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programInfo` - Program information of the title."] - #[doc = "* `launchFlags` - Flags to launch the title with."] + #[doc = "Launches a title.\n @param programInfo Program information of the title.\n @param launchFlags Flags to launch the title with."] #[doc = ""] pub fn PMAPP_LaunchTitle(programInfo: *const FS_ProgramInfo, launchFlags: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Launches a title, applying patches."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programInfo` - Program information of the title."] - #[doc = "* `programInfoUpdate` - Program information of the update title."] - #[doc = "* `launchFlags` - Flags to launch the title with."] + #[doc = "Launches a title, applying patches.\n @param programInfo Program information of the title.\n @param programInfoUpdate Program information of the update title.\n @param launchFlags Flags to launch the title with."] #[doc = ""] pub fn PMAPP_LaunchTitleUpdate( programInfo: *const FS_ProgramInfo, @@ -21977,13 +16419,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a title's ExHeader Arm11CoreInfo and SystemInfo flags."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outCoreInfo` - Pointer to write the ExHeader Arm11CoreInfo to. [Direction: In, Out]"] - #[doc = "* `outSiFlags` - Pointer to write the ExHeader SystemInfo flags to. [Direction: In, Out]"] - #[doc = "* `programInfo` - Program information of the title."] + #[doc = "Gets a title's ExHeader Arm11CoreInfo and SystemInfo flags.\n @param[out] outCoreInfo Pointer to write the ExHeader Arm11CoreInfo to.\n @param[out] outSiFlags Pointer to write the ExHeader SystemInfo flags to.\n @param programInfo Program information of the title."] #[doc = ""] pub fn PMAPP_GetTitleExheaderFlags( outCoreInfo: *mut ExHeader_Arm11CoreInfo, @@ -21993,35 +16429,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the current FIRM launch parameters."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the FIRM launch parameter buffer."] - #[doc = "* `in` - Buffer to retrieve the launch parameters from."] + #[doc = "Sets the current FIRM launch parameters.\n @param size Size of the FIRM launch parameter buffer.\n @param in Buffer to retrieve the launch parameters from."] #[doc = ""] pub fn PMAPP_SetFIRMLaunchParams(size: u32_, in_: *const ::libc::c_void) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the current FIRM launch parameters."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the FIRM launch parameter buffer."] - #[doc = "* `out` - Buffer to write the launch parameters to. [Direction: In, Out]"] + #[doc = "Gets the current FIRM launch parameters.\n @param size Size of the FIRM launch parameter buffer.\n @param[out] out Buffer to write the launch parameters to."] #[doc = ""] pub fn PMAPP_GetFIRMLaunchParams(out: *mut ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the current FIRM launch parameters."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `firmTidLow` - Low Title ID of the FIRM title to launch."] - #[doc = "* `size` - Size of the FIRM launch parameter buffer."] - #[doc = "* `in` - Buffer to retrieve the launch parameters from."] + #[doc = "Sets the current FIRM launch parameters.\n @param firmTidLow Low Title ID of the FIRM title to launch.\n @param size Size of the FIRM launch parameter buffer.\n @param in Buffer to retrieve the launch parameters from."] #[doc = ""] pub fn PMAPP_LaunchFIRMSetParams( firmTidLow: u32_, @@ -22031,77 +16451,43 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Terminate most processes, to prepare for a reboot or a shutdown."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timeout` - Time limit in ns for process termination, after which the remaining processes are killed."] + #[doc = "Terminate most processes, to prepare for a reboot or a shutdown.\n @param timeout Time limit in ns for process termination, after which the remaining processes are killed."] #[doc = ""] pub fn PMAPP_PrepareForReboot(timeout: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates the current Application"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timeout` - Timeout in nanoseconds"] + #[doc = "Terminates the current Application\n @param timeout Timeout in nanoseconds"] #[doc = ""] pub fn PMAPP_TerminateCurrentApplication(timeout: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates the processes having the specified titleId."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `titleId` - Title ID of the processes to terminate"] - #[doc = "* `timeout` - Timeout in nanoseconds"] + #[doc = "Terminates the processes having the specified titleId.\n @param titleId Title ID of the processes to terminate\n @param timeout Timeout in nanoseconds"] #[doc = ""] pub fn PMAPP_TerminateTitle(titleId: u64_, timeout: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Terminates the specified process"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pid` - Process-ID of the process to terminate"] - #[doc = "* `timeout` - Timeout in nanoseconds"] + #[doc = "Terminates the specified process\n @param pid Process-ID of the process to terminate\n @param timeout Timeout in nanoseconds"] #[doc = ""] pub fn PMAPP_TerminateProcess(pid: u32_, timeout: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Unregisters a process"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tid` - TitleID of the process to unregister"] + #[doc = "Unregisters a process\n @param tid TitleID of the process to unregister"] #[doc = ""] pub fn PMAPP_UnregisterProcess(tid: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the APPLICATION cputime reslimit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cpuTime` - Reslimit value."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* cpuTime can be no higher than reslimitdesc[0] & 0x7F in exheader (or 80 if the latter is 0)."] + #[doc = "Sets the APPLICATION cputime reslimit.\n @param cpuTime Reslimit value.\n @note cpuTime can be no higher than reslimitdesc[0] & 0x7F in exheader (or 80 if the latter is 0)."] #[doc = ""] pub fn PMAPP_SetAppResourceLimit(cpuTime: s64) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the APPLICATION cputime reslimit."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cpuTime` - Pointer to write the reslimit value to. [Direction: In, Out]"] + #[doc = "Gets the APPLICATION cputime reslimit.\n @param[out] cpuTime Pointer to write the reslimit value to."] #[doc = ""] pub fn PMAPP_GetAppResourceLimit(outCpuTime: *mut s64) -> Result; } @@ -22117,25 +16503,13 @@ extern "C" { pub fn pmDbgExit(); } extern "C" { - #[doc = "Gets the current pm:dbg session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current pm:dbg session handle."] + #[doc = "Gets the current pm:dbg session handle.\n @return The current pm:dbg session handle."] #[doc = ""] pub fn pmDbgGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Enqueues an application for debug after setting cpuTime to 0, and returns a debug handle to it."] - #[doc = ""] - #[doc = "If another process was enqueued, this just calls [`RunQueuedProcess`] instead."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `Pointer` - to output the debug handle to. [Direction: In, Out]"] - #[doc = "* `programInfo` - Program information of the title."] - #[doc = "* `launchFlags` - Flags to launch the title with."] + #[doc = "Enqueues an application for debug after setting cpuTime to 0, and returns a debug handle to it.\n If another process was enqueued, this just calls [`RunQueuedProcess`] instead.\n @param[out] Pointer to output the debug handle to.\n @param programInfo Program information of the title.\n @param launchFlags Flags to launch the title with."] #[doc = ""] pub fn PMDBG_LaunchAppDebug( outDebug: *mut Handle, @@ -22145,22 +16519,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Launches an application for debug after setting cpuTime to 0."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programInfo` - Program information of the title."] - #[doc = "* `launchFlags` - Flags to launch the title with."] + #[doc = "Launches an application for debug after setting cpuTime to 0.\n @param programInfo Program information of the title.\n @param launchFlags Flags to launch the title with."] #[doc = ""] pub fn PMDBG_LaunchApp(programInfo: *const FS_ProgramInfo, launchFlags: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Runs the queued process and returns a debug handle to it."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `Pointer` - to output the debug handle to. [Direction: In, Out]"] + #[doc = "Runs the queued process and returns a debug handle to it.\n @param[out] Pointer to output the debug handle to."] #[doc = ""] pub fn PMDBG_RunQueuedProcess(outDebug: *mut Handle) -> Result; } @@ -22263,11 +16628,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes PS with the specified session handle."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Session handle."] + #[doc = "Initializes PS with the specified session handle.\n @param handle Session handle."] #[doc = ""] pub fn psInitHandle(handle: Handle) -> Result; } @@ -22283,25 +16644,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Signs a RSA signature."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `hash` - SHA256 hash to sign."] - #[doc = "* `ctx` - RSA context."] - #[doc = "* `signature` - RSA signature."] + #[doc = "Signs a RSA signature.\n @param hash SHA256 hash to sign.\n @param ctx RSA context.\n @param signature RSA signature."] #[doc = ""] pub fn PS_SignRsaSha256(hash: *mut u8_, ctx: *mut psRSAContext, signature: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Verifies a RSA signature."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `hash` - SHA256 hash to compare with."] - #[doc = "* `ctx` - RSA context."] - #[doc = "* `signature` - RSA signature."] + #[doc = "Verifies a RSA signature.\n @param hash SHA256 hash to compare with.\n @param ctx RSA context.\n @param signature RSA signature."] #[doc = ""] pub fn PS_VerifyRsaSha256( hash: *mut u8_, @@ -22311,16 +16660,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Encrypts/Decrypts AES data. Does not support AES CCM."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the data."] - #[doc = "* `in` - Input buffer."] - #[doc = "* `out` - Output buffer."] - #[doc = "* `aes_algo` - AES algorithm to use."] - #[doc = "* `key_type` - Key type to use."] - #[doc = "* `iv` - Pointer to the CTR/IV. The output CTR/IV is also written here."] + #[doc = "Encrypts/Decrypts AES data. Does not support AES CCM.\n @param size Size of the data.\n @param in Input buffer.\n @param out Output buffer.\n @param aes_algo AES algorithm to use.\n @param key_type Key type to use.\n @param iv Pointer to the CTR/IV. The output CTR/IV is also written here."] #[doc = ""] pub fn PS_EncryptDecryptAes( size: u32_, @@ -22333,22 +16673,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Encrypts/Decrypts signed AES CCM data."] - #[doc = ""] - #[doc = "When decrypting, if the MAC is invalid, 0xC9010401 is returned. After encrypting the MAC is located at inputbufptr."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `in` - Input buffer."] - #[doc = "* `in_size` - Size of the input buffer. Must include MAC size when decrypting."] - #[doc = "* `out` - Output buffer."] - #[doc = "* `out_size` - Size of the output buffer. Must include MAC size when encrypting."] - #[doc = "* `data_len` - Length of the data to be encrypted/decrypted."] - #[doc = "* `mac_data_len` - Length of the MAC data."] - #[doc = "* `mac_len` - Length of the MAC."] - #[doc = "* `aes_algo` - AES algorithm to use."] - #[doc = "* `key_type` - Key type to use."] - #[doc = "* `nonce` - Pointer to the nonce."] + #[doc = "Encrypts/Decrypts signed AES CCM data.\n When decrypting, if the MAC is invalid, 0xC9010401 is returned. After encrypting the MAC is located at inputbufptr.\n @param in Input buffer.\n @param in_size Size of the input buffer. Must include MAC size when decrypting.\n @param out Output buffer.\n @param out_size Size of the output buffer. Must include MAC size when encrypting.\n @param data_len Length of the data to be encrypted/decrypted.\n @param mac_data_len Length of the MAC data.\n @param mac_len Length of the MAC.\n @param aes_algo AES algorithm to use.\n @param key_type Key type to use.\n @param nonce Pointer to the nonce."] #[doc = ""] pub fn PS_EncryptSignDecryptVerifyAesCcm( in_: *mut u8_, @@ -22365,34 +16690,21 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the 64-bit console friend code seed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `seed` - Pointer to write the friend code seed to."] + #[doc = "Gets the 64-bit console friend code seed.\n @param seed Pointer to write the friend code seed to."] #[doc = ""] pub fn PS_GetLocalFriendCodeSeed(seed: *mut u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the 32-bit device ID."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `device_id` - Pointer to write the device ID to."] + #[doc = "Gets the 32-bit device ID.\n @param device_id Pointer to write the device ID to."] #[doc = ""] pub fn PS_GetDeviceId(device_id: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Generates cryptographically secure random bytes."] + #[doc = "Generates cryptographically secure random bytes.\n @param out Pointer to the buffer to write the bytes to.\n @param len Number of bytes to write."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to the buffer to write the bytes to."] - #[doc = "* `len` - Number of bytes to write."] - #[doc = ""] - pub fn PS_GenerateRandomBytes(out: *mut ::libc::c_void, len: size_t) -> Result; + pub fn PS_GenerateRandomBytes(out: *mut ::libc::c_void, len: usize) -> Result; } extern "C" { #[must_use] @@ -22406,71 +16718,43 @@ extern "C" { pub fn ptmuExit(); } extern "C" { - #[doc = "Gets a pointer to the current ptm:u session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current ptm:u session handle."] + #[doc = "Gets a pointer to the current ptm:u session handle.\n @return A pointer to the current ptm:u session handle."] #[doc = ""] pub fn ptmuGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Gets the system's current shell state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the current shell state to. (0 = closed, 1 = open)"] + #[doc = "Gets the system's current shell state.\n @param out Pointer to write the current shell state to. (0 = closed, 1 = open)"] #[doc = ""] pub fn PTMU_GetShellState(out: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the system's current battery level."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the current battery level to. (0-5)"] + #[doc = "Gets the system's current battery level.\n @param out Pointer to write the current battery level to. (0-5)"] #[doc = ""] pub fn PTMU_GetBatteryLevel(out: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the system's current battery charge state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the current battery charge state to. (0 = not charging, 1 = charging)"] + #[doc = "Gets the system's current battery charge state.\n @param out Pointer to write the current battery charge state to. (0 = not charging, 1 = charging)"] #[doc = ""] pub fn PTMU_GetBatteryChargeState(out: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the system's current pedometer state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the current pedometer state to. (0 = not counting, 1 = counting)"] + #[doc = "Gets the system's current pedometer state.\n @param out Pointer to write the current pedometer state to. (0 = not counting, 1 = counting)"] #[doc = ""] pub fn PTMU_GetPedometerState(out: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the pedometer's total step count."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `steps` - Pointer to write the total step count to."] + #[doc = "Gets the pedometer's total step count.\n @param steps Pointer to write the total step count to."] #[doc = ""] pub fn PTMU_GetTotalStepCount(steps: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the adapter is plugged in or not"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the adapter state to."] + #[doc = "Gets whether the adapter is plugged in or not\n @param out Pointer to write the adapter state to."] #[doc = ""] pub fn PTMU_GetAdapterState(out: *mut bool) -> Result; } @@ -22549,11 +16833,7 @@ extern "C" { pub fn ptmSysmExit(); } extern "C" { - #[doc = "Gets a pointer to the current ptm:sysm session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current ptm:sysm session handle."] + #[doc = "Gets a pointer to the current ptm:sysm session handle.\n @return A pointer to the current ptm:sysm session handle."] #[doc = ""] pub fn ptmSysmGetSessionHandle() -> *mut Handle; } @@ -22565,53 +16845,25 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Accepts or denies the incoming sleep mode request."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `deny` - Whether or not to deny the sleep request."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* If deny = false, this is equivalent to calling [`PTMSYSM_NotifySleepPreparationComplete(3)`]"] + #[doc = "Accepts or denies the incoming sleep mode request.\n @param deny Whether or not to deny the sleep request.\n @note If deny = false, this is equivalent to calling [`PTMSYSM_NotifySleepPreparationComplete(3)`]"] #[doc = ""] pub fn PTMSYSM_ReplyToSleepQuery(deny: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Acknowledges the current sleep notification and advance the internal sleep mode FSM. All subscribers must reply."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ackValue` - Use [`ptmSysmGetNotificationAckValue`]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* [`PTMNOTIFID_SLEEP_DENIED`] and [`PTMNOTIFID_FULLY_AWAKE`] don't require this."] + #[doc = "Acknowledges the current sleep notification and advance the internal sleep mode FSM. All subscribers must reply.\n @param ackValue Use [`ptmSysmGetNotificationAckValue\n`] @note [`PTMNOTIFID_SLEEP_DENIED`] and [`PTMNOTIFID_FULLY_AWAKE`] don't require this."] #[doc = ""] pub fn PTMSYSM_NotifySleepPreparationComplete(ackValue: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the wake events (two sets: when to fully wake up and when to return to sleep)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sleepConfig` - Pointer to the two sets of wake events."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Can only be called just before acknowledging [`PTMNOTIFID_GOING_TO_SLEEP`] or [`PTMNOTIFID_HALF_AWAKE`]"] + #[doc = "Sets the wake events (two sets: when to fully wake up and when to return to sleep).\n @param sleepConfig Pointer to the two sets of wake events.\n @note Can only be called just before acknowledging [`PTMNOTIFID_GOING_TO_SLEEP`] or [`PTMNOTIFID_HALF_AWAKE`]"] #[doc = ""] pub fn PTMSYSM_SetWakeEvents(sleepConfig: *const PtmSleepConfig) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the wake reason (only the first applicable wake event is taken into account)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sleepConfig` - Pointer to the two sets of wake events. Only the relevant set will be filled."] + #[doc = "Gets the wake reason (only the first applicable wake event is taken into account).\n @param sleepConfig Pointer to the two sets of wake events. Only the relevant set will be filled."] #[doc = ""] pub fn PTMSYSM_GetWakeReason(outSleepConfig: *mut PtmSleepConfig) -> Result; } @@ -22623,11 +16875,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets the user time by updating the user time offset."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `msY2k` - The number of milliseconds since 01/01/2000."] + #[doc = "Sets the user time by updating the user time offset.\n @param msY2k The number of milliseconds since 01/01/2000."] #[doc = ""] pub fn PTMSYSM_SetUserTime(msY2k: s64) -> Result; } @@ -22639,21 +16887,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Reads the time and date coming from the RTC and converts the result."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outMsY2k` - The pointer to write the number of milliseconds since 01/01/2000 to. [Direction: In, Out]"] + #[doc = "Reads the time and date coming from the RTC and converts the result.\n @param[out] outMsY2k The pointer to write the number of milliseconds since 01/01/2000 to."] #[doc = ""] pub fn PTMSYSM_GetRtcTime(outMsY2k: *mut s64) -> Result; } extern "C" { #[must_use] - #[doc = "Writes the time and date coming to the RTC, after conversion."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `msY2k` - The number of milliseconds since 01/01/2000."] + #[doc = "Writes the time and date coming to the RTC, after conversion.\n @param msY2k The number of milliseconds since 01/01/2000."] #[doc = ""] pub fn PTMSYSM_SetRtcTime(msY2k: s64) -> Result; } @@ -22665,31 +16905,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the New 3DS' CPU clock speed and L2 cache."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `value` - Bit0: enable higher clock, Bit1: enable L2 cache."] + #[doc = "Configures the New 3DS' CPU clock speed and L2 cache.\n @param value Bit0: enable higher clock, Bit1: enable L2 cache."] #[doc = ""] pub fn PTMSYSM_ConfigureNew3DSCPU(value: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Trigger a hardware system shutdown via the MCU."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timeout:` - timeout passed to PMApp:ShutdownAsync (PrepareForReboot)."] + #[doc = "Trigger a hardware system shutdown via the MCU.\n @param timeout: timeout passed to PMApp:ShutdownAsync (PrepareForReboot)."] #[doc = ""] pub fn PTMSYSM_ShutdownAsync(timeout: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Trigger a hardware system reboot via the MCU."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `timeout:` - timeout passed to PMApp:ShutdownAsync (PrepareForReboot)."] + #[doc = "Trigger a hardware system reboot via the MCU.\n @param timeout: timeout passed to PMApp:ShutdownAsync (PrepareForReboot)."] #[doc = ""] pub fn PTMSYSM_RebootAsync(timeout: u64_) -> Result; } @@ -22705,21 +16933,13 @@ extern "C" { pub fn ptmGetsExit(); } extern "C" { - #[doc = "Gets a pointer to the current ptm:gets session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current ptm:gets session handle."] + #[doc = "Gets a pointer to the current ptm:gets session handle.\n @return A pointer to the current ptm:gets session handle."] #[doc = ""] pub fn ptmGetsGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Gets the system time."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `outMsY2k` - The pointer to write the number of milliseconds since 01/01/2000 to. [Direction: In, Out]"] + #[doc = "Gets the system time.\n @param[out] outMsY2k The pointer to write the number of milliseconds since 01/01/2000 to."] #[doc = ""] pub fn PTMGETS_GetSystemTime(outMsY2k: *mut s64) -> Result; } @@ -22735,21 +16955,13 @@ extern "C" { pub fn ptmSetsExit(); } extern "C" { - #[doc = "Gets a pointer to the current ptm:sets session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* A pointer to the current ptm:sets session handle."] + #[doc = "Gets a pointer to the current ptm:sets session handle.\n @return A pointer to the current ptm:sets session handle."] #[doc = ""] pub fn ptmSetsGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Sets the system time."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `msY2k` - The number of milliseconds since 01/01/2000."] + #[doc = "Sets the system time.\n @param msY2k The number of milliseconds since 01/01/2000."] #[doc = ""] pub fn PTMSETS_SetSystemTime(msY2k: s64) -> Result; } @@ -22829,16 +17041,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Performs multiple card SPI writes and reads."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `header` - Header to lead the transfers with. Must be, at most, 8 bytes in size."] - #[doc = "* `writeBuffer1` - Buffer to make first transfer from."] - #[doc = "* `readBuffer1` - Buffer to receive first response to."] - #[doc = "* `writeBuffer2` - Buffer to make second transfer from."] - #[doc = "* `readBuffer2` - Buffer to receive second response to."] - #[doc = "* `footer` - Footer to follow the transfers with. Must be, at most, 8 bytes in size. Wait operation is unused."] + #[doc = "Performs multiple card SPI writes and reads.\n @param header Header to lead the transfers with. Must be, at most, 8 bytes in size.\n @param writeBuffer1 Buffer to make first transfer from.\n @param readBuffer1 Buffer to receive first response to.\n @param writeBuffer2 Buffer to make second transfer from.\n @param readBuffer2 Buffer to receive second response to.\n @param footer Footer to follow the transfers with. Must be, at most, 8 bytes in size. Wait operation is unused."] #[doc = ""] pub fn PXIDEV_SPIMultiWriteRead( header: *mut PXIDEV_SPIBuffer, @@ -22851,14 +17054,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Performs a single card SPI write and read."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `bytesRead` - Pointer to output the number of bytes received to."] - #[doc = "* `initialWaitOperation` - Wait operation to perform before transferring data."] - #[doc = "* `writeBuffer` - Buffer to transfer data from."] - #[doc = "* `readBuffer` - Buffer to receive data to."] + #[doc = "Performs a single card SPI write and read.\n @param bytesRead Pointer to output the number of bytes received to.\n @param initialWaitOperation Wait operation to perform before transferring data.\n @param writeBuffer Buffer to transfer data from.\n @param readBuffer Buffer to receive data to."] #[doc = ""] pub fn PXIDEV_SPIWriteRead( bytesRead: *mut u32_, @@ -22879,34 +17075,19 @@ extern "C" { pub fn pxiPmExit(); } extern "C" { - #[doc = "Gets the current PxiPM session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current PxiPM session handle."] + #[doc = "Gets the current PxiPM session handle.\n @return The current PxiPM session handle."] #[doc = ""] pub fn pxiPmGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Retrives the exheader information set(s) (SCI+ACI) about a program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `exheaderInfos[out]` - Pointer to the output exheader information set."] - #[doc = "* `programHandle` - The program handle."] + #[doc = "Retrives the exheader information set(s) (SCI+ACI) about a program.\n @param exheaderInfos[out] Pointer to the output exheader information set.\n @param programHandle The program handle."] #[doc = ""] pub fn PXIPM_GetProgramInfo(exheaderInfo: *mut ExHeader_Info, programHandle: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Loads a program and registers it to Process9."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle[out]` - Pointer to the output the program handle to."] - #[doc = "* `programInfo` - Information about the program to load."] - #[doc = "* `updateInfo` - Information about the program update to load."] + #[doc = "Loads a program and registers it to Process9.\n @param programHandle[out] Pointer to the output the program handle to.\n @param programInfo Information about the program to load.\n @param updateInfo Information about the program update to load."] #[doc = ""] pub fn PXIPM_RegisterProgram( programHandle: *mut u64_, @@ -22916,11 +17097,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unloads a program and unregisters it from Process9."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle` - The program handle."] + #[doc = "Unloads a program and unregisters it from Process9.\n @param programHandle The program handle."] #[doc = ""] pub fn PXIPM_UnregisterProgram(programHandle: u64_) -> Result; } @@ -23265,19 +17442,19 @@ extern "C" { extern "C" { pub fn strftime( _s: *mut ::libc::c_char, - _maxsize: size_t, + _maxsize: usize, _fmt: *const ::libc::c_char, _t: *const tm, - ) -> size_t; + ) -> usize; } extern "C" { pub fn strftime_l( _s: *mut ::libc::c_char, - _maxsize: size_t, + _maxsize: usize, _fmt: *const ::libc::c_char, _t: *const tm, _l: locale_t, - ) -> size_t; + ) -> usize; } extern "C" { pub fn asctime_r(arg1: *const tm, arg2: *mut ::libc::c_char) -> *mut ::libc::c_char; @@ -23366,7 +17543,7 @@ pub struct sigaction { pub struct sigaltstack { pub ss_sp: *mut ::libc::c_void, pub ss_flags: ::libc::c_int, - pub ss_size: size_t, + pub ss_size: usize, } impl Default for sigaltstack { fn default() -> Self { @@ -23608,37 +17785,37 @@ extern "C" { pub fn recv( sockfd: ::libc::c_int, buf: *mut ::libc::c_void, - len: size_t, + len: usize, flags: ::libc::c_int, - ) -> ssize_t; + ) -> isize; } extern "C" { pub fn recvfrom( sockfd: ::libc::c_int, buf: *mut ::libc::c_void, - len: size_t, + len: usize, flags: ::libc::c_int, src_addr: *mut sockaddr, addrlen: *mut socklen_t, - ) -> ssize_t; + ) -> isize; } extern "C" { pub fn send( sockfd: ::libc::c_int, buf: *const ::libc::c_void, - len: size_t, + len: usize, flags: ::libc::c_int, - ) -> ssize_t; + ) -> isize; } extern "C" { pub fn sendto( sockfd: ::libc::c_int, buf: *const ::libc::c_void, - len: size_t, + len: usize, flags: ::libc::c_int, dest_addr: *const sockaddr, addrlen: socklen_t, - ) -> ssize_t; + ) -> isize; } extern "C" { pub fn setsockopt( @@ -23821,40 +17998,23 @@ pub struct SOCU_DNSTableEntry { } extern "C" { #[must_use] - #[doc = "Initializes the SOC service."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `context_addr` - Address of a page-aligned (0x1000) buffer to be used."] - #[doc = "* `context_size` - Size of the buffer, a multiple of 0x1000."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The specified context buffer can no longer be accessed by the process which called this function, since the userland permissions for this block are set to no-access."] + #[doc = "Initializes the SOC service.\n @param context_addr Address of a page-aligned (0x1000) buffer to be used.\n @param context_size Size of the buffer, a multiple of 0x1000.\n @note The specified context buffer can no longer be accessed by the process which called this function, since the userland permissions for this block are set to no-access."] #[doc = ""] pub fn socInit(context_addr: *mut u32_, context_size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Closes the soc service."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* You need to call this in order to be able to use the buffer again."] + #[doc = "Closes the soc service.\n @note You need to call this in order to be able to use the buffer again."] #[doc = ""] pub fn socExit() -> Result; } extern "C" { - #[doc = "Gets the system's host ID."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The system's host ID."] + #[doc = "Gets the system's host ID.\n @return The system's host ID."] #[doc = ""] pub fn gethostid() -> ::libc::c_long; } extern "C" { - pub fn gethostname(name: *mut ::libc::c_char, namelen: size_t) -> ::libc::c_int; + pub fn gethostname(name: *mut ::libc::c_char, namelen: usize) -> ::libc::c_int; } extern "C" { pub fn SOCU_ShutdownSockets() -> ::libc::c_int; @@ -23863,18 +18023,7 @@ extern "C" { pub fn SOCU_CloseSockets() -> ::libc::c_int; } extern "C" { - #[doc = "Retrieves information from the network configuration. Similar to getsockopt()."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* 0 if successful. -1 if failed, and errno will be set accordingly. Can also return a system error code."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `level` - Only value allowed seems to be [`SOL_CONFIG`]"] - #[doc = "* `optname` - The option to be retrieved"] - #[doc = "* `optval` - Will contain the output of the command"] - #[doc = "* `optlen` - Size of the optval buffer, will be updated to hold the size of the output"] + #[doc = "Retrieves information from the network configuration. Similar to getsockopt().\n @param level Only value allowed seems to be [`SOL_CONFIG\n`] @param optname The option to be retrieved\n @param optval Will contain the output of the command\n @param optlen Size of the optval buffer, will be updated to hold the size of the output\n @return 0 if successful. -1 if failed, and errno will be set accordingly. Can also return a system error code."] #[doc = ""] pub fn SOCU_GetNetworkOpt( level: ::libc::c_int, @@ -23884,11 +18033,7 @@ extern "C" { ) -> ::libc::c_int; } extern "C" { - #[doc = "Gets the system's IP address, netmask, and subnet broadcast"] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* error"] + #[doc = "Gets the system's IP address, netmask, and subnet broadcast\n @return error"] #[doc = ""] pub fn SOCU_GetIPInfo( ip: *mut in_addr, @@ -23897,15 +18042,7 @@ extern "C" { ) -> ::libc::c_int; } extern "C" { - #[doc = "Adds a global socket."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* error"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sockfd` - The socket fd."] + #[doc = "Adds a global socket.\n @param sockfd The socket fd.\n @return error"] #[doc = ""] pub fn SOCU_AddGlobalSocket(sockfd: ::libc::c_int) -> ::libc::c_int; } @@ -23951,12 +18088,7 @@ pub const MICU_SAMPLE_RATE_8180: MICU_SampleRate = 3; pub type MICU_SampleRate = ::libc::c_uint; extern "C" { #[must_use] - #[doc = "Initializes MIC."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Shared memory buffer to write audio data to. Must be aligned to 0x1000 bytes."] - #[doc = "* `handle` - Size of the shared memory buffer."] + #[doc = "Initializes MIC.\n @param size Shared memory buffer to write audio data to. Must be aligned to 0x1000 bytes.\n @param handle Size of the shared memory buffer."] #[doc = ""] pub fn micInit(buffer: *mut u8_, bufferSize: u32_) -> Result; } @@ -23966,31 +18098,18 @@ extern "C" { pub fn micExit(); } extern "C" { - #[doc = "Gets the size of the sample data area within the shared memory buffer."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The sample data's size."] + #[doc = "Gets the size of the sample data area within the shared memory buffer.\n @return The sample data's size."] #[doc = ""] pub fn micGetSampleDataSize() -> u32_; } extern "C" { - #[doc = "Gets the offset within the shared memory buffer of the last sample written."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The last sample's offset."] + #[doc = "Gets the offset within the shared memory buffer of the last sample written.\n @return The last sample's offset."] #[doc = ""] pub fn micGetLastSampleOffset() -> u32_; } extern "C" { #[must_use] - #[doc = "Maps MIC shared memory."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `size` - Size of the shared memory."] - #[doc = "* `handle` - Handle of the shared memory."] + #[doc = "Maps MIC shared memory.\n @param size Size of the shared memory.\n @param handle Handle of the shared memory."] #[doc = ""] pub fn MICU_MapSharedMem(size: u32_, handle: Handle) -> Result; } @@ -24002,15 +18121,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Begins sampling microphone input."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `encoding` - Encoding of outputted audio."] - #[doc = "* `sampleRate` - Sample rate of outputted audio."] - #[doc = "* `sharedMemAudioOffset` - Offset to write audio data to in the shared memory buffer."] - #[doc = "* `sharedMemAudioSize` - Size of audio data to write to the shared memory buffer. This should be at most \"bufferSize - 4\"."] - #[doc = "* `loop` - Whether to loop back to the beginning of the buffer when the end is reached."] + #[doc = "Begins sampling microphone input.\n @param encoding Encoding of outputted audio.\n @param sampleRate Sample rate of outputted audio.\n @param sharedMemAudioOffset Offset to write audio data to in the shared memory buffer.\n @param sharedMemAudioSize Size of audio data to write to the shared memory buffer. This should be at most \"bufferSize - 4\".\n @param loop Whether to loop back to the beginning of the buffer when the end is reached."] #[doc = ""] pub fn MICU_StartSampling( encoding: MICU_Encoding, @@ -24022,11 +18133,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adjusts the configuration of the current sampling session."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sampleRate` - Sample rate of outputted audio."] + #[doc = "Adjusts the configuration of the current sampling session.\n @param sampleRate Sample rate of outputted audio."] #[doc = ""] pub fn MICU_AdjustSampling(sampleRate: MICU_SampleRate) -> Result; } @@ -24038,91 +18145,55 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets whether microphone input is currently being sampled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sampling` - Pointer to output the sampling state to."] + #[doc = "Gets whether microphone input is currently being sampled.\n @param sampling Pointer to output the sampling state to."] #[doc = ""] pub fn MICU_IsSampling(sampling: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets an event handle triggered when the shared memory buffer is full."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `handle` - Pointer to output the event handle to."] + #[doc = "Gets an event handle triggered when the shared memory buffer is full.\n @param handle Pointer to output the event handle to."] #[doc = ""] pub fn MICU_GetEventHandle(handle: *mut Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the microphone's gain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `gain` - Gain to set."] + #[doc = "Sets the microphone's gain.\n @param gain Gain to set."] #[doc = ""] pub fn MICU_SetGain(gain: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the microphone's gain."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `gain` - Pointer to output the current gain to."] + #[doc = "Gets the microphone's gain.\n @param gain Pointer to output the current gain to."] #[doc = ""] pub fn MICU_GetGain(gain: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether the microphone is powered on."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `power` - Whether the microphone is powered on."] + #[doc = "Sets whether the microphone is powered on.\n @param power Whether the microphone is powered on."] #[doc = ""] pub fn MICU_SetPower(power: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether the microphone is powered on."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `power` - Pointer to output the power state to."] + #[doc = "Gets whether the microphone is powered on.\n @param power Pointer to output the power state to."] #[doc = ""] pub fn MICU_GetPower(power: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether to clamp microphone input."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `clamp` - Whether to clamp microphone input."] + #[doc = "Sets whether to clamp microphone input.\n @param clamp Whether to clamp microphone input."] #[doc = ""] pub fn MICU_SetClamp(clamp: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Gets whether to clamp microphone input."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `clamp` - Pointer to output the clamp state to."] + #[doc = "Gets whether to clamp microphone input.\n @param clamp Pointer to output the clamp state to."] #[doc = ""] pub fn MICU_GetClamp(clamp: *mut bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets whether to allow sampling when the shell is closed."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `allowShellClosed` - Whether to allow sampling when the shell is closed."] + #[doc = "Sets whether to allow sampling when the shell is closed.\n @param allowShellClosed Whether to allow sampling when the shell is closed."] #[doc = ""] pub fn MICU_SetAllowShellClosed(allowShellClosed: bool) -> Result; } @@ -24308,15 +18379,7 @@ pub struct MVDSTD_InitStruct { } extern "C" { #[must_use] - #[doc = "Initializes MVDSTD."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mode` - Mode to initialize MVDSTD to."] - #[doc = "* `input_type` - Type of input to process."] - #[doc = "* `output_type` - Type of output to produce."] - #[doc = "* `size` - Size of the work buffer, MVD_DEFAULT_WORKBUF_SIZE can be used for this. Only used when type == MVDMODE_VIDEOPROCESSING."] - #[doc = "* `initstruct` - Optional MVDSTD_InitStruct, this should be NULL normally."] + #[doc = "Initializes MVDSTD.\n @param mode Mode to initialize MVDSTD to.\n @param input_type Type of input to process.\n @param output_type Type of output to produce.\n @param size Size of the work buffer, MVD_DEFAULT_WORKBUF_SIZE can be used for this. Only used when type == MVDMODE_VIDEOPROCESSING.\n @param initstruct Optional MVDSTD_InitStruct, this should be NULL normally."] #[doc = ""] pub fn mvdstdInit( mode: MVDSTD_Mode, @@ -24332,18 +18395,7 @@ extern "C" { pub fn mvdstdExit(); } extern "C" { - #[doc = "Generates a default MVDSTD configuration."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to output the generated config to."] - #[doc = "* `input_width` - Input width."] - #[doc = "* `input_height` - Input height."] - #[doc = "* `output_width` - Output width."] - #[doc = "* `output_height` - Output height."] - #[doc = "* `vaddr_colorconv_indata` - Virtual address of the color conversion input data."] - #[doc = "* `vaddr_outdata0` - Virtual address of the output data."] - #[doc = "* `vaddr_outdata1` - Additional virtual address for output data, only used when the output format type is value 0x00020001."] + #[doc = "Generates a default MVDSTD configuration.\n @param config Pointer to output the generated config to.\n @param input_width Input width.\n @param input_height Input height.\n @param output_width Output width.\n @param output_height Output height.\n @param vaddr_colorconv_indata Virtual address of the color conversion input data.\n @param vaddr_outdata0 Virtual address of the output data.\n @param vaddr_outdata1 Additional virtual address for output data, only used when the output format type is value 0x00020001."] #[doc = ""] pub fn mvdstdGenerateDefaultConfig( config: *mut MVDSTD_Config, @@ -24358,61 +18410,36 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Run color-format-conversion."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to the configuration to use."] + #[doc = "Run color-format-conversion.\n @param config Pointer to the configuration to use."] #[doc = ""] pub fn mvdstdConvertImage(config: *mut MVDSTD_Config) -> Result; } extern "C" { #[must_use] - #[doc = "Processes a video frame(specifically a NAL-unit)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inbuf_vaddr` - Input NAL-unit starting with the 3-byte \"00 00 01\" prefix. Must be located in linearmem."] - #[doc = "* `size` - Size of the input buffer."] - #[doc = "* `flag` - See here regarding this input flag: "] - #[doc = "* `out` - Optional output MVDSTD_ProcessNALUnitOut structure."] + #[doc = "Processes a video frame(specifically a NAL-unit).\n @param inbuf_vaddr Input NAL-unit starting with the 3-byte \"00 00 01\" prefix. Must be located in linearmem.\n @param size Size of the input buffer.\n @param flag See here regarding this input flag: @param out Optional output MVDSTD_ProcessNALUnitOut structure."] #[doc = ""] pub fn mvdstdProcessVideoFrame( inbuf_vaddr: *mut ::libc::c_void, - size: size_t, + size: usize, flag: u32_, out: *mut MVDSTD_ProcessNALUnitOut, ) -> Result; } extern "C" { #[must_use] - #[doc = "Renders the video frame."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Optional pointer to the configuration to use. When NULL, MVDSTD_SetConfig() should have been used previously for this video."] - #[doc = "* `wait` - When true, wait for rendering to finish. When false, you can manually call this function repeatedly until it stops returning MVD_STATUS_BUSY."] + #[doc = "Renders the video frame.\n @param config Optional pointer to the configuration to use. When NULL, MVDSTD_SetConfig() should have been used previously for this video.\n @param wait When true, wait for rendering to finish. When false, you can manually call this function repeatedly until it stops returning MVD_STATUS_BUSY."] #[doc = ""] pub fn mvdstdRenderVideoFrame(config: *mut MVDSTD_Config, wait: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the current configuration of MVDSTD."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `config` - Pointer to the configuration to set."] + #[doc = "Sets the current configuration of MVDSTD.\n @param config Pointer to the configuration to set."] #[doc = ""] pub fn MVDSTD_SetConfig(config: *mut MVDSTD_Config) -> Result; } extern "C" { #[must_use] - #[doc = "New3DS Internet Browser doesn't use this. Once done, rendered frames will be written to the output buffers specified by the entrylist instead of the output specified by configuration. See here: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `entrylist` - Input entrylist."] - #[doc = "* `bufsize` - Size of each buffer from the entrylist."] + #[doc = "New3DS Internet Browser doesn't use this. Once done, rendered frames will be written to the output buffers specified by the entrylist instead of the output specified by configuration. See here: @param entrylist Input entrylist.\n @param bufsize Size of each buffer from the entrylist."] #[doc = ""] pub fn mvdstdSetupOutputBuffers( entrylist: *mut MVDSTD_OutputBuffersEntryList, @@ -24421,14 +18448,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "New3DS Internet Browser doesn't use this. This overrides the entry0 output buffers originally setup by mvdstdSetupOutputBuffers(). See also here: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cur_outdata0` - Linearmem vaddr. The current outdata0 for this entry must match this value."] - #[doc = "* `cur_outdata1` - Linearmem vaddr. The current outdata1 for this entry must match this value."] - #[doc = "* `new_outdata0` - Linearmem vaddr. This is the new address to use for outaddr0."] - #[doc = "* `new_outdata1` - Linearmem vaddr. This is the new address to use for outaddr1."] + #[doc = "New3DS Internet Browser doesn't use this. This overrides the entry0 output buffers originally setup by mvdstdSetupOutputBuffers(). See also here: @param cur_outdata0 Linearmem vaddr. The current outdata0 for this entry must match this value.\n @param cur_outdata1 Linearmem vaddr. The current outdata1 for this entry must match this value.\n @param new_outdata0 Linearmem vaddr. This is the new address to use for outaddr0.\n @param new_outdata1 Linearmem vaddr. This is the new address to use for outaddr1."] #[doc = ""] pub fn mvdstdOverrideOutputBuffers( cur_outdata0: *mut ::libc::c_void, @@ -24589,11 +18609,7 @@ pub struct NFC_AppDataWriteStruct { } extern "C" { #[must_use] - #[doc = "Initializes NFC."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `type` - See the NFC_OpType enum."] + #[doc = "Initializes NFC.\n @param type See the NFC_OpType enum."] #[doc = ""] pub fn nfcInit(type_: NFC_OpType) -> Result; } @@ -24603,21 +18619,13 @@ extern "C" { pub fn nfcExit(); } extern "C" { - #[doc = "Gets the NFC service handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The NFC service handle."] + #[doc = "Gets the NFC service handle.\n @return The NFC service handle."] #[doc = ""] pub fn nfcGetSessionHandle() -> Handle; } extern "C" { #[must_use] - #[doc = "Starts scanning for NFC tags."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inval` - Unknown. See NFC_STARTSCAN_DEFAULTINPUT."] + #[doc = "Starts scanning for NFC tags.\n @param inval Unknown. See NFC_STARTSCAN_DEFAULTINPUT."] #[doc = ""] pub fn nfcStartScanning(inval: u16_) -> Result; } @@ -24646,127 +18654,76 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Returns the current NFC tag state."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - Pointer to write NFC tag state."] + #[doc = "Returns the current NFC tag state.\n @param state Pointer to write NFC tag state."] #[doc = ""] pub fn nfcGetTagState(state: *mut NFC_TagState) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the current TagInfo."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the output TagInfo."] + #[doc = "Returns the current TagInfo.\n @param out Pointer to write the output TagInfo."] #[doc = ""] pub fn nfcGetTagInfo(out: *mut NFC_TagInfo) -> Result; } extern "C" { #[must_use] - #[doc = "Opens the appdata, when the amiibo appdata was previously initialized. This must be used before reading/writing the appdata. See also: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `amiibo_appid` - Amiibo AppID. See here: "] + #[doc = "Opens the appdata, when the amiibo appdata was previously initialized. This must be used before reading/writing the appdata. See also: @param amiibo_appid Amiibo AppID. See here: "] #[doc = ""] pub fn nfcOpenAppData(amiibo_appid: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "This initializes the appdata using the specified input, when the appdata previously wasn't initialized. If the appdata is already initialized, you must first use the amiibo Settings applet menu option labeled \"Delete amiibo Game Data\". This automatically writes the amiibo data into the actual data storage(normally NFC data pages). See also nfcWriteAppData()."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `amiibo_appid` - amiibo AppID. See also nfcOpenAppData()."] - #[doc = "* `buf` - Input buffer."] - #[doc = "* `size` - Buffer size."] + #[doc = "This initializes the appdata using the specified input, when the appdata previously wasn't initialized. If the appdata is already initialized, you must first use the amiibo Settings applet menu option labeled \"Delete amiibo Game Data\". This automatically writes the amiibo data into the actual data storage(normally NFC data pages). See also nfcWriteAppData().\n @param amiibo_appid amiibo AppID. See also nfcOpenAppData().\n @param buf Input buffer.\n @param size Buffer size."] #[doc = ""] pub fn nfcInitializeWriteAppData( amiibo_appid: u32_, buf: *const ::libc::c_void, - size: size_t, + size: usize, ) -> Result; } extern "C" { #[must_use] - #[doc = "Reads the appdata. The size must be >=0xD8-bytes, but the actual used size is hard-coded to 0xD8. Note that areas of appdata which were never written to by applications are uninitialized in this output buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Output buffer."] - #[doc = "* `size` - Buffer size."] + #[doc = "Reads the appdata. The size must be >=0xD8-bytes, but the actual used size is hard-coded to 0xD8. Note that areas of appdata which were never written to by applications are uninitialized in this output buffer.\n @param buf Output buffer.\n @param size Buffer size."] #[doc = ""] - pub fn nfcReadAppData(buf: *mut ::libc::c_void, size: size_t) -> Result; + pub fn nfcReadAppData(buf: *mut ::libc::c_void, size: usize) -> Result; } extern "C" { #[must_use] - #[doc = "Writes the appdata, after nfcOpenAppData() was used successfully. The size should be <=0xD8-bytes. See also: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf` - Input buffer."] - #[doc = "* `size` - Buffer size."] - #[doc = "* `taginfo` - TagInfo from nfcGetTagInfo()."] + #[doc = "Writes the appdata, after nfcOpenAppData() was used successfully. The size should be <=0xD8-bytes. See also: @param buf Input buffer.\n @param size Buffer size.\n @param taginfo TagInfo from nfcGetTagInfo()."] #[doc = ""] pub fn nfcWriteAppData( buf: *const ::libc::c_void, - size: size_t, + size: usize, taginfo: *mut NFC_TagInfo, ) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the current AmiiboSettings."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the output AmiiboSettings."] + #[doc = "Returns the current AmiiboSettings.\n @param out Pointer to write the output AmiiboSettings."] #[doc = ""] pub fn nfcGetAmiiboSettings(out: *mut NFC_AmiiboSettings) -> Result; } extern "C" { #[must_use] - #[doc = "Returns the current AmiiboConfig."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Pointer to write the output AmiiboConfig."] + #[doc = "Returns the current AmiiboConfig.\n @param out Pointer to write the output AmiiboConfig."] #[doc = ""] pub fn nfcGetAmiiboConfig(out: *mut NFC_AmiiboConfig) -> Result; } extern "C" { #[must_use] - #[doc = "Starts scanning for NFC tags when initialized with NFC_OpType_RawNFC. See also: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `unk0` - Same as nfcStartScanning() input."] - #[doc = "* `unk1` - Unknown."] + #[doc = "Starts scanning for NFC tags when initialized with NFC_OpType_RawNFC. See also: @param unk0 Same as nfcStartScanning() input.\n @param unk1 Unknown."] #[doc = ""] pub fn nfcStartOtherTagScanning(unk0: u16_, unk1: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "This sends a raw NFC command to the tag. This can only be used when initialized with NFC_OpType_RawNFC, and when the TagState is NFC_TagState_InRange. See also: "] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inbuf` - Input buffer."] - #[doc = "* `insize` - Size of the input buffer."] - #[doc = "* `outbuf` - Output buffer."] - #[doc = "* `outsize` - Size of the output buffer."] - #[doc = "* `actual_transfer_size` - Optional output ptr to write the actual output-size to, can be NULL."] - #[doc = "* `microseconds` - Timing-related field in microseconds."] + #[doc = "This sends a raw NFC command to the tag. This can only be used when initialized with NFC_OpType_RawNFC, and when the TagState is NFC_TagState_InRange. See also: @param inbuf Input buffer.\n @param insize Size of the input buffer.\n @param outbuf Output buffer.\n @param outsize Size of the output buffer.\n @param actual_transfer_size Optional output ptr to write the actual output-size to, can be NULL.\n @param microseconds Timing-related field in microseconds."] #[doc = ""] pub fn nfcSendTagCommand( inbuf: *const ::libc::c_void, - insize: size_t, + insize: usize, outbuf: *mut ::libc::c_void, - outsize: size_t, - actual_transfer_size: *mut size_t, + outsize: usize, + actual_transfer_size: *mut usize, microseconds: u64_, ) -> Result; } @@ -24813,17 +18770,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Adds a notification to the home menu Notifications applet."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `title` - UTF-16 title of the notification."] - #[doc = "* `titleLength` - Number of characters in the title, not including the null-terminator."] - #[doc = "* `message` - UTF-16 message of the notification, or NULL for no message."] - #[doc = "* `messageLength` - Number of characters in the message, not including the null-terminator."] - #[doc = "* `image` - Data of the image to show in the notification, or NULL for no image."] - #[doc = "* `imageSize` - Size of the image data in bytes."] - #[doc = "* `jpeg` - Whether the image is a JPEG or not."] + #[doc = "Adds a notification to the home menu Notifications applet.\n @param title UTF-16 title of the notification.\n @param titleLength Number of characters in the title, not including the null-terminator.\n @param message UTF-16 message of the notification, or NULL for no message.\n @param messageLength Number of characters in the message, not including the null-terminator.\n @param image Data of the image to show in the notification, or NULL for no image.\n @param imageSize Size of the image data in bytes.\n @param jpeg Whether the image is a JPEG or not."] #[doc = ""] pub fn NEWS_AddNotification( title: *const u16_, @@ -24837,57 +18784,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets current total notifications number."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `num` - Pointer where total number will be saved."] + #[doc = "Gets current total notifications number.\n @param num Pointer where total number will be saved."] #[doc = ""] pub fn NEWS_GetTotalNotifications(num: *mut u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a custom header for a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `header` - Pointer to notification header to set."] + #[doc = "Sets a custom header for a specific notification.\n @param news_id Identification number of the notification.\n @param header Pointer to notification header to set."] #[doc = ""] pub fn NEWS_SetNotificationHeader(news_id: u32_, header: *const NotificationHeader) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the header of a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `header` - Pointer where header of the notification will be saved."] + #[doc = "Gets the header of a specific notification.\n @param news_id Identification number of the notification.\n @param header Pointer where header of the notification will be saved."] #[doc = ""] pub fn NEWS_GetNotificationHeader(news_id: u32_, header: *mut NotificationHeader) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a custom message for a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `message` - Pointer to UTF-16 message to set."] - #[doc = "* `size` - Size of message to set."] + #[doc = "Sets a custom message for a specific notification.\n @param news_id Identification number of the notification.\n @param message Pointer to UTF-16 message to set.\n @param size Size of message to set."] #[doc = ""] pub fn NEWS_SetNotificationMessage(news_id: u32_, message: *const u16_, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the message of a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `message` - Pointer where UTF-16 message of the notification will be saved."] - #[doc = "* `size` - Pointer where size of the message data will be saved in bytes."] + #[doc = "Gets the message of a specific notification.\n @param news_id Identification number of the notification.\n @param message Pointer where UTF-16 message of the notification will be saved.\n @param size Pointer where size of the message data will be saved in bytes."] #[doc = ""] pub fn NEWS_GetNotificationMessage( news_id: u32_, @@ -24897,13 +18818,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Sets a custom image for a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `buffer` - Pointer to MPO image to set."] - #[doc = "* `size` - Size of the MPO image to set."] + #[doc = "Sets a custom image for a specific notification.\n @param news_id Identification number of the notification.\n @param buffer Pointer to MPO image to set.\n @param size Size of the MPO image to set."] #[doc = ""] pub fn NEWS_SetNotificationImage( news_id: u32_, @@ -24913,13 +18828,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the image of a specific notification."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `news_id` - Identification number of the notification."] - #[doc = "* `buffer` - Pointer where MPO image of the notification will be saved."] - #[doc = "* `size` - Pointer where size of the image data will be saved in bytes."] + #[doc = "Gets the image of a specific notification.\n @param news_id Identification number of the notification.\n @param buffer Pointer where MPO image of the notification will be saved.\n @param size Pointer where size of the image data will be saved in bytes."] #[doc = ""] pub fn NEWS_GetNotificationImage( news_id: u32_, @@ -24972,34 +18881,18 @@ extern "C" { pub fn qtmExit(); } extern "C" { - #[doc = "Checks whether QTM is initialized."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether QTM is initialized."] + #[doc = "Checks whether QTM is initialized.\n @return Whether QTM is initialized."] #[doc = ""] pub fn qtmCheckInitialized() -> bool; } extern "C" { - #[doc = "Checks whether a head is fully detected."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `info` - Tracking info to check."] + #[doc = "Checks whether a head is fully detected.\n @param info Tracking info to check."] #[doc = ""] pub fn qtmCheckHeadFullyDetected(info: *mut QTM_HeadTrackingInfo) -> bool; } extern "C" { #[must_use] - #[doc = "Converts QTM coordinates to screen coordinates."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `coord` - Coordinates to convert."] - #[doc = "* `screen_width` - Width of the screen. Can be NULL to use the default value for the top screen."] - #[doc = "* `screen_height` - Height of the screen. Can be NULL to use the default value for the top screen."] - #[doc = "* `x` - Pointer to output the screen X coordinate to."] - #[doc = "* `y` - Pointer to output the screen Y coordinate to."] + #[doc = "Converts QTM coordinates to screen coordinates.\n @param coord Coordinates to convert.\n @param screen_width Width of the screen. Can be NULL to use the default value for the top screen.\n @param screen_height Height of the screen. Can be NULL to use the default value for the top screen.\n @param x Pointer to output the screen X coordinate to.\n @param y Pointer to output the screen Y coordinate to."] #[doc = ""] pub fn qtmConvertCoordToScreen( coord: *mut QTM_HeadTrackingInfoCoord, @@ -25011,12 +18904,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets the current head tracking info."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `val` - Normally 0."] - #[doc = "* `out` - Pointer to write head tracking info to."] + #[doc = "Gets the current head tracking info.\n @param val Normally 0.\n @param out Pointer to write head tracking info to."] #[doc = ""] pub fn QTM_GetHeadTrackingInfo(val: u64_, out: *mut QTM_HeadTrackingInfo) -> Result; } @@ -25032,44 +18920,25 @@ extern "C" { pub fn srvPmExit(); } extern "C" { - #[doc = "Gets the current srv:pm session handle."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The current srv:pm session handle."] + #[doc = "Gets the current srv:pm session handle.\n @return The current srv:pm session handle."] #[doc = ""] pub fn srvPmGetSessionHandle() -> *mut Handle; } extern "C" { #[must_use] - #[doc = "Publishes a notification to a process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationId` - ID of the notification."] - #[doc = "* `process` - Process to publish to."] + #[doc = "Publishes a notification to a process.\n @param notificationId ID of the notification.\n @param process Process to publish to."] #[doc = ""] pub fn SRVPM_PublishToProcess(notificationId: u32_, process: Handle) -> Result; } extern "C" { #[must_use] - #[doc = "Publishes a notification to all processes."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `notificationId` - ID of the notification."] + #[doc = "Publishes a notification to all processes.\n @param notificationId ID of the notification."] #[doc = ""] pub fn SRVPM_PublishToAll(notificationId: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Registers a process with SRV."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pid` - ID of the process."] - #[doc = "* `count` - Number of services within the service access control data."] - #[doc = "* `serviceAccessControlList` - Service Access Control list."] + #[doc = "Registers a process with SRV.\n @param pid ID of the process.\n @param count Number of services within the service access control data.\n @param serviceAccessControlList Service Access Control list."] #[doc = ""] pub fn SRVPM_RegisterProcess( pid: u32_, @@ -25079,11 +18948,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unregisters a process with SRV."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `pid` - ID of the process."] + #[doc = "Unregisters a process with SRV.\n @param pid ID of the process."] #[doc = ""] pub fn SRVPM_UnregisterProcess(pid: u32_) -> Result; } @@ -25100,24 +18965,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Loads a program and returns a process handle to the newly created process."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `process` - Pointer to output the process handle to. [Direction: In, Out]"] - #[doc = "* `programHandle` - The handle of the program to load."] + #[doc = "Loads a program and returns a process handle to the newly created process.\n @param[out] process Pointer to output the process handle to.\n @param programHandle The handle of the program to load."] #[doc = ""] pub fn LOADER_LoadProcess(process: *mut Handle, programHandle: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Registers a program (along with its update)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle` - Pointer to output the program handle to. [Direction: In, Out]"] - #[doc = "* `programInfo` - The program info."] - #[doc = "* `programInfo` - The program update info."] + #[doc = "Registers a program (along with its update).\n @param[out] programHandle Pointer to output the program handle to.\n @param programInfo The program info.\n @param programInfo The program update info."] #[doc = ""] pub fn LOADER_RegisterProgram( programHandle: *mut u64_, @@ -25127,22 +18981,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Unregisters a program (along with its update)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `programHandle` - The handle of the program to unregister."] + #[doc = "Unregisters a program (along with its update).\n @param programHandle The handle of the program to unregister."] #[doc = ""] pub fn LOADER_UnregisterProgram(programHandle: u64_) -> Result; } extern "C" { #[must_use] - #[doc = "Retrives a program's main NCCH extended header info (SCI + ACI, see [`ExHeader_Info)`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `exheaderInfo` - Pointer to output the main NCCH extended header info. [Direction: In, Out]"] - #[doc = "* `programHandle` - The handle of the program to unregister"] + #[doc = "Retrives a program's main NCCH extended header info (SCI + ACI, see [`ExHeader_Info).\n`] @param[out] exheaderInfo Pointer to output the main NCCH extended header info.\n @param programHandle The handle of the program to unregister"] #[doc = ""] pub fn LOADER_GetProgramInfo(exheaderInfo: *mut ExHeader_Info, programHandle: u64_) -> Result; } @@ -25183,108 +19028,159 @@ extern "C" { pub fn mcuHwcExit(); } extern "C" { - #[must_use] - #[doc = "Reads data from an i2c device3 register"] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the current mcuHwc session handle.\n @return A pointer to the current mcuHwc session handle."] #[doc = ""] - #[doc = "* `reg` - Register number. See for more info"] - #[doc = "* `data` - Pointer to write the data to."] - #[doc = "* `size` - Size of data to be read"] + pub fn mcuHwcGetSessionHandle() -> *mut Handle; +} +extern "C" { + #[must_use] + #[doc = "Reads data from an i2c device3 register\n @param reg Register number. See for more info\n @param data Pointer to write the data to.\n @param size Size of data to be read"] #[doc = ""] pub fn MCUHWC_ReadRegister(reg: u8_, data: *mut ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Writes data to a i2c device3 register"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `reg` - Register number. See for more info"] - #[doc = "* `data` - Pointer to write the data to."] - #[doc = "* `size` - Size of data to be written"] + #[doc = "Writes data to a i2c device3 register\n @param reg Register number. See for more info\n @param data Pointer to write the data to.\n @param size Size of data to be written"] #[doc = ""] pub fn MCUHWC_WriteRegister(reg: u8_, data: *const ::libc::c_void, size: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the battery voltage"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `voltage` - Pointer to write the battery voltage to."] + #[doc = "Gets the battery voltage\n @param voltage Pointer to write the battery voltage to."] #[doc = ""] pub fn MCUHWC_GetBatteryVoltage(voltage: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the battery level"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `level` - Pointer to write the current battery level to."] + #[doc = "Gets the battery level\n @param level Pointer to write the current battery level to."] #[doc = ""] pub fn MCUHWC_GetBatteryLevel(level: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the sound slider level"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `level` - Pointer to write the slider level to."] + #[doc = "Gets the sound slider level\n @param level Pointer to write the slider level to."] #[doc = ""] pub fn MCUHWC_GetSoundSliderLevel(level: *mut u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Sets Wifi LED state"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `state` - State of Wifi LED. (True/False)"] + #[doc = "Sets Wifi LED state\n @param state State of Wifi LED. (True/False)"] #[doc = ""] pub fn MCUHWC_SetWifiLedState(state: bool) -> Result; } extern "C" { #[must_use] - #[doc = "Sets Power LED state"] + #[doc = "Sets Power LED state\n @param state powerLedState State of power LED."] #[doc = ""] - #[doc = "# Arguments"] + pub fn MCUHWC_SetPowerLedState(state: powerLedState) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Gets 3d slider level\n @param level Pointer to write 3D slider level to."] #[doc = ""] - #[doc = "* `state` - powerLedState State of power LED."] + pub fn MCUHWC_Get3dSliderLevel(level: *mut u8_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Gets the major MCU firmware version\n @param out Pointer to write the major firmware version to."] #[doc = ""] - pub fn MCUHWC_SetPowerLedState(state: powerLedState) -> Result; + pub fn MCUHWC_GetFwVerHigh(out: *mut u8_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Gets the minor MCU firmware version\n @param out Pointer to write the minor firmware version to."] + #[doc = ""] + pub fn MCUHWC_GetFwVerLow(out: *mut u8_) -> Result; } +#[doc = "Primary I2S line, used by DSP/Mic (configurable)/GBA sound controller."] +#[doc = ""] + +pub const CODEC_I2S_LINE_1: CodecI2sLine = 0; +#[doc = "Secondary I2S line, used by CSND hardware."] +#[doc = ""] + +pub const CODEC_I2S_LINE_2: CodecI2sLine = 1; +#[doc = "I2S line enumeration"] +#[doc = ""] + +pub type CodecI2sLine = ::libc::c_uint; extern "C" { #[must_use] - #[doc = "Gets 3d slider level"] + #[doc = "Initializes CDCCHK."] #[doc = ""] - #[doc = "# Arguments"] + pub fn cdcChkInit() -> Result; +} +extern "C" { + #[doc = "Exits CDCCHK."] #[doc = ""] - #[doc = "* `level` - Pointer to write 3D slider level to."] + pub fn cdcChkExit(); +} +extern "C" { + #[doc = "Gets a pointer to the current cdc:CHK session handle.\n @return A pointer to the current cdc:CHK session handle."] #[doc = ""] - pub fn MCUHWC_Get3dSliderLevel(level: *mut u8_) -> Result; + pub fn cdcChkGetSessionHandle() -> *mut Handle; +} +extern "C" { + #[must_use] + #[doc = "Reads multiple registers from the CODEC, using the old\n SPI hardware interface and a 4MHz baudrate.\n @param pageId CODEC Page ID.\n @param initialRegAddr Address of the CODEC register to start with.\n @param[out] outData Where to write the read data to.\n @param size Number of registers to read (bytes to read, max. 64)."] + #[doc = ""] + pub fn CDCCHK_ReadRegisters1( + pageId: u8_, + initialRegAddr: u8_, + outData: *mut ::libc::c_void, + size: usize, + ) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the major MCU firmware version"] + #[doc = "Reads multiple registers from the CODEC, using the new\n SPI hardware interface and a 16MHz baudrate.\n @param pageId CODEC Page ID.\n @param initialRegAddr Address of the CODEC register to start with.\n @param[out] outData Where to read the data to.\n @param size Number of registers to read (bytes to read, max. 64)."] #[doc = ""] - #[doc = "# Arguments"] + pub fn CDCCHK_ReadRegisters2( + pageId: u8_, + initialRegAddr: u8_, + outData: *mut ::libc::c_void, + size: usize, + ) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Writes multiple registers to the CODEC, using the old\n SPI hardware interface and a 4MHz baudrate.\n @param pageId CODEC Page ID.\n @param initialRegAddr Address of the CODEC register to start with.\n @param data Where to read the data to write from.\n @param size Number of registers to write (bytes to read, max. 64)."] #[doc = ""] - #[doc = "* `out` - Pointer to write the major firmware version to."] + pub fn CDCCHK_WriteRegisters1( + pageId: u8_, + initialRegAddr: u8_, + data: *const ::libc::c_void, + size: usize, + ) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Writes multiple registers to the CODEC, using the new\n SPI hardware interface and a 16MHz baudrate.\n @param pageId CODEC Page ID.\n @param initialRegAddr Address of the CODEC register to start with.\n @param data Where to read the data to write from.\n @param size Number of registers to write (bytes to read, max. 64)."] #[doc = ""] - pub fn MCUHWC_GetFwVerHigh(out: *mut u8_) -> Result; + pub fn CDCCHK_WriteRegisters2( + pageId: u8_, + initialRegAddr: u8_, + data: *const ::libc::c_void, + size: usize, + ) -> Result; } extern "C" { #[must_use] - #[doc = "Gets the minor MCU firmware version"] + #[doc = "Reads a single register from the NTR PMIC.\n @param[out] outData Where to read the data to (1 byte).\n @param regAddr Register address.\n @note The NTR PMIC is emulated by the CODEC hardware and sends\n IRQs to the MCU when relevant."] #[doc = ""] - #[doc = "# Arguments"] + pub fn CDCCHK_ReadNtrPmicRegister(outData: *mut u8_, regAddr: u8_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Writes a single register from the NTR PMIC.\n @param regAddr Register address.\n @param data Data to write (1 byte).\n @note The NTR PMIC is emulated by the CODEC hardware and sends\n IRQs to the MCU when relevant."] #[doc = ""] - #[doc = "* `out` - Pointer to write the minor firmware version to."] + pub fn CDCCHK_WriteNtrPmicRegister(regAddr: u8_, data: u8_) -> Result; +} +extern "C" { + #[must_use] + #[doc = "Sets the DAC volume level for the specified I2S line.\n @param i2sLine I2S line to set the volume for.\n @param volume Volume level (-128 to 0)."] #[doc = ""] - pub fn MCUHWC_GetFwVerLow(out: *mut u8_) -> Result; + pub fn CDCCHK_SetI2sVolume(i2sLine: CodecI2sLine, volume: s8) -> Result; } #[doc = "8-bit Red + 8-bit Green + 8-bit Blue + 8-bit Alpha"] #[doc = ""] @@ -25306,9 +19202,7 @@ pub const GX_TRANSFER_FMT_RGB5A1: GX_TRANSFER_FORMAT = 3; #[doc = ""] pub const GX_TRANSFER_FMT_RGBA4: GX_TRANSFER_FORMAT = 4; -#[doc = "Supported transfer pixel formats."] -#[doc = ""] -#[doc = "[`GSPGPU_FramebufferFormat`]"] +#[doc = "Supported transfer pixel formats.\n [`GSPGPU_FramebufferFormat`]"] #[doc = ""] pub type GX_TRANSFER_FORMAT = ::libc::c_uint; @@ -25324,10 +19218,7 @@ pub const GX_TRANSFER_SCALE_X: GX_TRANSFER_SCALE = 1; #[doc = ""] pub const GX_TRANSFER_SCALE_XY: GX_TRANSFER_SCALE = 2; -#[doc = "Anti-aliasing modes"] -#[doc = ""] -#[doc = "Please remember that the framebuffer is sideways."] -#[doc = "Hence if you activate 2x1 anti-aliasing the destination dimensions are w = 240*2 and h = 400"] +#[doc = "Anti-aliasing modes\n\n Please remember that the framebuffer is sideways.\n Hence if you activate 2x1 anti-aliasing the destination dimensions are w = 240*2 and h = 400"] #[doc = ""] pub type GX_TRANSFER_SCALE = ::libc::c_uint; @@ -25428,103 +19319,50 @@ impl Default for tag_gxCmdQueue_s { pub type gxCmdQueue_s = tag_gxCmdQueue_s; extern "C" { - #[doc = "Clears a GX command queue."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue."] + #[doc = "Clears a GX command queue.\n @param queue The GX command queue."] #[doc = ""] pub fn gxCmdQueueClear(queue: *mut gxCmdQueue_s); } extern "C" { - #[doc = "Adds a command to a GX command queue."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue."] - #[doc = "* `entry` - The GX command to add."] + #[doc = "Adds a command to a GX command queue.\n @param queue The GX command queue.\n @param entry The GX command to add."] #[doc = ""] pub fn gxCmdQueueAdd(queue: *mut gxCmdQueue_s, entry: *const gxCmdEntry_s); } extern "C" { - #[doc = "Runs a GX command queue, causing it to begin processing incoming commands as they arrive."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue."] + #[doc = "Runs a GX command queue, causing it to begin processing incoming commands as they arrive.\n @param queue The GX command queue."] #[doc = ""] pub fn gxCmdQueueRun(queue: *mut gxCmdQueue_s); } extern "C" { - #[doc = "Stops a GX command queue from processing incoming commands."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue."] + #[doc = "Stops a GX command queue from processing incoming commands.\n @param queue The GX command queue."] #[doc = ""] pub fn gxCmdQueueStop(queue: *mut gxCmdQueue_s); } extern "C" { - #[doc = "Waits for a GX command queue to finish executing pending commands."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* false if timeout expired, true otherwise."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue."] - #[doc = "* `timeout` - Optional timeout (in nanoseconds) to wait (specify -1 for no timeout)."] + #[doc = "Waits for a GX command queue to finish executing pending commands.\n @param queue The GX command queue.\n @param timeout Optional timeout (in nanoseconds) to wait (specify -1 for no timeout).\n @return false if timeout expired, true otherwise."] #[doc = ""] pub fn gxCmdQueueWait(queue: *mut gxCmdQueue_s, timeout: s64) -> bool; } extern "C" { - #[doc = "Selects a command queue to which GX_* functions will add commands instead of immediately submitting them to GX."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `queue` - The GX command queue. (Pass NULL to remove the bound command queue)"] + #[doc = "Selects a command queue to which GX_* functions will add commands instead of immediately submitting them to GX.\n @param queue The GX command queue. (Pass NULL to remove the bound command queue)"] #[doc = ""] pub fn GX_BindQueue(queue: *mut gxCmdQueue_s); } extern "C" { #[must_use] - #[doc = "Requests a DMA."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `src` - Source to DMA from."] - #[doc = "* `dst` - Destination to DMA to."] - #[doc = "* `length` - Length of data to transfer."] + #[doc = "Requests a DMA.\n @param src Source to DMA from.\n @param dst Destination to DMA to.\n @param length Length of data to transfer."] #[doc = ""] pub fn GX_RequestDma(src: *mut u32_, dst: *mut u32_, length: u32_) -> Result; } extern "C" { #[must_use] - #[doc = "Processes a GPU command list."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf0a` - Command list address."] - #[doc = "* `buf0s` - Command list size."] - #[doc = "* `flags` - Flags to process with."] + #[doc = "Processes a GPU command list.\n @param buf0a Command list address.\n @param buf0s Command list size.\n @param flags Flags to process with."] #[doc = ""] pub fn GX_ProcessCommandList(buf0a: *mut u32_, buf0s: u32_, flags: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Fills the memory of two buffers with the given values."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf0a` - Start address of the first buffer."] - #[doc = "* `buf0v` - Dimensions of the first buffer."] - #[doc = "* `buf0e` - End address of the first buffer."] - #[doc = "* `control0` - Value to fill the first buffer with."] - #[doc = "* `buf1a` - Start address of the second buffer."] - #[doc = "* `buf1v` - Dimensions of the second buffer."] - #[doc = "* `buf1e` - End address of the second buffer."] - #[doc = "* `control1` - Value to fill the second buffer with."] + #[doc = "Fills the memory of two buffers with the given values.\n @param buf0a Start address of the first buffer.\n @param buf0v Dimensions of the first buffer.\n @param buf0e End address of the first buffer.\n @param control0 Value to fill the first buffer with.\n @param buf1a Start address of the second buffer.\n @param buf1v Dimensions of the second buffer.\n @param buf1e End address of the second buffer.\n @param control1 Value to fill the second buffer with."] #[doc = ""] pub fn GX_MemoryFill( buf0a: *mut u32_, @@ -25539,19 +19377,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initiates a display transfer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inadr` - Address of the input."] - #[doc = "* `indim` - Dimensions of the input."] - #[doc = "* `outadr` - Address of the output."] - #[doc = "* `outdim` - Dimensions of the output."] - #[doc = "* `flags` - Flags to transfer with."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The PPF event will be signaled on completion."] + #[doc = "Initiates a display transfer.\n @note The PPF event will be signaled on completion.\n @param inadr Address of the input.\n @param indim Dimensions of the input.\n @param outadr Address of the output.\n @param outdim Dimensions of the output.\n @param flags Flags to transfer with."] #[doc = ""] pub fn GX_DisplayTransfer( inadr: *mut u32_, @@ -25563,20 +19389,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initiates a texture copy."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `inadr` - Address of the input."] - #[doc = "* `indim` - Dimensions of the input."] - #[doc = "* `outadr` - Address of the output."] - #[doc = "* `outdim` - Dimensions of the output."] - #[doc = "* `size` - Size of the data to transfer."] - #[doc = "* `flags` - Flags to transfer with."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The PPF event will be signaled on completion."] + #[doc = "Initiates a texture copy.\n @note The PPF event will be signaled on completion.\n @param inadr Address of the input.\n @param indim Dimensions of the input.\n @param outadr Address of the output.\n @param outdim Dimensions of the output.\n @param size Size of the data to transfer.\n @param flags Flags to transfer with."] #[doc = ""] pub fn GX_TextureCopy( inadr: *mut u32_, @@ -25589,16 +19402,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Flushes the cache regions of three buffers. (This command cannot be queued in a GX command queue)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `buf0a` - Address of the first buffer."] - #[doc = "* `buf0s` - Size of the first buffer."] - #[doc = "* `buf1a` - Address of the second buffer."] - #[doc = "* `buf1s` - Size of the second buffer."] - #[doc = "* `buf2a` - Address of the third buffer."] - #[doc = "* `buf2s` - Size of the third buffer."] + #[doc = "Flushes the cache regions of three buffers. (This command cannot be queued in a GX command queue)\n @param buf0a Address of the first buffer.\n @param buf0s Size of the first buffer.\n @param buf1a Address of the second buffer.\n @param buf1s Size of the second buffer.\n @param buf2a Address of the third buffer.\n @param buf2s Size of the third buffer."] #[doc = ""] pub fn GX_FlushCacheRegions( buf0a: *mut u32_, @@ -26757,85 +20561,37 @@ extern "C" { pub static mut gpuCmdBufOffset: u32_; } extern "C" { - #[doc = "Adds raw GPU commands to the current command buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `cmd` - Buffer containing commands to add."] - #[doc = "* `size` - Size of the buffer."] + #[doc = "Adds raw GPU commands to the current command buffer.\n @param cmd Buffer containing commands to add.\n @param size Size of the buffer."] #[doc = ""] pub fn GPUCMD_AddRawCommands(cmd: *const u32_, size: u32_); } extern "C" { - #[doc = "Adds a GPU command to the current command buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `header` - Header of the command."] - #[doc = "* `param` - Parameters of the command."] - #[doc = "* `paramlength` - Size of the parameter buffer."] + #[doc = "Adds a GPU command to the current command buffer.\n @param header Header of the command.\n @param param Parameters of the command.\n @param paramlength Size of the parameter buffer."] #[doc = ""] pub fn GPUCMD_Add(header: u32_, param: *const u32_, paramlength: u32_); } extern "C" { - #[doc = "Splits the current GPU command buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `addr` - Pointer to output the command buffer to."] - #[doc = "* `size` - Pointer to output the size (in words) of the command buffer to."] + #[doc = "Splits the current GPU command buffer.\n @param addr Pointer to output the command buffer to.\n @param size Pointer to output the size (in words) of the command buffer to."] #[doc = ""] pub fn GPUCMD_Split(addr: *mut *mut u32_, size: *mut u32_); } -extern "C" { - #[doc = "Converts a 32-bit float to a 16-bit float."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The converted float."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `f` - Float to convert."] +extern "C" { + #[doc = "Converts a 32-bit float to a 16-bit float.\n @param f Float to convert.\n @return The converted float."] #[doc = ""] pub fn f32tof16(f: f32) -> u32_; } extern "C" { - #[doc = "Converts a 32-bit float to a 20-bit float."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The converted float."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `f` - Float to convert."] + #[doc = "Converts a 32-bit float to a 20-bit float.\n @param f Float to convert.\n @return The converted float."] #[doc = ""] pub fn f32tof20(f: f32) -> u32_; } extern "C" { - #[doc = "Converts a 32-bit float to a 24-bit float."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The converted float."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `f` - Float to convert."] + #[doc = "Converts a 32-bit float to a 24-bit float.\n @param f Float to convert.\n @return The converted float."] #[doc = ""] pub fn f32tof24(f: f32) -> u32_; } extern "C" { - #[doc = "Converts a 32-bit float to a 31-bit float."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The converted float."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `f` - Float to convert."] + #[doc = "Converts a 32-bit float to a 31-bit float.\n @param f Float to convert.\n @return The converted float."] #[doc = ""] pub fn f32tof31(f: f32) -> u32_; } @@ -27098,48 +20854,22 @@ impl Default for DVLB_s { } } extern "C" { - #[doc = "Parses a shader binary."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The parsed shader binary."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `shbinData` - Shader binary data."] - #[doc = "* `shbinSize` - Shader binary size."] + #[doc = "Parses a shader binary.\n @param shbinData Shader binary data.\n @param shbinSize Shader binary size.\n @return The parsed shader binary."] #[doc = ""] pub fn DVLB_ParseFile(shbinData: *mut u32_, shbinSize: u32_) -> *mut DVLB_s; } extern "C" { - #[doc = "Frees shader binary data."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dvlb` - DVLB to free."] + #[doc = "Frees shader binary data.\n @param dvlb DVLB to free."] #[doc = ""] pub fn DVLB_Free(dvlb: *mut DVLB_s); } extern "C" { - #[doc = "Gets a uniform register index from a shader."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The uniform register index."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dvle` - Shader to get the register from."] - #[doc = "* `name` - Name of the register."] + #[doc = "Gets a uniform register index from a shader.\n @param dvle Shader to get the register from.\n @param name Name of the register.\n @return The uniform register index."] #[doc = ""] pub fn DVLE_GetUniformRegister(dvle: *mut DVLE_s, name: *const ::libc::c_char) -> s8; } extern "C" { - #[doc = "Generates a shader output map."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `dvle` - Shader to generate an output map for."] + #[doc = "Generates a shader output map.\n @param dvle Shader to generate an output map for."] #[doc = ""] pub fn DVLE_GenerateOutmap(dvle: *mut DVLE_s); } @@ -27220,34 +20950,19 @@ impl Default for shaderProgram_s { } extern "C" { #[must_use] - #[doc = "Initializes a shader instance."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `si` - Shader instance to initialize."] - #[doc = "* `dvle` - DVLE to initialize the shader instance with."] + #[doc = "Initializes a shader instance.\n @param si Shader instance to initialize.\n @param dvle DVLE to initialize the shader instance with."] #[doc = ""] pub fn shaderInstanceInit(si: *mut shaderInstance_s, dvle: *mut DVLE_s) -> Result; } extern "C" { #[must_use] - #[doc = "Frees a shader instance."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `si` - Shader instance to free."] + #[doc = "Frees a shader instance.\n @param si Shader instance to free."] #[doc = ""] pub fn shaderInstanceFree(si: *mut shaderInstance_s) -> Result; } extern "C" { #[must_use] - #[doc = "Sets a bool uniform of a shader."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `si` - Shader instance to use."] - #[doc = "* `id` - ID of the bool uniform."] - #[doc = "* `value` - Value to set."] + #[doc = "Sets a bool uniform of a shader.\n @param si Shader instance to use.\n @param id ID of the bool uniform.\n @param value Value to set."] #[doc = ""] pub fn shaderInstanceSetBool( si: *mut shaderInstance_s, @@ -27257,13 +20972,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets a bool uniform of a shader."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `si` - Shader instance to use."] - #[doc = "* `id` - ID of the bool uniform."] - #[doc = "* `value` - Pointer to output the value to."] + #[doc = "Gets a bool uniform of a shader.\n @param si Shader instance to use.\n @param id ID of the bool uniform.\n @param value Pointer to output the value to."] #[doc = ""] pub fn shaderInstanceGetBool( si: *mut shaderInstance_s, @@ -27272,12 +20981,7 @@ extern "C" { ) -> Result; } extern "C" { - #[doc = "Gets the location of a shader's uniform."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `si` - Shader instance to use."] - #[doc = "* `name` - Name of the uniform."] + #[doc = "Gets the location of a shader's uniform.\n @param si Shader instance to use.\n @param name Name of the uniform."] #[doc = ""] pub fn shaderInstanceGetUniformLocation( si: *mut shaderInstance_s, @@ -27286,55 +20990,31 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Initializes a shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to initialize."] + #[doc = "Initializes a shader program.\n @param sp Shader program to initialize."] #[doc = ""] pub fn shaderProgramInit(sp: *mut shaderProgram_s) -> Result; } extern "C" { #[must_use] - #[doc = "Frees a shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to free."] + #[doc = "Frees a shader program.\n @param sp Shader program to free."] #[doc = ""] pub fn shaderProgramFree(sp: *mut shaderProgram_s) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the vertex shader of a shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to use."] - #[doc = "* `dvle` - Vertex shader to set."] + #[doc = "Sets the vertex shader of a shader program.\n @param sp Shader program to use.\n @param dvle Vertex shader to set."] #[doc = ""] pub fn shaderProgramSetVsh(sp: *mut shaderProgram_s, dvle: *mut DVLE_s) -> Result; } extern "C" { #[must_use] - #[doc = "Sets the geometry shader of a shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to use."] - #[doc = "* `dvle` - Geometry shader to set."] - #[doc = "* `stride` - Input stride of the shader (pass 0 to match the number of outputs of the vertex shader)."] + #[doc = "Sets the geometry shader of a shader program.\n @param sp Shader program to use.\n @param dvle Geometry shader to set.\n @param stride Input stride of the shader (pass 0 to match the number of outputs of the vertex shader)."] #[doc = ""] pub fn shaderProgramSetGsh(sp: *mut shaderProgram_s, dvle: *mut DVLE_s, stride: u8_) -> Result; } extern "C" { #[must_use] - #[doc = "Configures the permutation of the input attributes of the geometry shader of a shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to use."] - #[doc = "* `permutation` - Attribute permutation to use."] + #[doc = "Configures the permutation of the input attributes of the geometry shader of a shader program.\n @param sp Shader program to use.\n @param permutation Attribute permutation to use."] #[doc = ""] pub fn shaderProgramSetGshInputPermutation( sp: *mut shaderProgram_s, @@ -27343,13 +21023,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Configures the shader units to use the specified shader program."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to use."] - #[doc = "* `sendVshCode` - When true, the vertex shader's code and operand descriptors are uploaded."] - #[doc = "* `sendGshCode` - When true, the geometry shader's code and operand descriptors are uploaded."] + #[doc = "Configures the shader units to use the specified shader program.\n @param sp Shader program to use.\n @param sendVshCode When true, the vertex shader's code and operand descriptors are uploaded.\n @param sendGshCode When true, the geometry shader's code and operand descriptors are uploaded."] #[doc = ""] pub fn shaderProgramConfigure( sp: *mut shaderProgram_s, @@ -27359,11 +21033,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Same as shaderProgramConfigure, but always loading code/operand descriptors and uploading DVLE constants afterwards."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `sp` - Shader program to use."] + #[doc = "Same as shaderProgramConfigure, but always loading code/operand descriptors and uploading DVLE constants afterwards.\n @param sp Shader program to use."] #[doc = ""] pub fn shaderProgramUse(sp: *mut shaderProgram_s) -> Result; } @@ -27379,9 +21049,7 @@ pub const NDSP_OUTPUT_STEREO: ndspOutputMode = 1; #[doc = ""] pub const NDSP_OUTPUT_SURROUND: ndspOutputMode = 2; -#[doc = "# Data types"] -#[doc = ""] -#[doc = "Sound output modes."] +#[doc = "# Data types\n@{\n Sound output modes."] #[doc = ""] pub type ndspOutputMode = ::libc::c_uint; @@ -27523,16 +21191,7 @@ pub type ndspAuxCallback = ::core::option::Option< ), >; extern "C" { - #[doc = "# Initialization and basic operations"] - #[doc = ""] - #[doc = "Sets up the DSP component."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `binary` - DSP binary to load."] - #[doc = "* `size` - Size of the DSP binary."] - #[doc = "* `progMask` - Program RAM block mask to load the binary to."] - #[doc = "* `dataMask` - Data RAM block mask to load the binary to."] + #[doc = "# Initialization and basic operations\n@{\n**\n* @brief Sets up the DSP component.\n* @param binary DSP binary to load.\n* @param size Size of the DSP binary.\n* @param progMask Program RAM block mask to load the binary to.\n* @param dataMask Data RAM block mask to load the binary to.\n*/"] #[doc = ""] pub fn ndspUseComponent( binary: *const ::libc::c_void, @@ -27553,149 +21212,127 @@ extern "C" { pub fn ndspExit(); } extern "C" { - #[doc = "Gets the number of dropped sound frames."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The number of dropped sound frames."] + #[doc = "Gets the number of dropped sound frames.\n @return The number of dropped sound frames."] #[doc = ""] pub fn ndspGetDroppedFrames() -> u32_; } extern "C" { - #[doc = "Gets the total sound frame count."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The total sound frame count."] + #[doc = "Gets the total sound frame count.\n @return The total sound frame count."] #[doc = ""] pub fn ndspGetFrameCount() -> u32_; } extern "C" { - #[doc = "# General parameters"] - #[doc = ""] - #[doc = "Sets the master volume."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `volume` - Volume to set. Defaults to 1.0f."] + #[doc = "# General parameters\n@{\n**\n* @brief Sets the master volume.\n* @param volume Volume to set. Defaults to 1.0f.\n*/"] #[doc = ""] pub fn ndspSetMasterVol(volume: f32); } extern "C" { - #[doc = "Sets the output mode."] + #[doc = "Gets the master volume.\n @return The master volume."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `mode` - Output mode to set. Defaults to NDSP_OUTPUT_STEREO."] + pub fn ndspGetMasterVol() -> f32; +} +extern "C" { + #[doc = "Sets the output mode.\n @param mode Output mode to set. Defaults to NDSP_OUTPUT_STEREO."] #[doc = ""] pub fn ndspSetOutputMode(mode: ndspOutputMode); } extern "C" { - #[doc = "Sets the clipping mode."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the output mode.\n @return The output mode."] #[doc = ""] - #[doc = "* `mode` - Clipping mode to set. Defaults to NDSP_CLIP_SOFT."] + pub fn ndspGetOutputMode() -> ndspOutputMode; +} +extern "C" { + #[doc = "Sets the clipping mode.\n @param mode Clipping mode to set. Defaults to NDSP_CLIP_SOFT."] #[doc = ""] pub fn ndspSetClippingMode(mode: ndspClippingMode); } extern "C" { - #[doc = "Sets the output count."] + #[doc = "Gets the clipping mode.\n @return The clipping mode."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `count` - Output count to set. Defaults to 2."] + pub fn ndspGetClippingMode() -> ndspClippingMode; +} +extern "C" { + #[doc = "Sets the output count.\n @param count Output count to set. Defaults to 2."] #[doc = ""] pub fn ndspSetOutputCount(count: ::libc::c_int); } extern "C" { - #[doc = "Sets the wave buffer to capture audio to."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the output count.\n @return The output count."] #[doc = ""] - #[doc = "* `capture` - Wave buffer to capture to."] + pub fn ndspGetOutputCount() -> ::libc::c_int; +} +extern "C" { + #[doc = "Sets the wave buffer to capture audio to.\n @param capture Wave buffer to capture to."] #[doc = ""] pub fn ndspSetCapture(capture: *mut ndspWaveBuf); } extern "C" { - #[doc = "Sets the sound frame callback."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `callback` - Callback to set."] - #[doc = "* `data` - User-defined data to pass to the callback."] + #[doc = "Sets the sound frame callback.\n @param callback Callback to set.\n @param data User-defined data to pass to the callback."] #[doc = ""] pub fn ndspSetCallback(callback: ndspCallback, data: *mut ::libc::c_void); } extern "C" { - #[doc = "# Surround"] - #[doc = ""] - #[doc = "Sets the surround sound depth."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `depth` - Depth to set. Defaults to 0x7FFF."] + #[doc = "# Surround\n@{\n**\n* @brief Sets the surround sound depth.\n* @param depth Depth to set. Defaults to 0x7FFF.\n*/"] #[doc = ""] pub fn ndspSurroundSetDepth(depth: u16_); } extern "C" { - #[doc = "Sets the surround sound position."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the surround sound depth.\n @return The surround sound depth."] #[doc = ""] - #[doc = "* `pos` - Position to set. Defaults to NDSP_SPKPOS_SQUARE."] + pub fn ndspSurroundGetDepth() -> u16_; +} +extern "C" { + #[doc = "Sets the surround sound position.\n @param pos Position to set. Defaults to NDSP_SPKPOS_SQUARE."] #[doc = ""] pub fn ndspSurroundSetPos(pos: ndspSpeakerPos); } extern "C" { - #[doc = "Sets the surround sound rear ratio."] + #[doc = "Gets the surround sound position.\n @return The surround sound speaker position."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `ratio` - Rear ratio to set. Defaults to 0x8000."] + pub fn ndspSurroundGetPos() -> ndspSpeakerPos; +} +extern "C" { + #[doc = "Sets the surround sound rear ratio.\n @param ratio Rear ratio to set. Defaults to 0x8000."] #[doc = ""] pub fn ndspSurroundSetRearRatio(ratio: u16_); } extern "C" { - #[doc = "# Auxiliary output"] - #[doc = ""] - #[doc = "Configures whether an auxiliary output is enabled."] + #[doc = "Gets the surround sound rear ratio.\n @return The rear ratio."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the auxiliary output."] - #[doc = "* `enable` - Whether to enable the auxiliary output."] + pub fn ndspSurroundGetRearRatio() -> u16_; +} +extern "C" { + #[doc = "# Auxiliary output\n@{\n**\n* @brief Configures whether an auxiliary output is enabled.\n* @param id ID of the auxiliary output.\n* @param enable Whether to enable the auxiliary output.\n*/"] #[doc = ""] pub fn ndspAuxSetEnable(id: ::libc::c_int, enable: bool); } extern "C" { - #[doc = "Configures whether an auxiliary output should use front bypass."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets whether auxiliary output is enabled.\n @param id ID of the auxiliary output.\n @return Whether auxiliary output is enabled."] #[doc = ""] - #[doc = "* `id` - ID of the auxiliary output."] - #[doc = "* `bypass` - Whether to use front bypass."] + pub fn ndspAuxIsEnabled(id: ::libc::c_int) -> bool; +} +extern "C" { + #[doc = "Configures whether an auxiliary output should use front bypass.\n @param id ID of the auxiliary output.\n @param bypass Whether to use front bypass."] #[doc = ""] pub fn ndspAuxSetFrontBypass(id: ::libc::c_int, bypass: bool); } extern "C" { - #[doc = "Sets the volume of an auxiliary output."] + #[doc = "Gets whether auxiliary output front bypass is enabled.\n @param id ID of the auxiliary output.\n @return Whether auxiliary output front bypass is enabled."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the auxiliary output."] - #[doc = "* `volume` - Volume to set."] + pub fn ndspAuxGetFrontBypass(id: ::libc::c_int) -> bool; +} +extern "C" { + #[doc = "Sets the volume of an auxiliary output.\n @param id ID of the auxiliary output.\n @param volume Volume to set."] #[doc = ""] pub fn ndspAuxSetVolume(id: ::libc::c_int, volume: f32); } extern "C" { - #[doc = "Sets the callback of an auxiliary output."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the volume of an auxiliary output.\n @param id ID of the auxiliary output.\n @return Volume of the auxiliary output."] #[doc = ""] - #[doc = "* `id` - ID of the auxiliary output."] - #[doc = "* `callback` - Callback to set."] - #[doc = "* `data` - User-defined data to pass to the callback."] + pub fn ndspAuxGetVolume(id: ::libc::c_int) -> f32; +} +extern "C" { + #[doc = "Sets the callback of an auxiliary output.\n @param id ID of the auxiliary output.\n @param callback Callback to set.\n @param data User-defined data to pass to the callback."] #[doc = ""] pub fn ndspAuxSetCallback( id: ::libc::c_int, @@ -27715,9 +21352,7 @@ pub const NDSP_ENCODING_PCM16: _bindgen_ty_30 = 1; #[doc = ""] pub const NDSP_ENCODING_ADPCM: _bindgen_ty_30 = 2; -#[doc = "# Data types"] -#[doc = ""] -#[doc = "Supported sample encodings."] +#[doc = "# Data types\n@{\n Supported sample encodings."] #[doc = ""] pub type _bindgen_ty_30 = ::libc::c_uint; @@ -27782,190 +21417,102 @@ pub const NDSP_INTERP_NONE: ndspInterpType = 2; pub type ndspInterpType = ::libc::c_uint; extern "C" { - #[doc = "# Basic channel operation"] - #[doc = ""] - #[doc = "Resets a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "# Basic channel operation\n@{\n**\n* @brief Resets a channel.\n* @param id ID of the channel (0..23).\n*/"] #[doc = ""] pub fn ndspChnReset(id: ::libc::c_int); } extern "C" { - #[doc = "Initializes the parameters of a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Initializes the parameters of a channel.\n @param id ID of the channel (0..23)."] #[doc = ""] pub fn ndspChnInitParams(id: ::libc::c_int); } extern "C" { - #[doc = "Checks whether a channel is currently playing."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether the channel is currently playing."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Checks whether a channel is currently playing.\n @param id ID of the channel (0..23).\n @return Whether the channel is currently playing."] #[doc = ""] pub fn ndspChnIsPlaying(id: ::libc::c_int) -> bool; } extern "C" { - #[doc = "Gets the current sample position of a channel."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The channel's sample position."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Gets the current sample position of a channel.\n @param id ID of the channel (0..23).\n @return The channel's sample position."] #[doc = ""] pub fn ndspChnGetSamplePos(id: ::libc::c_int) -> u32_; } extern "C" { - #[doc = "Gets the sequence ID of the wave buffer that is currently playing in a channel."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The sequence ID of the wave buffer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Gets the sequence ID of the wave buffer that is currently playing in a channel.\n @param id ID of the channel (0..23).\n @return The sequence ID of the wave buffer."] #[doc = ""] pub fn ndspChnGetWaveBufSeq(id: ::libc::c_int) -> u16_; } extern "C" { - #[doc = "Checks whether a channel is currently paused."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Whether the channel is currently paused."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Checks whether a channel is currently paused.\n @param id ID of the channel (0..23).\n @return Whether the channel is currently paused."] #[doc = ""] pub fn ndspChnIsPaused(id: ::libc::c_int) -> bool; } extern "C" { - #[doc = "Sets the pause status of a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `paused` - Whether the channel is to be paused (true) or unpaused (false)."] + #[doc = "Sets the pause status of a channel.\n @param id ID of the channel (0..23).\n @param paused Whether the channel is to be paused (true) or unpaused (false)."] #[doc = ""] pub fn ndspChnSetPaused(id: ::libc::c_int, paused: bool); } extern "C" { - #[doc = "# Configuration"] - #[doc = ""] - #[doc = "Sets the format of a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `format` - Format to use."] + #[doc = "# Configuration\n@{\n**\n* @brief Sets the format of a channel.\n* @param id ID of the channel (0..23).\n* @param format Format to use.\n*/"] #[doc = ""] pub fn ndspChnSetFormat(id: ::libc::c_int, format: u16_); } extern "C" { - #[doc = "Sets the interpolation type of a channel."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the format of a channel.\n @param id ID of the channel (0..23).\n @return The format of the channel."] #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `type` - Interpolation type to use."] + pub fn ndspChnGetFormat(id: ::libc::c_int) -> u16_; +} +extern "C" { + #[doc = "Sets the interpolation type of a channel.\n @param id ID of the channel (0..23).\n @param type Interpolation type to use."] #[doc = ""] pub fn ndspChnSetInterp(id: ::libc::c_int, type_: ndspInterpType); } extern "C" { - #[doc = "Sets the sample rate of a channel."] + #[doc = "Gets the interpolation type of a channel.\n @param id ID of the channel (0..23).\n @return The interpolation type of the channel."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `rate` - Sample rate to use."] + pub fn ndspChnGetInterp(id: ::libc::c_int) -> ndspInterpType; +} +extern "C" { + #[doc = "Sets the sample rate of a channel.\n @param id ID of the channel (0..23).\n @param rate Sample rate to use."] #[doc = ""] pub fn ndspChnSetRate(id: ::libc::c_int, rate: f32); } extern "C" { - #[doc = "Sets the mix parameters (volumes) of a channel."] - #[doc = ""] - #[doc = "- 0: Front left volume."] - #[doc = "- 1: Front right volume."] - #[doc = "- 2: Back left volume:"] - #[doc = "- 3: Back right volume:"] - #[doc = "- 4..7: Same as 0..3, but for auxiliary output 0."] - #[doc = "- 8..11: Same as 0..3, but for auxiliary output 1."] + #[doc = "Gets the sample rate of a channel.\n @param id ID of the channel (0..23).\n @return The sample rate of the channel."] #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `mix` - Mix parameters to use. Working hypothesis:"] + pub fn ndspChnGetRate(id: ::libc::c_int) -> f32; +} +extern "C" { + #[doc = "Sets the mix parameters (volumes) of a channel.\n @param id ID of the channel (0..23).\n @param mix Mix parameters to use. Working hypothesis:\n - 0: Front left volume.\n - 1: Front right volume.\n - 2: Back left volume:\n - 3: Back right volume:\n - 4..7: Same as 0..3, but for auxiliary output 0.\n - 8..11: Same as 0..3, but for auxiliary output 1."] #[doc = ""] pub fn ndspChnSetMix(id: ::libc::c_int, mix: *mut f32); } extern "C" { - #[doc = "Sets the DSPADPCM coefficients of a channel."] - #[doc = ""] - #[doc = "# Arguments"] + #[doc = "Gets the mix parameters (volumes) of a channel.\n @param id ID of the channel (0..23)\n @param mix Mix parameters to write out to. See [`ndspChnSetMix`]"] #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `coefs` - DSPADPCM coefficients to use."] + pub fn ndspChnGetMix(id: ::libc::c_int, mix: *mut f32); +} +extern "C" { + #[doc = "Sets the DSPADPCM coefficients of a channel.\n @param id ID of the channel (0..23).\n @param coefs DSPADPCM coefficients to use."] #[doc = ""] pub fn ndspChnSetAdpcmCoefs(id: ::libc::c_int, coefs: *mut u16_); } extern "C" { - #[doc = "# Wave buffers"] - #[doc = ""] - #[doc = "Clears the wave buffer queue of a channel and stops playback."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "# Wave buffers\n@{\n**\n* @brief Clears the wave buffer queue of a channel and stops playback.\n* @param id ID of the channel (0..23).\n*/"] #[doc = ""] pub fn ndspChnWaveBufClear(id: ::libc::c_int); } extern "C" { - #[doc = "Adds a wave buffer to the wave buffer queue of a channel."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `buf` - Wave buffer to add."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* If the channel's wave buffer queue was empty before the use of this function, playback is started."] + #[doc = "Adds a wave buffer to the wave buffer queue of a channel.\n @remark If the channel's wave buffer queue was empty before the use of this function, playback is started.\n @param id ID of the channel (0..23).\n @param buf Wave buffer to add."] #[doc = ""] pub fn ndspChnWaveBufAdd(id: ::libc::c_int, buf: *mut ndspWaveBuf); } extern "C" { - #[doc = "# IIR filters"] - #[doc = ""] - #[doc = "Configures whether the IIR monopole filter of a channel is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `enable` - Whether to enable the IIR monopole filter."] + #[doc = "# IIR filters\n@{\n**\n* @brief Configures whether the IIR monopole filter of a channel is enabled.\n* @param id ID of the channel (0..23).\n* @param enable Whether to enable the IIR monopole filter.\n*/"] #[doc = ""] pub fn ndspChnIirMonoSetEnable(id: ::libc::c_int, enable: bool); } extern "C" { - #[doc = "Manually sets up the parameters on monopole filter"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `enable` - Whether to enable the IIR monopole filter."] + #[doc = "Manually sets up the parameters on monopole filter\n @param id ID of the channel (0..23).\n @param enable Whether to enable the IIR monopole filter."] #[doc = ""] pub fn ndspChnIirMonoSetParamsCustomFilter( id: ::libc::c_int, @@ -27975,41 +21522,22 @@ extern "C" { ) -> bool; } extern "C" { - #[doc = "Sets the monopole to be a low pass filter. (Note: This is a lower-quality filter than the biquad one.)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - Low pass cut-off frequency."] + #[doc = "Sets the monopole to be a low pass filter. (Note: This is a lower-quality filter than the biquad one.)\n @param id ID of the channel (0..23).\n @param f0 Low pass cut-off frequency."] #[doc = ""] pub fn ndspChnIirMonoSetParamsLowPassFilter(id: ::libc::c_int, f0: f32) -> bool; } extern "C" { - #[doc = "Sets the monopole to be a high pass filter. (Note: This is a lower-quality filter than the biquad one.)"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - High pass cut-off frequency."] + #[doc = "Sets the monopole to be a high pass filter. (Note: This is a lower-quality filter than the biquad one.)\n @param id ID of the channel (0..23).\n @param f0 High pass cut-off frequency."] #[doc = ""] pub fn ndspChnIirMonoSetParamsHighPassFilter(id: ::libc::c_int, f0: f32) -> bool; } extern "C" { - #[doc = "Configures whether the IIR biquad filter of a channel is enabled."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `enable` - Whether to enable the IIR biquad filter."] + #[doc = "Configures whether the IIR biquad filter of a channel is enabled.\n @param id ID of the channel (0..23).\n @param enable Whether to enable the IIR biquad filter."] #[doc = ""] pub fn ndspChnIirBiquadSetEnable(id: ::libc::c_int, enable: bool); } extern "C" { - #[doc = "Manually sets up the parameters of the biquad filter"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] + #[doc = "Manually sets up the parameters of the biquad filter\n @param id ID of the channel (0..23)."] #[doc = ""] pub fn ndspChnIirBiquadSetParamsCustomFilter( id: ::libc::c_int, @@ -28022,58 +21550,27 @@ extern "C" { ) -> bool; } extern "C" { - #[doc = "Sets the biquad to be a low pass filter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - Low pass cut-off frequency."] - #[doc = "* `Q` - \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] + #[doc = "Sets the biquad to be a low pass filter.\n @param id ID of the channel (0..23).\n @param f0 Low pass cut-off frequency.\n @param Q \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] #[doc = ""] pub fn ndspChnIirBiquadSetParamsLowPassFilter(id: ::libc::c_int, f0: f32, Q: f32) -> bool; } extern "C" { - #[doc = "Sets the biquad to be a high pass filter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - High pass cut-off frequency."] - #[doc = "* `Q` - \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] + #[doc = "Sets the biquad to be a high pass filter.\n @param id ID of the channel (0..23).\n @param f0 High pass cut-off frequency.\n @param Q \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] #[doc = ""] pub fn ndspChnIirBiquadSetParamsHighPassFilter(id: ::libc::c_int, f0: f32, Q: f32) -> bool; } extern "C" { - #[doc = "Sets the biquad to be a band pass filter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - Mid-frequency."] - #[doc = "* `Q` - \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] + #[doc = "Sets the biquad to be a band pass filter.\n @param id ID of the channel (0..23).\n @param f0 Mid-frequency.\n @param Q \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] #[doc = ""] pub fn ndspChnIirBiquadSetParamsBandPassFilter(id: ::libc::c_int, f0: f32, Q: f32) -> bool; } extern "C" { - #[doc = "Sets the biquad to be a notch filter."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - Notch frequency."] - #[doc = "* `Q` - \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] + #[doc = "Sets the biquad to be a notch filter.\n @param id ID of the channel (0..23).\n @param f0 Notch frequency.\n @param Q \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] #[doc = ""] pub fn ndspChnIirBiquadSetParamsNotchFilter(id: ::libc::c_int, f0: f32, Q: f32) -> bool; } extern "C" { - #[doc = "Sets the biquad to be a peaking equalizer."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `id` - ID of the channel (0..23)."] - #[doc = "* `f0` - Central frequency."] - #[doc = "* `Q` - \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071)."] - #[doc = "* `gain` - Amount of gain (raw value = 10 ^ dB/40)"] + #[doc = "Sets the biquad to be a peaking equalizer.\n @param id ID of the channel (0..23).\n @param f0 Central frequency.\n @param Q \"Quality factor\", typically should be sqrt(2)/2 (i.e. 0.7071).\n @param gain Amount of gain (raw value = 10 ^ dB/40)"] #[doc = ""] pub fn ndspChnIirBiquadSetParamsPeakingEqualizer( id: ::libc::c_int, @@ -28347,7 +21844,7 @@ pub type SwkbdCallbackFn = ::core::option::Option< user: *mut ::libc::c_void, ppMessage: *mut *const ::libc::c_char, text: *const ::libc::c_char, - textlen: size_t, + textlen: usize, ) -> SwkbdCallbackResult, >; #[doc = "Keyboard status data."] @@ -28427,7 +21924,7 @@ pub struct SwkbdState { pub dict_offset: ::libc::c_int, pub initial_status_offset: ::libc::c_int, pub initial_learning_offset: ::libc::c_int, - pub shared_memory_size: size_t, + pub shared_memory_size: usize, pub version: u32_, pub result: SwkbdResult, pub status_offset: ::libc::c_int, @@ -28464,14 +21961,7 @@ impl Default for SwkbdState { } } extern "C" { - #[doc = "Initializes software keyboard status."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `type` - Keyboard type."] - #[doc = "* `numButtons` - Number of dialog buttons to display (1, 2 or 3)."] - #[doc = "* `maxTextLength` - Maximum number of UTF-16 code units that input text can have (or -1 to let libctru use a big default)."] + #[doc = "Initializes software keyboard status.\n @param swkbd Pointer to swkbd state.\n @param type Keyboard type.\n @param numButtons Number of dialog buttons to display (1, 2 or 3).\n @param maxTextLength Maximum number of UTF-16 code units that input text can have (or -1 to let libctru use a big default)."] #[doc = ""] pub fn swkbdInit( swkbd: *mut SwkbdState, @@ -28481,34 +21971,17 @@ extern "C" { ); } extern "C" { - #[doc = "Specifies which special features are enabled in a software keyboard."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `features` - Feature bitmask."] + #[doc = "Specifies which special features are enabled in a software keyboard.\n @param swkbd Pointer to swkbd state.\n @param features Feature bitmask."] #[doc = ""] pub fn swkbdSetFeatures(swkbd: *mut SwkbdState, features: u32_); } extern "C" { - #[doc = "Sets the hint text of a software keyboard (that is, the help text that is displayed when the textbox is empty)."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `text` - Hint text."] + #[doc = "Sets the hint text of a software keyboard (that is, the help text that is displayed when the textbox is empty).\n @param swkbd Pointer to swkbd state.\n @param text Hint text."] #[doc = ""] pub fn swkbdSetHintText(swkbd: *mut SwkbdState, text: *const ::libc::c_char); } extern "C" { - #[doc = "Configures a dialog button in a software keyboard."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `button` - Specifies which button to configure."] - #[doc = "* `text` - Button text."] - #[doc = "* `submit` - Specifies whether pushing the button will submit the text or discard it."] + #[doc = "Configures a dialog button in a software keyboard.\n @param swkbd Pointer to swkbd state.\n @param button Specifies which button to configure.\n @param text Button text.\n @param submit Specifies whether pushing the button will submit the text or discard it."] #[doc = ""] pub fn swkbdSetButton( swkbd: *mut SwkbdState, @@ -28518,23 +21991,12 @@ extern "C" { ); } extern "C" { - #[doc = "Sets the initial text that a software keyboard will display on launch."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `text` - Initial text."] + #[doc = "Sets the initial text that a software keyboard will display on launch.\n @param swkbd Pointer to swkbd state.\n @param text Initial text."] #[doc = ""] pub fn swkbdSetInitialText(swkbd: *mut SwkbdState, text: *const ::libc::c_char); } extern "C" { - #[doc = "Configures a word in a predictive dictionary for use with a software keyboard."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `word` - Pointer to dictionary word structure."] - #[doc = "* `reading` - Reading of the word, that is, the sequence of characters that need to be typed to trigger the word in the predictive input system."] - #[doc = "* `text` - Spelling of the word, that is, the actual characters that will be produced when the user decides to select the word."] + #[doc = "Configures a word in a predictive dictionary for use with a software keyboard.\n @param word Pointer to dictionary word structure.\n @param reading Reading of the word, that is, the sequence of characters that need to be typed to trigger the word in the predictive input system.\n @param text Spelling of the word, that is, the actual characters that will be produced when the user decides to select the word."] #[doc = ""] pub fn swkbdSetDictWord( word: *mut SwkbdDictWord, @@ -28543,13 +22005,7 @@ extern "C" { ); } extern "C" { - #[doc = "Sets the custom word dictionary to be used with the predictive input system of a software keyboard."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `dict` - Pointer to dictionary words."] - #[doc = "* `wordCount` - Number of words in the dictionary."] + #[doc = "Sets the custom word dictionary to be used with the predictive input system of a software keyboard.\n @param swkbd Pointer to swkbd state.\n @param dict Pointer to dictionary words.\n @param wordCount Number of words in the dictionary."] #[doc = ""] pub fn swkbdSetDictionary( swkbd: *mut SwkbdState, @@ -28558,14 +22014,7 @@ extern "C" { ); } extern "C" { - #[doc = "Configures software keyboard internal status management."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `data` - Pointer to internal status structure (can be in, out or both depending on the other parameters)."] - #[doc = "* `in` - Specifies whether the data should be read from the structure when the keyboard is launched."] - #[doc = "* `out` - Specifies whether the data should be written to the structure when the keyboard is closed."] + #[doc = "Configures software keyboard internal status management.\n @param swkbd Pointer to swkbd state.\n @param data Pointer to internal status structure (can be in, out or both depending on the other parameters).\n @param in Specifies whether the data should be read from the structure when the keyboard is launched.\n @param out Specifies whether the data should be written to the structure when the keyboard is closed."] #[doc = ""] pub fn swkbdSetStatusData( swkbd: *mut SwkbdState, @@ -28575,14 +22024,7 @@ extern "C" { ); } extern "C" { - #[doc = "Configures software keyboard predictive input learning data management."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `data` - Pointer to learning data structure (can be in, out or both depending on the other parameters)."] - #[doc = "* `in` - Specifies whether the data should be read from the structure when the keyboard is launched."] - #[doc = "* `out` - Specifies whether the data should be written to the structure when the keyboard is closed."] + #[doc = "Configures software keyboard predictive input learning data management.\n @param swkbd Pointer to swkbd state.\n @param data Pointer to learning data structure (can be in, out or both depending on the other parameters).\n @param in Specifies whether the data should be read from the structure when the keyboard is launched.\n @param out Specifies whether the data should be written to the structure when the keyboard is closed."] #[doc = ""] pub fn swkbdSetLearningData( swkbd: *mut SwkbdState, @@ -28592,13 +22034,7 @@ extern "C" { ); } extern "C" { - #[doc = "Configures a custom function to be used to check the validity of input when it is submitted in a software keyboard."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `callback` - Filter callback function."] - #[doc = "* `user` - Custom data to be passed to the callback function."] + #[doc = "Configures a custom function to be used to check the validity of input when it is submitted in a software keyboard.\n @param swkbd Pointer to swkbd state.\n @param callback Filter callback function.\n @param user Custom data to be passed to the callback function."] #[doc = ""] pub fn swkbdSetFilterCallback( swkbd: *mut SwkbdState, @@ -28607,22 +22043,12 @@ extern "C" { ); } extern "C" { - #[doc = "Launches a software keyboard in order to input text."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* The identifier of the dialog button that was pressed, or SWKBD_BUTTON_NONE if a different condition was triggered - in that case use swkbdGetResult to check the condition."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `swkbd` - Pointer to swkbd state."] - #[doc = "* `buf` - Pointer to output buffer which will hold the inputted text."] - #[doc = "* `bufsize` - Maximum number of UTF-8 code units that the buffer can hold (including null terminator)."] + #[doc = "Launches a software keyboard in order to input text.\n @param swkbd Pointer to swkbd state.\n @param buf Pointer to output buffer which will hold the inputted text.\n @param bufsize Maximum number of UTF-8 code units that the buffer can hold (including null terminator).\n @return The identifier of the dialog button that was pressed, or SWKBD_BUTTON_NONE if a different condition was triggered - in that case use swkbdGetResult to check the condition."] #[doc = ""] pub fn swkbdInputText( swkbd: *mut SwkbdState, buf: *mut ::libc::c_char, - bufsize: size_t, + bufsize: usize, ) -> SwkbdButton; } #[doc = "checksum` is the same as the one computed from `returnbuf`"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `returnbuf` - Buffer filled by Mii selector applet"] + #[doc = "Verifies that the Mii data returned from the applet matches its\n checksum\n\n @param returnbuf Buffer filled by Mii selector applet\n @return `true` if `returnbuf->checksum` is the same as the one computed from `returnbuf`"] #[doc = ""] pub fn miiSelectorChecksumIsValid(returnbuf: *const MiiSelectorReturn) -> bool; } @@ -29026,10 +22341,10 @@ pub struct archive_dir_t { pub fd: Handle, #[doc = "CTRU handle"] #[doc = ""] - pub index: ssize_t, + pub index: isize, #[doc = "Current entry index"] #[doc = ""] - pub size: size_t, + pub size: usize, #[doc = "Current batch size"] #[doc = ""] pub entry_data: [FS_DirectoryEntry; 32usize], @@ -29051,8 +22366,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Mounts and opens an archive as deviceName"] - #[doc = "Returns either an archive open error code, or -1 for generic failure"] + #[doc = "Mounts and opens an archive as deviceName\n Returns either an archive open error code, or -1 for generic failure"] #[doc = ""] pub fn archiveMount( archiveID: FS_ArchiveID, @@ -29062,15 +22376,13 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Uses FSUSER_ControlArchive with control action ARCHIVE_ACTION_COMMIT_SAVE_DATA on the opened archive. Not done automatically at unmount."] - #[doc = "Returns -1 if the specified device is not found"] + #[doc = "Uses FSUSER_ControlArchive with control action ARCHIVE_ACTION_COMMIT_SAVE_DATA on the opened archive. Not done automatically at unmount.\n Returns -1 if the specified device is not found"] #[doc = ""] pub fn archiveCommitSaveData(deviceName: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Unmounts the specified device, closing its archive in the process"] - #[doc = "Returns -1 if the specified device was not found"] + #[doc = "Unmounts the specified device, closing its archive in the process\n Returns -1 if the specified device was not found"] #[doc = ""] pub fn archiveUnmount(deviceName: *const ::libc::c_char) -> Result; } @@ -29178,52 +22490,25 @@ pub struct romfs_file { } extern "C" { #[must_use] - #[doc = "Mounts the Application's RomFS."] - #[doc = ""] - #[doc = "If the application is running as 3DSX, it mounts the embedded RomFS section inside the 3DSX."] - #[doc = "If on the other hand it's an NCCH, it behaves identically to [`romfsMountFromCurrentProcess`]"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Device mount name."] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* This function is intended to be used to access one's own RomFS."] + #[doc = "Mounts the Application's RomFS.\n @param name Device mount name.\n @remark This function is intended to be used to access one's own RomFS.\n If the application is running as 3DSX, it mounts the embedded RomFS section inside the 3DSX.\n If on the other hand it's an NCCH, it behaves identically to [`romfsMountFromCurrentProcess`]"] #[doc = ""] pub fn romfsMountSelf(name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Mounts RomFS from an open file."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `fd` - FSFILE handle of the RomFS image."] - #[doc = "* `offset` - Offset of the RomFS within the file."] - #[doc = "* `name` - Device mount name."] + #[doc = "Mounts RomFS from an open file.\n @param fd FSFILE handle of the RomFS image.\n @param offset Offset of the RomFS within the file.\n @param name Device mount name."] #[doc = ""] pub fn romfsMountFromFile(fd: Handle, offset: u32_, name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Mounts RomFS using the current process host program RomFS."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `name` - Device mount name."] + #[doc = "Mounts RomFS using the current process host program RomFS.\n @param name Device mount name."] #[doc = ""] pub fn romfsMountFromCurrentProcess(name: *const ::libc::c_char) -> Result; } extern "C" { #[must_use] - #[doc = "Mounts RomFS from the specified title."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `tid` - Title ID"] - #[doc = "* `mediatype` - Mediatype"] - #[doc = "* `name` - Device mount name."] + #[doc = "Mounts RomFS from the specified title.\n @param tid Title ID\n @param mediatype Mediatype\n @param name Device mount name."] #[doc = ""] pub fn romfsMountFromTitle( tid: u64_, @@ -29578,35 +22863,17 @@ extern "C" { pub fn fontEnsureMapped() -> Result; } extern "C" { - #[doc = "Fixes the pointers internal to a just-loaded font"] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `font` - Font to fix"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* Should never be run on the system font, and only once on any other font."] + #[doc = "Fixes the pointers internal to a just-loaded font\n @param font Font to fix\n @remark Should never be run on the system font, and only once on any other font."] #[doc = ""] pub fn fontFixPointers(font: *mut CFNT_s); } extern "C" { - #[doc = "Retrieves the glyph index of the specified Unicode codepoint."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `font` - Pointer to font structure. If NULL, the shared system font is used."] - #[doc = "* `codePoint` - Unicode codepoint."] + #[doc = "Retrieves the glyph index of the specified Unicode codepoint.\n @param font Pointer to font structure. If NULL, the shared system font is used.\n @param codePoint Unicode codepoint."] #[doc = ""] pub fn fontGlyphIndexFromCodePoint(font: *mut CFNT_s, codePoint: u32_) -> ::libc::c_int; } extern "C" { - #[doc = "Retrieves character width information of the specified glyph."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `font` - Pointer to font structure. If NULL, the shared system font is used."] - #[doc = "* `glyphIndex` - Index of the glyph."] + #[doc = "Retrieves character width information of the specified glyph.\n @param font Pointer to font structure. If NULL, the shared system font is used.\n @param glyphIndex Index of the glyph."] #[doc = ""] pub fn fontGetCharWidthInfo( font: *mut CFNT_s, @@ -29614,16 +22881,7 @@ extern "C" { ) -> *mut charWidthInfo_s; } extern "C" { - #[doc = "Calculates position information for the specified glyph."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `out` - Output structure in which to write the information."] - #[doc = "* `font` - Pointer to font structure. If NULL, the shared system font is used."] - #[doc = "* `glyphIndex` - Index of the glyph."] - #[doc = "* `flags` - Calculation flags (see GLYPH_POS_* flags)."] - #[doc = "* `scaleX` - Scale factor to apply horizontally."] - #[doc = "* `scaleY` - Scale factor to apply vertically."] + #[doc = "Calculates position information for the specified glyph.\n @param out Output structure in which to write the information.\n @param font Pointer to font structure. If NULL, the shared system font is used.\n @param glyphIndex Index of the glyph.\n @param flags Calculation flags (see GLYPH_POS_* flags).\n @param scaleX Scale factor to apply horizontally.\n @param scaleY Scale factor to apply vertically."] #[doc = ""] pub fn fontCalcGlyphPos( out: *mut fontGlyphPos_s, @@ -29667,20 +22925,7 @@ extern "C" { pub static mut __3dslink_host: in_addr; } extern "C" { - #[doc = "Connects to the 3dslink host, setting up an output stream."] - #[doc = ""] - #[doc = "Returns:"] - #[doc = ""] - #[doc = "* Socket fd on success, negative number on failure."] - #[doc = ""] - #[doc = "# Arguments"] - #[doc = ""] - #[doc = "* `redirStdout` - Whether to redirect stdout to nxlink output. [Direction: In]"] - #[doc = "* `redirStderr` - Whether to redirect stderr to nxlink output. [Direction: In]"] - #[doc = ""] - #[doc = "# Notes"] - #[doc = ""] - #[doc = "* The socket should be closed with close() during application cleanup."] + #[doc = "Connects to the 3dslink host, setting up an output stream.\n @param[in] redirStdout Whether to redirect stdout to nxlink output.\n @param[in] redirStderr Whether to redirect stderr to nxlink output.\n @return Socket fd on success, negative number on failure.\n @note The socket should be closed with close() during application cleanup."] #[doc = ""] pub fn link3dsConnectToHost(redirStdout: bool, redirStderr: bool) -> ::libc::c_int; } From a2aab6a5770271ddfbac88e8e46343b42ceeba18 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sat, 11 Feb 2023 17:14:23 +0100 Subject: [PATCH 004/116] Cargo fmt --- ctru-rs/src/linear.rs | 3 +-- ctru-rs/src/services/ps.rs | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ctru-rs/src/linear.rs b/ctru-rs/src/linear.rs index 77cf526..c07ce49 100644 --- a/ctru-rs/src/linear.rs +++ b/ctru-rs/src/linear.rs @@ -29,8 +29,7 @@ impl LinearAllocator { unsafe impl Allocator for LinearAllocator { fn allocate(&self, layout: Layout) -> Result, AllocError> { - let pointer = - unsafe { ctru_sys::linearMemAlign(layout.size(), layout.align()) }; + let pointer = unsafe { ctru_sys::linearMemAlign(layout.size(), layout.align()) }; NonNull::new(pointer.cast()) .map(|ptr| NonNull::slice_from_raw_parts(ptr, layout.size())) diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index 6a449c4..d87cda4 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -45,9 +45,7 @@ pub fn device_id() -> crate::Result { } pub fn generate_random_bytes(out: &mut [u8]) -> crate::Result<()> { - ResultCode(unsafe { - ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len()) - })?; + ResultCode(unsafe { ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len()) })?; Ok(()) } From 3d83b3e40edf4a87ae0e7d569ee97c85c0c6f510 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Tue, 14 Feb 2023 18:23:58 +0100 Subject: [PATCH 005/116] Remove init function as it's not needed anymore --- ctru-rs/Cargo.toml | 4 +-- ctru-rs/examples/audio-filters.rs | 3 +- ctru-rs/examples/buttons.rs | 4 +-- ctru-rs/examples/camera-image.rs | 2 +- ctru-rs/examples/file-explorer.rs | 3 +- ctru-rs/examples/futures-basic.rs | 3 +- ctru-rs/examples/futures-tokio.rs | 3 +- ctru-rs/examples/gfx-3d-mode.rs | 3 +- ctru-rs/examples/gfx-wide-mode.rs | 3 +- ctru-rs/examples/graphics-bitmap.rs | 3 +- ctru-rs/examples/hashmaps.rs | 5 +-- ctru-rs/examples/hello-both-screens.rs | 4 +-- ctru-rs/examples/hello-world.rs | 3 +- ctru-rs/examples/linear-memory.rs | 3 +- ctru-rs/examples/mii-selector.rs | 2 +- ctru-rs/examples/network-sockets.rs | 3 +- ctru-rs/examples/output-3dslink.rs | 3 +- ctru-rs/examples/romfs.rs | 3 +- ctru-rs/examples/software-keyboard.rs | 3 +- ctru-rs/examples/system-configuration.rs | 3 +- ctru-rs/examples/thread-basic.rs | 4 +-- ctru-rs/examples/thread-info.rs | 3 +- ctru-rs/examples/thread-locals.rs | 3 +- ctru-rs/examples/time-rtc.rs | 2 +- ctru-rs/src/applets/swkbd.rs | 3 +- ctru-rs/src/lib.rs | 40 +++++++++--------------- ctru-rs/src/services/ps.rs | 2 +- ctru-rs/src/test_runner.rs | 2 -- 28 files changed, 62 insertions(+), 60 deletions(-) diff --git a/ctru-rs/Cargo.toml b/ctru-rs/Cargo.toml index 94ff0bb..4774d0e 100644 --- a/ctru-rs/Cargo.toml +++ b/ctru-rs/Cargo.toml @@ -15,8 +15,8 @@ name = "ctru" cfg-if = "1.0" ctru-sys = { path = "../ctru-sys", version = "0.4" } const-zero = "0.1.0" -linker-fix-3ds = { git = "https://github.com/rust3ds/rust-linker-fix-3ds.git" } -pthread-3ds = { git = "https://github.com/rust3ds/pthread-3ds.git" } +linker-fix-3ds = { path = "../../rust-linker-fix-3ds" } +pthread-3ds = { path = "../../pthread-3ds" } libc = "0.2.121" bitflags = "1.0.0" widestring = "0.2.2" diff --git a/ctru-rs/examples/audio-filters.rs b/ctru-rs/examples/audio-filters.rs index d171dc0..616b8d4 100644 --- a/ctru-rs/examples/audio-filters.rs +++ b/ctru-rs/examples/audio-filters.rs @@ -35,7 +35,8 @@ fn fill_buffer(audio_data: &mut [u8], frequency: f32) { } fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/buttons.rs b/ctru-rs/examples/buttons.rs index 60cfba2..c8f9f71 100644 --- a/ctru-rs/examples/buttons.rs +++ b/ctru-rs/examples/buttons.rs @@ -1,8 +1,8 @@ use ctru::prelude::*; fn main() { - // Setup services - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 7eb6252..2ac283a 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -15,7 +15,7 @@ const BUF_SIZE: usize = WIDTH * HEIGHT * 2 * 2; const WAIT_TIMEOUT: Duration = Duration::from_micros(300); fn main() { - ctru::init(); + ctru::use_panic_handler(); let apt = Apt::init().expect("Failed to initialize Apt service."); let hid = Hid::init().expect("Failed to initialize Hid service."); diff --git a/ctru-rs/examples/file-explorer.rs b/ctru-rs/examples/file-explorer.rs index 6594f16..74a94eb 100644 --- a/ctru-rs/examples/file-explorer.rs +++ b/ctru-rs/examples/file-explorer.rs @@ -9,7 +9,8 @@ use std::os::horizon::fs::MetadataExt; use std::path::{Path, PathBuf}; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/futures-basic.rs b/ctru-rs/examples/futures-basic.rs index c96c65e..bfcf053 100644 --- a/ctru-rs/examples/futures-basic.rs +++ b/ctru-rs/examples/futures-basic.rs @@ -13,7 +13,8 @@ use futures::StreamExt; use std::os::horizon::thread::BuilderExt; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/futures-tokio.rs b/ctru-rs/examples/futures-tokio.rs index 2d4ff5a..48edc14 100644 --- a/ctru-rs/examples/futures-tokio.rs +++ b/ctru-rs/examples/futures-tokio.rs @@ -6,7 +6,8 @@ use std::os::horizon::thread::BuilderExt; use std::time::Duration; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/gfx-3d-mode.rs b/ctru-rs/examples/gfx-3d-mode.rs index df0593f..dfdc028 100644 --- a/ctru-rs/examples/gfx-3d-mode.rs +++ b/ctru-rs/examples/gfx-3d-mode.rs @@ -10,7 +10,8 @@ const IMAGE: &[u8] = include_bytes!("assets/ferris.rgb"); static ZERO: &[u8] = &[0; IMAGE.len()]; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/gfx-wide-mode.rs b/ctru-rs/examples/gfx-wide-mode.rs index e9026ab..2d25f7f 100644 --- a/ctru-rs/examples/gfx-wide-mode.rs +++ b/ctru-rs/examples/gfx-wide-mode.rs @@ -1,7 +1,8 @@ use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/graphics-bitmap.rs b/ctru-rs/examples/graphics-bitmap.rs index a034218..b6842f1 100644 --- a/ctru-rs/examples/graphics-bitmap.rs +++ b/ctru-rs/examples/graphics-bitmap.rs @@ -15,7 +15,8 @@ use ctru::prelude::*; static IMAGE: &[u8] = include_bytes!("assets/ferris.rgb"); fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/hashmaps.rs b/ctru-rs/examples/hashmaps.rs index 694752c..42efee2 100644 --- a/ctru-rs/examples/hashmaps.rs +++ b/ctru-rs/examples/hashmaps.rs @@ -1,12 +1,13 @@ use ctru::prelude::*; fn main() { + ctru::use_panic_handler(); + // Initialize services // // HashMaps generate hashes thanks to the 3DS' cryptografically secure generator. // This generator is only active when activating the `PS` service. - // This service is automatically initialized in `ctru::init` - ctru::init(); + // This service is automatically initialized. let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/hello-both-screens.rs b/ctru-rs/examples/hello-both-screens.rs index 4dcd588..38934d3 100644 --- a/ctru-rs/examples/hello-both-screens.rs +++ b/ctru-rs/examples/hello-both-screens.rs @@ -1,8 +1,8 @@ use ctru::prelude::*; fn main() { - // Initialize services - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/hello-world.rs b/ctru-rs/examples/hello-world.rs index 5b7e8ee..910813a 100644 --- a/ctru-rs/examples/hello-world.rs +++ b/ctru-rs/examples/hello-world.rs @@ -3,7 +3,8 @@ use ctru::prelude::*; use std::io::BufWriter; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/linear-memory.rs b/ctru-rs/examples/linear-memory.rs index 11d13d3..440e62b 100644 --- a/ctru-rs/examples/linear-memory.rs +++ b/ctru-rs/examples/linear-memory.rs @@ -4,7 +4,8 @@ use ctru::linear::LinearAllocator; use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/mii-selector.rs b/ctru-rs/examples/mii-selector.rs index 975fda0..84115b6 100644 --- a/ctru-rs/examples/mii-selector.rs +++ b/ctru-rs/examples/mii-selector.rs @@ -2,7 +2,7 @@ use ctru::applets::mii_selector::MiiSelector; use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); diff --git a/ctru-rs/examples/network-sockets.rs b/ctru-rs/examples/network-sockets.rs index 89a1212..e53ef42 100644 --- a/ctru-rs/examples/network-sockets.rs +++ b/ctru-rs/examples/network-sockets.rs @@ -5,7 +5,8 @@ use std::net::{Shutdown, TcpListener}; use std::time::Duration; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().unwrap(); let _console = Console::init(gfx.top_screen.borrow_mut()); let hid = Hid::init().unwrap(); diff --git a/ctru-rs/examples/output-3dslink.rs b/ctru-rs/examples/output-3dslink.rs index 9f4a0ea..2d6b147 100644 --- a/ctru-rs/examples/output-3dslink.rs +++ b/ctru-rs/examples/output-3dslink.rs @@ -11,7 +11,8 @@ use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/romfs.rs b/ctru-rs/examples/romfs.rs index f8549bf..45a7add 100644 --- a/ctru-rs/examples/romfs.rs +++ b/ctru-rs/examples/romfs.rs @@ -1,7 +1,8 @@ use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/software-keyboard.rs b/ctru-rs/examples/software-keyboard.rs index 888a157..0415b10 100644 --- a/ctru-rs/examples/software-keyboard.rs +++ b/ctru-rs/examples/software-keyboard.rs @@ -2,7 +2,8 @@ use ctru::applets::swkbd::{Button, Swkbd}; use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/system-configuration.rs b/ctru-rs/examples/system-configuration.rs index ed1eacf..284e3f1 100644 --- a/ctru-rs/examples/system-configuration.rs +++ b/ctru-rs/examples/system-configuration.rs @@ -2,7 +2,8 @@ use ctru::prelude::*; use ctru::services::cfgu::Cfgu; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/thread-basic.rs b/ctru-rs/examples/thread-basic.rs index 069d0a2..a6c3a6b 100644 --- a/ctru-rs/examples/thread-basic.rs +++ b/ctru-rs/examples/thread-basic.rs @@ -6,8 +6,8 @@ use std::os::horizon::thread::BuilderExt; use std::time::Duration; fn main() { - // Initialize services - ctru::init(); + ctru::use_panic_handler(); + let apt = Apt::init().unwrap(); let hid = Hid::init().unwrap(); let gfx = Gfx::init().unwrap(); diff --git a/ctru-rs/examples/thread-info.rs b/ctru-rs/examples/thread-info.rs index b504b69..06e2864 100644 --- a/ctru-rs/examples/thread-info.rs +++ b/ctru-rs/examples/thread-info.rs @@ -7,7 +7,8 @@ use ctru::prelude::*; use std::os::horizon::thread::BuilderExt; fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); diff --git a/ctru-rs/examples/thread-locals.rs b/ctru-rs/examples/thread-locals.rs index ae46823..70f2aaa 100644 --- a/ctru-rs/examples/thread-locals.rs +++ b/ctru-rs/examples/thread-locals.rs @@ -10,7 +10,8 @@ std::thread_local! { } fn main() { - ctru::init(); + ctru::use_panic_handler(); + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); gfx.top_screen.borrow_mut().set_wide_mode(true); let hid = Hid::init().expect("Couldn't obtain HID controller"); diff --git a/ctru-rs/examples/time-rtc.rs b/ctru-rs/examples/time-rtc.rs index 219abda..b7ff399 100644 --- a/ctru-rs/examples/time-rtc.rs +++ b/ctru-rs/examples/time-rtc.rs @@ -1,7 +1,7 @@ use ctru::prelude::*; fn main() { - ctru::init(); + ctru::use_panic_handler(); let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); let hid = Hid::init().expect("Couldn't obtain HID controller"); diff --git a/ctru-rs/src/applets/swkbd.rs b/ctru-rs/src/applets/swkbd.rs index 715c2de..9bc461d 100644 --- a/ctru-rs/src/applets/swkbd.rs +++ b/ctru-rs/src/applets/swkbd.rs @@ -3,7 +3,6 @@ use ctru_sys::{ self, swkbdInit, swkbdInputText, swkbdSetButton, swkbdSetFeatures, swkbdSetHintText, SwkbdState, }; use libc; -use std::convert::TryInto; use std::iter::once; use std::str; @@ -130,7 +129,7 @@ impl Swkbd { match swkbdInputText( self.state.as_mut(), buf.as_mut_ptr(), - buf.len().try_into().unwrap(), + buf.len(), ) { ctru_sys::SWKBD_BUTTON_NONE => Err(self.parse_swkbd_error()), ctru_sys::SWKBD_BUTTON_LEFT => Ok(Button::Left), diff --git a/ctru-rs/src/lib.rs b/ctru-rs/src/lib.rs index 490b268..fd5d318 100644 --- a/ctru-rs/src/lib.rs +++ b/ctru-rs/src/lib.rs @@ -7,40 +7,28 @@ #![feature(nonnull_slice_from_raw_parts)] #![test_runner(test_runner::run)] -extern "C" fn services_deinit() { - unsafe { - ctru_sys::psExit(); - } -} +// These functions are imported to assure ´cargo´ we need to link the crates. +// These don't need to run to link the functions properly! +#[allow(unused_imports)] +use linker_fix_3ds::init as link_init; +#[allow(unused_imports)] +use pthread_3ds::init as pthread_init; #[no_mangle] #[cfg(feature = "big-stack")] static __stacksize__: usize = 2 * 1024 * 1024; // 2MB -/// Call this somewhere to force Rust to link some required crates -/// This is also a setup for some crate integration only available at runtime +/// Activate ´ctru-rs´' default panic handler. /// -/// See -pub fn init() { - linker_fix_3ds::init(); - pthread_3ds::init(); - +/// With this implementation, the main thread will stop and try to print debug info to an available [console::Console]. +/// In case it fails to find an active [console::Console], the program will just exit. +/// +/// # Notes +/// +/// When ´test´ is enabled, this function won't do anything, as it should be overridden by the ´test´ environment. +pub fn use_panic_handler() { #[cfg(not(test))] panic_hook_setup(); - - // Initialize the PS service for random data generation - unsafe { - let ps_ret = ctru_sys::psInit(); - if ctru_sys::R_FAILED(ps_ret) { - panic!( - "Failed to initialize random data generation: {:?}", - Error::from(ps_ret) - ) - } - - // Setup the deconstruction at the program's end - libc::atexit(services_deinit); - } } #[cfg(not(test))] diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index d87cda4..10ae07c 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -1,7 +1,7 @@ //! Process Services (PS) module. This is used for miscellaneous utility tasks, but //! is particularly important because it is used to generate random data, which //! is required for common things like [`HashMap`](std::collections::HashMap). -//! As such, it is initialized by default in `ctru::init` instead of having a safety handler +//! That's why this is the only service initialised automatically. //! See also use crate::error::ResultCode; diff --git a/ctru-rs/src/test_runner.rs b/ctru-rs/src/test_runner.rs index ebec899..192483f 100644 --- a/ctru-rs/src/test_runner.rs +++ b/ctru-rs/src/test_runner.rs @@ -15,8 +15,6 @@ use crate::services::Apt; /// runs all tests in series, "failing" on the first one to panic (really, the /// panic is just treated the same as any normal application panic). pub(crate) fn run(tests: &[&TestDescAndFn]) { - crate::init(); - let gfx = Gfx::init().unwrap(); let hid = Hid::init().unwrap(); let apt = Apt::init().unwrap(); From 60f3e1fe5a9c7f9d8baf1ad1a933b09361e57655 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Tue, 14 Feb 2023 18:38:26 +0100 Subject: [PATCH 006/116] Refreshed PS module due to ctru::init --- ctru-rs/Cargo.toml | 4 ++-- ctru-rs/src/applets/swkbd.rs | 6 +---- ctru-rs/src/services/ps.rs | 46 ++++++++++++++++++++++++++---------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/ctru-rs/Cargo.toml b/ctru-rs/Cargo.toml index 4774d0e..84e837b 100644 --- a/ctru-rs/Cargo.toml +++ b/ctru-rs/Cargo.toml @@ -15,8 +15,8 @@ name = "ctru" cfg-if = "1.0" ctru-sys = { path = "../ctru-sys", version = "0.4" } const-zero = "0.1.0" -linker-fix-3ds = { path = "../../rust-linker-fix-3ds" } -pthread-3ds = { path = "../../pthread-3ds" } +linker-fix-3ds = { git = "https://github.com/rust3ds/rust-linker-fix-3ds.git" } +pthread-3ds = {git = "https://github.com/rust3ds/pthread-3ds.git" } libc = "0.2.121" bitflags = "1.0.0" widestring = "0.2.2" diff --git a/ctru-rs/src/applets/swkbd.rs b/ctru-rs/src/applets/swkbd.rs index 9bc461d..976bdec 100644 --- a/ctru-rs/src/applets/swkbd.rs +++ b/ctru-rs/src/applets/swkbd.rs @@ -126,11 +126,7 @@ impl Swkbd { /// the output will be truncated but should still be well-formed UTF-8 pub fn get_bytes(&mut self, buf: &mut [u8]) -> Result { unsafe { - match swkbdInputText( - self.state.as_mut(), - buf.as_mut_ptr(), - buf.len(), - ) { + match swkbdInputText(self.state.as_mut(), buf.as_mut_ptr(), buf.len()) { ctru_sys::SWKBD_BUTTON_NONE => Err(self.parse_swkbd_error()), ctru_sys::SWKBD_BUTTON_LEFT => Ok(Button::Left), ctru_sys::SWKBD_BUTTON_MIDDLE => Ok(Button::Middle), diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index 10ae07c..cd5cfe4 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -5,6 +5,7 @@ //! See also use crate::error::ResultCode; +use crate::Result; #[repr(u32)] pub enum AESAlgorithm { @@ -30,23 +31,44 @@ pub enum AESKeyType { Keyslot39Nfc, } -pub fn local_friend_code_seed() -> crate::Result { - let mut seed: u64 = 0; +pub struct Ps(()); - ResultCode(unsafe { ctru_sys::PS_GetLocalFriendCodeSeed(&mut seed) })?; - Ok(seed) -} +impl Ps { + pub fn new() -> Result { + unsafe { + ResultCode(ctru_sys::psInit())?; + Ok(Ps(())) + } + } + + pub fn local_friend_code_seed(&self) -> crate::Result { + let mut seed: u64 = 0; + + ResultCode(unsafe { ctru_sys::PS_GetLocalFriendCodeSeed(&mut seed) })?; + Ok(seed) + } -pub fn device_id() -> crate::Result { - let mut id: u32 = 0; + pub fn device_id(&self) -> crate::Result { + let mut id: u32 = 0; - ResultCode(unsafe { ctru_sys::PS_GetDeviceId(&mut id) })?; - Ok(id) + ResultCode(unsafe { ctru_sys::PS_GetDeviceId(&mut id) })?; + Ok(id) + } + + pub fn generate_random_bytes(&self, out: &mut [u8]) -> crate::Result<()> { + ResultCode(unsafe { + ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len()) + })?; + Ok(()) + } } -pub fn generate_random_bytes(out: &mut [u8]) -> crate::Result<()> { - ResultCode(unsafe { ctru_sys::PS_GenerateRandomBytes(out as *mut _ as *mut _, out.len()) })?; - Ok(()) +impl Drop for Ps { + fn drop(&mut self) { + unsafe { + ctru_sys::psExit(); + } + } } #[cfg(test)] From 67c1bc9d9fd107b73d14b1662d7cb5ba24b76110 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Tue, 14 Feb 2023 18:42:23 +0100 Subject: [PATCH 007/116] Removed false statement --- ctru-rs/src/services/ps.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index cd5cfe4..79ebcd7 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -1,7 +1,6 @@ //! Process Services (PS) module. This is used for miscellaneous utility tasks, but //! is particularly important because it is used to generate random data, which //! is required for common things like [`HashMap`](std::collections::HashMap). -//! That's why this is the only service initialised automatically. //! See also use crate::error::ResultCode; From 502bcebe34f2dc6bfe307755fde2128baaea00f7 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Wed, 15 Feb 2023 13:30:26 +0100 Subject: [PATCH 008/116] Fixed nits --- ctru-rs/Cargo.toml | 2 +- ctru-rs/src/lib.rs | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/ctru-rs/Cargo.toml b/ctru-rs/Cargo.toml index 84e837b..94ff0bb 100644 --- a/ctru-rs/Cargo.toml +++ b/ctru-rs/Cargo.toml @@ -16,7 +16,7 @@ cfg-if = "1.0" ctru-sys = { path = "../ctru-sys", version = "0.4" } const-zero = "0.1.0" linker-fix-3ds = { git = "https://github.com/rust3ds/rust-linker-fix-3ds.git" } -pthread-3ds = {git = "https://github.com/rust3ds/pthread-3ds.git" } +pthread-3ds = { git = "https://github.com/rust3ds/pthread-3ds.git" } libc = "0.2.121" bitflags = "1.0.0" widestring = "0.2.2" diff --git a/ctru-rs/src/lib.rs b/ctru-rs/src/lib.rs index fd5d318..8dd8abf 100644 --- a/ctru-rs/src/lib.rs +++ b/ctru-rs/src/lib.rs @@ -7,12 +7,9 @@ #![feature(nonnull_slice_from_raw_parts)] #![test_runner(test_runner::run)] -// These functions are imported to assure ´cargo´ we need to link the crates. -// These don't need to run to link the functions properly! -#[allow(unused_imports)] -use linker_fix_3ds::init as link_init; -#[allow(unused_imports)] -use pthread_3ds::init as pthread_init; +// Nothing is imported from these crates but their inclusion here assures correct linking of the missing implementations. +extern crate linker_fix_3ds; +extern crate pthread_3ds; #[no_mangle] #[cfg(feature = "big-stack")] From 4ecb1e4077c0f2c9498a63f4e42990b01f1daf42 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Fri, 10 Feb 2023 19:05:16 +0100 Subject: [PATCH 009/116] Rotate RGB565 image rather than convert --- ctru-rs/examples/camera-image.rs | 66 ++++++++++++++------------------ 1 file changed, 29 insertions(+), 37 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 2ac283a..6954442 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -1,16 +1,15 @@ -use ctru::console::Console; -use ctru::gfx::{Gfx, Screen}; +use ctru::gfx::Screen; +use ctru::prelude::*; use ctru::services::cam::{Cam, CamOutputFormat, CamShutterSoundType, CamSize, Camera}; -use ctru::services::hid::KeyPad; -use ctru::services::{Apt, Hid}; +use ctru::services::gspgpu::FramebufferFormat; + use std::time::Duration; const WIDTH: usize = 400; const HEIGHT: usize = 240; -// The screen size is the width and height multiplied by 2 and -// then multiplied by 2 again for 3D images -const BUF_SIZE: usize = WIDTH * HEIGHT * 2 * 2; +// The screen size is the width and height multiplied by 2 (RGB565 store pixels in 2 bytes) +const BUF_SIZE: usize = WIDTH * HEIGHT * 2; const WAIT_TIMEOUT: Duration = Duration::from_micros(300); @@ -22,8 +21,10 @@ fn main() { let gfx = Gfx::init().expect("Failed to initialize GFX service."); gfx.top_screen.borrow_mut().set_double_buffering(true); + gfx.top_screen + .borrow_mut() + .set_framebuffer_format(FramebufferFormat::Rgb565); gfx.bottom_screen.borrow_mut().set_double_buffering(false); - let _console = Console::init(gfx.bottom_screen.borrow_mut()); let mut keys_down; @@ -54,7 +55,9 @@ fn main() { .set_trimming(false) .expect("Failed to disable trimming"); } - let mut buf = vec![0u8; BUF_SIZE]; + let mut buf = vec![128u8; BUF_SIZE / 2]; + let mut lol = vec![255u8; BUF_SIZE / 2]; + buf.append(&mut lol); println!("\nPress R to take a new picture"); println!("Press Start to exit to Homebrew Launcher"); @@ -83,7 +86,7 @@ fn main() { .expect("Failed to take picture"); } - let img = convert_image_to_rgb8(&buf, 0, 0, WIDTH, HEIGHT); + let img = rotate_image(&buf, WIDTH, HEIGHT); unsafe { gfx.top_screen @@ -99,39 +102,28 @@ fn main() { } } -// The available camera output formats are both using u16 values. -// To write to the frame buffer with the default RGB8 format, -// the values must be converted. -// -// Alternatively, the frame buffer format could be set to RGB565 as well -// but the image would need to be rotated 90 degrees. -fn convert_image_to_rgb8(img: &[u8], x: usize, y: usize, width: usize, height: usize) -> Vec { - let mut rgb8 = vec![0u8; img.len()]; +// The 3DS' screens are 2 vertical LCD panels rotated by 90 degrees. +// As such, we'll need to write a "vertical" image to the framebuffer to have it displayed properly. +// This functions handles the rotation of an horizontal image to a vertical one. +fn rotate_image(img: &[u8], width: usize, height: usize) -> Vec { + let mut res = vec![0u8; img.len()]; for j in 0..height { for i in 0..width { // Y-coordinate of where to draw in the frame buffer - let draw_y = y + height - j; + // Height must be esclusive of the upper end (otherwise, we'd be writing to the pixel one column to the right when having j=0) + let draw_y = (height - 1) - j; // X-coordinate of where to draw in the frame buffer - let draw_x = x + i; - // Initial index of where to draw in the frame buffer based on y and x coordinates - let draw_index = (draw_y + draw_x * height) * 3; + let draw_x = i; // Index of the pixel to draw within the image buffer - let index = (j * width + i) * 2; - // Pixels in the image are 2 bytes because of the RGB565 format. - let pixel = u16::from_ne_bytes(img[index..index + 2].try_into().unwrap()); - // b value from the pixel - let b = (((pixel >> 11) & 0x1F) << 3) as u8; - // g value from the pixel - let g = (((pixel >> 5) & 0x3F) << 2) as u8; - // r value from the pixel - let r = ((pixel & 0x1F) << 3) as u8; - - // set the r, g, and b values to the calculated index within the frame buffer - rgb8[draw_index] = r; - rgb8[draw_index + 1] = g; - rgb8[draw_index + 2] = b; + let read_index = (j * width + i) * 2; + + // Initial index of where to draw in the frame buffer based on y and x coordinates + let draw_index = (draw_x * height + draw_y) * 2; // This 2 stands for the number of bytes per pixel (16 bits) + + res[draw_index] = img[read_index]; + res[draw_index + 1] = img[read_index + 1]; } } - rgb8 + res } From 6a937a58e3b874fbfa22f12d0ed9f7f9a6f41a2e Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sat, 11 Feb 2023 15:52:28 +0100 Subject: [PATCH 010/116] Fixed small issues and an older bug --- ctru-rs/examples/camera-image.rs | 36 ++++++++++++++++---------------- ctru-rs/src/services/cam.rs | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 6954442..4302325 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -9,7 +9,7 @@ const WIDTH: usize = 400; const HEIGHT: usize = 240; // The screen size is the width and height multiplied by 2 (RGB565 store pixels in 2 bytes) -const BUF_SIZE: usize = WIDTH * HEIGHT * 2; +// const BUF_SIZE: usize = WIDTH * HEIGHT * 2; const WAIT_TIMEOUT: Duration = Duration::from_micros(300); @@ -55,9 +55,8 @@ fn main() { .set_trimming(false) .expect("Failed to disable trimming"); } - let mut buf = vec![128u8; BUF_SIZE / 2]; - let mut lol = vec![255u8; BUF_SIZE / 2]; - buf.append(&mut lol); + + let mut buf; println!("\nPress R to take a new picture"); println!("Press Start to exit to Homebrew Launcher"); @@ -72,8 +71,6 @@ fn main() { if keys_down.contains(KeyPad::KEY_R) { println!("Capturing new image"); - cam.play_shutter_sound(CamShutterSoundType::NORMAL) - .expect("Failed to play shutter sound"); let camera = &mut cam.outer_right_cam; @@ -84,21 +81,24 @@ fn main() { WAIT_TIMEOUT, ) .expect("Failed to take picture"); - } - let img = rotate_image(&buf, WIDTH, HEIGHT); + cam.play_shutter_sound(CamShutterSoundType::NORMAL) + .expect("Failed to play shutter sound"); - unsafe { - gfx.top_screen - .borrow_mut() - .get_raw_framebuffer() - .ptr - .copy_from(img.as_ptr(), img.len()); - } + let img = rotate_image(&buf, WIDTH, HEIGHT); - gfx.flush_buffers(); - gfx.swap_buffers(); - gfx.wait_for_vblank(); + unsafe { + gfx.top_screen + .borrow_mut() + .get_raw_framebuffer() + .ptr + .copy_from(img.as_ptr(), img.len()); + } + + gfx.flush_buffers(); + gfx.swap_buffers(); + gfx.wait_for_vblank(); + } } } diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 4339340..528a27f 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -731,7 +731,7 @@ pub trait Camera { Ok::(buf_size) }?; - let screen_size = u32::from(width) * u32::from(width) * 2; + let screen_size = u32::from(width) * u32::from(height) * 2; let mut buf = vec![0u8; usize::try_from(screen_size).unwrap()]; From 326cfde36ff922ae959e03e3e3cae36b448f84ea Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Fri, 17 Feb 2023 16:50:13 +0100 Subject: [PATCH 011/116] Fix example and speedup performance --- ctru-rs/examples/camera-image.rs | 37 ++++++++++++++++---------------- ctru-rs/src/error.rs | 6 +++++- ctru-rs/src/services/cam.rs | 33 ++++++++++++++++++---------- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 4302325..e481181 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -9,9 +9,9 @@ const WIDTH: usize = 400; const HEIGHT: usize = 240; // The screen size is the width and height multiplied by 2 (RGB565 store pixels in 2 bytes) -// const BUF_SIZE: usize = WIDTH * HEIGHT * 2; +const BUF_SIZE: usize = WIDTH * HEIGHT * 2; -const WAIT_TIMEOUT: Duration = Duration::from_micros(300); +const WAIT_TIMEOUT: Duration = Duration::from_millis(300); fn main() { ctru::use_panic_handler(); @@ -56,7 +56,7 @@ fn main() { .expect("Failed to disable trimming"); } - let mut buf; + let mut buf = vec![0; BUF_SIZE]; println!("\nPress R to take a new picture"); println!("Press Start to exit to Homebrew Launcher"); @@ -74,8 +74,9 @@ fn main() { let camera = &mut cam.outer_right_cam; - buf = camera + camera .take_picture( + &mut buf, WIDTH.try_into().unwrap(), HEIGHT.try_into().unwrap(), WAIT_TIMEOUT, @@ -85,15 +86,12 @@ fn main() { cam.play_shutter_sound(CamShutterSoundType::NORMAL) .expect("Failed to play shutter sound"); - let img = rotate_image(&buf, WIDTH, HEIGHT); - - unsafe { - gfx.top_screen - .borrow_mut() - .get_raw_framebuffer() - .ptr - .copy_from(img.as_ptr(), img.len()); - } + rotate_image_to_screen( + &buf, + gfx.top_screen.borrow_mut().get_raw_framebuffer().ptr, + WIDTH, + HEIGHT, + ); gfx.flush_buffers(); gfx.swap_buffers(); @@ -104,9 +102,8 @@ fn main() { // The 3DS' screens are 2 vertical LCD panels rotated by 90 degrees. // As such, we'll need to write a "vertical" image to the framebuffer to have it displayed properly. -// This functions handles the rotation of an horizontal image to a vertical one. -fn rotate_image(img: &[u8], width: usize, height: usize) -> Vec { - let mut res = vec![0u8; img.len()]; +// This functions rotates an horizontal image by 90 degrees to the right. +fn rotate_image_to_screen(src: &[u8], framebuf: *mut u8, width: usize, height: usize) { for j in 0..height { for i in 0..width { // Y-coordinate of where to draw in the frame buffer @@ -121,9 +118,11 @@ fn rotate_image(img: &[u8], width: usize, height: usize) -> Vec { // Initial index of where to draw in the frame buffer based on y and x coordinates let draw_index = (draw_x * height + draw_y) * 2; // This 2 stands for the number of bytes per pixel (16 bits) - res[draw_index] = img[read_index]; - res[draw_index + 1] = img[read_index + 1]; + unsafe { + let pixel_pointer = framebuf.offset(draw_index as isize); + *pixel_pointer = src[read_index]; + *pixel_pointer.offset(1) = src[read_index + 1]; + } } } - res } diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index 9aaf410..5d1d28c 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -21,7 +21,11 @@ impl Try for ResultCode { } fn branch(self) -> ControlFlow { - if self.0 < 0 { + // Wait timeouts aren't counted as "failures" in libctru, but an unfinished task means unsafety for us. + // Luckily all summary cases are for system failures (except RS_SUCCESS). + // I don't know if there are any cases in libctru where a Result holds a "failing" summary but a "success" code, so we'll just check for both. + if ctru_sys::R_FAILED(self.0) || ctru_sys::R_SUMMARY(self.0) != ctru_sys::RS_SUCCESS as i32 + { ControlFlow::Break(self.into()) } else { ControlFlow::Continue(()) diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 528a27f..c4c7737 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -704,12 +704,16 @@ pub trait Camera { } } - /// Requests the camera to take a picture and returns a vector containing the image bytes. + /// Requests the camera to take a picture and write it in a buffer. /// /// # Errors /// /// This will error if the camera is busy or if the timeout duration is reached. /// + /// # Panics + /// + /// This function will panic if `buffer.len() < (width * height * 2)`. + /// /// # Arguments /// /// * `width` - Width of the desired image @@ -717,10 +721,11 @@ pub trait Camera { /// * `timeout` - Duration to wait for the image fn take_picture( &mut self, + buffer: &mut [u8], width: u16, height: u16, timeout: Duration, - ) -> crate::Result> { + ) -> crate::Result<()> { let transfer_unit = unsafe { let mut buf_size = 0; ResultCode(ctru_sys::CAMU_GetMaxBytes( @@ -731,10 +736,6 @@ pub trait Camera { Ok::(buf_size) }?; - let screen_size = u32::from(width) * u32::from(height) * 2; - - let mut buf = vec![0u8; usize::try_from(screen_size).unwrap()]; - unsafe { ResultCode(ctru_sys::CAMU_SetTransferBytes( self.port_as_raw(), @@ -744,6 +745,11 @@ pub trait Camera { ))?; }; + let screen_size = u32::from(width) * u32::from(height) * 2; + if buffer.len() < screen_size as usize { + panic!("Provided buffer's length is shorter than the desired width and height matrix.") + } + unsafe { ResultCode(ctru_sys::CAMU_Activate(self.camera_as_raw()))?; ResultCode(ctru_sys::CAMU_ClearBuffer(self.port_as_raw()))?; @@ -754,7 +760,7 @@ pub trait Camera { let mut completion_handle: Handle = 0; ResultCode(ctru_sys::CAMU_SetReceiving( &mut completion_handle, - buf.as_mut_ptr() as *mut ::libc::c_void, + buffer.as_mut_ptr() as *mut ::libc::c_void, self.port_as_raw(), screen_size, transfer_unit.try_into().unwrap(), @@ -763,16 +769,21 @@ pub trait Camera { }?; unsafe { - ResultCode(ctru_sys::svcWaitSynchronization( + // Panicking without closing an SVC handle causes an ARM exception, we have to handle it carefully (TODO: SVC module) + let wait_result = ResultCode(ctru_sys::svcWaitSynchronization( receive_event, timeout.as_nanos().try_into().unwrap(), - ))?; + )); + + // We close everything first, then we check for possible errors + ResultCode(ctru_sys::svcCloseHandle(receive_event)); ResultCode(ctru_sys::CAMU_StopCapture(self.port_as_raw()))?; - ResultCode(ctru_sys::svcCloseHandle(receive_event))?; ResultCode(ctru_sys::CAMU_Activate(ctru_sys::SELECT_NONE))?; + + wait_result?; }; - Ok(buf) + Ok(()) } } From 2638c9c66fd267f99983744fb432ba3bc630b956 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Fri, 17 Feb 2023 16:54:16 +0100 Subject: [PATCH 012/116] Fix lints --- ctru-rs/src/services/cam.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index c4c7737..43ecbc9 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -776,7 +776,7 @@ pub trait Camera { )); // We close everything first, then we check for possible errors - ResultCode(ctru_sys::svcCloseHandle(receive_event)); + let _ = ctru_sys::svcCloseHandle(receive_event); // We wouldn't return the error even if there was one, so no use of ResultCode is needed ResultCode(ctru_sys::CAMU_StopCapture(self.port_as_raw()))?; ResultCode(ctru_sys::CAMU_Activate(ctru_sys::SELECT_NONE))?; From 2c797b04240b283b19c1e1055618c7159882d37d Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Fri, 17 Feb 2023 17:04:39 +0100 Subject: [PATCH 013/116] Subatomic revert --- ctru-rs/examples/camera-image.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index e481181..aa4dff9 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -56,7 +56,7 @@ fn main() { .expect("Failed to disable trimming"); } - let mut buf = vec![0; BUF_SIZE]; + let mut buf = vec![0u8; BUF_SIZE]; println!("\nPress R to take a new picture"); println!("Press Start to exit to Homebrew Launcher"); From 27e4f7fb310fe216ac9ffe4e1957f6b20c73fb01 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sat, 18 Feb 2023 15:31:26 +0100 Subject: [PATCH 014/116] New error variant and fixed nits --- ctru-rs/examples/camera-image.rs | 5 +++-- ctru-rs/src/error.rs | 8 ++++++-- ctru-rs/src/services/cam.rs | 14 +++++--------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index aa4dff9..b46b591 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -119,9 +119,10 @@ fn rotate_image_to_screen(src: &[u8], framebuf: *mut u8, width: usize, height: u let draw_index = (draw_x * height + draw_y) * 2; // This 2 stands for the number of bytes per pixel (16 bits) unsafe { + // We'll work with pointers since the frambuffer is a raw pointer regardless. + // The offsets are completely safe as long as the width and height are correct. let pixel_pointer = framebuf.offset(draw_index as isize); - *pixel_pointer = src[read_index]; - *pixel_pointer.offset(1) = src[read_index + 1]; + pixel_pointer.copy_from(src.as_ptr().offset(read_index as isize), 2); } } } diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index 5d1d28c..3231c4e 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -55,6 +55,8 @@ pub enum Error { Libc(String), ServiceAlreadyActive, OutputAlreadyRedirected, + /// The first member is the length of the buffer provided by the user, the second parameter is the size of the requested data (in bytes). + BufferTooShort(usize, usize), } impl Error { @@ -101,6 +103,7 @@ impl fmt::Debug for Error { Self::Libc(err) => f.debug_tuple("Libc").field(err).finish(), Self::ServiceAlreadyActive => f.debug_tuple("ServiceAlreadyActive").finish(), Self::OutputAlreadyRedirected => f.debug_tuple("OutputAlreadyRedirected").finish(), + Self::BufferTooShort(provided, wanted) => f.debug_tuple("BufferTooShort").field(provided).field(wanted).finish(), } } } @@ -110,7 +113,7 @@ impl fmt::Display for Error { match self { &Self::Os(err) => write!( f, - "libctru result code 0x{err:08X}: [{} {}] {}: {}", + "Libctru result code 0x{err:08X}: [{} {}] {}: {}", result_code_level_str(err), result_code_module_str(err), result_code_summary_str(err), @@ -119,8 +122,9 @@ impl fmt::Display for Error { Self::Libc(err) => write!(f, "{err}"), Self::ServiceAlreadyActive => write!(f, "Service already active"), Self::OutputAlreadyRedirected => { - write!(f, "output streams are already redirected to 3dslink") + write!(f, "Output streams are already redirected to 3dslink") } + Self::BufferTooShort(provided, wanted) => write!(f, "The provided buffer's length is too short (length = {provided}) to hold the wanted data (size = {wanted})") } } } diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 43ecbc9..4e222e0 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -3,7 +3,7 @@ //! The CAM service provides access to the cameras. Cameras can return 2D images //! in the form of byte vectors which can be used for display or other usages. -use crate::error::ResultCode; +use crate::error::{Error, ResultCode}; use crate::services::gspgpu::FramebufferFormat; use bitflags::bitflags; use ctru_sys::Handle; @@ -710,10 +710,6 @@ pub trait Camera { /// /// This will error if the camera is busy or if the timeout duration is reached. /// - /// # Panics - /// - /// This function will panic if `buffer.len() < (width * height * 2)`. - /// /// # Arguments /// /// * `width` - Width of the desired image @@ -745,9 +741,9 @@ pub trait Camera { ))?; }; - let screen_size = u32::from(width) * u32::from(height) * 2; + let screen_size: usize = usize::from(width) * usize::from(height) * 2; if buffer.len() < screen_size as usize { - panic!("Provided buffer's length is shorter than the desired width and height matrix.") + return Err(Error::BufferTooShort(buffer.len(), screen_size)) } unsafe { @@ -760,9 +756,9 @@ pub trait Camera { let mut completion_handle: Handle = 0; ResultCode(ctru_sys::CAMU_SetReceiving( &mut completion_handle, - buffer.as_mut_ptr() as *mut ::libc::c_void, + buffer.as_mut_ptr().cast(), self.port_as_raw(), - screen_size, + screen_size as u32, transfer_unit.try_into().unwrap(), ))?; Ok::(completion_handle) From e5b3977ef7f56bcf69063ad973239485d629ea97 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sat, 18 Feb 2023 15:34:16 +0100 Subject: [PATCH 015/116] fmt and clippy --- ctru-rs/src/error.rs | 6 +++++- ctru-rs/src/services/cam.rs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index 3231c4e..33eecf6 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -103,7 +103,11 @@ impl fmt::Debug for Error { Self::Libc(err) => f.debug_tuple("Libc").field(err).finish(), Self::ServiceAlreadyActive => f.debug_tuple("ServiceAlreadyActive").finish(), Self::OutputAlreadyRedirected => f.debug_tuple("OutputAlreadyRedirected").finish(), - Self::BufferTooShort(provided, wanted) => f.debug_tuple("BufferTooShort").field(provided).field(wanted).finish(), + Self::BufferTooShort(provided, wanted) => f + .debug_tuple("BufferTooShort") + .field(provided) + .field(wanted) + .finish(), } } } diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 4e222e0..26bbede 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -742,8 +742,8 @@ pub trait Camera { }; let screen_size: usize = usize::from(width) * usize::from(height) * 2; - if buffer.len() < screen_size as usize { - return Err(Error::BufferTooShort(buffer.len(), screen_size)) + if buffer.len() < screen_size { + return Err(Error::BufferTooShort(buffer.len(), screen_size)); } unsafe { From 3285871fb736a2b89a574607ab068f3fa693ba9e Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sun, 19 Feb 2023 19:28:05 +0100 Subject: [PATCH 016/116] Standardise error strings --- ctru-rs/src/error.rs | 14 +++++++------- ctru-rs/src/services/ndsp/mod.rs | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index 33eecf6..021a740 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -104,9 +104,9 @@ impl fmt::Debug for Error { Self::ServiceAlreadyActive => f.debug_tuple("ServiceAlreadyActive").finish(), Self::OutputAlreadyRedirected => f.debug_tuple("OutputAlreadyRedirected").finish(), Self::BufferTooShort(provided, wanted) => f - .debug_tuple("BufferTooShort") - .field(provided) - .field(wanted) + .debug_struct("BufferTooShort") + .field("provided", provided) + .field("wanted", wanted) .finish(), } } @@ -117,18 +117,18 @@ impl fmt::Display for Error { match self { &Self::Os(err) => write!( f, - "Libctru result code 0x{err:08X}: [{} {}] {}: {}", + "libctru result code 0x{err:08X}: [{} {}] {}: {}", result_code_level_str(err), result_code_module_str(err), result_code_summary_str(err), result_code_description_str(err) ), Self::Libc(err) => write!(f, "{err}"), - Self::ServiceAlreadyActive => write!(f, "Service already active"), + Self::ServiceAlreadyActive => write!(f, "service already active"), Self::OutputAlreadyRedirected => { - write!(f, "Output streams are already redirected to 3dslink") + write!(f, "output streams are already redirected to 3dslink") } - Self::BufferTooShort(provided, wanted) => write!(f, "The provided buffer's length is too short (length = {provided}) to hold the wanted data (size = {wanted})") + Self::BufferTooShort(provided, wanted) => write!(f, "the provided buffer's length is too short (length = {provided}) to hold the wanted data (size = {wanted})") } } } diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index 39c485c..ee366d4 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -317,10 +317,10 @@ impl AudioFormat { impl fmt::Display for NdspError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - Self::InvalidChannel(id) => write!(f, "Audio Channel with ID {id} doesn't exist. Valid channels have an ID between 0 and 23."), - Self::ChannelAlreadyInUse(id) => write!(f, "Audio Channel with ID {id} is already being used. Drop the other instance if you want to use it here."), - Self::WaveBusy(id) => write!(f, "The selected WaveInfo is busy playing on channel {id}."), - Self::SampleCountOutOfBounds(samples_requested, max_samples) => write!(f, "The sample count requested is too big. Requested amount was {samples_requested} while the maximum sample count is {max_samples}."), + Self::InvalidChannel(id) => write!(f, "audio Channel with ID {id} doesn't exist. Valid channels have an ID between 0 and 23"), + Self::ChannelAlreadyInUse(id) => write!(f, "audio Channel with ID {id} is already being used. Drop the other instance if you want to use it here"), + Self::WaveBusy(id) => write!(f, "the selected WaveInfo is busy playing on channel {id}"), + Self::SampleCountOutOfBounds(samples_requested, max_samples) => write!(f, "the sample count requested is too big (requested = {samples_requested}, maximum = {max_samples})"), } } } From fe6faf93fdad8eb1cc7c7bec36baeffc11fa873f Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sun, 19 Feb 2023 19:56:24 +0100 Subject: [PATCH 017/116] Self-documenting BufferTooShort variant --- ctru-rs/src/error.rs | 12 ++++++++---- ctru-rs/src/services/cam.rs | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ctru-rs/src/error.rs b/ctru-rs/src/error.rs index 021a740..004b461 100644 --- a/ctru-rs/src/error.rs +++ b/ctru-rs/src/error.rs @@ -55,8 +55,12 @@ pub enum Error { Libc(String), ServiceAlreadyActive, OutputAlreadyRedirected, - /// The first member is the length of the buffer provided by the user, the second parameter is the size of the requested data (in bytes). - BufferTooShort(usize, usize), + BufferTooShort { + /// Length of the buffer provided by the user. + provided: usize, + /// Size of the requested data (in bytes). + wanted: usize, + }, } impl Error { @@ -103,7 +107,7 @@ impl fmt::Debug for Error { Self::Libc(err) => f.debug_tuple("Libc").field(err).finish(), Self::ServiceAlreadyActive => f.debug_tuple("ServiceAlreadyActive").finish(), Self::OutputAlreadyRedirected => f.debug_tuple("OutputAlreadyRedirected").finish(), - Self::BufferTooShort(provided, wanted) => f + Self::BufferTooShort { provided, wanted } => f .debug_struct("BufferTooShort") .field("provided", provided) .field("wanted", wanted) @@ -128,7 +132,7 @@ impl fmt::Display for Error { Self::OutputAlreadyRedirected => { write!(f, "output streams are already redirected to 3dslink") } - Self::BufferTooShort(provided, wanted) => write!(f, "the provided buffer's length is too short (length = {provided}) to hold the wanted data (size = {wanted})") + Self::BufferTooShort{provided, wanted} => write!(f, "the provided buffer's length is too short (length = {provided}) to hold the wanted data (size = {wanted})") } } } diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 26bbede..7f96ebd 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -743,7 +743,10 @@ pub trait Camera { let screen_size: usize = usize::from(width) * usize::from(height) * 2; if buffer.len() < screen_size { - return Err(Error::BufferTooShort(buffer.len(), screen_size)); + return Err(Error::BufferTooShort { + provided: buffer.len(), + wanted: screen_size, + }); } unsafe { From 044cbeecc982dee6a300e02b73eaa9652530248d Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Tue, 28 Feb 2023 14:42:36 +0100 Subject: [PATCH 018/116] Add a basic AM service wrapper and an example that uses it --- ctru-rs/examples/title-info.rs | 37 +++++++++++++++++++++++++++++ ctru-rs/src/services/am.rs | 43 ++++++++++++++++++++++++++++++++++ ctru-rs/src/services/fs.rs | 8 +++++++ ctru-rs/src/services/mod.rs | 1 + 4 files changed, 89 insertions(+) create mode 100644 ctru-rs/examples/title-info.rs create mode 100644 ctru-rs/src/services/am.rs diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs new file mode 100644 index 0000000..2abb085 --- /dev/null +++ b/ctru-rs/examples/title-info.rs @@ -0,0 +1,37 @@ +use ctru::prelude::*; +use ctru::services::am::Am; +use ctru::services::fs::FsMediaType; + +fn main() { + ctru::use_panic_handler(); + + let gfx = Gfx::init().expect("Couldn't obtain GFX controller"); + let hid = Hid::init().expect("Couldn't obtain HID controller"); + let apt = Apt::init().expect("Couldn't obtain APT controller"); + let am = Am::init().expect("Couldn't obtain AM controller"); + let _console = Console::init(gfx.top_screen.borrow_mut()); + + let title_count = am.get_title_count(FsMediaType::Sd).expect("Failed to get title count"); + println!("This 3DS has {title_count} titles on its SD Card:"); + + let title_list = am.get_title_list(FsMediaType::Sd).expect("Failed to get title list"); + for id in title_list { + println!("{id:x}"); + } + + // Main loop + while apt.main_loop() { + //Scan all the inputs. This should be done once for each frame + hid.scan_input(); + + if hid.keys_down().contains(KeyPad::KEY_START) { + break; + } + // Flush and swap framebuffers + gfx.flush_buffers(); + gfx.swap_buffers(); + + //Wait for VBlank + gfx.wait_for_vblank(); + } +} diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs new file mode 100644 index 0000000..aea3927 --- /dev/null +++ b/ctru-rs/src/services/am.rs @@ -0,0 +1,43 @@ +use crate::error::ResultCode; +use crate::services::fs::FsMediaType; + +pub struct Am(()); + +impl Am { + pub fn init() -> crate::Result { + unsafe { + ResultCode(ctru_sys::amInit())?; + Ok(Am(())) + } + } + + pub fn get_title_count(&self, mediatype: FsMediaType) -> crate::Result { + unsafe { + let mut count = 0; + ResultCode(ctru_sys::AM_GetTitleCount(mediatype as u32, &mut count))?; + Ok(count) + } + } + + pub fn get_title_list(&self, mediatype: FsMediaType) -> crate::Result> { + unsafe { + let count = self.get_title_count(mediatype)?; + let mut buf = Vec::with_capacity(count as usize); + let mut read_amount = 0; + ResultCode(ctru_sys::AM_GetTitleList( + &mut read_amount, + mediatype as u32, + count, + buf.as_mut_ptr(), + ))?; + buf.set_len(read_amount as usize); + Ok(buf) + } + } +} + +impl Drop for Am { + fn drop(&mut self) { + unsafe { ctru_sys::amExit() }; + } +} diff --git a/ctru-rs/src/services/fs.rs b/ctru-rs/src/services/fs.rs index 64da9c3..6cd3728 100644 --- a/ctru-rs/src/services/fs.rs +++ b/ctru-rs/src/services/fs.rs @@ -43,6 +43,14 @@ bitflags! { } } +#[derive(Copy, Clone, Debug)] +#[repr(u32)] +pub enum FsMediaType { + Nand = ctru_sys::MEDIATYPE_NAND, + Sd = ctru_sys::MEDIATYPE_SD, + GameCard = ctru_sys::MEDIATYPE_GAME_CARD, +} + #[derive(Copy, Clone, Debug)] pub enum PathType { Invalid, diff --git a/ctru-rs/src/services/mod.rs b/ctru-rs/src/services/mod.rs index b0cc8ef..8346ea7 100644 --- a/ctru-rs/src/services/mod.rs +++ b/ctru-rs/src/services/mod.rs @@ -6,6 +6,7 @@ //! Some include: button input, audio playback, graphics rendering, built-in cameras, etc. pub mod apt; +pub mod am; pub mod cam; pub mod cfgu; pub mod fs; From 83b963d28bfbd5c80a009f71ac7e5d5d6ca42586 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Tue, 28 Feb 2023 14:52:39 +0100 Subject: [PATCH 019/116] Make lint CI happy --- ctru-rs/examples/title-info.rs | 8 ++++++-- ctru-rs/src/services/mod.rs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs index 2abb085..0faaadd 100644 --- a/ctru-rs/examples/title-info.rs +++ b/ctru-rs/examples/title-info.rs @@ -11,10 +11,14 @@ fn main() { let am = Am::init().expect("Couldn't obtain AM controller"); let _console = Console::init(gfx.top_screen.borrow_mut()); - let title_count = am.get_title_count(FsMediaType::Sd).expect("Failed to get title count"); + let title_count = am + .get_title_count(FsMediaType::Sd) + .expect("Failed to get title count"); println!("This 3DS has {title_count} titles on its SD Card:"); - let title_list = am.get_title_list(FsMediaType::Sd).expect("Failed to get title list"); + let title_list = am + .get_title_list(FsMediaType::Sd) + .expect("Failed to get title list"); for id in title_list { println!("{id:x}"); } diff --git a/ctru-rs/src/services/mod.rs b/ctru-rs/src/services/mod.rs index 8346ea7..5abf93a 100644 --- a/ctru-rs/src/services/mod.rs +++ b/ctru-rs/src/services/mod.rs @@ -5,8 +5,8 @@ //! //! Some include: button input, audio playback, graphics rendering, built-in cameras, etc. -pub mod apt; pub mod am; +pub mod apt; pub mod cam; pub mod cfgu; pub mod fs; From 9eee38bdddd32771a9f6694c022f14e9da664e07 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Wed, 1 Mar 2023 14:20:26 +0100 Subject: [PATCH 020/116] Make get_title_list function more readable --- ctru-rs/src/services/am.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs index aea3927..cde4724 100644 --- a/ctru-rs/src/services/am.rs +++ b/ctru-rs/src/services/am.rs @@ -24,12 +24,14 @@ impl Am { let count = self.get_title_count(mediatype)?; let mut buf = Vec::with_capacity(count as usize); let mut read_amount = 0; + ResultCode(ctru_sys::AM_GetTitleList( &mut read_amount, mediatype as u32, count, buf.as_mut_ptr(), ))?; + buf.set_len(read_amount as usize); Ok(buf) } From 3ad9780d4cc2aea01c833ff228b7506a68bf36d7 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Wed, 1 Mar 2023 21:32:22 +0100 Subject: [PATCH 021/116] Add more functionality to `Am` service wrapper and improve title-info.rs --- ctru-rs/examples/title-info.rs | 98 ++++++++++++++++++++++++++++++---- ctru-rs/src/services/am.rs | 56 +++++++++++++++++-- 2 files changed, 139 insertions(+), 15 deletions(-) diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs index 0faaadd..5bb6e76 100644 --- a/ctru-rs/examples/title-info.rs +++ b/ctru-rs/examples/title-info.rs @@ -9,19 +9,26 @@ fn main() { let hid = Hid::init().expect("Couldn't obtain HID controller"); let apt = Apt::init().expect("Couldn't obtain APT controller"); let am = Am::init().expect("Couldn't obtain AM controller"); - let _console = Console::init(gfx.top_screen.borrow_mut()); + let top_screen = Console::init(gfx.top_screen.borrow_mut()); + let bottom_screen = Console::init(gfx.bottom_screen.borrow_mut()); - let title_count = am + let sd_count = am .get_title_count(FsMediaType::Sd) - .expect("Failed to get title count"); - println!("This 3DS has {title_count} titles on its SD Card:"); - - let title_list = am + .expect("Failed to get sd title count"); + let sd_list = am .get_title_list(FsMediaType::Sd) - .expect("Failed to get title list"); - for id in title_list { - println!("{id:x}"); - } + .expect("Failed to get sd title list"); + + let nand_count = am + .get_title_count(FsMediaType::Nand) + .expect("Failed to get nand title count"); + let nand_list = am + .get_title_list(FsMediaType::Nand) + .expect("Failed to get nand title list"); + + let mut offset = 0; + let mut refresh = true; + let mut use_nand = false; // Main loop while apt.main_loop() { @@ -31,6 +38,77 @@ fn main() { if hid.keys_down().contains(KeyPad::KEY_START) { break; } + if hid.keys_down().contains(KeyPad::KEY_SELECT) { + refresh = true; + offset = 0; + use_nand = !use_nand; + } + + let cur_list = if use_nand { &nand_list } else { &sd_list }; + + if hid.keys_down().intersects(KeyPad::KEY_DOWN) { + if offset + 1 < cur_list.len() { + offset = offset + 1; + refresh = true; + } + } else if hid.keys_down().intersects(KeyPad::KEY_UP) { + if offset > 0 { + offset = offset - 1; + refresh = true; + } + } + + if refresh { + let mut selected_title = 0; + // Clear top screen and write title ids to it + top_screen.select(); + print!("\x1b[2J"); + + // Top screen seems to have only 30 rows + for (i, id) in cur_list.iter().skip(offset).take(29).enumerate() { + if i == 0 { + selected_title = *id; + println!("=> {id:x}"); + } else { + println!(" {id:x}"); + } + } + + // Clear bottom screen and write properties of selected title to it + bottom_screen.select(); + println!("\x1b[2J"); + // Move cursor to top left + println!("\x1b[1;1"); + let media = if use_nand { + FsMediaType::Nand + } else { + FsMediaType::Sd + }; + match am.get_title_info(media, &mut [selected_title]) { + Ok(info) => { + // Vec returned by Am::get_title_info always has same length as inputed slice + let info = info[0]; + println!("Size: {} KB", info.size_bytes() / 1024); + println!("Version: 0x{:x}", info.version()); + println!("Type: 0x{:x}", info.type_()); + } + Err(e) => println!("Failed to get title info: {}", e), + } + + println!("\x1b[26;0HPress START to exit"); + if use_nand { + println!("Press SELECT to choose SD Card"); + println!("Current medium: NAND"); + println!("Title count: {}", nand_count); + } else { + println!("Press SELECT to choose NAND"); + println!("Current medium: SD Card"); + println!("Title count: {}", sd_count); + } + + refresh = false; + } + // Flush and swap framebuffers gfx.flush_buffers(); gfx.swap_buffers(); diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs index cde4724..89cc19a 100644 --- a/ctru-rs/src/services/am.rs +++ b/ctru-rs/src/services/am.rs @@ -1,6 +1,34 @@ use crate::error::ResultCode; use crate::services::fs::FsMediaType; +#[derive(Copy, Clone, Debug)] +#[repr(C)] +pub struct TitleInfo { + id: u64, + size: u64, + version: u16, + pad: u16, + type_: u32, +} + +// Make sure TitleInfo is correct size +const _TITLEINFO_SIZE_CHECK: [u8; 0x18] = [0; std::mem::size_of::()]; + +impl TitleInfo { + pub fn id(&self) -> u64 { + self.id + } + pub fn size_bytes(&self) -> u64 { + self.size + } + pub fn version(&self) -> u16 { + self.version + } + pub fn type_(&self) -> u32 { + self.type_ + } +} + pub struct Am(()); impl Am { @@ -20,11 +48,10 @@ impl Am { } pub fn get_title_list(&self, mediatype: FsMediaType) -> crate::Result> { + let count = self.get_title_count(mediatype)?; + let mut buf = Vec::with_capacity(count as usize); + let mut read_amount = 0; unsafe { - let count = self.get_title_count(mediatype)?; - let mut buf = Vec::with_capacity(count as usize); - let mut read_amount = 0; - ResultCode(ctru_sys::AM_GetTitleList( &mut read_amount, mediatype as u32, @@ -33,8 +60,27 @@ impl Am { ))?; buf.set_len(read_amount as usize); - Ok(buf) } + Ok(buf) + } + + pub fn get_title_info( + &self, + mediatype: FsMediaType, + id_list: &mut [u64], + ) -> crate::Result> { + let mut info = Vec::with_capacity(id_list.len()); + unsafe { + ResultCode(ctru_sys::AM_GetTitleInfo( + mediatype as u32, + id_list.len() as u32, + id_list.as_mut_ptr(), + info.as_mut_ptr() as _, + ))?; + + info.set_len(id_list.len()); + } + Ok(info) } } From 0fd7a340c8a53e4bbb4b0d305b104913822829c1 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Wed, 1 Mar 2023 22:14:34 +0100 Subject: [PATCH 022/116] Add `Title` struct --- ctru-rs/examples/title-info.rs | 24 ++++++------ ctru-rs/src/services/am.rs | 72 ++++++++++++++++++++++++---------- 2 files changed, 62 insertions(+), 34 deletions(-) diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs index 5bb6e76..f4231a0 100644 --- a/ctru-rs/examples/title-info.rs +++ b/ctru-rs/examples/title-info.rs @@ -59,18 +59,18 @@ fn main() { } if refresh { - let mut selected_title = 0; + let mut selected_title = cur_list.iter().skip(offset).next().unwrap(); // Clear top screen and write title ids to it top_screen.select(); print!("\x1b[2J"); // Top screen seems to have only 30 rows - for (i, id) in cur_list.iter().skip(offset).take(29).enumerate() { + for (i, title) in cur_list.iter().skip(offset).take(29).enumerate() { if i == 0 { - selected_title = *id; - println!("=> {id:x}"); + selected_title = title; + println!("=> {:x}", title.id()); } else { - println!(" {id:x}"); + println!(" {:x}", title.id()); } } @@ -79,21 +79,19 @@ fn main() { println!("\x1b[2J"); // Move cursor to top left println!("\x1b[1;1"); - let media = if use_nand { - FsMediaType::Nand - } else { - FsMediaType::Sd - }; - match am.get_title_info(media, &mut [selected_title]) { + + match selected_title.get_title_info() { Ok(info) => { - // Vec returned by Am::get_title_info always has same length as inputed slice - let info = info[0]; println!("Size: {} KB", info.size_bytes() / 1024); println!("Version: 0x{:x}", info.version()); println!("Type: 0x{:x}", info.type_()); } Err(e) => println!("Failed to get title info: {}", e), } + match selected_title.get_product_code() { + Ok(code) => println!("Product code: \"{code}\""), + Err(e) => println!("Failed to get product code: {}", e), + } println!("\x1b[26;0HPress START to exit"); if use_nand { diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs index 89cc19a..c540a05 100644 --- a/ctru-rs/src/services/am.rs +++ b/ctru-rs/src/services/am.rs @@ -1,5 +1,7 @@ use crate::error::ResultCode; use crate::services::fs::FsMediaType; +use std::marker::PhantomData; +use std::mem::MaybeUninit; #[derive(Copy, Clone, Debug)] #[repr(C)] @@ -29,6 +31,46 @@ impl TitleInfo { } } +pub struct Title<'a> { + id: u64, + mediatype: FsMediaType, + _am: PhantomData<&'a Am>, +} + +impl<'a> Title<'a> { + pub fn id(&self) -> u64 { + self.id + } + + pub fn get_product_code(&self) -> crate::Result { + let mut buf: [u8; 16] = [0; 16]; + + unsafe { + ResultCode(ctru_sys::AM_GetTitleProductCode( + self.mediatype as u32, + self.id, + buf.as_mut_ptr(), + ))?; + } + Ok(String::from_utf8_lossy(&buf).to_string()) + } + + pub fn get_title_info(&self) -> crate::Result { + let mut info = MaybeUninit::zeroed(); + + unsafe { + ResultCode(ctru_sys::AM_GetTitleInfo( + self.mediatype as u32, + 1, + &mut self.id.clone(), + info.as_mut_ptr() as _, + ))?; + + Ok(info.assume_init()) + } + } +} + pub struct Am(()); impl Am { @@ -47,7 +89,7 @@ impl Am { } } - pub fn get_title_list(&self, mediatype: FsMediaType) -> crate::Result> { + pub fn get_title_list(&self, mediatype: FsMediaType) -> crate::Result> { let count = self.get_title_count(mediatype)?; let mut buf = Vec::with_capacity(count as usize); let mut read_amount = 0; @@ -61,26 +103,14 @@ impl Am { buf.set_len(read_amount as usize); } - Ok(buf) - } - - pub fn get_title_info( - &self, - mediatype: FsMediaType, - id_list: &mut [u64], - ) -> crate::Result> { - let mut info = Vec::with_capacity(id_list.len()); - unsafe { - ResultCode(ctru_sys::AM_GetTitleInfo( - mediatype as u32, - id_list.len() as u32, - id_list.as_mut_ptr(), - info.as_mut_ptr() as _, - ))?; - - info.set_len(id_list.len()); - } - Ok(info) + Ok(buf + .into_iter() + .map(|id| Title { + id, + mediatype, + _am: PhantomData, + }) + .collect()) } } From 9b8f4239a7640bd9aa719ddcbe8bbcbea2e0a135 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Fri, 3 Mar 2023 17:18:31 +0100 Subject: [PATCH 023/116] Make TitleInfo into a AM_TitleEntry wrapper --- ctru-rs/examples/title-info.rs | 1 - ctru-rs/src/services/am.rs | 23 +++++------------------ 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs index f4231a0..1f5654f 100644 --- a/ctru-rs/examples/title-info.rs +++ b/ctru-rs/examples/title-info.rs @@ -84,7 +84,6 @@ fn main() { Ok(info) => { println!("Size: {} KB", info.size_bytes() / 1024); println!("Version: 0x{:x}", info.version()); - println!("Type: 0x{:x}", info.type_()); } Err(e) => println!("Failed to get title info: {}", e), } diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs index c540a05..5a52b99 100644 --- a/ctru-rs/src/services/am.rs +++ b/ctru-rs/src/services/am.rs @@ -4,30 +4,17 @@ use std::marker::PhantomData; use std::mem::MaybeUninit; #[derive(Copy, Clone, Debug)] -#[repr(C)] -pub struct TitleInfo { - id: u64, - size: u64, - version: u16, - pad: u16, - type_: u32, -} - -// Make sure TitleInfo is correct size -const _TITLEINFO_SIZE_CHECK: [u8; 0x18] = [0; std::mem::size_of::()]; - +#[repr(transparent)] +pub struct TitleInfo(ctru_sys::AM_TitleEntry); impl TitleInfo { pub fn id(&self) -> u64 { - self.id + self.0.titleID } pub fn size_bytes(&self) -> u64 { - self.size + self.0.size } pub fn version(&self) -> u16 { - self.version - } - pub fn type_(&self) -> u32 { - self.type_ + self.0.version } } From b6fec34b817777a4d6a0fd80a2fc09f0036b4c46 Mon Sep 17 00:00:00 2001 From: Maccraft123 Date: Fri, 3 Mar 2023 17:18:42 +0100 Subject: [PATCH 024/116] Use vec! macro to avoid setting vec length manually --- ctru-rs/src/services/am.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ctru-rs/src/services/am.rs b/ctru-rs/src/services/am.rs index 5a52b99..100b5fa 100644 --- a/ctru-rs/src/services/am.rs +++ b/ctru-rs/src/services/am.rs @@ -78,7 +78,7 @@ impl Am { pub fn get_title_list(&self, mediatype: FsMediaType) -> crate::Result> { let count = self.get_title_count(mediatype)?; - let mut buf = Vec::with_capacity(count as usize); + let mut buf = vec![0; count as usize]; let mut read_amount = 0; unsafe { ResultCode(ctru_sys::AM_GetTitleList( @@ -87,8 +87,6 @@ impl Am { count, buf.as_mut_ptr(), ))?; - - buf.set_len(read_amount as usize); } Ok(buf .into_iter() From eb7932a501e8cf42d149f59f29cf59086015ed43 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Fri, 17 Mar 2023 13:27:44 -0400 Subject: [PATCH 025/116] Initial pass of version checking in ctru-sys --- ctru-sys/Cargo.toml | 7 +++-- ctru-sys/build.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/ctru-sys/Cargo.toml b/ctru-sys/Cargo.toml index 6367b13..f7bf67b 100644 --- a/ctru-sys/Cargo.toml +++ b/ctru-sys/Cargo.toml @@ -1,10 +1,13 @@ [package] name = "ctru-sys" -version = "0.4.1" +version = "21.2.0+2.1.2-1" authors = ["Ronald Kinard "] -license = "https://en.wikipedia.org/wiki/Zlib_License" +license = "Zlib" links = "ctru" edition = "2021" [dependencies] libc = { version = "0.2.121", default-features = false } + +[build-dependencies] +which = "4.4.0" diff --git a/ctru-sys/build.rs b/ctru-sys/build.rs index 90d97e6..e6c17f2 100644 --- a/ctru-sys/build.rs +++ b/ctru-sys/build.rs @@ -1,4 +1,6 @@ use std::env; +use std::error::Error; +use std::process::{Command, Output, Stdio}; fn main() { let dkp_path = env::var("DEVKITPRO").unwrap(); @@ -14,4 +16,69 @@ fn main() { _ => "ctru", } ); + + match check_libctru_version() { + Ok((maj, min, patch)) => { + eprintln!("using libctru version {maj}.{min}.{patch}"); + + // These are accessible by the crate during build with `env!()`. + // We might consider exporting some public constants or something. + println!("cargo:rustc-env=LIBCTRU_VERSION={maj}.{min}.{patch}"); + println!("cargo:rustc-env=LIBCTRU_MAJOR={maj}"); + println!("cargo:rustc-env=LIBCTRU_MINOR={min}"); + println!("cargo:rustc-env=LIBCTRU_PATCH={patch}"); + + // It would be nice if we could rerun-if-changed on libctru itself, + // maybe we can write a file to OUT_DIR and check that file? + } + Err(err) => println!("cargo:warning=failed to check libctru version: {err}"), + } +} + +fn parse_version(version: &str) -> Result<(String, String, String), &str> { + let versions: Vec<_> = version + .split(|c| c == '.' || c == '-') + .map(String::from) + .collect(); + + match &versions[..] { + [major, minor, patch, _build] => Ok((major.clone(), minor.clone(), patch.clone())), + _ => Err("unexpected number of version segments"), + } +} + +fn check_libctru_version() -> Result<(String, String, String), Box> { + let pacman = which::which("dkp-pacman").or_else(|_| which::which("pacman"))?; + + let Output { stdout, .. } = Command::new(pacman) + .args(["--query", "libctru"]) + .stderr(Stdio::inherit()) + .output()?; + + let output_str = String::from_utf8_lossy(&stdout); + + let (_pkg, lib_version) = output_str + .split_once(char::is_whitespace) + .ok_or("unexpected output format")?; + + let cargo_pkg_version = env::var("CARGO_PKG_VERSION").unwrap(); + let (_, crate_built_version) = cargo_pkg_version + .split_once('+') + .expect("crate version should have '+' delimeter"); + + let (lib_major, lib_minor, lib_patch) = parse_version(lib_version)?; + let (crate_supported_major, crate_supported_minor, _crate_supported_patch) = + parse_version(crate_built_version)?; + + // TODO: does == comparison make sense, or should we use >= or something? + if crate_supported_major != lib_major || crate_supported_minor != lib_minor { + // TODO: should this be a panic (i.e. induce build failure)? Maybe only for major version? + + return Err(format!( + "libctru version is {lib_major}.{lib_minor}.{lib_patch}, \ + but this crate only supports {crate_supported_major}.{crate_supported_minor}.x" + ))?; + } + + Ok((lib_major, lib_minor, lib_patch)) } From 03f4244ece9d3966ac685e9b52d377e5792330d0 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Fri, 17 Mar 2023 13:33:24 -0400 Subject: [PATCH 026/116] Fix ctru dependency version number --- ctru-rs/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ctru-rs/Cargo.toml b/ctru-rs/Cargo.toml index 94ff0bb..d5bdff6 100644 --- a/ctru-rs/Cargo.toml +++ b/ctru-rs/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ["Ronald Kinard "] description = "A safe wrapper around smealum's ctrulib." -license = "https://en.wikipedia.org/wiki/Zlib_License" +license = "Zlib" name = "ctru-rs" version = "0.7.1" edition = "2021" @@ -13,7 +13,7 @@ name = "ctru" [dependencies] cfg-if = "1.0" -ctru-sys = { path = "../ctru-sys", version = "0.4" } +ctru-sys = { path = "../ctru-sys", version = "21.2" } const-zero = "0.1.0" linker-fix-3ds = { git = "https://github.com/rust3ds/rust-linker-fix-3ds.git" } pthread-3ds = { git = "https://github.com/rust3ds/pthread-3ds.git" } From 4b7c7fc2d71ac77be52af07c9f1121953e045bef Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Mon, 20 Mar 2023 14:03:47 -0400 Subject: [PATCH 027/116] Output version number in bindgen.sh Also bump doxgyen-rs to crates.io version, and mark bindings.rs as generated for Github. --- ctru-sys/bindgen.sh | 33 +++- ctru-sys/docstring-to-rustdoc/Cargo.toml | 2 +- ctru-sys/src/.gitattributes | 1 + ctru-sys/src/bindings.rs | 236 +++++++++++------------ 4 files changed, 148 insertions(+), 124 deletions(-) create mode 100644 ctru-sys/src/.gitattributes diff --git a/ctru-sys/bindgen.sh b/ctru-sys/bindgen.sh index edf27b7..b3ff55a 100755 --- a/ctru-sys/bindgen.sh +++ b/ctru-sys/bindgen.sh @@ -1,7 +1,26 @@ #!/usr/bin/env bash -set -euxo pipefail +set -euo pipefail +echo "Determining libctru version..." +pacman=dkp-pacman +if ! command -v $pacman &>/dev/null; then + pacman=pacman + if ! command -q $pacman &>/dev/null; then + echo >&2 "ERROR: Unable to automatically determine libctru version!" + exit 1 + fi +fi + +LIBCTRU_VERSION="$($pacman -Qi libctru | grep Version | cut -d: -f 2 | tr -d ' ')" + +CTRU_SYS_VERSION="$( + printf '%s' "$LIBCTRU_VERSION" | + cut -d- -f1 | + sed -E 's/^([0-9]+)\.([0-9.]+)$/\1\2/' +)" + +echo "Generating bindings.rs..." bindgen "$DEVKITPRO/libctru/include/3ds.h" \ --rust-target nightly \ --use-core \ @@ -18,9 +37,9 @@ bindgen "$DEVKITPRO/libctru/include/3ds.h" \ --with-derive-default \ -- \ --target=arm-none-eabi \ - --sysroot=$DEVKITARM/arm-none-eabi \ - -isystem$DEVKITARM/arm-none-eabi/include \ - -I$DEVKITPRO/libctru/include \ + --sysroot="$DEVKITARM/arm-none-eabi" \ + -isystem"$DEVKITARM/arm-none-eabi/include" \ + -I"$DEVKITPRO/libctru/include" \ -mfloat-abi=hard \ -march=armv6k \ -mtune=mpcore \ @@ -29,6 +48,10 @@ bindgen "$DEVKITPRO/libctru/include/3ds.h" \ -D__3DS__ \ > src/bindings.rs -cargo run --package docstring-to-rustdoc -- src/bindings.rs +echo "Updating docstrings in bindings.rs..." +cargo run --quiet --package docstring-to-rustdoc -- src/bindings.rs +echo "Formatting generated files..." cargo fmt --all + +echo "Generated bindings for ctru-sys version \"${CTRU_SYS_VERSION}.x+${LIBCTRU_VERSION}\"" diff --git a/ctru-sys/docstring-to-rustdoc/Cargo.toml b/ctru-sys/docstring-to-rustdoc/Cargo.toml index 9b38256..745f39e 100644 --- a/ctru-sys/docstring-to-rustdoc/Cargo.toml +++ b/ctru-sys/docstring-to-rustdoc/Cargo.toml @@ -4,4 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -doxygen-rs = { git = "https://github.com/Techie-Pi/doxygen-rs.git", version = "0.2.2", rev = "573f483ad63ab4662650961998d3ed093a703983" } \ No newline at end of file +doxygen-rs = "0.3.1" diff --git a/ctru-sys/src/.gitattributes b/ctru-sys/src/.gitattributes new file mode 100644 index 0000000..8a5e387 --- /dev/null +++ b/ctru-sys/src/.gitattributes @@ -0,0 +1 @@ +bindings.rs linguist-generated=true diff --git a/ctru-sys/src/bindings.rs b/ctru-sys/src/bindings.rs index 1401ccc..c33ae96 100644 --- a/ctru-sys/src/bindings.rs +++ b/ctru-sys/src/bindings.rs @@ -1700,10 +1700,10 @@ pub struct MemInfo { #[doc = "Size."] #[doc = ""] pub size: u32_, - #[doc = "Memory permissions. See [`MemPerm`]"] + #[doc = "Memory permissions. See [`MemPerm`]"] #[doc = ""] pub perm: u32_, - #[doc = "Memory state. See [`MemState`]"] + #[doc = "Memory state. See [`MemState`]"] #[doc = ""] pub state: u32_, } @@ -1792,7 +1792,7 @@ pub const RESLIMIT_SEMAPHORE: ResourceLimitType = 5; #[doc = ""] pub const RESLIMIT_TIMER: ResourceLimitType = 6; -#[doc = "Number of shared memory objects, see [`svcCreateMemoryBlock`]"] +#[doc = "Number of shared memory objects, see [`svcCreateMemoryBlock`]"] #[doc = ""] pub const RESLIMIT_SHAREDMEMORY: ResourceLimitType = 7; @@ -1844,11 +1844,11 @@ pub const DMACFG_SRC_IS_DEVICE: _bindgen_ty_5 = 1; #[doc = ""] pub const DMACFG_DST_IS_DEVICE: _bindgen_ty_5 = 2; -#[doc = "Make [`svcStartInterProcessDma`] wait for the channel to be unlocked."] +#[doc = "Make [`svcStartInterProcessDma`] wait for the channel to be unlocked."] #[doc = ""] pub const DMACFG_WAIT_AVAILABLE: _bindgen_ty_5 = 4; -#[doc = "Keep the channel locked after the transfer. Required for [`svcRestartDma`]"] +#[doc = "Keep the channel locked after the transfer. Required for [`svcRestartDma`]"] #[doc = ""] pub const DMACFG_KEEP_LOCKED: _bindgen_ty_5 = 8; @@ -1860,7 +1860,7 @@ pub const DMACFG_USE_SRC_CONFIG: _bindgen_ty_5 = 64; #[doc = ""] pub const DMACFG_USE_DST_CONFIG: _bindgen_ty_5 = 128; -#[doc = "Configuration flags for [`DmaConfig`]"] +#[doc = "Configuration flags for [`DmaConfig`]"] #[doc = ""] pub type _bindgen_ty_5 = ::libc::c_uint; @@ -1872,7 +1872,7 @@ pub const DMARST_UNLOCK: _bindgen_ty_6 = 1; #[doc = ""] pub const DMARST_RESUME_DEVICE: _bindgen_ty_6 = 2; -#[doc = "Configuration flags for [`svcRestartDma`]"] +#[doc = "Configuration flags for [`svcRestartDma`]"] #[doc = ""] pub type _bindgen_ty_6 = ::libc::c_uint; @@ -1900,7 +1900,7 @@ pub struct DmaDeviceConfig { #[doc = ""] pub transferStride: s16, } -#[doc = "Configuration stucture for [`svcStartInterProcessDma`]"] +#[doc = "Configuration stucture for [`svcStartInterProcessDma`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -1915,10 +1915,10 @@ pub struct DmaConfig { #[doc = ""] pub flags: u8_, pub _padding: u8_, - #[doc = "Source device configuration, read if [`DMACFG_SRC_IS_DEVICE`] and/or [`DMACFG_USE_SRC_CONFIG`] are set."] + #[doc = "Source device configuration, read if [`DMACFG_SRC_IS_DEVICE`] and/or [`DMACFG_USE_SRC_CONFIG`] are set."] #[doc = ""] pub srcCfg: DmaDeviceConfig, - #[doc = "Destination device configuration, read if [`DMACFG_SRC_IS_DEVICE`] and/or [`DMACFG_USE_SRC_CONFIG`] are set."] + #[doc = "Destination device configuration, read if [`DMACFG_SRC_IS_DEVICE`] and/or [`DMACFG_USE_SRC_CONFIG`] are set."] #[doc = ""] pub dstCfg: DmaDeviceConfig, } @@ -1958,7 +1958,7 @@ pub const PERFCOUNTEROP_SET_EVENT: PerfCounterOperation = 7; #[doc = ""] pub const PERFCOUNTEROP_SET_VIRTUAL_COUNTER_ENABLED: PerfCounterOperation = 8; -#[doc = "Operations for [`svcControlPerformanceCounter`]"] +#[doc = "Operations for [`svcControlPerformanceCounter`]"] #[doc = ""] pub type PerfCounterOperation = ::libc::c_uint; @@ -2090,11 +2090,11 @@ pub struct AttachProcessEvent { #[doc = ""] pub const EXITPROCESS_EVENT_EXIT: ExitProcessEventReason = 0; -#[doc = "Process has been terminated by [`svcTerminateProcess`]"] +#[doc = "Process has been terminated by [`svcTerminateProcess`]"] #[doc = ""] pub const EXITPROCESS_EVENT_TERMINATE: ExitProcessEventReason = 1; -#[doc = "Process has been terminated by [`svcTerminateDebugProcess`]"] +#[doc = "Process has been terminated by [`svcTerminateDebugProcess`]"] #[doc = ""] pub const EXITPROCESS_EVENT_DEBUG_TERMINATE: ExitProcessEventReason = 2; @@ -2107,7 +2107,7 @@ pub type ExitProcessEventReason = ::libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExitProcessEvent { - #[doc = "Reason for exiting. See [`ExitProcessEventReason`]"] + #[doc = "Reason for exiting. See [`ExitProcessEventReason`]"] #[doc = ""] pub reason: ExitProcessEventReason, } @@ -2147,7 +2147,7 @@ pub const EXITTHREAD_EVENT_TERMINATE: ExitThreadEventReason = 1; #[doc = ""] pub const EXITTHREAD_EVENT_EXIT_PROCESS: ExitThreadEventReason = 2; -#[doc = "Process has been terminated by [`svcTerminateProcess`]"] +#[doc = "Process has been terminated by [`svcTerminateProcess`]"] #[doc = ""] pub const EXITTHREAD_EVENT_TERMINATE_PROCESS: ExitThreadEventReason = 3; @@ -2160,7 +2160,7 @@ pub type ExitThreadEventReason = ::libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExitThreadEvent { - #[doc = "Reason for exiting. See [`ExitThreadEventReason`]"] + #[doc = "Reason for exiting. See [`ExitThreadEventReason`]"] #[doc = ""] pub reason: ExitThreadEventReason, } @@ -2246,7 +2246,7 @@ pub struct FaultExceptionEvent { #[doc = ""] pub fault_information: u32_, } -#[doc = "See [`SVC_STOP_POINT`]"] +#[doc = "See [`SVC_STOP_POINT`]"] #[doc = ""] pub const STOPPOINT_SVC_FF: StopPointType = 0; @@ -2267,7 +2267,7 @@ pub type StopPointType = ::libc::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct StopPointExceptionEvent { - #[doc = "Stop point type, see [`StopPointType`]"] + #[doc = "Stop point type, see [`StopPointType`]"] #[doc = ""] pub type_: StopPointType, #[doc = "FAR for Watchpoints, otherwise 0."] @@ -2283,12 +2283,12 @@ impl Default for StopPointExceptionEvent { } } } -#[doc = "Event relating to [`svcBreak`]"] +#[doc = "Event relating to [`svcBreak`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct UserBreakExceptionEvent { - #[doc = "User break type, see [`UserBreakType`]"] + #[doc = "User break type, see [`UserBreakType`]"] #[doc = ""] pub type_: UserBreakType, #[doc = "For LOAD_RO and UNLOAD_RO."] @@ -2307,12 +2307,12 @@ impl Default for UserBreakExceptionEvent { } } } -#[doc = "Event relating to [`svcBreakDebugProcess`]"] +#[doc = "Event relating to [`svcBreakDebugProcess`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] pub struct DebuggerBreakExceptionEvent { - #[doc = "IDs of the attached process's threads that were running on each core at the time of the [`svcBreakDebugProcess`] call, or -1 (only the first 2 values are meaningful on O3DS)."] + #[doc = "IDs of the attached process's threads that were running on each core at the time of the [`svcBreakDebugProcess`] call, or -1 (only the first 2 values are meaningful on O3DS)."] #[doc = ""] pub thread_ids: [s32; 4usize], } @@ -2321,7 +2321,7 @@ pub struct DebuggerBreakExceptionEvent { #[repr(C)] #[derive(Copy, Clone)] pub struct ExceptionEvent { - #[doc = "Type of event. See [`ExceptionEventType`]"] + #[doc = "Type of event. See [`ExceptionEventType`]"] #[doc = ""] pub type_: ExceptionEventType, #[doc = "Address of the exception."] @@ -2407,10 +2407,10 @@ pub struct MapEvent { #[doc = "Mapped size."] #[doc = ""] pub mapped_size: u32_, - #[doc = "Memory permissions. See [`MemPerm`]"] + #[doc = "Memory permissions. See [`MemPerm`]"] #[doc = ""] pub memperm: MemPerm, - #[doc = "Memory state. See [`MemState`]"] + #[doc = "Memory state. See [`MemState`]"] #[doc = ""] pub memstate: MemState, } @@ -2484,13 +2484,13 @@ pub type DebugEventType = ::libc::c_uint; #[repr(C)] #[derive(Copy, Clone)] pub struct DebugEventInfo { - #[doc = "Type of event. See [`DebugEventType`]"] + #[doc = "Type of event. See [`DebugEventType`]"] #[doc = ""] pub type_: DebugEventType, #[doc = "ID of the thread."] #[doc = ""] pub thread_id: u32_, - #[doc = "Flags. Bit0 means that [`svcContinueDebugEvent`] needs to be called for this event (except for EXIT PROCESS events, where this flag is disregarded)."] + #[doc = "Flags. Bit0 means that [`svcContinueDebugEvent`] needs to be called for this event (except for EXIT PROCESS events, where this flag is disregarded)."] #[doc = ""] pub flags: u32_, #[doc = "Always 0."] @@ -2547,27 +2547,27 @@ impl Default for DebugEventInfo { } } } -#[doc = "Inhibit user-defined CPU exception handlers (including watchpoints and breakpoints, regardless of any [`svcKernelSetState`] call)."] +#[doc = "Inhibit user-defined CPU exception handlers (including watchpoints and breakpoints, regardless of any [`svcKernelSetState`] call)."] #[doc = ""] pub const DBG_INHIBIT_USER_CPU_EXCEPTION_HANDLERS: DebugFlags = 1; -#[doc = "Signal fault exception events. See [`FaultExceptionEvent`]"] +#[doc = "Signal fault exception events. See [`FaultExceptionEvent`]"] #[doc = ""] pub const DBG_SIGNAL_FAULT_EXCEPTION_EVENTS: DebugFlags = 2; -#[doc = "Signal schedule in/out events. See [`ScheduleInOutEvent`]"] +#[doc = "Signal schedule in/out events. See [`ScheduleInOutEvent`]"] #[doc = ""] pub const DBG_SIGNAL_SCHEDULE_EVENTS: DebugFlags = 4; -#[doc = "Signal syscall in/out events. See [`SyscallInOutEvent`]"] +#[doc = "Signal syscall in/out events. See [`SyscallInOutEvent`]"] #[doc = ""] pub const DBG_SIGNAL_SYSCALL_EVENTS: DebugFlags = 8; -#[doc = "Signal map events. See [`MapEvent`]"] +#[doc = "Signal map events. See [`MapEvent`]"] #[doc = ""] pub const DBG_SIGNAL_MAP_EVENTS: DebugFlags = 16; -#[doc = "Debug flags for an attached process, set by [`svcContinueDebugEvent`]"] +#[doc = "Debug flags for an attached process, set by [`svcContinueDebugEvent`]"] #[doc = ""] pub type DebugFlags = ::libc::c_uint; @@ -2618,7 +2618,7 @@ pub const THREADCONTEXT_CONTROL_FPU_REGS: ThreadContextControlFlags = 12; #[doc = ""] pub const THREADCONTEXT_CONTROL_ALL: ThreadContextControlFlags = 15; -#[doc = "Control flags for [`svcGetDebugThreadContext`] and [`svcSetDebugThreadContext`]"] +#[doc = "Control flags for [`svcGetDebugThreadContext`] and [`svcSetDebugThreadContext`]"] #[doc = ""] pub type ThreadContextControlFlags = ::libc::c_uint; @@ -2638,7 +2638,7 @@ pub const DBGTHREAD_PARAMETER_CPU_IDEAL: DebugThreadParameter = 2; #[doc = ""] pub const DBGTHREAD_PARAMETER_CPU_CREATOR: DebugThreadParameter = 3; -#[doc = "Thread parameter field for [`svcGetDebugThreadParameter`]"] +#[doc = "Thread parameter field for [`svcGetDebugThreadParameter`]"] #[doc = ""] pub type DebugThreadParameter = ::libc::c_uint; @@ -2952,7 +2952,7 @@ extern "C" { pub fn svcOpenThread(thread: *mut Handle, process: Handle, threadId: u32_) -> Result; } extern "C" { - #[doc = "Exits the current thread.\n\n This will trigger a state change and hence release all [`svcWaitSynchronization`] operations.\n It means that you can join a thread by calling ``` svcWaitSynchronization(threadHandle,yourtimeout); ```"] + #[doc = "Exits the current thread.\n\n This will trigger a state change and hence release all [`svcWaitSynchronization`] operations.\n It means that you can join a thread by calling ``` svcWaitSynchronization(threadHandle,yourtimeout);"] #[doc = ""] pub fn svcExitThread() -> !; } @@ -3749,22 +3749,22 @@ pub struct ExHeader_CodeSetInfo { #[doc = "Title name"] #[doc = ""] pub name: [::libc::c_char; 8usize], - #[doc = "System info flags, see [`ExHeader_SystemInfoFlags`]"] + #[doc = "System info flags, see [`ExHeader_SystemInfoFlags`]"] #[doc = ""] pub flags: ExHeader_SystemInfoFlags, - #[doc = ".text section info, see [`ExHeader_CodeSectionInfo`]"] + #[doc = ".text section info, see [`ExHeader_CodeSectionInfo`]"] #[doc = ""] pub text: ExHeader_CodeSectionInfo, #[doc = "Stack size"] #[doc = ""] pub stack_size: u32_, - #[doc = ".rodata section info, see [`ExHeader_CodeSectionInfo`]"] + #[doc = ".rodata section info, see [`ExHeader_CodeSectionInfo`]"] #[doc = ""] pub rodata: ExHeader_CodeSectionInfo, #[doc = "Reserved"] #[doc = ""] pub reserved: u32_, - #[doc = ".data section info, see [`ExHeader_CodeSectionInfo`]"] + #[doc = ".data section info, see [`ExHeader_CodeSectionInfo`]"] #[doc = ""] pub data: ExHeader_CodeSectionInfo, #[doc = ".bss section size"] @@ -3800,13 +3800,13 @@ impl Default for ExHeader_SystemInfo { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExHeader_SystemControlInfo { - #[doc = "Code set info, see [`ExHeader_CodeSetInfo`]"] + #[doc = "Code set info, see [`ExHeader_CodeSetInfo`]"] #[doc = ""] pub codeset_info: ExHeader_CodeSetInfo, #[doc = "Title IDs of the titles that this program depends on"] #[doc = ""] pub dependencies: [u64_; 48usize], - #[doc = "System info, see [`ExHeader_SystemInfo`]"] + #[doc = "System info, see [`ExHeader_SystemInfo`]"] #[doc = ""] pub system_info: ExHeader_SystemInfo, } @@ -4064,13 +4064,13 @@ pub struct ExHeader_Arm11SystemLocalCapabilities { #[doc = "Title ID"] #[doc = ""] pub title_id: u64_, - #[doc = "Core info, see [`ExHeader_Arm11CoreInfo`]"] + #[doc = "Core info, see [`ExHeader_Arm11CoreInfo`]"] #[doc = ""] pub core_info: ExHeader_Arm11CoreInfo, #[doc = "Resource limit descriptors, only \"CpuTime\" (first byte) sems to be used"] #[doc = ""] pub reslimits: [u16_; 16usize], - #[doc = "Storage info, see [`ExHeader_Arm11StorageInfo`]"] + #[doc = "Storage info, see [`ExHeader_Arm11StorageInfo`]"] #[doc = ""] pub storage_info: ExHeader_Arm11StorageInfo, #[doc = "List of the services the title has access to. Limited to 32 prior to system version 9.3"] @@ -4079,7 +4079,7 @@ pub struct ExHeader_Arm11SystemLocalCapabilities { #[doc = "Reserved"] #[doc = ""] pub reserved: [u8_; 15usize], - #[doc = "Resource limit category, see [`ExHeader_Arm11SystemLocalCapabilities`]"] + #[doc = "Resource limit category, see [`ExHeader_Arm11SystemLocalCapabilities`]"] #[doc = ""] pub reslimit_category: ResourceLimitCategory, } @@ -4121,13 +4121,13 @@ pub struct ExHeader_Arm9AccessControl { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExHeader_AccessControlInfo { - #[doc = "ARM11 system-local capabilities, see [`ExHeader_Arm11SystemLocalCapabilities`]"] + #[doc = "ARM11 system-local capabilities, see [`ExHeader_Arm11SystemLocalCapabilities`]"] #[doc = ""] pub local_caps: ExHeader_Arm11SystemLocalCapabilities, - #[doc = "ARM11 kernel capabilities, see [`ExHeader_Arm11SystemLocalCapabilities`]"] + #[doc = "ARM11 kernel capabilities, see [`ExHeader_Arm11SystemLocalCapabilities`]"] #[doc = ""] pub kernel_caps: ExHeader_Arm11KernelCapabilities, - #[doc = "ARM9 access control, see [`ExHeader_Arm9AccessControl`]"] + #[doc = "ARM9 access control, see [`ExHeader_Arm9AccessControl`]"] #[doc = ""] pub access_control: ExHeader_Arm9AccessControl, } @@ -4145,10 +4145,10 @@ impl Default for ExHeader_AccessControlInfo { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExHeader_Info { - #[doc = "System control info, see [`ExHeader_SystemControlInfo`]"] + #[doc = "System control info, see [`ExHeader_SystemControlInfo`]"] #[doc = ""] pub sci: ExHeader_SystemControlInfo, - #[doc = "Access control info, see [`ExHeader_AccessControlInfo`]"] + #[doc = "Access control info, see [`ExHeader_AccessControlInfo`]"] #[doc = ""] pub aci: ExHeader_AccessControlInfo, } @@ -4172,7 +4172,7 @@ pub struct ExHeader_AccessDescriptor { #[doc = "The modulus used for the above signature, with 65537 as public exponent"] #[doc = ""] pub ncchModulus: [u8_; 256usize], - #[doc = "This is compared for equality with the first ACI by Process9, see [`ExHeader_AccessControlInfo`]"] + #[doc = "This is compared for equality with the first ACI by Process9, see [`ExHeader_AccessControlInfo`]"] #[doc = ""] pub acli: ExHeader_AccessControlInfo, } @@ -4190,10 +4190,10 @@ impl Default for ExHeader_AccessDescriptor { #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExHeader { - #[doc = "Main extended header data, see [`ExHeader_Info`]"] + #[doc = "Main extended header data, see [`ExHeader_Info`]"] #[doc = ""] pub info: ExHeader_Info, - #[doc = "Access descriptor, see [`ExHeader_AccessDescriptor`]"] + #[doc = "Access descriptor, see [`ExHeader_AccessDescriptor`]"] #[doc = ""] pub access_descriptor: ExHeader_AccessDescriptor, } @@ -4513,19 +4513,19 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Throws (and logs) a system error with the given Result code.\n @param[in] failure Result code to throw.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_GENERIC`] and fills in the required data.\n\n This function \\em does fill in the address where this function was called from."] + #[doc = "Throws (and logs) a system error with the given Result code.\n @param[in] failure Result code to throw.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_GENERIC`] and fills in the required data.\n\n This function *does* fill in the address where this function was called from."] #[doc = ""] pub fn ERRF_ThrowResult(failure: Result) -> Result; } extern "C" { #[must_use] - #[doc = "Logs a system error with the given Result code.\n @param[in] failure Result code to log.\n\n Similar to [`ERRF_Throw`] except that it does not display anything on the screen,\n nor does it force the system to reboot.\n\n This function \\em does fill in the address where this function was called from."] + #[doc = "Logs a system error with the given Result code.\n @param[in] failure Result code to log.\n\n Similar to [`ERRF_Throw`] except that it does not display anything on the screen,\n nor does it force the system to reboot.\n\n This function *does* fill in the address where this function was called from."] #[doc = ""] pub fn ERRF_LogResult(failure: Result) -> Result; } extern "C" { #[must_use] - #[doc = "Throws a system error with the given Result code and message.\n @param[in] failure Result code to throw.\n @param[in] message The message to display.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_FAILURE`] and fills in the required data.\n\n This function does \\em not fill in the address where this function was called from because it\n would not be displayed."] + #[doc = "Throws a system error with the given Result code and message.\n @param[in] failure Result code to throw.\n @param[in] message The message to display.\n\n This calls [`ERRF_Throw`] with error type [`ERRF_ERRTYPE_FAILURE`] and fills in the required data.\n\n This function does *not* fill in the address where this function was called from because it\n would not be displayed."] #[doc = ""] pub fn ERRF_ThrowResultWithMessage(failure: Result, message: *const ::libc::c_char) -> Result; } @@ -4576,7 +4576,7 @@ pub struct osTimeRef_s { #[doc = "System ticks elapsed since boot when this structure was last updated"] #[doc = ""] pub value_tick: u64_, - #[doc = "System clock frequency in Hz adjusted using RTC measurements (usually around [`SYSCLOCK_ARM11)`]"] + #[doc = "System clock frequency in Hz adjusted using RTC measurements (usually around [`SYSCLOCK_ARM11)`]"] #[doc = ""] pub sysclock_hz: s64, #[doc = "Measured time drift of the system clock (according to the RTC) in milliseconds since the last update"] @@ -4767,13 +4767,13 @@ pub struct LightSemaphore { } extern "C" { #[must_use] - #[doc = "Function used to implement user-mode synchronization primitives.\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter\n @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Does *nothing* since val >= 0\n syncArbitrateAddress(&val,ARBITRATION_WAIT_IF_LESS_THAN,0);\n ``` @note Usage of this function entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Function used to implement user-mode synchronization primitives.\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter\n @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Does *nothing* since val >= 0\n syncArbitrateAddress(&val,ARBITRATION_WAIT_IF_LESS_THAN,0);\n *@note* Usage of this function entails an implicit Data Memory Barrier (dmb)."] #[doc = ""] pub fn syncArbitrateAddress(addr: *mut s32, type_: ArbitrationType, value: s32) -> Result; } extern "C" { #[must_use] - #[doc = "Function used to implement user-mode synchronization primitives (with timeout).\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter (must use [`ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT`] or [`ARBITRATION_DECREMENT_AND_WAIT_IF_LESS_THAN_TIMEOUT)\n`] @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Thread will wait for a signal or wake up after 10000000 nanoseconds because val < 1.\n syncArbitrateAddressWithTimeout(&val,ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT,1,10000000LL);\n ``` @note Usage of this function entails an implicit Data Memory Barrier (dmb)."] + #[doc = "Function used to implement user-mode synchronization primitives (with timeout).\n @param addr Pointer to a signed 32-bit value whose address will be used to identify waiting threads.\n @param type Type of action to be performed by the arbiter (must use [`ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT`] or [`ARBITRATION_DECREMENT_AND_WAIT_IF_LESS_THAN_TIMEOUT)\n`] @param value Number of threads to signal if using [`ARBITRATION_SIGNAL`] or the value used for comparison.\n\n This will perform an arbitration based on #type. The comparisons are done between #value and the value at the address #addr.\n\n ``` s32 val=0;\n // Thread will wait for a signal or wake up after 10000000 nanoseconds because val < 1.\n syncArbitrateAddressWithTimeout(&val,ARBITRATION_WAIT_IF_LESS_THAN_TIMEOUT,1,10000000LL);\n *@note* Usage of this function entails an implicit Data Memory Barrier (dmb)."] #[doc = ""] pub fn syncArbitrateAddressWithTimeout( addr: *mut s32, @@ -5310,7 +5310,7 @@ pub const GFX_RIGHT: gfx3dSide_t = 1; pub type gfx3dSide_t = ::libc::c_uint; extern "C" { - #[doc = "Initializes the LCD framebuffers with default parameters\n This is equivalent to calling: ``` gfxInit(GSP_BGR8_OES,GSP_BGR8_OES,false); ```"] + #[doc = "Initializes the LCD framebuffers with default parameters\n This is equivalent to calling: ``` gfxInit(GSP_BGR8_OES,GSP_BGR8_OES,false);"] #[doc = ""] pub fn gfxInitDefault(); } @@ -5389,12 +5389,12 @@ extern "C" { pub fn gfxConfigScreen(scr: gfxScreen_t, immediate: bool); } extern "C" { - #[doc = "Updates the configuration of both screens.\n @note This function is equivalent to: ``` gfxScreenSwapBuffers(GFX_TOP,true); gfxScreenSwapBuffers(GFX_BOTTOM,true); ```"] + #[doc = "Updates the configuration of both screens.\n @note This function is equivalent to: ``` gfxScreenSwapBuffers(GFX_TOP,true); gfxScreenSwapBuffers(GFX_BOTTOM,true);"] #[doc = ""] pub fn gfxSwapBuffers(); } extern "C" { - #[doc = "Same as [`gfxSwapBuffers`] (formerly different)."] + #[doc = "Same as [`gfxSwapBuffers`] (formerly different)."] #[doc = ""] pub fn gfxSwapBuffersGpu(); } @@ -5428,7 +5428,7 @@ impl Default for ConsoleFont { } } } -#[doc = "Console structure used to store the state of a console render context.\n\n Default values from consoleGetDefault();\n ``` PrintConsole defaultConsole =\n {\n \t//Font:\n \t{\n \t\t(u8*)default_font_bin, //font gfx\n \t\t0, //first ascii character in the set\n \t\t128, //number of characters in the font set\n\t},\n\t0,0, //cursorX cursorY\n\t0,0, //prevcursorX prevcursorY\n\t40, //console width\n\t30, //console height\n\t0, //window x\n\t0, //window y\n\t32, //window width\n\t24, //window height\n\t3, //tab size\n\t0, //font character offset\n\t0, //print callback\n\tfalse //console initialized\n };\n ```"] +#[doc = "Console structure used to store the state of a console render context.\n\n Default values from consoleGetDefault();\n ``` PrintConsole defaultConsole =\n {\n \t//Font:\n \t{\n \t\t(u8*)default_font_bin, //font gfx\n \t\t0, //first ascii character in the set\n \t\t128, //number of characters in the font set\n\t},\n\t0,0, //cursorX cursorY\n\t0,0, //prevcursorX prevcursorY\n\t40, //console width\n\t30, //console height\n\t0, //window x\n\t0, //window y\n\t32, //window width\n\t24, //window height\n\t3, //tab size\n\t0, //font character offset\n\t0, //print callback\n\tfalse //console initialized\n };\n"] #[doc = ""] #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -5947,52 +5947,52 @@ extern "C" { ) -> bool; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] + #[doc = "Convert a UTF-8 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] #[doc = ""] pub fn decode_utf8(out: *mut u32, in_: *const u8) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] + #[doc = "Convert a UTF-16 sequence into a UTF-32 codepoint\n\n @param[out] out Output codepoint\n @param[in] in Input sequence\n\n @returns number of input code units consumed\n @returns -1 for error"] #[doc = ""] pub fn decode_utf16(out: *mut u32, in_: *const u16) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 codepoint into a UTF-8 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out must be able to store 4 code units"] + #[doc = "Convert a UTF-32 codepoint into a UTF-8 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* must be able to store 4 code units"] #[doc = ""] pub fn encode_utf8(out: *mut u8, in_: u32) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 codepoint into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out must be able to store 2 code units"] + #[doc = "Convert a UTF-32 codepoint into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input codepoint\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* must be able to store 2 code units"] #[doc = ""] pub fn encode_utf16(out: *mut u16, in_: u32) -> isize; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-16 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-8 sequence into a UTF-16 sequence\n\n Fills the output buffer up to *len* code units.\n Returns the number of code units that the input would produce;\n if it returns greater than *len,* the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf8_to_utf16(out: *mut u16, in_: *const u8, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-8 sequence into a UTF-32 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-8 sequence into a UTF-32 sequence\n\n Fills the output buffer up to *len* code units.\n Returns the number of code units that the input would produce;\n if it returns greater than *len,* the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf8_to_utf32(out: *mut u32, in_: *const u8, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-8 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-16 sequence into a UTF-8 sequence\n\n Fills the output buffer up to *len* code units.\n Returns the number of code units that the input would produce;\n if it returns greater than *len,* the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf16_to_utf8(out: *mut u8, in_: *const u16, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-16 sequence into a UTF-32 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-16 sequence into a UTF-32 sequence\n\n Fills the output buffer up to *len* code units.\n Returns the number of code units that the input would produce;\n if it returns greater than *len,* the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf16_to_utf32(out: *mut u32, in_: *const u16, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 sequence into a UTF-8 sequence\n\n Fills the output buffer up to \\a len code units.\n Returns the number of code units that the input would produce;\n if it returns greater than \\a len, the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-32 sequence into a UTF-8 sequence\n\n Fills the output buffer up to *len* code units.\n Returns the number of code units that the input would produce;\n if it returns greater than *len,* the output has been\n truncated.\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf32_to_utf8(out: *mut u8, in_: *const u32, len: usize) -> isize; } extern "C" { - #[doc = "Convert a UTF-32 sequence into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note \\a out is not null-terminated"] + #[doc = "Convert a UTF-32 sequence into a UTF-16 sequence\n\n @param[out] out Output sequence\n @param[in] in Input sequence (null-terminated)\n @param[in] len Output length\n\n @returns number of output code units produced\n @returns -1 for error\n\n @note *out* is not null-terminated"] #[doc = ""] pub fn utf32_to_utf16(out: *mut u16, in_: *const u32, len: usize) -> isize; } @@ -8863,7 +8863,7 @@ extern "C" { pub fn aptShouldJumpToHome() -> bool; } extern "C" { - #[doc = "Returns true if there is an incoming HOME button press rejected by the policy set by [`aptSetHomeAllowed`] (use this to show a \"no HOME allowed\" icon)."] + #[doc = "Returns true if there is an incoming HOME button press rejected by the policy set by [`aptSetHomeAllowed`] (use this to show a \"no HOME allowed\" icon)."] #[doc = ""] pub fn aptCheckHomePressRejected() -> bool; } @@ -9448,7 +9448,7 @@ pub const INPUT_YUV422_BATCH: Y2RU_InputFormat = 4; #[doc = ""] pub type Y2RU_InputFormat = ::libc::c_uint; -#[doc = "32-bit RGBA8888. The alpha component is the 8-bit value set by [`Y2RU_SetAlpha`]"] +#[doc = "32-bit RGBA8888. The alpha component is the 8-bit value set by [`Y2RU_SetAlpha`]"] #[doc = ""] pub const OUTPUT_RGB_32: Y2RU_OutputFormat = 0; @@ -9456,7 +9456,7 @@ pub const OUTPUT_RGB_32: Y2RU_OutputFormat = 0; #[doc = ""] pub const OUTPUT_RGB_24: Y2RU_OutputFormat = 1; -#[doc = "16-bit RGBA5551. The alpha bit is the 7th bit of the alpha value set by [`Y2RU_SetAlpha`]"] +#[doc = "16-bit RGBA5551. The alpha bit is the 7th bit of the alpha value set by [`Y2RU_SetAlpha`]"] #[doc = ""] pub const OUTPUT_RGB_16_555: Y2RU_OutputFormat = 2; @@ -9500,7 +9500,7 @@ pub const BLOCK_8_BY_8: Y2RU_BlockAlignment = 1; #[doc = ""] pub type Y2RU_BlockAlignment = ::libc::c_uint; -#[doc = "Coefficients of the YUV->RGB conversion formula.\n\n A set of coefficients configuring the RGB to YUV conversion. Coefficients 0-4 are unsigned 2.8\n fixed pointer numbers representing entries on the conversion matrix, while coefficient 5-7 are\n signed 11.5 fixed point numbers added as offsets to the RGB result.\n\n The overall conversion process formula is:\n ``` R = trunc((rgb_Y * Y + r_V * V) + 0.75 + r_offset)\n G = trunc((rgb_Y * Y - g_U * U - g_V * V) + 0.75 + g_offset)\n B = trunc((rgb_Y * Y + b_U * U ) + 0.75 + b_offset)\n ```"] +#[doc = "Coefficients of the YUV->RGB conversion formula.\n\n A set of coefficients configuring the RGB to YUV conversion. Coefficients 0-4 are unsigned 2.8\n fixed pointer numbers representing entries on the conversion matrix, while coefficient 5-7 are\n signed 11.5 fixed point numbers added as offsets to the RGB result.\n\n The overall conversion process formula is:\n ``` R = trunc((rgb_Y * Y + r_V * V) + 0.75 + r_offset)\n G = trunc((rgb_Y * Y - g_U * U - g_V * V) + 0.75 + g_offset)\n B = trunc((rgb_Y * Y + b_U * U ) + 0.75 + b_offset)\n"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -9558,10 +9558,10 @@ pub type Y2RU_StandardCoefficient = ::libc::c_uint; pub struct Y2RU_ConversionParams { pub _bitfield_align_1: [u8; 0], pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>, - #[doc = "Value passed to [`Y2RU_SetInputLineWidth`]"] + #[doc = "Value passed to [`Y2RU_SetInputLineWidth`]"] #[doc = ""] pub input_line_width: s16, - #[doc = "Value passed to [`Y2RU_SetInputLines`]"] + #[doc = "Value passed to [`Y2RU_SetInputLines`]"] #[doc = ""] pub input_lines: s16, pub _bitfield_align_2: [u8; 0], @@ -9569,7 +9569,7 @@ pub struct Y2RU_ConversionParams { #[doc = "Unused."] #[doc = ""] pub unused: u8_, - #[doc = "Value passed to [`Y2RU_SetAlpha`]"] + #[doc = "Value passed to [`Y2RU_SetAlpha`]"] #[doc = ""] pub alpha: u16_, } @@ -9890,7 +9890,7 @@ extern "C" { } extern "C" { #[must_use] - #[doc = "Gets an handle to the end of conversion event.\n @param end_event Pointer to the event handle to be set to the end of conversion event. It isn't necessary to create or close this handle.\n\n To enable this event you have to use ``` ``` The event will be triggered when the corresponding interrupt is fired.\n\n @note It is recommended to use a timeout when waiting on this event, as it sometimes (but rarely) isn't triggered."] + #[doc = "Gets an handle to the end of conversion event.\n @param end_event Pointer to the event handle to be set to the end of conversion event. It isn't necessary to create or close this handle.\n\n To enable this event you have to use ``` *The* event will be triggered when the corresponding interrupt is fired.\n\n @note It is recommended to use a timeout when waiting on this event, as it sometimes (but rarely) isn't triggered."] #[doc = ""] pub fn Y2RU_GetTransferEndEvent(end_event: *mut Handle) -> Result; } @@ -10129,31 +10129,31 @@ pub const FLIP_REVERSE: CAMU_Flip = 3; #[doc = ""] pub type CAMU_Flip = ::libc::c_uint; -#[doc = "VGA size. (640x480)"] +#[doc = "VGA size. (640x480)"] #[doc = ""] pub const SIZE_VGA: CAMU_Size = 0; -#[doc = "QVGA size. (320x240)"] +#[doc = "QVGA size. (320x240)"] #[doc = ""] pub const SIZE_QVGA: CAMU_Size = 1; -#[doc = "QQVGA size. (160x120)"] +#[doc = "QQVGA size. (160x120)"] #[doc = ""] pub const SIZE_QQVGA: CAMU_Size = 2; -#[doc = "CIF size. (352x288)"] +#[doc = "CIF size. (352x288)"] #[doc = ""] pub const SIZE_CIF: CAMU_Size = 3; -#[doc = "QCIF size. (176x144)"] +#[doc = "QCIF size. (176x144)"] #[doc = ""] pub const SIZE_QCIF: CAMU_Size = 4; -#[doc = "DS LCD size. (256x192)"] +#[doc = "DS LCD size. (256x192)"] #[doc = ""] pub const SIZE_DS_LCD: CAMU_Size = 5; -#[doc = "DS LCD x4 size. (512x384)"] +#[doc = "DS LCD x4 size. (512x384)"] #[doc = ""] pub const SIZE_DS_LCDx4: CAMU_Size = 6; @@ -10356,7 +10356,7 @@ pub const CONTRAST_PATTERN_10: CAMU_Contrast = 9; #[doc = ""] pub const CONTRAST_PATTERN_11: CAMU_Contrast = 10; -#[doc = "Low contrast. (5)"] +#[doc = "Low contrast. (5)"] #[doc = ""] pub const CONTRAST_LOW: CAMU_Contrast = 4; @@ -10364,7 +10364,7 @@ pub const CONTRAST_LOW: CAMU_Contrast = 4; #[doc = ""] pub const CONTRAST_NORMAL: CAMU_Contrast = 5; -#[doc = "High contrast. (7)"] +#[doc = "High contrast. (7)"] #[doc = ""] pub const CONTRAST_HIGH: CAMU_Contrast = 6; @@ -10384,7 +10384,7 @@ pub const LENS_CORRECTION_ON_70: CAMU_LensCorrection = 1; #[doc = ""] pub const LENS_CORRECTION_ON_90: CAMU_LensCorrection = 2; -#[doc = "Dark lens correction. (OFF)"] +#[doc = "Dark lens correction. (OFF)"] #[doc = ""] pub const LENS_CORRECTION_DARK: CAMU_LensCorrection = 0; @@ -16072,7 +16072,7 @@ pub struct NIM_TitleConfig { #[doc = "Age for the HOME Menu parental controls"] #[doc = ""] pub ratingAge: u8_, - #[doc = "Media type, see [`FS_MediaType`] enum"] + #[doc = "Media type, see [`FS_MediaType`] enum"] #[doc = ""] pub mediaType: u8_, #[doc = "Padding"] @@ -16784,11 +16784,11 @@ pub struct PtmSleepConfig { #[doc = ""] pub const PTMNOTIFID_SLEEP_REQUESTED: _bindgen_ty_27 = 257; -#[doc = "The sleep request has been denied by [`PTMSYSM_ReplyToSleepQuery(true)`] (no ack required)."] +#[doc = "The sleep request has been denied by [`PTMSYSM_ReplyToSleepQuery(true)`] (no ack required)."] #[doc = ""] pub const PTMNOTIFID_SLEEP_DENIED: _bindgen_ty_27 = 258; -#[doc = "The sleep request has been allowed by [`PTMSYSM_ReplyToSleepQuery(false)`] (ack = 1)."] +#[doc = "The sleep request has been allowed by [`PTMSYSM_ReplyToSleepQuery(false)`] (ack = 1)."] #[doc = ""] pub const PTMNOTIFID_SLEEP_ALLOWED: _bindgen_ty_27 = 259; @@ -17012,10 +17012,10 @@ pub struct PXIDEV_SPIBuffer { #[doc = "Data size."] #[doc = ""] pub size: u32_, - #[doc = "Transfer options. See [`pxiDevMakeTransferOption`]"] + #[doc = "Transfer options. See [`pxiDevMakeTransferOption`]"] #[doc = ""] pub transferOption: u8_, - #[doc = "Wait operation. See [`pxiDevMakeWaitOperation`]"] + #[doc = "Wait operation. See [`pxiDevMakeWaitOperation`]"] #[doc = ""] pub waitOperation: u64_, } @@ -17862,11 +17862,11 @@ pub struct ip_mreq { #[doc = ""] pub const NETOPT_MAC_ADDRESS: NetworkOpt = 4100; -#[doc = "The ARP table [`SOCU_ARPTableEntry`]"] +#[doc = "The ARP table [`SOCU_ARPTableEntry`]"] #[doc = ""] pub const NETOPT_ARP_TABLE: NetworkOpt = 12290; -#[doc = "The current IP setup [`SOCU_IPInfo`]"] +#[doc = "The current IP setup [`SOCU_IPInfo`]"] #[doc = ""] pub const NETOPT_IP_INFO: NetworkOpt = 16387; @@ -17874,7 +17874,7 @@ pub const NETOPT_IP_INFO: NetworkOpt = 16387; #[doc = ""] pub const NETOPT_IP_MTU: NetworkOpt = 16388; -#[doc = "The routing table [`SOCU_RoutingTableEntry`]"] +#[doc = "The routing table [`SOCU_RoutingTableEntry`]"] #[doc = ""] pub const NETOPT_ROUTING_TABLE: NetworkOpt = 16390; @@ -17882,7 +17882,7 @@ pub const NETOPT_ROUTING_TABLE: NetworkOpt = 16390; #[doc = ""] pub const NETOPT_UDP_NUMBER: NetworkOpt = 32770; -#[doc = "The table of opened UDP sockets [`SOCU_UDPTableEntry`]"] +#[doc = "The table of opened UDP sockets [`SOCU_UDPTableEntry`]"] #[doc = ""] pub const NETOPT_UDP_TABLE: NetworkOpt = 32771; @@ -17890,11 +17890,11 @@ pub const NETOPT_UDP_TABLE: NetworkOpt = 32771; #[doc = ""] pub const NETOPT_TCP_NUMBER: NetworkOpt = 36866; -#[doc = "The table of opened TCP sockets [`SOCU_TCPTableEntry`]"] +#[doc = "The table of opened TCP sockets [`SOCU_TCPTableEntry`]"] #[doc = ""] pub const NETOPT_TCP_TABLE: NetworkOpt = 36867; -#[doc = "The table of the DNS servers [`SOCU_DNSTableEntry`] -- Returns a buffer of size 336 but only 2 entries are set ?"] +#[doc = "The table of the DNS servers [`SOCU_DNSTableEntry`] -- Returns a buffer of size 336 but only 2 entries are set ?"] #[doc = ""] pub const NETOPT_DNS_TABLE: NetworkOpt = 45059; @@ -17902,11 +17902,11 @@ pub const NETOPT_DNS_TABLE: NetworkOpt = 45059; #[doc = ""] pub const NETOPT_DHCP_LEASE_TIME: NetworkOpt = 49153; -#[doc = "Options to be used with [`SOCU_GetNetworkOpt`]"] +#[doc = "Options to be used with [`SOCU_GetNetworkOpt`]"] #[doc = ""] pub type NetworkOpt = ::libc::c_uint; -#[doc = "One entry of the ARP table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_ARP_TABLE`]"] +#[doc = "One entry of the ARP table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_ARP_TABLE`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -17920,7 +17920,7 @@ pub struct SOCU_ARPTableEntry { pub mac: [u8_; 6usize], pub padding: [u8_; 2usize], } -#[doc = "Structure returned by [`SOCU_GetNetworkOpt`] when using [`NETOPT_IP_INFO`]"] +#[doc = "Structure returned by [`SOCU_GetNetworkOpt`] when using [`NETOPT_IP_INFO`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -17935,7 +17935,7 @@ pub struct SOCU_IPInfo { #[doc = ""] pub broadcast: in_addr, } -#[doc = "One entry of the routing table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_ROUTING_TABLE`]"] +#[doc = "One entry of the routing table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_ROUTING_TABLE`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -17949,14 +17949,14 @@ pub struct SOCU_RoutingTableEntry { #[doc = "Gateway address to reach the network"] #[doc = ""] pub gateway: in_addr, - #[doc = "Linux netstat flags [`ROUTING_FLAG_G`]"] + #[doc = "Linux netstat flags [`ROUTING_FLAG_G`]"] #[doc = ""] pub flags: u32_, #[doc = "number of milliseconds since 1st Jan 1900 00:00."] #[doc = ""] pub time: u64_, } -#[doc = "One entry of the UDP sockets table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_UDP_TABLE`]"] +#[doc = "One entry of the UDP sockets table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_UDP_TABLE`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -17968,7 +17968,7 @@ pub struct SOCU_UDPTableEntry { #[doc = ""] pub remote: sockaddr_storage, } -#[doc = "One entry of the TCP sockets table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_TCP_TABLE`]"] +#[doc = "One entry of the TCP sockets table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_TCP_TABLE`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -17983,7 +17983,7 @@ pub struct SOCU_TCPTableEntry { #[doc = ""] pub remote: sockaddr_storage, } -#[doc = "One entry of the DNS servers table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_DNS_TABLE`]"] +#[doc = "One entry of the DNS servers table retrieved by using [`SOCU_GetNetworkOpt`] and [`NETOPT_DNS_TABLE`]"] #[doc = ""] #[repr(C)] #[derive(Debug, Default, Copy, Clone)] @@ -20711,7 +20711,7 @@ impl Default for DVLP_s { #[repr(C)] #[derive(Debug, Default, Copy, Clone)] pub struct DVLE_constEntry_s { - #[doc = "Constant type. See [`DVLE_constantType`]"] + #[doc = "Constant type. See [`DVLE_constantType`]"] #[doc = ""] pub type_: u16_, #[doc = "Constant ID."] @@ -20726,7 +20726,7 @@ pub struct DVLE_constEntry_s { #[repr(C)] #[derive(Debug, Default, Copy, Clone)] pub struct DVLE_outEntry_s { - #[doc = "Output type. See [`DVLE_outputAttribute_t`]"] + #[doc = "Output type. See [`DVLE_outputAttribute_t`]"] #[doc = ""] pub type_: u16_, #[doc = "Output register ID."] @@ -21356,15 +21356,15 @@ pub const NDSP_ENCODING_ADPCM: _bindgen_ty_30 = 2; #[doc = ""] pub type _bindgen_ty_30 = ::libc::c_uint; -#[doc = "Buffer contains Mono PCM8."] +#[doc = "Buffer contains Mono PCM8."] #[doc = ""] pub const NDSP_FORMAT_MONO_PCM8: _bindgen_ty_31 = 1; -#[doc = "Buffer contains Mono PCM16."] +#[doc = "Buffer contains Mono PCM16."] #[doc = ""] pub const NDSP_FORMAT_MONO_PCM16: _bindgen_ty_31 = 5; -#[doc = "Buffer contains Mono ADPCM."] +#[doc = "Buffer contains Mono ADPCM."] #[doc = ""] pub const NDSP_FORMAT_MONO_ADPCM: _bindgen_ty_31 = 9; @@ -22188,7 +22188,7 @@ pub struct MiiSelectorConf { #[doc = "@private"] #[doc = ""] pub _unk0x8D: [u8_; 3usize], - #[doc = "Index of the initially selected Mii. If\n[`MiiSelectorConf.show_guest_page`] is\nset, this is the index of a Guest Mii,\notherwise that of a user Mii."] + #[doc = "Index of the initially selected Mii. If\n [`MiiSelectorConf.show_guest_page`] is\nset, this is the index of a Guest Mii,\notherwise that of a user Mii."] #[doc = ""] pub initial_index: u32_, #[doc = "Each byte set to a nonzero value\nenables its corresponding Guest\nMii to be enabled for selection."] @@ -22200,7 +22200,7 @@ pub struct MiiSelectorConf { #[doc = "@private"] #[doc = ""] pub _unk0xFE: u16_, - #[doc = "Will be set to [`MIISELECTOR_MAGIC`] before launching the\napplet."] + #[doc = "Will be set to [`MIISELECTOR_MAGIC`] before launching the\napplet."] #[doc = ""] pub magic: u32_, } @@ -22232,7 +22232,7 @@ pub struct MiiSelectorReturn { #[doc = "@private"] #[doc = ""] pub _pad0x68: u16_, - #[doc = "Checksum of the returned Mii data.\nStored as a big-endian value; use\n[`miiSelectorChecksumIsValid`] to\nverify."] + #[doc = "Checksum of the returned Mii data.\nStored as a big-endian value; use\n [`miiSelectorChecksumIsValid`] to\nverify."] #[doc = ""] pub checksum: u16_, #[doc = "Localized name of a Guest Mii,\nif one was selected (UTF16-LE\nstring). Zeroed otherwise."] From 322d99e4ae3afda270a195d961bc87d75836ea9b Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Mon, 20 Mar 2023 14:04:38 -0400 Subject: [PATCH 028/116] Add all `libctru` files to rerun-if-changed Also simplify version checking logic a bit. It's just a warning, so we can check for exact version just to be safe and skip the major/minor comparisons for semver. Also update the README a bit to explain the versioning scheme. --- README.md | 21 +++++++++++++++++++-- ctru-sys/build.rs | 34 +++++++++++++++++++--------------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 9722c7c..f719b4b 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,24 @@ A Rust wrapper library for smealum's [ctrulib](https://github.com/smealum/ctruli ## Structure This repository is organized as follows: -* `ctru-rs`: Safe, idiomatic wrapper around `ctru-sys`. -* `ctru-sys`: Low-level, unsafe bindings to ctrulib + +* `ctru-rs`: Safe, idiomatic wrapper around `ctru-sys` + +* `ctru-sys`: Low-level, unsafe bindings to ctrulib. + + This crate's version changes according to the version of `libctru` + used to generate the bindings, with the following convention: + + * `libctru` version `X.Y.Z-W` + * `ctru-sys` version `XY.Z.P+X.Y.Z-W` + + where `P` is usually 0 but may be incremented for fixes in e.g. + binding generation, `libc` dependency bump, etc. + + It may be possible to build this crate against a different version of `libctru`, + but you may encounter linker errors or ABI issues. A build-time Cargo warning + (displayed when built with `-vv`) will be issued if the build script detects + a mismatch or is unable to check the installed `libctru` version. ## License @@ -37,3 +53,4 @@ applies to every file in the tree, unless otherwise noted. Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses. See [LICENSE-APACHE](https://github.com/rust-lang/rust/blob/master/LICENSE-APACHE), [LICENSE-MIT](https://github.com/rust-lang/rust/blob/master/LICENSE-MIT), and [COPYRIGHT](https://github.com/rust-lang/rust/blob/master/COPYRIGHT) for details. + diff --git a/ctru-sys/build.rs b/ctru-sys/build.rs index e6c17f2..a695d47 100644 --- a/ctru-sys/build.rs +++ b/ctru-sys/build.rs @@ -27,9 +27,6 @@ fn main() { println!("cargo:rustc-env=LIBCTRU_MAJOR={maj}"); println!("cargo:rustc-env=LIBCTRU_MINOR={min}"); println!("cargo:rustc-env=LIBCTRU_PATCH={patch}"); - - // It would be nice if we could rerun-if-changed on libctru itself, - // maybe we can write a file to OUT_DIR and check that file? } Err(err) => println!("cargo:warning=failed to check libctru version: {err}"), } @@ -50,7 +47,7 @@ fn parse_version(version: &str) -> Result<(String, String, String), &str> { fn check_libctru_version() -> Result<(String, String, String), Box> { let pacman = which::which("dkp-pacman").or_else(|_| which::which("pacman"))?; - let Output { stdout, .. } = Command::new(pacman) + let Output { stdout, .. } = Command::new(&pacman) .args(["--query", "libctru"]) .stderr(Stdio::inherit()) .output()?; @@ -59,26 +56,33 @@ fn check_libctru_version() -> Result<(String, String, String), Box> { let (_pkg, lib_version) = output_str .split_once(char::is_whitespace) - .ok_or("unexpected output format")?; + .ok_or("unexpected pacman output format")?; + + let lib_version = lib_version.trim(); let cargo_pkg_version = env::var("CARGO_PKG_VERSION").unwrap(); let (_, crate_built_version) = cargo_pkg_version .split_once('+') .expect("crate version should have '+' delimeter"); - let (lib_major, lib_minor, lib_patch) = parse_version(lib_version)?; - let (crate_supported_major, crate_supported_minor, _crate_supported_patch) = - parse_version(crate_built_version)?; - - // TODO: does == comparison make sense, or should we use >= or something? - if crate_supported_major != lib_major || crate_supported_minor != lib_minor { - // TODO: should this be a panic (i.e. induce build failure)? Maybe only for major version? - + if lib_version != crate_built_version { return Err(format!( - "libctru version is {lib_major}.{lib_minor}.{lib_patch}, \ - but this crate only supports {crate_supported_major}.{crate_supported_minor}.x" + "libctru version is {lib_version} but this crate was built for {crate_built_version}" ))?; } + let Output { stdout, .. } = Command::new(pacman) + .args(["--query", "--list", "libctru"]) + .stderr(Stdio::inherit()) + .output()?; + + for line in String::from_utf8_lossy(&stdout).split('\n') { + let Some((_pkg, file)) = line.split_once(char::is_whitespace) + else { continue }; + + println!("cargo:rerun-if-changed={file}"); + } + + let (lib_major, lib_minor, lib_patch) = parse_version(lib_version)?; Ok((lib_major, lib_minor, lib_patch)) } From 593522d83ab441ffd01647fde1c7170966cc3102 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Fri, 24 Mar 2023 13:36:03 -0400 Subject: [PATCH 029/116] Fix command check for `pacman` --- ctru-sys/bindgen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ctru-sys/bindgen.sh b/ctru-sys/bindgen.sh index b3ff55a..501459c 100755 --- a/ctru-sys/bindgen.sh +++ b/ctru-sys/bindgen.sh @@ -6,7 +6,7 @@ echo "Determining libctru version..." pacman=dkp-pacman if ! command -v $pacman &>/dev/null; then pacman=pacman - if ! command -q $pacman &>/dev/null; then + if ! command -v $pacman &>/dev/null; then echo >&2 "ERROR: Unable to automatically determine libctru version!" exit 1 fi From 7c2e944867d93e4088634688775c610895b397ad Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Sun, 26 Mar 2023 17:48:33 +0200 Subject: [PATCH 030/116] Improve Ndsp API and docs --- ctru-rs/examples/audio-filters.rs | 19 ++--- ctru-rs/src/services/ndsp/mod.rs | 130 +++++++++++++++++++++--------- ctru-rs/src/services/ndsp/wave.rs | 47 +++++------ 3 files changed, 122 insertions(+), 74 deletions(-) diff --git a/ctru-rs/examples/audio-filters.rs b/ctru-rs/examples/audio-filters.rs index 616b8d4..48b65a7 100644 --- a/ctru-rs/examples/audio-filters.rs +++ b/ctru-rs/examples/audio-filters.rs @@ -5,13 +5,13 @@ use std::f32::consts::PI; use ctru::linear::LinearAllocator; use ctru::prelude::*; use ctru::services::ndsp::{ - wave::{WaveInfo, WaveStatus}, - AudioFormat, InterpolationType, Ndsp, OutputMode, + wave::{Wave, WaveStatus}, + AudioFormat, AudioMix, InterpolationType, Ndsp, OutputMode, }; const SAMPLE_RATE: usize = 22050; const SAMPLES_PER_BUF: usize = SAMPLE_RATE / 10; // 2205 -const BYTES_PER_SAMPLE: usize = 4; +const BYTES_PER_SAMPLE: usize = AudioFormat::PCM16Stereo.size(); const AUDIO_WAVE_LENGTH: usize = SAMPLES_PER_BUF * BYTES_PER_SAMPLE; // Note Frequencies @@ -65,8 +65,8 @@ fn main() { let audio_data2 = audio_data1.clone(); - let mut wave_info1 = WaveInfo::new(audio_data1, AudioFormat::PCM16Stereo, false); - let mut wave_info2 = WaveInfo::new(audio_data2, AudioFormat::PCM16Stereo, false); + let mut wave_info1 = Wave::new(audio_data1, AudioFormat::PCM16Stereo, false); + let mut wave_info2 = Wave::new(audio_data2, AudioFormat::PCM16Stereo, false); let mut ndsp = Ndsp::init().expect("Couldn't obtain NDSP controller"); @@ -79,10 +79,7 @@ fn main() { channel_zero.set_format(AudioFormat::PCM16Stereo); // Output at 100% on the first pair of left and right channels. - - let mut mix: [f32; 12] = [0f32; 12]; - mix[0] = 1.0; - mix[1] = 1.0; + let mix = AudioMix::default(); channel_zero.set_mix(&mix); channel_zero.queue_wave(&mut wave_info1).unwrap(); @@ -142,13 +139,13 @@ fn main() { } } - let current: &mut WaveInfo = if altern { + let current: &mut Wave = if altern { &mut wave_info1 } else { &mut wave_info2 }; - let status = current.get_status(); + let status = current.status(); if let WaveStatus::Done = status { fill_buffer(current.get_buffer_mut().unwrap(), NOTEFREQ[note]); diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index ee366d4..ee6605a 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -1,12 +1,13 @@ //! NDSP (Audio) service pub mod wave; -use wave::{WaveInfo, WaveStatus}; +use wave::{Wave, WaveStatus}; use crate::error::ResultCode; use crate::services::ServiceReference; use std::cell::{RefCell, RefMut}; +use std::default::Default; use std::error; use std::fmt; use std::sync::Mutex; @@ -30,6 +31,18 @@ pub enum AudioFormat { PCM16Stereo = ctru_sys::NDSP_FORMAT_STEREO_PCM16, } +/// Representation of volume mix for a channel. +/// Each member is made up of 2 values, the first is for the "left" channel, while the second is for the "right" channel. +#[derive(Copy, Clone, Debug)] +pub struct AudioMix { + pub front: (f32, f32), + pub back: (f32, f32), + pub aux1_front: (f32, f32), + pub aux1_back: (f32, f32), + pub aux2_front: (f32, f32), + pub aux2_back: (f32, f32), +} + #[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum InterpolationType { @@ -47,7 +60,7 @@ pub enum NdspError { /// Channel ID WaveBusy(u8), /// Sample amount requested, Max sample amount - SampleCountOutOfBounds(u32, u32), + SampleCountOutOfBounds(usize, usize), } pub struct Channel<'ndsp> { @@ -141,17 +154,19 @@ impl Channel<'_> { } // Returns the channel's id - pub fn get_id(&self) -> u8 { + pub fn id(&self) -> u8 { self.id } - /// Returns the channel's current sample's position. - pub fn get_sample_position(&self) -> u32 { - unsafe { ctru_sys::ndspChnGetSamplePos(self.id.into()) } + /// Returns the index of the currently played sample. + /// + /// Because of how fast this value changes, it should only be used as a rough estimate of the current progress. + pub fn sample_position(&self) -> usize { + (unsafe { ctru_sys::ndspChnGetSamplePos(self.id.into()) }) as usize } /// Returns the channel's current wave sequence's id. - pub fn get_wave_sequence_id(&self) -> u16 { + pub fn wave_sequence_id(&self) -> u16 { unsafe { ctru_sys::ndspChnGetWaveBufSeq(self.id.into()) } } @@ -172,19 +187,8 @@ impl Channel<'_> { } /// Set the channel's volume mix. - /// - /// # Notes - /// - /// The buffer's format is read as: - /// - /// Index 0: Front left volume
- /// Index 1: Front right volume
- /// Index 2: Back left volume
- /// Index 3: Back right volume
- /// Index 4..7: Same as 0..3 but for auxiliary output 0
- /// Index 8..11: Same as 0..3 but for auxiliary output 1
- pub fn set_mix(&self, mix: &[f32; 12]) { - unsafe { ctru_sys::ndspChnSetMix(self.id.into(), mix.as_ptr().cast_mut()) } + pub fn set_mix(&self, mix: &AudioMix) { + unsafe { ctru_sys::ndspChnSetMix(self.id.into(), mix.to_raw().as_mut_ptr()) } } /// Set the channel's rate of sampling. @@ -206,10 +210,10 @@ impl Channel<'_> { /// /// # Warning /// - /// `libctru` expects the user to manually keep the info data (in this case [WaveInfo]) alive during playback. - /// To ensure safety, checks within [WaveInfo] will clear the whole channel queue if any queued [WaveInfo] is dropped prematurely. - pub fn queue_wave(&self, wave: &mut WaveInfo) -> std::result::Result<(), NdspError> { - match wave.get_status() { + /// `libctru` expects the user to manually keep the info data (in this case [Wave]) alive during playback. + /// To ensure safety, checks within [Wave] will clear the whole channel queue if any queued [Wave] is dropped prematurely. + pub fn queue_wave(&self, wave: &mut Wave) -> std::result::Result<(), NdspError> { + match wave.status() { WaveStatus::Playing | WaveStatus::Queued => return Err(NdspError::WaveBusy(self.id)), _ => (), } @@ -302,14 +306,70 @@ impl Channel<'_> { impl AudioFormat { /// Returns the amount of bytes needed to store one sample + /// /// Eg. - /// 8 bit formats return 1 (byte) - /// 16 bit formats return 2 (bytes) - pub fn sample_size(self) -> u8 { + /// 8 bit mono formats return 1 (byte) + /// 16 bit stereo (dual-channel) formats return 4 (bytes) + pub const fn size(self) -> usize { match self { - AudioFormat::PCM8Mono => 1, - AudioFormat::PCM16Mono | AudioFormat::PCM8Stereo => 2, - AudioFormat::PCM16Stereo => 4, + Self::PCM8Mono => 1, + Self::PCM16Mono | Self::PCM8Stereo => 2, + Self::PCM16Stereo => 4, + } + } +} + +impl AudioMix { + pub fn zeroed() -> Self { + Self { + front: (0., 0.), + back: (0., 0.), + aux1_front: (0., 0.), + aux1_back: (0., 0.), + aux2_front: (0., 0.), + aux2_back: (0., 0.), + } + } + + pub fn from_raw(data: [f32; 12]) -> Self { + Self { + front: (data[0], data[1]), + back: (data[2], data[3]), + aux1_front: (data[4], data[5]), + aux1_back: (data[6], data[7]), + aux2_front: (data[8], data[9]), + aux2_back: (data[10], data[11]), + } + } + + pub fn to_raw(&self) -> [f32; 12] { + [ + self.front.0, + self.front.1, + self.back.0, + self.back.1, + self.aux1_front.0, + self.aux1_front.1, + self.aux1_back.0, + self.aux1_back.1, + self.aux2_front.0, + self.aux2_front.1, + self.aux2_back.0, + self.aux2_back.1, + ] + } +} + +/// Returns an [AudioMix] object with front left and front right volumes set to max, and all other volumes set to 0. +impl Default for AudioMix { + fn default() -> Self { + Self { + front: (1., 1.), + back: (0., 0.), + aux1_front: (0., 0.), + aux1_back: (0., 0.), + aux2_front: (0., 0.), + aux2_back: (0., 0.), } } } @@ -319,7 +379,7 @@ impl fmt::Display for NdspError { match self { Self::InvalidChannel(id) => write!(f, "audio Channel with ID {id} doesn't exist. Valid channels have an ID between 0 and 23"), Self::ChannelAlreadyInUse(id) => write!(f, "audio Channel with ID {id} is already being used. Drop the other instance if you want to use it here"), - Self::WaveBusy(id) => write!(f, "the selected WaveInfo is busy playing on channel {id}"), + Self::WaveBusy(id) => write!(f, "the selected Wave is busy playing on channel {id}"), Self::SampleCountOutOfBounds(samples_requested, max_samples) => write!(f, "the sample count requested is too big (requested = {samples_requested}, maximum = {max_samples})"), } } @@ -327,16 +387,10 @@ impl fmt::Display for NdspError { impl error::Error for NdspError {} -impl<'ndsp> Drop for Channel<'ndsp> { - fn drop(&mut self) { - self.reset(); - } -} - impl Drop for Ndsp { fn drop(&mut self) { for i in 0..NUMBER_OF_CHANNELS { - self.channel(i).unwrap().clear_queue(); + self.channel(i).unwrap().reset(); } } } diff --git a/ctru-rs/src/services/ndsp/wave.rs b/ctru-rs/src/services/ndsp/wave.rs index 4a5de98..a47c113 100644 --- a/ctru-rs/src/services/ndsp/wave.rs +++ b/ctru-rs/src/services/ndsp/wave.rs @@ -1,8 +1,8 @@ use super::{AudioFormat, NdspError}; use crate::linear::LinearAllocator; -/// Informational struct holding the raw audio data and playback info. This corresponds to [ctru_sys::ndspWaveBuf] -pub struct WaveInfo { +/// Informational struct holding the raw audio data and playback info. This corresponds to [ctru_sys::ndspWaveBuf]. +pub struct Wave { /// Data block of the audio wave (and its format information). buffer: Box<[u8], LinearAllocator>, audio_format: AudioFormat, @@ -13,7 +13,7 @@ pub struct WaveInfo { #[derive(Copy, Clone, Debug)] #[repr(u8)] -/// Enum representing the playback status of a [WaveInfo]. +/// Enum representing the playback status of a [Wave]. pub enum WaveStatus { Free = ctru_sys::NDSP_WBUF_FREE as u8, Queued = ctru_sys::NDSP_WBUF_QUEUED as u8, @@ -21,14 +21,14 @@ pub enum WaveStatus { Done = ctru_sys::NDSP_WBUF_DONE as u8, } -impl WaveInfo { +impl Wave { /// Build a new playable wave object from a raw buffer on LINEAR memory and a some info. pub fn new( buffer: Box<[u8], LinearAllocator>, audio_format: AudioFormat, looping: bool, ) -> Self { - let sample_count: usize = buffer.len() / (audio_format.sample_size() as usize); + let sample_count = buffer.len() / audio_format.size(); // Signal to the DSP processor the buffer's RAM sector. // This step may seem delicate, but testing reports failure most of the time, while still having no repercussions on the resulting audio. @@ -69,10 +69,10 @@ impl WaveInfo { /// /// # Errors /// - /// This function will return an error if the [WaveInfo] is currently busy, + /// This function will return an error if the [Wave] is currently busy, /// with the id to the channel in which it's queued. pub fn get_buffer_mut(&mut self) -> Result<&mut [u8], NdspError> { - match self.get_status() { + match self.status() { WaveStatus::Playing | WaveStatus::Queued => { Err(NdspError::WaveBusy(self.played_on_channel.unwrap())) } @@ -81,7 +81,7 @@ impl WaveInfo { } /// Return this wave's playback status. - pub fn get_status(&self) -> WaveStatus { + pub fn status(&self) -> WaveStatus { self.raw_data.status.try_into().unwrap() } @@ -90,12 +90,12 @@ impl WaveInfo { /// # Notes /// /// This value varies depending on [Self::set_sample_count]. - pub fn get_sample_count(&self) -> u32 { - self.raw_data.nsamples + pub fn sample_count(&self) -> usize { + self.raw_data.nsamples as usize } /// Get the format of the audio data. - pub fn get_format(&self) -> AudioFormat { + pub fn format(&self) -> AudioFormat { self.audio_format } @@ -117,25 +117,22 @@ impl WaveInfo { /// # Errors /// /// This function will return an error if the sample size exceeds the buffer's capacity - /// or if the WaveInfo is currently queued. - pub fn set_sample_count(&mut self, sample_count: u32) -> Result<(), NdspError> { - match self.get_status() { + /// or if the [Wave] is currently queued. + pub fn set_sample_count(&mut self, sample_count: usize) -> Result<(), NdspError> { + match self.status() { WaveStatus::Playing | WaveStatus::Queued => { return Err(NdspError::WaveBusy(self.played_on_channel.unwrap())); } _ => (), } - let max_count: usize = self.buffer.len() / (self.audio_format.sample_size() as usize); + let max_count = self.buffer.len() / self.audio_format.size(); - if sample_count > max_count as u32 { - return Err(NdspError::SampleCountOutOfBounds( - sample_count, - max_count as u32, - )); + if sample_count > max_count { + return Err(NdspError::SampleCountOutOfBounds(sample_count, max_count)); } - self.raw_data.nsamples = sample_count; + self.raw_data.nsamples = sample_count as u32; Ok(()) } @@ -150,16 +147,16 @@ impl TryFrom for WaveStatus { 1 => Ok(Self::Queued), 2 => Ok(Self::Playing), 3 => Ok(Self::Done), - _ => Err("Invalid WaveInfo Status code"), + _ => Err("Invalid Wave Status code"), } } } -impl Drop for WaveInfo { +impl Drop for Wave { fn drop(&mut self) { - // This was the only way I found I could check for improper drops of `WaveInfos`. + // This was the only way I found I could check for improper drops of `Wave`. // A panic was considered, but it would cause issues with drop order against `Ndsp`. - match self.get_status() { + match self.status() { WaveStatus::Free | WaveStatus::Done => (), // If the status flag is "unfinished" _ => { From c82f438726f1e5b4ce75b5363a445c6f99190ee1 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Mon, 27 Mar 2023 13:11:34 -0400 Subject: [PATCH 031/116] Remove extern "C" process stubs from test runner --- ctru-rs/src/test_runner.rs | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/ctru-rs/src/test_runner.rs b/ctru-rs/src/test_runner.rs index 192483f..8b3f117 100644 --- a/ctru-rs/src/test_runner.rs +++ b/ctru-rs/src/test_runner.rs @@ -76,25 +76,3 @@ fn make_owned_test(test: &&TestDescAndFn) -> TestDescAndFn { _ => panic!("non-static tests passed to test::test_main_static"), } } - -/// The following functions are stubs needed to link the test library, -/// but do nothing because we don't actually need them for the runner to work. -mod link_fix { - #[no_mangle] - extern "C" fn execvp( - _argc: *const libc::c_char, - _argv: *mut *const libc::c_char, - ) -> libc::c_int { - -1 - } - - #[no_mangle] - extern "C" fn pipe(_fildes: *mut libc::c_int) -> libc::c_int { - -1 - } - - #[no_mangle] - extern "C" fn sigemptyset(_arg1: *mut libc::sigset_t) -> ::libc::c_int { - -1 - } -} From 912ff07ec1d765321d044cf767406b01994f3897 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Mon, 27 Mar 2023 19:20:21 +0200 Subject: [PATCH 032/116] Avoid data cloning in AudioMix --- ctru-rs/src/services/ndsp/mod.rs | 127 ++++++++++++++++++++----------- 1 file changed, 84 insertions(+), 43 deletions(-) diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index ee6605a..4b4e1a7 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -35,12 +35,7 @@ pub enum AudioFormat { /// Each member is made up of 2 values, the first is for the "left" channel, while the second is for the "right" channel. #[derive(Copy, Clone, Debug)] pub struct AudioMix { - pub front: (f32, f32), - pub back: (f32, f32), - pub aux1_front: (f32, f32), - pub aux1_back: (f32, f32), - pub aux2_front: (f32, f32), - pub aux2_back: (f32, f32), + raw: [f32;12] } #[derive(Copy, Clone, Debug)] @@ -188,7 +183,7 @@ impl Channel<'_> { /// Set the channel's volume mix. pub fn set_mix(&self, mix: &AudioMix) { - unsafe { ctru_sys::ndspChnSetMix(self.id.into(), mix.to_raw().as_mut_ptr()) } + unsafe { ctru_sys::ndspChnSetMix(self.id.into(), mix.as_raw().as_ptr().cast_mut()) } } /// Set the channel's rate of sampling. @@ -320,56 +315,102 @@ impl AudioFormat { } impl AudioMix { + /// Creates a new [AudioMix] with all volumes set to 0. pub fn zeroed() -> Self { Self { - front: (0., 0.), - back: (0., 0.), - aux1_front: (0., 0.), - aux1_back: (0., 0.), - aux2_front: (0., 0.), - aux2_back: (0., 0.), + raw: [0.;12], } } - pub fn from_raw(data: [f32; 12]) -> Self { - Self { - front: (data[0], data[1]), - back: (data[2], data[3]), - aux1_front: (data[4], data[5]), - aux1_back: (data[6], data[7]), - aux2_front: (data[8], data[9]), - aux2_back: (data[10], data[11]), + /// Returns a reference to the raw data. + pub fn as_raw(&self) -> &[f32; 12] { + &self.raw + } + + /// Returns a mutable reference to the raw data. + pub fn as_raw_mut(&mut self) -> &mut [f32; 12] { + &mut self.raw + } + + /// Returns a reference to the "front" volume mix (left and right channel). + pub fn front(&self) -> &[f32] { + &self.raw[..2] + } + + /// Returns a reference to the "back" volume mix (left and right channel). + pub fn back(&self) -> &[f32] { + &self.raw[2..4] + } + + /// Returns a reference to the "front" volume mix (left and right channel) for the specified auxiliary output device. + pub fn aux_front(&self, id: usize) -> &[f32] { + if id > 1 { + panic!("invalid auxiliary output device index") + } + + let index = 4 + id * 4; + + &self.raw[index..index+2] + } + + /// Returns a reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. + pub fn aux_back(&self, id: usize) -> &[f32] { + if id > 1 { + panic!("invalid auxiliary output device index") + } + + let index = 6 + id * 4; + + &self.raw[index..index+2] + } + + /// Returns a mutable reference to the "front" volume mix (left and right channel). + pub fn front_mut(&mut self) -> &mut [f32] { + &mut self.raw[..2] + } + + /// Returns a mutable reference to the "back" volume mix (left and right channel). + pub fn back_mut(&mut self) -> &mut [f32] { + &mut self.raw[2..4] + } + + /// Returns a mutable reference to the "front" volume mix (left and right channel) for the specified auxiliary output device. + pub fn aux_front_mut(&mut self, id: usize) -> &mut [f32] { + if id > 1 { + panic!("invalid auxiliary output device index") } + + let index = 4 + id * 4; + + &mut self.raw[index..index+2] } - pub fn to_raw(&self) -> [f32; 12] { - [ - self.front.0, - self.front.1, - self.back.0, - self.back.1, - self.aux1_front.0, - self.aux1_front.1, - self.aux1_back.0, - self.aux1_back.1, - self.aux2_front.0, - self.aux2_front.1, - self.aux2_back.0, - self.aux2_back.1, - ] + /// Returns a mutable reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. + pub fn aux_back_mut(&mut self, id: usize) -> &mut [f32] { + if id > 1 { + panic!("invalid auxiliary output device index") + } + + let index = 6 + id * 4; + + &mut self.raw[index..index+2] } } -/// Returns an [AudioMix] object with front left and front right volumes set to max, and all other volumes set to 0. +/// Returns an [AudioMix] object with "front left" and "front right" volumes set to max, and all other volumes set to 0. impl Default for AudioMix { fn default() -> Self { + let mut mix = AudioMix::zeroed(); + mix.front_mut().fill(1.); + + mix + } +} + +impl From<[f32; 12]> for AudioMix { + fn from(value: [f32; 12]) -> Self { Self { - front: (1., 1.), - back: (0., 0.), - aux1_front: (0., 0.), - aux1_back: (0., 0.), - aux2_front: (0., 0.), - aux2_back: (0., 0.), + raw: value, } } } From c849f947fe4bf569b92640c0d9f763322eb86546 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Mon, 27 Mar 2023 19:23:13 +0200 Subject: [PATCH 033/116] fmt --- ctru-rs/src/services/ndsp/mod.rs | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index 4b4e1a7..5873fcb 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -35,7 +35,7 @@ pub enum AudioFormat { /// Each member is made up of 2 values, the first is for the "left" channel, while the second is for the "right" channel. #[derive(Copy, Clone, Debug)] pub struct AudioMix { - raw: [f32;12] + raw: [f32; 12], } #[derive(Copy, Clone, Debug)] @@ -317,9 +317,7 @@ impl AudioFormat { impl AudioMix { /// Creates a new [AudioMix] with all volumes set to 0. pub fn zeroed() -> Self { - Self { - raw: [0.;12], - } + Self { raw: [0.; 12] } } /// Returns a reference to the raw data. @@ -347,10 +345,10 @@ impl AudioMix { if id > 1 { panic!("invalid auxiliary output device index") } - + let index = 4 + id * 4; - &self.raw[index..index+2] + &self.raw[index..index + 2] } /// Returns a reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. @@ -358,10 +356,10 @@ impl AudioMix { if id > 1 { panic!("invalid auxiliary output device index") } - + let index = 6 + id * 4; - &self.raw[index..index+2] + &self.raw[index..index + 2] } /// Returns a mutable reference to the "front" volume mix (left and right channel). @@ -379,10 +377,10 @@ impl AudioMix { if id > 1 { panic!("invalid auxiliary output device index") } - + let index = 4 + id * 4; - &mut self.raw[index..index+2] + &mut self.raw[index..index + 2] } /// Returns a mutable reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. @@ -390,10 +388,10 @@ impl AudioMix { if id > 1 { panic!("invalid auxiliary output device index") } - + let index = 6 + id * 4; - &mut self.raw[index..index+2] + &mut self.raw[index..index + 2] } } @@ -409,9 +407,7 @@ impl Default for AudioMix { impl From<[f32; 12]> for AudioMix { fn from(value: [f32; 12]) -> Self { - Self { - raw: value, - } + Self { raw: value } } } From 9832c8a45024d9d60f3bf77d9e30316c8698fd9b Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Mon, 27 Mar 2023 19:35:44 +0200 Subject: [PATCH 034/116] Remove obsolete docs --- ctru-rs/src/services/ndsp/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index 5873fcb..4c0ad37 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -32,7 +32,6 @@ pub enum AudioFormat { } /// Representation of volume mix for a channel. -/// Each member is made up of 2 values, the first is for the "left" channel, while the second is for the "right" channel. #[derive(Copy, Clone, Debug)] pub struct AudioMix { raw: [f32; 12], From e1000916d3af7affcd9a8d0006f1b5b76faf69d9 Mon Sep 17 00:00:00 2001 From: Ian Chamberlain Date: Mon, 27 Mar 2023 13:11:34 -0400 Subject: [PATCH 035/116] Remove extern "C" process stubs from test runner --- ctru-rs/src/test_runner.rs | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/ctru-rs/src/test_runner.rs b/ctru-rs/src/test_runner.rs index 192483f..8b3f117 100644 --- a/ctru-rs/src/test_runner.rs +++ b/ctru-rs/src/test_runner.rs @@ -76,25 +76,3 @@ fn make_owned_test(test: &&TestDescAndFn) -> TestDescAndFn { _ => panic!("non-static tests passed to test::test_main_static"), } } - -/// The following functions are stubs needed to link the test library, -/// but do nothing because we don't actually need them for the runner to work. -mod link_fix { - #[no_mangle] - extern "C" fn execvp( - _argc: *const libc::c_char, - _argv: *mut *const libc::c_char, - ) -> libc::c_int { - -1 - } - - #[no_mangle] - extern "C" fn pipe(_fildes: *mut libc::c_int) -> libc::c_int { - -1 - } - - #[no_mangle] - extern "C" fn sigemptyset(_arg1: *mut libc::sigset_t) -> ::libc::c_int { - -1 - } -} From e9ad80a84a80b7a140e8b3391636103f5eb17e01 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Wed, 29 Mar 2023 19:37:05 +0200 Subject: [PATCH 036/116] New attempt at a standard AudioMix interface --- ctru-rs/src/services/ndsp/mod.rs | 74 +++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index 4c0ad37..6616bd9 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -329,68 +329,92 @@ impl AudioMix { &mut self.raw } - /// Returns a reference to the "front" volume mix (left and right channel). - pub fn front(&self) -> &[f32] { - &self.raw[..2] + /// Returns the values set for the "front" volume mix (left and right channel). + pub fn front(&self) -> (f32, f32) { + (self.raw[0], self.raw[1]) } - /// Returns a reference to the "back" volume mix (left and right channel). - pub fn back(&self) -> &[f32] { - &self.raw[2..4] + /// Returns the values set for the "back" volume mix (left and right channel). + pub fn back(&self) -> (f32, f32) { + (self.raw[2], self.raw[3]) } - /// Returns a reference to the "front" volume mix (left and right channel) for the specified auxiliary output device. - pub fn aux_front(&self, id: usize) -> &[f32] { + /// Returns the values set for the "front" volume mix (left and right channel) for the specified auxiliary output device (either 0 or 1). + pub fn aux_front(&self, id: usize) -> (f32, f32) { if id > 1 { panic!("invalid auxiliary output device index") } let index = 4 + id * 4; - &self.raw[index..index + 2] + (self.raw[index], self.raw[index + 1]) } - /// Returns a reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. - pub fn aux_back(&self, id: usize) -> &[f32] { + /// Returns the values set for the "back" volume mix (left and right channel) for the specified auxiliary output device (either 0 or 1). + pub fn aux_back(&self, id: usize) -> (f32, f32) { if id > 1 { panic!("invalid auxiliary output device index") } let index = 6 + id * 4; - &self.raw[index..index + 2] + (self.raw[index], self.raw[index + 1]) } - /// Returns a mutable reference to the "front" volume mix (left and right channel). - pub fn front_mut(&mut self) -> &mut [f32] { - &mut self.raw[..2] + /// Sets the values for the "front" volume mix (left and right channel). + /// + /// # Notes + /// + /// [Channel] will normalize the mix values to be within 0 and 1. + /// However, an [AudioMix] instance with larger/smaller values is valid. + pub fn set_front(&mut self, left: f32, right: f32) { + self.raw[0] = left; + self.raw[1] = right; } - /// Returns a mutable reference to the "back" volume mix (left and right channel). - pub fn back_mut(&mut self) -> &mut [f32] { - &mut self.raw[2..4] + /// Sets the values for the "back" volume mix (left and right channel). + /// + /// # Notes + /// + /// [Channel] will normalize the mix values to be within 0 and 1. + /// However, an [AudioMix] instance with larger/smaller values is valid. + pub fn set_back(&mut self, left: f32, right: f32) { + self.raw[2] = left; + self.raw[3] = right; } - /// Returns a mutable reference to the "front" volume mix (left and right channel) for the specified auxiliary output device. - pub fn aux_front_mut(&mut self, id: usize) -> &mut [f32] { + /// Sets the values for the "front" volume mix (left and right channel) for the specified auxiliary output device (either 0 or 1). + /// + /// # Notes + /// + /// [Channel] will normalize the mix values to be within 0 and 1. + /// However, an [AudioMix] instance with larger/smaller values is valid. + pub fn set_aux_front(&mut self, left: f32, right: f32, id: usize) { if id > 1 { panic!("invalid auxiliary output device index") } let index = 4 + id * 4; - &mut self.raw[index..index + 2] + self.raw[index] = left; + self.raw[index + 1] = right; } - /// Returns a mutable reference to the "back" volume mix (left and right channel) for the specified auxiliary output device. - pub fn aux_back_mut(&mut self, id: usize) -> &mut [f32] { + /// Sets the values for the "back" volume mix (left and right channel) for the specified auxiliary output device (either 0 or 1). + /// + /// # Notes + /// + /// [Channel] will normalize the mix values to be within 0 and 1. + /// However, an [AudioMix] instance with larger/smaller values is valid. + pub fn set_aux_back(&mut self, left: f32, right: f32, id: usize) { if id > 1 { panic!("invalid auxiliary output device index") } let index = 6 + id * 4; - &mut self.raw[index..index + 2] + self.raw[index] = left; + self.raw[index + 1] = right; } } @@ -398,7 +422,7 @@ impl AudioMix { impl Default for AudioMix { fn default() -> Self { let mut mix = AudioMix::zeroed(); - mix.front_mut().fill(1.); + mix.set_front(1.0, 1.0); mix } From d33c39b57d8fdf63913c7d33fd556dc8679312ba Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Wed, 29 Mar 2023 19:39:26 +0200 Subject: [PATCH 037/116] Percentiles --- ctru-rs/src/services/ndsp/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ctru-rs/src/services/ndsp/mod.rs b/ctru-rs/src/services/ndsp/mod.rs index 6616bd9..cd45f7b 100644 --- a/ctru-rs/src/services/ndsp/mod.rs +++ b/ctru-rs/src/services/ndsp/mod.rs @@ -418,7 +418,7 @@ impl AudioMix { } } -/// Returns an [AudioMix] object with "front left" and "front right" volumes set to max, and all other volumes set to 0. +/// Returns an [AudioMix] object with "front left" and "front right" volumes set to 100%, and all other volumes set to 0%. impl Default for AudioMix { fn default() -> Self { let mut mix = AudioMix::zeroed(); From c3df8af69f738199b99739849c41b0986ee101e7 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Wed, 29 Mar 2023 20:06:40 +0200 Subject: [PATCH 038/116] Folder restructuring and slight changes to gspgpu --- ctru-rs/examples/camera-image.rs | 2 +- ctru-rs/examples/file-explorer.rs | 2 +- ctru-rs/examples/gfx-3d-mode.rs | 2 +- ctru-rs/examples/graphics-bitmap.rs | 2 +- ctru-rs/examples/romfs.rs | 2 +- ctru-rs/src/console.rs | 2 +- ctru-rs/src/lib.rs | 20 -------------------- ctru-rs/src/prelude.rs | 3 +-- ctru-rs/src/{ => services}/gfx.rs | 2 +- ctru-rs/src/services/gspgpu.rs | 28 +++++++++++++++------------- ctru-rs/src/services/mod.rs | 20 ++++++++++++++++++++ ctru-rs/src/{ => services}/romfs.rs | 2 ++ ctru-rs/src/test_runner.rs | 5 +---- 13 files changed, 46 insertions(+), 46 deletions(-) rename ctru-rs/src/{ => services}/gfx.rs (99%) rename ctru-rs/src/{ => services}/romfs.rs (97%) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index b46b591..7922f20 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -1,6 +1,6 @@ -use ctru::gfx::Screen; use ctru::prelude::*; use ctru::services::cam::{Cam, CamOutputFormat, CamShutterSoundType, CamSize, Camera}; +use ctru::services::gfx::Screen; use ctru::services::gspgpu::FramebufferFormat; use std::time::Duration; diff --git a/ctru-rs/examples/file-explorer.rs b/ctru-rs/examples/file-explorer.rs index 74a94eb..3bfeadc 100644 --- a/ctru-rs/examples/file-explorer.rs +++ b/ctru-rs/examples/file-explorer.rs @@ -16,7 +16,7 @@ fn main() { let gfx = Gfx::init().unwrap(); #[cfg(all(feature = "romfs", romfs_exists))] - let _romfs = ctru::romfs::RomFS::init().unwrap(); + let _romfs = ctru::services::romfs::RomFS::init().unwrap(); FileExplorer::init(&apt, &hid, &gfx).run(); } diff --git a/ctru-rs/examples/gfx-3d-mode.rs b/ctru-rs/examples/gfx-3d-mode.rs index dfdc028..171838b 100644 --- a/ctru-rs/examples/gfx-3d-mode.rs +++ b/ctru-rs/examples/gfx-3d-mode.rs @@ -1,5 +1,5 @@ -use ctru::gfx::{Screen, Side, TopScreen3D}; use ctru::prelude::*; +use ctru::services::gfx::{Screen, Side, TopScreen3D}; /// See `graphics-bitmap.rs` for details on how the image is generated. /// diff --git a/ctru-rs/examples/graphics-bitmap.rs b/ctru-rs/examples/graphics-bitmap.rs index b6842f1..5421e9b 100644 --- a/ctru-rs/examples/graphics-bitmap.rs +++ b/ctru-rs/examples/graphics-bitmap.rs @@ -1,5 +1,5 @@ -use ctru::gfx::Screen as _; use ctru::prelude::*; +use ctru::services::gfx::Screen; /// Ferris image taken from and scaled down to 320x240px. /// To regenerate the data, you will need to install `imagemagick` and run this diff --git a/ctru-rs/examples/romfs.rs b/ctru-rs/examples/romfs.rs index 45a7add..965cb6d 100644 --- a/ctru-rs/examples/romfs.rs +++ b/ctru-rs/examples/romfs.rs @@ -13,7 +13,7 @@ fn main() { // This never fails as `ctru-rs` examples inherit all of the `ctru` features, // but it might if a normal user application wasn't setup correctly if #[cfg(all(feature = "romfs", romfs_exists))] { - let _romfs = ctru::romfs::RomFS::init().unwrap(); + let _romfs = ctru::services::romfs::RomFS::init().unwrap(); let f = std::fs::read_to_string("romfs:/test-file.txt").unwrap(); println!("Contents of test-file.txt: \n{f}\n"); diff --git a/ctru-rs/src/console.rs b/ctru-rs/src/console.rs index cfd15ea..c0a8765 100644 --- a/ctru-rs/src/console.rs +++ b/ctru-rs/src/console.rs @@ -3,7 +3,7 @@ use std::default::Default; use ctru_sys::{consoleClear, consoleInit, consoleSelect, consoleSetWindow, PrintConsole}; -use crate::gfx::Screen; +use crate::services::gfx::Screen; static mut EMPTY_CONSOLE: PrintConsole = unsafe { const_zero::const_zero!(PrintConsole) }; diff --git a/ctru-rs/src/lib.rs b/ctru-rs/src/lib.rs index 8dd8abf..2db6c22 100644 --- a/ctru-rs/src/lib.rs +++ b/ctru-rs/src/lib.rs @@ -62,31 +62,11 @@ fn panic_hook_setup() { pub mod applets; pub mod console; pub mod error; -pub mod gfx; pub mod linear; pub mod mii; pub mod prelude; pub mod services; -cfg_if::cfg_if! { - if #[cfg(all(feature = "romfs", romfs_exists))] { - pub mod romfs; - } else { - pub mod romfs { - //! The RomFS folder has not been detected and/or the `romfs` feature has not been enabled. - //! - //! Configure the path in Cargo.toml (the default path is "romfs"). Paths are relative to the - //! `CARGO_MANIFEST_DIR` environment variable, which is the directory containing the manifest of - //! your package. - //! - //! ```toml - //! [package.metadata.cargo-3ds] - //! romfs_dir = "romfs" - //! ``` - } - } -} - #[cfg(test)] mod test_runner; diff --git a/ctru-rs/src/prelude.rs b/ctru-rs/src/prelude.rs index 27196f9..74faa41 100644 --- a/ctru-rs/src/prelude.rs +++ b/ctru-rs/src/prelude.rs @@ -1,3 +1,2 @@ pub use crate::console::Console; -pub use crate::gfx::Gfx; -pub use crate::services::{hid::KeyPad, soc::Soc, Apt, Hid}; +pub use crate::services::{gfx::Gfx, hid::KeyPad, soc::Soc, Apt, Hid}; diff --git a/ctru-rs/src/gfx.rs b/ctru-rs/src/services/gfx.rs similarity index 99% rename from ctru-rs/src/gfx.rs rename to ctru-rs/src/services/gfx.rs index fd439a0..457f94d 100644 --- a/ctru-rs/src/gfx.rs +++ b/ctru-rs/src/services/gfx.rs @@ -57,7 +57,7 @@ pub trait Screen: private::Sealed { /// Gets the framebuffer format fn get_framebuffer_format(&self) -> FramebufferFormat { - unsafe { ctru_sys::gfxGetScreenFormat(self.as_raw()).into() } + unsafe { ctru_sys::gfxGetScreenFormat(self.as_raw()) }.into() } /// Change the framebuffer format diff --git a/ctru-rs/src/services/gspgpu.rs b/ctru-rs/src/services/gspgpu.rs index 1357fad..73fb77d 100644 --- a/ctru-rs/src/services/gspgpu.rs +++ b/ctru-rs/src/services/gspgpu.rs @@ -3,29 +3,31 @@ use std::convert::From; #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum Event { - Psc0, - Psc1, - VBlank0, - VBlank1, - PPF, - P3D, - DMA, + Psc0 = ctru_sys::GSPGPU_EVENT_PSC0, + Psc1 = ctru_sys::GSPGPU_EVENT_PSC1, + VBlank0 = ctru_sys::GSPGPU_EVENT_VBlank0, + VBlank1 = ctru_sys::GSPGPU_EVENT_VBlank1, + PPF = ctru_sys::GSPGPU_EVENT_PPF, + P3D = ctru_sys::GSPGPU_EVENT_P3D, + DMA = ctru_sys::GSPGPU_EVENT_DMA, } -/// The different framebuffer formats supported by the 3DS +/// Framebuffer formats supported by the 3DS #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum FramebufferFormat { /// RGBA8. 4 bytes per pixel - Rgba8, + Rgba8 = ctru_sys::GSP_RGBA8_OES, /// BGR8. 3 bytes per pixel - Bgr8, + Bgr8 = ctru_sys::GSP_BGR8_OES, /// RGB565. 2 bytes per pixel - Rgb565, + Rgb565 = ctru_sys::GSP_RGB565_OES, /// RGB5A1. 2 bytes per pixel - Rgb5A1, + Rgb5A1 = ctru_sys::GSP_RGB5_A1_OES, /// RGBA4. 2 bytes per pixel - Rgba4, + Rgba4 = ctru_sys::GSP_RGBA4_OES, } impl FramebufferFormat { diff --git a/ctru-rs/src/services/mod.rs b/ctru-rs/src/services/mod.rs index 5abf93a..6b9e115 100644 --- a/ctru-rs/src/services/mod.rs +++ b/ctru-rs/src/services/mod.rs @@ -10,6 +10,7 @@ pub mod apt; pub mod cam; pub mod cfgu; pub mod fs; +pub mod gfx; pub mod gspgpu; pub mod hid; pub mod ndsp; @@ -18,6 +19,25 @@ mod reference; pub mod soc; pub mod sslc; +cfg_if::cfg_if! { + if #[cfg(all(feature = "romfs", romfs_exists))] { + pub mod romfs; + } else { + pub mod romfs { + //! The RomFS folder has not been detected and/or the `romfs` feature has not been enabled. + //! + //! Configure the path in Cargo.toml (the default path is "romfs"). Paths are relative to the + //! `CARGO_MANIFEST_DIR` environment variable, which is the directory containing the manifest of + //! your package. + //! + //! ```toml + //! [package.metadata.cargo-3ds] + //! romfs_dir = "romfs" + //! ``` + } + } +} + pub use self::apt::Apt; pub use self::hid::Hid; diff --git a/ctru-rs/src/romfs.rs b/ctru-rs/src/services/romfs.rs similarity index 97% rename from ctru-rs/src/romfs.rs rename to ctru-rs/src/services/romfs.rs index e601898..fd022e8 100644 --- a/ctru-rs/src/romfs.rs +++ b/ctru-rs/src/services/romfs.rs @@ -1,3 +1,5 @@ +//! Read-Only Memory FileSystem +//! //! This module only gets compiled if the configured RomFS directory is found and the `romfs` //! feature is enabled. //! diff --git a/ctru-rs/src/test_runner.rs b/ctru-rs/src/test_runner.rs index 8b3f117..00634f6 100644 --- a/ctru-rs/src/test_runner.rs +++ b/ctru-rs/src/test_runner.rs @@ -6,10 +6,7 @@ use std::io; use test::{ColorConfig, OutputFormat, TestDescAndFn, TestFn, TestOpts}; -use crate::console::Console; -use crate::gfx::Gfx; -use crate::services::hid::{Hid, KeyPad}; -use crate::services::Apt; +use crate::prelude::*; /// A custom runner to be used with `#[test_runner]`. This simple implementation /// runs all tests in series, "failing" on the first one to panic (really, the From 43b83b53565360d6fcb5f93ca0bfaecbda976fa9 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Wed, 29 Mar 2023 21:02:00 +0200 Subject: [PATCH 039/116] More modules starndardised --- ctru-rs/examples/audio-filters.rs | 10 ++-- ctru-rs/examples/buttons.rs | 10 ++-- ctru-rs/examples/camera-image.rs | 4 +- ctru-rs/examples/file-explorer.rs | 12 ++--- ctru-rs/examples/gfx-3d-mode.rs | 4 +- ctru-rs/examples/gfx-wide-mode.rs | 4 +- ctru-rs/examples/graphics-bitmap.rs | 2 +- ctru-rs/examples/hashmaps.rs | 2 +- ctru-rs/examples/hello-both-screens.rs | 2 +- ctru-rs/examples/hello-world.rs | 2 +- ctru-rs/examples/linear-memory.rs | 2 +- ctru-rs/examples/mii-selector.rs | 2 +- ctru-rs/examples/network-sockets.rs | 2 +- ctru-rs/examples/output-3dslink.rs | 2 +- ctru-rs/examples/romfs.rs | 2 +- ctru-rs/examples/software-keyboard.rs | 4 +- ctru-rs/examples/system-configuration.rs | 2 +- ctru-rs/examples/time-rtc.rs | 2 +- ctru-rs/examples/title-info.rs | 8 ++-- ctru-rs/src/lib.rs | 6 +-- ctru-rs/src/services/fs.rs | 58 ++++++++++++------------ ctru-rs/src/services/hid.rs | 56 +++++++++++------------ ctru-rs/src/services/ps.rs | 32 ++++++------- ctru-rs/src/services/soc.rs | 8 +++- ctru-rs/src/services/sslc.rs | 4 +- ctru-rs/src/test_runner.rs | 2 +- 26 files changed, 126 insertions(+), 118 deletions(-) diff --git a/ctru-rs/examples/audio-filters.rs b/ctru-rs/examples/audio-filters.rs index 616b8d4..8c11799 100644 --- a/ctru-rs/examples/audio-filters.rs +++ b/ctru-rs/examples/audio-filters.rs @@ -102,23 +102,23 @@ fn main() { hid.scan_input(); let keys_down = hid.keys_down(); - if keys_down.contains(KeyPad::KEY_START) { + if keys_down.contains(KeyPad::START) { break; } // break in order to return to hbmenu - if keys_down.intersects(KeyPad::KEY_DOWN) { + if keys_down.intersects(KeyPad::DOWN) { note = note.saturating_sub(1); - } else if keys_down.intersects(KeyPad::KEY_UP) { + } else if keys_down.intersects(KeyPad::UP) { note = std::cmp::min(note + 1, NOTEFREQ.len() - 1); } let mut update_params = false; - if keys_down.intersects(KeyPad::KEY_LEFT) { + if keys_down.intersects(KeyPad::LEFT) { filter -= 1; filter = filter.rem_euclid(filter_names.len() as _); update_params = true; - } else if keys_down.intersects(KeyPad::KEY_RIGHT) { + } else if keys_down.intersects(KeyPad::RIGHT) { filter += 1; filter = filter.rem_euclid(filter_names.len() as _); diff --git a/ctru-rs/examples/buttons.rs b/ctru-rs/examples/buttons.rs index c8f9f71..1cc5355 100644 --- a/ctru-rs/examples/buttons.rs +++ b/ctru-rs/examples/buttons.rs @@ -42,19 +42,19 @@ fn main() { // You can also use the .bits() method to do direct comparisons on // the underlying bits - if keys.contains(KeyPad::KEY_A) { + if keys.contains(KeyPad::A) { println!("You held A!"); } - if keys.bits() & KeyPad::KEY_B.bits() != 0 { + if keys.bits() & KeyPad::B.bits() != 0 { println!("You held B!"); } - if keys.contains(KeyPad::KEY_X | KeyPad::KEY_Y) { + if keys.contains(KeyPad::X | KeyPad::Y) { println!("You held X and Y!"); } - if keys.intersects(KeyPad::KEY_L | KeyPad::KEY_R | KeyPad::KEY_ZL | KeyPad::KEY_ZR) { + if keys.intersects(KeyPad::L | KeyPad::R | KeyPad::ZL | KeyPad::ZR) { println!("You held a shoulder button!"); } - if keys.intersects(KeyPad::KEY_START) { + if keys.intersects(KeyPad::START) { println!("See ya!"); break; } diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 7922f20..7559275 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -65,11 +65,11 @@ fn main() { hid.scan_input(); keys_down = hid.keys_down(); - if keys_down.contains(KeyPad::KEY_START) { + if keys_down.contains(KeyPad::START) { break; } - if keys_down.contains(KeyPad::KEY_R) { + if keys_down.contains(KeyPad::R) { println!("Capturing new image"); let camera = &mut cam.outer_right_cam; diff --git a/ctru-rs/examples/file-explorer.rs b/ctru-rs/examples/file-explorer.rs index 3bfeadc..88de947 100644 --- a/ctru-rs/examples/file-explorer.rs +++ b/ctru-rs/examples/file-explorer.rs @@ -56,15 +56,15 @@ impl<'a> FileExplorer<'a> { self.hid.scan_input(); let input = self.hid.keys_down(); - if input.contains(KeyPad::KEY_START) { + if input.contains(KeyPad::START) { break; - } else if input.contains(KeyPad::KEY_B) && self.path.components().count() > 1 { + } else if input.contains(KeyPad::B) && self.path.components().count() > 1 { self.path.pop(); self.console.clear(); self.print_menu(); - } else if input.contains(KeyPad::KEY_A) { + } else if input.contains(KeyPad::A) { self.get_input_and_run(Self::set_next_path); - } else if input.contains(KeyPad::KEY_X) { + } else if input.contains(KeyPad::X) { self.get_input_and_run(Self::set_exact_path); } @@ -147,11 +147,11 @@ impl<'a> FileExplorer<'a> { self.hid.scan_input(); let input = self.hid.keys_down(); - if input.contains(KeyPad::KEY_A) { + if input.contains(KeyPad::A) { break; } - if input.contains(KeyPad::KEY_START) { + if input.contains(KeyPad::START) { self.running = false; return; } diff --git a/ctru-rs/examples/gfx-3d-mode.rs b/ctru-rs/examples/gfx-3d-mode.rs index 171838b..da7150a 100644 --- a/ctru-rs/examples/gfx-3d-mode.rs +++ b/ctru-rs/examples/gfx-3d-mode.rs @@ -31,7 +31,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } @@ -44,7 +44,7 @@ fn main() { right_buf.ptr.copy_from(ZERO.as_ptr(), ZERO.len()); } - if hid.keys_down().contains(KeyPad::KEY_A) { + if hid.keys_down().contains(KeyPad::A) { // flip which buffer we're writing to current_side = match current_side { Side::Left => Side::Right, diff --git a/ctru-rs/examples/gfx-wide-mode.rs b/ctru-rs/examples/gfx-wide-mode.rs index 2d25f7f..ae263cd 100644 --- a/ctru-rs/examples/gfx-wide-mode.rs +++ b/ctru-rs/examples/gfx-wide-mode.rs @@ -13,11 +13,11 @@ fn main() { while apt.main_loop() { hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } - if hid.keys_down().contains(KeyPad::KEY_A) { + if hid.keys_down().contains(KeyPad::A) { drop(console); let wide_mode = gfx.top_screen.borrow().get_wide_mode(); diff --git a/ctru-rs/examples/graphics-bitmap.rs b/ctru-rs/examples/graphics-bitmap.rs index 5421e9b..e2b7def 100644 --- a/ctru-rs/examples/graphics-bitmap.rs +++ b/ctru-rs/examples/graphics-bitmap.rs @@ -43,7 +43,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } diff --git a/ctru-rs/examples/hashmaps.rs b/ctru-rs/examples/hashmaps.rs index 42efee2..e6b9619 100644 --- a/ctru-rs/examples/hashmaps.rs +++ b/ctru-rs/examples/hashmaps.rs @@ -26,7 +26,7 @@ fn main() { gfx.wait_for_vblank(); hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } } diff --git a/ctru-rs/examples/hello-both-screens.rs b/ctru-rs/examples/hello-both-screens.rs index 38934d3..601027f 100644 --- a/ctru-rs/examples/hello-both-screens.rs +++ b/ctru-rs/examples/hello-both-screens.rs @@ -32,7 +32,7 @@ fn main() { gfx.wait_for_vblank(); hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } } diff --git a/ctru-rs/examples/hello-world.rs b/ctru-rs/examples/hello-world.rs index 910813a..d61a7bc 100644 --- a/ctru-rs/examples/hello-world.rs +++ b/ctru-rs/examples/hello-world.rs @@ -26,7 +26,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/linear-memory.rs b/ctru-rs/examples/linear-memory.rs index 440e62b..a44a35f 100644 --- a/ctru-rs/examples/linear-memory.rs +++ b/ctru-rs/examples/linear-memory.rs @@ -34,7 +34,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/mii-selector.rs b/ctru-rs/examples/mii-selector.rs index 84115b6..7488c0c 100644 --- a/ctru-rs/examples/mii-selector.rs +++ b/ctru-rs/examples/mii-selector.rs @@ -30,7 +30,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/network-sockets.rs b/ctru-rs/examples/network-sockets.rs index e53ef42..db750bc 100644 --- a/ctru-rs/examples/network-sockets.rs +++ b/ctru-rs/examples/network-sockets.rs @@ -61,7 +61,7 @@ fn main() { } hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; }; } diff --git a/ctru-rs/examples/output-3dslink.rs b/ctru-rs/examples/output-3dslink.rs index 2d6b147..61731d2 100644 --- a/ctru-rs/examples/output-3dslink.rs +++ b/ctru-rs/examples/output-3dslink.rs @@ -30,7 +30,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/romfs.rs b/ctru-rs/examples/romfs.rs index 965cb6d..f52fff3 100644 --- a/ctru-rs/examples/romfs.rs +++ b/ctru-rs/examples/romfs.rs @@ -33,7 +33,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/software-keyboard.rs b/ctru-rs/examples/software-keyboard.rs index 0415b10..ffa096c 100644 --- a/ctru-rs/examples/software-keyboard.rs +++ b/ctru-rs/examples/software-keyboard.rs @@ -18,7 +18,7 @@ fn main() { hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_A) { + if hid.keys_down().contains(KeyPad::A) { // Prepares a software keyboard with two buttons: One to cancel input and one // to accept it. You can also use `Swkbd::init()` to launch the keyboard in different // configurations. @@ -37,7 +37,7 @@ fn main() { } } - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } } diff --git a/ctru-rs/examples/system-configuration.rs b/ctru-rs/examples/system-configuration.rs index 284e3f1..fde7d18 100644 --- a/ctru-rs/examples/system-configuration.rs +++ b/ctru-rs/examples/system-configuration.rs @@ -19,7 +19,7 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } // Flush and swap framebuffers diff --git a/ctru-rs/examples/time-rtc.rs b/ctru-rs/examples/time-rtc.rs index b7ff399..a229105 100644 --- a/ctru-rs/examples/time-rtc.rs +++ b/ctru-rs/examples/time-rtc.rs @@ -16,7 +16,7 @@ fn main() { // Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } diff --git a/ctru-rs/examples/title-info.rs b/ctru-rs/examples/title-info.rs index 1f5654f..6dd39a6 100644 --- a/ctru-rs/examples/title-info.rs +++ b/ctru-rs/examples/title-info.rs @@ -35,10 +35,10 @@ fn main() { //Scan all the inputs. This should be done once for each frame hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } - if hid.keys_down().contains(KeyPad::KEY_SELECT) { + if hid.keys_down().contains(KeyPad::SELECT) { refresh = true; offset = 0; use_nand = !use_nand; @@ -46,12 +46,12 @@ fn main() { let cur_list = if use_nand { &nand_list } else { &sd_list }; - if hid.keys_down().intersects(KeyPad::KEY_DOWN) { + if hid.keys_down().intersects(KeyPad::DOWN) { if offset + 1 < cur_list.len() { offset = offset + 1; refresh = true; } - } else if hid.keys_down().intersects(KeyPad::KEY_UP) { + } else if hid.keys_down().intersects(KeyPad::UP) { if offset > 0 { offset = offset - 1; refresh = true; diff --git a/ctru-rs/src/lib.rs b/ctru-rs/src/lib.rs index 2db6c22..bcd60e0 100644 --- a/ctru-rs/src/lib.rs +++ b/ctru-rs/src/lib.rs @@ -15,10 +15,10 @@ extern crate pthread_3ds; #[cfg(feature = "big-stack")] static __stacksize__: usize = 2 * 1024 * 1024; // 2MB -/// Activate ´ctru-rs´' default panic handler. +/// Activate the default panic handler. /// /// With this implementation, the main thread will stop and try to print debug info to an available [console::Console]. -/// In case it fails to find an active [console::Console], the program will just exit. +/// In case it fails to find an active [console::Console] the program will just exit. /// /// # Notes /// @@ -48,7 +48,7 @@ fn panic_hook_setup() { Ok(hid) => loop { hid.scan_input(); let keys = hid.keys_down(); - if keys.contains(KeyPad::KEY_SELECT) { + if keys.contains(KeyPad::SELECT) { break; } }, diff --git a/ctru-rs/src/services/fs.rs b/ctru-rs/src/services/fs.rs index 6cd3728..f53b24c 100644 --- a/ctru-rs/src/services/fs.rs +++ b/ctru-rs/src/services/fs.rs @@ -1,7 +1,7 @@ //! Filesystem service //! //! This module contains basic methods to manipulate the contents of the 3DS's filesystem. -//! Only the SD card is currently supported. +//! Only the SD card is currently supported. You should prefer using `std::fs`. use bitflags::bitflags; use std::ffi::OsString; @@ -52,38 +52,40 @@ pub enum FsMediaType { } #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum PathType { - Invalid, - Empty, - Binary, - ASCII, - UTF16, + Invalid = ctru_sys::PATH_INVALID, + Empty = ctru_sys::PATH_EMPTY, + Binary = ctru_sys::PATH_BINARY, + ASCII = ctru_sys::PATH_ASCII, + UTF16 = ctru_sys::PATH_UTF16, } #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum ArchiveID { - RomFS, - Savedata, - Extdata, - SharedExtdata, - SystemSavedata, - Sdmc, - SdmcWriteOnly, - BossExtdata, - CardSpiFS, - ExtDataAndBossExtdata, - SystemSaveData2, - NandRW, - NandRO, - NandROWriteAccess, - SaveDataAndContent, - SaveDataAndContent2, - NandCtrFS, - TwlPhoto, - NandTwlFS, - GameCardSavedata, - UserSavedata, - DemoSavedata, + RomFS = ctru_sys::ARCHIVE_ROMFS, + Savedata = ctru_sys::ARCHIVE_ROMFS, + Extdata = ctru_sys::ARCHIVE_ROMFS, + SharedExtdata = ctru_sys::ARCHIVE_ROMFS, + SystemSavedata = ctru_sys::ARCHIVE_ROMFS, + Sdmc = ctru_sys::ARCHIVE_ROMFS, + SdmcWriteOnly = ctru_sys::ARCHIVE_ROMFS, + BossExtdata = ctru_sys::ARCHIVE_ROMFS, + CardSpiFS = ctru_sys::ARCHIVE_ROMFS, + ExtDataAndBossExtdata = ctru_sys::ARCHIVE_ROMFS, + SystemSaveData2 = ctru_sys::ARCHIVE_ROMFS, + NandRW = ctru_sys::ARCHIVE_ROMFS, + NandRO = ctru_sys::ARCHIVE_ROMFS, + NandROWriteAccess = ctru_sys::ARCHIVE_ROMFS, + SaveDataAndContent = ctru_sys::ARCHIVE_ROMFS, + SaveDataAndContent2 = ctru_sys::ARCHIVE_ROMFS, + NandCtrFS = ctru_sys::ARCHIVE_ROMFS, + TwlPhoto = ctru_sys::ARCHIVE_ROMFS, + NandTwlFS = ctru_sys::ARCHIVE_ROMFS, + GameCardSavedata = ctru_sys::ARCHIVE_ROMFS, + UserSavedata = ctru_sys::ARCHIVE_ROMFS, + DemoSavedata = ctru_sys::ARCHIVE_ROMFS, } /// Represents the filesystem service. No file IO can be performed diff --git a/ctru-rs/src/services/hid.rs b/ctru-rs/src/services/hid.rs index 6aacf3a..26b034f 100644 --- a/ctru-rs/src/services/hid.rs +++ b/ctru-rs/src/services/hid.rs @@ -10,34 +10,34 @@ bitflags::bitflags! { /// inputs on the 3DS #[derive(Default)] pub struct KeyPad: u32 { - const KEY_A = 1u32 << 0; - const KEY_B = 1u32 << 1; - const KEY_SELECT = 1u32 << 2; - const KEY_START = 1u32 << 3; - const KEY_DRIGHT = 1u32 << 4; - const KEY_DLEFT = 1u32 << 5; - const KEY_DUP = 1u32 << 6; - const KEY_DDOWN = 1u32 << 7; - const KEY_R = 1u32 << 8; - const KEY_L = 1u32 << 9; - const KEY_X = 1u32 << 10; - const KEY_Y = 1u32 << 11; - const KEY_ZL = 1u32 << 14; - const KEY_ZR = 1u32 << 15; - const KEY_TOUCH = 1u32 << 20; - const KEY_CSTICK_RIGHT = 1u32 << 24; - const KEY_CSTICK_LEFT = 1u32 << 25; - const KEY_CSTICK_UP = 1u32 << 26; - const KEY_CSTICK_DOWN = 1u32 << 27; - const KEY_CPAD_RIGHT = 1u32 << 28; - const KEY_CPAD_LEFT = 1u32 << 29; - const KEY_CPAD_UP = 1u32 << 30; - const KEY_CPAD_DOWN = 1u32 << 31; - // convenience catch-all for the dpad and cpad - const KEY_UP = KeyPad::KEY_DUP.bits | KeyPad::KEY_CPAD_UP.bits; - const KEY_DOWN = KeyPad::KEY_DDOWN.bits | KeyPad::KEY_CPAD_DOWN.bits; - const KEY_LEFT = KeyPad::KEY_DLEFT.bits | KeyPad::KEY_CPAD_LEFT.bits; - const KEY_RIGHT = KeyPad::KEY_DRIGHT.bits | KeyPad::KEY_CPAD_RIGHT.bits; + const A = ctru_sys::KEY_A; + const B = ctru_sys::KEY_B; + const SELECT = ctru_sys::KEY_SELECT; + const START = ctru_sys::KEY_START; + const DRIGHT = ctru_sys::KEY_DRIGHT; + const DLEFT = ctru_sys::KEY_DLEFT; + const DUP = ctru_sys::KEY_DUP; + const DDOWN = ctru_sys::KEY_DDOWN; + const R = ctru_sys::KEY_R; + const L = ctru_sys::KEY_L; + const X = ctru_sys::KEY_X; + const Y = ctru_sys::KEY_Y; + const ZL = ctru_sys::KEY_ZL; + const ZR = ctru_sys::KEY_ZR; + const TOUCH = ctru_sys::KEY_TOUCH; + const CSTICK_RIGHT = ctru_sys::KEY_CSTICK_RIGHT; + const CSTICK_LEFT = ctru_sys::KEY_CSTICK_LEFT; + const CSTICK_UP = ctru_sys::KEY_CSTICK_UP; + const CSTICK_DOWN = ctru_sys::KEY_CSTICK_DOWN; + const CPAD_RIGHT = ctru_sys::KEY_CPAD_RIGHT; + const CPAD_LEFT = ctru_sys::KEY_CPAD_LEFT; + const CPAD_UP = ctru_sys::KEY_CPAD_UP; + const CPAD_DOWN = ctru_sys::KEY_CPAD_DOWN; + // Convenience catch-all for the dpad and cpad + const UP = KeyPad::DUP.bits() | KeyPad::CPAD_UP.bits(); + const DOWN = KeyPad::DDOWN.bits() | KeyPad::CPAD_DOWN.bits(); + const LEFT = KeyPad::DLEFT.bits() | KeyPad::CPAD_LEFT.bits(); + const RIGHT = KeyPad::DRIGHT.bits() | KeyPad::CPAD_RIGHT.bits(); } } diff --git a/ctru-rs/src/services/ps.rs b/ctru-rs/src/services/ps.rs index 79ebcd7..8795b32 100644 --- a/ctru-rs/src/services/ps.rs +++ b/ctru-rs/src/services/ps.rs @@ -8,26 +8,26 @@ use crate::Result; #[repr(u32)] pub enum AESAlgorithm { - CbcEnc, - CbcDec, - CtrEnc, - CtrDec, - CcmEnc, - CcmDec, + CbcEnc = ctru_sys::PS_ALGORITHM_CBC_ENC, + CbcDec = ctru_sys::PS_ALGORITHM_CBC_DEC, + CtrEnc = ctru_sys::PS_ALGORITHM_CTR_ENC, + CtrDec = ctru_sys::PS_ALGORITHM_CTR_DEC, + CcmEnc = ctru_sys::PS_ALGORITHM_CCM_ENC, + CcmDec = ctru_sys::PS_ALGORITHM_CCM_DEC, } #[repr(u32)] pub enum AESKeyType { - Keyslot0D, - Keyslot2D, - Keyslot31, - Keyslot38, - Keyslot32, - Keyslot39Dlp, - Keyslot2E, - KeyslotInvalid, - Keyslot36, - Keyslot39Nfc, + Keyslot0D = ctru_sys::PS_KEYSLOT_0D, + Keyslot2D = ctru_sys::PS_KEYSLOT_2D, + Keyslot2E = ctru_sys::PS_KEYSLOT_2E, + Keyslot31 = ctru_sys::PS_KEYSLOT_31, + Keyslot32 = ctru_sys::PS_KEYSLOT_32, + Keyslot36 = ctru_sys::PS_KEYSLOT_36, + Keyslot38 = ctru_sys::PS_KEYSLOT_38, + Keyslot39Dlp = ctru_sys::PS_KEYSLOT_39_DLP, + Keyslot39Nfc = ctru_sys::PS_KEYSLOT_39_NFC, + KeyslotInvalid = ctru_sys::PS_KEYSLOT_INVALID, } pub struct Ps(()); diff --git a/ctru-rs/src/services/soc.rs b/ctru-rs/src/services/soc.rs index aecd889..2b7ae7d 100644 --- a/ctru-rs/src/services/soc.rs +++ b/ctru-rs/src/services/soc.rs @@ -1,3 +1,5 @@ +//! Network Socket + use libc::memalign; use std::net::Ipv4Addr; use std::sync::Mutex; @@ -6,8 +8,10 @@ use crate::error::ResultCode; use crate::services::ServiceReference; use crate::Error; -/// Soc service. Initializing this service will enable the use of network sockets and utilities -/// such as those found in `std::net`. The service will be closed when this struct is is dropped. +/// Network socket service +/// +/// Initializing this service will enable the use of network sockets and utilities +/// such as those found in `std::net`. The service will close once this struct gets dropped. pub struct Soc { _service_handler: ServiceReference, sock_3dslink: libc::c_int, diff --git a/ctru-rs/src/services/sslc.rs b/ctru-rs/src/services/sslc.rs index aa4d26f..99eb456 100644 --- a/ctru-rs/src/services/sslc.rs +++ b/ctru-rs/src/services/sslc.rs @@ -1,3 +1,5 @@ +//! SSLC (TLS) service + // TODO: Implement remaining functions use crate::error::ResultCode; @@ -5,7 +7,7 @@ use crate::error::ResultCode; pub struct SslC(()); impl SslC { - /// Initialize sslc + /// Initialize the service pub fn init() -> crate::Result { unsafe { ResultCode(ctru_sys::sslcInit(0))?; diff --git a/ctru-rs/src/test_runner.rs b/ctru-rs/src/test_runner.rs index 00634f6..1f0698f 100644 --- a/ctru-rs/src/test_runner.rs +++ b/ctru-rs/src/test_runner.rs @@ -44,7 +44,7 @@ pub(crate) fn run(tests: &[&TestDescAndFn]) { gfx.wait_for_vblank(); hid.scan_input(); - if hid.keys_down().contains(KeyPad::KEY_START) { + if hid.keys_down().contains(KeyPad::START) { break; } } From 7688644fe17b39ea3dc07d8e8c1b35d0fe3f7692 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Thu, 30 Mar 2023 18:21:52 +0200 Subject: [PATCH 040/116] CAM renaming/fixing with build problems --- ctru-rs/src/services/cam.rs | 258 ++++++++++++++++-------------------- ctru-rs/src/services/soc.rs | 2 +- 2 files changed, 118 insertions(+), 142 deletions(-) diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 7f96ebd..4ce97c8 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -1,11 +1,10 @@ -//! CAM service +//! Camera service //! -//! The CAM service provides access to the cameras. Cameras can return 2D images -//! in the form of byte vectors which can be used for display or other usages. +//! The CAM service provides access to the cameras. Cameras can return images +//! in the form of byte vectors which can be displayed or used in other ways. use crate::error::{Error, ResultCode}; use crate::services::gspgpu::FramebufferFormat; -use bitflags::bitflags; use ctru_sys::Handle; use std::time::Duration; @@ -21,177 +20,154 @@ pub struct Cam { pub both_outer_cams: BothOutwardCam, } -bitflags! { - /// A set of flags to be passed to [Camera::flip_image] - #[derive(Default)] - pub struct CamFlip: u32 { - const NONE = ctru_sys::FLIP_NONE; - const HORIZONTAL = ctru_sys::FLIP_HORIZONTAL; - const VERTICAL = ctru_sys::FLIP_VERTICAL; - const REVERSE = ctru_sys::FLIP_REVERSE; - } +/// Flag to pass to [Camera::flip_image] +#[derive(Default)] +#[repr(u32)] +pub enum FlipMode { + None = ctru_sys::FLIP_NONE, + Horizontal = ctru_sys::FLIP_HORIZONTAL, + Vertical = ctru_sys::FLIP_VERTICAL, + Reverse = ctru_sys::FLIP_REVERSE, } -bitflags! { - /// A set of flags to be passed to [Camera::set_view_size] - #[derive(Default)] - pub struct CamSize: u32 { - const VGA = ctru_sys::SIZE_VGA; - const QVGA = ctru_sys::SIZE_QVGA; - const QQVGA = ctru_sys::SIZE_QQVGA; - const CIF = ctru_sys::SIZE_CIF; - const QCIF = ctru_sys::SIZE_QCIF; - const DS_LCD = ctru_sys::SIZE_DS_LCD; - const DS_LCD_X4 = ctru_sys::SIZE_DS_LCDx4; - const CTR_TOP_LCD = ctru_sys::SIZE_CTR_TOP_LCD; - const CTR_BOTTOM_LCD = ctru_sys::SIZE_CTR_BOTTOM_LCD; - } +/// Flag to pass to [Camera::set_view_size] +#[repr(u32)] +pub enum PictureSize { + Vga = ctru_sys::SIZE_VGA, + QVga = ctru_sys::SIZE_QVGA, + QQVga = ctru_sys::SIZE_QQVGA, + Cif = ctru_sys::SIZE_CIF, + QCif = ctru_sys::SIZE_QCIF, + DS = ctru_sys::SIZE_DS_LCD, + DSX4 = ctru_sys::SIZE_DS_LCDx4, + TopLCD = ctru_sys::SIZE_CTR_TOP_LCD, + BottomLCD = ctru_sys::SIZE_CTR_BOTTOM_LCD, } -bitflags! { - /// A set of flags to be passed to [Camera::set_frame_rate] - #[derive(Default)] - pub struct CamFrameRate: u32 { - const RATE_15 = ctru_sys::FRAME_RATE_15; - const RATE_15_TO_5 = ctru_sys::FRAME_RATE_15_TO_5; - const RATE_15_TO_2 = ctru_sys::FRAME_RATE_15_TO_2; - const RATE_10 = ctru_sys::FRAME_RATE_10; - const RATE_8_5 = ctru_sys::FRAME_RATE_8_5; - const RATE_5 = ctru_sys::FRAME_RATE_5; - const RATE_20 = ctru_sys::FRAME_RATE_20; - const RATE_20_TO_5 = ctru_sys::FRAME_RATE_20_TO_5; - const RATE_30 = ctru_sys::FRAME_RATE_30; - const RATE_30_TO_5 = ctru_sys::FRAME_RATE_30_TO_5; - const RATE_15_TO_10 = ctru_sys::FRAME_RATE_15_TO_10; - const RATE_20_TO_10 = ctru_sys::FRAME_RATE_20_TO_10; - const RATE_30_TO_10 = ctru_sys::FRAME_RATE_30_TO_10; - } +/// Flag to pass to [Camera::set_frame_rate] +#[repr(u32)] +pub enum FrameRate { + Fps15 = ctru_sys::FRAME_RATE_15, + Fps15To5 = ctru_sys::FRAME_RATE_15_TO_5, + Fps15To2 = ctru_sys::FRAME_RATE_15_TO_2, + Fps10 = ctru_sys::FRAME_RATE_10, + Fps8_5 = ctru_sys::FRAME_RATE_8_5, + Fps5 = ctru_sys::FRAME_RATE_5, + Fps20 = ctru_sys::FRAME_RATE_20, + Fps20To5 = ctru_sys::FRAME_RATE_20_TO_5, + Fps30 = ctru_sys::FRAME_RATE_30, + Fps30To5 = ctru_sys::FRAME_RATE_30_TO_5, + Fps15To10 = ctru_sys::FRAME_RATE_15_TO_10, + Fps20To10 = ctru_sys::FRAME_RATE_20_TO_10, + Fps30To10 = ctru_sys::FRAME_RATE_30_TO_10, } -bitflags! { - /// A set of flags to be passed to [Camera::set_white_balance] or - /// [Camera::set_white_balance_without_base_up] - #[derive(Default)] - pub struct CamWhiteBalance: u32 { - const AUTO = ctru_sys::WHITE_BALANCE_AUTO; - const BALANCE_3200K = ctru_sys::WHITE_BALANCE_3200K; - const BALANCE_4150K = ctru_sys::WHITE_BALANCE_4150K; - const BALANCE_5200K = ctru_sys::WHITE_BALANCE_5200K; - const BALANCE_6000K = ctru_sys::WHITE_BALANCE_6000K; - const BALANCE_7000K = ctru_sys::WHITE_BALANCE_7000K; - - const NORMAL = ctru_sys::WHITE_BALANCE_NORMAL; - const TUNGSTEN = ctru_sys::WHITE_BALANCE_TUNGSTEN; - const WHITE_FLUORESCENT_LIGHT = ctru_sys::WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT; - const DAYLIGHT = ctru_sys::WHITE_BALANCE_DAYLIGHT; - const CLOUDY = ctru_sys::WHITE_BALANCE_CLOUDY; - const HORIZON = ctru_sys::WHITE_BALANCE_HORIZON; - const SHADE = ctru_sys::WHITE_BALANCE_SHADE; - } +/// Flag to pass to [Camera::set_white_balance] or +/// [Camera::set_white_balance_without_base_up] +#[repr(u32)] +pub enum WhiteBalance { + Auto = ctru_sys::WHITE_BALANCE_AUTO, + Type3200K = ctru_sys::WHITE_BALANCE_3200K, + Type4150K = ctru_sys::WHITE_BALANCE_4150K, + Type5200K = ctru_sys::WHITE_BALANCE_5200K, + Type6000K = ctru_sys::WHITE_BALANCE_6000K, + Type7000K = ctru_sys::WHITE_BALANCE_7000K, + + Normal = ctru_sys::WHITE_BALANCE_NORMAL, + Tungsten = ctru_sys::WHITE_BALANCE_TUNGSTEN, + FluorescentLight = ctru_sys::WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT, + Daylight = ctru_sys::WHITE_BALANCE_DAYLIGHT, + Cloudy = ctru_sys::WHITE_BALANCE_CLOUDY, + Horizon = ctru_sys::WHITE_BALANCE_HORIZON, + Shade = ctru_sys::WHITE_BALANCE_SHADE, } -bitflags! { - /// A set of flags to be passed to [Camera::set_photo_mode] - #[derive(Default)] - pub struct CamPhotoMode: u32 { - const NORMAL = ctru_sys::PHOTO_MODE_NORMAL; - const PORTRAIT = ctru_sys::PHOTO_MODE_PORTRAIT; - const LANDSCAPE = ctru_sys::PHOTO_MODE_LANDSCAPE; - const NIGHTVIEW = ctru_sys::PHOTO_MODE_NIGHTVIEW; - const LETTER = ctru_sys::PHOTO_MODE_LETTER; - } +/// Flag to pass to [Camera::set_photo_mode] +#[repr(u32)] +pub enum PhotoMode { + Normal = ctru_sys::PHOTO_MODE_NORMAL, + Portrait = ctru_sys::PHOTO_MODE_PORTRAIT, + Landscape = ctru_sys::PHOTO_MODE_LANDSCAPE, + Nightview = ctru_sys::PHOTO_MODE_NIGHTVIEW, + Letter = ctru_sys::PHOTO_MODE_LETTER, } -bitflags! { - /// A set of flags to be passed to [Camera::set_effect] - #[derive(Default)] - pub struct CamEffect: u32 { - const NONE = ctru_sys::EFFECT_NONE; - const MONO = ctru_sys::EFFECT_MONO; - const SEPIA = ctru_sys::EFFECT_SEPIA; - const NEGATIVE = ctru_sys::EFFECT_NEGATIVE; - const NEGAFILM = ctru_sys::EFFECT_NEGAFILM; - const SEPIA01 = ctru_sys::EFFECT_SEPIA01; - } +/// Flag to pass to [Camera::set_effect] +#[repr(u32)] +pub enum Effect { + None = ctru_sys::EFFECT_NONE, + Mono = ctru_sys::EFFECT_MONO, + Sepia = ctru_sys::EFFECT_SEPIA, + Negative = ctru_sys::EFFECT_NEGATIVE, + Negafilm = ctru_sys::EFFECT_NEGAFILM, + Sepia01 = ctru_sys::EFFECT_SEPIA01, } -bitflags! { - /// A set of flags to be passed to [Camera::set_contrast] - #[derive(Default)] - pub struct CamContrast: u32 { - const PATTERN_01 = ctru_sys::CONTRAST_PATTERN_01; - const PATTERN_02 = ctru_sys::CONTRAST_PATTERN_02; - const PATTERN_03 = ctru_sys::CONTRAST_PATTERN_03; - const PATTERN_04 = ctru_sys::CONTRAST_PATTERN_04; - const PATTERN_05 = ctru_sys::CONTRAST_PATTERN_05; - const PATTERN_06 = ctru_sys::CONTRAST_PATTERN_06; - const PATTERN_07 = ctru_sys::CONTRAST_PATTERN_07; - const PATTERN_08 = ctru_sys::CONTRAST_PATTERN_08; - const PATTERN_09 = ctru_sys::CONTRAST_PATTERN_09; - const PATTERN_10 = ctru_sys::CONTRAST_PATTERN_10; - const PATTERN_11 = ctru_sys::CONTRAST_PATTERN_11; - - const LOW = ctru_sys::CONTRAST_LOW; - const NORMAL = ctru_sys::CONTRAST_NORMAL; - const HIGH = ctru_sys::CONTRAST_HIGH; - } +/// Flag to pass to [Camera::set_contrast] +#[repr(u32)] +pub enum Contrast { + Pattern01 = ctru_sys::CONTRAST_PATTERN_01, + Pattern02 = ctru_sys::CONTRAST_PATTERN_02, + Pattern03 = ctru_sys::CONTRAST_PATTERN_03, + Pattern04 = ctru_sys::CONTRAST_PATTERN_04, + Pattern05 = ctru_sys::CONTRAST_PATTERN_05, + Pattern06 = ctru_sys::CONTRAST_PATTERN_06, + Pattern07 = ctru_sys::CONTRAST_PATTERN_07, + Pattern08 = ctru_sys::CONTRAST_PATTERN_08, + Pattern09 = ctru_sys::CONTRAST_PATTERN_09, + Pattern10 = ctru_sys::CONTRAST_PATTERN_10, + Pattern11 = ctru_sys::CONTRAST_PATTERN_11, + + Low = ctru_sys::CONTRAST_LOW, + Normal = ctru_sys::CONTRAST_NORMAL, + High = ctru_sys::CONTRAST_HIGH, } -bitflags! { - /// A set of flags to be passed to [Camera::set_lens_correction] - #[derive(Default)] - pub struct CamLensCorrection: u32 { - const OFF = ctru_sys::LENS_CORRECTION_OFF; - const ON_70 = ctru_sys::LENS_CORRECTION_ON_70; - const ON_90 = ctru_sys::LENS_CORRECTION_ON_90; +/// Flag to pass to [Camera::set_lens_correction] +#[repr(u32)] +pub enum LensCorrection { + Off = ctru_sys::LENS_CORRECTION_DARK, + Normal = ctru_sys::LENS_CORRECTION_NORMAL, + Bright = ctru_sys::LENS_CORRECTION_BRIGHT, +} - const DARK = ctru_sys::LENS_CORRECTION_DARK; - const NORMAL = ctru_sys::LENS_CORRECTION_NORMAL; - const BRIGHT = ctru_sys::LENS_CORRECTION_BRIGHT; - } +/// Flag to pass to [Camera::set_output_format] +#[repr(u32)] +pub enum OutputFormat { + Yuv422 = ctru_sys::OUTPUT_YUV_422, + Rgb565 = ctru_sys::OUTPUT_RGB_565, } -bitflags! { - /// A set of flags to be passed to [Camera::set_output_format] - #[derive(Default)] - pub struct CamOutputFormat: u32 { - const YUV_422 = ctru_sys::OUTPUT_YUV_422; - const RGB_565 = ctru_sys::OUTPUT_RGB_565; - } +/// Flag to pass to [Cam::play_shutter_sound] +#[repr(u32)] +pub enum ShutterSound { + Normal = ctru_sys::SHUTTER_SOUND_TYPE_NORMAL, + Movie = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE, + MovieEnd = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE_END, } -impl TryFrom for CamOutputFormat { +impl TryFrom for OutputFormat { type Error = (); fn try_from(value: FramebufferFormat) -> Result { match value { - FramebufferFormat::Rgb565 => Ok(CamOutputFormat::RGB_565), + FramebufferFormat::Rgb565 => Ok(OutputFormat::RGB_565), _ => Err(()), } } } -impl TryFrom for FramebufferFormat { +impl TryFrom for FramebufferFormat { type Error = (); - fn try_from(value: CamOutputFormat) -> Result { + fn try_from(value: OutputFormat) -> Result { match value { - CamOutputFormat::RGB_565 => Ok(FramebufferFormat::Rgb565), + OutputFormat::Rgb565 => Ok(FramebufferFormat::Rgb565), _ => Err(()), } } } -bitflags! { - /// A set of flags to be passed to [Cam::play_shutter_sound] - #[derive(Default)] - pub struct CamShutterSoundType: u32 { - const NORMAL = ctru_sys::SHUTTER_SOUND_TYPE_NORMAL; - const MOVIE = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE; - const MOVIE_END = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE_END; - } -} - /// Struct containing coordinates passed to [Camera::set_trimming_params]. pub struct CamTrimmingParams { x_start: i16, @@ -806,8 +782,8 @@ impl Cam { } } - /// Plays the specified sound based on the [CamShutterSoundType] argument - pub fn play_shutter_sound(&self, sound: CamShutterSoundType) -> crate::Result<()> { + /// Plays the specified sound based on the [ShutterSound] argument + pub fn play_shutter_sound(&self, sound: ShutterSound) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_PlayShutterSound(sound.bits()))?; Ok(()) diff --git a/ctru-rs/src/services/soc.rs b/ctru-rs/src/services/soc.rs index 2b7ae7d..c5df066 100644 --- a/ctru-rs/src/services/soc.rs +++ b/ctru-rs/src/services/soc.rs @@ -9,7 +9,7 @@ use crate::services::ServiceReference; use crate::Error; /// Network socket service -/// +/// /// Initializing this service will enable the use of network sockets and utilities /// such as those found in `std::net`. The service will close once this struct gets dropped. pub struct Soc { From ad11818d1f5ebc588b4065375d53b2c392fa75f6 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Thu, 30 Mar 2023 20:09:28 +0200 Subject: [PATCH 041/116] Fixed compiler errors for CAM --- ctru-rs/src/services/cam.rs | 127 ++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/ctru-rs/src/services/cam.rs b/ctru-rs/src/services/cam.rs index 4ce97c8..3d05089 100644 --- a/ctru-rs/src/services/cam.rs +++ b/ctru-rs/src/services/cam.rs @@ -21,7 +21,7 @@ pub struct Cam { } /// Flag to pass to [Camera::flip_image] -#[derive(Default)] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum FlipMode { None = ctru_sys::FLIP_NONE, @@ -31,20 +31,24 @@ pub enum FlipMode { } /// Flag to pass to [Camera::set_view_size] +#[derive(Copy, Clone, Debug)] #[repr(u32)] -pub enum PictureSize { +pub enum ViewSize { + TopLCD = ctru_sys::SIZE_CTR_TOP_LCD, + /// Equivalent to QVga + BottomLCD = ctru_sys::SIZE_CTR_BOTTOM_LCD, Vga = ctru_sys::SIZE_VGA, - QVga = ctru_sys::SIZE_QVGA, QQVga = ctru_sys::SIZE_QQVGA, Cif = ctru_sys::SIZE_CIF, QCif = ctru_sys::SIZE_QCIF, + /// Nintendo DS Screen DS = ctru_sys::SIZE_DS_LCD, + /// Nintendo DS Screen x4 DSX4 = ctru_sys::SIZE_DS_LCDx4, - TopLCD = ctru_sys::SIZE_CTR_TOP_LCD, - BottomLCD = ctru_sys::SIZE_CTR_BOTTOM_LCD, } /// Flag to pass to [Camera::set_frame_rate] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum FrameRate { Fps15 = ctru_sys::FRAME_RATE_15, @@ -64,25 +68,25 @@ pub enum FrameRate { /// Flag to pass to [Camera::set_white_balance] or /// [Camera::set_white_balance_without_base_up] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum WhiteBalance { + /// Normal Auto = ctru_sys::WHITE_BALANCE_AUTO, + /// Tungsten Type3200K = ctru_sys::WHITE_BALANCE_3200K, + /// Fluorescent Light Type4150K = ctru_sys::WHITE_BALANCE_4150K, + /// Daylight Type5200K = ctru_sys::WHITE_BALANCE_5200K, + /// Cloudy/Horizon Type6000K = ctru_sys::WHITE_BALANCE_6000K, + ///Shade Type7000K = ctru_sys::WHITE_BALANCE_7000K, - - Normal = ctru_sys::WHITE_BALANCE_NORMAL, - Tungsten = ctru_sys::WHITE_BALANCE_TUNGSTEN, - FluorescentLight = ctru_sys::WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT, - Daylight = ctru_sys::WHITE_BALANCE_DAYLIGHT, - Cloudy = ctru_sys::WHITE_BALANCE_CLOUDY, - Horizon = ctru_sys::WHITE_BALANCE_HORIZON, - Shade = ctru_sys::WHITE_BALANCE_SHADE, } /// Flag to pass to [Camera::set_photo_mode] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum PhotoMode { Normal = ctru_sys::PHOTO_MODE_NORMAL, @@ -93,6 +97,7 @@ pub enum PhotoMode { } /// Flag to pass to [Camera::set_effect] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum Effect { None = ctru_sys::EFFECT_NONE, @@ -104,26 +109,16 @@ pub enum Effect { } /// Flag to pass to [Camera::set_contrast] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum Contrast { - Pattern01 = ctru_sys::CONTRAST_PATTERN_01, - Pattern02 = ctru_sys::CONTRAST_PATTERN_02, - Pattern03 = ctru_sys::CONTRAST_PATTERN_03, - Pattern04 = ctru_sys::CONTRAST_PATTERN_04, - Pattern05 = ctru_sys::CONTRAST_PATTERN_05, - Pattern06 = ctru_sys::CONTRAST_PATTERN_06, - Pattern07 = ctru_sys::CONTRAST_PATTERN_07, - Pattern08 = ctru_sys::CONTRAST_PATTERN_08, - Pattern09 = ctru_sys::CONTRAST_PATTERN_09, - Pattern10 = ctru_sys::CONTRAST_PATTERN_10, - Pattern11 = ctru_sys::CONTRAST_PATTERN_11, - Low = ctru_sys::CONTRAST_LOW, Normal = ctru_sys::CONTRAST_NORMAL, High = ctru_sys::CONTRAST_HIGH, } /// Flag to pass to [Camera::set_lens_correction] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum LensCorrection { Off = ctru_sys::LENS_CORRECTION_DARK, @@ -132,6 +127,7 @@ pub enum LensCorrection { } /// Flag to pass to [Camera::set_output_format] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum OutputFormat { Yuv422 = ctru_sys::OUTPUT_YUV_422, @@ -139,6 +135,7 @@ pub enum OutputFormat { } /// Flag to pass to [Cam::play_shutter_sound] +#[derive(Copy, Clone, Debug)] #[repr(u32)] pub enum ShutterSound { Normal = ctru_sys::SHUTTER_SOUND_TYPE_NORMAL, @@ -151,7 +148,7 @@ impl TryFrom for OutputFormat { fn try_from(value: FramebufferFormat) -> Result { match value { - FramebufferFormat::Rgb565 => Ok(OutputFormat::RGB_565), + FramebufferFormat::Rgb565 => Ok(OutputFormat::Rgb565), _ => Err(()), } } @@ -169,19 +166,19 @@ impl TryFrom for FramebufferFormat { } /// Struct containing coordinates passed to [Camera::set_trimming_params]. -pub struct CamTrimmingParams { +pub struct TrimmingParams { x_start: i16, y_start: i16, x_end: i16, y_end: i16, } -impl CamTrimmingParams { +impl TrimmingParams { /// Creates a new [CamTrimmingParams] and guarantees the start coordinates are less than or /// equal to the end coordinates. /// /// `x_start <= x_end && y_start <= y_end` - pub fn new(x_start: i16, y_start: i16, x_end: i16, y_end: i16) -> CamTrimmingParams { + pub fn new(x_start: i16, y_start: i16, x_end: i16, y_end: i16) -> TrimmingParams { assert!(x_start <= x_end && y_start <= y_end); Self { x_start, @@ -312,8 +309,8 @@ pub trait Camera { } } - /// Sets trimming parameters based on coordinates specified inside a [CamTrimmingParams] - fn set_trimming_params(&mut self, params: CamTrimmingParams) -> crate::Result<()> { + /// Sets trimming parameters based on coordinates specified inside a [TrimmingParams] + fn set_trimming_params(&mut self, params: TrimmingParams) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetTrimmingParams( self.port_as_raw(), @@ -326,8 +323,8 @@ pub trait Camera { } } - /// Returns the set [CamTrimmingParams] from the camera - fn get_trimming_params(&self) -> crate::Result { + /// Returns the [TrimmingParams] set + fn get_trimming_params(&self) -> crate::Result { unsafe { let mut x_start = 0; let mut y_start = 0; @@ -341,7 +338,7 @@ pub trait Camera { self.port_as_raw(), ))?; - Ok(CamTrimmingParams { + Ok(TrimmingParams { x_start, y_start, x_end, @@ -380,27 +377,27 @@ pub trait Camera { } } - /// Sets the white balance mod of the camera based on the passed [CamWhiteBalance] argument - fn set_white_balance(&mut self, white_balance: CamWhiteBalance) -> crate::Result<()> { + /// Sets the white balance mod of the camera based on the passed [WhiteBalance] argument + fn set_white_balance(&mut self, white_balance: WhiteBalance) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetWhiteBalance( self.camera_as_raw(), - white_balance.bits(), + white_balance as u32, ))?; Ok(()) } } - /// Sets the white balance mode of the camera based on the passed [CamWhiteBalance] argument + /// Sets the white balance mode of the camera based on the passed [WhiteBalance] argument // TODO: Explain base up fn set_white_balance_without_base_up( &mut self, - white_balance: CamWhiteBalance, + white_balance: WhiteBalance, ) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetWhiteBalanceWithoutBaseUp( self.camera_as_raw(), - white_balance.bits(), + white_balance as u32, ))?; Ok(()) } @@ -460,12 +457,12 @@ pub trait Camera { } } - /// Sets the flip direction of the camera's image based on the passed [CamFlip] argument - fn flip_image(&mut self, flip: CamFlip) -> crate::Result<()> { + /// Sets the flip direction of the camera's image based on the passed [FlipMode] argument + fn flip_image(&mut self, flip: FlipMode) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_FlipImage( self.camera_as_raw(), - flip.bits(), + flip as u32, ctru_sys::CONTEXT_A, ))?; Ok(()) @@ -506,82 +503,82 @@ pub trait Camera { } } - /// Sets the view size of the camera based on the passed [CamSize] argument. - fn set_view_size(&mut self, size: CamSize) -> crate::Result<()> { + /// Sets the view size of the camera based on the passed [ViewSize] argument. + fn set_view_size(&mut self, size: ViewSize) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetSize( self.camera_as_raw(), - size.bits(), + size as u32, ctru_sys::CONTEXT_A, ))?; Ok(()) } } - /// Sets the frame rate of the camera based on the passed [CamFrameRate] argument. - fn set_frame_rate(&mut self, frame_rate: CamFrameRate) -> crate::Result<()> { + /// Sets the frame rate of the camera based on the passed [FrameRate] argument. + fn set_frame_rate(&mut self, frame_rate: FrameRate) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetFrameRate( self.camera_as_raw(), - frame_rate.bits(), + frame_rate as u32, ))?; Ok(()) } } - /// Sets the photo mode of the camera based on the passed [CamPhotoMode] argument. - fn set_photo_mode(&mut self, photo_mode: CamPhotoMode) -> crate::Result<()> { + /// Sets the photo mode of the camera based on the passed [PhotoMode] argument. + fn set_photo_mode(&mut self, photo_mode: PhotoMode) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetPhotoMode( self.camera_as_raw(), - photo_mode.bits(), + photo_mode as u32, ))?; Ok(()) } } - /// Sets the effect of the camera based on the passed [CamEffect] argument. + /// Sets the effect of the camera based on the passed [Effect] argument. /// /// Multiple effects can be set at once by combining the bitflags of [CamEffect] - fn set_effect(&mut self, effect: CamEffect) -> crate::Result<()> { + fn set_effect(&mut self, effect: Effect) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetEffect( self.camera_as_raw(), - effect.bits(), + effect as u32, ctru_sys::CONTEXT_A, ))?; Ok(()) } } - /// Sets the contrast of the camera based on the passed [CamContrast] argument. - fn set_contrast(&mut self, contrast: CamContrast) -> crate::Result<()> { + /// Sets the contrast of the camera based on the passed [Contrast] argument. + fn set_contrast(&mut self, contrast: Contrast) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetContrast( self.camera_as_raw(), - contrast.bits(), + contrast as u32, ))?; Ok(()) } } - /// Sets the lens correction of the camera based on the passed [CamLensCorrection] argument. - fn set_lens_correction(&mut self, lens_correction: CamLensCorrection) -> crate::Result<()> { + /// Sets the lens correction of the camera based on the passed [LensCorrection] argument. + fn set_lens_correction(&mut self, lens_correction: LensCorrection) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetLensCorrection( self.camera_as_raw(), - lens_correction.bits(), + lens_correction as u32, ))?; Ok(()) } } - /// Sets the output format of the camera based on the passed [CamOutputFormat] argument. - fn set_output_format(&mut self, format: CamOutputFormat) -> crate::Result<()> { + /// Sets the output format of the camera based on the passed [OutputFormat] argument. + fn set_output_format(&mut self, format: OutputFormat) -> crate::Result<()> { unsafe { ResultCode(ctru_sys::CAMU_SetOutputFormat( self.camera_as_raw(), - format.bits(), + format as u32, ctru_sys::CONTEXT_A, ))?; Ok(()) @@ -785,7 +782,7 @@ impl Cam { /// Plays the specified sound based on the [ShutterSound] argument pub fn play_shutter_sound(&self, sound: ShutterSound) -> crate::Result<()> { unsafe { - ResultCode(ctru_sys::CAMU_PlayShutterSound(sound.bits()))?; + ResultCode(ctru_sys::CAMU_PlayShutterSound(sound as u32))?; Ok(()) } } From 2e6039c1b85de8fa32c4e05f23ed5f63f0f63b45 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Thu, 30 Mar 2023 20:12:43 +0200 Subject: [PATCH 042/116] Fixed ArchiveID struct --- ctru-rs/src/services/fs.rs | 42 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ctru-rs/src/services/fs.rs b/ctru-rs/src/services/fs.rs index f53b24c..c89fec2 100644 --- a/ctru-rs/src/services/fs.rs +++ b/ctru-rs/src/services/fs.rs @@ -65,27 +65,27 @@ pub enum PathType { #[repr(u32)] pub enum ArchiveID { RomFS = ctru_sys::ARCHIVE_ROMFS, - Savedata = ctru_sys::ARCHIVE_ROMFS, - Extdata = ctru_sys::ARCHIVE_ROMFS, - SharedExtdata = ctru_sys::ARCHIVE_ROMFS, - SystemSavedata = ctru_sys::ARCHIVE_ROMFS, - Sdmc = ctru_sys::ARCHIVE_ROMFS, - SdmcWriteOnly = ctru_sys::ARCHIVE_ROMFS, - BossExtdata = ctru_sys::ARCHIVE_ROMFS, - CardSpiFS = ctru_sys::ARCHIVE_ROMFS, - ExtDataAndBossExtdata = ctru_sys::ARCHIVE_ROMFS, - SystemSaveData2 = ctru_sys::ARCHIVE_ROMFS, - NandRW = ctru_sys::ARCHIVE_ROMFS, - NandRO = ctru_sys::ARCHIVE_ROMFS, - NandROWriteAccess = ctru_sys::ARCHIVE_ROMFS, - SaveDataAndContent = ctru_sys::ARCHIVE_ROMFS, - SaveDataAndContent2 = ctru_sys::ARCHIVE_ROMFS, - NandCtrFS = ctru_sys::ARCHIVE_ROMFS, - TwlPhoto = ctru_sys::ARCHIVE_ROMFS, - NandTwlFS = ctru_sys::ARCHIVE_ROMFS, - GameCardSavedata = ctru_sys::ARCHIVE_ROMFS, - UserSavedata = ctru_sys::ARCHIVE_ROMFS, - DemoSavedata = ctru_sys::ARCHIVE_ROMFS, + Savedata = ctru_sys::ARCHIVE_SAVEDATA, + Extdata = ctru_sys::ARCHIVE_EXTDATA, + SharedExtdata = ctru_sys::ARCHIVE_SHARED_EXTDATA, + SystemSavedata = ctru_sys::ARCHIVE_SYSTEM_SAVEDATA, + Sdmc = ctru_sys::ARCHIVE_SDMC, + SdmcWriteOnly = ctru_sys::ARCHIVE_SDMC_WRITE_ONLY, + BossExtdata = ctru_sys::ARCHIVE_BOSS_EXTDATA, + CardSpiFS = ctru_sys::ARCHIVE_CARD_SPIFS, + ExtDataAndBossExtdata = ctru_sys::ARCHIVE_EXTDATA_AND_BOSS_EXTDATA, + SystemSaveData2 = ctru_sys::ARCHIVE_SYSTEM_SAVEDATA2, + NandRW = ctru_sys::ARCHIVE_NAND_RW, + NandRO = ctru_sys::ARCHIVE_NAND_RO, + NandROWriteAccess = ctru_sys::ARCHIVE_NAND_RO_WRITE_ACCESS, + SaveDataAndContent = ctru_sys::ARCHIVE_SAVEDATA_AND_CONTENT, + SaveDataAndContent2 = ctru_sys::ARCHIVE_SAVEDATA_AND_CONTENT2, + NandCtrFS = ctru_sys::ARCHIVE_NAND_CTR_FS, + TwlPhoto = ctru_sys::ARCHIVE_TWL_PHOTO, + NandTwlFS = ctru_sys::ARCHIVE_NAND_TWL_FS, + GameCardSavedata = ctru_sys::ARCHIVE_GAMECARD_SAVEDATA, + UserSavedata = ctru_sys::ARCHIVE_USER_SAVEDATA, + DemoSavedata = ctru_sys::ARCHIVE_DEMO_SAVEDATA, } /// Represents the filesystem service. No file IO can be performed From bcfd0fd84c3428c8dbfc137be6d4d5d989fc02c3 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Thu, 30 Mar 2023 20:14:51 +0200 Subject: [PATCH 043/116] Update CAM example --- ctru-rs/examples/camera-image.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index 7559275..a852830 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -1,5 +1,5 @@ use ctru::prelude::*; -use ctru::services::cam::{Cam, CamOutputFormat, CamShutterSoundType, CamSize, Camera}; +use ctru::services::cam::{Cam, OutputFormat, ShutterSound, ViewSize, Camera}; use ctru::services::gfx::Screen; use ctru::services::gspgpu::FramebufferFormat; @@ -37,10 +37,10 @@ fn main() { let camera = &mut cam.outer_right_cam; camera - .set_view_size(CamSize::CTR_TOP_LCD) + .set_view_size(ViewSize::TopLCD) .expect("Failed to set camera size"); camera - .set_output_format(CamOutputFormat::RGB_565) + .set_output_format(OutputFormat::Rgb565) .expect("Failed to set camera output format"); camera .set_noise_filter(true) @@ -83,7 +83,7 @@ fn main() { ) .expect("Failed to take picture"); - cam.play_shutter_sound(CamShutterSoundType::NORMAL) + cam.play_shutter_sound(ShutterSound::Normal) .expect("Failed to play shutter sound"); rotate_image_to_screen( From fd7afb6e3c119002b21cdcfeb6891441702cc883 Mon Sep 17 00:00:00 2001 From: Andrea Ciliberti Date: Fri, 31 Mar 2023 14:03:42 +0200 Subject: [PATCH 044/116] Fixed enums in SWKBD --- ctru-rs/examples/camera-image.rs | 2 +- ctru-rs/src/applets/swkbd.rs | 106 +++++++++++++++++++------------ 2 files changed, 68 insertions(+), 40 deletions(-) diff --git a/ctru-rs/examples/camera-image.rs b/ctru-rs/examples/camera-image.rs index a852830..41aa9f3 100644 --- a/ctru-rs/examples/camera-image.rs +++ b/ctru-rs/examples/camera-image.rs @@ -1,5 +1,5 @@ use ctru::prelude::*; -use ctru::services::cam::{Cam, OutputFormat, ShutterSound, ViewSize, Camera}; +use ctru::services::cam::{Cam, Camera, OutputFormat, ShutterSound, ViewSize}; use ctru::services::gfx::Screen; use ctru::services::gspgpu::FramebufferFormat; diff --git a/ctru-rs/src/applets/swkbd.rs b/ctru-rs/src/applets/swkbd.rs index 976bdec..19db774 100644 --- a/ctru-rs/src/applets/swkbd.rs +++ b/ctru-rs/src/applets/swkbd.rs @@ -19,68 +19,72 @@ pub struct Swkbd { /// Western is a text keyboard without japanese symbols (only applies to JPN systems). For other /// systems it's the same as a Normal keyboard. #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum Kind { - Normal, - Qwerty, - Numpad, - Western, + Normal = ctru_sys::SWKBD_TYPE_NORMAL, + Qwerty = ctru_sys::SWKBD_TYPE_QWERTY, + Numpad = ctru_sys::SWKBD_TYPE_NUMPAD, + Western = ctru_sys::SWKBD_TYPE_WESTERN, } /// Represents which button the user pressed to close the software keyboard. #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum Button { - Left, - Middle, - Right, + Left = ctru_sys::SWKBD_BUTTON_LEFT, + Middle = ctru_sys::SWKBD_BUTTON_MIDDLE, + Right = ctru_sys::SWKBD_BUTTON_RIGHT, } /// Error type for the software keyboard. #[derive(Copy, Clone, Debug)] +#[repr(i32)] pub enum Error { - InvalidInput, - OutOfMem, - HomePressed, - ResetPressed, - PowerPressed, - ParentalOk, - ParentalFail, - BannedInput, + InvalidInput = ctru_sys::SWKBD_INVALID_INPUT, + OutOfMem = ctru_sys::SWKBD_OUTOFMEM, + HomePressed = ctru_sys::SWKBD_HOMEPRESSED, + ResetPressed = ctru_sys::SWKBD_RESETPRESSED, + PowerPressed = ctru_sys::SWKBD_POWERPRESSED, + ParentalOk = ctru_sys::SWKBD_PARENTAL_OK, + ParentalFail = ctru_sys::SWKBD_PARENTAL_FAIL, + BannedInput = ctru_sys::SWKBD_BANNED_INPUT, } /// Restrictions on keyboard input #[derive(Copy, Clone, Debug)] +#[repr(u32)] pub enum ValidInput { - Anything, - NotEmpty, - NotEmptyNotBlank, - NotBlank, - FixedLen, + Anything = ctru_sys::SWKBD_ANYTHING, + NotEmpty = ctru_sys::SWKBD_NOTEMPTY, + NotEmptyNotBlank = ctru_sys::SWKBD_NOTEMPTY_NOTBLANK, + NotBlank = ctru_sys::SWKBD_NOTBLANK, + FixedLen = ctru_sys::SWKBD_FIXEDLEN, } bitflags! { /// Keyboard feature flags pub struct Features: u32 { - const PARENTAL_PIN = 1 << 0; - const DARKEN_TOP_SCREEN = 1 << 1; - const PREDICTIVE_INPUT = 1 << 2; - const MULTILINE = 1 << 3; - const FIXED_WIDTH = 1 << 4; - const ALLOW_HOME = 1 << 5; - const ALLOW_RESET = 1 << 6; - const ALLOW_POWER = 1 << 7; - const DEFAULT_QWERTY = 1 << 8; + const ParentalPin = ctru_sys::SWKBD_PARENTAL; + const DarkenTopScreen = ctru_sys::SWKBD_DARKEN_TOP_SCREEN; + const PredictiveInput = ctru_sys::SWKBD_PREDICTIVE_INPUT; + const Multiline = ctru_sys::SWKBD_MULTILINE; + const FixedWidth = ctru_sys::SWKBD_FIXED_WIDTH; + const AllowHome = ctru_sys::SWKBD_ALLOW_HOME; + const AllowReset = ctru_sys::SWKBD_ALLOW_RESET; + const AllowPower = ctru_sys::SWKBD_ALLOW_POWER; + const DefaultQwerty = ctru_sys::SWKBD_DEFAULT_QWERTY; } } bitflags! { /// Keyboard input filtering flags pub struct Filters: u32 { - const DIGITS = 1 << 0; - const AT = 1 << 1; - const PERCENT = 1 << 2; - const BACKSLASH = 1 << 3; - const PROFANITY = 1 << 4; - const CALLBACK = 1 << 5; + const DIGITS = ctru_sys::SWKBD_FILTER_DIGITS; + const AT = ctru_sys::SWKBD_FILTER_AT; + const PERCENT = ctru_sys::SWKBD_FILTER_PERCENT; + const BACKSLASH = ctru_sys::SWKBD_FILTER_BACKSLASH; + const PROFANITY = ctru_sys::SWKBD_FILTER_PROFANITY; + const CALLBACK = ctru_sys::SWKBD_FILTER_CALLBACK; } } @@ -90,7 +94,7 @@ impl Swkbd { pub fn init(keyboard_type: Kind, num_buttons: i32) -> Self { unsafe { let mut state = Box::::default(); - swkbdInit(state.as_mut(), keyboard_type as u32, num_buttons, -1); + swkbdInit(state.as_mut(), keyboard_type.into(), num_buttons, -1); Swkbd { state } } } @@ -123,7 +127,7 @@ impl Swkbd { /// this software keyboard. /// /// If the buffer is too small to contain the entire sequence received from the keyboard, - /// the output will be truncated but should still be well-formed UTF-8 + /// the output will be truncated but should still be well-formed UTF-8. pub fn get_bytes(&mut self, buf: &mut [u8]) -> Result { unsafe { match swkbdInputText(self.state.as_mut(), buf.as_mut_ptr(), buf.len()) { @@ -143,7 +147,7 @@ impl Swkbd { /// Configures input validation for this keyboard pub fn set_validation(&mut self, validation: ValidInput, filters: Filters) { - self.state.valid_input = validation as i32; + self.state.valid_input = validation.into(); self.state.filter_flags = filters.bits; } @@ -173,7 +177,7 @@ impl Swkbd { let nul_terminated: String = text.chars().chain(once('\0')).collect(); swkbdSetButton( self.state.as_mut(), - button as u32, + button.into(), nul_terminated.as_ptr(), submit, ); @@ -210,3 +214,27 @@ impl Default for Swkbd { Swkbd::init(Kind::Normal, 2) } } + +impl From for u32 { + fn from(value: Kind) -> Self { + value as u32 + } +} + +impl From