Remove callbacks

This commit is contained in:
Florian Hoss 2022-07-21 18:01:46 +02:00
parent 7ffbe0604c
commit 48675b0361

View file

@ -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();