mirror of
https://github.com/jjshoots/RemoteIDSpoofer.git
synced 2026-01-13 15:37:06 +00:00
186 lines
3.2 KiB
C++
186 lines
3.2 KiB
C++
/* -*- tab-width: 2; mode: c; -*-
|
|
*
|
|
* C++ class for Arduino to function as a wrapper around opendroneid.
|
|
* This file has the ESP8266 specific code.
|
|
*
|
|
* Copyright (c) 2022, Steve Jack.
|
|
*
|
|
* Nov. '22: Split out from id_open.cpp.
|
|
*
|
|
* MIT licence.
|
|
*
|
|
* NOTES
|
|
*
|
|
*
|
|
*/
|
|
|
|
#define DIAGNOSTICS 0
|
|
|
|
//
|
|
|
|
#if defined(ARDUINO_ARCH_ESP8266)
|
|
|
|
#pragma GCC diagnostic warning "-Wunused-variable"
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include "id_open.h"
|
|
|
|
#if ID_OD_WIFI
|
|
|
|
#include <ESP8266WiFi.h>
|
|
|
|
extern "C" {
|
|
int wifi_send_pkt_freedom(uint8 *,int,bool);
|
|
}
|
|
|
|
#endif // WIFI
|
|
|
|
static Stream *Debug_Serial = NULL;
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
void construct2() {
|
|
|
|
return;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
void init2(char *ssid,int ssid_length,uint8_t *WiFi_mac_addr,uint8_t wifi_channel) {
|
|
|
|
char text[128];
|
|
|
|
text[0] = text[63] = 0;
|
|
|
|
#if DIAGNOSTICS
|
|
Debug_Serial = &Serial;
|
|
#endif
|
|
|
|
#if ID_OD_WIFI
|
|
|
|
softap_config wifi_config;
|
|
|
|
WiFi.mode(WIFI_OFF);
|
|
// WiFi.macAddress(WiFi_mac_addr);
|
|
|
|
WiFi.softAP(ssid,NULL,wifi_channel,false,0);
|
|
WiFi.setOutputPower(20.0);
|
|
|
|
wifi_softap_get_config(&wifi_config);
|
|
// wifi_config.beacon_interval = 1000; // Pass beacon_interval from id_open.cpp?
|
|
// wifi_softap_set_config(&wifi_config);
|
|
|
|
if (Debug_Serial) {
|
|
|
|
sprintf(text,"esp_read_mac(): %02x:%02x:%02x:%02x:%02x:%02x\r\n",
|
|
WiFi_mac_addr[0],WiFi_mac_addr[1],WiFi_mac_addr[2],
|
|
WiFi_mac_addr[3],WiFi_mac_addr[4],WiFi_mac_addr[5]);
|
|
Debug_Serial->print(text);
|
|
}
|
|
|
|
#endif // WIFI
|
|
|
|
return;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
uint8_t *capability() {
|
|
|
|
static uint8_t capa[2] = {0x11,0x00};
|
|
|
|
return capa;
|
|
}
|
|
|
|
//
|
|
|
|
int tag_rates(uint8_t *beacon_frame,int beacon_offset) {
|
|
|
|
beacon_frame[beacon_offset++] = 0x01;
|
|
beacon_frame[beacon_offset++] = 0x08;
|
|
beacon_frame[beacon_offset++] = 0x8b; // 5.5
|
|
beacon_frame[beacon_offset++] = 0x96; // 11
|
|
beacon_frame[beacon_offset++] = 0x82; // 1
|
|
beacon_frame[beacon_offset++] = 0x84; // 2
|
|
beacon_frame[beacon_offset++] = 0x0c; // 6
|
|
beacon_frame[beacon_offset++] = 0x18; // 12
|
|
beacon_frame[beacon_offset++] = 0x30; // 24
|
|
beacon_frame[beacon_offset++] = 0x60; // 48
|
|
|
|
return beacon_offset;
|
|
}
|
|
|
|
//
|
|
|
|
int tag_ext_rates(uint8_t *beacon_frame,int beacon_offset) {
|
|
|
|
beacon_frame[beacon_offset++] = 0x32;
|
|
beacon_frame[beacon_offset++] = 0x04;
|
|
beacon_frame[beacon_offset++] = 0x6c; // 54
|
|
beacon_frame[beacon_offset++] = 0x12; // 9
|
|
beacon_frame[beacon_offset++] = 0x24; // 18
|
|
beacon_frame[beacon_offset++] = 0x48; // 36
|
|
|
|
return beacon_offset;
|
|
}
|
|
|
|
//
|
|
|
|
int misc_tags(uint8_t *beacon_frame,int beacon_offset) {
|
|
|
|
// Espressif
|
|
beacon_frame[beacon_offset++] = 0xdd;
|
|
beacon_frame[beacon_offset++] = 0x09;
|
|
|
|
beacon_frame[beacon_offset++] = 0x18;
|
|
beacon_frame[beacon_offset++] = 0xfe;
|
|
beacon_frame[beacon_offset++] = 0x34;
|
|
beacon_frame[beacon_offset++] = 0x03;
|
|
beacon_frame[beacon_offset++] = 0x01;
|
|
beacon_frame[beacon_offset++] = 0x00;
|
|
beacon_frame[beacon_offset++] = 0x00;
|
|
beacon_frame[beacon_offset++] = 0x00;
|
|
beacon_frame[beacon_offset++] = 0x00;
|
|
|
|
return beacon_offset;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
int transmit_wifi2(uint8_t *buffer,int length) {
|
|
|
|
#if ID_OD_WIFI
|
|
|
|
if (length) {
|
|
wifi_send_pkt_freedom(buffer,length,1);
|
|
}
|
|
|
|
#endif
|
|
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
int transmit_ble2(uint8_t *ble_message,int length) {
|
|
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
#endif
|