shairport.init (2390B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2013-2014 OpenWrt.org 3 4 START=94 5 USE_PROCD=1 6 7 append_arg() { 8 local cfg="$1" 9 local var="$2" 10 local opt="$3" 11 local def="$4" 12 local val 13 14 config_get val "$cfg" "$var" 15 [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" 16 } 17 18 append_bool() { 19 local cfg="$1" 20 local var="$2" 21 local opt="$3" 22 local def="$4" 23 local val 24 25 config_get_bool val "$cfg" "$var" "$def" 26 [ "$val" = 1 ] && procd_append_param command "$opt" 27 } 28 29 start_instance() { 30 local cfg="$1" 31 local ao dev aux 32 33 config_get_bool aux "$cfg" 'disabled' '0' 34 [ "$aux" = 1 ] && return 1 35 36 procd_open_instance 37 38 procd_set_param command /usr/bin/shairport 39 40 append_arg "$cfg" bname "-a" "AirPort" 41 append_arg "$cfg" log_file "-l" 42 append_arg "$cfg" err_file "-e" 43 append_arg "$cfg" meta_dir "-M" 44 append_arg "$cfg" buffer "-b" 45 append_arg "$cfg" port "-p" 46 append_arg "$cfg" password "-k" 47 append_arg "$cfg" mdns "-m" 48 49 append_arg "$cfg" cmd_start "-B" 50 append_arg "$cfg" cmd_stop "-E" 51 append_bool "$cfg" cmd_wait "-w" 52 53 append_arg "$cfg" audio_output "-o" 54 55 config_get ao "$cfg" audio_output "" 56 if [ "$ao" = "alsa" ]; then 57 config_get dev "$cfg" output_dev "" 58 if [ -n "$dev" ]; then 59 procd_append_param command "--" 60 append_arg "$cfg" output_dev "-d" 61 append_arg "$cfg" mixer_dev "-m" 62 append_arg "$cfg" mixer_type "-t" 63 append_arg "$cfg" mixer_control "-c" 64 append_arg "$cfg" mixer_index "-i" 65 fi 66 elif [ "$ao" = "ao" ]; then 67 config_get dev "$cfg" ao_driver "" 68 if [ -n "$dev" ]; then 69 procd_append_param command "--" 70 append_arg "$cfg" ao_driver "-d" 71 append_arg "$cfg" ao_id "-i" 72 append_arg "$cfg" ao_name "-n" 73 append_arg "$cfg" ao_options "-o" 74 fi 75 elif [ "$ao" = "pipe" ]; then 76 config_get dev "$cfg" output_fifo "" 77 if [ -n "$dev" ]; then 78 procd_append_param command "--" 79 append_arg "$cfg" output_fifo "" 80 fi 81 elif [ "$ao" = "pulse" ]; then 82 config_get dev "$cfg" pulse_server "" 83 if [ -n "$dev" ]; then 84 procd_append_param command "--" 85 append_arg "$cfg" pulse_server "-a" 86 append_arg "$cfg" pulse_sink "-s" 87 append_arg "$cfg" pulse_appname "-n" 88 fi 89 fi 90 91 config_get_bool aux "$cfg" 'respawn' '0' 92 [ "$aux" = 1 ] && procd_set_param respawn 93 94 procd_close_instance 95 } 96 97 service_triggers() { 98 procd_add_reload_trigger "shairport" 99 } 100 101 start_service() { 102 config_load shairport 103 config_foreach start_instance shairport 104 }