diff --git a/include/padscore/wpad.h b/include/padscore/wpad.h index 0f410d26..5d55dce2 100644 --- a/include/padscore/wpad.h +++ b/include/padscore/wpad.h @@ -741,7 +741,7 @@ struct WPADAddress WUT_CHECK_OFFSET(WPADAddress, 0x00, btDeviceAddress); WUT_CHECK_SIZE(WPADAddress, 0x6); -//! Continuation parameters for WENCGetEncodeData +//! Continuation parameters for \link WENCGetEncodeData struct WENCParams { WUT_UNKNOWN_BYTES(32); @@ -909,11 +909,12 @@ WPADSendStreamData(WPADChan channel, * Encode 16-bit LPCM as 4-bit Yamaha ADPCM * \param params encoding continuation params, written on first call, and read and updated on each subsequent call * \param continuing should be TRUE if continuing encoding stream with the params produced via a prior call - * \param samples 16-bit LPCM sample buffer + * \param [in] samples 16-bit LPCM sample buffer * \param sampleCount number of 16-bit LPCM samples - * \param outEncodedData buffer for the returned adpcm samples, buffer size should be equal to {(sampleCount + 1) / 2} + * \param [out] outEncodedData buffer for the returned ADPCM samples, size should be {(sampleCount + 1) / 2} * \return Number of LPCM-16 samples * + * \sa AXRmtGetSamples * \sa WPADSendStreamData */ uint32_t diff --git a/include/sndcore2/rmt.h b/include/sndcore2/rmt.h new file mode 100644 index 00000000..7c01d050 --- /dev/null +++ b/include/sndcore2/rmt.h @@ -0,0 +1,56 @@ +#pragma once + +/** + * \defgroup sndcore2_rmt Remote + * \ingroup sndcore2 + * + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif +/** + * Consume samples for all Wiimotes + * \param count number of samples to consume + * \return number of samples actually consumed + * + * \see AXRmtGetSamplesLeft + * \see AXRmtGetSamples + * \note + * Reduces number of available samples + */ +uint32_t +AXRmtAdvancePtr(uint32_t count); + +/** + * Gets 16-bit LPCM samples queued for a Wiimote + * \param index WPAD channel of the device (0 - 3) + * \param [out] samples 16-bit LPCM samples queued for specified device + * \param sampleCount requested number of samples + * \return actual number of 16-bit LPCM samples obtained + * + * \see WENCGetEncodeData + * \see AXRmtGetSamplesLeft + * \see AXRmtAdvancePtr + * \see AXSetVoiceRmtOn + * \note + * Samples can be obtained while a voice with remote output enabled is playing + */ +uint32_t +AXRmtGetSamples(uint32_t index, int16_t *samples, uint32_t sampleCount); + +/** + * Get number of samples currently available to Wiimotes + * \return number of available samples + * + * \see AXRmtGetSamples + * \see AXRmtAdvancePtr + */ +uint32_t +AXRmtGetSamplesLeft(); +#ifdef __cplusplus +} +#endif + +/** @} */ diff --git a/include/sndcore2/voice.h b/include/sndcore2/voice.h index a16d12cc..bc1e5a94 100644 --- a/include/sndcore2/voice.h +++ b/include/sndcore2/voice.h @@ -377,6 +377,16 @@ void AXSetVoiceVeDelta(AXVoice *voice, int16_t delta); +/** + * Enable generating samples for Wiimotes + * \param voice voice to generate samples from + * \param on set TRUE to generate samples for Wiimotes + * + * \see AXRmtGetSamples + */ +void +AXSetVoiceRmtOn(AXVoice *voice, uint16_t on); + #ifdef __cplusplus } #endif