Size: a a a

ESP8266 & ESP32 [RU]

2021 May 18

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Посмотрите как во фриртос статические очереди, к примеру, создаются. Или статическое что угодно
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Да
источник

AF

Alexey D. Filimonov ... in ESP8266 & ESP32 [RU]
Спасибо
источник

N

NoiZZZy in ESP8266 & ESP32 [RU]
Всем привет. Можно ли использовать esp8266 как wifi адаптер для ноутбука?
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
всё, блин, кажись я таки разобрался в чём было дело с клиентскими хттп запросами, от чего зависали
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
вот типичный кусок из примера как должен исполняться асинхронный запрос, думаю, что синхронный внутри похоже устроен:
    while (1) {
       err = esp_http_client_perform(client);
       if (err != ESP_ERR_HTTP_EAGAIN) {
           break;
       }
   }
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
и вот внезапно этот цикл может стать бесконечным. просто постоянно возвращается ESP_ERR_HTTP_EAGAIN и всё тут
источник

SZ

Slava Zagaynov in ESP8266 & ESP32 [RU]
while (1) {

так только мудаки делают
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
тебе ссылку на кусок esp-idf дать?
источник

SZ

Slava Zagaynov in ESP8266 & ESP32 [RU]
нет, сочувствую тебе, сколько времени ты потерял?
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
ну хз, несколько вечеров
источник

SZ

Slava Zagaynov in ESP8266 & ESP32 [RU]
https://github.com/m5stack/M5EPD

смотрите какая лялька появилась, но цена 😭
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
вот кусок из компонента, который, скорее всего, некорректный для моего случая:
                if ((err = esp_http_client_connect(client)) != ESP_OK) {
                   if (client->is_async && err == ESP_ERR_HTTP_CONNECTING) {
                       return ESP_ERR_HTTP_EAGAIN;
                   }
                   return err;
               }
источник

SZ

Slava Zagaynov in ESP8266 & ESP32 [RU]
ну и как таких программистов называть?
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
client->is_async && err == ESP_ERR_HTTP_CONNECTING — тут, скорее всего, неверная обработка ошибки
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
а вообще, было бы правильно пользоваться параметром таймаута на операцию то...
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
я однажды плавающий баг в программе 6 недель искал. бывает...
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
и, кстати, фишку, изза которой я его искал, исправили в стандарте STL после с++11
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
короче, пример пока что поменял на:

   struct timeval now;
   gettimeofday(&now, 0);
   uint64_t ustart = now.tv_sec * 1000 + now.tv_usec / 1000;
   uint64_t unow = ustart;
   while (unow < ustart + 5000) {
       err = esp_http_client_perform(client);
       if (err != ESP_ERR_HTTP_EAGAIN) {
           break;
       }
       gettimeofday(&now, 0);
       unow = now.tv_sec * 1000 + now.tv_usec / 1000;
   }
источник

AP

Anton Petrusevich in ESP8266 & ESP32 [RU]
но вот щас я реально подзадолбался ловить, баг вылазит произвольно, иногда спустя сутки, хотя запросы делаются ежеминутно
источник