#!/bin/bash die() { echo "ERROR: $@;" exit 1; } check_prereqs() { type -P @@BINDIR@@/nuainitool > /dev/null || die "missing nuainitool" if [ -e ${ICAROOT}/config/module.ini ] then MODULEINI="${ICAROOT}/config/module.ini" elif [ -e /usr/lib/ICAClient/config/module.ini ] then MODULEINI="/usr/lib/ICAClient/config/module.ini" else die "module.ini not found from citrix client." fi } value_set() { local value="$1" local i local count="${#DRIVERS[*]}" for ((i=0; i < count; i++)) do if [[ ${DRIVERS[${i}]} = ${value} ]] then return 0 fi done return 1 } install_modules() { local virtualdrivers local expanddrivers # parse and expand philips and nuance drivers to an array virtualdrivers=$(@@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver") eval DRIVERS=( ${virtualdrivers//,} ) for i in SbExt PspMix PSPDPM SpeechMikeAudio SpeechMikeMixer SpeechMike do # only add missing drivers value_set ${i} || expanddrivers+=", ${i}" done @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${virtualdrivers}${expanddrivers}" # enable extensions @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "SbExt=On" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "PspMix=On" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "PSPDPM=On" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "SpeechMike=On" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "SpeechMikeAudio=On" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "SpeechMikeMixer=On" # sbext driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SbExt" "DriverName=SMCAUDIO.DLL" # PspMix driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PspMix" "DriverName=SMCMIXER.DLL" # SpeechMike driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "DriverName=VDPSPCTR.DLL" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "LIB_DIR=@@SPEECHMIKELIBDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "LIB_NAME=libCtxSpMike.so" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "HIDDEV_DIR=@@HIDDEVDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "JOYDEV_DIR=@@JOYDEVDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "FCBUTTON1=12" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "FCBUTTON2=4" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "FCBUTTON3=14" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMike" "FCBUTTON4=10" # SpeechMikeAudio driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeAudio" "DriverName=VDPSPAUD.DLL" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeAudio" "LIB_DIR=@@SPEECHMIKELIBDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeAudio" "LIB_NAME=libCtxSbExtAlsa.so" # SpeechMikeMixer driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "DriverName=VDPSPMIX.DLL" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "LIB_DIR=@@SPEECHMIKELIBDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "SpeechMikeMixer" "LIB_NAME=libCtxMixerAlsa.so" #PSPDPM driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "DriverName=VDPSPDPM.DLL" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "LIB_DIR=@@SPEECHMIKELIBDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "LIB_NAME=libCtxHidMan.so" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" "DPM_DIR=@@DPMTEMPDIR@@" @@BINDIR@@/nuainitool -f ${MODULEINI} -s "PSPDPM" 'DPM_DRIVE=@@DPMDRIVELETTER@@' } remove_modules() { local virtualdrivers local driver local finaldrivers local i local count # parse modules and remove from array virtualdrivers=$(@@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver") eval DRIVERS=( ${virtualdrivers//,} ) # delete from array count="${#DRIVERS[*]}" for (( i=0; i < count; i++)) do for driver in SbExt PspMix PSPDPM SpeechMikeAudio SpeechMikeMixer SpeechMike do if [[ ${driver} = ${DRIVERS[${i}]} ]] then # reset DRIVERS[${i}]="" # no unneccessary parsing required anymore continue fi done done # rebuild final driver list for i in ${DRIVERS[*]} do if [[ -z ${finaldrivers} ]] then finaldrivers="${i}" else finaldrivers+=", ${i}" fi done @@BINDIR@@/nuainitool -f ${MODULEINI} -s "ICA 3.0" "VirtualDriver=${finaldrivers}" # remove modules @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "SbExt" @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "PspMix" @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "PSPDPM" @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "SpeechMike" @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "SpeechMikeAudio" @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "ICA 3.0" "SpeechMikeMixer" # sbext driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "SbExt" # PspMix driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "PspMix" # SpeechMike driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "SpeechMike" # SpeechMikeAudio driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "SpeechMikeAudio" # SpeechMikeMixer driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "SpeechMikeMixer" #PSPDPM driver settings @@BINDIR@@/nuainitool -f ${MODULEINI} -D -s "PSPDPM" } case $1 in install) check_prereqs install_modules ;; remove) check_prereqs remove_modules ;; *) echo "Usage: $(basename $0) [action]" echo echo "Available actions are:" echo " install - installs speechmike modules in modules.ini" echo " remove - removes speechmike modules in modules.ini" echo ;; esac exit 0