Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-and-test-macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
matrix:
os: ["macos-14", "macos-15", "macos-15-intel", "macos-26"]
otp: ["24", "25", "26", "27", "28"]
mbedtls: ["mbedtls@3"]
mbedtls: ["mbedtls@3","mbedtls@4"]
cmake_opts_other: [""]

include:
Expand Down
24 changes: 21 additions & 3 deletions .github/workflows/build-libraries.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:
runs-on: "ubuntu-22.04"
strategy:
fail-fast: false
matrix:
mbedtls: ["default", "mbedtls@4"]

steps:
- name: "Checkout repo"
Expand All @@ -36,10 +38,26 @@ jobs:

- name: "Install deps"
run: |
sudo apt install -y build-essential cmake gperf zlib1g-dev libmbedtls-dev
sudo apt install -y build-essential cmake gperf zlib1g-dev
if [[ "${{ matrix.mbedtls }}" == "default" ]]; then
sudo apt install -y libmbedtls-dev
fi
# Get a more recent valgrind
sudo snap install valgrind --classic

- name: "Install specific MbedTLS version"
if: matrix.mbedtls == 'mbedtls@4'
run: |
git clone --depth 1 --branch mbedtls-4.0.0 --recurse-submodules https://github.com/Mbed-TLS/mbedtls
cd mbedtls
mkdir build
cd build
cmake -DENABLE_TESTING=OFF -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install
sudo ldconfig
echo "MBEDTLS_ROOT_DIR=/usr/local" >> $GITHUB_ENV

# Builder info
- name: "System info"
run: |
Expand All @@ -64,7 +82,7 @@ jobs:
- name: "Build: run cmake"
working-directory: build
run: |
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ${MBEDTLS_ROOT_DIR:+-DMBEDTLS_ROOT_DIR=$MBEDTLS_ROOT_DIR} ..

- name: "Build: run make"
working-directory: build
Expand Down Expand Up @@ -122,7 +140,7 @@ jobs:

- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
if: startsWith(github.ref, 'refs/tags/') && matrix.mbedtls == 'default'
with:
draft: true
fail_on_unmatched_files: true
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/esp32-simtest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
paths:
- ".github/workflows/esp32-simtest.yaml"
- "CMakeLists.txt"
- 'CMakeModules/**'
- "CMakeModules/**"
- "libs/**"
- "src/platforms/esp32/**"
- "src/platforms/esp32/**/**"
Expand All @@ -22,7 +22,7 @@ on:
paths:
- ".github/workflows/esp32-simtest.yaml"
- "CMakeLists.txt"
- 'CMakeModules/**'
- "CMakeModules/**"
- "libs/**"
- "src/platforms/esp32/**"
- "src/platforms/esp32/**/**"
Expand Down Expand Up @@ -78,9 +78,9 @@ jobs:
"esp32c3",
"esp32c5",
"esp32c6",
"esp32h2"
"esp32h2",
]
idf-version: ${{ ((contains(github.event.head_commit.message, 'full_sim_test')||contains(github.event.pull_request.title, 'full_sim_test')) && fromJSON('["v5.1.7", "v5.2.6", "v5.3.4", "v5.4.3", "v5.5.3"]')) || fromJSON('["v5.5.3"]') }}
idf-version: ${{ ((contains(github.event.head_commit.message, 'full_sim_test')||contains(github.event.pull_request.title, 'full_sim_test')) && fromJSON('["v5.1.7", "v5.2.6", "v5.3.4", "v5.4.3", "v5.5.3"]')) || fromJSON('["release-v6.0"]') }}
exclude:
- esp-idf-target: "esp32p4"
idf-version: "v5.1.7"
Expand All @@ -101,7 +101,7 @@ jobs:
# CI now uses chip revision 3 that is currently only available in 5.5.2
include:
- esp-idf-target: "esp32p4"
idf-version: "v5.5.3"
idf-version: "release-v6.0"

