1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| /\* \* http\_user\_hander.c \* \* Created on: 2022年7月15日 \* Author: jenson \*/
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "httpserver/httpUtil.h" #include "http\_user\_handler.h" #include "wizchip\_conf.h" #include "main.h"
void make\_json\_netinfo(uint8\_t \*buf, uint16\_t \*len);
int8\_t set\_diostate(uint8\_t \*uri);
// GET请求 uint8\_t predefined\_get\_cgi\_processor(uint8\_t \*uri_name, uint8\_t \*buf, uint16\_t \*len) { uint8\_t ret = 1; // ret = 1 means 'uri\_name' matched uint8\_t cgibuf[14] = { 0, }; int8\_t cgi_dio = -1; int8\_t cgi_ain = -1;
uint8\_t i;
if (strcmp((const char\*) uri_name, "get\_netinfo.cgi") == 0) { make\_json\_netinfo(buf, len); }
return ret; }
// POST请求 uint8\_t predefined\_set\_cgi\_processor(uint8\_t \*uri_name, uint8\_t \*uri, uint8\_t \*buf, uint16\_t \*len) { uint8\_t ret = 1; // ret = '1' means 'uri\_name' matched uint8\_t val = 0;
if (strcmp((const char\*) uri_name, "set\_diostate.cgi") == 0) { val = set\_diostate(uri); \*len = sprintf((char\*) buf, "%d", val); } else { ret = 0; }
return ret; }
void make\_json\_netinfo(uint8\_t \*buf, uint16\_t \*len) { wiz_NetInfo netinfo; ctlnetwork(CN_GET_NETINFO, (void\*) &netinfo);
// DHCP: 1 - Static, 2 - DHCP \*len = sprintf((char\*) buf, "NetinfoCallback({\"mac\":\"%.2X:%.2X:%.2X:%.2X:%.2X:%.2X\",\ \"ip\":\"%d.%d.%d.%d\",\ \"gw\":\"%d.%d.%d.%d\",\ \"sn\":\"%d.%d.%d.%d\",\ \"dns\":\"%d.%d.%d.%d\",\ \"dhcp\":\"%d\"\ });", netinfo.mac[0], netinfo.mac[1], netinfo.mac[2], netinfo.mac[3], netinfo.mac[4], netinfo.mac[5], netinfo.ip[0], netinfo.ip[1], netinfo.ip[2], netinfo.ip[3], netinfo.gw[0], netinfo.gw[1], netinfo.gw[2], netinfo.gw[3], netinfo.sn[0], netinfo.sn[1], netinfo.sn[2], netinfo.sn[3], netinfo.dns[0], netinfo.dns[1], netinfo.dns[2], netinfo.dns[3], netinfo.dhcp); }
#define LED1 0x01 #define LED2 0x02 #define LED3 0x03 #define LED4 0x04 int8\_t set\_diostate(uint8\_t \*uri) { uint8\_t \*param; uint8\_t pin = 0, val = 0;
if ((param = get\_http\_param\_value((char\*) uri, "pin"))) { pin = (uint8\_t) ATOI(param, 10); if (pin > 15) return -1;
if ((param = get\_http\_param\_value((char\*) uri, "val"))) { val = (uint8\_t) ATOI(param, 10); if (val > On) val = On; } printf("led %d,state = %d\r\n", pin, val); switch (pin) { case LED1: HAL\_GPIO\_WritePin(LED1_GPIO_Port, LED1_Pin, val); break; case LED2: HAL\_GPIO\_WritePin(LED2_GPIO_Port, LED2_Pin, val); break; case LED3: HAL\_GPIO\_WritePin(LED3_GPIO_Port, LED3_Pin, val); break; case LED4: HAL\_GPIO\_WritePin(LED4_GPIO_Port, LED4_Pin, val); break; } }
return pin; }
|