# # Build # # generic components set build_components { core init drivers/timer drivers/audio server/mixer server/dynamic_rom server/report_rom test/audio_out } source ${genode_dir}/repos/base/run/platform_drv.inc append_platform_drv_build_components build $build_components create_boot_directory # # Config # set config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> </parent-provides> <default-route> <service name="Audio_out"> <child name="mixer"/> </service> <any-service> <parent/> <any-child/> </any-service> </default-route>} append_platform_drv_config append config { <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="audio_drv"> <binary name="} [audio_drv_binary] {"/> <resource name="RAM" quantum="8M"/> <provides><service name="Audio_out"/></provides> <config/> </start> <start name="report_rom"> <resource name="RAM" quantum="2M"/> <provides> <service name="ROM"/> <service name="Report"/> </provides> <config verbose="yes"> <policy label_prefix="to_whom_it_may_concern" report="mixer -> channel_list"/> </config> </start> <start name="dynamic_rom"> <resource name="RAM" quantum="4M"/> <provides><service name="ROM"/></provides> <config verbose="yes"> <rom name="mixer.config"> <inline description="client1 plays"> <mixer.config> <default out_volume="75" volume="42" muted="0"/> <channel_list> <channel type="input" label="client1" name="right" number="1" active="1" volume="70" muted="0"/> <channel type="input" label="client1" name="left" number="0" active="1" volume="70" muted="0"/> <channel type="input" label="client2" name="right" number="1" active="1" volume="0" muted="0"/> <channel type="input" label="client2" name="left" number="0" active="1" volume="0" muted="0"/> <channel type="output" label="master" name="left" number="0" active="1" volume="100" muted="0"/> <channel type="output" label="master" name="right" number="1" active="1" volume="100" muted="0"/> </channel_list> </mixer.config> </inline> <sleep milliseconds="10000" /> <inline description="client2 plays"> <mixer.config> <default out_volume="75" volume="42" muted="0"/> <channel_list> <channel type="input" label="client1" name="right" number="1" active="1" volume="0" muted="0"/> <channel type="input" label="client1" name="left" number="0" active="1" volume="0" muted="0"/> <channel type="input" label="client2" name="right" number="1" active="1" volume="70" muted="0"/> <channel type="input" label="client2" name="left" number="0" active="1" volume="70" muted="0"/> <channel type="output" label="master" name="left" number="0" active="1" volume="100" muted="0"/> <channel type="output" label="master" name="right" number="1" active="1" volume="100" muted="0"/> </channel_list> </mixer.config> </inline> <sleep milliseconds="10000" /> <inline description="both play"> <mixer.config> <default out_volume="75" volume="42" muted="0"/> <channel_list> <channel type="input" label="client1" name="right" number="1" active="1" volume="50" muted="0"/> <channel type="input" label="client1" name="left" number="0" active="1" volume="50" muted="0"/> <channel type="input" label="client2" name="right" number="1" active="1" volume="50" muted="0"/> <channel type="input" label="client2" name="left" number="0" active="1" volume="50" muted="0"/> <channel type="output" label="master" name="left" number="0" active="1" volume="100" muted="0"/> <channel type="output" label="master" name="right" number="1" active="1" volume="100" muted="0"/> </channel_list> </mixer.config> </inline> <sleep milliseconds="10000" /> </rom> </config> </start> <start name="mixer"> <resource name="RAM" quantum="1M"/> <provides><service name="Audio_out"/></provides> <configfile name="mixer.config"/> <route> <service name="Audio_out"> <child name="audio_drv"/> </service> <service name="Report"> <child name="report_rom"/> </service> <service name="ROM" label="mixer.config"> <child name="dynamic_rom"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="client1"> <binary name="test-audio_out"/> <resource name="RAM" quantum="4M"/> <config> <filename>client1.f32</filename> </config> <route> <service name="Audio_out"> <child name="mixer"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="client2"> <binary name="test-audio_out"/> <resource name="RAM" quantum="4M"/> <config> <filename>client2.f32</filename> </config> <route> <service name="Audio_out"> <child name="mixer"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> </config>} install_config $config if {[expr ![file exists bin/client1.f32] || ![file exists bin/client2.f32]]} { puts "" puts "The sample files are missing. Please take a look at repos/dde_bsd/README" puts "and create 'client1.f32' and 'client2.f32'. Afterwards put them into './bin'." puts "" exit 1 } # # Boot modules # # generic modules append boot_modules { core ld.lib.so init timer report_rom dynamic_rom } [audio_drv_binary] { test-audio_out mixer client1.f32 client2.f32 } # platform-specific components append_platform_drv_boot_modules build_boot_image $boot_modules append qemu_args "-m 256 -soundhw es1370 -nographic" run_genode_until forever