Основная беда у ESP8266 для программистов в том, что её функции в SDK делают что-то не то, для чего предназначены. Например – если написано что это deep-sleep, то оно закрывает все соединения, отключает WiFi, записав конфигурацию, делает паузу до исполнения в 100 мс для перехода в deep-sleep. Вот нафига мне её пауза и закрытие соединений, когда они уже давно закрыты? Т.е. у вас нет выбора – он определен заранее и решениями для телепузиков, для их задачи игры в мигание светодиодом, с пособием по уходу за детьми. SDK от Ameba – это не Arduino. Действие функций в нем ограничено основным действом. При этом имеется масса параметров, которые задаются системе для решения конкретных задач. Если вам надо запустить CPU исполнять NOP на всю катушку, да на самом высоком приоритете и со всеми включенными встроенными контролерами, и жрать за 60 мА – в режиме всегда готов, как пыОнер – укажите это системе динамического управления PMU и CPU, да RTOS. Она же не знает что вам от неё надо, а вы запихали свой код именно в такой тред
Так же и WiFi – включить дрова WiFi можно и без LwIP и подавать отдельные команды, а можно и комплексно, воспользовавшись нашлепками из функций созданных в SDK для MBED. Можно включить соединение и тут-же дать команду перехода в режим малого потребления. При этом никто протирать дырки в Flash, сохраняя какие-то настройки в кубышку на будущее, как это делается в ESP8266 по уходу за детьми не будет. Для этого есть свои callback. В этом отличия профессиональной системы и игры для детского сада – Arduino.
В вашем представленном коде используются функции, аналогичные Arduino – созданные нашлепки для MBED. Что вы от них и с помощью их хотите получить, если пока ни “бэ” ни “мэ” даже в RTOS?
Примеров кода привести не могу – забросил уже все эти устаревшие чипы в музей.
PS: Откладывайте RTL в помойку, возвращайтесь к игре на ESP8266, да поспамите в теме Многопоточнось... Там у вас лучше получается