OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / task_audio.h
1 /**
2  * @file task_audio.h
3  * @brief オーディオDMAに同期して動くタスク
4  * @param exinf コンフィギュレータがタスクに引き渡す変数。
5  * @details
6  * @ref dma_intr_handler からのSEM_I2SDMA セマフォ・シグナルを受けて
7  * しかるべきデータ・バッファを特定し、信号処理を行う。
8  *
9  * なお、このタスクはシステム起動時にはインアクティブである。
10  * 明示的にアクティベートして始めて動作を開始する。
11  */
12
13 #ifndef TASK_AUDIO_H
14 #define TASK_AUDIO_H
15
16 #include "i2s_subsystem.h"
17
18 /**
19  * @brief タスクプライオリティ。(オーディオタスク)
20  */
21 #define TSKPRI_AUDIO 10
22 #define TSKSTK_AUDIO STACK_SIZE
23
24 /**
25  * @defgroup BLACKTANK_LPC1769_TASK_AUDIO_CLIENT
26  * @ingroup BLACKTANK_LPC1769_TASK_AUDIO
27  * @{
28  */
29
30 #define AUDIO_PARAM_MODE 0 /**< @brief モードパラメータ。 */
31 #define AUDIO_PARAM_VAR0 1 /**< @brief VAR0パラメータ。 */
32 #define AUDIO_PARAM_VAR1 2 /**< @brief VAR1パラメータ。 */
33 #define AUDIO_PARAM_VAR2 3 /**< @brief VAR2パラメータ。 */
34 #define AUDIO_PARAM_VAR3 4 /**< @brief VAR3パラメータ。 */
35
36 #define AUDIO_VALUE_MODE_THROUGH 0 /**< @brief モードに対する値。 */
37 #define AUDIO_VALUE_MODE_VOCAL_CANCEL 1 /**< @brief モードに対する値。 */
38 #define AUDIO_VALUE_MODE_FIR 2 /**< @brief モードに対する値。 */
39 #define AUDIO_VALUE_MODE_IIR 3 /**< @brief モードに対する値。 */
40
41 /**
42  * @brief オーディオパラメータを設定する。
43  * @details
44  * このマクロを使うとオーディオパラメータを設定することができる。
45  * マクロはタスクコンテキスト内から呼び出す事ができる。
46  * @param PARAM 設定対象パラメータ。
47  * @param VALUE 設定対象パラメータに対する設定値。
48  */
49 #define TSKAPI_AUDIO_PARAM(PARAM,VALUE) \
50     snd_dtq(DTQ_AUDIOPARAM, \
51             (intptr_t)( \
52                 (((PARAM) & 0x000F) << 12) \
53                 | (((VALUE)& 0x0FFF) << 0)))
54
55 /**
56  * @}
57  */
58
59 /**
60  * @defgroup BLACKTANK_LPC1769_TASK_AUDIO
61  * @ingroup BLACKTANK_LPC1769_TASK
62  * @{
63  */
64
65 void task_audio(intptr_t exinf);
66 void dma_intr_handler(intptr_t exinf);
67 struct I2S_AUDIO_DATA* get_audio_data(void);
68
69 /**
70  * @}
71  */
72
73 #endif
74