Skip to content

Commit

Permalink
Gain and volume distinction on i6c
Browse files Browse the repository at this point in the history
  • Loading branch information
wberube committed Jun 25, 2024
1 parent 93d9806 commit 33f4553
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
15 changes: 11 additions & 4 deletions src/hal/star/i6c_aud.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}

Expand All @@ -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");
Expand Down
7 changes: 2 additions & 5 deletions src/hal/star/i6c_hal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 33f4553

Please sign in to comment.