summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspm-if.bbappend
blob: 5efe0104599cd5328b101f35134e479837c10651 (plain)
1
2
KERNEL_MODULE_AUTOLOAD:append = " vspm_if"
KERNEL_MODULE_PACKAGE_SUFFIX = ""
ht: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# 
# Author: Fulup Ar Foll
# Object: PCM hook type 
#
# Test  :  Note: Jabra_USB=hw:v1340
#  Check SoundCard  speaker-test -Dhw:v1340 -c2 -twav
#  Check MixerPCM   speaker-test -DMyMixerPCM -c2 -twav 
#  Check HookPCM    speaker-test -DMyNavigationHook -c2 -twav 
#  Check NavPCM     speaker-test -DMyNavPCM -c2 -twav
#  MultiMedia aplay -DDMyNavPCM /usr/share/sounds/alsa/test.wav
#
# Bug/Feature: when softvol control is initialised from plugin and not
#    from AGL binding. At 1st run ctl has invalid TLV and cannot be
#    use. Bypass Solution: 
#     * start audio-binder before playing sound (binding create control before softvol plugin)
#     * run a dummy aplay -DMyNavPCM "" to get a clean control
#
# References: https://www.spinics.net/lists/alsa-devel/msg54235.html
# --------------------------------------------------------------------

# Mixer PCM allow to play multiple stream simultaneously
# ------------------------------------------------------
pcm.MyMixerPCM { 
    type dmix 
    ipc_key 1024
    ipc_key_add_uid false
    ipc_perm 0666   # mixing for all users

    # Define target effective sound card (cannot be a plugin)
    slave { 
        pcm "hw:v1340"  #Jabra Solmate 
        period_time 0 
        period_size 1024 
        buffer_size 8192
        rate 44100
    }

    # DMIX can only map two channels
    bindings { 
        0 0 
        1 1 
    } 
} 

# Define a Hook_type with a private sharelib
# -------------------------------------------
pcm_hook_type.MyHookPlugin {
    install "AlsaInstallHook" 
    lib "/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build/Alsa-Plugin/Alsa-Policy-Hook/policy_hook_cb.so"
}

# Define a HookedPCM that point to Hook_type sharelib
# ----------------------------------------------------
pcm.MyNavigationHook {
    type hooks
    slave.pcm "MyMixerPCM"

    # Defined used hook sharelib and provide arguments/config to install func
    hooks.0 {
        type "MyHookPlugin"
        hook_args {
            verbose true # print few log messages (default false);

            # Every Call should return OK in order PCM to open (default timeout 100ms)
            uri   "ws://localhost:1234/api?token='audio-agent-token'"
            request {
                # Request autorisation to write on navigation 
                RequestNavigation {
                    api   "polctl"
                    verb  "navigation"
                } 
                # subscribe to Audio Agent Event
                SubscriveEvents {
                    api   "polctl"
                    verb  "monitor"
                }
                TestAutoStop {
                    api   "polctl"
                    verb  "event_test"
                    query "{'label':'stop', 'delay':10000}"
                }
                TestAutoStart {
                    api   "polctl"
                    verb  "event_test"
                    query "{'label':'stop', 'delay':20000}"
                }
                # start a test pause/resume not supported by every hardware
                TestPauseResume {
                    api   "polctl"
                    verb  "event_test"
                    query "{'label':'pause', 'delay':3000, 'count':10}"
                } 
            }
        }
    }
}

# If hardware does not support mixer emulate it with softvol
# -----------------------------------------------------------
pcm.MyMultimediaPCM {
    type        softvol

    # Point Slave on HOOK for policies control
    slave.pcm   "MyNavigationHook"

    # resolution=HAL(valMax+1) (default=256)
    resolution 256

    # name should match with HAL but do not set card=xx
    control.name    "Playback Navigation"

    # Make this plugin visible from aplay -L
    hint {
      show on
      description "Navigation SolftVol PCM"
    }    
}

# If hardware does not support mixer emulate it with softvol
# -----------------------------------------------------------
pcm.MyNavPCM {
    type        softvol

    # Point Slave on HOOK for policies control
    slave.pcm   "MyNavigationHook"

    # resolution=HAL(valMax+1) (default=256)
    resolution 256

    # name should match with HAL but do not set card=xx
    control.name    "Playback Navigation"

    # Make this plugin visible from aplay -L
    hint {
      show on
      description "Navigation SolftVol PCM"
    }    
}

# If hardware does not support mixer emulate it with softvol
# -----------------------------------------------------------
pcm.MyAlarmPCM {
    type        softvol

    # Point Slave on HOOK for policies control
    slave.pcm   "MyNavigationHook"

    # resolution=HAL(valMax+1) (default=256)
    resolution 256

    # name should match with HAL but do not set card=xx
    control.name    "Playback Navigation"

    # Make this plugin visible from aplay -L
    hint {
      show on
      description "Navigation SolftVol PCM"
    }    
}