скрытое меню

HTTP server raw (проект для скачивания)

Выкладываю вымученный проект на Atollic True Studio. Задача была реализовать HTTP сервер и он таки получился. Первый опыт использования LWIP вызвал неподдельное желание наконец-то изучить и понять какие и зачем ethernet пакеты бегают по сети.

LWIP пробовали двух версий 1.4.1 и 2.1.2 . Преемственность названий и логики работы сохраняется . Просто добавляются реализации новых сервисов.

Установка значения в контроллере

Посылаем GET запрос контроллеру 192.168.7.1/ctl.cgi?par1=val1

Контроллер получает и отрабатывает по следующему пути функции :

main()
usb_polling() [my_app.c] // это наш файл
//перенаправляет поток ethernet <-> usb
  ethernet_input() [ethernet.c]
    ip4_input() [ip4.c]
      tcp_input() [at tcp_in.c]
        altcp_tcp_recv() [altcp_tcp.c]
          http_recv() [httpd.c]
            http_parse_request() [httpd.c]
              http_find_file() [httpd.c] // ctl.cgi
                http_init_file() [httpd.c] // выделение ?par1=val1 
                // и передача на обработку
                  httpd_cgi_handler() [cgi_ssi.c] // это наш обработчик
                  // здесь мы сохраняем во flash AT45 пару  par1=val1 
             http_send() // отдаем контент по шаблону
                 

Вот так примерно выглядит наш http сервер. Мы можем менять настройки контроллера STM32 через http GET запросы, что очень удобно :

фотка 1

По идеалогии LWIP мы сами подключаем необходимые файлы к нашему http серверу. Например как аналог JQuery у нас используется файл zepto.min.js (Zepto v1.1.6) . Все эти файлы надо сначала закомпилировать в выходной файл fsdata.c.

Файлы для скачивания