Skip to content

Commit 076cadf

Browse files
committed
Enable wifi auto-connect
Settings for saving wifi creds, enable auto-connect. Also fix TLS on Zephyr v4.3.0 at least (PSA might work better on v4.4 dev?), by disabling PSA.
1 parent e15f067 commit 076cadf

2 files changed

Lines changed: 50 additions & 8 deletions

File tree

prj.conf

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ CONFIG_NET_L2_WIFI_SHELL=y
4040
CONFIG_NET_L2_ETHERNET=y
4141
CONFIG_ESP32_WIFI_STA_AUTO_DHCPV4=y
4242

43+
CONFIG_SETTINGS=y
44+
CONFIG_SETTINGS_NVS=y
45+
CONFIG_NVS=y
46+
CONFIG_FLASH=y
47+
CONFIG_FLASH_MAP=y
48+
CONFIG_WIFI_CREDENTIALS=y
49+
CONFIG_WIFI_CREDENTIALS_CONNECT_STORED=y
50+
4351
# Memfault configuration
4452
CONFIG_MEMFAULT=y
4553
CONFIG_MEMFAULT_LOGGING_ENABLE=y
@@ -64,7 +72,12 @@ CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=4096
6472
CONFIG_MBEDTLS_MEMORY_DEBUG=y
6573
CONFIG_MBEDTLS_SHELL=y
6674
CONFIG_MBEDTLS_AES_ROM_TABLES=y
67-
CONFIG_MBEDTLS_PSA_CRYPTO_C=y
75+
76+
# Disable PSA Crypto. We are missing some key flag or feature in PSA Crypto that
77+
# prevents establishing a TLS connection with Memfault. Using MbedTLS built in
78+
# ("legacy") crypto instead, which works fine.
79+
# CONFIG_MBEDTLS_PSA_CRYPTO_C=y
80+
CONFIG_MBEDTLS_USE_PSA_CRYPTO=n
6881

6982
# Credential shell, useful for debug
7083
CONFIG_TLS_CREDENTIALS_SHELL=y
@@ -86,8 +99,8 @@ CONFIG_MEMFAULT_COREDUMP_COLLECT_TASKS_REGIONS=n
8699

87100
# Memfault's http client needs a small amount of heap. Zephyr requires a minimum
88101
# heap size for the applied configuration, so select that here to prevent a
89-
# build time message
90-
CONFIG_HEAP_MEM_POOL_SIZE=52224
102+
# build time message. ESP32 WiFi adapter requires additional heap for buffers.
103+
CONFIG_HEAP_MEM_POOL_SIZE=98304
91104
CONFIG_SYS_HEAP_RUNTIME_STATS=y
92105
CONFIG_SHELL_STACK_SIZE=4096
93106
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

src/main.c

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
//! @file
22

3+
#include <stdio.h>
34
#include <string.h>
45
#include <zephyr/kernel.h>
56
#include <zephyr/logging/log.h>
7+
#include <zephyr/net/net_if.h>
8+
#include <zephyr/net/net_mgmt.h>
9+
#include <zephyr/net/wifi_mgmt.h>
610

711
#include "app_version.h"
812
#include "memfault/components.h"
@@ -15,14 +19,30 @@ LOG_MODULE_REGISTER(mflt_app, LOG_LEVEL_DBG);
1519
// Memfault SDK release
1620
extern const char* memfault_zephyr_get_device_id(void);
1721

22+
static const char* prv_get_software_version(void) {
23+
static char s_software_version[64];
24+
25+
// CI builds will often set git sha = "". in that case, omit that portion of
26+
// the software version string
27+
if (ZEPHYR_MEMFAULT_EXAMPLE_GIT_SHA1[0] == '\0') {
28+
return CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_SOFTWARE_VERSION;
29+
}
30+
31+
// Otherwise, append it to demonstrate how to include git sha in the software
32+
// version string
33+
snprintf(s_software_version, sizeof(s_software_version), "%s+%s",
34+
CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_SOFTWARE_VERSION,
35+
ZEPHYR_MEMFAULT_EXAMPLE_GIT_SHA1);
36+
return s_software_version;
37+
}
38+
1839
void memfault_platform_get_device_info(sMemfaultDeviceInfo* info) {
1940
// override the software version only to demonstrate inserting the GIT SHA
2041
*info = (sMemfaultDeviceInfo){
21-
.device_serial = memfault_zephyr_get_device_id(),
22-
.software_type = CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_SOFTWARE_TYPE,
23-
.software_version =
24-
CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_SOFTWARE_VERSION "+" ZEPHYR_MEMFAULT_EXAMPLE_GIT_SHA1,
25-
.hardware_version = CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_HARDWARE_VERSION,
42+
.device_serial = memfault_zephyr_get_device_id(),
43+
.software_type = CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_SOFTWARE_TYPE,
44+
.software_version = prv_get_software_version(),
45+
.hardware_version = CONFIG_MEMFAULT_BUILTIN_DEVICE_INFO_HARDWARE_VERSION,
2646
};
2747
}
2848

@@ -33,6 +53,15 @@ int main(void) {
3353

3454
memfault_device_info_dump();
3555
memfault_zephyr_port_install_root_certs();
56+
// Initiate auto connection on the wifi interface
57+
struct net_if* iface = net_if_get_default();
58+
int rc = net_mgmt(NET_REQUEST_WIFI_CONNECT_STORED, iface, NULL, 0);
59+
60+
if (rc) {
61+
printk(
62+
"an error occurred when trying to auto-connect to a network. err: %d",
63+
rc);
64+
}
3665

3766
return 0;
3867
}

0 commit comments

Comments
 (0)