libctru/libctru/include/3ds/services/ir.h
2022-12-06 12:45:49 +01:00

106 lines
2.6 KiB
C

/**
* @file ir.h
* @brief IR service.
*/
#pragma once
/**
* @brief Initializes IRU.
* The permissions for the specified memory is set to RO. This memory must be already mapped.
* @param sharedmem_addr Address of the shared memory block to use.
* @param sharedmem_size Size of the shared memory block.
*/
Result iruInit(u32 *sharedmem_addr, u32 sharedmem_size);
/// Shuts down IRU.
void iruExit(void);
/**
* @brief Gets the IRU service handle.
* @return The IRU service handle.
*/
Handle iruGetServHandle(void);
/**
* @brief Sends IR data.
* @param buf Buffer to send data from.
* @param size Size of the buffer.
* @param wait Whether to wait for the data to be sent.
*/
Result iruSendData(u8 *buf, u32 size, bool wait);
/**
* @brief Receives IR data.
* @param buf Buffer to receive data to.
* @param size Size of the buffer.
* @param flag Flags to receive data with.
* @param transfercount Pointer to output the number of bytes read to.
* @param wait Whether to wait for the data to be received.
*/
Result iruRecvData(u8 *buf, u32 size, u8 flag, u32 *transfercount, bool wait);
/// Initializes the IR session.
Result IRU_Initialize(void);
/// Shuts down the IR session.
Result IRU_Shutdown(void);
/**
* @brief Begins sending data.
* @param buf Buffer to send.
* @param size Size of the buffer.
*/
Result IRU_StartSendTransfer(u8 *buf, u32 size);
/// Waits for a send operation to complete.
Result IRU_WaitSendTransfer(void);
/**
* @brief Begins receiving data.
* @param size Size of the data to receive.
* @param flag Flags to use when receiving.
*/
Result IRU_StartRecvTransfer(u32 size, u8 flag);
/**
* @brief Waits for a receive operation to complete.
* @param transfercount Pointer to output the number of bytes read to.
*/
Result IRU_WaitRecvTransfer(u32 *transfercount);
/**
* @brief Sets the IR bit rate.
* @param value Bit rate to set.
*/
Result IRU_SetBitRate(u8 value);
/**
* @brief Gets the IR bit rate.
* @param out Pointer to write the bit rate to.
*/
Result IRU_GetBitRate(u8 *out);
/**
* @brief Sets the IR LED state.
* @param value IR LED state to set.
*/
Result IRU_SetIRLEDState(u32 value);
/**
* @brief Gets the IR LED state.
* @param out Pointer to write the IR LED state to.
*/
Result IRU_GetIRLEDRecvState(u32 *out);
/**
* @brief Gets an event which is signaled once a send finishes.
* @param out Pointer to write the event handle to.
*/
Result IRU_GetSendFinishedEvent(Handle *out);
/**
* @brief Gets an event which is signaled once a receive finishes.
* @param out Pointer to write the event handle to.
*/
Result IRU_GetRecvFinishedEvent(Handle *out);