diff --git a/src/hal/star/i6c_aud.h b/src/hal/star/i6c_aud.h index 8aa4e2f..9ad584e 100644 --- a/src/hal/star/i6c_aud.h +++ b/src/hal/star/i6c_aud.h @@ -135,8 +135,9 @@ typedef struct { int (*fnSetI2SConfig)(i6c_aud_input input, i6c_aud_i2s *config); - int (*fnSetGain)(int device, unsigned char group, char gains[], unsigned char gainSize); + int (*fnSetGain)(i6c_aud_input input, char leftLevel, char rightLevel); int (*fnSetMute)(int device, unsigned char group, char actives[], unsigned char activeSize); + int (*fnSetVolume)(int device, unsigned char group, char levels[], unsigned char levelSize); int (*fnFreeFrame)(int device, unsigned char group, i6c_aud_frm *frame, i6c_aud_frm *echoFrame); int (*fnGetFrame)(int device, unsigned char group, i6c_aud_frm *frame, i6c_aud_frm *echoFrame, int millis); @@ -184,9 +185,9 @@ static int i6c_aud_load(i6c_aud_impl *aud_lib) { return EXIT_FAILURE; } - if (!(aud_lib->fnSetGain = (int(*)(int device, unsigned char group, char gains[], unsigned char gainSize)) - dlsym(aud_lib->handle, "MI_AI_SetGain"))) { - fprintf(stderr, "[i6c_aud] Failed to acquire symbol MI_AI_SetGain!\n"); + if (!(aud_lib->fnSetGain = (int(*)(i6c_aud_input input, char leftLevel, char rightLevel)) + dlsym(aud_lib->handle, "MI_AI_SetIfGain"))) { + fprintf(stderr, "[i6c_aud] Failed to acquire symbol MI_AI_SetIfGain!\n"); return EXIT_FAILURE; } @@ -196,6 +197,12 @@ static int i6c_aud_load(i6c_aud_impl *aud_lib) { return EXIT_FAILURE; } + if (!(aud_lib->fnSetVolume = (int(*)(int device, unsigned char group, char levels[], unsigned char levelSize)) + dlsym(aud_lib->handle, "MI_AI_SetGain"))) { + fprintf(stderr, "[i6c_aud] Failed to acquire symbol MI_AI_SetGain!\n"); + return EXIT_FAILURE; + } + if (!(aud_lib->fnFreeFrame = (int(*)(int device, unsigned char group, i6c_aud_frm *frame, i6c_aud_frm *echoFrame)) dlsym(aud_lib->handle, "MI_AI_ReleaseData"))) { fprintf(stderr, "[i6c_aud] Failed to acquire symbol MI_AI_ReleaseData!\n"); diff --git a/src/hal/star/i6c_hal.c b/src/hal/star/i6c_hal.c index cf18c83..542810e 100644 --- a/src/hal/star/i6c_hal.c +++ b/src/hal/star/i6c_hal.c @@ -105,15 +105,12 @@ int i6c_audio_init(short samplerate) return ret;*/ if (ret = i6c_aud.fnAttachToDevice(_i6c_aud_dev, input, inputSize)) return ret; + if (ret = i6c_aud.fnSetGain(input[0], 13, 13)) + return ret; } if (ret = i6c_aud.fnEnableGroup(_i6c_aud_dev, _i6c_aud_chn)) return ret; - { - char gain[1] = { 13 }; - if (ret = i6c_aud.fnSetGain(_i6c_aud_dev, _i6c_aud_chn, gain, 1)) - return ret; - } { i6c_sys_bind bind = { .module = I6C_SYS_MOD_AI,