X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Fcortex-m3%2Fdrv%2Fi2s_sam3.h;fp=bertos%2Fcpu%2Fcortex-m3%2Fdrv%2Fi2s_sam3.h;h=6df9b3e74550e519b510dd788cb733bba7ae6d43;hb=df98d42ba242738b92f0e24d244fb300e1bb9f10;hp=62a962599613c9326d81a31227b4e00278df5aa4;hpb=677c93e2b91e885d2bcb0ea313ad0a58b195fd09;p=bertos.git diff --git a/bertos/cpu/cortex-m3/drv/i2s_sam3.h b/bertos/cpu/cortex-m3/drv/i2s_sam3.h index 62a96259..6df9b3e7 100644 --- a/bertos/cpu/cortex-m3/drv/i2s_sam3.h +++ b/bertos/cpu/cortex-m3/drv/i2s_sam3.h @@ -32,85 +32,22 @@ * * \brief I2S driver functions. * - * This driver uses a double buffering technique to keep i2s bus busy. First fill in the two buffers - * using i2s_getBuffer(), then start audio playing with i2s_start(). Then call i2s_getFreeBuffer() - * until you have finished your samples. The reproduction will automatically stop if you don't - * call i2s_getFreeBuffer() frequently enough. - * - * Example: - * \code - * // fill in the buffers before start - * buf = i2s_getBuffer(I2S_FIRST_BUF); - * // ... - * buf = i2s_getBuffer(I2S_SECOND_BUF); - * // ... - * // here the driver will play only the first two buffers... - * i2s_start(); - * // ...call getFreeBuffer() to continue playing. - * while (!(buf = i2s_getFreeBuffer())) - * ; - * // now fill the buffer again - * \endcode - * * \author Daniele Basile - * - * $WIZ$ module_name = "i2s" - * $WIZ$ module_configuration = "bertos/cfg/cfg_i2s.h" - * $WIZ$ module_supports = "sam3" */ #ifndef DRV_I2S_SAM3_H #define DRV_I2S_SAM3_H - -#include -#include #include -/** - * First buffer. - */ -#define I2S_FIRST_BUF 0 -/** - * Second buffer. - */ -#define I2S_SECOND_BUF 1 - -/** - * Initializes the module and sets current buffer to I2S_FIRST_BUF. - */ -void i2s_init(void); - -/** - * Returns one of the two buffers or NULL if none is available. - * - * You can't call this function if you have already started the player. - * \param buf_num The number of the buffer, ie I2S_FIRST_BUF or I2S_SECOND_BUF. - * \return A pointer to the buffer if the buffer is available (not full), 0 on errors - */ -uint8_t *i2s_getBuffer(unsigned buf_num); +enum +{ + SSC0, -/** - * Returns a buffer that will be played after the current one. - * - * You should fill it faster than your reproduction time. You can't call this function - * if the player is not running - * \return The next buffer to be played, 0 if both are busy. - */ -uint8_t *i2s_getFreeBuffer(void); + SSC_CNT +}; -/** - * Starts playing from I2S_FIRST_BUFFER. - * - * You must have filled both buffers before calling this function. Does nothing if already playing. - * \return false on errors, true otherwise. - */ -bool i2s_start(void); -void i2s_stop(void); -INLINE bool i2s_isPlaying(void) -{ - return !(SSC_SR & BV(SSC_TXEMPTY)); -} +#define I2S_SAM3X MAKE_ID('I', '2', 'S', '3') #endif /* DRV_I2S_SAM3_H */