LED module
This commit is contained in:
parent
432297de9a
commit
6c842653c1
|
@ -814,7 +814,7 @@ void CLI::runCommand(String input) {
|
|||
// ===== STOP ===== //
|
||||
// stop [<mode>]
|
||||
else if (eqlsCMD(0, CLI_STOP)) {
|
||||
led.setMode(IDLE, true);
|
||||
led::setMode(IDLE, true);
|
||||
|
||||
if ((list->size() >= 2) && !(eqlsCMD(1, CLI_ALL))) {
|
||||
for (int i = 1; i < list->size(); i++) {
|
||||
|
@ -1098,7 +1098,7 @@ void CLI::runCommand(String input) {
|
|||
scan.update(); // run scan
|
||||
attack.update(); // run attacks
|
||||
ssids.update(); // run random mode, if enabled
|
||||
led.update(); // update LED color
|
||||
led::update(); // update LED color
|
||||
|
||||
// auto-save
|
||||
if (settings::getAutosaveSettings().enabled && (currentTime - autosaveTime > settings::getAutosaveSettings().time)) {
|
||||
|
|
|
@ -14,9 +14,7 @@ extern "C" {
|
|||
#include "Scan.h"
|
||||
#include "Attack.h"
|
||||
#include "DisplayUI.h"
|
||||
#include "LED.h"
|
||||
|
||||
extern LED led;
|
||||
#include "led.h"
|
||||
|
||||
extern Names names;
|
||||
extern SSIDs ssids;
|
||||
|
|
|
@ -1,119 +1,135 @@
|
|||
#include "LED.h"
|
||||
/*
|
||||
Copyright (c) 2020 Stefan Kremser (@Spacehuhn)
|
||||
This software is licensed under the MIT License. See the license file for details.
|
||||
Source: github.com/spacehuhn/esp8266_deauther
|
||||
*/
|
||||
|
||||
#include "led.h"
|
||||
|
||||
// ===== [Includes] ===== //
|
||||
// used for update()
|
||||
#include "settings.h"
|
||||
#include "Attack.h"
|
||||
#include "Scan.h"
|
||||
#include "A_config.h" // Config for LEDs
|
||||
#include <Arduino.h> // digitalWrite, analogWrite, pinMode
|
||||
#include "language.h" // Strings used in printColor and tempDisable
|
||||
#include "settings.h" // used in update()
|
||||
#include "Attack.h" // used in update()
|
||||
#include "Scan.h" // used in update()
|
||||
|
||||
// ===== [External] ===== //
|
||||
// used for update()
|
||||
// Inlcude libraries for Neopixel or LED_MY92xx if used
|
||||
#if defined(NEOPIXEL_LED)
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#elif defined(LED_MY92)
|
||||
#include <my92xx.h>
|
||||
#endif // if defined(NEOPIXEL_LED)
|
||||
|
||||
extern Attack attack;
|
||||
extern Scan scan;
|
||||
|
||||
void LED::setColor(uint8_t r, uint8_t g, uint8_t b, bool output) {
|
||||
if (output) {
|
||||
char s[30];
|
||||
namespace led {
|
||||
// ===== PRIVATE ===== //
|
||||
LED_MODE mode = OFF;
|
||||
|
||||
sprintf_P(s, L_OUTPUT, r, g, b);
|
||||
prnt(String(s));
|
||||
#if defined(LED_NEOPIXEL_RGB)
|
||||
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_RGB + NEO_KHZ400);
|
||||
#elif defined(LED_NEOPIXEL_GRB)
|
||||
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);
|
||||
#elif defined(LED_MY92)
|
||||
my92xx myled = my92xx(LED_MY92_MODEL, LED_MY92_NUM, LED_MY92_DATA, LED_MY92_CLK, MY92XX_COMMAND_DEFAULT);
|
||||
#endif // if defined(NEOPIXEL_LED)
|
||||
|
||||
|
||||
void setColor(uint8_t r, uint8_t g, uint8_t b) {
|
||||
#if defined(LED_DIGITAL)
|
||||
if (LED_ANODE) {
|
||||
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r > 0);
|
||||
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g > 0);
|
||||
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b > 0);
|
||||
} else {
|
||||
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r == 0);
|
||||
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g == 0);
|
||||
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b == 0);
|
||||
}
|
||||
#elif defined(LED_RGB)
|
||||
if (r > 0) r = r * LED_MODE_BRIGHTNESS / 100;
|
||||
if (g > 0) g = g * LED_MODE_BRIGHTNESS / 100;
|
||||
if (b > 0) b = b * LED_MODE_BRIGHTNESS / 100;
|
||||
|
||||
if (LED_ANODE) {
|
||||
r = 255 - r;
|
||||
g = 255 - g;
|
||||
b = 255 - b;
|
||||
}
|
||||
|
||||
analogWrite(LED_PIN_R, r);
|
||||
analogWrite(LED_PIN_G, g);
|
||||
analogWrite(LED_PIN_B, b);
|
||||
#elif defined(NEOPIXEL_LED)
|
||||
|
||||
for (size_t i = 0; i < LED_NEOPIXEL_NUM; i++) {
|
||||
strip.setPixelColor(i, r, g, b);
|
||||
}
|
||||
|
||||
strip.show();
|
||||
#elif defined(LED_MY9291)
|
||||
myled.setChannel(LED_MY92_CH_R, r);
|
||||
myled.setChannel(LED_MY92_CH_G, g);
|
||||
myled.setChannel(LED_MY92_CH_B, b);
|
||||
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
|
||||
myled.setState(true);
|
||||
myled.update();
|
||||
#endif // if defined(LED_DIGITAL)
|
||||
}
|
||||
|
||||
#if defined(LED_DIGITAL)
|
||||
if (LED_ANODE) {
|
||||
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r > 0);
|
||||
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g > 0);
|
||||
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b > 0);
|
||||
} else {
|
||||
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r == 0);
|
||||
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g == 0);
|
||||
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b == 0);
|
||||
}
|
||||
#elif defined(LED_RGB)
|
||||
if (r > 0) r = r * LED_MODE_BRIGHTNESS / 100;
|
||||
if (g > 0) g = g * LED_MODE_BRIGHTNESS / 100;
|
||||
if (b > 0) b = b * LED_MODE_BRIGHTNESS / 100;
|
||||
// ===== PUBLIC ===== //
|
||||
void setup() {
|
||||
analogWriteRange(0xff);
|
||||
|
||||
if (LED_ANODE) {
|
||||
r = 255 - r;
|
||||
g = 255 - g;
|
||||
b = 255 - b;
|
||||
#if defined(LED_DIGITAL) || defined(LED_RGB)
|
||||
if (LED_PIN_R < 255) pinMode(LED_PIN_R, OUTPUT);
|
||||
if (LED_PIN_G < 255) pinMode(LED_PIN_G, OUTPUT);
|
||||
if (LED_PIN_B < 255) pinMode(LED_PIN_B, OUTPUT);
|
||||
#elif defined(NEOPIXEL_LED)
|
||||
strip.begin();
|
||||
strip.setBrightness(LED_MODE_BRIGHTNESS);
|
||||
strip.show();
|
||||
#elif defined(LED_MY9291)
|
||||
myled.setChannel(LED_MY92_CH_R, 0);
|
||||
myled.setChannel(LED_MY92_CH_G, 0);
|
||||
myled.setChannel(LED_MY92_CH_B, 0);
|
||||
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
|
||||
myled.setState(true);
|
||||
myled.update();
|
||||
#endif // if defined(LED_DIGITAL) || defined(LED_RGB)
|
||||
}
|
||||
|
||||
analogWrite(LED_PIN_R, r);
|
||||
analogWrite(LED_PIN_G, g);
|
||||
analogWrite(LED_PIN_B, b);
|
||||
#elif defined(NEOPIXEL_LED)
|
||||
|
||||
for (size_t i = 0; i < LED_NEOPIXEL_NUM; i++) {
|
||||
strip.setPixelColor(i, r, g, b);
|
||||
void update() {
|
||||
if (!settings::getLEDSettings().enabled) {
|
||||
setMode(OFF);
|
||||
} else if (scan.isScanning() && (scan.deauths < settings::getSnifferSettings().min_deauth_frames)) {
|
||||
setMode(SCAN);
|
||||
} else if (attack.isRunning()) {
|
||||
setMode(ATTACK);
|
||||
} else {
|
||||
setMode(IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
strip.show();
|
||||
#elif defined(LED_MY9291)
|
||||
myled.setChannel(LED_MY92_CH_R, r);
|
||||
myled.setChannel(LED_MY92_CH_G, g);
|
||||
myled.setChannel(LED_MY92_CH_B, b);
|
||||
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
|
||||
myled.setState(true);
|
||||
myled.update();
|
||||
#endif // if defined(LED_DIGITAL)
|
||||
}
|
||||
void setMode(LED_MODE new_mode, bool force) {
|
||||
if ((new_mode != mode) || force) {
|
||||
mode = new_mode;
|
||||
|
||||
void LED::setup() {
|
||||
analogWriteRange(0xff);
|
||||
|
||||
#if defined(LED_DIGITAL) || defined(LED_RGB)
|
||||
if (LED_PIN_R < 255) pinMode(LED_PIN_R, OUTPUT);
|
||||
if (LED_PIN_G < 255) pinMode(LED_PIN_G, OUTPUT);
|
||||
if (LED_PIN_B < 255) pinMode(LED_PIN_B, OUTPUT);
|
||||
#elif defined(NEOPIXEL_LED)
|
||||
strip.begin();
|
||||
strip.setBrightness(LED_MODE_BRIGHTNESS);
|
||||
strip.show();
|
||||
#elif defined(LED_MY9291)
|
||||
myled.setChannel(LED_MY92_CH_R, 0);
|
||||
myled.setChannel(LED_MY92_CH_G, 0);
|
||||
myled.setChannel(LED_MY92_CH_B, 0);
|
||||
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
|
||||
myled.setState(true);
|
||||
myled.update();
|
||||
#endif // if defined(LED_DIGITAL) || defined(LED_RGB)
|
||||
}
|
||||
|
||||
void LED::update() {
|
||||
if (!settings::getLEDSettings().enabled) {
|
||||
setMode(OFF);
|
||||
} else if (scan.isScanning() && (scan.deauths < settings::getSnifferSettings().min_deauth_frames)) {
|
||||
setMode(SCAN);
|
||||
} else if (attack.isRunning()) {
|
||||
setMode(ATTACK);
|
||||
} else {
|
||||
setMode(IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
void LED::setMode(LED_MODE mode, bool force) {
|
||||
if ((mode != this->mode) || force) {
|
||||
this->mode = mode;
|
||||
|
||||
switch (mode) {
|
||||
case OFF:
|
||||
setColor(LED_MODE_OFF);
|
||||
break;
|
||||
|
||||
case SCAN:
|
||||
setColor(LED_MODE_SCAN);
|
||||
break;
|
||||
|
||||
case ATTACK:
|
||||
setColor(LED_MODE_ATTACK);
|
||||
break;
|
||||
|
||||
case IDLE:
|
||||
setColor(LED_MODE_IDLE);
|
||||
break;
|
||||
switch (mode) {
|
||||
case OFF:
|
||||
setColor(LED_MODE_OFF);
|
||||
break;
|
||||
case SCAN:
|
||||
setColor(LED_MODE_SCAN);
|
||||
break;
|
||||
case ATTACK:
|
||||
setColor(LED_MODE_ATTACK);
|
||||
break;
|
||||
case IDLE:
|
||||
setColor(LED_MODE_IDLE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +1,11 @@
|
|||
#ifndef LED_h
|
||||
#define LED_h
|
||||
/*
|
||||
Copyright (c) 2020 Stefan Kremser (@Spacehuhn)
|
||||
This software is licensed under the MIT License. See the license file for details.
|
||||
Source: github.com/spacehuhn/esp8266_deauther
|
||||
*/
|
||||
|
||||
// ===== [Includes] ===== //
|
||||
#include "Arduino.h" // digitalWrite, analogWrite, pinMode
|
||||
#include "A_config.h" // Config for LEDs
|
||||
#include "language.h" // Strings used in printColor and tempDisable
|
||||
#pragma once
|
||||
|
||||
// ===== [Defines] ===== //
|
||||
|
||||
// Inlcude libraries for Neopixel or LED_MY92xx if used
|
||||
#if defined(NEOPIXEL_LED)
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#elif defined(LED_MY92)
|
||||
#include <my92xx.h>
|
||||
#endif // if defined(NEOPIXEL_LED)
|
||||
|
||||
// ===== [Strings] ===== //
|
||||
const char L_OUTPUT[] PROGMEM = "LED = (%u,%u,%u)";
|
||||
|
||||
// ===== [LED Mode Enum] ===== //
|
||||
enum LED_MODE {
|
||||
OFF,
|
||||
SCAN,
|
||||
|
@ -26,25 +13,8 @@ enum LED_MODE {
|
|||
IDLE
|
||||
};
|
||||
|
||||
// ===== [LED Class] ===== //
|
||||
class LED {
|
||||
private:
|
||||
LED_MODE mode = OFF;
|
||||
|
||||
#if defined(LED_NEOPIXEL_RGB)
|
||||
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_RGB + NEO_KHZ400);
|
||||
#elif defined(LED_NEOPIXEL_GRB)
|
||||
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);
|
||||
#elif defined(LED_MY92)
|
||||
my92xx myled = my92xx(LED_MY92_MODEL, LED_MY92_NUM, LED_MY92_DATA, LED_MY92_CLK, MY92XX_COMMAND_DEFAULT);
|
||||
#endif // if defined(NEOPIXEL_LED)
|
||||
|
||||
void setColor(uint8_t r, uint8_t g, uint8_t b, bool output = false);
|
||||
|
||||
public:
|
||||
namespace led {
|
||||
void setup();
|
||||
void update();
|
||||
void setMode(LED_MODE mode, bool force = false);
|
||||
};
|
||||
|
||||
#endif // ifndef LED_h
|
||||
void setMode(LED_MODE new_mode, bool force = false);
|
||||
}
|
|
@ -34,10 +34,9 @@ extern "C" {
|
|||
#include "DisplayUI.h"
|
||||
#include "A_config.h"
|
||||
|
||||
#include "LED.h"
|
||||
#include "led.h"
|
||||
|
||||
// Run-Time Variables //
|
||||
LED led;
|
||||
Names names;
|
||||
SSIDs ssids;
|
||||
Accesspoints accesspoints;
|
||||
|
@ -151,13 +150,13 @@ void setup() {
|
|||
prntln(DEAUTHER_VERSION);
|
||||
|
||||
// setup LED
|
||||
led.setup();
|
||||
led::setup();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
currentTime = millis();
|
||||
|
||||
led.update(); // update LED color
|
||||
led::update(); // update LED color
|
||||
wifi::update(); // manage access point
|
||||
attack.update(); // run attacks
|
||||
displayUI.update();
|
||||
|
|
Loading…
Reference in New Issue