#!/usr/bin/env bash PASSCODE=${1:-20202021} DISCRIMINATOR=${2:-42} UDP_PORT=${3:-5560} OTA_DOWNLOAD_PATH=${4:-"/tmp/test.bin"} FIRMWARE_BIN="my-firmware.bin" FIRMWARE_OTA="my-firmware.ota" OTA_PROVIDER_APP="chip-ota-provider-app" OTA_PROVIDER_FOLDER="out/ota_provider_debug" OTA_REQUESTOR_APP="chip-ota-requestor-app" OTA_REQUESTOR_FOLDER="out/ota_requestor_debug" CHIP_TOOL_APP="chip-tool" CHIP_TOOL_FOLDER="out" killall -e "$OTA_PROVIDER_APP" "$OTA_REQUESTOR_APP" rm -f "$FIRMWARE_OTA" "$FIRMWARE_BIN" "$OTA_DOWNLOAD_PATH" set -e scripts/examples/gn_build_example.sh examples/chip-tool "$CHIP_TOOL_FOLDER" scripts/examples/gn_build_example.sh examples/ota-requestor-app/linux "$OTA_REQUESTOR_FOLDER" chip_config_network_layer_ble=false scripts/examples/gn_build_example.sh examples/ota-provider-app/linux "$OTA_PROVIDER_FOLDER" chip_config_network_layer_ble=false echo "Test" >"$FIRMWARE_BIN" rm -f /tmp/chip_* ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 10 -vs "10.0" -da sha256 "$FIRMWARE_BIN" "$FIRMWARE_OTA" if [ ! -f "$FIRMWARE_OTA" ]; then exit 1 fi ./"$OTA_PROVIDER_FOLDER"/"$OTA_PROVIDER_APP" -f "$FIRMWARE_OTA" | tee /tmp/ota/provider-log.txt & echo "Commissioning Provider" ./"$CHIP_TOOL_FOLDER"/"$CHIP_TOOL_APP" pairing onnetwork 1 "$PASSCODE" | tee /tmp/ota/chip-tool-commission-provider.txt if grep "Device commissioning completed with success" /tmp/ota/chip-tool-commission-provider.txt; then echo Provider Commissioned else echo Provider not commissioned properly fi ./"$CHIP_TOOL_FOLDER"/"$CHIP_TOOL_APP" accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 stdbuf -o0 ./"$OTA_REQUESTOR_FOLDER"/"$OTA_REQUESTOR_APP" --discriminator "$DISCRIMINATOR" --secured-device-port "$UDP_PORT" --KVS /tmp/chip_kvs_requestor --otaDownloadPath "$OTA_DOWNLOAD_PATH" | tee /tmp/ota/requestor-log.txt & echo "Commissioning Requestor" ./"$CHIP_TOOL_FOLDER"/"$CHIP_TOOL_APP" pairing onnetwork-long 2 "$PASSCODE" "$DISCRIMINATOR" | tee /tmp/ota/chip-tool-commission-requestor.txt if grep "Device commissioning completed with success" /tmp/ota/chip-tool-commission-requestor.txt; then echo Requestor Commissioned else echo Requestor not commissioned properly fi echo "Sending announce-ota-provider" ./"$CHIP_TOOL_FOLDER"/"$CHIP_TOOL_APP" otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 | tee /tmp/ota/chip-tool-announce-ota.txt timeout 30 grep -q "OTA image downloaded to" <(tail -n0 -f /tmp/ota/requestor-log.txt) echo "Exiting, logs are in tmp/ota/" if cmp "$OTA_DOWNLOAD_PATH" "$FIRMWARE_BIN"; then TEST_RESULT="Test passed" RETURN_VALUE=0 else TEST_RESULT="Test failed" RETURN_VALUE=1 fi killall -s SIGKILL -e "$OTA_PROVIDER_APP" "$OTA_REQUESTOR_APP" rm -f "$FIRMWARE_OTA" "$FIRMWARE_BIN" "$OTA_DOWNLOAD_PATH" echo "$TEST_RESULT" exit "$RETURN_VALUE"