From 833cbec9f9124463bb48b0bb2d6ebafd680a857e Mon Sep 17 00:00:00 2001 From: Kent Ekholm Date: Fri, 15 Feb 2019 17:06:53 +0100 Subject: [PATCH 1/4] voice-client: Making voice-client scripts work for both Broadcom and Intel. Ref: #345 --- .../asterisk_templates/logger.conf.TEMPLATE | 1 + voice-client/files/etc/init.d/voice_client | 149 ++++++++++-------- .../files/etc/uci-defaults/99-voice_client | 44 ++++-- voice-client/files/lib/cw.sh | 18 ++- voice-client/files/lib/voice/broadcom.sh | 29 ++++ voice-client/files/lib/voice/intel.sh | 41 +++++ voice-client/files/usr/lib/asterisk/cbbs.sh | 12 +- .../files/usr/libexec/rpcd/voice.asterisk | 16 +- 8 files changed, 218 insertions(+), 92 deletions(-) create mode 100755 voice-client/files/lib/voice/broadcom.sh create mode 100755 voice-client/files/lib/voice/intel.sh diff --git a/voice-client/files/etc/asterisk_templates/logger.conf.TEMPLATE b/voice-client/files/etc/asterisk_templates/logger.conf.TEMPLATE index 56eeb5f6b..ee73c9a18 100644 --- a/voice-client/files/etc/asterisk_templates/logger.conf.TEMPLATE +++ b/voice-client/files/etc/asterisk_templates/logger.conf.TEMPLATE @@ -6,3 +6,4 @@ event_log = no console => |CONSOLE| messages => |MESSAGES| syslog.|SYSLOG_FACILITY| => |SYSLOG| +debug => debug,error,warning diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client index b45f75f8c..5fd24dabc 100755 --- a/voice-client/files/etc/init.d/voice_client +++ b/voice-client/files/etc/init.d/voice_client @@ -6,6 +6,17 @@ # . /lib/functions.sh . /lib/functions/network.sh + +if [ -e /proc/nvram ]; then + . /lib/voice/broadcom.sh +elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then + . /lib/voice/intel.sh +else + echo 'Warning: Could not detect platform' + echo 'Defaulting to Broadcom' + . /lib/voice/broadcom.sh +fi + HOOKS=/usr/lib/inithooks/voice_client if [ -f "$HOOKS" ] ; then . $HOOKS @@ -15,8 +26,8 @@ START=60 USE_PROCD=1 # Some global variables -SERIAL=$(cat /proc/nvram/SerialNumber) -BASEMAC=$(cat /proc/nvram/BaseMacAddr | sed 's/ //g') +SERIAL=$(getSerial) +BASEMAC=$(getBaseMAC) MODULENAME=voice USERAGENT="Inteno_${SERIAL}_${BASEMAC}" @@ -30,8 +41,8 @@ ASTERISKDIR=/etc/asterisk WORKDIR=/tmp/$MODULENAME.$$ MD5SUMSFILE=/tmp/$MODULENAME-sums.$$ -# Whitespace separated list of BRCM feature access codes -BRCM_FAC= +# Whitespace separated list of $(getChannelName) feature access codes +CHANNEL_FAC= #TODO: go through templates, check usage @@ -80,8 +91,8 @@ TMPL_ACL=$TEMPLATEDIR/acl.conf.TEMPLATE TMPL_CONFBRIDGE=$TEMPLATEDIR/confbridge.conf.TEMPLATE TMPL_UDPTL=$TEMPLATEDIR/udptl.conf.TEMPLATE -TMPL_BRCM=$TEMPLATEDIR/brcm.conf.TEMPLATE -TMPL_BRCM_LINE=$TEMPLATEDIR/brcm_line.TEMPLATE +TMPL_CHANNEL=$TEMPLATEDIR/$(getLineName).conf.TEMPLATE +TMPL_CHANNEL_LINE=$TEMPLATEDIR/$(getLineName)_line.TEMPLATE TMPL_MEETME=$TEMPLATEDIR/meetme.conf.TEMPLATE @@ -180,7 +191,7 @@ assemble_and_copy_config() mv $WORKDIR/sip_registrations.tmp $WORKDIR/sip_registrations.conf mv $WORKDIR/sip_providers.tmp $WORKDIR/sip_providers.conf mv $WORKDIR/sip_users.tmp $WORKDIR/sip_users.conf - mv $WORKDIR/brcm.tmp $WORKDIR/brcm.conf + mv $WORKDIR/$(getLineName).tmp $WORKDIR/$(getLineName).conf mv $WORKDIR/extensions.tmp $WORKDIR/extensions.conf mv $WORKDIR/codecs.tmp $WORKDIR/codecs.conf mv $WORKDIR/rtp.tmp $WORKDIR/rtp.conf @@ -251,7 +262,7 @@ read_codecs_ptime() # in a Dial() command # # For backwards compatibility, if i is only a number (not prefixed by -# "SIP/" or "BRCM/") then add "BRCM/" +# "SIP/" or "CHANNEL/") then add "CHANNEL/" # read_lines() { @@ -335,7 +346,7 @@ read_lines() for i in $call_lines ; do case $i in ''|*[!0-9]*) lines=$lines"$i&" ;; - *) lines=$lines"BRCM/$i&" ;; + *) lines=$lines"$(getChannelName)/$i&" ;; esac done @@ -1030,9 +1041,9 @@ configure_queue() do local out="" re='^[0-9]+$' - num=${member#brcm} + num=${member#$(getLineName)} if [ -z "${num##[0-9]*}" ] ; then - out="BRCM/$num" + out="$(getChannelName)/$num" else local sip_user config_get sip_user $member user @@ -1159,7 +1170,7 @@ configure_cdr() configure_call_filters() { local country - config_get country BRCM country + config_get country $(getChannelName) country # Read the International Dialing Code and the Country Code from config echo "Looking up IDC and CC for country $country" @@ -1437,7 +1448,7 @@ configure_extensions() fi if [ -n "$extension_all_ports" ] ; then - local all_lines="BRCM/0&BRCM/1&BRCM/2&BRCM/3&BRCM/4&BRCM/5&BRCM/6" + local all_lines=$(getAllLines) echo "exten => $extension_all_ports,1,Dial($all_lines,,t)" >> $WORKDIR/extensions_local.tmp echo "exten => $extension_all_ports,n,Hangup()" >> $WORKDIR/extensions_local.tmp fi @@ -1465,7 +1476,7 @@ configure_extensions() sed -i "s/|CLIR_FAC_SET|//" $WORKDIR/extensions.tmp sed -i "s/|CLIR|/$clir/" $WORKDIR/extensions.tmp sed -i "s/|CLIR_FAC_LEN|/${#clir}/" $WORKDIR/extensions.tmp - BRCM_FAC="$BRCM_FAC $clir." + CHANNEL_FAC="$CHANNEL_FAC $clir." else sed -i "s/|CLIR_FAC_SET|/;/" $WORKDIR/extensions.tmp fi @@ -1724,9 +1735,9 @@ configure_extensions_provider() } # -# Create a local extension for a BRCM Line +# Create a local extension for a CHANNEL Line # -configure_brcm_line_extension() +configure_tel_line_extension() { local line local extension @@ -1736,8 +1747,9 @@ configure_brcm_line_extension() local cbbs_retrytime local cbbs_waittime local mailbox + local line_name=$(getLineName) - line=${1:4} + line=${1:${#line_name}} config_get extension $1 extension if [ -z "$line" ] ; then @@ -1762,7 +1774,7 @@ configure_brcm_line_extension() cp $TMPL_EXTENSIONS_LOCAL_LINE $WORKDIR/extensions_local_line.tmp sed -i "s/|EXTEN|/$extension/g" $WORKDIR/extensions_local_line.tmp - sed -i "s/|LINE|/$line/g" $WORKDIR/extensions_local_line.tmp + sed -i "s/|LINE|/$(getLineIdx $line)/g" $WORKDIR/extensions_local_line.tmp sed -i "s/|TIMEOUT|/$(get_voicemail_timeout)/g" $WORKDIR/extensions_local_line.tmp #cbbs settings @@ -1835,16 +1847,16 @@ configure_codecs() { echo "Configuring codecs" local genericplc - config_get genericplc BRCM genericplc + config_get genericplc $(getChannelName) genericplc sed -i "s/|PLC|/$genericplc/" $WORKDIR/codecs.tmp } # -# Configure default settings for brcm.conf +# Configure default settings for $(getLineName).conf # -configure_brcm() +configure_tel() { - echo "Configuring BRCM" + echo "Configuring $(getChannelName)" local jbenable local jbforce local jbmaxsize @@ -1853,43 +1865,44 @@ configure_brcm() local dialoutmsec local fac - config_get jbenable BRCM jbenable - config_get jbforce BRCM jbforce - config_get jbmaxsize BRCM jbmaxsize - config_get jbimpl BRCM jbimpl + config_get jbenable $(getChannelName) jbenable + config_get jbforce $(getChannelName) jbforce + config_get jbmaxsize $(getChannelName) jbmaxsize + config_get jbimpl $(getChannelName) jbimpl config_get dtmfmode SIP dtmfmode - config_get dialoutmsec BRCM dialoutmsec - config_get fac BRCM fac + config_get dialoutmsec $(getChannelName) dialoutmsec + config_get fac $(getChannelName) fac - BRCM_FAC="$BRCM_FAC $fac" + CHANNEL_FAC="$CHANNEL_FAC $fac" # Convert whitespace to commas - BRCM_FAC=$(echo $BRCM_FAC | sed -e 's/^ *//' -e 's/ *$//' | tr -s ' ' | tr ' ' ',') + CHANNEL_FAC=$(echo $CHANNEL_FAC | sed -e 's/^ *//' -e 's/ *$//' | tr -s ' ' | tr ' ' ',') if [ -z "$dialoutmsec" ] ; then dialoutmsec=4000 fi - sed -i "s/|JBENABLE|/$jbenable/" $WORKDIR/brcm.tmp - sed -i "s/|JBFORCE|/$jbforce/" $WORKDIR/brcm.tmp - sed -i "s/|JBMAXSIZE|/$jbmaxsize/" $WORKDIR/brcm.tmp - sed -i "s/|JBIMPL|/$jbimpl/" $WORKDIR/brcm.tmp - sed -i "s/|DIALOUTMSEC|/$dialoutmsec/" $WORKDIR/brcm.tmp - sed -i "s/|FAC|/$BRCM_FAC/" $WORKDIR/brcm.tmp + sed -i "s/|JBENABLE|/$jbenable/" $WORKDIR/$(getLineName).tmp + sed -i "s/|JBFORCE|/$jbforce/" $WORKDIR/$(getLineName).tmp + sed -i "s/|JBMAXSIZE|/$jbmaxsize/" $WORKDIR/$(getLineName).tmp + sed -i "s/|JBIMPL|/$jbimpl/" $WORKDIR/$(getLineName).tmp + sed -i "s/|DIALOUTMSEC|/$dialoutmsec/" $WORKDIR/$(getLineName).tmp + sed -i "s/|FAC|/$CHANNEL_FAC/" $WORKDIR/$(getLineName).tmp + sed -i "s/|CHANNELS|/$(db get hw.board.VoicePorts)/" $WORKDIR/$(getLineName).tmp if [ "$dtmfmode" == "compatibility" ] ; then dtmfcompatibility="1" else dtmfcompatibility="0" fi - sed -i "s/|DTMFCOMPATIBILITY|/$dtmfcompatibility/" $WORKDIR/brcm.tmp + sed -i "s/|DTMFCOMPATIBILITY|/$dtmfcompatibility/" $WORKDIR/$(getLineName).tmp } # -# Configure settings for individual line in brcm.conf +# Configure settings for individual line in $(getLineName).conf # -configure_brcm_line() +configure_tel_line() { - echo "Configuring BRCM line $1" + echo "Configuring $(getChannelName) line $1" local extension local sip_provider local codecs @@ -1935,30 +1948,30 @@ configure_brcm_line() clir=0 fi - cp $TMPL_BRCM_LINE $WORKDIR/brcm_line.tmp - sed -i "s/|SECTION|/$1/" $WORKDIR/brcm_line.tmp - sed -i "s/|CALLERID|/$extension/g" $WORKDIR/brcm_line.tmp - sed -i "s/|CONTEXT|/$sip_provider/g" $WORKDIR/brcm_line.tmp - sed -i "s/|DIALTONE_EXTENSION_HINT|/$1/" $WORKDIR/brcm_line.tmp - sed -i "s/|AUTODIAL|/$autodial/" $WORKDIR/brcm_line.tmp - sed -i "s/|AUTODIAL_TIMEOUT|/$autodial_timeout/" $WORKDIR/brcm_line.tmp - sed -i "s/|DIALTONE_TIMEOUT|/$dialtone_timeout/" $WORKDIR/brcm_line.tmp - sed -i "s/|DTMFRELAY|/$dtmfmode/" $WORKDIR/brcm_line.tmp - sed -i "s/|CALLWAITING|/$callwaiting/" $WORKDIR/brcm_line.tmp - sed -i "s/|CLIR|/$clir/" $WORKDIR/brcm_line.tmp + cp $TMPL_CHANNEL_LINE $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|SECTION|/$1/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|CALLERID|/$extension/g" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|CONTEXT|/$sip_provider/g" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|DIALTONE_EXTENSION_HINT|/$1/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|AUTODIAL|/$autodial/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|AUTODIAL_TIMEOUT|/$autodial_timeout/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|DIALTONE_TIMEOUT|/$dialtone_timeout/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|DTMFRELAY|/$dtmfmode/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|CALLWAITING|/$callwaiting/" $WORKDIR/$(getLineName)_line.tmp + sed -i "s/|CLIR|/$clir/" $WORKDIR/$(getLineName)_line.tmp - #Configure BRCM line with codecs according to the SIP line settings + #Configure CHANNEL line with codecs according to the SIP line settings # local is_fax # config_get is_fax $sip_provider is_fax # if [ -z "$is_fax" -o "$is_fax" = "1" ] ; then -# sed -i "s/|ALLOW|/allow = ulaw\nallow = alaw/" $WORKDIR/brcm_line.tmp +# sed -i "s/|ALLOW|/allow = ulaw\nallow = alaw/" $WORKDIR/$(getLineName)_line.tmp # else -# sed -i "s/|ALLOW|/$(read_codecs $sip_provider)/" $WORKDIR/brcm_line.tmp +# sed -i "s/|ALLOW|/$(read_codecs $sip_provider)/" $WORKDIR/$(getLineName)_line.tmp # fi - cat $WORKDIR/brcm_line.tmp >> $WORKDIR/brcm.tmp - rm -f $WORKDIR/brcm_line.tmp + cat $WORKDIR/$(getLineName)_line.tmp >> $WORKDIR/$(getLineName).tmp + rm -f $WORKDIR/$(getLineName)_line.tmp } # @@ -2057,14 +2070,16 @@ pbx_fix_ownership() } # -# Calculate a name for each brcm line, depending on port type +# Calculate a name for each $(getLineName) line, depending on port type # and number. The name is used to make UI look better. # set_line_name() { local maxlinenum=$2 local curname name_ix ix item lnum - local brcm_line=$1 + local line_name=$(getLineName) + + line=${1:${#line_name}} # delete non-existing lines from config # case $brcm_line in @@ -2150,11 +2165,11 @@ start_service() { config_load voice_client ######################################################## - # Set line names according to whats reported by brcminfo + # Set line names according to board parameters # and delete non-existing lines from voice_client config ######################################################## local maxlinenum=$(db get hw.board.VoicePorts) - config_foreach set_line_name brcm_line $maxlinenum + config_foreach set_line_name $(getLineName)_line $maxlinenum uci_commit voice_client ####################################### @@ -2167,7 +2182,7 @@ start_service() { cp $TMPL_SIP $WORKDIR/sip.tmp cp $TMPL_RTP $WORKDIR/rtp.tmp cp $TMPL_STUN $WORKDIR/res_stun_monitor.tmp - cp $TMPL_BRCM $WORKDIR/brcm.tmp + cp $TMPL_CHANNEL $WORKDIR/$(getLineName).tmp cp $TMPL_CODECS $WORKDIR/codecs.tmp cp $TMPL_VOICEMAIL $WORKDIR/voicemail.tmp cp $TMPL_DNSMGR $WORKDIR/dnsmgr.tmp @@ -2211,12 +2226,12 @@ start_service() { config_foreach configure_sip_user_extension sip_user ##################### - # BRCM configuration + # CHANNEL configuration ##################### - configure_brcm - config_foreach configure_brcm_line brcm_line - config_foreach configure_brcm_line_extension brcm_line - config_foreach create_extensions_dialtone brcm_line + configure_tel + config_foreach configure_tel_line $(getLineName)_line + config_foreach configure_tel_line_extension $(getLineName)_line + config_foreach create_extensions_dialtone $(getLineName)_line configure_codecs ########################### @@ -2291,7 +2306,7 @@ reload_service() { sleep 1 asterisk -rx "core reload" asterisk -rx "dialplan reload" - asterisk -rx "brcm reload" + asterisk -rx "$(getLineName) reload" } service_triggers() { diff --git a/voice-client/files/etc/uci-defaults/99-voice_client b/voice-client/files/etc/uci-defaults/99-voice_client index 2022f53bf..b8275b111 100755 --- a/voice-client/files/etc/uci-defaults/99-voice_client +++ b/voice-client/files/etc/uci-defaults/99-voice_client @@ -1,5 +1,15 @@ #!/bin/sh +if [ -e /proc/nvram ]; then + . /lib/voice/broadcom.sh +elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then + . /lib/voice/intel.sh +else + echo 'Warning: Could not detect platform' + echo 'Defaulting to Broadcom' + . /lib/voice/broadcom.sh +fi + uci -q get voice_client.call_filter0 >/dev/null || { uci -q batch <<-EOT @@ -27,24 +37,24 @@ EOT } -# Default Broadcom phone volume for Iopsys 4. +# Default phone volume for Iopsys 4. uci -q batch <<-EOT - set voice_client.brcm0.txgain=4 - set voice_client.brcm0.rxgain=4 - set voice_client.brcm1.txgain=4 - set voice_client.brcm1.rxgain=4 - set voice_client.brcm2.txgain=4 - set voice_client.brcm2.rxgain=4 - set voice_client.brcm3.txgain=4 - set voice_client.brcm3.rxgain=4 - set voice_client.brcm4.txgain=4 - set voice_client.brcm4.rxgain=4 - set voice_client.brcm5.txgain=4 - set voice_client.brcm5.rxgain=4 - set voice_client.brcm6.txgain=4 - set voice_client.brcm6.rxgain=4 - set voice_client.brcm7.txgain=4 - set voice_client.brcm7.rxgain=4 + set voice_client.$(getLineName)0.txgain=4 + set voice_client.$(getLineName)0.rxgain=4 + set voice_client.$(getLineName)1.txgain=4 + set voice_client.$(getLineName)1.rxgain=4 + set voice_client.$(getLineName)2.txgain=4 + set voice_client.$(getLineName)2.rxgain=4 + set voice_client.$(getLineName)3.txgain=4 + set voice_client.$(getLineName)3.rxgain=4 + set voice_client.$(getLineName)4.txgain=4 + set voice_client.$(getLineName)4.rxgain=4 + set voice_client.$(getLineName)5.txgain=4 + set voice_client.$(getLineName)5.rxgain=4 + set voice_client.$(getLineName)6.txgain=4 + set voice_client.$(getLineName)6.rxgain=4 + set voice_client.$(getLineName)7.txgain=4 + set voice_client.$(getLineName)7.rxgain=4 commit voice_client EOT diff --git a/voice-client/files/lib/cw.sh b/voice-client/files/lib/cw.sh index 5e0b37dee..b61a669bc 100755 --- a/voice-client/files/lib/cw.sh +++ b/voice-client/files/lib/cw.sh @@ -1,12 +1,22 @@ #! /bin/sh +if [ -e /proc/nvram ]; then + . /lib/voice/broadcom.sh +elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then + . /lib/voice/intel.sh +else + echo 'Warning: Could not detect platform' + echo 'Defaulting to Broadcom' + . /lib/voice/broadcom.sh +fi + if [ $2 != '?' ]; then - for brcm in `uci show voice_client | grep brcm | grep $1 | cut -d . -f 2`; do - sed -i "/\[$brcm\]/,/^\[/ s/\(callwaiting=\)[0-9]/\1$2/" /etc/asterisk/brcm.conf + for tel_line in `uci show voice_client | grep $(getLineName) | grep $1 | cut -d . -f 2`; do + sed -i "/\[$tel_line\]/,/^\[/ s/\(callwaiting=\)[0-9]/\1$2/" /etc/asterisk/$(getLineName).conf done else - for brcm in `uci show voice_client | grep brcm | grep $1 | cut -d . -f 2`; do - status=`sed -n "/\[$brcm\]/,/^\[/ s/callwaiting=\([0-9]\)/\1/p" /etc/asterisk/brcm.conf` + for tel_line in `uci show voice_client | grep $(getLineName) | grep $1 | cut -d . -f 2`; do + status=`sed -n "/\[$tel_line\]/,/^\[/ s/callwaiting=\([0-9]\)/\1/p" /etc/asterisk/$(getLineName).conf` echo $status exit 0 done diff --git a/voice-client/files/lib/voice/broadcom.sh b/voice-client/files/lib/voice/broadcom.sh new file mode 100755 index 000000000..6ad0b94fa --- /dev/null +++ b/voice-client/files/lib/voice/broadcom.sh @@ -0,0 +1,29 @@ +#! /bin/sh + +getChipVendor() { + echo broadcom +} + +getChannelName() { + echo BRCM +} + +getLineName() { + echo brcm +} + +getSerial() { + echo $(cat /proc/nvram/SerialNumber) +} + +getBaseMAC() { + echo =$(cat /proc/nvram/BaseMacAddr | sed 's/ //g') +} + +getAllLines() { + echo "BRCM/0&BRCM/1&BRCM/2&BRCM/3&BRCM/4&BRCM/5&BRCM/6" +} + +getLineIdx() { + echo $1 +} diff --git a/voice-client/files/lib/voice/intel.sh b/voice-client/files/lib/voice/intel.sh new file mode 100755 index 000000000..b98605391 --- /dev/null +++ b/voice-client/files/lib/voice/intel.sh @@ -0,0 +1,41 @@ +#! /bin/sh + +getChipVendor() { + echo intel +} + +getChannelName() { + echo TAPI +} + +getLineName() { + echo intel +} + +getSerial() { + sernum=$(fw_printenv -n serial_number) + + if [ $? ]; then + echo 0 + else + echo $sernum + fi +} + +getBaseMAC() { + echo $(fw_printenv -n ethaddr) +} + +getAllLines() { + echo "TAPI/1&TAPI/2&TAPI/3&TAPI/4&TAPI/5&TAPI/6" +} + +getLineIdx() { + echo $((1+1)) +} + +sed -i \ + -e 's/brcm/lantiq/g' \ + -e 's/BRCM/TAPI/g' \ + -e 's/broadcom/lantiq/g' \ + /etc/config/voice_client diff --git a/voice-client/files/usr/lib/asterisk/cbbs.sh b/voice-client/files/usr/lib/asterisk/cbbs.sh index 2f1ff17b4..bb15720a5 100755 --- a/voice-client/files/usr/lib/asterisk/cbbs.sh +++ b/voice-client/files/usr/lib/asterisk/cbbs.sh @@ -23,6 +23,16 @@ # ./cbbs.sh BRCM 0 4444 BRCM/4 5 300 45 ##################################################### +if [ -e /proc/nvram ]; then + . /lib/voice/broadcom.sh +elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then + . /lib/voice/intel.sh +else + echo 'Warning: Could not detect platform' + echo 'Defaulting to Broadcom' + . /lib/voice/broadcom.sh +fi + #Create temporary file tempfile=$(mktemp) @@ -31,7 +41,7 @@ echo "Channel: $1/$2/$3" >> $tempfile echo "MaxRetries: $5" >> $tempfile echo "RetryTime: $6" >> $tempfile echo "WaitTime: $7" >> $tempfile -echo "Set: BRCMLINE=$4" >> $tempfile +echo "Set: $(getChannelName)LINE=$4" >> $tempfile #On answer echo "Context: cbbs" >> $tempfile diff --git a/voice-client/files/usr/libexec/rpcd/voice.asterisk b/voice-client/files/usr/libexec/rpcd/voice.asterisk index b8e26d842..3c6877e3b 100755 --- a/voice-client/files/usr/libexec/rpcd/voice.asterisk +++ b/voice-client/files/usr/libexec/rpcd/voice.asterisk @@ -2,6 +2,16 @@ . /usr/share/libubox/jshn.sh +if [ -e /proc/nvram ]; then + . /lib/voice/broadcom.sh +elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then + . /lib/voice/intel.sh +else + echo 'Warning: Could not detect platform' + echo 'Defaulting to Broadcom' + . /lib/voice/broadcom.sh +fi + case "$1" in list) echo '{ "status" : {}, "lines" : {}, "codecs" : {}, "call_log" : {} }' @@ -48,8 +58,8 @@ case "$1" in done json_select .. - json_add_object "brcm" - for line in $(uci show voice_client | grep brcm_line | awk -F[.,=] '{print$2}'); do + json_add_object "$(getLineName)" + for line in $(uci show voice_client | grep $(getLineName)_line | awk -F[.,=] '{print$2}'); do json_add_object "$line" linestate="ONHOOK" linenum=${line:4} @@ -66,7 +76,7 @@ case "$1" in ;; lines) - subchannels=$(asterisk -x 'brcm show status' 2>/dev/null | grep Subchannel | sort -u | wc -l) + subchannels=$(asterisk -x "$(getLineName) show status" 2>/dev/null | grep Subchannel | sort -u | wc -l) [ $subchannels -eq 0 ] && subchannels=2 json_init json_add_int num_subchannels $subchannels From 953c96f188e217e755c77d57f081b530d0e9dc62 Mon Sep 17 00:00:00 2001 From: Kent Ekholm Date: Tue, 19 Feb 2019 10:12:22 +0100 Subject: [PATCH 2/4] voice-client: Make voice-client scripts work for both Broadcom and Intel. Ref: #345 --- voice-client/Makefile | 30 +++++++++++++++++++++- voice-client/files/etc/init.d/voice_client | 14 ++-------- voice-client/files/lib/voice/broadcom.sh | 1 + voice-client/files/lib/voice/intel.sh | 11 +++----- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/voice-client/Makefile b/voice-client/Makefile index 869ffae4e..132806ae2 100644 --- a/voice-client/Makefile +++ b/voice-client/Makefile @@ -11,6 +11,19 @@ PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk +ifeq ($(CONFIG_TARGET_iopsys_brcm63xx_mips),y) +VOICE_LIB:=broadcom.sh +else ifeq ($(CONFIG_TARGET_iopsys_linksys),y) +VOICE_LIB:=broadcom.sh +else ifeq ($(CONFIG_TARGET_intel_mips),y) +VOICE_LIB:=intel.sh +else ifeq ($(CONFIG_TARGET_iopsys_ramips),y) +VOICE_LIB:=broadcom.sh +else +$(info (UNEXPECTED CONFIG TARGET)) +VOICE_LIB:=broadcom.sh +endif + define Package/voice-client SUBMENU:=Telephony SECTION:=net @@ -32,7 +45,22 @@ define Build/Compile endef define Package/voice-client/install - $(CP) ./files/* $(1)/ + $(CP) ./files/etc $(1)/ + $(CP) ./files/sbin $(1)/ + $(CP) ./files/usr $(1)/ + mkdir -p $(1)/lib/voice + $(CP) ./files/lib/cw.sh $(1)/lib/. + $(CP) ./files/lib/voice/$(VOICE_LIB) $(1)/lib/voice/voicelib.sh + +ifeq ($(CONFIG_TARGET_intel_mips),y) + sed -i -r 's/(.*)(brcm)(_line)(.*)(brcm)([0-9])(.*)/echo "\1tapi\3\4tapi$$$$((\6+1))\7"/ge' $(1)/etc/config/voice_client + sed -i \ + -e 's/brcm/tapi/g' \ + -e 's/BRCM/TAPI/g' \ + -e 's/broadcom/intel/g' \ + $(1)/etc/config/voice_client \ + $(1)/etc/asterisk_templates/* +endif endef $(eval $(call BuildPackage,voice-client)) diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client index 5fd24dabc..d5a6597a4 100755 --- a/voice-client/files/etc/init.d/voice_client +++ b/voice-client/files/etc/init.d/voice_client @@ -6,16 +6,7 @@ # . /lib/functions.sh . /lib/functions/network.sh - -if [ -e /proc/nvram ]; then - . /lib/voice/broadcom.sh -elif [ -n $(which fw_printenv) ] && [ $(fw_printenv -n uboot_version | sed 's/..*\(INTEL\)..*/\1/') = 'INTEL' ]; then - . /lib/voice/intel.sh -else - echo 'Warning: Could not detect platform' - echo 'Defaulting to Broadcom' - . /lib/voice/broadcom.sh -fi +. /lib/voice/voicelib.sh HOOKS=/usr/lib/inithooks/voice_client if [ -f "$HOOKS" ] ; then @@ -1462,7 +1453,6 @@ configure_extensions() echo "exten => $test_echo_extension,1,Echo()" >> $WORKDIR/extensions_local.tmp echo "exten => $test_echo_extension,n,Hangup()" >> $WORKDIR/extensions_local.tmp fi - if [ -n "$record_message_extension" ] ; then echo "exten => $record_message_extension,1,Playback(beep)" >> $WORKDIR/extensions_local.tmp @@ -1774,7 +1764,7 @@ configure_tel_line_extension() cp $TMPL_EXTENSIONS_LOCAL_LINE $WORKDIR/extensions_local_line.tmp sed -i "s/|EXTEN|/$extension/g" $WORKDIR/extensions_local_line.tmp - sed -i "s/|LINE|/$(getLineIdx $line)/g" $WORKDIR/extensions_local_line.tmp + sed -i "s/|LINE|/$line)/g" $WORKDIR/extensions_local_line.tmp sed -i "s/|TIMEOUT|/$(get_voicemail_timeout)/g" $WORKDIR/extensions_local_line.tmp #cbbs settings diff --git a/voice-client/files/lib/voice/broadcom.sh b/voice-client/files/lib/voice/broadcom.sh index 6ad0b94fa..41e6a612f 100755 --- a/voice-client/files/lib/voice/broadcom.sh +++ b/voice-client/files/lib/voice/broadcom.sh @@ -1,4 +1,5 @@ #! /bin/sh +# Voice library for Broadcom boards getChipVendor() { echo broadcom diff --git a/voice-client/files/lib/voice/intel.sh b/voice-client/files/lib/voice/intel.sh index b98605391..494f8e07f 100755 --- a/voice-client/files/lib/voice/intel.sh +++ b/voice-client/files/lib/voice/intel.sh @@ -1,4 +1,5 @@ #! /bin/sh +# Voice library for Intel boards getChipVendor() { echo intel @@ -9,11 +10,11 @@ getChannelName() { } getLineName() { - echo intel + echo tapi } getSerial() { - sernum=$(fw_printenv -n serial_number) + sernum=$(fw_printenv -n serial_number) 2> /dev/null if [ $? ]; then echo 0 @@ -33,9 +34,3 @@ getAllLines() { getLineIdx() { echo $((1+1)) } - -sed -i \ - -e 's/brcm/lantiq/g' \ - -e 's/BRCM/TAPI/g' \ - -e 's/broadcom/lantiq/g' \ - /etc/config/voice_client From fd1add50efff3970d258dc5bdc861fbc36b492ee Mon Sep 17 00:00:00 2001 From: Kent Ekholm Date: Wed, 20 Feb 2019 14:48:02 +0100 Subject: [PATCH 3/4] Changing TAPI channel index. Ref: #345 --- voice-client/Makefile | 1 - voice-client/files/etc/init.d/voice_client | 2 +- voice-client/files/lib/voice/intel.sh | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/voice-client/Makefile b/voice-client/Makefile index 132806ae2..175e4ce02 100644 --- a/voice-client/Makefile +++ b/voice-client/Makefile @@ -53,7 +53,6 @@ define Package/voice-client/install $(CP) ./files/lib/voice/$(VOICE_LIB) $(1)/lib/voice/voicelib.sh ifeq ($(CONFIG_TARGET_intel_mips),y) - sed -i -r 's/(.*)(brcm)(_line)(.*)(brcm)([0-9])(.*)/echo "\1tapi\3\4tapi$$$$((\6+1))\7"/ge' $(1)/etc/config/voice_client sed -i \ -e 's/brcm/tapi/g' \ -e 's/BRCM/TAPI/g' \ diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client index d5a6597a4..852ccaade 100755 --- a/voice-client/files/etc/init.d/voice_client +++ b/voice-client/files/etc/init.d/voice_client @@ -1764,7 +1764,7 @@ configure_tel_line_extension() cp $TMPL_EXTENSIONS_LOCAL_LINE $WORKDIR/extensions_local_line.tmp sed -i "s/|EXTEN|/$extension/g" $WORKDIR/extensions_local_line.tmp - sed -i "s/|LINE|/$line)/g" $WORKDIR/extensions_local_line.tmp + sed -i "s/|LINE|/$(getLineIdx $line)/g" $WORKDIR/extensions_local_line.tmp sed -i "s/|TIMEOUT|/$(get_voicemail_timeout)/g" $WORKDIR/extensions_local_line.tmp #cbbs settings diff --git a/voice-client/files/lib/voice/intel.sh b/voice-client/files/lib/voice/intel.sh index 494f8e07f..27ee47a21 100755 --- a/voice-client/files/lib/voice/intel.sh +++ b/voice-client/files/lib/voice/intel.sh @@ -32,5 +32,6 @@ getAllLines() { } getLineIdx() { - echo $((1+1)) + i=$1 + echo $((i+1)) } From 63ca2e0541ea2b06a4dba3063ae7be72faf27488 Mon Sep 17 00:00:00 2001 From: Kent Ekholm Date: Thu, 21 Feb 2019 12:21:35 +0100 Subject: [PATCH 4/4] Fixes for telephone line naming. Ref: 345 --- voice-client/files/etc/init.d/voice_client | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client index 852ccaade..858eb9f11 100755 --- a/voice-client/files/etc/init.d/voice_client +++ b/voice-client/files/etc/init.d/voice_client @@ -2068,25 +2068,27 @@ set_line_name() local maxlinenum=$2 local curname name_ix ix item lnum local line_name=$(getLineName) + local line_name_len=${#line_name} + local tel_line=$1 - line=${1:${#line_name}} + line=${tel_line:${line_name_len}} # delete non-existing lines from config # - case $brcm_line in - brcm[0-9]) - lnum=${1:4:1} - [ $((lnum+1)) -gt $maxlinenum ] && uci -q delete voice_client.$1 + case $tel_line in + ${line_name}[0-9]) + lnum=${tel_line:${line_name_len}:1} + [ $((lnum+1)) -gt $maxlinenum ] && uci -q delete voice_client.$tel_line ;; esac ######################################### - config_get curname $brcm_line name + config_get curname $tel_line name [ -n "$curname" ] && return name_ix="" ix=0 for item in $(db get hw.board.VoicePortOrder); do - if [ "$item" == "$brcm_line" ]; then + if [ "$item" == "$tel_line" ]; then name_ix=$ix break fi @@ -2097,7 +2099,7 @@ set_line_name() if [ -n "$name_ix" ]; then for item in $(db get hw.board.VoicePortNames); do if [ $ix -eq $name_ix ]; then - uci_set voice_client $brcm_line name \ + uci_set voice_client $tel_line name \ "$(echo "$item" |tr "[_]" "[ ]")" return fi @@ -2105,7 +2107,7 @@ set_line_name() done fi - uci_set voice_client $brcm_line name $brcm_line + uci_set voice_client $tel_line name $tel_line } #