If there are no CCC to be stored the value should be set to NULL so it
is properly cleared otherwise calling settings_str_from_bytes will leave
str uninitialized which may cause a crash when attempting to load the
value.
Fixes#11564
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
When resending data, we need to always check pending status first.
If the pending check returns an "expired" status, avoid sending the
data to L2 network driver entirely.
This change fixes a use after free issue, where the L2 network driver
was still handling a packet that was expired out from under it when
the pending status was checked.
Signed-off-by: Michael Scott <mike@foundries.io>
During firmware transmit timeout, we rely on the pending packet data to
reconstitute the token and token length. At this point the pending
structure may be cleared out due to multiple retries. To avoid getting
a zero token, let's use the token data from the original msg structure
instead.
Signed-off-by: Michael Scott <mike@foundries.io>
We are using msg->cpkt.pkt as the net_pkt pointer in the call to
net_app_send_pkt(). Let's keep the code clean and not expose
ourselves to "out of order" issues, by also using msg->cpkt.pkt
in the error handling unref call.
Signed-off-by: Michael Scott <mike@foundries.io>
During the retransmit cycle we take ref on the outgoing packet,
only to immediately unref it. Originally, this was to make sure
the net_context handling didn't get rid of the packet when
sendto() is called. But after checking, the ref counter is never
in danger of going to 0 at this point in the code, so the
added ref handling is useless.
Signed-off-by: Michael Scott <mike@foundries.io>
Add some extra space to the color resource buffer, to allow more
exotic and application-specific color spaces.
Signed-off-by: Marti Bolivar <marti@foundries.io>
This adds Kconfig option to disable HCI ECDH support.
It will compile out ECDH related code, especially HCI event handlers.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This adds common option to disable support for LE Data Length Update
procedure in controller and host.
This will reduce flash usage by compiling out le_data_len_change
event handler that will never be called if controller has been
compiled with BT_CTLR_DATA_LENGTH option disabled.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This adds common option to disable support for PHY Update
procedure in controller and host.
This will reduce flash usage by compiling out le_phy_update_complete
event handler that will never be called if controller has been
compiled with BT_CTLR_PHY option disabled.
Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
patch fix fault due to unaligned access while setting hid
report size on xtensa platform.
Fixes#11266
Signed-off-by: Savinay Dharmappa <savinay.dharmappa@intel.com>
Logging subsystem could take few extra bytes when enabled.
ECC thread stack has been unconditionally increased to
support it.
During my test, I noticed a usage of 1052 bytes when logging
subsystem is enabled.
Signed-off-by: Olivier Martin <olivier.martin@proglove.de>
RTT backend was returning number of transfered data equal
to requested amount because it was not taking into
account value returned by SEGGER_RTT_Write. As the outcome
data could be lost.
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
Modified log_filter_set function to limit level if requested
level is not compiled in. Additionally, extended function to
return actually set level. Removed redundant code from log_cmds.
Change fixes shell log backend initialization which was setting
log levels without taking into account compiled in limits.
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This makes it clear that only request need to set an opcode since they
require a error response in case it fails.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The comment was suggesting that write callback was reading and storing
buffer when in fact it should write to the attribute value.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Application may need to handle the write differently depending on the
write operation so this adds a flag called BT_GATT_WRITE_FLAG_CMD which
can then be checked by the callback, for instance one can respond with
BT_ATT_ERR_WRITE_REQ_REJECTED when that flag is not set which should
indicate to the client to use write command instead.
Fixes#11206
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
File descriptor I freed automagically when using POSIX subsystem's
close() function, but any subsys-adhoc functions like zsock_close()
should do that explicitly.
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
Updated controller implementation to disallow disabling
initiator state using scan disable. But allow disabling an
already disabled scan state. Also, disallow enabling scan
state while in initiator state.
Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Consider invalid if the request pointer is NULL or the callback is NULL
or there is a request ongoing. This conditions would likely lead to a
crash and most likely there is some other bug involved like for example
the application queueing the same request multiple times.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
flash_map should be made extern in flash_map.c since it is defined
in flash_map_default.c. Not having flash_map as extern will result
in build errors.
Signed-off-by: Rajavardhan Gundi <rajavardhan.gundi@intel.com>
Updated the controller implementation to not feature
exchange if already done once either by local or remote peer
device in an active connection session.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Each shell thread will have unique name.
Previously thread name "shell" has been created for each shell
backend.
Signed-off-by: Jakub Rzeszutko <jakub.rzeszutko@nordicsemi.no>
Add new, socket based MQTT implementation, based on MQTT from Nordic
nRF5 SDK, introducing the following features:
* transport independent MQTT logic, with support for multiple transports
* support for multiple MQTT versions (3.1.0 and 3.1.1 supported)
* single event handler - no need to keep callback array in RAM
* automatic send of Ping Requests, for connection keep-alive
* message/event parameters wrapped into strucutres - easier extension
for future MQTT versions
* no separate thread needed to run MQTT - application only needs to call
mqtt_input and mqtt_live periodically
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Rename existing headers and sybols to mqtt_legacy, to allow new
implementation to keep old config and header names.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
When issuing LE Set Data Length Command host should not assume that
LE Data Length Change Event will be generated. From Core Spec 5.0:
"If the command causes the maximum transmission packet size or maximum
packet transmission time to change, an LE Data Length Change Event
shall be generated."
Change-Id: I17723b58ed4f390aa465db3f69126ee229871123
Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
If master or application decided to switch connection parameters to
ones that meet pending parameters don't bother sending request
after 5 seconds timeout.
Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
RTT and uart shell backends were started with fixed
log limit set to INF. Configuration has been moved
to Kconfig allowing certain level or default LOG_MAX_LEVEL.
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
Scenario where RX ring buffer is full and cannot accept
more data was not handled. In that case byte should be
dropped. Such situation may occur when long command is
pasted (exceeding ring buffer size).
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
Experiments have shown that the probability of missing advertising
packets is significantly lower with 30ms scan window compared to 10ms
scan window. This is especially the case with advertisers using a 20ms
advertising interval, which in turn is perhaps the most common one
since it's the smallest allowed by the Bluetooth 5.0 specification.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
With FD table introduction, net_context can no longer be reached by
typecasting socket descriptor. Instead, file descriptor API have to be
used.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
ztls_setsockopt and ztls_getsockopt returned error codes instead of
setting errno in particular cases. This commit fixes it.
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
According to the "USB Mass Storage Class" Spec. the serial
number shall contain at least 12 valid digits, represented
as a UNICODE string.
Fixes: #11336
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Architecture init code and/or HAL layers often have a working
"putchar" routine available long before the Zephyr driver layer is
initialized.
Make the default printk() output a weak symbol, so it can be
overridden on these platforms.
Also remove the kconfig depedency on CONSOLE_HAS_DRIVER, as this is a
non-driver mechanism.
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
In earlier commit 15e7e3ea4 ("net: ip: Split debug prints into
smaller pieces"), the net_pkt debug prints were split to two
lines because of the argument count limitation in logging system.
As the logging subsystem increased the limit count in
commit 62d011549a ("logging: Support for up to 15 arguments in log
message") we can restore the original version as it is easier
to read.
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
These changes were obtained by running a script created by
Ulf Magnusson <Ulf.Magnusson@nordicsemi.no> for the following
specification:
1. Read the contents of all dts_fixup.h files in Zephyr
2. Check the left-hand side of the #define macros (i.e. the X in
#define X Y)
3. Check if that name is also the name of a Kconfig option
3.a If it is, then do nothing
3.b If it is not, then replace CONFIG_ with DT_ or add DT_ if it
has neither of these two prefixes
4. Replace the use of the changed #define in the code itself
(.c, .h, .ld)
Additionally, some tweaks had to be added to this script to catch some
of the macros used in the code in a parameterized form, e.g.:
- CONFIG_GPIO_STM32_GPIO##__SUFFIX##_BASE_ADDRESS
- CONFIG_UART_##idx##_TX_PIN
- I2C_SBCON_##_num##_BASE_ADDR
and to prevent adding DT_ prefix to the following symbols:
- FLASH_START
- FLASH_SIZE
- SRAM_START
- SRAM_SIZE
- _ROM_ADDR
- _ROM_SIZE
- _RAM_ADDR
- _RAM_SIZE
which are surprisingly also defined in some dts_fixup.h files.
Finally, some manual corrections had to be done as well:
- name##_IRQ -> DT_##name##_IRQ in uart_stm32.c
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
By default, CCC value is only stored to persistent memory during
BT disconnection. This commit adds an optional storing of CCC right
after it has been updated. This results in better robustness of
peripheral but increases system workqueue stack usage.
Signed-off-by: Filip Kubicz <filip.kubicz@nordicsemi.no>
If shell UART backend was enabled and logger uart backend was
not explicitly disabled then both were used resulting in logs
being printed twice on terminal.
Patch modifies default state of log uart backend to depend on
state of shell uart backend.
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
Previously we had a set of magic #define's in board.h that would both
enable and set the GPIO controller & pin if a given board used a GPIO
for USB VBUS. Now we make it a proper Kconfig set of options that
specify if the feature is needed, the GPIO controller device name, and
pin number. In the future this should move to devicetree.
Updated the related boards that used this feature to set the Kconfig
options in the Kconfig.defconfig
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>