Skip to content

Commit

Permalink
ARP poisoning and fixes
Browse files Browse the repository at this point in the history
Fix for brighness control pr3y#541
Fix fo theme colors and redstripe messages with white colors pr3y#523

Added Arp Poisoning (all clients), Arp spoof (one client) and Arpsoof Mitm (POC, need testing)
  • Loading branch information
bmorcelli committed Dec 10, 2024
1 parent 2bd522a commit 6493593
Show file tree
Hide file tree
Showing 22 changed files with 371 additions and 56 deletions.
14 changes: 12 additions & 2 deletions src/core/display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,8 @@ int loopOptions(std::vector<Option>& options, bool bright, bool submenu, String
if(submenu) drawSubmenu(index, options, subText);
else coord=drawOptions(index, options, bruceConfig.priColor, bruceConfig.bgColor);
if(bright){
setBrightness(String(options[index].label.c_str()).toInt(),false);

This comment has been minimized.

Copy link
@rennancockles

rennancockles Dec 10, 2024

acho que aqui ao invés de validar pelo index seria melhor tentar validar pelo valor, pq se no futuro adicionar outra opção de bright vai quebrar aqui. De repente vale tentar ver se String(options[index].label.c_str()).toInt() for um int válido e maior que 0 usa ele, caso contrário usa o bruceConfig.bright

if(index!=5) setBrightness(String(options[index].label.c_str()).toInt(),false);
else setBrightness(bruceConfig.bright,false);
}
redraw=false;
delay(REDRAW_DELAY);
Expand Down Expand Up @@ -1076,7 +1077,16 @@ bool showGIF(FS fs, String filename, int x, int y) {
return false;
}


/***************************************************************************************
** Function name: getComplementaryColor2
** Description: Get simple complementary color in RGB565 format
***************************************************************************************/
uint16_t getComplementaryColor2(uint16_t color) {
int r = 31-((color >> 11) & 0x1F);
int g = 63-((color >> 5) & 0x3F);
int b = 31-(color & 0x1F);
return (r<<11) | (g<<5) | b;
}
/***************************************************************************************
** Function name: getComplementaryColor
** Description: Get complementary color in RGB565 format
Expand Down
1 change: 1 addition & 0 deletions src/core/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ bool showGIF(FS fs,String filename, int x=0, int y=0);
bool showJpeg(FS fs,String filename, int x=0, int y=0, bool center = false);

uint16_t getComplementaryColor(uint16_t color);
uint16_t getComplementaryColor2(uint16_t color);
uint16_t getColorVariation(uint16_t color, int delta = 10, int direction = 0);

void resetTftDisplay(int x = 0, int y = 0, uint16_t fc = bruceConfig.priColor, int size = FM, uint16_t bg = bruceConfig.bgColor, uint16_t screen = bruceConfig.bgColor);
Expand Down
2 changes: 1 addition & 1 deletion src/core/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void setBrightnessMenu() {
{"50 %", [=]() { setBrightness(50); }, bruceConfig.bright == 50 },
{"25 %", [=]() { setBrightness(25); }, bruceConfig.bright == 25 },
{" 1 %", [=]() { setBrightness(1); }, bruceConfig.bright == 1 },
{"Main Menu", [=]() { backToMenu(); }},
{"Main Menu", [=]() { backToMenu(); }}, // this one bugs the brightness selection
};
delay(200);
loopOptions(options, true,false,"",idx);
Expand Down
2 changes: 1 addition & 1 deletion src/core/wifi_common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ bool wifiConnectMenu(wifi_mode_t mode)
case WIFI_STA: // station mode
int nets;
WiFi.mode(WIFI_MODE_STA);
displayRedStripe("Scanning..", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Scanning..", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
nets = WiFi.scanNetworks();
options = {};
for (int i = 0; i < nets; i++) {
Expand Down
10 changes: 5 additions & 5 deletions src/modules/ble/bad_ble.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,19 +284,19 @@ void ble_setup() {
if (!kbChosen_ble) Kble.begin(); // starts the KeyboardLayout_en_US as default if nothing had beed chosen (cancel selection)
Ask_for_restart=1; // arm the flag
first_time=false;
displayRedStripe("Waiting Victim",TFT_WHITE, bruceConfig.priColor);

This comment has been minimized.

Copy link
@rennancockles

rennancockles Dec 10, 2024

acho que vale a pena fazer um novo displaySomething com essas cores fixas já e só passar o texto.

displayRedStripe("Waiting Victim",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
}
while (!Kble.isConnected() && !checkEscPress());

if(Kble.isConnected()) {
BLEConnected=true;
displayRedStripe("Preparing",TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Preparing",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
delay(1000);
displayWarning(String(BTN_ALIAS) + " to deploy", true);
delay(200);
key_input_ble(*fs, bad_script);

displayRedStripe("Payload Sent",TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Payload Sent",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
checkSelPress();
while (!checkSelPress()) {
// nothing here, just to hold the screen press Ok of M5.
Expand All @@ -321,7 +321,7 @@ void ble_MediaCommands() {

if(!Kble.isConnected()) Kble.begin();

displayRedStripe("Pairing...",TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Pairing...",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);

while (!Kble.isConnected() && !checkEscPress());

Expand Down Expand Up @@ -380,7 +380,7 @@ void ble_keyboard() {
if (!kbChosen_ble) Kble.begin(); // starts the KeyboardLayout_en_US as default if nothing had beed chosen (cancel selection)
Ask_for_restart=1;
Reconnect:
displayRedStripe("Pair to start",TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Pair to start",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);

while (!Kble.isConnected() && !checkEscPress()); // loop to wait for the connection callback or ESC

Expand Down
2 changes: 1 addition & 1 deletion src/modules/ble/ble_common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ void ble_scan_setup()

void ble_scan()
{
displayRedStripe("Scanning..", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Scanning..", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);

options = { };
ble_scan_setup();
Expand Down
10 changes: 5 additions & 5 deletions src/modules/ble/ble_spam.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -451,23 +451,23 @@ void aj_adv(int ble_choice){

switch(ble_choice){
case 0: // Applejuice
displayRedStripe("iOS Spam (" + String(count) + ")",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("iOS Spam (" + String(count) + ")",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
executeSpam(Apple);
break;
case 1: // SwiftPair
displayRedStripe("SwiftPair (" + String(count) + ")",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("SwiftPair (" + String(count) + ")",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
executeSpam(Microsoft);
break;
case 2: // Samsung
displayRedStripe("Samsung (" + String(count) + ")",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Samsung (" + String(count) + ")",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
executeSpam(Samsung);
break;
case 3: // Android
displayRedStripe("Android (" + String(count) + ")",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Android (" + String(count) + ")",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
executeSpam(Google);
break;
case 4: // Tutti-frutti
displayRedStripe("Spam All (" + String(count) + ")",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Spam All (" + String(count) + ")",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
if(mael == 0) executeSpam(Google);
if(mael == 1) executeSpam(Samsung);
if(mael == 2) executeSpam(Microsoft);
Expand Down
12 changes: 6 additions & 6 deletions src/modules/fm/fm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ uint16_t fm_scan() {
min_noise = radio.currNoiseLevel;

tft.fillScreen(bruceConfig.bgColor);
displayRedStripe("Scanning...", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Scanning...", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
for (f=8750; f<10800; f+=10) {
Serial.print("Measuring "); Serial.print(f); Serial.print("...");
radio.readTuneMeasure(f);
Expand All @@ -51,7 +51,7 @@ uint16_t fm_scan() {

sprintf(display_freq, "Found %d MHz", freq_candidate);
tft.fillScreen(bruceConfig.bgColor);
displayRedStripe(display_freq, TFT_WHITE, bruceConfig.priColor);
displayRedStripe(display_freq, getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
while(!checkEscPress() && !checkSelPress()) {
delay(100);
}
Expand All @@ -64,7 +64,7 @@ void fm_options_frq(uint16_t f_min, bool reserved) {
char f_str[5];
uint16_t f_max;
// Choose between scan for best freq or select freq
displayRedStripe("Choose frequency", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Choose frequency", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
delay(1000);

// Handle min / max frequency
Expand Down Expand Up @@ -96,7 +96,7 @@ void fm_options_digit(uint16_t f_min, bool reserved) {
char f_str[5];
uint16_t f_max;
// Choose between scan for best freq or select freq
displayRedStripe("Choose digit", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Choose digit", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
delay(1000);

// Handle min / max frequency
Expand Down Expand Up @@ -133,7 +133,7 @@ void fm_options_digit(uint16_t f_min, bool reserved) {
void fm_options(uint16_t f_min, uint16_t f_max, bool reserved) {
char f_str[5];
// Choose between scan for best freq or select freq
displayRedStripe("Choose tens", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Choose tens", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
delay(1000);

options = { };
Expand Down Expand Up @@ -229,7 +229,7 @@ bool fm_begin() {
if (!radio.begin()) { // begin with address 0x63 (CS high default)
tft.fillScreen(bruceConfig.bgColor);
Serial.println("Cannot find radio");
displayRedStripe("Cannot find radio", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Cannot find radio", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
while(!checkEscPress() && !checkSelPress()) {
delay(100);
}
Expand Down
2 changes: 1 addition & 1 deletion src/modules/gps/gps_tracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ bool GPSTracker::begin_gps() {
end();
return false;
}
displayRedStripe("Waiting GPS: " + String(count)+ "s", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Waiting GPS: " + String(count)+ "s", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
count++;
delay(1000);
}
Expand Down
2 changes: 1 addition & 1 deletion src/modules/gps/wardriving.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ bool Wardriving::begin_gps() {
end();
return false;
}
displayRedStripe("Waiting GPS: " + String(count)+ "s", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Waiting GPS: " + String(count)+ "s", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
count++;
delay(1000);
}
Expand Down
6 changes: 3 additions & 3 deletions src/modules/ir/TV-B-Gone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ void StartTvBGone() {
if (checkSelPress()) // Pause TV-B-Gone
{
while (checkSelPress()) yield();
displayRedStripe("Paused", TFT_WHITE, bruceConfig.bgColor);
displayRedStripe("Paused", getComplementaryColor2(bruceConfig.priColor), bruceConfig.bgColor);

while (!checkSelPress()){ // If Presses Select again, continues
if(checkEscPress()) {
Expand All @@ -181,15 +181,15 @@ void StartTvBGone() {
yield();
}
if (endingEarly) break; // Cancels TV-B-Gone
displayRedStripe("Running, Wait", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Running, Wait", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
}

} //end of POWER code for loop


if (endingEarly==false)
{
displayRedStripe("All codes sent!", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("All codes sent!", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
//pause for ~1.3 sec, then flash the visible LED 8 times to indicate that we're done
delay_ten_us(MAX_WAIT_TIME); // wait 655.350ms
delay_ten_us(MAX_WAIT_TIME); // wait 655.350ms
Expand Down
20 changes: 10 additions & 10 deletions src/modules/ir/custom_ir.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ bool txIrFile(FS *fs, String filepath) {
if (checkSelPress()) // Pause TV-B-Gone
{
while (checkSelPress()) yield();
displayRedStripe("Paused", TFT_WHITE, bruceConfig.bgColor);
displayRedStripe("Paused", getComplementaryColor2(bruceConfig.priColor), bruceConfig.bgColor);

while (!checkSelPress()){ // If Presses Select again, continues
if(checkEscPress()) {
Expand All @@ -211,7 +211,7 @@ bool txIrFile(FS *fs, String filepath) {
yield();
}
if (endingEarly) break; // Cancels custom IR Spam
displayRedStripe("Running, Wait", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Running, Wait", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
}
} // end while file has lines to process
databaseFile.close();
Expand Down Expand Up @@ -350,7 +350,7 @@ void otherIRcodes() {
void sendNECCommand(String address, String command) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint8_t first_zero_byte_pos = address.indexOf("00", 2);
if(first_zero_byte_pos!=-1) address = address.substring(0, first_zero_byte_pos);
first_zero_byte_pos = command.indexOf("00", 2);
Expand All @@ -367,7 +367,7 @@ void sendNECCommand(String address, String command) {
void sendRC5Command(String address, String command) {
IRsend irsend(bruceConfig.irTx,true); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint8_t addressValue = strtoul(address.substring(0,2).c_str(), nullptr, 16);
uint8_t commandValue = strtoul(command.substring(0,2).c_str(), nullptr, 16);
uint16_t data = irsend.encodeRC5(addressValue, commandValue);
Expand All @@ -379,7 +379,7 @@ void sendRC5Command(String address, String command) {
void sendRC6Command(String address, String command) {
IRsend irsend(bruceConfig.irTx,true); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint32_t addressValue = strtoul(address.c_str(), nullptr, 16);
uint32_t commandValue = strtoul(command.c_str(), nullptr, 16);
uint64_t data = irsend.encodeRC6(addressValue, commandValue);
Expand All @@ -391,7 +391,7 @@ void sendRC6Command(String address, String command) {
void sendSamsungCommand(String address, String command) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
//uint64_t data = ((uint64_t)strtoul(address.c_str(), nullptr, 16) << 32) | strtoul(command.c_str(), nullptr, 16);
uint32_t addressValue = strtoul(address.c_str(), nullptr, 16);
uint32_t commandValue = strtoul(command.c_str(), nullptr, 16);
Expand All @@ -406,7 +406,7 @@ void sendSamsungCommand(String address, String command) {
void sendSonyCommand(String address, String command) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint16_t commandValue = strtoul(command.substring(0,2).c_str(), nullptr, 16);
uint16_t addressValue = strtoul(address.substring(0,2).c_str(), nullptr, 16);
uint16_t addressValue2 = strtoul(address.substring(3,6).c_str(), nullptr, 16);
Expand All @@ -422,7 +422,7 @@ void sendSonyCommand(String address, String command) {
void sendPanasonicCommand(String address, String command) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint8_t first_zero_byte_pos = address.indexOf("00", 2);
if(first_zero_byte_pos!=-1) address = address.substring(0, first_zero_byte_pos);
// needs to invert endianess
Expand Down Expand Up @@ -455,7 +455,7 @@ bool sendDecodedCommand(String protocol, String value, String bits) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
bool success = false;
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);

if(hasACState(type)) {
// need to send the state (still passed from value)
Expand Down Expand Up @@ -488,7 +488,7 @@ bool sendDecodedCommand(String protocol, String value, String bits) {
void sendRawCommand(uint16_t frequency, String rawData) {
IRsend irsend(bruceConfig.irTx); // Set the GPIO to be used to sending the message.
irsend.begin();
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
uint16_t dataBuffer[SAFE_STACK_BUFFER_SIZE/2]; // MEMO: stack overflow with full buffer size
uint16_t count = 0;

Expand Down
6 changes: 3 additions & 3 deletions src/modules/others/bad_usb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ void usb_setup() {
mySerial.write(0x00);
while(mySerial.available()<=0) {
if(mySerial.available()<=0) {
displayRedStripe("CH9329 -> USB",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("CH9329 -> USB",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
delay(200);
mySerial.write(0x00);
} else break;
Expand All @@ -309,15 +309,15 @@ void usb_setup() {
}
#endif

displayRedStripe("Preparing",TFT_WHITE, bruceConfig.priColor); // Time to Computer or device recognize the USB HID
displayRedStripe("Preparing",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor); // Time to Computer or device recognize the USB HID
delay(2000);
first_time=false;
}
displayWarning(String(BTN_ALIAS) + " to deploy", true);
delay(200);
key_input(*fs, bad_script);

displayRedStripe("Payload Sent",TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Payload Sent",getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
checkSelPress();
while (!checkSelPress()) {
// nothing here, just to hold the screen press Ok of M5.
Expand Down
2 changes: 1 addition & 1 deletion src/modules/pwnagotchi/spam.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ void send_pwnagotchi_beacon_main() {

// Check if file was loaded
if (num_faces == 0 or num_names == 0) {
displayRedStripe("No config file", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("No config file", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
delay(1000);
return;
}
Expand Down
10 changes: 5 additions & 5 deletions src/modules/rf/rf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,7 @@ void sendRfCommand(struct RfCodes rfcode) {
transmittimings[transmittimings_idx] = 0; // termination

// send rf command
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
RCSwitch_RAW_send(transmittimings);
free(transmittimings);
}
Expand All @@ -1138,7 +1138,7 @@ void sendRfCommand(struct RfCodes rfcode) {
Serial.println(pulse);
Serial.println(rcswitch_protocol_no);
* */
displayRedStripe("Sending..",TFT_WHITE,bruceConfig.priColor);
displayRedStripe("Sending..",getComplementaryColor2(bruceConfig.priColor),bruceConfig.priColor);
RCSwitch_send(data_val, bits, pulse, rcswitch_protocol_no, repeat);
}
else if(protocol.startsWith("Princeton")) {
Expand Down Expand Up @@ -1612,10 +1612,10 @@ void rf_scan_copy() {
}

if (bruceConfig.rfFxdFreq) {
displayRedStripe("Scan freq set to " + String(bruceConfig.rfFreq), TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Scan freq set to " + String(bruceConfig.rfFreq), getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
}
else {
displayRedStripe("Range set to " + String(sz_range[bruceConfig.rfScanRange]), TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Range set to " + String(sz_range[bruceConfig.rfScanRange]), getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);
}
deinitRfModule();
delay(1500);
Expand All @@ -1637,7 +1637,7 @@ void rf_scan_copy() {
loopOptions(options);
if (option == 1) {
bruceConfig.setRfFreq(found_freq);
displayRedStripe("Set to " + String(found_freq) + " MHz", TFT_WHITE, bruceConfig.priColor);
displayRedStripe("Set to " + String(found_freq) + " MHz", getComplementaryColor2(bruceConfig.priColor), bruceConfig.priColor);

deinitRfModule();
delay(1500);
Expand Down
Loading

0 comments on commit 6493593

Please sign in to comment.