blob: 0d301c21e34b257bbce385669d2d42b589605bec [file] [log] [blame]
# Copyright (c) 2020 Linumiz
# SPDX-License-Identifier: Apache-2.0
menuconfig HAWKBIT
bool "Eclipse hawkBit Firmware Over-the-Air support"
depends on SETTINGS
depends on FLASH
depends on REBOOT
depends on NET_TCP
depends on NET_SOCKETS
depends on IMG_MANAGER
depends on NETWORKING
depends on HTTP_CLIENT
depends on JSON_LIBRARY
depends on BOOTLOADER_MCUBOOT
depends on SMF
depends on SMF_ANCESTOR_SUPPORT
select MPU_ALLOW_FLASH_WRITE
select IMG_ENABLE_IMAGE_CHECK
select IMG_ERASE_PROGRESSIVELY
help
hawkBit is a domain independent back-end framework for polling out
software updates to constrained edge devices as well as more powerful
controllers and gateways connected to IP based networking infrastructure.
if HAWKBIT
config HAWKBIT_POLL_INTERVAL
int "Time to poll interval (in minutes)"
default 5
range 1 43200
help
Set the interval that the hawkbit update server will be polled.
This time interval is zero and 43200 minutes(30 days). This will be overridden
by the value configured in the settings of the hawkBit server.
config HAWKBIT_AUTOHANDLER
bool "hawkBit autohandler"
select EVENTS
default y
help
Activate autohandler to handle the update process automatically.
config HAWKBIT_SHELL
bool "hawkBit shell utilities"
depends on SHELL
depends on HAWKBIT_AUTOHANDLER
help
Activate shell module that provides hawkBit commands.
config HAWKBIT_SHELL_AUTOHANDLER_TIMEOUT
int "hawkBit shell autohandler timeout"
default 200
depends on HAWKBIT_SHELL
help
Set the timeout in milliseconds for the hawkBit shell autohandler. During
the timeout, the hawkBit shell autohandler blocks the shell and waits for
the hawkBit autohandler to finish. During this time, log messages for the
shell logger are not printed, so this timeout should be set to a value that
is not too long, to not drop the logs.
config HAWKBIT_TENANT
string "Tenant name for the hawkbit server"
default "default"
help
Configure the tenant name for the hawkbit server.
config HAWKBIT_SERVER
string "User address for the hawkbit server"
help
Configure the hawkbit server address. If the address is not an IP address,
CONFIG_DNS_RESOLVER must be enabled to resolve the hostname.
config HAWKBIT_PORT
int "Port number for the hawkbit server"
default 8080
help
Configure the hawkbit port number.
config HAWKBIT_SET_SETTINGS_RUNTIME
bool "Set hawkbit settings at runtime"
help
Enable to set hawkbit settings at runtime.
config HAWKBIT_USE_DOMAIN_NAME
bool "Use server_domain for domain name instead of server_addr"
depends on HAWKBIT_SET_SETTINGS_RUNTIME
help
Enable to use the server_domain field for TLS and HTTP. If enabled,
server_addr can accept an already resolved IP address, and the domain name
can be provided via server_domain.
config HAWKBIT_DOMAIN_NAME_MAX_LEN
int "The buffer size for storing the domain name string"
default DNS_RESOLVER_MAX_QUERY_LEN if DNS_RESOLVER
default 255
depends on HAWKBIT_USE_DOMAIN_NAME
help
The size for the internal buffer used to hold the domain name string.
choice HAWKBIT_DDI_SECURITY
prompt "hawkBit DDI API authentication modes"
default HAWKBIT_DDI_NO_SECURITY
config HAWKBIT_DDI_NO_SECURITY
bool "No authentication security"
select DEPRECATED
help
No authentication security for the hawkBit DDI API. Support for this
had been removed from the hawkBit server in version 0.8.0. Use gateway
security token authentication instead, if you want something similar.
config HAWKBIT_DDI_TARGET_SECURITY
bool "Use target security token authentication"
help
Use target security token authentication for the hawkBit DDI API.
Here the security token is unique for each device and is generated
during the device registration process. The device has to be registered
in the hawkBit server before using this authentication mode.
config HAWKBIT_DDI_GATEWAY_SECURITY
bool "Use gateway security token authentication"
help
Use gateway security token authentication for the hawkBit DDI API.
Here the security token is shared between all devices in the same
tenant. The device can register itself in the hawkBit server on
first connection to the server. The device does not need to be registered
in the hawkBit server before using this authentication mode.
endchoice
config HAWKBIT_DDI_SECURITY_TOKEN
string "Authentication security token"
depends on HAWKBIT_DDI_TARGET_SECURITY || HAWKBIT_DDI_GATEWAY_SECURITY
default ""
help
Authentication security token for the configured hawkBit DDI
authentication mode.
config HAWKBIT_CUSTOM_ATTRIBUTES
bool "Custom device attributes"
help
Use custom definition of device attributes.
config HAWKBIT_STATUS_BUFFER_SIZE
int "hawkBit status buffer size"
default 200
help
Set the size of the buffer, which is used to store the
json strings, that are sent to the hawkBit server. It might
be increased if the custom attributes are used extensively.
choice HAWKBIT_DEVICE_ID_SOURCE
prompt "Source of the Hawkbit device ID"
config HAWKBIT_HWINFO_DEVICE_ID
bool "Device ID through HWINFO module"
depends on HWINFO
config HAWKBIT_CUSTOM_DEVICE_ID
bool "Custom device id through callback function"
help
Be able to customize the device id during runtime to a custom value,
by configuring the callback function. See `hawkbit_set_device_identity_cb`
endchoice
config HAWKBIT_DEVICE_ID_MAX_LENGTH
int "Maximum length of the device id"
depends on HAWKBIT_CUSTOM_DEVICE_ID
range 1 128
default 32
help
Maximum length of the device id.
config HAWKBIT_USE_TLS
bool "Use TLS for hawkBit server connection"
depends on NET_SOCKETS_SOCKOPT_TLS
help
Use TLS for hawkBit connection.
if HAWKBIT_USE_TLS
choice HAWKBIT_CERT_TAG
prompt "hawkBit certificate tag"
default HAWKBIT_USE_STATIC_CERT_TAG
config HAWKBIT_USE_STATIC_CERT_TAG
bool "Use static certificate tag"
help
Use static certificate tag for TLS connection to the hawkBit server.
config HAWKBIT_USE_DYNAMIC_CERT_TAG
bool "Use dynamic certificate tag"
depends on HAWKBIT_SET_SETTINGS_RUNTIME
help
Use dynamic certificate tag for TLS connection to the hawkBit server.
endchoice
config HAWKBIT_STATIC_CERT_TAG
int "Static certificate tag"
depends on HAWKBIT_USE_STATIC_CERT_TAG
default 1
help
Static certificate tag for TLS connection to the hawkBit server.
endif
choice HAWKBIT_REBOOT_MODE
prompt "Reboot mode after update"
default HAWKBIT_REBOOT_WARM
config HAWKBIT_REBOOT_WARM
bool "Warm reboot after update"
help
Do a warm reboot after the update.
config HAWKBIT_REBOOT_COLD
bool "Cold reboot after update"
help
Do a cold reboot after the update.
endchoice
config HEAP_MEM_POOL_ADD_SIZE_HAWKBIT
int "Heap memory pool size for hawkBit"
default 4096
help
Set the size of the heap memory pool for hawkBit.
config HAWKBIT_EVENT_CALLBACKS
bool "Set hawkBit event callbacks"
help
Be able to set event callbacks for hawkBit.
config HAWKBIT_SAVE_PROGRESS
bool "Save the hawkBit update download progress"
depends on STREAM_FLASH_PROGRESS
help
Regularly save progress of hawkBit update download operation.
When enabled, the download progress is periodically saved to
non-volatile storage. If a download is interrupted, it can be resumed from
the last saved point rather than starting over, saving bandwidth and time.
This is especially useful for large updates over unreliable networks or in
resource-constrained environments.
config HAWKBIT_SAVE_PROGRESS_INTERVAL
int "Save the hawkBit update download progress interval"
default 5
range 0 100
depends on HAWKBIT_SAVE_PROGRESS
help
Set the interval (in percent) that the hawkBit update download progress will be saved.
0 means that the progress will be saved every time a new chunk is downloaded.
module = HAWKBIT
module-str = Log Level for hawkbit
module-help = Enables logging for hawkBit code.
source "subsys/logging/Kconfig.template.log_config"
endif