From a3e8577441cc6992e27c64c449340d3fdd1effe2 Mon Sep 17 00:00:00 2001 From: h2zero Date: Mon, 26 Feb 2024 08:07:38 -0700 Subject: [PATCH] Update actions workflow to build BT5 examples, fix example builds. --- .github/workflows/build.yml | 144 +++++++++++++++++- .../NimBLE_extended_client.ino | 4 - .../NimBLE_extended_server.ino | 24 ++- 3 files changed, 154 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d4afabb..148766a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,9 +12,9 @@ jobs: - "examples/NimBLE_Server" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install platformio @@ -43,6 +43,48 @@ jobs: cp ${{ matrix.example }}/* example/src/ platformio run -d example + build_bt5_esp_pio: + strategy: + fail-fast: false + matrix: + example: + - "examples/Bluetooth_5/NimBLE_extended_client" + - "examples/Bluetooth_5/NimBLE_extended_server" + variant: + - esp32c3 + - esp32s3 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + - name: Install platformio + run: | + python -m pip install --upgrade pip + pip install platformio + - name: Build esp PIO + run: | + mkdir -p example/lib + rsync -Rr . example/lib/ + mkdir example/src + cat > example/platformio.ini << EOF + [env] + platform = espressif32 + framework = arduino + + [env:esp32c3] + board = esp32-c3-devkitm-1 + build_flags = '-DCONFIG_BT_NIMBLE_EXT_ADV=1' + + [env:esp32s3] + board = esp32-s3-devkitc-1 + build_flags = '-DCONFIG_BT_NIMBLE_EXT_ADV=1' + EOF + cp ${{ matrix.example }}/* example/src/ + platformio run -d example + build_arduino-esp32: strategy: fail-fast: false @@ -56,7 +98,7 @@ jobs: - esp32s3 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build arduino-esp32 uses: arduino/compile-sketches@v1.1.0 with: @@ -68,6 +110,33 @@ jobs: fqbn: "esp32:esp32:${{ matrix.variant }}" sketch-paths: ${{ matrix.example }} + build_bt5_arduino-esp32: + strategy: + fail-fast: false + matrix: + example: + - "examples/Bluetooth_5/NimBLE_extended_client" + - "examples/Bluetooth_5/NimBLE_extended_server" + variant: + - esp32c3 + - esp32s3 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set config for BT5 + run: | + sed -i '0,/#include \"nimconfig_rename.h\"/a #define CONFIG_BT_NIMBLE_EXT_ADV 1' ./src/nimconfig.h + - name: Build BT5 arduino-esp32 + uses: arduino/compile-sketches@v1.1.0 + with: + cli-version: latest + platforms: | + - name: "esp32:esp32" + source-url: "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json" + version: latest + fqbn: "esp32:esp32:${{ matrix.variant }}" + sketch-paths: ${{ matrix.example }} + build_n-able-Arduino: strategy: fail-fast: false @@ -82,7 +151,7 @@ jobs: - Generic_nRF52840 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build n-able Arduino uses: arduino/compile-sketches@v1.1.0 with: @@ -94,6 +163,32 @@ jobs: fqbn: "h2zero:arm-ble:${{ matrix.variant }}" sketch-paths: ${{ matrix.example }} + build_bt5_n-able-Arduino: + strategy: + fail-fast: false + matrix: + example: + - "examples/Bluetooth_5/NimBLE_extended_client" + - "examples/Bluetooth_5/NimBLE_extended_server" + variant: + - Generic_nRF52840 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set config for BT5 + run: | + sed -i '0,/#include \"nimconfig_rename.h\"/a #define CONFIG_BT_NIMBLE_EXT_ADV 1' ./src/nimconfig.h + - name: Build BT5 n-able Arduino + uses: arduino/compile-sketches@v1.1.0 + with: + cli-version: latest + platforms: | + - name: "h2zero:arm-ble" + source-url: "https://h2zero.github.io/n-able-Arduino/package_n-able_boards_index.json" + version: latest + fqbn: "h2zero:arm-ble:${{ matrix.variant }}" + sketch-paths: ${{ matrix.example }} + build_n-able-pio: strategy: fail-fast: false @@ -103,9 +198,9 @@ jobs: - "examples/NimBLE_Server" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install platformio @@ -136,10 +231,45 @@ jobs: EOF cp ${{ matrix.example }}/* example/src/ platformio run -d example + + build_bt5_n-able-pio: + strategy: + fail-fast: false + matrix: + example: + - "examples/Bluetooth_5/NimBLE_extended_client" + - "examples/Bluetooth_5/NimBLE_extended_server" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + - name: Install platformio + run: | + python -m pip install --upgrade pip + pip install platformio + - name: Build esp PIO + run: | + mkdir -p example/lib + rsync -Rr . example/lib/ + mkdir example/src + cat > example/platformio.ini << EOF + platform = https://github.com/h2zero/platform-n-able.git#1.0.0 + framework = arduino + + [env:generic_nrf52840] + board = generic_nrf52840 + build_flags = '-DCONFIG_BT_NIMBLE_EXT_ADV=1' + EOF + cp ${{ matrix.example }}/* example/src/ + platformio run -d example + build_docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Doxygen Action uses: mattnotmitt/doxygen-action@v1.9.5 with: diff --git a/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino b/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino index 0158351b..00260b0a 100644 --- a/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino +++ b/examples/Bluetooth_5/NimBLE_extended_client/NimBLE_extended_client.ino @@ -8,10 +8,6 @@ * */ -/**************************************************** - * For use with ESP32C3, ESP32S3, ESP32H2 ONLY! * - /**************************************************/ - #include #if !CONFIG_BT_NIMBLE_EXT_ADV # error Must enable extended advertising, see nimconfig.h file. diff --git a/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino b/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino index c5b0555f..029469fd 100644 --- a/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino +++ b/examples/Bluetooth_5/NimBLE_extended_server/NimBLE_extended_server.ino @@ -12,16 +12,14 @@ * */ -/**************************************************** - * For use with ESP32C3, ESP32S3, ESP32H2 ONLY! * - /**************************************************/ - #include "NimBLEDevice.h" #if !CONFIG_BT_NIMBLE_EXT_ADV # error Must enable extended advertising, see nimconfig.h file. #endif +#ifdef ESP_PLATFORM #include "esp_sleep.h" +#endif #define SERVICE_UUID "ABCD" #define CHARACTERISTIC_UUID "1234" @@ -48,8 +46,12 @@ class ServerCallbacks: public NimBLEServerCallbacks { }; void onDisconnect(NimBLEServer* pServer, NimBLEConnInfo& connInfo, int reason) { - Serial.printf("Client disconnected - sleeping for %u seconds\n", sleepSeconds); + Serial.printf("Client disconnected - sleeping for %" PRIu32 "seconds\n", sleepSeconds); +#ifdef ESP_PLATFORM esp_deep_sleep_start(); +#else + systemRestart(); // nRF platforms restart then sleep via delay in setup. +#endif }; }; @@ -63,18 +65,24 @@ class advertisingCallbacks: public NimBLEExtAdvertisingCallbacks { printf("Client connecting\n"); return; case BLE_HS_ETIMEOUT: - printf("Time expired - sleeping for %u seconds\n", sleepSeconds); + printf("Time expired - sleeping for %" PRIu32 "seconds\n", sleepSeconds); break; default: break; } - +#ifdef ESP_PLATFORM esp_deep_sleep_start(); +#else + systemRestart(); // nRF platforms restart then sleep via delay in setup. +#endif } }; void setup () { Serial.begin(115200); +#ifndef ESP_PLATFORM + delay(sleepSeconds * 1000); // system ON sleep mode for nRF platforms to simulate the esp deep sleep with timer wakeup +#endif NimBLEDevice::init("Extended advertiser"); @@ -143,7 +151,9 @@ void setup () { Serial.printf("Failed to register advertisment data\n"); } +#ifdef ESP_PLATFORM esp_sleep_enable_timer_wakeup(sleepSeconds * 1000000); +#endif } void loop () {