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