Skip to content

Merge pull request #35 from zwave-js/zwave #55

Merge pull request #35 from zwave-js/zwave

Merge pull request #35 from zwave-js/zwave #55

Workflow file for this run

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"