mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
d1edbd94d6
19881: drivers/stmpe811: fix initialization if callback function parameter is NULL r=benpicco a=gschorcht ### Contribution description This PR fixes the `stmpe811` driver initialization if the callback function parameter `cb` is `NULL. This might be the case for example if the application uses the touch device in polling mode. If the interrupt pin is initialized if the callback function parameter `cb` is `NULL`, the driver crashes the first time an interrupt is triggered. Therefore, the INT pin must be initialized only if also the callback function parameter `cb` is not `NULL`. To be able to test the polling mode, this PR also includes a change of the `tests/drivers/stmpe811` application which introduces the environment variables `STMPE811_POLLING_MODE` `STMPE811_POLLING_PERIOD` and in the makefile. ### Testing procedure 1. Use a `stm32f429i-disc1` board and test it in polling mode: ``` STMPE811_POLLING_MODE=1 BOARD=stm32f429i-disc1 make -C tests/drivers/stmpe811 flash term ``` It should work as expected. ``` main(): This is RIOT! (Version: 2023.10-devel-119-g26e7a-drivers/stmpe811_fix_cb_null) STMPE811 test application +------------Initializing------------+ Initialization successful Pressed! X: 113, Y:135 X: 113, Y:135 X: 113, Y:136 Released! ``` 2. Checkout master branch and cerry-pick commit 691a5e6308426ddc685e5a2c297238529211c258. The test application `tests/drivers/stmpe811` will crash once a touch event occur: ``` main(): This is RIOT! (Version: 2023.10-devel-117-g91441) STMPE811 test application +------------Initializing------------+ Initialization successful Stack pointer corrupted, reset to top of stack FSR/FAR: CFSR: 0x00020000 HFSR: 0x40000000 DFSR: 0x00000008 AFSR: 0x00000000 Misc EXC_RET: 0xfffffff1 *** RIOT kernel panic: HARD FAULT HANDLER ``` ### Issues/PRs references 19892: pkg/tinydtls: allow to set buffer size from application again r=benpicco a=leandrolanzieri ### Contribution description Currently the buffer size on tinydtls is set in its Makefile whenever `gcoap` module is present. This limits the ability of the user to override the value. This adds a pre-check of the `CFLAGS` to see if it was set before. ### Testing procedure Try setting `CFLAGS += -DDTLS_MAX_BUF=<some_value>` on `examples/gcoap_dtls`, you should be able to override the default value without errors. ### Issues/PRs references Reported in #19838 Co-authored-by: Gunar Schorcht <gunar@schorcht.net> Co-authored-by: Leandro Lanzieri <leandro.lanzieri@haw-hamburg.de> |
||
---|---|---|
.. | ||
application_layer | ||
ble | ||
credman | ||
crosslayer | ||
dsm | ||
gnrc | ||
link_layer | ||
lora | ||
netdev_test | ||
netif | ||
netstats | ||
netutils | ||
network_layer | ||
sock | ||
transport_layer | ||
doc.txt | ||
ieee802154.txt | ||
Kconfig |