steps:
- name: Checkout repo
Expand Down
18 changes: 16 additions & 2 deletions doc/src/programmers-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -1331,7 +1331,7 @@ Use the [`esp:deep_sleep/1`](./apidocs/erlang/eavmlib/esp.md#deep_sleep1) functi
esp:deep_sleep(60*1000).
```

Use the [`esp:sleep_get_wakeup_cause/0`](./apidocs/erlang/eavmlib/esp.md#sleep_get_wakeup_cause0) function to inspect the reason for a wakeup. Possible return values include:
For ESP-IDF 5.5 compatibility, use [`esp:sleep_get_wakeup_cause/0`](./apidocs/erlang/eavmlib/esp.md#sleep_get_wakeup_cause0) to inspect a single wakeup reason. Possible values include:

* `sleep_wakeup_ext0`
* `sleep_wakeup_ext1`
Expand All @@ -1342,7 +1342,7 @@ Use the [`esp:sleep_get_wakeup_cause/0`](./apidocs/erlang/eavmlib/esp.md#sleep_g
* `sleep_wakeup_uart`
* `sleep_wakeup_wifi`
* `sleep_wakeup_cocpu`
* `sleep_wakeup_cocpu_trag_trig`
* `sleep_wakeup_cocpu_trap_trig`
* `sleep_wakeup_bt`
* `undefined` (no sleep wakeup)
* `error` (unknown other reason)
Expand All @@ -1362,6 +1362,20 @@ case esp:sleep_get_wakeup_cause() of
end.
```

For ESP-IDF 6+, use [`esp:sleep_get_wakeup_causes/0`](./apidocs/erlang/eavmlib/esp.md#sleep_get_wakeup_causes0) to inspect all wakeup reasons. This function returns a list, since a wakeup may have multiple causes.

The values match the semantics of [`esp_sleep_get_wakeup_causes`](https://docs.espressif.com/projects/esp-idf/en/release-v6.0/esp32/api-reference/system/sleep_modes.html).

```erlang
WakeupCauses = esp:sleep_get_wakeup_causes(),
case WakeupCauses of
[] ->
io:format("No wakeup cause available~n");
_ ->
io:format("Wakeup causes: ~p~n", [WakeupCauses])
end.
```

Use the [`esp:sleep_enable_ext0_wakeup/2`](./apidocs/erlang/eavmlib/esp.md#sleep_enable_ext0_wakeup2) and [`esp:sleep_enable_ext1_wakeup/2`](./apidocs/erlang/eavmlib/esp.md#sleep_enable_ext1_wakeup2) functions to configure ext0 and ext1 wakeup mechanisms. They follow the semantics of [`esp_sleep_enable_ext0_wakeup`](https://docs.espressif.com/projects/esp-idf/en/release-v5.5/esp32/api-reference/system/sleep_modes.html#_CPPv428esp_sleep_enable_ext0_wakeup10gpio_num_ti) and [`esp_sleep_enable_ext1_wakeup`](https://docs.espressif.com/projects/esp-idf/en/release-v5.5/esp32/api-reference/system/sleep_modes.html#_CPPv428esp_sleep_enable_ext1_wakeup8uint64_t28esp_sleep_ext1_wakeup_mode_t).

```erlang
Expand Down
10 changes: 10 additions & 0 deletions libs/eavmlib/src/esp.erl
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
restart/0,
reset_reason/0,
sleep_get_wakeup_cause/0,
sleep_get_wakeup_causes/0,
sleep_enable_ext0_wakeup/2,
sleep_enable_ext1_wakeup/2,
sleep_enable_ext1_wakeup_io/2,
Expand Down Expand Up @@ -174,6 +175,15 @@ reset_reason() ->
sleep_get_wakeup_cause() ->
erlang:nif_error(undefined).

%%-----------------------------------------------------------------------------
%% @returns wakeup causes for the previous sleep operation
%% @doc Returns all causes for the wakeup
%% @end
%%-----------------------------------------------------------------------------
-spec sleep_get_wakeup_causes() -> [esp_wakeup_cause()].
sleep_get_wakeup_causes() ->
erlang:nif_error(undefined).

%%-----------------------------------------------------------------------------
%% @doc Configure gpio wakeup from deep sleep.
%% Implemented for SOCs that support it (ESP32, ESP32S2, ESP32S3)
Expand Down
Loading
Loading