Max
Он не гарантирует, что совсем никаких оптимизацией нет. Но он гарантирует, что все записи сделанные под мутексом в одном потоке, будут видны в другом. (я даже доказал это ссылками на memory model). Что касается оптимизаций: игры с компилятором в "угадай, что оптимизируется" никуда не приводят, потому что вы никогда не можете знать все оптимизации, которые умеет компилятор. В стандарте написано, что может вернуть чтение переменной, и при каких условиях оно гарантированно может вернуть только одно "последнее" записанное значение. Этим и надо пользоваться, а думать, что компилятор оптимизирует - это уже гадание.
во-первых у нас тут не stdc++, а bare metal С.
во-вторых ничего "взятие семафора в РТОС" не гарантирует, кроме как того, что написано в апи к этому РТОС.
во-третьих https://en.cppreference.com/w/c/language/volatile (читаем про observable side effects). happens-before тут ни к чему
Max
хз как там в плюсах с 11го стандарта и далее, но в С модель строго однопоточная. компилятор не понимал, не понимает, и не будет понимать что такое потоки
Just a
Max
Just a
не будет. и я против. FreeRTOS на С и пускай такой и будет.
надо гарантии - пилите плз порт std под FreeRTOS, сообщите мне, я радостью воспользуюсь.
В тулчеине для esp32 есть std::mutex и даже std::thread, работающие поверх pthreads, которые в свою очередь поверх FreeRTOS. Слой совместимости с pthreads вот: https://github.com/espressif/esp-idf/blob/master/components/pthread/pthread.c . И забавно, что, в функциях блокировок/разблокировок никаких синхронизирующих действий, кроме взятия/освобождения семафора, там не делается. Так что, возможно, что и семафор FreeRTOS де-факто даёт такие гарантии.
Max
вот кстати, не очень хороший код для демонстрации:
https://godbolt.org/z/4djTG6cjP
кстати, камень в мою сторону - если таки инициализировать поток (на none-eabi pthread_create() нет, на x86 видно), то С "понимает", что коллбек дернут, volatile не нужен.
Max
Max
Max
когда-то давно задавался вопросом, пришлось использовать куски IDF, с весьма печальным результатом. остановился на использовании 8266 как модема
Max
Иосиф Давидович
Доброй ночи.
Посоветуйте девборд esp32.
Нужна плата с ufl и 2 ADC как можно меньшего размера.
Иосиф Давидович
Юрий
А, ufl, я подумал это что-то из периферии😁, тогда даже не знаю, модуль с камерой идёт с ними, но он не такой удобный
Иосиф Давидович
Спасибо большое.
По-ходу проще под себя девборду развести.
Юрий
Если важен размер, и нужно мало ног, то pico d4, я вчера кидал фото
Юрий
Вот ещё пушка, можно разъем допаять https://ae04.alicdn.com/kf/H540f95ea0c88466eb35130f6fb964ba5A/TTGO-T7-V1-5-Mini32-ESP32-WROVER-B-PSRAM-Wi-Fi-Bluetooth.jpg
Alians
Добрый, кто что скажет, что кроме MQTT можно использовать для датчиков без статического ip? Не то чтоб он мне не нравился но вдруг ещё есть какие-то практики передачи данных?
Max
Alians
Ну я имел ввиду статику на роутере.
Max
К этому тоже не имеет отношения
Max
Отправлять данные можно хоть по UDP, но популярнее всего MQTT. Либо кастомные протоколы. Есть ещё CoAP.
Max
Но ничего из этого не имеет отношения к статическому или динамическому айпи
Alians
Ну тогда перефразирую вопрос: каким самым простым способом получать удалённо данные с датчиков если нет белого статического ip на роутере к которому они подключенны? 😊
🤙🏻 ℙ𝔸𝕍𝔼𝕃
датчик - сервер - клиент
- Датчик открывает соединение до сервера и держит открытым
- Клиент справшивает у сервера
- Сервер у датчика
- Отдает клиенту
Y
Denisio
да, или просто раз в N секунд-минут высирает данные на сервер
Denisio
ddns как вариант
если датчик на GPRS/Edge - у него может не быть белого IP
Denisio
мобильные клиенты в 90% за NAT
Y
Denisio
зачем, если выше написано решение
Y
Либо сервер на vps со статикой
Alians
Ну вобщем бесплатный mqtt сервер рулит😁
Alians
Alians
Esp8266 с термометром и реле. В лесу. Без компа. Только микротик под боком.
Andy
Alians
Ну у меня скорее вопрос не по протоколу, а по реализации без собственного сервера. Есть несколько бесплатных учёток на mqtt серверах. Но вдруг есть варианты ещё. Видимо нет. Остается ждать ipv6 😔
Denisio
вот да, чотам ещо не завезли ipv6 в esp32 ?
Alians
Его ещё не завезли моему провайдеру вот это проблема.
Dmytro
Alians
А vpn через роутер? И с другой стороны всеровно нужен или сервер или белая статика
w
Либо тупо хостинг самый дешёвый с базой
w
И не волнует что там за адрес, какой нат - ничего не волнует
w
Я так есп32кам шлю фотки с принтера, таймлапс собирается на сервере и галерея есть
Y
w
w
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Dmytro
Alians
Что это за доминошки печатаются?
C
господа, подскажите в каком доке найти references на этот таймер?
C
в esp8266_non_os_sdk_api_reference_en.pdf не нашел ничего подобного
🤙🏻 ℙ𝔸𝕍𝔼𝕃
А прост погуглить?
Max
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Еще как вариант в саму либу заглянуть 💁
Max
Либо бутстрап сервер. Но я бы остановился на DNS
ddns тут уже советовали, ниже, я смотрю
Max
Перечитал дискуссию. Делать датчик сервером, который должен принимать подключение - изврат, простите. Это датчик должен инициировать подключение к серверу, а не наоборот
Иначе упираемся в NAT и все костыли перебора этих датчиков
Max
Это ж не модбас какой-то
Slava
Indr1x
Slava
CRM
Alians
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Alians
Опять же сервер нам нужен тогда.
Indr1x
Alians
Да но там ещё и реле есть. И им надо щёлкать.
🤙🏻 ℙ𝔸𝕍𝔼𝕃
🤙🏻 ℙ𝔸𝕍𝔼𝕃
У меня все заведено через HAP, и статических ip нет, все смотрится и щелкается в любое время откуда угодно💁
Alians
Хаба? Можно чуть подробнее или ссылку на почитать?
Alians
Ссылка битая но я понял что смотреть. Спасибо.