mirror of
https://github.com/lwvmobile/dsd-fme.git
synced 2026-11-09 15:27:22 -05:00
Update Cygwin Scripts for:
Make a portable cygwin release as a user option in the shell script; Add the bat files from the precompiled releases to the examples folder; Add rebuild_cygwin.bat so cygwin users can easily update their versions; Standalone cygwin_portable.sh version creator;
This commit is contained in:
240
cyg_portable.sh
Normal file
240
cyg_portable.sh
Normal file
@@ -0,0 +1,240 @@
|
||||
#! /bin/bash
|
||||
#
|
||||
cdir=$(pwd)
|
||||
clear
|
||||
printf "DSD-FME Digital Speech Decoder - Florida Man Edition Portable Cygwin Creator\n"
|
||||
printf "Only use this in a Cygwin64 Environment. Will not work in a Linux Environment!\n"
|
||||
read -p "Do you want to make a portable copy? y/N " RELEASE
|
||||
RELEASE=$(printf "$RELEASE"|tr '[:upper:]' '[:lower:]')
|
||||
if [ "$RELEASE" = "y" ]; then
|
||||
|
||||
printf "Copying files to dsd-fme-portable folder and making zip file. Please wait!\n"
|
||||
cd $cdir
|
||||
|
||||
#create a dsd-fme-portable folder and copy all the needed items for a portable release version
|
||||
mkdir dsd-fme-portable
|
||||
cd dsd-fme-portable
|
||||
#all of these folders may not be necessary
|
||||
mkdir sourcecode
|
||||
mkdir bin
|
||||
mkdir dev
|
||||
cd dev
|
||||
mkdir shm
|
||||
cd ..
|
||||
mkdir dsd-fme
|
||||
mkdir etc
|
||||
mkdir home
|
||||
mkdir lib
|
||||
mkdir tmp
|
||||
mkdir usr
|
||||
cd usr
|
||||
mkdir share
|
||||
cd share
|
||||
mkdir terminfo
|
||||
cd $cdir
|
||||
|
||||
#start copying things
|
||||
|
||||
#terminfo is needed for ncurses
|
||||
cp -r /usr/share/terminfo/* dsd-fme-portable/usr/share/terminfo
|
||||
|
||||
#copy required items from the root bin folder to release bin folder
|
||||
cp /bin/ls.exe dsd-fme-portable/bin/
|
||||
cp /bin/bash.exe dsd-fme-portable/bin/
|
||||
cp /bin/ncurses6-config dsd-fme-portable/bin/
|
||||
cp /bin/ncursesw6-config dsd-fme-portable/bin/
|
||||
cp /bin/pacat.exe dsd-fme-portable/bin/
|
||||
cp /bin/pactl.exe dsd-fme-portable/bin/
|
||||
cp /bin/padsp dsd-fme-portable/bin/
|
||||
cp /bin/pamon dsd-fme-portable/bin/
|
||||
cp /bin/paplay dsd-fme-portable/bin/
|
||||
cp /bin/parec dsd-fme-portable/bin/
|
||||
cp /bin/parecord dsd-fme-portable/bin/
|
||||
cp /bin/pulseaudio.exe dsd-fme-portable/bin/
|
||||
cp /bin/tty.exe dsd-fme-portable/bin/
|
||||
|
||||
#start copying things from the etc folder
|
||||
cp -r /etc/pulse/ dsd-fme-portable/etc/
|
||||
|
||||
#start copying things to the lib folder
|
||||
cp -r /lib/pulseaudio/ dsd-fme-portable/lib/
|
||||
|
||||
#start copying things into the dsd-fme folder
|
||||
cp dsd-fme/build/dsd-fme.exe dsd-fme-portable/dsd-fme/
|
||||
cp -r dsd-fme/examples dsd-fme-portable/dsd-fme/
|
||||
cp .bash_profile dsd-fme-portable/dsd-fme/
|
||||
cp .bashrc dsd-fme-portable/dsd-fme/
|
||||
cp .inputrc dsd-fme-portable/dsd-fme/
|
||||
cp .profile dsd-fme-portable/dsd-fme/
|
||||
|
||||
#move (cut) the bat files to the portable folder root and delete the other ones so users won't get confused
|
||||
mv dsd-fme-portable/dsd-fme/examples/cygwin_bat/*.bat dsd-fme-portable/
|
||||
rm -rf dsd-fme-portable/dsd-fme/examples/cygwin_bat
|
||||
|
||||
#copy the license, copyright, source code, and things that should be included in all portable releases
|
||||
cp dsd-fme/COPYRIGHT dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/DSD_Author.pgp dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme-qgis-map.qgz dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/README.md dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme2.png dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme3.png dsd-fme-portable/sourcecode/
|
||||
|
||||
cp dsd-fme/CMakeLists.txt dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/src dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/include dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/cmake dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/patch dsd-fme-portable/sourcecode/
|
||||
|
||||
#compiled items into release dsd-fme folder
|
||||
cp codec2/build/src/cygcodec2* dsd-fme-portable/dsd-fme/
|
||||
cp itpp-4.3.1/build/itpp/cygitpp* dsd-fme-portable/dsd-fme/
|
||||
cp rtl-sdr/build/src/cyg* dsd-fme-portable/dsd-fme/
|
||||
cp mbelib/build/cygmbe* dsd-fme-portable/dsd-fme/
|
||||
|
||||
#bin items into release dsd-fme folder (uisng * where version numbering may exist, those may be upgraded if hard coded)
|
||||
cp /bin/bash.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cut.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygao* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygarchive* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygargp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygassuan* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygasyncns* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygatomic* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygattr* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-client* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-common* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-wrap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygblkid* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbrotlicommon* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbrotlidec* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbz2* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcares* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcheck.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcli.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcom_err* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcrypt* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcrypto* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcurl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb_cxx* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb_sql* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdbus* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygedit* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygexpat* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfam* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfdisk* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygffi* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3f_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3f* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3l_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3l* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfido2* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygFLAC* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygformw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggdbm_compat* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggdbm*.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggio* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygglib* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggmodule* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggmp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggnutls* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggobject* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggomp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggpg-error* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggpgme* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggsasl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggsm* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggssapi_krb5* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggthread* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygguile* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyghistory* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyghogweed* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygICE* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygiconv* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygid3tag* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygidn* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygintl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygisl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygjsoncpp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygk5crypto* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygkrb5* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyglber* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygldap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygltdl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyglz* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygma* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmenuw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmeta* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygncurses* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygnettle* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygnghttp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygntlm* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygobjc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygogg* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygopus* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygorc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygp11* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpanel* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpath.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpcre* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygperl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpipe* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpkg* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpng* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpopt* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygprotocol* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpsl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpulse* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygquadmath* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygreadline* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygrhash* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygrunsrv.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsamplerate* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsasl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygserver* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygSM* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsmart* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsndfile* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsox* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygspeex* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsqlite* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygssh* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygssl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygstart.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygstdc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtasn* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtdb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygticw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtwo* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygunistring* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygusb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyguuid* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyguv* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygvorbis* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwavpack* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwin1.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwrap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygX* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygx* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygz* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/grep.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/ls.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/mintty.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pacat.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pacmd.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pactl.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/padsp dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pamon dsd-fme-portable/dsd-fme/
|
||||
cp /bin/paplay dsd-fme-portable/dsd-fme/
|
||||
cp /bin/parec dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pulseaudio.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/tail.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/tty.exe dsd-fme-portable/dsd-fme/
|
||||
|
||||
zip -r dsd-fme-x86-64-cygwin-portable.zip dsd-fme-portable
|
||||
|
||||
fi
|
||||
14
cyg_rebuild.sh
Normal file
14
cyg_rebuild.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#! /bin/bash
|
||||
#
|
||||
clear
|
||||
printf "DSD-FME Digital Speech Decoder - Florida Man Edition
|
||||
Automatic Git Pull and Rebuild for Cygwin\n\n"
|
||||
sleep 1
|
||||
##Open your clone folder##
|
||||
git pull
|
||||
sleep 2
|
||||
##cd into your build folder##
|
||||
cd build
|
||||
cmake ..
|
||||
make -j $(nproc)
|
||||
make install
|
||||
@@ -71,12 +71,247 @@ if [ "$ANSWER" = "y" ]; then
|
||||
printf "Installing DSD-FME\n Please wait!\n"
|
||||
git clone https://github.com/lwvmobile/dsd-fme.git
|
||||
cd dsd-fme
|
||||
#git checkout cygwin_fixes
|
||||
#git checkout aw_dev
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j $(nproc)
|
||||
make install
|
||||
cd $cdir
|
||||
|
||||
#ask user if they want to make a portable release copy
|
||||
read -p "Do you want to make a portable copy? y/N " RELEASE
|
||||
RELEASE=$(printf "$RELEASE"|tr '[:upper:]' '[:lower:]')
|
||||
if [ "$RELEASE" = "y" ]; then
|
||||
|
||||
printf "Copying files to dsd-fme-portable folder and making zip file. Please wait!\n"
|
||||
|
||||
#create a dsd-fme-portable folder and copy all the needed items for a portable release version
|
||||
mkdir dsd-fme-portable
|
||||
cd dsd-fme-portable
|
||||
mkdir sourcecode
|
||||
mkdir bin
|
||||
mkdir dev
|
||||
cd dev
|
||||
mkdir shm
|
||||
cd ..
|
||||
mkdir dsd-fme
|
||||
mkdir etc
|
||||
mkdir home
|
||||
mkdir lib
|
||||
mkdir tmp
|
||||
mkdir usr
|
||||
cd usr
|
||||
mkdir share
|
||||
cd share
|
||||
mkdir terminfo
|
||||
cd $cdir
|
||||
|
||||
#start copying things
|
||||
|
||||
#terminfo is needed for ncurses
|
||||
cp -r /usr/share/terminfo/* dsd-fme-portable/usr/share/terminfo
|
||||
|
||||
#copy required items from the root bin folder to release bin folder
|
||||
cp /bin/ls.exe dsd-fme-portable/bin/
|
||||
cp /bin/bash.exe dsd-fme-portable/bin/
|
||||
cp /bin/ncurses6-config dsd-fme-portable/bin/
|
||||
cp /bin/ncursesw6-config dsd-fme-portable/bin/
|
||||
cp /bin/pacat.exe dsd-fme-portable/bin/
|
||||
cp /bin/pactl.exe dsd-fme-portable/bin/
|
||||
cp /bin/padsp dsd-fme-portable/bin/
|
||||
cp /bin/pamon dsd-fme-portable/bin/
|
||||
cp /bin/paplay dsd-fme-portable/bin/
|
||||
cp /bin/parec dsd-fme-portable/bin/
|
||||
cp /bin/parecord dsd-fme-portable/bin/
|
||||
cp /bin/pulseaudio.exe dsd-fme-portable/bin/
|
||||
cp /bin/tty.exe dsd-fme-portable/bin/
|
||||
|
||||
#start copying things from the etc folder
|
||||
cp -r /etc/pulse/ dsd-fme-portable/etc/
|
||||
|
||||
#start copying things to the lib folder
|
||||
cp -r /lib/pulseaudio/ dsd-fme-portable/lib/
|
||||
|
||||
#start copying things into the dsd-fme folder
|
||||
cp dsd-fme/build/dsd-fme.exe dsd-fme-portable/dsd-fme/
|
||||
cp -r dsd-fme/examples dsd-fme-portable/dsd-fme/
|
||||
cp .bash_profile dsd-fme-portable/dsd-fme/
|
||||
cp .bashrc dsd-fme-portable/dsd-fme/
|
||||
cp .inputrc dsd-fme-portable/dsd-fme/
|
||||
cp .profile dsd-fme-portable/dsd-fme/
|
||||
|
||||
#move (cut) the bat files to the portable folder root and delete the other ones so users won't get confused
|
||||
mv dsd-fme-portable/dsd-fme/examples/cygwin_bat/*.bat dsd-fme-portable/
|
||||
rm -rf dsd-fme-portable/dsd-fme/examples/cygwin_bat
|
||||
|
||||
#copy the license, copyright, source code, and things that should be included in all portable releases
|
||||
cp dsd-fme/COPYRIGHT dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/DSD_Author.pgp dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme-qgis-map.qgz dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/README.md dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme2.png dsd-fme-portable/sourcecode/
|
||||
cp dsd-fme/dsd-fme3.png dsd-fme-portable/sourcecode/
|
||||
|
||||
cp dsd-fme/CMakeLists.txt dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/src dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/include dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/cmake dsd-fme-portable/sourcecode/
|
||||
cp -r dsd-fme/patch dsd-fme-portable/sourcecode/
|
||||
|
||||
#compiled items into release dsd-fme folder
|
||||
cp codec2/build/src/cygcodec2* dsd-fme-portable/dsd-fme/
|
||||
cp itpp-4.3.1/build/itpp/cygitpp* dsd-fme-portable/dsd-fme/
|
||||
cp rtl-sdr/build/src/cyg* dsd-fme-portable/dsd-fme/
|
||||
cp mbelib/build/cygmbe* dsd-fme-portable/dsd-fme/
|
||||
|
||||
#bin items into release dsd-fme folder (uisng * where version numbering may exist, those may be upgraded if hard coded)
|
||||
cp /bin/bash.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cut.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygao* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygarchive* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygargp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygassuan* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygasyncns* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygatomic* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygattr* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-client* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-common* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygavahi-wrap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygblkid* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbrotlicommon* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbrotlidec* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygbz2* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcares* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcheck.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcli.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcom_err* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcrypt* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcrypto* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygcurl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb_cxx* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb_sql* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygdbus* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygedit* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygexpat* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfam* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfdisk* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygffi* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3f_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3f* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3l_threads* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfftw3l* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygfido2* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygFLAC* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygformw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggdbm_compat* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggdbm*.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggio* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygglib* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggmodule* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggmp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggnutls* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggobject* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggomp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggpg-error* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggpgme* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggsasl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggsm* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggssapi_krb5* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyggthread* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygguile* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyghistory* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyghogweed* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygICE* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygiconv* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygid3tag* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygidn* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygintl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygisl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygjsoncpp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygk5crypto* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygkrb5* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyglber* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygldap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygltdl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyglz* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygma* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmenuw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmeta* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygmp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygncurses* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygnettle* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygnghttp* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygntlm* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygobjc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygogg* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygopus* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygorc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygp11* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpanel* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpath.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpcre* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygperl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpipe* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpkg* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpng* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpopt* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygprotocol* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpsl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygpulse* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygquadmath* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygreadline* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygrhash* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygrunsrv.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsamplerate* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsasl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygserver* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygSM* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsmart* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsndfile* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsox* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygspeex* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygsqlite* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygssh* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygssl* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygstart.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygstdc* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtasn* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtdb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygticw* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygtwo* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygunistring* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygusb* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyguuid* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cyguv* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygvorbis* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwavpack* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwin1.dll dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygwrap* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygX* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygx* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/cygz* dsd-fme-portable/dsd-fme/
|
||||
cp /bin/grep.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/ls.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/mintty.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pacat.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pacmd.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pactl.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/padsp dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pamon dsd-fme-portable/dsd-fme/
|
||||
cp /bin/paplay dsd-fme-portable/dsd-fme/
|
||||
cp /bin/parec dsd-fme-portable/dsd-fme/
|
||||
cp /bin/pulseaudio.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/tail.exe dsd-fme-portable/dsd-fme/
|
||||
cp /bin/tty.exe dsd-fme-portable/dsd-fme/
|
||||
|
||||
zip -r dsd-fme-x86-64-cygwin-portable.zip dsd-fme-portable
|
||||
|
||||
fi
|
||||
|
||||
printf "Any issues, Please report to either:\nhttps://github.com/lwvmobile/dsd-fme/issues or\nhttps://forums.radioreference.com/threads/dsd-fme.438137/\n\n"
|
||||
|
||||
|
||||
@@ -135,24 +135,20 @@ Open Windows PowerShell (not Command Prompt) and copy and paste all of this in a
|
||||
|
||||
```
|
||||
Invoke-WebRequest https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
|
||||
.\setup-x86_64.exe --packages nano,libpulse-devel,libpulse-mainloop-glib0,libpulse-simple0,libpulse0,pulseaudio,pulseaudio-debuginfo,pulseaudio-equalizer,pulseaudio-module-x11,pulseaudio-module-zeroconf,pulseaudio-utils,sox-fmt-pulseaudio,libusb0,libusb1.0,libusb1.0-debuginfo,libusb1.0-devel,libncurses++w10,libncurses-devel,libncursesw10,ncurses,cmake,gcc-core,gcc-debuginfo,gcc-objc,git,make,socat,sox,sox-fmt-ao,unzip,wget,gcc-g++,libsndfile-devel
|
||||
|
||||
.\setup-x86_64.exe --packages nano,libpulse-devel,libpulse-mainloop-glib0,libpulse-simple0,libpulse0,pulseaudio,pulseaudio-debuginfo,pulseaudio-equalizer,pulseaudio-module-x11,pulseaudio-module-zeroconf,pulseaudio-utils,sox-fmt-pulseaudio,libusb0,libusb1.0,libusb1.0-debuginfo,libusb1.0-devel,libncurses++w10,libncurses-devel,libncursesw10,ncurses,cmake,gcc-core,gcc-debuginfo,gcc-objc,git,make,socat,sox,sox-fmt-ao,zip,unzip,wget,gcc-g++,libsndfile-devel
|
||||
```
|
||||
|
||||
Pick a Mirror. http://www.gtlib.gatech.edu mirror seems relatively fast.
|
||||
Nurse the Cygwin installer by clicking next and waiting for it to finish, etc
|
||||
Ignore the warning popup telling you to install libusb from sourceforge, it is NOT NEEDED and actually makes the dongle not work with DSD-FME.
|
||||
After Cygwin finishes installing, the installer sh script will download and run, be patient, it may also take a little while.
|
||||
Pick a Mirror. http://www.gtlib.gatech.edu mirror seems relatively fast. Nurse the Cygwin installer by clicking next and waiting for it to finish. Ignore the warning popup telling you to install libusb from sourceforge. Install the [Zadig](https://zadig.akeo.ie/ "Zadig") driver instead, if you haven't already and have an RTL Dongle. After Cygwin finishes installing, the installer sh script will download and run, be patient, it may also take a little while.
|
||||
|
||||
Then:
|
||||
|
||||
```
|
||||
C:\cygwin64\bin\mintty.exe /bin/bash -l -c "wget https://raw.githubusercontent.com/lwvmobile/dsd-fme/refs/heads/audio_work/download-and-install-cygwin.sh; sh download-and-install-cygwin.sh; dsd-fme;"
|
||||
|
||||
|
||||
```
|
||||
|
||||
After the sh script finishes, dsd-fme should open. If not, then double click on the Cygwin Terminal desktop shortcut, and try running `dsd-fme`
|
||||
After the sh script finishes, dsd-fme should open. If not, then double click on the Cygwin Terminal desktop shortcut, and try running `dsd-fme`. If you chose to create a portable version, you will find the folder and zip file in the `C:\cygwin64\home\username` directory if using the default cygwin64 folder location.
|
||||
|
||||
You can also update your versions by using the cyg_rebuild.sh script `sh cyg_rebuild.sh`.
|
||||
|
||||
### Virtual Sinks
|
||||
|
||||
|
||||
34
examples/cygwin_bat/0pa - start-pulse-audio-server.bat
Normal file
34
examples/cygwin_bat/0pa - start-pulse-audio-server.bat
Normal file
@@ -0,0 +1,34 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@ECHO OFF
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Start the Pulse Audio backend with a 10 minute time out
|
||||
@REM start pulse audio server with 600 second idle time and no CPU limit (prevent closing while idle in menu)
|
||||
|
||||
@REM output from pulse server routed to NUL to supress "capabilities dropped, nag messages, etc" messages
|
||||
pulseaudio.exe --start --no-cpu-limit=TRUE --exit-idle-time=600 2> NUL
|
||||
|
||||
@REM End pulse start up
|
||||
|
||||
ECHO The Pulse Audio Server should now be active!
|
||||
|
||||
@REM Setup Some null-sinks (if desired, remove @REM below)
|
||||
|
||||
@REM pactl load-module module-null-sink sink_name=virtual_sink1 sink_properties=device.description=Virtual_Sink1
|
||||
@REM pactl load-module module-null-sink sink_name=virtual_sink2 sink_properties=device.description=Virtual_Sink2
|
||||
|
||||
@REM Setup Default Sink to device 0 (output)
|
||||
|
||||
pactl set-default-sink 0
|
||||
|
||||
@REM List Avaiable Pulse Audio Sinks and Sources
|
||||
|
||||
@ECHO ON
|
||||
|
||||
dsd-fme -O
|
||||
|
||||
PAUSE
|
||||
18
examples/cygwin_bat/0pa - zfix-pulse-stereo.bat
Normal file
18
examples/cygwin_bat/0pa - zfix-pulse-stereo.bat
Normal file
@@ -0,0 +1,18 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM only run this command while running DSD-FME with pulse output in a stereo 2 channel configuration
|
||||
@REM and only IF you have a stereo volume panning issue (this resolves a possibility that a user may have
|
||||
@REM used an older supplied .bat file to pan channels left or right when two pulse output streams were used)
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Manually set output volume for left and right channel to 100%
|
||||
@REM you can also adjust the value of 65535 (100%) to any value from 0 to 65535
|
||||
|
||||
@REM //dev//left//right
|
||||
pactl.exe set-sink-input-volume 0 65535 65535
|
||||
pactl.exe set-sink-input-volume 1 65535 65535
|
||||
|
||||
PAUSE
|
||||
116
examples/cygwin_bat/1aa - start-dsd-fme.bat
Normal file
116
examples/cygwin_bat/1aa - start-dsd-fme.bat
Normal file
@@ -0,0 +1,116 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Important! Make sure to route audio in with volume mixer after opening!
|
||||
@REM You may need to restart the software after setting it up to monitor input
|
||||
@REM of VB-Cables, or allowing the network traffic for TCP or RIGCTL
|
||||
@REM See the 'source code\examples\Audio_Plumbing.md' file for more information
|
||||
@REM
|
||||
@REM Notice: DSD-FME will not auto-detect NXDN48/96, Provoice, M17, or dPMR signals,
|
||||
@REM you will need to manually switch them on with the correct command.
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
|
||||
|
||||
@REM Default Decoders (DMR, P25, X2, DSTAR, YSF):
|
||||
@REM -i /dev/dsp, -o /dev/dsp, and -fa are implied
|
||||
|
||||
@REM dsd-fme.exe
|
||||
dsd-fme.exe -N 2> log.ans
|
||||
|
||||
@REM DMR
|
||||
|
||||
@REM dsd-fme.exe -fs
|
||||
@REM dsd-fme.exe -fs -N 2> log.ans
|
||||
@REM dsd-fme.exe -fs -xr #(inverted polarity)
|
||||
|
||||
@REM P25
|
||||
|
||||
@REM dsd-fme.exe -ft
|
||||
@REM dsd-fme.exe -ft -N 2> log.ans
|
||||
|
||||
|
||||
@REM P25 (Phase 2 Only, specify WACN/SYS/CC value, if not control channel)
|
||||
|
||||
@REM dsd-fme.exe -f2 -X BEE00ABC123
|
||||
@REM dsd-fme.exe -f2 -X BEE00ABC123 -N 2> log.ans
|
||||
|
||||
@REM X2-TDMA
|
||||
|
||||
@REM dsd-fme.exe -fx
|
||||
@REM dsd-fme.exe -fx -N 2> log.ans
|
||||
@REM dsd-fme.exe -fx -xx #(inverted polarity)
|
||||
|
||||
|
||||
@REM NXDN48
|
||||
|
||||
@REM dsd-fme.exe -fi
|
||||
@REM dsd-fme.exe -fi -N 2> log.ans
|
||||
|
||||
|
||||
@REM NXDN96
|
||||
|
||||
@REM dsd-fme.exe -fn
|
||||
@REM dsd-fme.exe -fn -N 2> log.ans
|
||||
|
||||
|
||||
@REM YSF
|
||||
|
||||
@REM dsd-fme.exe -fy
|
||||
@REM dsd-fme.exe -fy -N 2> log.ans
|
||||
|
||||
|
||||
@REM DSTAR
|
||||
|
||||
@REM dsd-fme.exe -fd
|
||||
@REM dsd-fme.exe -fd -N 2> log.ans
|
||||
|
||||
|
||||
@REM dPMR
|
||||
|
||||
@REM dsd-fme.exe -fm
|
||||
@REM dsd-fme.exe -fm -N 2> log.ans
|
||||
@REM dsd-fme.exe -fm -xd #(inverted polarity)
|
||||
|
||||
|
||||
@REM M17
|
||||
|
||||
@REM dsd-fme.exe -fz
|
||||
@REM dsd-fme.exe -fz -N 2> log.ans
|
||||
@REM dsd-fme.exe -fz -xz #(inverted polarity)
|
||||
|
||||
|
||||
@REM ProVoice
|
||||
|
||||
@REM dsd-fme.exe -fp
|
||||
@REM dsd-fme.exe -fp -N 2> log.ans
|
||||
|
||||
|
||||
@REM ProVoice (Conventional / Simplex)
|
||||
|
||||
@REM dsd-fme-pvc.exe -ft
|
||||
@REM dsd-fme-pvc.exe -ft -N 2> log.ans
|
||||
|
||||
|
||||
@REM PAUSE
|
||||
75
examples/cygwin_bat/1ac - start-dsd-fme-complex-examples.bat
Normal file
75
examples/cygwin_bat/1ac - start-dsd-fme-complex-examples.bat
Normal file
@@ -0,0 +1,75 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Important! Make sure to route audio in with volume mixer after opening!
|
||||
@REM You may need to restart the software after setting it up to monitor input
|
||||
@REM of VB-Cables, or allowing the network traffic for TCP or RIGCTL
|
||||
@REM See the 'source code\examples\Audio_Plumbing.md' file for more information
|
||||
@REM
|
||||
@REM Notice: DSD-FME will not auto-detect NXDN48/96, Provoice, M17, or dPMR signals,
|
||||
@REM you will need to manually switch them on with the correct command.
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
@REM feel free to experiment and mix and match options, see what works best
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, capture source to .wav file,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console
|
||||
dsd-fme.exe -fs -6 dmrsource.wav -P -N -Z 2> log.ans
|
||||
|
||||
@REM NXDN48 with default /dev/dsp input and output, analog source audio monitor,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console
|
||||
@REM dsd-fme.exe -fi -P -N -Z -8 2> log.ans
|
||||
|
||||
@REM P25 with pulse audio input and output, capture to .bin file,
|
||||
@REM per call wav files, ncurses terminal, discard console log
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -ft -P -N -c p25capture.bin 2> NUL
|
||||
|
||||
@REM P25 Phase 2 Traffic Channel Parking with SDR++ Network Sink input, pulse output,
|
||||
@REM console payload dump, ncurses terminal, manually specify WACN/SYS/CC value
|
||||
@REM dsd-fme.exe -f2 -i tcp:127.0.0.1:7355 -o pulse:output -X BEE00123ABC -Z -N 2> log.ans
|
||||
|
||||
@REM Auto Detect and Use 48k/1 .wav file for input (SDR++, DSD-FME)
|
||||
@REM dsd-fme.exe -fa -i filename.wav -s 48000
|
||||
|
||||
@REM Auto Detect and Use 96k/1 .wav file for input (DSDPlus, GQRX)
|
||||
@REM dsd-fme.exe -fa -i filename.wav -s 96000
|
||||
|
||||
@REM DMR/P25 TDMA and capture.bin format input (DSD-FME, OP25), payload to console
|
||||
@REM dsd-fme.exe -ft -i capture.bin -Z
|
||||
|
||||
@REM -- Lima Zulu Specific Tweaks for NXDN48
|
||||
@REM -- Run in With SDR++, TCP Network Audio Sink, RIGCTL on 4532, Scanner Mode,
|
||||
@REM load keys from frequency during voice, force scrambler cipher
|
||||
@REM dsd-fme-lz.exe -i tcp -U 4532 -Y -4 -t 1 -fi -Z -k examples\nxdn_sc_key.csv -C nxdn_chan_map.csv -N 2> log.ans
|
||||
|
||||
@REM -- Lima Zulu Specific Tweaks for NXDN96
|
||||
@REM -- Run in With SDR++, TCP Network Audio Sink, RIGCTL on 4532, Scanner Mode,
|
||||
@REM load keys from frequency during voice, force scrambler cipher
|
||||
@REM dsd-fme-lz.exe -i tcp -U 4532 -Y -4 -t 1 -fn -Z -k examples\nxdn_sc_key.csv -C nxdn_chan_map.csv -N 2> log.ans
|
||||
|
||||
@REM ProVoice Conventional / Simplex from Disc Tap Input
|
||||
@REM dsd-fme-pvc.exe -fp -Z
|
||||
|
||||
|
||||
@REM PAUSE
|
||||
@@ -0,0 +1,73 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Important! Make sure to route audio in with volume mixer after opening!
|
||||
@REM You may need to restart the software after setting it up to monitor input
|
||||
@REM of VB-Cables, or allowing the network traffic for TCP or RIGCTL
|
||||
@REM See the 'source code\examples\Audio_Plumbing.md' file for more information
|
||||
@REM
|
||||
@REM Notice: DSD-FME will not auto-detect NXDN48/96, Provoice, M17, or dPMR signals,
|
||||
@REM you will need to manually switch them on with the correct command.
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
@REM feel free to experiment and mix and match options, see what works best
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, use basic privacy key 70
|
||||
dsd-fme.exe -fs -b 70
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, load .csv file with decimal basic privacy keys loaded by TG value,
|
||||
@REM dsd-fme.exe -fs -k examples\multi_key.csv
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, use Hytera basic privacy key (10, 32, and 64 hex char versions)
|
||||
@REM dsd-fme.exe -fs -H 1111111111
|
||||
@REM dsd-fme.exe -fs -H '2222222222222222 3333333333333333'
|
||||
@REM dsd-fme.exe -fs -H '2222222222222222 3333333333333333 4444444444444444 5555555555555555'
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, use RC4 key 0x7777777777
|
||||
@REM dsd-fme.exe -fs -1 7777777777
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, use RC4 key 0x7777777777,
|
||||
@REM Force RC4 Key over Missing PI header/LE Encryption Identifiers (-0)
|
||||
@REM Disable Late Entry Encryption Signalling Identifiers (-3)
|
||||
@REM dsd-fme.exe -fs -0 -3 -1 7777777777
|
||||
|
||||
@REM DMR with default /dev/dsp input and output, load RC4 and 10-char HBP keys from .csv file (hexidecimal format)
|
||||
@REM dsd-fme.exe -fs -K examples\multi_key_hex.csv
|
||||
|
||||
@REM P25 with default /dev/dsp input and output, use RC4 key 0x7777777777
|
||||
@REM dsd-fme.exe -ft -1 7777777777
|
||||
|
||||
@REM NXDN48 with default /dev/dsp input and output, use Scrambler key 32767
|
||||
@REM dsd-fme.exe -fi -R 32767
|
||||
|
||||
@REM NXDN96 with default /dev/dsp input and output, use Scrambler key 15000
|
||||
@REM dsd-fme.exe -fn -R 15000
|
||||
|
||||
@REM dPMR with default /dev/dsp input and output, use Scrambler key 32767
|
||||
@REM dsd-fme.exe -fm -R 32767
|
||||
|
||||
@REM NXDN48 with default /dev/dsp input and output, load scrambler keys from .csv file (decimal format)
|
||||
@REM dsd-fme.exe -fi -k examples\nxdn_sc_key.csv
|
||||
|
||||
@REM PAUSE
|
||||
@@ -0,0 +1,49 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
@REM feel free to experiment and mix and match options, see what works best
|
||||
@REM
|
||||
@REM Scanning will not perform quickly like a real scanner, but can be used with any
|
||||
@REM supported decoding type and analog as well, and will require a channel_map to scan frequencies
|
||||
@REM channel numbers do not matter, but use unique ones for each frequeny
|
||||
@REM -t 0 will scan as fast as possible, but may miss frame sync, -t 1 is stable, but needs 1 second between tuning
|
||||
|
||||
@REM P25/DMR/Analog Scanning with RTL input, /dev/dsp output, channel map import,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console, raw audio signal monitoring
|
||||
@REM dsd-fme.exe -ft -i rtl:0:450M:0:-2:12 -Y -t 1 -C examples\dmr_t3_chan.csv -P -8 -N -Z 2> log.ans
|
||||
|
||||
@REM P25/DMR/Analog Scanning with SDR++ input (use squelch), RIGCTL, /dev/dsp output, channel map import,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console, raw audio signal monitoring
|
||||
@REM dsd-fme.exe -ft -i tcp:127.0.0.1:7355 -U 4532 -Y -t 1 -C examples\dmr_t3_chan.csv -P -8 -N -Z 2> log.ans
|
||||
|
||||
@REM NXDN48/Analog Scanning with SDR++ input (use squelch), RIGCTL, /dev/dsp output, channel map import,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console, raw audio signal monitoring
|
||||
@REM dsd-fme.exe -fi -i tcp:127.0.0.1:7355 -U 4532 -Y -t 1-C examples\nxdn_chan_map.csv -P -8 -N -Z 2> log.ans
|
||||
|
||||
@REM Analog Scanning with SDR++ input (use squelch), RIGCTL, /dev/dsp output, channel map import
|
||||
@REM dsd-fme.exe -fA -i tcp:127.0.0.1:7355 -U 4532 -Y -t 0 -C examples\nxdn_chan_map.csv -8
|
||||
|
||||
|
||||
@REM PAUSE
|
||||
@@ -0,0 +1,70 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
@REM feel free to experiment and mix and match options, see what works best
|
||||
@REM
|
||||
@REM Consult examples\trunking.sh for more trunking examples, notes, and use case on tcp and rtl input switches
|
||||
@REM Current Supported Trunking Types Include:
|
||||
@REM P25: Phase 1 or Phase 2 (MAC_SIGNAL/TDMA) Trunking.
|
||||
@REM DMR: Cap+, XPT, Con+, T3 (with channel map import)
|
||||
@REM NXDN: Type C v1 with channel map import, v2 DFA, "Icom IDAS" Type D Trunking
|
||||
@REM EDACS: Standard Network, and Extended Addressing (with and without ESK)
|
||||
@REM
|
||||
@REM Note: Simulcast P25 systems may perform poorly or not at all on DSD-FME, even with QPSK enabled.
|
||||
|
||||
@REM P25 (Phase 1 Control) Trunking with SDR++ Network Sink input, RIGCTL, /dev/dsp output,
|
||||
@REM per call wav files, ncurses terminal
|
||||
@REM dsd-fme.exe -ft -i tcp:127.0.0.1:7355 -U 4532 -T -P -N 2> log.ans
|
||||
|
||||
@REM P25 (Phase 2 Control) Trunking with SDR++ Network Sink input, RIGCTL, /dev/dsp output,
|
||||
@REM per call wav files, ncurses terminal
|
||||
@REM dsd-fme.exe -f2 -i tcp:127.0.0.1:7355 -U 4532 -T -P -N 2> log.ans
|
||||
|
||||
@REM DMR Trunking with RTL input, /dev/dsp output, channel map import,
|
||||
@REM per call wav files, ncurses terminal, payload dump to console
|
||||
@REM dsd-fme.exe -fs -i rtl:0:450M:0:-2:12 -T -C examples\dmr_t3_chan.csv -P -N -Z 2> log.ans
|
||||
|
||||
@REM DMR Trunking with SDR++ input, RIGCTL, /dev/dsp output, RAS enabled CSBK (-F),
|
||||
@REM channel map import, per call wav files, ncurses terminal, payload dump to console
|
||||
@REM dsd-fme.exe -fs -F -i tcp -U 4532 -T -C examples\capacity_plus_chan.csv -P -N -Z 2> log.ans
|
||||
|
||||
@REM NXDN48 v2.0 DFA (Direct Frequency Assignment) Trunking with SDR++ input, RIGCTL, /dev/dsp output,
|
||||
@REM scrambler key import (decimal), per call wav files, ncurses terminal, payload dump to console
|
||||
@REM dsd-fme.exe -fi -i tcp -U 4532 -T -P -N -Z -k examples\nxdn_sc_key.csv 2> log.ans
|
||||
|
||||
@REM NXDN96 Trunking with SDR++ input, RIGCTL, /dev/dsp output,
|
||||
@REM channel map import, per call wav files, ncurses terminal, payload dump to console
|
||||
@REM dsd-fme.exe -fn -i tcp -U 4532 -T -C examples\nxdn_chan_map.csv -P -N -Z 2> log.ans
|
||||
|
||||
@REM EDACS Standard Network Analog and Digital
|
||||
@REM dsd-fme.exe -fh -i tcp -U 4532 -T -C edacs_channel_map.csv -G group.csv -N 2> log.ans
|
||||
@REM dsd-fme.exe -fh -i rtl:0:850M:44:-2:24 -T -C edacs_channel_map.csv -G group.csv -N 2> log.ans
|
||||
|
||||
@REM EDACS Extended Address Analog and Digital (with ESK)
|
||||
@REM dsd-fme -fE -i tcp:192.168.7.5:7355 -U 4532 -T -C edacs_channel_map.csv -G group.csv -N 2> log.ans
|
||||
@REM dsd-fme -fE -i rtl:0:850M:44:-2:24 -T -C edacs_channel_map.csv -G group.csv -N 2> log.ans
|
||||
|
||||
|
||||
@REM PAUSE
|
||||
108
examples/cygwin_bat/1pa - start-dsd-fme-with-pulse.bat
Normal file
108
examples/cygwin_bat/1pa - start-dsd-fme-with-pulse.bat
Normal file
@@ -0,0 +1,108 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
@REM change directory into the dsd-fme folder
|
||||
cd dsd-fme
|
||||
|
||||
@REM Digital Speech Decoder: Florida Man Edition
|
||||
@REM DSD-FME Cygwin Windows Portable Builds
|
||||
@REM
|
||||
@REM The source code of this software can be donwloaded here:
|
||||
@REM https://github.com/lwvmobile/dsd-fme
|
||||
@REM
|
||||
@REM If you paid for, or were otherwise fleeced for this software, DEMAND YOUR MONEY BACK!
|
||||
@REM
|
||||
@REM This software is designed to be used with an SDR receiver (like SDR++ or SDR#) with TCP input,
|
||||
@REM RTL Input, media file playback over virtual cables or null-sinks, or a Discriminator Tap input
|
||||
@REM
|
||||
@REM The complete option list can be seen by entering the following command:
|
||||
@REM dsd-fme.exe -h
|
||||
@REM
|
||||
@REM Enjoy !
|
||||
@REM
|
||||
@REM Important! Make sure to route audio in with volume mixer after opening!
|
||||
@REM You may need to restart the software after setting it up to monitor input
|
||||
@REM of VB-Cables, or allowing the network traffic for TCP or RIGCTL
|
||||
@REM See the 'source code\examples\Audio_Plumbing.md' file for more information
|
||||
@REM
|
||||
@REM Notice: DSD-FME will not auto-detect NXDN48/96, Provoice, M17, or dPMR signals,
|
||||
@REM you will need to manually switch them on with the correct command.
|
||||
@REM
|
||||
@REM Notice: This .bat file contains numerous examples, it is recommended to find an
|
||||
@REM an example that matches your use case, and use the @REM to disable the default
|
||||
@REM or make your own .bat files with the examples provided here
|
||||
@REM
|
||||
@REM Notice: Run 0pa - start-pulse-audio-server.bat prior to using any examples here
|
||||
@REM Pulse Audio Output is better tailored for TDMA voice when voice may occur on both slots
|
||||
@REM but is not required when using any decoding.
|
||||
|
||||
|
||||
@REM Default Decoders (DMR, P25, X2, DSTAR, YSF):
|
||||
@REM -i pulse:input, -o pulse:output, and -fa are implied
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output
|
||||
dsd-fme.exe -i pulse:input -o pulse:output -N 2> log.ans
|
||||
|
||||
@REM DMR
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fs
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fs -N 2> log.ans
|
||||
|
||||
|
||||
@REM P25
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -ft
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -ft -N 2> log.ans
|
||||
|
||||
|
||||
@REM P25 (Phase 2 Only, specify WACN/SYS/CC value, if not control channel)
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -f2 -X BEE00ABC123
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -f2 -X BEE00ABC123 -N 2> log.ans
|
||||
|
||||
|
||||
@REM NXDN48
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fi
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fi -N 2> log.ans
|
||||
|
||||
|
||||
@REM NXDN96
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fn
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fn -N 2> log.ans
|
||||
|
||||
|
||||
@REM YSF
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fy
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fy -N 2> log.ans
|
||||
|
||||
|
||||
@REM DSTAR
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fd
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fd -N 2> log.ans
|
||||
|
||||
|
||||
@REM dPMR
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fm
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fm -N 2> log.ans
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fm -xd #(inverted polarity)
|
||||
|
||||
|
||||
@REM M17
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fz
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fz -N 2> log.ans
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fz -xz #(inverted polarity)
|
||||
|
||||
|
||||
@REM ProVoice
|
||||
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fp
|
||||
@REM dsd-fme.exe -i pulse:input -o pulse:output -fp -N 2> log.ans
|
||||
|
||||
|
||||
@REM PAUSE
|
||||
14
examples/cygwin_bat/1zz - tail-the-console-log.bat
Normal file
14
examples/cygwin_bat/1zz - tail-the-console-log.bat
Normal file
@@ -0,0 +1,14 @@
|
||||
@REM Set the console / terminal to 90 columns, 50 lines
|
||||
mode con: cols=90 lines=50
|
||||
|
||||
cd dsd-fme
|
||||
|
||||
@REM log.ans should refer to your log output file after '2>' i.e. '2> log.ans'
|
||||
|
||||
tail.exe -n 40 -f log.ans
|
||||
@REM Alternatively, you can also grep out keywords or interest, see example below
|
||||
@REM tail.exe -f log.ans | grep "Keyword1\|Keyword2\|Keyword3"
|
||||
@REM tail.exe -f log.ans | grep "Grant\|C+\|Keyword3"
|
||||
@REM
|
||||
|
||||
@REM PAUSE
|
||||
14
examples/cygwin_bat/9pa - close-pulse-audio-server.bat
Normal file
14
examples/cygwin_bat/9pa - close-pulse-audio-server.bat
Normal file
@@ -0,0 +1,14 @@
|
||||
@REM Shutdown pulseaudio and clean out any remenants in /dev/shm if left behind
|
||||
|
||||
cd dsd-fme
|
||||
pactl.exe exit
|
||||
|
||||
@REM now navigate to the /dev/shm folder and automatically remove any
|
||||
@REM remnants from other times pulse wasn't shut down properly
|
||||
|
||||
cd ..
|
||||
cd dev
|
||||
cd shm
|
||||
del pulse*
|
||||
|
||||
PAUSE
|
||||
1
examples/cygwin_bat/readme_cygwin_bat.txt
Normal file
1
examples/cygwin_bat/readme_cygwin_bat.txt
Normal file
@@ -0,0 +1 @@
|
||||
These files are ONLY for use on the portable cygwin builds, do not use these in any other build environments!
|
||||
Reference in New Issue
Block a user