123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #include "lwip/opt.h"
- #include "lwip/arch.h"
- #include "lwip/api.h"
- #include "lwip/tcp.h"
- #include "http_server.h"
- #include "settings_api.h"
- #include "common_config.h"
- #include "commands_api.h"
- #include "bt_6701_settings.h"
- #ifdef PRINTF_STDLIB
- #include <stdio.h>
- #endif
- #ifdef PRINTF_CUSTOM
- #include "tinystdio.h"
- #endif
- #include <string.h>
- #include <stdlib.h>
- /**
- * @brief Обработчик http запросов
- */
- void TCP_ServerServe(struct netconn *conn)
- {
- struct netbuf *inbuf;
- char* buf;
- u16_t buflen;
- char value[20];
- uint8_t valueLen;
-
- netconn_recv(conn, &inbuf);
-
- if (inbuf != NULL)
- {
- if (netconn_err(conn) == ERR_OK)
- {
- netbuf_data(inbuf, (void**)&buf, &buflen);
-
- if (strncmp((char const *)buf, "GET /setMac.cgi", 15) == 0)
- {
- memset(value, 0, 20);
- GetParamValue(buf, "mac=", value, &valueLen);
-
- /* Проверяем флаг ожидания MAC адреса */
- if (macWaiting) {
- SETTINGS_SetMac(value);
- COM_SetTestState(T1OK);
- netconn_write(conn, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\nTrue", 47, NETCONN_NOCOPY);
- macIsInstalled = true;
- printf("SERNO OK\r\n");
- }
- else
- netconn_write(conn, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\nFalse", 48, NETCONN_NOCOPY);
-
- //file = fs_open("/STM32F4x7_files/ST.gif");
- //netconn_write(conn, (const unsigned char*)(file->data), (size_t)file->len, NETCONN_NOCOPY);
- //fs_close(file);
- }
- }
- }
- netconn_close(conn);
- netbuf_delete(inbuf);
- }
- /**
- * @brief TCP сервер
- */
- void vTaskTcpServer(void *param)
- {
- struct netconn *conn, *newconn;
- err_t err;
-
- conn = netconn_new(NETCONN_TCP);
-
- if (conn!= NULL)
- {
- err = netconn_bind(conn, NULL, 80);
-
- if (err == ERR_OK) {
- netconn_listen(conn);
- while(1) {
- netconn_accept(conn, &newconn);
- TCP_ServerServe(newconn);
- netconn_delete(newconn);
- }
- }
- }
- }
- /**
- * @brief Поиск значения по имени параметра
- * @retval None
- */
- uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen)
- {
- char *beginValue = 0;
- char *endValue = 0;
- int len = 0;
- char *strPtr = 0;
-
- strPtr = strstr(inStr, paramName);
-
- if (strPtr != 0)
- {
- beginValue = strpbrk(strPtr,"=");
- endValue = strpbrk(strPtr,"&");
- if (endValue == 0)
- endValue = strpbrk(strPtr," ");
- len = endValue - beginValue - 1;
- strncpy(paramValue, beginValue + 1, len);
- *endValue = '0';
- *beginValue = '0';
- *paramLen = len;
- return 1;
- }
- else
- {
- *paramLen = 0;
- return 0;
- }
- }
|