mirror of
https://github.com/me-no-dev/AsyncTCP.git
synced 2025-07-30 02:37:32 +02:00
Rework CI and fix an error (#6)
This commit is contained in:
10
.github/dependabot.yml
vendored
Normal file
10
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Set update schedule for GitHub Actions
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
# Check for updates to GitHub Actions every week
|
||||||
|
interval: "weekly"
|
36
.github/scripts/install-arduino-core-esp32.sh
vendored
36
.github/scripts/install-arduino-core-esp32.sh
vendored
@ -1,36 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
export ARDUINO_ESP32_PATH="$ARDUINO_USR_PATH/hardware/espressif/esp32"
|
|
||||||
if [ ! -d "$ARDUINO_ESP32_PATH" ]; then
|
|
||||||
echo "Installing ESP32 Arduino Core ..."
|
|
||||||
script_init_path="$PWD"
|
|
||||||
mkdir -p "$ARDUINO_USR_PATH/hardware/espressif"
|
|
||||||
cd "$ARDUINO_USR_PATH/hardware/espressif"
|
|
||||||
|
|
||||||
echo "Installing Python Serial ..."
|
|
||||||
pip install pyserial > /dev/null
|
|
||||||
|
|
||||||
if [ "$OS_IS_WINDOWS" == "1" ]; then
|
|
||||||
echo "Installing Python Requests ..."
|
|
||||||
pip install requests > /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$GITHUB_REPOSITORY" == "espressif/arduino-esp32" ]; then
|
|
||||||
echo "Linking Core..."
|
|
||||||
ln -s $GITHUB_WORKSPACE esp32
|
|
||||||
else
|
|
||||||
echo "Cloning Core Repository..."
|
|
||||||
git clone https://github.com/espressif/arduino-esp32.git esp32 > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Updating Submodules ..."
|
|
||||||
cd esp32
|
|
||||||
git submodule update --init --recursive > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "Installing Platform Tools ..."
|
|
||||||
cd tools && python get.py
|
|
||||||
cd $script_init_path
|
|
||||||
|
|
||||||
echo "ESP32 Arduino has been installed in '$ARDUINO_ESP32_PATH'"
|
|
||||||
echo ""
|
|
||||||
fi
|
|
220
.github/scripts/install-arduino-ide.sh
vendored
220
.github/scripts/install-arduino-ide.sh
vendored
@ -1,220 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#OSTYPE: 'linux-gnu', ARCH: 'x86_64' => linux64
|
|
||||||
#OSTYPE: 'msys', ARCH: 'x86_64' => win32
|
|
||||||
#OSTYPE: 'darwin18', ARCH: 'i386' => macos
|
|
||||||
|
|
||||||
OSBITS=`arch`
|
|
||||||
if [[ "$OSTYPE" == "linux"* ]]; then
|
|
||||||
export OS_IS_LINUX="1"
|
|
||||||
ARCHIVE_FORMAT="tar.xz"
|
|
||||||
if [[ "$OSBITS" == "i686" ]]; then
|
|
||||||
OS_NAME="linux32"
|
|
||||||
elif [[ "$OSBITS" == "x86_64" ]]; then
|
|
||||||
OS_NAME="linux64"
|
|
||||||
elif [[ "$OSBITS" == "armv7l" || "$OSBITS" == "aarch64" ]]; then
|
|
||||||
OS_NAME="linuxarm"
|
|
||||||
else
|
|
||||||
OS_NAME="$OSTYPE-$OSBITS"
|
|
||||||
echo "Unknown OS '$OS_NAME'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
export OS_IS_MACOS="1"
|
|
||||||
ARCHIVE_FORMAT="zip"
|
|
||||||
OS_NAME="macosx"
|
|
||||||
elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
|
|
||||||
export OS_IS_WINDOWS="1"
|
|
||||||
ARCHIVE_FORMAT="zip"
|
|
||||||
OS_NAME="windows"
|
|
||||||
else
|
|
||||||
OS_NAME="$OSTYPE-$OSBITS"
|
|
||||||
echo "Unknown OS '$OS_NAME'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
export OS_NAME
|
|
||||||
|
|
||||||
ARDUINO_BUILD_DIR="$HOME/.arduino/build.tmp"
|
|
||||||
ARDUINO_CACHE_DIR="$HOME/.arduino/cache.tmp"
|
|
||||||
|
|
||||||
if [ "$OS_IS_MACOS" == "1" ]; then
|
|
||||||
export ARDUINO_IDE_PATH="/Applications/Arduino.app/Contents/Java"
|
|
||||||
export ARDUINO_USR_PATH="$HOME/Documents/Arduino"
|
|
||||||
elif [ "$OS_IS_WINDOWS" == "1" ]; then
|
|
||||||
export ARDUINO_IDE_PATH="$HOME/arduino_ide"
|
|
||||||
export ARDUINO_USR_PATH="$HOME/Documents/Arduino"
|
|
||||||
else
|
|
||||||
export ARDUINO_IDE_PATH="$HOME/arduino_ide"
|
|
||||||
export ARDUINO_USR_PATH="$HOME/Arduino"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "$ARDUINO_IDE_PATH" ]; then
|
|
||||||
echo "Installing Arduino IDE on $OS_NAME ..."
|
|
||||||
echo "Downloading 'arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT' to 'arduino.$ARCHIVE_FORMAT' ..."
|
|
||||||
if [ "$OS_IS_LINUX" == "1" ]; then
|
|
||||||
wget -O "arduino.$ARCHIVE_FORMAT" "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1
|
|
||||||
echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..."
|
|
||||||
tar xf "arduino.$ARCHIVE_FORMAT" > /dev/null
|
|
||||||
mv arduino-nightly "$ARDUINO_IDE_PATH"
|
|
||||||
else
|
|
||||||
curl -o "arduino.$ARCHIVE_FORMAT" -L "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1
|
|
||||||
echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..."
|
|
||||||
unzip "arduino.$ARCHIVE_FORMAT" > /dev/null
|
|
||||||
if [ "$OS_IS_MACOS" == "1" ]; then
|
|
||||||
mv "Arduino.app" "/Applications/Arduino.app"
|
|
||||||
else
|
|
||||||
mv arduino-nightly "$ARDUINO_IDE_PATH"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
rm -rf "arduino.$ARCHIVE_FORMAT"
|
|
||||||
|
|
||||||
mkdir -p "$ARDUINO_USR_PATH/libraries"
|
|
||||||
mkdir -p "$ARDUINO_USR_PATH/hardware"
|
|
||||||
|
|
||||||
echo "Arduino IDE Installed in '$ARDUINO_IDE_PATH'"
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
|
|
||||||
function build_sketch(){ # build_sketch <fqbn> <path-to-ino> [extra-options]
|
|
||||||
if [ "$#" -lt 2 ]; then
|
|
||||||
echo "ERROR: Illegal number of parameters"
|
|
||||||
echo "USAGE: build_sketch <fqbn> <path-to-ino> [extra-options]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local fqbn="$1"
|
|
||||||
local sketch="$2"
|
|
||||||
local xtra_opts="$3"
|
|
||||||
local win_opts=""
|
|
||||||
if [ "$OS_IS_WINDOWS" == "1" ]; then
|
|
||||||
local ctags_version=`ls "$ARDUINO_IDE_PATH/tools-builder/ctags/"`
|
|
||||||
local preprocessor_version=`ls "$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/"`
|
|
||||||
win_opts="-prefs=runtime.tools.ctags.path=$ARDUINO_IDE_PATH/tools-builder/ctags/$ctags_version -prefs=runtime.tools.arduino-preprocessor.path=$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/$preprocessor_version"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Compiling '"$(basename "$sketch")"' ..."
|
|
||||||
mkdir -p "$ARDUINO_BUILD_DIR"
|
|
||||||
mkdir -p "$ARDUINO_CACHE_DIR"
|
|
||||||
$ARDUINO_IDE_PATH/arduino-builder -compile -logger=human -core-api-version=10810 \
|
|
||||||
-fqbn=$fqbn \
|
|
||||||
-warnings="all" \
|
|
||||||
-tools "$ARDUINO_IDE_PATH/tools-builder" \
|
|
||||||
-tools "$ARDUINO_IDE_PATH/tools" \
|
|
||||||
-built-in-libraries "$ARDUINO_IDE_PATH/libraries" \
|
|
||||||
-hardware "$ARDUINO_IDE_PATH/hardware" \
|
|
||||||
-hardware "$ARDUINO_USR_PATH/hardware" \
|
|
||||||
-libraries "$ARDUINO_USR_PATH/libraries" \
|
|
||||||
-build-cache "$ARDUINO_CACHE_DIR" \
|
|
||||||
-build-path "$ARDUINO_BUILD_DIR" \
|
|
||||||
$win_opts $xtra_opts "$sketch"
|
|
||||||
}
|
|
||||||
|
|
||||||
function count_sketches() # count_sketches <examples-path>
|
|
||||||
{
|
|
||||||
local examples="$1"
|
|
||||||
rm -rf sketches.txt
|
|
||||||
if [ ! -d "$examples" ]; then
|
|
||||||
touch sketches.txt
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
local sketches=$(find $examples -name *.ino)
|
|
||||||
local sketchnum=0
|
|
||||||
for sketch in $sketches; do
|
|
||||||
local sketchdir=$(dirname $sketch)
|
|
||||||
local sketchdirname=$(basename $sketchdir)
|
|
||||||
local sketchname=$(basename $sketch)
|
|
||||||
if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
|
|
||||||
continue
|
|
||||||
fi;
|
|
||||||
if [[ -f "$sketchdir/.test.skip" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo $sketch >> sketches.txt
|
|
||||||
sketchnum=$(($sketchnum + 1))
|
|
||||||
done
|
|
||||||
return $sketchnum
|
|
||||||
}
|
|
||||||
|
|
||||||
function build_sketches() # build_sketches <fqbn> <examples-path> <chunk> <total-chunks> [extra-options]
|
|
||||||
{
|
|
||||||
local fqbn=$1
|
|
||||||
local examples=$2
|
|
||||||
local chunk_idex=$3
|
|
||||||
local chunks_num=$4
|
|
||||||
local xtra_opts=$5
|
|
||||||
|
|
||||||
if [ "$#" -lt 2 ]; then
|
|
||||||
echo "ERROR: Illegal number of parameters"
|
|
||||||
echo "USAGE: build_sketches <fqbn> <examples-path> [<chunk> <total-chunks>] [extra-options]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$#" -lt 4 ]; then
|
|
||||||
chunk_idex="0"
|
|
||||||
chunks_num="1"
|
|
||||||
xtra_opts=$3
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$chunks_num" -le 0 ]; then
|
|
||||||
echo "ERROR: Chunks count must be positive number"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ "$chunk_idex" -ge "$chunks_num" ]; then
|
|
||||||
echo "ERROR: Chunk index must be less than chunks count"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
set +e
|
|
||||||
count_sketches "$examples"
|
|
||||||
local sketchcount=$?
|
|
||||||
set -e
|
|
||||||
local sketches=$(cat sketches.txt)
|
|
||||||
rm -rf sketches.txt
|
|
||||||
|
|
||||||
local chunk_size=$(( $sketchcount / $chunks_num ))
|
|
||||||
local all_chunks=$(( $chunks_num * $chunk_size ))
|
|
||||||
if [ "$all_chunks" -lt "$sketchcount" ]; then
|
|
||||||
chunk_size=$(( $chunk_size + 1 ))
|
|
||||||
fi
|
|
||||||
|
|
||||||
local start_index=$(( $chunk_idex * $chunk_size ))
|
|
||||||
if [ "$sketchcount" -le "$start_index" ]; then
|
|
||||||
echo "Skipping job"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
|
|
||||||
if [ "$end_index" -gt "$sketchcount" ]; then
|
|
||||||
end_index=$sketchcount
|
|
||||||
fi
|
|
||||||
|
|
||||||
local start_num=$(( $start_index + 1 ))
|
|
||||||
echo "Found $sketchcount Sketches";
|
|
||||||
echo "Chunk Count : $chunks_num"
|
|
||||||
echo "Chunk Size : $chunk_size"
|
|
||||||
echo "Start Sketch: $start_num"
|
|
||||||
echo "End Sketch : $end_index"
|
|
||||||
|
|
||||||
local sketchnum=0
|
|
||||||
for sketch in $sketches; do
|
|
||||||
local sketchdir=$(dirname $sketch)
|
|
||||||
local sketchdirname=$(basename $sketchdir)
|
|
||||||
local sketchname=$(basename $sketch)
|
|
||||||
if [ "${sketchdirname}.ino" != "$sketchname" ] \
|
|
||||||
|| [ -f "$sketchdir/.test.skip" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
sketchnum=$(($sketchnum + 1))
|
|
||||||
if [ "$sketchnum" -le "$start_index" ] \
|
|
||||||
|| [ "$sketchnum" -gt "$end_index" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
build_sketch "$fqbn" "$sketch" "$xtra_opts"
|
|
||||||
local result=$?
|
|
||||||
if [ $result -ne 0 ]; then
|
|
||||||
return $result
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
|
133
.github/scripts/install-platformio.sh
vendored
133
.github/scripts/install-platformio.sh
vendored
@ -1,133 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Installing Python Wheel ..."
|
|
||||||
pip install wheel > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "Installing PlatformIO ..."
|
|
||||||
pip install -U platformio > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "PlatformIO has been installed"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
|
|
||||||
function build_pio_sketch(){ # build_pio_sketch <board> <path-to-ino>
|
|
||||||
if [ "$#" -lt 2 ]; then
|
|
||||||
echo "ERROR: Illegal number of parameters"
|
|
||||||
echo "USAGE: build_pio_sketch <board> <path-to-ino>"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local board="$1"
|
|
||||||
local sketch="$2"
|
|
||||||
local sketch_dir=$(dirname "$sketch")
|
|
||||||
echo ""
|
|
||||||
echo "Compiling '"$(basename "$sketch")"' ..."
|
|
||||||
python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv"
|
|
||||||
}
|
|
||||||
|
|
||||||
function count_sketches() # count_sketches <examples-path>
|
|
||||||
{
|
|
||||||
local examples="$1"
|
|
||||||
rm -rf sketches.txt
|
|
||||||
if [ ! -d "$examples" ]; then
|
|
||||||
touch sketches.txt
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
local sketches=$(find $examples -name *.ino)
|
|
||||||
local sketchnum=0
|
|
||||||
for sketch in $sketches; do
|
|
||||||
local sketchdir=$(dirname $sketch)
|
|
||||||
local sketchdirname=$(basename $sketchdir)
|
|
||||||
local sketchname=$(basename $sketch)
|
|
||||||
if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
|
|
||||||
continue
|
|
||||||
fi;
|
|
||||||
if [[ -f "$sketchdir/.test.skip" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo $sketch >> sketches.txt
|
|
||||||
sketchnum=$(($sketchnum + 1))
|
|
||||||
done
|
|
||||||
return $sketchnum
|
|
||||||
}
|
|
||||||
|
|
||||||
function build_pio_sketches() # build_pio_sketches <board> <examples-path> <chunk> <total-chunks>
|
|
||||||
{
|
|
||||||
if [ "$#" -lt 2 ]; then
|
|
||||||
echo "ERROR: Illegal number of parameters"
|
|
||||||
echo "USAGE: build_pio_sketches <board> <examples-path> [<chunk> <total-chunks>]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local board=$1
|
|
||||||
local examples=$2
|
|
||||||
local chunk_idex=$3
|
|
||||||
local chunks_num=$4
|
|
||||||
|
|
||||||
if [ "$#" -lt 4 ]; then
|
|
||||||
chunk_idex="0"
|
|
||||||
chunks_num="1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$chunks_num" -le 0 ]; then
|
|
||||||
echo "ERROR: Chunks count must be positive number"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ "$chunk_idex" -ge "$chunks_num" ]; then
|
|
||||||
echo "ERROR: Chunk index must be less than chunks count"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
set +e
|
|
||||||
count_sketches "$examples"
|
|
||||||
local sketchcount=$?
|
|
||||||
set -e
|
|
||||||
local sketches=$(cat sketches.txt)
|
|
||||||
rm -rf sketches.txt
|
|
||||||
|
|
||||||
local chunk_size=$(( $sketchcount / $chunks_num ))
|
|
||||||
local all_chunks=$(( $chunks_num * $chunk_size ))
|
|
||||||
if [ "$all_chunks" -lt "$sketchcount" ]; then
|
|
||||||
chunk_size=$(( $chunk_size + 1 ))
|
|
||||||
fi
|
|
||||||
|
|
||||||
local start_index=$(( $chunk_idex * $chunk_size ))
|
|
||||||
if [ "$sketchcount" -le "$start_index" ]; then
|
|
||||||
echo "Skipping job"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
|
|
||||||
if [ "$end_index" -gt "$sketchcount" ]; then
|
|
||||||
end_index=$sketchcount
|
|
||||||
fi
|
|
||||||
|
|
||||||
local start_num=$(( $start_index + 1 ))
|
|
||||||
echo "Found $sketchcount Sketches";
|
|
||||||
echo "Chunk Count : $chunks_num"
|
|
||||||
echo "Chunk Size : $chunk_size"
|
|
||||||
echo "Start Sketch: $start_num"
|
|
||||||
echo "End Sketch : $end_index"
|
|
||||||
|
|
||||||
local sketchnum=0
|
|
||||||
for sketch in $sketches; do
|
|
||||||
local sketchdir=$(dirname $sketch)
|
|
||||||
local sketchdirname=$(basename $sketchdir)
|
|
||||||
local sketchname=$(basename $sketch)
|
|
||||||
if [ "${sketchdirname}.ino" != "$sketchname" ] \
|
|
||||||
|| [ -f "$sketchdir/.test.skip" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
sketchnum=$(($sketchnum + 1))
|
|
||||||
if [ "$sketchnum" -le "$start_index" ] \
|
|
||||||
|| [ "$sketchnum" -gt "$end_index" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
build_pio_sketch "$board" "$sketch"
|
|
||||||
local result=$?
|
|
||||||
if [ $result -ne 0 ]; then
|
|
||||||
return $result
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
|
64
.github/scripts/on-push.sh
vendored
64
.github/scripts/on-push.sh
vendored
@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ ! -z "$TRAVIS_BUILD_DIR" ]; then
|
|
||||||
export GITHUB_WORKSPACE="$TRAVIS_BUILD_DIR"
|
|
||||||
export GITHUB_REPOSITORY="$TRAVIS_REPO_SLUG"
|
|
||||||
elif [ -z "$GITHUB_WORKSPACE" ]; then
|
|
||||||
export GITHUB_WORKSPACE="$PWD"
|
|
||||||
export GITHUB_REPOSITORY="me-no-dev/AsyncTCP"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CHUNK_INDEX=$1
|
|
||||||
CHUNKS_CNT=$2
|
|
||||||
BUILD_PIO=0
|
|
||||||
if [ "$#" -lt 2 ] || [ "$CHUNKS_CNT" -le 0 ]; then
|
|
||||||
CHUNK_INDEX=0
|
|
||||||
CHUNKS_CNT=1
|
|
||||||
elif [ "$CHUNK_INDEX" -gt "$CHUNKS_CNT" ]; then
|
|
||||||
CHUNK_INDEX=$CHUNKS_CNT
|
|
||||||
elif [ "$CHUNK_INDEX" -eq "$CHUNKS_CNT" ]; then
|
|
||||||
BUILD_PIO=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BUILD_PIO" -eq 0 ]; then
|
|
||||||
# ArduinoIDE Test
|
|
||||||
source ./.github/scripts/install-arduino-ide.sh
|
|
||||||
source ./.github/scripts/install-arduino-core-esp32.sh
|
|
||||||
|
|
||||||
echo "Installing AsyncTCP ..."
|
|
||||||
cp -rf "$GITHUB_WORKSPACE" "$ARDUINO_USR_PATH/libraries/AsyncTCP"
|
|
||||||
|
|
||||||
FQBN="espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app"
|
|
||||||
build_sketches "$FQBN" "$GITHUB_WORKSPACE/examples"
|
|
||||||
if [ ! "$OS_IS_WINDOWS" == "1" ]; then
|
|
||||||
echo "Installing ESPAsyncWebServer ..."
|
|
||||||
git clone https://github.com/me-no-dev/ESPAsyncWebServer "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer" > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "Installing ArduinoJson ..."
|
|
||||||
git clone https://github.com/bblanchon/ArduinoJson "$ARDUINO_USR_PATH/libraries/ArduinoJson" > /dev/null 2>&1
|
|
||||||
|
|
||||||
build_sketches "$FQBN" "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer/examples"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# PlatformIO Test
|
|
||||||
source ./.github/scripts/install-platformio.sh
|
|
||||||
|
|
||||||
echo "Installing AsyncTCP ..."
|
|
||||||
python -m platformio lib --storage-dir "$GITHUB_WORKSPACE" install
|
|
||||||
|
|
||||||
BOARD="esp32dev"
|
|
||||||
build_pio_sketches "$BOARD" "$GITHUB_WORKSPACE/examples"
|
|
||||||
|
|
||||||
if [[ "$OSTYPE" != "cygwin" ]] && [[ "$OSTYPE" != "msys" ]] && [[ "$OSTYPE" != "win32" ]]; then
|
|
||||||
echo "Installing ESPAsyncWebServer ..."
|
|
||||||
python -m platformio lib -g install https://github.com/me-no-dev/ESPAsyncWebServer.git > /dev/null 2>&1
|
|
||||||
git clone https://github.com/me-no-dev/ESPAsyncWebServer "$HOME/ESPAsyncWebServer" > /dev/null 2>&1
|
|
||||||
|
|
||||||
echo "Installing ArduinoJson ..."
|
|
||||||
python -m platformio lib -g install https://github.com/bblanchon/ArduinoJson.git > /dev/null 2>&1
|
|
||||||
|
|
||||||
build_pio_sketches "$BOARD" "$HOME/ESPAsyncWebServer/examples"
|
|
||||||
fi
|
|
||||||
fi
|
|
31
.github/workflows/push.yml
vendored
31
.github/workflows/push.yml
vendored
@ -3,8 +3,6 @@ name: Async TCP CI
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
|
||||||
- release/*
|
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@ -14,19 +12,18 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macOS-latest]
|
os: [ubuntu-latest]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v3
|
||||||
- name: Build Tests
|
- uses: arduino/setup-arduino-cli@v1
|
||||||
run: bash ./.github/scripts/on-push.sh 0 1
|
- name: Download board
|
||||||
|
run: |
|
||||||
build-pio:
|
arduino-cli --config-file arduino-cli.yaml core update-index
|
||||||
name: PlatformIO on ${{ matrix.os }}
|
arduino-cli --config-file arduino-cli.yaml board listall
|
||||||
runs-on: ${{ matrix.os }}
|
arduino-cli --config-file arduino-cli.yaml core install esp32:esp32@2.0.2
|
||||||
strategy:
|
- name: Compile Sketch
|
||||||
matrix:
|
run: arduino-cli --config-file arduino-cli.yaml --library ./src/ compile --fqbn esp32:esp32:esp32 ./examples/ClientServer/Client/Client.ino
|
||||||
os: [ubuntu-latest, macOS-latest]
|
- name: Compile Sketch with IPv6
|
||||||
steps:
|
env:
|
||||||
- uses: actions/checkout@v1
|
LWIP_IPV6: true
|
||||||
- name: Build Tests
|
run: arduino-cli --config-file arduino-cli.yaml --library ./src/ compile --fqbn esp32:esp32:esp32 ./examples/ClientServer/Client/Client.ino
|
||||||
run: bash ./.github/scripts/on-push.sh 1 1
|
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
# AsyncTCP
|
# AsyncTCP
|
||||||
[](https://travis-ci.org/me-no-dev/AsyncTCP)  [](https://www.codacy.com/manual/me-no-dev/AsyncTCP?utm_source=github.com&utm_medium=referral&utm_content=me-no-dev/AsyncTCP&utm_campaign=Badge_Grade)
|

|
||||||
|
|
||||||
A fork of the [AsyncTCP](https://github.com/me-no-dev/AsyncTCP) library by [@me-no-dev](https://github.com/me-no-dev) for [ESPHome](https://esphome.io).
|
A fork of the [AsyncTCP](https://github.com/me-no-dev/AsyncTCP) library by [@me-no-dev](https://github.com/me-no-dev) for [ESPHome](https://esphome.io).
|
||||||
|
|
||||||
### Async TCP Library for ESP32 Arduino
|
### Async TCP Library for ESP32 Arduino
|
||||||
|
|
||||||
[](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
||||||
|
|
||||||
This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP32 MCUs.
|
This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP32 MCUs.
|
||||||
|
|
||||||
This library is the base for [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer)
|
This library is the base for [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer)
|
||||||
|
25
arduino-cli.yaml
Normal file
25
arduino-cli.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
board_manager:
|
||||||
|
additional_urls:
|
||||||
|
- https://espressif.github.io/arduino-esp32/package_esp32_index.json
|
||||||
|
directories:
|
||||||
|
builtin.libraries: ./src/
|
||||||
|
build_cache:
|
||||||
|
compilations_before_purge: 10
|
||||||
|
ttl: 720h0m0s
|
||||||
|
daemon:
|
||||||
|
port: "50051"
|
||||||
|
library:
|
||||||
|
enable_unsafe_install: false
|
||||||
|
logging:
|
||||||
|
file: ""
|
||||||
|
format: text
|
||||||
|
level: info
|
||||||
|
metrics:
|
||||||
|
addr: :9090
|
||||||
|
enabled: true
|
||||||
|
output:
|
||||||
|
no_color: false
|
||||||
|
sketch:
|
||||||
|
always_export_binaries: false
|
||||||
|
updater:
|
||||||
|
enable_notification: true
|
42
examples/ClientServer/Client/Client.ino
Normal file
42
examples/ClientServer/Client/Client.ino
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#include <AsyncTCP.h>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
static void replyToServer(void* arg) {
|
||||||
|
AsyncClient* client = reinterpret_cast<AsyncClient*>(arg);
|
||||||
|
|
||||||
|
// send reply
|
||||||
|
if (client->space() > 32 && client->canSend()) {
|
||||||
|
char message[32];
|
||||||
|
client->add(message, strlen(message));
|
||||||
|
client->send();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* event callbacks */
|
||||||
|
static void handleData(void* arg, AsyncClient* client, void *data, size_t len) {
|
||||||
|
Serial.printf("\n data received from %s \n", client->remoteIP().toString().c_str());
|
||||||
|
Serial.write((uint8_t*)data, len);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void onConnect(void* arg, AsyncClient* client) {
|
||||||
|
Serial.printf("\n client has been connected to %s on port %d \n", SERVER_HOST_NAME, TCP_PORT);
|
||||||
|
replyToServer(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
delay(20);
|
||||||
|
|
||||||
|
AsyncClient* client = new AsyncClient;
|
||||||
|
client->onData(&handleData, client);
|
||||||
|
client->onConnect(&onConnect, client);
|
||||||
|
client->connect(SERVER_HOST_NAME, TCP_PORT);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
}
|
23
examples/ClientServer/Client/config.h
Normal file
23
examples/ClientServer/Client/config.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This example demonstrate how to use asynchronous client & server APIs
|
||||||
|
* in order to establish tcp socket connections in client server manner.
|
||||||
|
* server is running (on port 7050) on one ESP, acts as AP, and other clients running on
|
||||||
|
* remaining ESPs acts as STAs. after connection establishment between server and clients
|
||||||
|
* there is a simple message transfer in every 2s. clients connect to server via it's host name
|
||||||
|
* (in this case 'esp_server') with help of DNS service running on server side.
|
||||||
|
*
|
||||||
|
* Note: default MSS for ESPAsyncTCP is 536 byte and defualt ACK timeout is 5s.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define SSID "ESP-TEST"
|
||||||
|
#define PASSWORD "123456789"
|
||||||
|
|
||||||
|
#define SERVER_HOST_NAME "esp_server"
|
||||||
|
|
||||||
|
#define TCP_PORT 7050
|
||||||
|
#define DNS_PORT 53
|
||||||
|
|
||||||
|
#endif // CONFIG_H
|
@ -749,6 +749,7 @@ bool AsyncClient::connect(const char* host, uint16_t port){
|
|||||||
if(addr.type == IPADDR_TYPE_V6) {
|
if(addr.type == IPADDR_TYPE_V6) {
|
||||||
return connect(IPv6Address(addr.u_addr.ip6.addr), port);
|
return connect(IPv6Address(addr.u_addr.ip6.addr), port);
|
||||||
}
|
}
|
||||||
|
#if LWIP_IPV6
|
||||||
return connect(IPAddress(addr.u_addr.ip4.addr), port);
|
return connect(IPAddress(addr.u_addr.ip4.addr), port);
|
||||||
#else
|
#else
|
||||||
return connect(IPAddress(addr.addr), port);
|
return connect(IPAddress(addr.addr), port);
|
||||||
@ -1017,7 +1018,6 @@ int8_t AsyncClient::_poll(tcp_pcb* pcb){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AsyncClient::_dns_found(struct ip_addr *ipaddr){
|
void AsyncClient::_dns_found(struct ip_addr *ipaddr){
|
||||||
#if LWIP_IPV4 && LWIP_IPV6
|
|
||||||
if(ipaddr && ipaddr->u_addr.ip4.addr){
|
if(ipaddr && ipaddr->u_addr.ip4.addr){
|
||||||
connect(IPAddress(ipaddr->u_addr.ip4.addr), _connect_port);
|
connect(IPAddress(ipaddr->u_addr.ip4.addr), _connect_port);
|
||||||
} else if(ipaddr && ipaddr->u_addr.ip6.addr){
|
} else if(ipaddr && ipaddr->u_addr.ip6.addr){
|
||||||
|
Reference in New Issue
Block a user