Merge pull request #35 from zwave-js/zwave #55
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Silicon Labs firmware build | |
on: | |
push: | |
paths: | |
- Dockerfile | |
- .github/workflows/build.yaml | |
- .github/workflows/silabs-firmware-build.yaml | |
- .github/workflows/silabs-firmware-build-zwave.yaml | |
- EmberZNet/** | |
- OpenThreadRCP/** | |
- RCPMultiPAN/** | |
- ZWave/** | |
branches: | |
- main | |
tags: | |
- '*' | |
env: | |
sdk_version: 4.3.2 | |
jobs: | |
build-container: | |
name: Create build container image | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
outputs: | |
sdk_version: ${{ env.sdk_version }} | |
image_name: ghcr.io/${{ steps.lower.outputs.repository_owner }}/silabs-firmware-builder:${{ env.sdk_version }} | |
steps: | |
- name: Repository owner lowercase | |
id: lower | |
run: | | |
echo "repository_owner=$(echo $GITHUB_REPOSITORY_OWNER | tr [:upper:] [:lower:])" >> $GITHUB_OUTPUT | |
- uses: actions/[email protected] | |
- name: Log in to the GitHub container registry | |
uses: docker/[email protected] | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/[email protected] | |
- name: Build and Push | |
uses: docker/[email protected] | |
with: | |
context: . | |
file: Dockerfile | |
tags: ghcr.io/${{ steps.lower.outputs.repository_owner }}/silabs-firmware-builder:${{ env.sdk_version }} | |
cache-from: ghcr.io/${{ steps.lower.outputs.repository_owner }}/silabs-firmware-builder:cache-${{ env.sdk_version }} | |
cache-to: ghcr.io/${{ steps.lower.outputs.repository_owner }}/silabs-firmware-builder:cache-${{ env.sdk_version }} | |
push: true | |
build-args: | |
"GECKO_SDK_VERSION=v${{ env.sdk_version }}" | |
ezsp-firmware-build: | |
name: EmberZNet NCP | |
needs: build-container | |
strategy: | |
matrix: | |
include: | |
- target: yellow | |
device: MGM210PA32JIA | |
components: simple_led:board_activity,zigbee_token_interface | |
patchpath: "EmberZNet/Yellow" | |
- target: skyconnect | |
device: EFR32MG21A020F512IM32 | |
components: zigbee_token_interface | |
patchpath: "EmberZNet/SkyConnect" | |
uses: ./.github/workflows/silabs-firmware-build.yaml | |
with: | |
image_name: ${{ needs.build-container.outputs.image_name }} | |
firmware_name: ncp-uart-hw-${{ matrix.target }} | |
project_file: "/gecko_sdk/protocol/zigbee/app/ncp/sample-app/ncp-uart-hw/ncp-uart-hw.slcp" | |
project_name: "ncp-uart-hw" | |
device: ${{ matrix.device }} | |
components: ${{ matrix.components }} | |
configuration: | | |
SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE:64, | |
EMBER_APS_UNICAST_MESSAGE_COUNT:20, | |
EMBER_NEIGHBOR_TABLE_SIZE:26, | |
EMBER_SOURCE_ROUTE_TABLE_SIZE:200, | |
patchpath: ${{ matrix.patchpath }} | |
extra_c_defs: "'-DEMBER_ADDRESS_TABLE_SIZE=16' '-DEMBER_MULTICAST_TABLE_SIZE=16'" | |
sdk_version: ${{ needs.build-container.outputs.sdk_version }} | |
metadata_fw_type: "ncp-uart-hw" | |
baudrate: 115200 | |
metadata_extra: "{ \"ezsp_version\": \"7.3.2.0\" }" | |
rcp-multi-pan-firmware-build: | |
name: RCP Multi-PAN | |
needs: build-container | |
strategy: | |
matrix: | |
include: | |
- target: yellow | |
device: MGM210PA32JIA | |
components: simple_led:board_activity,cpc_security_secondary_none | |
patchpath: "RCPMultiPAN/Yellow" | |
- target: skyconnect | |
device: EFR32MG21A020F512IM32 | |
components: cpc_security_secondary_none | |
patchpath: "RCPMultiPAN/SkyConnect" | |
uses: ./.github/workflows/silabs-firmware-build.yaml | |
with: | |
image_name: ${{ needs.build-container.outputs.image_name }} | |
firmware_name: rcp-uart-802154-${{ matrix.target }} | |
project_file: "/gecko_sdk/protocol/openthread/sample-apps/ot-ncp/rcp-uart-802154.slcp" | |
project_name: "rcp-uart-802154" | |
device: ${{ matrix.device }} | |
components: ${{ matrix.components }} | |
patchpath: ${{ matrix.patchpath }} | |
sdk_version: ${{ needs.build-container.outputs.sdk_version }} | |
metadata_fw_type: "rcp-uart-802154" | |
baudrate: 460800 | |
ot-rcp-firmware-build: | |
name: OpenThread RCP | |
needs: build-container | |
strategy: | |
matrix: | |
include: | |
- target: yellow | |
device: MGM210PA32JIA | |
components: simple_led:board_activity,bootloader_interface | |
patchpath: "OpenThreadRCP/Yellow" | |
- target: skyconnect | |
device: EFR32MG21A020F512IM32 | |
components: bootloader_interface | |
patchpath: "OpenThreadRCP/SkyConnect" | |
uses: ./.github/workflows/silabs-firmware-build.yaml | |
with: | |
image_name: ${{ needs.build-container.outputs.image_name }} | |
firmware_name: ot-rcp-${{ matrix.target }} | |
project_file: "/gecko_sdk/protocol/openthread/sample-apps/ot-ncp/ot-rcp.slcp" | |
project_name: "ot-rcp" | |
device: ${{ matrix.device }} | |
components: ${{ matrix.components }} | |
patchpath: ${{ matrix.patchpath }} | |
sdkpatchpath: "OpenThreadRCP/GeckoSDK" | |
extra_c_defs: "'-DOPENTHREAD_CONFIG_NCP_REBOOT_BOOTLOADER_ENABLE=1'" | |
sdk_version: ${{ needs.build-container.outputs.sdk_version }} | |
metadata_fw_type: "ot-rcp" | |
baudrate: 460800 | |
metadata_extra: "{ \"ot_rcp_version\": \"SL-OPENTHREAD/2.3.2.0_GitHub-e6df00dd6\" }" | |
zwave-firmware-build: | |
name: Z-Wave Serial API Controller | |
needs: build-container | |
strategy: | |
matrix: | |
include: | |
# Silicon Labs UZB-7 (SLUSB001A), +14 dBm, with SAW filters | |
# (???) Aeotec Z-Stick 7 / Z-Pi 7 | |
- target: BRD4201A | |
device: EFR32ZG14P231F256GM32 | |
components: brd4201a | |
compression: lz4 | |
sign_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_sign.key | |
enc_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_encrypt.key | |
# Silicon Labs UZB-7 (SLUSB001A), +14 dBm, Z-Wave Long Range | |
- target: BRD4206A | |
device: EFR32ZG14P231F256GM32 | |
components: brd4206a | |
compression: lz4 | |
sign_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_sign.key | |
enc_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_encrypt.key | |
- target: BRD4207A | |
device: ZGM130S037HGN | |
components: brd4207a | |
compression: lz4 | |
sign_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_sign.key | |
enc_key: /gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_encrypt.key | |
uses: ./.github/workflows/silabs-firmware-build-zwave.yaml | |
with: | |
image_name: ${{ needs.build-container.outputs.image_name }} | |
firmware_name: zwave_serial_api_controller_${{ needs.build-container.outputs.sdk_version }}_${{ matrix.target }} | |
project_file: "/gecko_sdk/protocol/z-wave/Apps/zwave_ncp_serial_api/zwave_ncp_serial_api_controller.slcp" | |
project_name: "zwave_ncp_serial_api_controller" | |
device: ${{ matrix.device }} | |
components: ${{ matrix.components }} | |
# Fix known issue 1171840 in Z-Wave SDK | |
configuration: "ZAF_CONFIG_GENERIC_TYPE:0,ZAF_CONFIG_SPECIFIC_TYPE:0" | |
# patchpath: ${{ matrix.patchpath }} | |
sdk_version: ${{ needs.build-container.outputs.sdk_version }} | |
metadata_fw_type: "zwave" | |
# There are two "series" of chips: | |
# * Series 1 devices (EFR32xG1x, ZG[M]13) require lz4 compression | |
# * Series 2 devices (EFR32xG2x) require lzma compression | |
gbl_compression: lz4 | |
gbl_sign_key: "/gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_sign.key" | |
gbl_enc_key: "/gecko_sdk/protocol/z-wave/platform/SiliconLabs/PAL/BootLoader/controller-keys/controller_encrypt.key" |