xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_aio.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */
2 /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */
3 
4 #ifndef INCLUDE_RT_MPI_MPI_COMM_AIO_H_
5 #define INCLUDE_RT_MPI_MPI_COMM_AIO_H_
6 
7 #include "rk_common.h"
8 #include "rk_comm_mb.h"
9 
10 #ifdef __cplusplus
11 #if __cplusplus
12 extern "C" {
13 #endif
14 #endif  /* __cplusplus */
15 
16 #define MAX_AUDIO_FILE_PATH_LEN 256
17 #define MAX_AUDIO_FILE_NAME_LEN 256
18 
19 /*
20  * G726 bitrate and bitdepth map:
21  *  bitrate :  16000  24000 32000 40000
22  * bit depth:    2     3     4      5
23  */
24 typedef enum rkAUDIO_G726_BPS_E {
25     G726_BPS_16K   = 16000,     // 2bit
26     G726_BPS_24K   = 24000,     // 3bit
27     G726_BPS_32K   = 32000,     // 4bit
28     G726_BPS_40K   = 40000,     // 5bit
29     G726_BPS_BUTT,
30 } AUDIO_G726_BPS;
31 
32 typedef enum rkAUDIO_SAMPLE_RATE_E {
33     AUDIO_SAMPLE_RATE_DISABLE = 0,
34     AUDIO_SAMPLE_RATE_8000   = 8000,    /* 8K samplerate*/
35     AUDIO_SAMPLE_RATE_12000  = 12000,   /* 12K samplerate*/
36     AUDIO_SAMPLE_RATE_11025  = 11025,   /* 11.025K samplerate*/
37     AUDIO_SAMPLE_RATE_16000  = 16000,   /* 16K samplerate*/
38     AUDIO_SAMPLE_RATE_22050  = 22050,   /* 22.050K samplerate*/
39     AUDIO_SAMPLE_RATE_24000  = 24000,   /* 24K samplerate*/
40     AUDIO_SAMPLE_RATE_32000  = 32000,   /* 32K samplerate*/
41     AUDIO_SAMPLE_RATE_44100  = 44100,   /* 44.1K samplerate*/
42     AUDIO_SAMPLE_RATE_48000  = 48000,   /* 48K samplerate*/
43     AUDIO_SAMPLE_RATE_64000  = 64000,   /* 64K samplerate*/
44     AUDIO_SAMPLE_RATE_96000  = 96000,   /* 96K samplerate*/
45     AUDIO_SAMPLE_RATE_BUTT,
46 } AUDIO_SAMPLE_RATE_E;
47 
48 typedef struct rkAUDIO_STREAM_S {
49     MB_BLK pMbBlk;
50     RK_U32 u32Len; /* stream lenth, by bytes */
51     RK_U64 u64TimeStamp; /* frame time stamp*/
52     RK_U32 u32Seq; /* frame seq,if stream is not a valid frame, u32Seq is 0*/
53     RK_BOOL bBypassMbBlk; /* FALSE: copy, TRUE: MbBlock owned by internal */
54 } AUDIO_STREAM_S;
55 
56 typedef enum rkAUDIO_BIT_WIDTH_E {
57     AUDIO_BIT_WIDTH_8   = 0,   /* 8bit width */
58     AUDIO_BIT_WIDTH_16  = 1,   /* 16bit width */
59     AUDIO_BIT_WIDTH_24  = 2,   /* 24bit width */
60     AUDIO_BIT_WIDTH_32  = 3,   /* 32bit width */
61     AUDIO_BIT_WIDTH_FLT = 4,   /* float, 32bit width */
62     AUDIO_BIT_WIDTH_BUTT,
63 } AUDIO_BIT_WIDTH_E;
64 
65 typedef enum rkAIO_SOUND_MODE_E {
66     AUDIO_SOUND_MODE_MONO   = 0,/*mono*/
67     AUDIO_SOUND_MODE_STEREO = 1,/*stereo*/
68     AUDIO_SOUND_MODE_4_CHN  = 4,
69     AUDIO_SOUND_MODE_6_CHN  = 6,
70     AUDIO_SOUND_MODE_8_CHN  = 8,
71     AUDIO_SOUND_MODE_BUTT
72 } AUDIO_SOUND_MODE_E;
73 
74 typedef enum rkAUDIO_CHN_MODE_E {
75     AUDIO_CHN_MODE_LEFT   = 10,
76     AUDIO_CHN_MODE_RIGHT  = 11,
77     AUDIO_CHN_MODE_BUTT
78 } AUDIO_CHN_MODE_E;
79 
80 typedef enum rkAUDIO_LOOPBACK_MODE_E {
81     AUDIO_LOOPBACK_NONE = 0,        /* audio no use loopback */
82     AUDIO_LOOPBACK_SW_MICL_REFR,    /* audio use software loopback (Mic Left + Ref Right) */
83     AUDIO_LOOPBACK_SW_REFL_MICR,    /* audio use software loopback (Ref Left + Mic Right) */
84     AUDIO_LOOPBACK_BUTT
85 } AUDIO_LOOPBACK_MODE_E;
86 
87 typedef enum rkAUDIO_CHN_ATTR_MODE_E {
88     AUDIO_CHN_ATTR_PPM  = 1,
89     AUDIO_CHN_ATTR_RATE = 2,
90     AUDIO_CHN_ATTR_BUTT
91 } AUDIO_CHN_ATTR_MODE_E;
92 
93 typedef struct rkAUDIO_FRAME_S {
94     MB_BLK              pMbBlk;
95     AUDIO_BIT_WIDTH_E   enBitWidth;     /*audio frame bitwidth*/
96     AUDIO_SOUND_MODE_E  enSoundMode;    /*audio frame momo or stereo mode*/
97     RK_U64              u64TimeStamp;   /*audio frame timestamp*/
98     RK_U32              u32Seq;         /*audio frame seq*/
99     RK_U32              u32Len;         /*data lenth per channel in frame, u32Len <= 0 mean eos*/
100     RK_BOOL             bBypassMbBlk; /* FALSE: copy, TRUE: MbBlock owned by internal */
101 } AUDIO_FRAME_S;
102 
103 typedef struct rkAEC_FRAME_S {
104     AUDIO_FRAME_S   stRefFrame;   /* AEC reference audio frame */
105     RK_BOOL         bValid;       /* whether frame is valid */
106     RK_BOOL         bSysBind;     /* whether is sysbind */
107 } AEC_FRAME_S;
108 
109 typedef struct rkAUDIO_FRAME_INFO_S {
110     AUDIO_FRAME_S *pstFrame;/*frame ptr*/
111     RK_U32         u32Id;   /*frame id*/
112 } AUDIO_FRAME_INFO_S;
113 
114 typedef struct rkAUDIO_ADENC_PARAM_S {
115     RK_U8          *pu8InBuf;
116     RK_U32          u32InLen;
117     RK_U64          u64InTimeStamp;
118 
119     RK_U8          *pu8OutBuf;
120     RK_U32          u32OutLen;
121     RK_U64          u64OutTimeStamp;
122 } AUDIO_ADENC_PARAM_S;
123 
124 typedef enum rkAIO_MODE_E {
125     AIO_MODE_I2S_MASTER  = 0,   /* AIO I2S master mode */
126     AIO_MODE_I2S_SLAVE,         /* AIO I2S slave mode */
127     AIO_MODE_PCM_SLAVE_STD,     /* AIO PCM slave standard mode */
128     AIO_MODE_PCM_SLAVE_NSTD,    /* AIO PCM slave non-standard mode */
129     AIO_MODE_PCM_MASTER_STD,    /* AIO PCM master standard mode */
130     AIO_MODE_PCM_MASTER_NSTD,   /* AIO PCM master non-standard mode */
131     AIO_MODE_BUTT
132 } AIO_MODE_E;
133 
134 typedef struct rkAIO_SOUND_CARD {
135     RK_U32  channels;
136     RK_U32  sampleRate;
137     AUDIO_BIT_WIDTH_E bitWidth;
138 } AIO_SOUND_CARD;
139 
140 typedef struct rkAIO_ATTR_S {
141     // params of sound card
142     AIO_SOUND_CARD      soundCard;
143     // input data sample rate
144     AUDIO_SAMPLE_RATE_E enSamplerate;
145     // bitwidth
146     AUDIO_BIT_WIDTH_E   enBitwidth;
147     // momo or steror
148     AUDIO_SOUND_MODE_E  enSoundmode;
149     /* expand 8bit to 16bit,use AI_EXPAND(only valid for AI 8bit),
150      * use AI_CUT(only valid for extern Codec for 24bit)
151      */
152     RK_U32              u32EXFlag;
153     /* frame num in buf[2,MAX_AUDIO_FRAME_NUM] */
154     RK_U32              u32FrmNum;
155     /*
156      * point num per frame (80/160/240/320/480/1024/2048)
157      * (ADPCM IMA should add 1 point, AMR only support 160)
158      */
159     RK_U32              u32PtNumPerFrm;
160     RK_U32              u32ChnCnt;      /* channle number on FS, valid value:1/2/4/8 */
161     /*
162      * name of sound card, if it is setted, we will
163      * using it to open sound card, otherwise, use
164      * the index of device to open sound card
165      */
166     RK_U8               u8CardName[64];
167 } AIO_ATTR_S;
168 
169 typedef struct rkAI_CHN_PARAM_S {
170     RK_S32 s32UsrFrmDepth;
171     RK_S32 s32UsrFrmCount;
172 	AUDIO_LOOPBACK_MODE_E enLoopbackMode;
173 } AI_CHN_PARAM_S;
174 
175 typedef struct rkAO_CHN_PARAM_S {
176     AUDIO_CHN_MODE_E  enMode;
177     AUDIO_LOOPBACK_MODE_E enLoopbackMode;
178 } AO_CHN_PARAM_S;
179 
180 typedef struct rkAI_CHN_ATTR_S {
181     AUDIO_CHN_ATTR_MODE_E  enChnAttr;
182     union {
183         RK_S32  s32Ppm;
184         RK_U32  u32SampleRate;
185     };
186 } AI_CHN_ATTR_S;
187 
188 typedef struct rkAO_CHN_ATTR_S {
189     AUDIO_CHN_ATTR_MODE_E  enChnAttr;
190     union {
191         RK_S32  s32Ppm;
192         RK_U32  u32SampleRate;
193     };
194 } AO_CHN_ATTR_S;
195 
196 typedef struct rkAO_CHN_STATE_S {
197     RK_U32              u32ChnTotalNum;    /* total number of channel buffer */
198     RK_U32              u32ChnFreeNum;     /* free number of channel buffer */
199     RK_U32              u32ChnBusyNum;     /* busy number of channel buffer */
200 } AO_CHN_STATE_S;
201 
202 typedef enum rkAUDIO_TRACK_MODE_E {
203     AUDIO_TRACK_NORMAL      = 0,
204     AUDIO_TRACK_BOTH_LEFT   = 1,
205     AUDIO_TRACK_BOTH_RIGHT  = 2,
206     AUDIO_TRACK_EXCHANGE    = 3,
207     AUDIO_TRACK_MIX         = 4,
208     AUDIO_TRACK_LEFT_MUTE   = 5,
209     AUDIO_TRACK_RIGHT_MUTE  = 6,
210     AUDIO_TRACK_BOTH_MUTE   = 7,
211     AUDIO_TRACK_FRONT_LEFT  = 8,
212     AUDIO_TRACK_FRONT_RIGHT = 9,
213     AUDIO_TRACK_OUT_STEREO  = 10,
214 
215     AUDIO_TRACK_BUTT
216 } AUDIO_TRACK_MODE_E;
217 
218 typedef enum rkAUDIO_FADE_RATE_E {
219     AUDIO_FADE_RATE_1   = 0,
220     AUDIO_FADE_RATE_2   = 1,
221     AUDIO_FADE_RATE_4   = 2,
222     AUDIO_FADE_RATE_8   = 3,
223     AUDIO_FADE_RATE_16  = 4,
224     AUDIO_FADE_RATE_32  = 5,
225     AUDIO_FADE_RATE_64  = 6,
226     AUDIO_FADE_RATE_128 = 7,
227 
228     AUDIO_FADE_RATE_BUTT
229 } AUDIO_FADE_RATE_E;
230 
231 typedef struct rkAUDIO_FADE_S {
232     RK_BOOL         bFade;
233     AUDIO_FADE_RATE_E enFadeInRate;
234     AUDIO_FADE_RATE_E enFadeOutRate;
235 } AUDIO_FADE_S;
236 
237 typedef enum rkAUDIO_VOLUME_CURVE_E {
238     AUDIO_CURVE_UNSET     = 0,
239     AUDIO_CURVE_LINEAR    = 1,
240     AUDIO_CURVE_LOGARITHM = 2,
241     AUDIO_CURVE_CUSTOMIZE = 3,
242 
243     AUDIO_CURVE_BUTT
244 } AUDIO_VOLUME_CURVE_E;
245 
246 typedef struct rkAUDIO_VOLUME_CURVE_S {
247     AUDIO_VOLUME_CURVE_E enCurveType;
248     RK_S32               s32Resolution;
249     RK_FLOAT             fMinDB;
250     RK_FLOAT             fMaxDB;
251     RK_U32              *pCurveTable;
252 } AUDIO_VOLUME_CURVE_S;
253 
254 /*Defines the configure parameters of AI saving file.*/
255 typedef struct rkAUDIO_SAVE_FILE_INFO_S {
256     RK_BOOL     bCfg;
257     RK_CHAR     aFilePath[MAX_AUDIO_FILE_PATH_LEN];
258     RK_CHAR     aFileName[MAX_AUDIO_FILE_NAME_LEN];
259     RK_U32      u32FileSize;  /*in KB*/
260 } AUDIO_SAVE_FILE_INFO_S;
261 
262 /*Defines whether the file is saving or not .*/
263 typedef struct rkAUDIO_FILE_STATUS_S {
264     RK_BOOL     bSaving;
265 } AUDIO_FILE_STATUS_S;
266 
267 typedef enum rkAIO_VQE_CONFIG_METHOD  {
268     AIO_VQE_CONFIG_NONE,
269     AIO_VQE_CONFIG_USER,       // user set all configs by parameters
270     AIO_VQE_CONFIG_LOAD_FILE,  // read and parse config file
271 } AIO_VQE_CONFIG_METHOD;
272 
273 typedef enum rkAI_VQE_TYPE_S {
274     AI_VQE_NONE = 0,
275     AI_VQE_RECORD,
276     AI_VQE_TALK,
277 } AI_VQE_TYPE_S;
278 
279 typedef struct rkAI_VQE_CONFIG_S {
280     AIO_VQE_CONFIG_METHOD enCfgMode;  /* see AIO_VQE_CONFIG_METHOD */
281     RK_S32                s32WorkSampleRate;    /* Sample Rate: 8KHz/16KHz/48KHz. default: 16KHz*/
282     RK_S32                s32FrameSample;       /* VQE frame length, default: 256 frames(16ms,16KHz) */
283     union {
284         /* config file if enCfgMode = AIO_VQE_CONFIG_LOAD_FILE */
285         RK_CHAR           aCfgFile[MAX_AUDIO_FILE_PATH_LEN];
286     };
287 } AI_VQE_CONFIG_S;
288 
289 typedef struct rkAI_AED_CONFIG_S {
290     RK_FLOAT              fSnrDB;
291     RK_FLOAT              fLsdDB;
292     RK_S32                s32Policy;
293 } AI_AED_CONFIG_S;
294 
295 typedef struct rkAI_AED_RESULT_S {
296     RK_BOOL               bAcousticEventDetected;
297     RK_BOOL               bLoudSoundDetected;
298     RK_FLOAT              lsdResult;
299 } AI_AED_RESULT_S;
300 
301 typedef RK_VOID (*AI_BCD_CB)(void);
302 
303 typedef struct rkAI_BCD_CONFIG_S {
304     RK_S32                mFrameLen;       // Statistics frame length, the longer it is, the harder it is to wake up
305     RK_S32                mBlankFrameMax;  // Reset the frame length, and re-statistics when the frame length exceeds it
306     RK_FLOAT              mCryEnergy;
307     RK_FLOAT              mJudgeEnergy;
308     RK_FLOAT              mCryThres1;
309     RK_FLOAT              mCryThres2;
310 } AI_BCD_CONFIG_S;
311 
312 typedef struct rkAI_BCD_RESULT_S {
313     RK_BOOL               bBabyCry;
314 } AI_BCD_RESULT_S;
315 
316 typedef struct rkAI_BUZ_CONFIG_S {
317     RK_S32                mFrameLen;       // Statistics frame length, the longer it is, the harder it is to wake up
318     RK_S32                mBlankFrameMax;  // Reset the frame length, and re-statistics when the frame length exceeds it
319     RK_FLOAT              mEnergyMean;
320     RK_FLOAT              mEnergyMax;
321     RK_FLOAT              mBuzThres1;
322     RK_FLOAT              mBuzThres2;
323 } AI_BUZ_CONFIG_S;
324 
325 typedef struct rkAI_BUZ_RESULT_S {
326     RK_BOOL               bBuzz;
327 } AI_BUZ_RESULT_S;
328 
329 typedef struct rkAI_GBS_CONFIG_S {
330     RK_S32                mFrameLen;       // Statistics frame length, the longer it is, the harder it is to wake up
331 } AI_GBS_CONFIG_S;
332 
333 typedef struct rkAI_GBS_RESULT_S {
334     RK_BOOL               bGbs;
335 } AI_GBS_RESULT_S;
336 
337 /**Defines the configure parameters of ANR.*/
338 typedef struct rkAUDIO_ANR_CONFIG_S {
339     RK_FLOAT    fNoiseFactor;
340     RK_S32      s32SwU;
341     RK_FLOAT    fPsiMin;
342     RK_FLOAT    fPsiMax;
343     RK_FLOAT    fGmin;
344 } AUDIO_ANR_CONFIG_S;
345 
346 typedef struct rkAUDIO_AGC_CONFIG_S {
347     RK_FLOAT    fAttackTime;
348     RK_FLOAT    fReleaseTime;
349     RK_FLOAT    fAttenuateTime;
350     RK_FLOAT    fMaxGain;
351     RK_FLOAT    fMaxPeak;
352     RK_FLOAT    fRth0;
353     RK_FLOAT    fRth1;
354     RK_FLOAT    fRth2;
355     RK_FLOAT    fRk0;
356     RK_FLOAT    fRk1;
357     RK_FLOAT    fRk2;
358     RK_FLOAT    fLineGainDb;
359     RK_S32      s32SwSmL0;
360     RK_S32      s32SwSmL1;
361     RK_S32      s32SwSmL2;
362 } AUDIO_AGC_CONFIG_S;
363 
364 typedef enum rkAO_VQE_MASK {
365     AO_VQE_MASK_NONE = 1 << 0,
366     AO_VQE_MASK_3A   = 1 << 1,
367     AO_VQE_MASK_AGC  = 1 << 2,
368     AO_VQE_MASK_ANR  = 1 << 3,
369 } AO_VQE_MASK;
370 
371 typedef struct rkAO_VQE_USER_CONFIG_S {
372     RK_U32                u32OpenMask;          /* see AO_VQE_MASK */
373 
374     AUDIO_AGC_CONFIG_S    stAgcCfg;
375     AUDIO_ANR_CONFIG_S    stAnrCfg;
376 } AO_VQE_USER_CONFIG_S;
377 
378 typedef struct rkAO_VQE_CONFIG_S {
379     AIO_VQE_CONFIG_METHOD enCfgMode;  /* see AIO_VQE_CONFIG_METHOD */
380     RK_S32                s32WorkSampleRate;    /* Sample Rate: 8KHz/16KHz/48KHz. default: 16KHz*/
381     RK_S32                s32FrameSample;       /* VQE frame length, default: 256 frames(16ms,16KHz) */
382     union {
383         /* config file if enCfgMode = AIO_VQE_CONFIG_LOAD_FILE */
384         RK_CHAR               aCfgFile[MAX_AUDIO_FILE_PATH_LEN];
385         /* set user' parameters if enCfgMode = AIO_VQE_CONFIG_USER */
386         AO_VQE_USER_CONFIG_S  stUsrCfg;
387     };
388 } AO_VQE_CONFIG_S;
389 
390 typedef enum rkEN_AIO_ERR_CODE_E {
391     AIO_ERR_VQE_ERR        = 65 , /*vqe error*/
392 } RK_AIO_ERR_CODE_E;
393 
394 /* at lease one parameter is illagal ,eg, an illegal enumeration value  */
395 #define RK_ERR_AIO_ILLEGAL_PARAM    RK_DEF_ERR(RK_ID_AIO, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
396 /* using a NULL point */
397 #define RK_ERR_AIO_NULL_PTR         RK_DEF_ERR(RK_ID_AIO, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
398 /* operation is not supported by NOW */
399 #define RK_ERR_AIO_NOT_PERM         RK_DEF_ERR(RK_ID_AIO, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
400 /* vqe  err */
401 #define RK_ERR_AIO_REGISTER_ERR     RK_DEF_ERR(RK_ID_AIO, RK_ERR_LEVEL_ERROR, AIO_ERR_VQE_ERR)
402 
403 /* invlalid device ID */
404 #define RK_ERR_AI_INVALID_DEVID     RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_DEVID)
405 /* invlalid channel ID */
406 #define RK_ERR_AI_INVALID_CHNID     RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_CHNID)
407 /* at lease one parameter is illagal ,eg, an illegal enumeration value  */
408 #define RK_ERR_AI_ILLEGAL_PARAM     RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
409 /* using a NULL point */
410 #define RK_ERR_AI_NULL_PTR          RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
411 /* try to enable or initialize system,device or channel, before configing attribute */
412 #define RK_ERR_AI_NOT_CONFIG        RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_CONFIG)
413 /* operation is not supported by NOW */
414 #define RK_ERR_AI_NOT_SUPPORT       RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT)
415 /* operation is not permitted ,eg, try to change stati attribute */
416 #define RK_ERR_AI_NOT_PERM          RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
417 /* the devide is not enabled  */
418 #define RK_ERR_AI_NOT_ENABLED       RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST)
419 /* failure caused by malloc memory */
420 #define RK_ERR_AI_NOMEM             RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM)
421 /* failure caused by malloc buffer */
422 #define RK_ERR_AI_NOBUF             RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF)
423 /* no data in buffer */
424 #define RK_ERR_AI_BUF_EMPTY         RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY)
425 /* no buffer for new data */
426 #define RK_ERR_AI_BUF_FULL          RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL)
427 /* system is not ready,had not initialed or loaded*/
428 #define RK_ERR_AI_SYS_NOTREADY      RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
429 
430 #define RK_ERR_AI_BUSY              RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY)
431 /* vqe  err */
432 #define RK_ERR_AI_VQE_ERR           RK_DEF_ERR(RK_ID_AI, RK_ERR_LEVEL_ERROR, AIO_ERR_VQE_ERR)
433 
434 /* invlalid device ID */
435 #define RK_ERR_AO_INVALID_DEVID     RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_DEVID)
436 /* invlalid channel ID */
437 #define RK_ERR_AO_INVALID_CHNID     RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_CHNID)
438 /* at lease one parameter is illagal ,eg, an illegal enumeration value  */
439 #define RK_ERR_AO_ILLEGAL_PARAM     RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
440 /* using a NULL point */
441 #define RK_ERR_AO_NULL_PTR          RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
442 /* try to enable or initialize system,device or channel, before configing attribute */
443 #define RK_ERR_AO_NOT_CONFIG        RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_CONFIG)
444 /* operation is not supported by NOW */
445 #define RK_ERR_AO_NOT_SUPPORT       RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT)
446 /* operation is not permitted ,eg, try to change stati attribute */
447 #define RK_ERR_AO_NOT_PERM          RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
448 /* the devide is not enabled  */
449 #define RK_ERR_AO_NOT_ENABLED       RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST)
450 /* failure caused by malloc memory */
451 #define RK_ERR_AO_NOMEM             RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM)
452 /* failure caused by malloc buffer */
453 #define RK_ERR_AO_NOBUF             RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF)
454 /* no data in buffer */
455 #define RK_ERR_AO_BUF_EMPTY         RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY)
456 /* no buffer for new data */
457 #define RK_ERR_AO_BUF_FULL          RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL)
458 /* system is not ready,had not initialed or loaded*/
459 #define RK_ERR_AO_SYS_NOTREADY      RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
460 
461 #define RK_ERR_AO_BUSY              RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY)
462 /* vqe  err */
463 #define RK_ERR_AO_VQE_ERR           RK_DEF_ERR(RK_ID_AO, RK_ERR_LEVEL_ERROR, AIO_ERR_VQE_ERR)
464 
465 
466 #ifdef __cplusplus
467 #if __cplusplus
468 }
469 #endif
470 #endif  /* End of #ifdef __cplusplus */
471 
472 #endif  // INCLUDE_RT_MPI_MPI_COMM_AIO_H_
473