Remove callbacks
This commit is contained in:
parent
7ffbe0604c
commit
48675b0361
1 changed files with 22 additions and 95 deletions
|
@ -6,6 +6,7 @@
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
#include "ESP8266WiFi.h"
|
#include "ESP8266WiFi.h"
|
||||||
|
#define LED 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "Firewall.hpp"
|
#include "Firewall.hpp"
|
||||||
|
@ -16,107 +17,33 @@ fw::API *firewallApi;
|
||||||
|
|
||||||
WiFiServer wifiServer(80);
|
WiFiServer wifiServer(80);
|
||||||
|
|
||||||
typedef struct
|
void toggleLED()
|
||||||
{
|
{
|
||||||
unsigned frame_ctrl : 16;
|
if (digitalRead(LED) == LOW)
|
||||||
unsigned duration_id : 16;
|
digitalWrite(LED, HIGH);
|
||||||
uint8_t addr1[6]; /* receiver address */
|
else
|
||||||
uint8_t addr2[6]; /* sender address */
|
digitalWrite(LED, LOW);
|
||||||
uint8_t addr3[6]; /* filtering address */
|
|
||||||
unsigned sequence_ctrl : 16;
|
|
||||||
uint8_t addr4[6]; /* optional */
|
|
||||||
} wifi_ieee80211_mac_hdr_t;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
wifi_ieee80211_mac_hdr_t hdr;
|
|
||||||
uint8_t payload[0]; /* network data ended with 4 bytes csum (CRC32) */
|
|
||||||
} wifi_ieee80211_packet_t;
|
|
||||||
|
|
||||||
void connectToWifi()
|
|
||||||
{
|
|
||||||
WiFi.begin(ssid, psk);
|
|
||||||
while (WiFi.status() != WL_CONNECTED)
|
|
||||||
{
|
|
||||||
delay(200);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void handle_wifi_events(WiFiEvent_t event, WiFiEventInfo_t info)
|
|
||||||
{
|
|
||||||
Serial.print("[WiFi] ");
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_START:
|
|
||||||
Serial.printf("Attempting to connect to WPA SSID: %s\n", ssid);
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
|
|
||||||
Serial.println("connected");
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
|
||||||
Serial.println("disconnected");
|
|
||||||
break;
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
|
||||||
Serial.print("IP address: ");
|
|
||||||
Serial.println(WiFi.localIP());
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Serial.println(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *wifi_sniffer_packet_type2str(wifi_promiscuous_pkt_type_t type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case WIFI_PKT_DATA:
|
|
||||||
return "DATA";
|
|
||||||
default:
|
|
||||||
case WIFI_PKT_MISC:
|
|
||||||
return "MISC";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type)
|
|
||||||
{
|
|
||||||
if (type != WIFI_PKT_MGMT)
|
|
||||||
return;
|
|
||||||
|
|
||||||
const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buff;
|
|
||||||
const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)ppkt->payload;
|
|
||||||
const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr;
|
|
||||||
|
|
||||||
printf("PACKET TYPE=%s, CHAN=%02d, RSSI=%02d,"
|
|
||||||
" ADDR1=%02x:%02x:%02x:%02x:%02x:%02x,"
|
|
||||||
" ADDR2=%02x:%02x:%02x:%02x:%02x:%02x,"
|
|
||||||
" ADDR3=%02x:%02x:%02x:%02x:%02x:%02x\n",
|
|
||||||
wifi_sniffer_packet_type2str(type),
|
|
||||||
ppkt->rx_ctrl.channel,
|
|
||||||
ppkt->rx_ctrl.rssi,
|
|
||||||
/* ADDR1 */
|
|
||||||
hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
|
|
||||||
hdr->addr1[3], hdr->addr1[4], hdr->addr1[5],
|
|
||||||
/* ADDR2 */
|
|
||||||
hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
|
|
||||||
hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
|
|
||||||
/* ADDR3 */
|
|
||||||
hdr->addr3[0], hdr->addr3[1], hdr->addr3[2],
|
|
||||||
hdr->addr3[3], hdr->addr3[4], hdr->addr3[5]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup_wifi()
|
|
||||||
{
|
|
||||||
WiFi.mode(WIFI_STA);
|
|
||||||
WiFi.onEvent(handle_wifi_events, ARDUINO_EVENT_MAX);
|
|
||||||
connectToWifi();
|
|
||||||
esp_wifi_set_promiscuous(true);
|
|
||||||
esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
|
#ifdef ESP8266
|
||||||
|
pinMode(LED, OUTPUT);
|
||||||
|
#endif
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
setup_wifi();
|
Serial.println();
|
||||||
|
WiFi.begin(ssid, psk);
|
||||||
|
while (!WiFi.isConnected())
|
||||||
|
{
|
||||||
|
#ifdef ESP8266
|
||||||
|
toggleLED();
|
||||||
|
#endif
|
||||||
|
Serial.print(".");
|
||||||
|
delay(200);
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("[WiFi] IP: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
firewall = new fw::Firewall();
|
firewall = new fw::Firewall();
|
||||||
firewallApi = new fw::API(firewall, cert, key, username, password);
|
firewallApi = new fw::API(firewall, cert, key, username, password);
|
||||||
wifiServer.begin();
|
wifiServer.begin();
|
||||||
|
|
Reference in a new issue