Skip to content
Permalink
Browse files

Implement FUOTA.

This implements the FUOTA building-blocks (remote multicast-setup, app
layer clock sync and fragmentation-session setup) + provides an
implementation of a firmware update engine.

For now, this only implements sending FUOTA deployments to a single
device.
  • Loading branch information...
brocaar committed May 6, 2019
1 parent d683c63 commit a1ece80d40410964594db725733597691814593f
Showing with 10,003 additions and 197 deletions.
  1. +2 −0 Dockerfile-devel
  2. +113 −101 api/device.pb.go
  3. +5 −0 api/device.proto
  4. +1,169 −0 api/fuotaDeployment.pb.go
  5. +346 −0 api/fuotaDeployment.pb.gw.go
  6. +225 −0 api/fuotaDeployment.proto
  7. +3 −0 api/gen.sh
  8. +4 −0 api/swagger/device.swagger.json
  9. +424 −0 api/swagger/fuotaDeployment.swagger.json
  10. +24 −0 cmd/lora-app-server/cmd/configfile.go
  11. +8 −0 cmd/lora-app-server/cmd/root.go
  12. +27 −0 cmd/lora-app-server/cmd/root_run.go
  13. +24 −0 docs/content/install/config.md
  14. +7 −0 docs/content/overview/changelog.md
  15. +65 −0 internal/api/as/as.go
  16. +45 −0 internal/api/external/auth/validators.go
  17. +78 −2 internal/api/external/auth/validators_test.go
  18. +29 −6 internal/api/external/device.go
  19. +8 −6 internal/api/external/device_test.go
  20. +4 −0 internal/api/external/external.go
  21. +391 −0 internal/api/external/fuota_deployment.go
  22. +201 −0 internal/api/external/fuota_deployment_test.go
  23. +6 −36 internal/api/external/mutlicast_group.go
  24. +77 −0 internal/applayer/clocksync/clocksync.go
  25. +154 −0 internal/applayer/clocksync/clocksync_test.go
  26. +254 −0 internal/applayer/fragmentation/fragmentation.go
  27. +380 −0 internal/applayer/fragmentation/fragmentation_test.go
  28. +329 −0 internal/applayer/multicastsetup/multicastsetup.go
  29. +441 −0 internal/applayer/multicastsetup/multicastsetup_test.go
  30. +17 −0 internal/config/config.go
  31. +625 −0 internal/fuota/fuota.go
  32. +739 −0 internal/fuota/fuota_test.go
  33. +3 −2 internal/gwping/gwping_test.go
  34. +83 −14 internal/multicast/multicast.go
  35. +16 −6 internal/storage/device.go
  36. +4 −0 internal/storage/device_test.go
  37. +662 −0 internal/storage/fuota_deployment.go
  38. +273 −0 internal/storage/fuota_deployment_test.go
  39. +3 −4 internal/storage/gateway_profile_test.go
  40. +1 −1 internal/storage/integrations_test.go
  41. +16 −4 internal/storage/multicast_group.go
  42. +4 −2 internal/storage/multicast_group_test.go
  43. +3 −2 internal/storage/organization_test.go
  44. +325 −0 internal/storage/remote_fragmentation_session.go
  45. +205 −0 internal/storage/remote_fragmentation_session_test.go
  46. +246 −0 internal/storage/remote_multicast_class_c_session.go
  47. +190 −0 internal/storage/remote_multicast_class_c_session_test.go
  48. +247 −0 internal/storage/remote_multicast_setup.go
  49. +168 −0 internal/storage/remote_multicast_setup_test.go
  50. +2 −3 internal/storage/search_test.go
  51. +1 −1 internal/storage/service_profile_test.go
  52. +8 −0 migrations/0039_application_add_dr.sql
  53. +145 −0 migrations/0040_fuota.sql
  54. +6 −0 ui/src/App.js
  55. +54 −0 ui/src/components/DurationField.js
  56. +3 −1 ui/src/components/TableCellLink.js
  57. +99 −0 ui/src/stores/FUOTADeploymentStore.js
  58. +5 −0 ui/src/views/applications/ApplicationLayout.js
  59. +13 −2 ui/src/views/devices/DeviceKeys.js
  60. +10 −4 ui/src/views/devices/DeviceLayout.js
  61. +89 −0 ui/src/views/fuota/CreateFUOTADeploymentForDevice.js
  62. +203 −0 ui/src/views/fuota/FUOTADeploymentDetails.js
  63. +193 −0 ui/src/views/fuota/FUOTADeploymentForm.js
  64. +127 −0 ui/src/views/fuota/FUOTADeploymentLayout.js
  65. +131 −0 ui/src/views/fuota/ListFUOTADeploymentDevices.js
  66. +84 −0 ui/src/views/fuota/ListFUOTADeploymentsForApplication.js
  67. +157 −0 ui/src/views/fuota/ListFUOTADeploymentsForDevice.js
@@ -12,3 +12,5 @@ COPY . $PROJECT_PATH
WORKDIR $PROJECT_PATH

RUN make dev-requirements
RUN go get ./...

Large diffs are not rendered by default.

@@ -213,6 +213,11 @@ message DeviceKeys {
// Application root key (HEX encoded).
// Note: This field only needs to be set for LoRaWAN 1.1.x devices!
string app_key = 3;

// Gen application key (HEX encoded).
// This is an optional key that only must be set for LORaWAN 1.0.x devices
// that implement the remote multicast setup specification.
string gen_app_key = 4;
}

message CreateDeviceRequest {

0 comments on commit a1ece80

Please sign in to comment.
You can’t perform that action at this time.