Skip to content

Commit 62b1bd3

Browse files
committed
Fix Arduino progmem print, AVR WOLFSSL_USER_IO
1 parent bbe956c commit 62b1bd3

File tree

5 files changed

+62
-2
lines changed

5 files changed

+62
-2
lines changed

.wolfssl_known_macro_extras

+6
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@ ARDUINO_ARCH_NRF52
1616
ARDUINO_ARCH_RP2040
1717
ARDUINO_ARCH_SAMD
1818
ARDUINO_ARCH_STM32
19+
ARDUINO_ESP32_DEV
20+
ARDUINO_ESP8266_ESP01
21+
ARDUINO_NANO_RP2040_CONNECT
22+
ARDUINO_SAMD_MKRWIFI1010
1923
ARDUINO_SAMD_NANO_33_IOT
2024
ARDUINO_SAM_DUE
2125
ARDUINO_SEEED_XIAO
26+
ARDUINO_TEENSY40
2227
ARDUINO_TEENSY41
28+
ARDUINO_UNOWIFIR4
2329
ASN_DUMP_OID
2430
ASN_TEMPLATE_SKIP_ISCA_CHECK
2531
ATCAPRINTF

IDE/ARDUINO/wolfssl-arduino.cpp

+25-1
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,33 @@
2525
/* Function to allow wolfcrypt to use Arduino Serial.print for debug messages.
2626
* See wolfssl/wolfcrypt/logging.c */
2727

28+
#if defined(__AVR__)
29+
#include <avr/pgmspace.h> /* Required for PROGMEM handling on AVR */
30+
#endif
31+
2832
int wolfSSL_Arduino_Serial_Print(const char* const s)
2933
{
3034
/* Reminder: Serial.print is only available in C++ */
31-
Serial.println(F(s));
35+
int is_progmem = 0;
36+
37+
#if defined(__AVR__)
38+
const char* t;
39+
t = s;
40+
41+
/* Safely check if `s` is in PROGMEM, 0x8000 is typical for AVR flash */
42+
if (reinterpret_cast<uint16_t>(t) >= 0x8000) {
43+
while (pgm_read_byte(t)) {
44+
Serial.write(pgm_read_byte(t++));
45+
}
46+
Serial.println();
47+
is_progmem = 1;
48+
}
49+
#endif
50+
51+
/* Print normally for non-AVR boards or RAM-stored strings */
52+
if (!is_progmem) {
53+
Serial.println(s);
54+
}
55+
3256
return 0;
3357
};

IDE/ARDUINO/wolfssl-arduino.sh

+8
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@ if [ "$THIS_DIR" = "ARDUINO" ]; then
262262
# Copy examples
263263
mkdir -p ".${ROOT_SRC_DIR}"/examples
264264

265+
EXAMPLES_DIR_REAL_PATH=$(realpath ".${EXAMPLES_DIR}")
266+
echo "Source WOLFSSL_EXAMPLES_ROOT=$WOLFSSL_EXAMPLES_ROOT"
267+
echo "Destination EXAMPLES_DIR=.${EXAMPLES_DIR}"
268+
echo "EXAMPLES_DIR_REAL_PATH=${EXAMPLES_DIR_REAL_PATH}"
269+
265270
if [ -n "$WOLFSSL_EXAMPLES_ROOT" ]; then
266271
echo "Copy template example...."
267272
mkdir -p ".${EXAMPLES_DIR}"/template/wolfssl_library/src
@@ -294,6 +299,9 @@ if [ "$THIS_DIR" = "ARDUINO" ]; then
294299
else
295300
NO_ARDUINO_EXAMPLES=1
296301
fi
302+
echo "Examples copied to .${EXAMPLES_DIR}"
303+
echo "ls ${EXAMPLES_DIR_REAL_PATH}"
304+
ls "${EXAMPLES_DIR_REAL_PATH}"
297305
else
298306
echo "ERROR: You must be in the IDE/ARDUINO directory to run this script"
299307
exit 1

examples/configs/user_settings_arduino.h

+4
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,13 @@
9292
#elif defined(WOLFSSL_SERVER_EXAMPLE)
9393
#define NO_WOLFSSL_CLIENT
9494
#elif defined(WOLFSSL_TEMPLATE_EXAMPLE)
95+
#define NO_TLS
96+
#define WOLFCRYPT_ONLY
9597
#define NO_WOLFSSL_SERVER
9698
#define NO_WOLFSSL_CLIENT
9799
#elif defined(WOLFSSL_AES_CTR_EXAMPLE)
100+
#define NO_TLS
101+
#define WOLFCRYPT_ONLY
98102
#define NO_WOLFSSL_SERVER
99103
#define NO_WOLFSSL_CLIENT
100104
#define WOLFSSL_AES

wolfssl/wolfcrypt/settings.h

+19-1
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,26 @@
314314
#define WOLFSSL_USER_SETTINGS
315315
#endif /* WOLFSSL_USER_SETTINGS */
316316

317-
/* board-specific */
317+
/* Board-specific network capability check */
318+
#if defined(ARDUINO_SAMD_MKRWIFI1010) || \
319+
defined(ARDUINO_SAMD_NANO_33_IOT) || \
320+
defined(ARDUINO_NANO_RP2040_CONNECT) || \
321+
defined(ARDUINO_UNOWIFIR4) || \
322+
defined(ARDUINO_ESP32_DEV) || \
323+
defined(ARDUINO_ESP8266_ESP01) || \
324+
defined(ARDUINO_TEENSY40) || \
325+
defined(ARDUINO_TEENSY41) || \
326+
defined(ESP32) || defined(ESP8266)
327+
/* Known to have networking available. */
328+
#else
329+
#define NO_WOLFSSL_CLIENT
330+
#define NO_WOLFSSL_SERVER
331+
#define WOLFCRYPT_ONLY
332+
#define NO_TLS
333+
#endif
334+
318335
#if defined(__AVR__)
336+
#define WOLFSSL_USER_IO
319337
#define WOLFSSL_NO_SOCK
320338
#define NO_WRITEV
321339
#elif defined(__arm__)

0 commit comments

Comments
 (0)