From 178a830b8ad85813b7bf0b271be79f3a8d3a6277 Mon Sep 17 00:00:00 2001 From: Tobias Jahnke Date: Wed, 10 Oct 2018 15:52:57 +0200 Subject: 4a-hal-unicens: add Fiberdyne Master Volume Bug-AGL: SPEC-1758 As preparation before introducing UNICENS 4a plugin: - Init volume library at first - Add fiberdyne master volume - Introduce commands sent by control messages - Removes outdated controls - Known issue: turn ALSA volume above "93" to hear some sound Change-Id: I591c6b109a51c9da602ad08514b67c2ec573e09c Signed-off-by: Tobias Jahnke --- MOST_UNICENS/hal_most_unicens.c | 208 ++++------------------------------------ 1 file changed, 17 insertions(+), 191 deletions(-) (limited to 'MOST_UNICENS/hal_most_unicens.c') diff --git a/MOST_UNICENS/hal_most_unicens.c b/MOST_UNICENS/hal_most_unicens.c index d31082c..d106d6e 100644 --- a/MOST_UNICENS/hal_most_unicens.c +++ b/MOST_UNICENS/hal_most_unicens.c @@ -31,101 +31,6 @@ #define PCM_Volume_Navigation 1001 #define PCM_Volume_Emergency 1002 -/* Default Values for MasterVolume Ramping */ -STATIC halVolRampT volRampMaster= { - .mode = RAMP_VOL_NORMAL, - .slave = Master_Playback_Volume, - .delay = 100*1000, // ramping delay in us - .stepDown=1, - .stepUp =1, -}; - -/* Soft Volume Ramping Value can be customize by Audio Role and hardware card */ -STATIC halVolRampT volRampEmergency= { - .slave = Emergency_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 10, -}; - -STATIC halVolRampT volRampWarning= { - .slave = Warning_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 10, -}; - -STATIC halVolRampT volRampCustomHigh= { - .slave = CustomHigh_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampPhone= { - .slave = Phone_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampNavigation= { - .slave = Navigation_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampCustomMedium= { - .slave = CustomMedium_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampVideo= { - .slave = Video_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampStreaming= { - .slave = Streaming_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampMultimedia= { - .slave = Multimedia_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampRadio= { - .slave = Radio_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampCustomLow= { - .slave = CustomLow_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - -STATIC halVolRampT volRampFallback= { - .slave = Fallback_Playback_Volume, - .delay = 50*1000, // ramping delay in us - .stepDown= 2, - .stepUp = 4, -}; - - static int master_volume = 80; static json_bool master_switch; static int pcm_volume[PCM_MAX_CHANNELS] = {100,100,100,100,100,100}; @@ -238,93 +143,14 @@ STATIC alsaHalMapT alsaHalMap[]= { { .tag=Master_Playback_Volume, .cb={.callback=unicens_master_vol_cb, .handle=&master_volume}, .info="Sets master playback volume", .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER, .count=1, .minval=0, .maxval=100, .step=1, .value=80, .name="Master Playback Volume"} }, +#if 0 /*{ .tag=Master_OnOff_Switch, .cb={.callback=unicens_master_switch_cb, .handle=&master_switch}, .info="Sets master playback switch", .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_BOOLEAN, .count=1, .minval=0, .maxval=1, .step=1, .value=1, .name="Master Playback Switch"} },*/ { .tag=PCM_Playback_Volume, .cb={.callback=unicens_pcm_vol_cb, .handle=&pcm_volume}, .info="Sets PCM playback volume", .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER, .count=6, .minval=0, .maxval=100, .step=1, .value=100, .name="PCM Playback Volume"} }, - - // Sound card does not have hardware volume ramping - { .tag=Master_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampMaster}, .info="RampUp Master Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER, .name="Master_Ramp", .count=1, .minval=0, .maxval=100, .step=1, .value=80 } - }, - - // Implement Rampup Volume for Virtual Channels (0-100) - { .tag=Emergency_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampEmergency}, .info="RampUp Emergency Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Emergency_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Warning_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampWarning}, .info="RampUp Warning Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Warning_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=CustomHigh_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampCustomHigh}, .info="RampUp CustomHigh Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="CustomHigh_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Phone_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampPhone}, .info="RampUp Phone Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Phone_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Navigation_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampNavigation}, .info="RampUp Navigation Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Navigation_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=CustomMedium_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampCustomMedium}, .info="RampUp CustomMedium Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="CustomMedium_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Video_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampVideo}, .info="RampUp Video Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Video_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Streaming_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampStreaming}, .info="RampUp Streaming Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Streaming_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Multimedia_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampMultimedia}, .info="RampUp Multimedia Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Multimedia_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Radio_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampRadio}, .info="RampUp Radio Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Radio_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=CustomLow_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampCustomLow}, .info="RampUp CustomLow Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="CustomLow_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - { .tag=Fallback_Playback_Ramp, .cb={.callback=volumeRamp, .handle=&volRampFallback}, .info="RampUp Fallback Volume", - .ctl={.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.name="Fallback_Ramp", .minval=0, .maxval=100, .step=1, .value=80 } - }, - - // Bind with existing ones created by ALSA configuration (and linked to softvol) [0-255] - { .tag=Emergency_Playback_Volume , - .ctl={.name="Emergency_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Warning_Playback_Volume , - .ctl={.name="Warning_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=CustomHigh_Playback_Volume , - .ctl={.name="CustomHigh_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Phone_Playback_Volume , - .ctl={.name="Phone_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Navigation_Playback_Volume , - .ctl={.name="Navigation_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=CustomMedium_Playback_Volume , - .ctl={.name="CustomMedium_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Video_Playback_Volume , - .ctl={.name="Video_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Streaming_Playback_Volume , - .ctl={.name="Streaming_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Multimedia_Playback_Volume , - .ctl={.name="Multimedia_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Radio_Playback_Volume , - .ctl={.name="Radio_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=CustomLow_Playback_Volume , - .ctl={.name="CustomLow_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, - { .tag=Fallback_Playback_Volume , - .ctl={.name="Fallback_Volume",.numid=CTL_AUTO, .type=SND_CTL_ELEM_TYPE_INTEGER,.count=2, .maxval=255, .value=204 } - }, +#endif { .tag=EndHalCrlTag} /* marker for end of the array */ } ; @@ -341,6 +167,21 @@ STATIC int unicens_service_init() { int err = 0; AFB_NOTICE("Initializing HAL-MOST-UNICENS-BINDING"); + err = wrap_volume_init(); + if (err) { + AFB_ERROR("Failed to initialize wrapper for volume library"); + goto OnErrorExit; + } + + /* Step 1: Set output volume to pre-defined level */ + /* in order to avoid muted volume to be persistent after boot. */ + wrap_volume_master(80); + wrap_volume_pcm(pcm_volume, PCM_MAX_CHANNELS/*array size*/); + + /* Step 2: risk to have influence on mixer controls init */ + /* request of initial card values */ + /* unicens_request_card_values(ALSA_DEVICE_ID); */ + err = halServiceInit(afbBindingV2.api, &alsaHalSndCard); if (err) { AFB_ERROR("Cannot initialize ALSA soundcard."); @@ -359,21 +200,6 @@ STATIC int unicens_service_init() { goto OnErrorExit; } - err = wrap_volume_init(); - if (err) { - AFB_ERROR("Failed to initialize wrapper for volume library"); - goto OnErrorExit; - } - - /* Step 1: Set output volume to pre-defined level */ - /* in order to avoid muted volume to be persistent after boot. */ - wrap_volume_master(80); - wrap_volume_pcm(pcm_volume, PCM_MAX_CHANNELS/*array size*/); - - /* Step 2: risk to have influence on mixer controls init */ - /* request of initial card values */ - /* unicens_request_card_values(ALSA_DEVICE_ID); */ - OnErrorExit: AFB_NOTICE("Initializing HAL-MOST-UNICENS-BINDING done.."); return err; -- cgit 1.2.3-korg