-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add software update capability #709
Commits on Jul 11, 2024
-
Implement Update check using DCL software information
Check if there is a software update available using DCL software update information.
Configuration menu - View commit details
-
Copy full SHA for 612b867 - Browse repository at this point
Copy the full SHA 612b867View commit details -
Initial implementation of OTA provider
The OTA provider downloads the updates and prepares them so Matter devices can consume them.
Configuration menu - View commit details
-
Copy full SHA for 17f9f54 - Browse repository at this point
Copy the full SHA 17f9f54View commit details -
Implement update using OTA Provider app
Use the OTA Provider example app to implement a OTA provider. The example app supports a JSON update descriptor file to manage update metadata. Tested with the OTA Requestor app.
Configuration menu - View commit details
-
Copy full SHA for 2bab7e3 - Browse repository at this point
Copy the full SHA 2bab7e3View commit details -
Setup OTA Provider App automatically when necessary
Start and commission OTA Provider App when necessary. Use random discriminator and passcode. Store the Node ID of the OTA Provider App once setup for fast re-use.
Configuration menu - View commit details
-
Copy full SHA for 9d7717f - Browse repository at this point
Copy the full SHA 9d7717fView commit details -
Configuration menu - View commit details
-
Copy full SHA for ee82e39 - Browse repository at this point
Copy the full SHA ee82e39View commit details -
Check if DCL software updates are indeed applicable
Verify that the DCL software update is indeed applicable to the currently software running on the device. Add test coverage as well.
Configuration menu - View commit details
-
Copy full SHA for 1cf634b - Browse repository at this point
Copy the full SHA 1cf634bView commit details -
Add global check for update where we can insert hardcoded updates or updates from other sources in the future.
Configuration menu - View commit details
-
Copy full SHA for f698b51 - Browse repository at this point
Copy the full SHA f698b51View commit details -
Split update WebSocket command into two commands
Make check_node_update a separate WebSocket command which only checks for updates. The update_node command then will download and actually apply the update.
Configuration menu - View commit details
-
Copy full SHA for 93f3894 - Browse repository at this point
Copy the full SHA 93f3894View commit details -
Introduce Update logic specific exceptions
Add Update specific exceptions and raise them where appropriate.
Configuration menu - View commit details
-
Copy full SHA for 09a4469 - Browse repository at this point
Copy the full SHA 09a4469View commit details -
Implement OTA checksum verification
Add capability to verify the checksum of the OTA file while downloading it.
Configuration menu - View commit details
-
Copy full SHA for e1a5941 - Browse repository at this point
Copy the full SHA e1a5941View commit details -
Add client commands for updates
Add two new client commands to check for updates and trigger the update.
Configuration menu - View commit details
-
Copy full SHA for 116077d - Browse repository at this point
Copy the full SHA 116077dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b41888 - Browse repository at this point
Copy the full SHA 5b41888View commit details -
Create log files for each OTA Provider run. Improve setup and commissioning of the OTA Provider.
Configuration menu - View commit details
-
Copy full SHA for 4b0911c - Browse repository at this point
Copy the full SHA 4b0911cView commit details -
Move almost all update logic into ExternalOtaProvider
Most update logic is related to the external OTA provider (like commissioning and configuring it). This commit moves most of the update logic into the ExternalOtaProvider class.
Configuration menu - View commit details
-
Copy full SHA for 70e9b60 - Browse repository at this point
Copy the full SHA 70e9b60View commit details -
Update implementation to work with latest refactoring
Make use of the new ChipDeviceControllerWrapper to communicate with the device directly. This avoids unnecessary node interviewing and showing up on the controller side.
Configuration menu - View commit details
-
Copy full SHA for c67c850 - Browse repository at this point
Copy the full SHA c67c850View commit details -
Configuration menu - View commit details
-
Copy full SHA for e4bbc47 - Browse repository at this point
Copy the full SHA e4bbc47View commit details -
Support specific version by string
Support updating to a specific software version by string. This requires fetching all versions one by one, but is much more user friendly. The code still checks that all restrictions are met (min/max version, etc).
Configuration menu - View commit details
-
Copy full SHA for be9ee65 - Browse repository at this point
Copy the full SHA be9ee65View commit details -
Use ephemeral OTA Provider instances
Instead of trying to reuse the same OTA Provider instance for multiple OTA requests, create a new instance for each request. This is easier to implement and also allows parallel updates. Because the OTA Provider is now ephemeral, we need to commission it on every update. But this is quick and reliable, so not a big deal. To support multiple updates at once, we need to make sure the OTA Providers use a distinct Matter port (hence passing 0) and distinct node ids. The current implementation simply uses the target node id plus a fixed offset. Since a single node can only run one update at a time, this is sufficient. Furthermore, some updates seem to have a difference in reported versionNumberString value in the DCL vs. what is actually in the OTA metadata. Specifically Eve updates from the Testnet DCL are such updates (e.g. 3.2.0 vs 3.2.6705). When using the OTA Provider with the --otaImageList option, this discrepancy is an issue and causes OTA Provider to abort. Using the single OTA update per OTA Provider instance allows us to use --filepath, which doesn't check the versionNumberString.
Configuration menu - View commit details
-
Copy full SHA for 3c33d5f - Browse repository at this point
Copy the full SHA 3c33d5fView commit details -
Raise update error if the node moves from querying to idle
When the node's UpdateStateEnum changes from Querying to Idle it means the update file did not get processed. This could be due to temporary network issues or the update file not being honored by the target node.
Configuration menu - View commit details
-
Copy full SHA for 07b8254 - Browse repository at this point
Copy the full SHA 07b8254View commit details -
Improve logging and use Future to mark completion
Instead of using an Event use a Future to mark completion of the update. This allows to set an Exception in case we see update state transitions which are unexpected (specifically kQuerying -> kIdle).
Configuration menu - View commit details
-
Copy full SHA for 02d43d6 - Browse repository at this point
Copy the full SHA 02d43d6View commit details -
Make sure that only one updates is running at a time
Running multiple updates on the same node doesn't make sense. This should be mostly handled by the client/UX. But we do check on server side for the critical path.
Configuration menu - View commit details
-
Copy full SHA for 56d5b06 - Browse repository at this point
Copy the full SHA 56d5b06View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2f535aa - Browse repository at this point
Copy the full SHA 2f535aaView commit details -
Ignore when there is no software version info on DCL
Don't raise an exception when there is no software version info on DCL. It is perfectly fine to operate such nodes. An informational message is good enough for this case.
Configuration menu - View commit details
-
Copy full SHA for 683b33f - Browse repository at this point
Copy the full SHA 683b33fView commit details -
Add MatterSoftwareVersion model for check_node_update
Use a new model MatterSoftwareVersion to store the software version information typically fetched from DCL for the Matter nodes.
Configuration menu - View commit details
-
Copy full SHA for 76ed950 - Browse repository at this point
Copy the full SHA 76ed950View commit details -
We've added new commands, so a schema version bump is needed.
Configuration menu - View commit details
-
Copy full SHA for 475a1dc - Browse repository at this point
Copy the full SHA 475a1dcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 23a6e6b - Browse repository at this point
Copy the full SHA 23a6e6bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b0dca4b - Browse repository at this point
Copy the full SHA b0dca4bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 87cd0a4 - Browse repository at this point
Copy the full SHA 87cd0a4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7e7537b - Browse repository at this point
Copy the full SHA 7e7537bView commit details -
Apply suggestions from code review
Co-authored-by: Marcel van der Veldt <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 7a30700 - Browse repository at this point
Copy the full SHA 7a30700View commit details -
Configuration menu - View commit details
-
Copy full SHA for 07e20dd - Browse repository at this point
Copy the full SHA 07e20ddView commit details -
Configuration menu - View commit details
-
Copy full SHA for b057eae - Browse repository at this point
Copy the full SHA b057eaeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 09c92f7 - Browse repository at this point
Copy the full SHA 09c92f7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 57fb7d2 - Browse repository at this point
Copy the full SHA 57fb7d2View commit details
Commits on Jul 12, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 9ad2348 - Browse repository at this point
Copy the full SHA 9ad2348View commit details -
Configuration menu - View commit details
-
Copy full SHA for 507a429 - Browse repository at this point
Copy the full SHA 507a429View commit details
Commits on Jul 15, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 39f025e - Browse repository at this point
Copy the full SHA 39f025eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 51bec82 - Browse repository at this point
Copy the full SHA 51bec82View commit details -
Configuration menu - View commit details
-
Copy full SHA for d4162fe - Browse repository at this point
Copy the full SHA d4162feView commit details