Skip to content

Commit 6c84265

Browse files
author
Spacehuhn
committed
LED module
1 parent 432297d commit 6c84265

File tree

5 files changed

+135
-152
lines changed

5 files changed

+135
-152
lines changed

esp8266_deauther/CLI.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,7 @@ void CLI::runCommand(String input) {
814814
// ===== STOP ===== //
815815
// stop [<mode>]
816816
else if (eqlsCMD(0, CLI_STOP)) {
817-
led.setMode(IDLE, true);
817+
led::setMode(IDLE, true);
818818

819819
if ((list->size() >= 2) && !(eqlsCMD(1, CLI_ALL))) {
820820
for (int i = 1; i < list->size(); i++) {
@@ -1098,7 +1098,7 @@ void CLI::runCommand(String input) {
10981098
scan.update(); // run scan
10991099
attack.update(); // run attacks
11001100
ssids.update(); // run random mode, if enabled
1101-
led.update(); // update LED color
1101+
led::update(); // update LED color
11021102

11031103
// auto-save
11041104
if (settings::getAutosaveSettings().enabled && (currentTime - autosaveTime > settings::getAutosaveSettings().time)) {

esp8266_deauther/CLI.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ extern "C" {
1414
#include "Scan.h"
1515
#include "Attack.h"
1616
#include "DisplayUI.h"
17-
#include "LED.h"
18-
19-
extern LED led;
17+
#include "led.h"
2018

2119
extern Names names;
2220
extern SSIDs ssids;

esp8266_deauther/LED.cpp

Lines changed: 120 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,135 @@
1-
#include "LED.h"
2-
3-
// ===== [Includes] ===== //
4-
// used for update()
5-
#include "settings.h"
6-
#include "Attack.h"
7-
#include "Scan.h"
8-
9-
// ===== [External] ===== //
10-
// used for update()
1+
/*
2+
Copyright (c) 2020 Stefan Kremser (@Spacehuhn)
3+
This software is licensed under the MIT License. See the license file for details.
4+
Source: github.com/spacehuhn/esp8266_deauther
5+
*/
6+
7+
#include "led.h"
8+
9+
#include "A_config.h" // Config for LEDs
10+
#include <Arduino.h> // digitalWrite, analogWrite, pinMode
11+
#include "language.h" // Strings used in printColor and tempDisable
12+
#include "settings.h" // used in update()
13+
#include "Attack.h" // used in update()
14+
#include "Scan.h" // used in update()
15+
16+
// Inlcude libraries for Neopixel or LED_MY92xx if used
17+
#if defined(NEOPIXEL_LED)
18+
#include <Adafruit_NeoPixel.h>
19+
#elif defined(LED_MY92)
20+
#include <my92xx.h>
21+
#endif // if defined(NEOPIXEL_LED)
1122

1223
extern Attack attack;
1324
extern Scan scan;
1425

15-
void LED::setColor(uint8_t r, uint8_t g, uint8_t b, bool output) {
16-
if (output) {
17-
char s[30];
18-
19-
sprintf_P(s, L_OUTPUT, r, g, b);
20-
prnt(String(s));
21-
}
26+
namespace led {
27+
// ===== PRIVATE ===== //
28+
LED_MODE mode = OFF;
29+
30+
#if defined(LED_NEOPIXEL_RGB)
31+
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_RGB + NEO_KHZ400);
32+
#elif defined(LED_NEOPIXEL_GRB)
33+
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);
34+
#elif defined(LED_MY92)
35+
my92xx myled = my92xx(LED_MY92_MODEL, LED_MY92_NUM, LED_MY92_DATA, LED_MY92_CLK, MY92XX_COMMAND_DEFAULT);
36+
#endif // if defined(NEOPIXEL_LED)
37+
38+
39+
void setColor(uint8_t r, uint8_t g, uint8_t b) {
40+
#if defined(LED_DIGITAL)
41+
if (LED_ANODE) {
42+
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r > 0);
43+
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g > 0);
44+
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b > 0);
45+
} else {
46+
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r == 0);
47+
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g == 0);
48+
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b == 0);
49+
}
50+
#elif defined(LED_RGB)
51+
if (r > 0) r = r * LED_MODE_BRIGHTNESS / 100;
52+
if (g > 0) g = g * LED_MODE_BRIGHTNESS / 100;
53+
if (b > 0) b = b * LED_MODE_BRIGHTNESS / 100;
54+
55+
if (LED_ANODE) {
56+
r = 255 - r;
57+
g = 255 - g;
58+
b = 255 - b;
59+
}
2260

23-
#if defined(LED_DIGITAL)
24-
if (LED_ANODE) {
25-
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r > 0);
26-
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g > 0);
27-
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b > 0);
28-
} else {
29-
if (LED_PIN_R < 255) digitalWrite(LED_PIN_R, r == 0);
30-
if (LED_PIN_G < 255) digitalWrite(LED_PIN_G, g == 0);
31-
if (LED_PIN_B < 255) digitalWrite(LED_PIN_B, b == 0);
32-
}
33-
#elif defined(LED_RGB)
34-
if (r > 0) r = r * LED_MODE_BRIGHTNESS / 100;
35-
if (g > 0) g = g * LED_MODE_BRIGHTNESS / 100;
36-
if (b > 0) b = b * LED_MODE_BRIGHTNESS / 100;
37-
38-
if (LED_ANODE) {
39-
r = 255 - r;
40-
g = 255 - g;
41-
b = 255 - b;
42-
}
61+
analogWrite(LED_PIN_R, r);
62+
analogWrite(LED_PIN_G, g);
63+
analogWrite(LED_PIN_B, b);
64+
#elif defined(NEOPIXEL_LED)
4365

44-
analogWrite(LED_PIN_R, r);
45-
analogWrite(LED_PIN_G, g);
46-
analogWrite(LED_PIN_B, b);
47-
#elif defined(NEOPIXEL_LED)
66+
for (size_t i = 0; i < LED_NEOPIXEL_NUM; i++) {
67+
strip.setPixelColor(i, r, g, b);
68+
}
4869

49-
for (size_t i = 0; i < LED_NEOPIXEL_NUM; i++) {
50-
strip.setPixelColor(i, r, g, b);
70+
strip.show();
71+
#elif defined(LED_MY9291)
72+
myled.setChannel(LED_MY92_CH_R, r);
73+
myled.setChannel(LED_MY92_CH_G, g);
74+
myled.setChannel(LED_MY92_CH_B, b);
75+
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
76+
myled.setState(true);
77+
myled.update();
78+
#endif // if defined(LED_DIGITAL)
5179
}
5280

53-
strip.show();
54-
#elif defined(LED_MY9291)
55-
myled.setChannel(LED_MY92_CH_R, r);
56-
myled.setChannel(LED_MY92_CH_G, g);
57-
myled.setChannel(LED_MY92_CH_B, b);
58-
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
59-
myled.setState(true);
60-
myled.update();
61-
#endif // if defined(LED_DIGITAL)
62-
}
63-
64-
void LED::setup() {
65-
analogWriteRange(0xff);
66-
67-
#if defined(LED_DIGITAL) || defined(LED_RGB)
68-
if (LED_PIN_R < 255) pinMode(LED_PIN_R, OUTPUT);
69-
if (LED_PIN_G < 255) pinMode(LED_PIN_G, OUTPUT);
70-
if (LED_PIN_B < 255) pinMode(LED_PIN_B, OUTPUT);
71-
#elif defined(NEOPIXEL_LED)
72-
strip.begin();
73-
strip.setBrightness(LED_MODE_BRIGHTNESS);
74-
strip.show();
75-
#elif defined(LED_MY9291)
76-
myled.setChannel(LED_MY92_CH_R, 0);
77-
myled.setChannel(LED_MY92_CH_G, 0);
78-
myled.setChannel(LED_MY92_CH_B, 0);
79-
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
80-
myled.setState(true);
81-
myled.update();
82-
#endif // if defined(LED_DIGITAL) || defined(LED_RGB)
83-
}
84-
85-
void LED::update() {
86-
if (!settings::getLEDSettings().enabled) {
87-
setMode(OFF);
88-
} else if (scan.isScanning() && (scan.deauths < settings::getSnifferSettings().min_deauth_frames)) {
89-
setMode(SCAN);
90-
} else if (attack.isRunning()) {
91-
setMode(ATTACK);
92-
} else {
93-
setMode(IDLE);
81+
// ===== PUBLIC ===== //
82+
void setup() {
83+
analogWriteRange(0xff);
84+
85+
#if defined(LED_DIGITAL) || defined(LED_RGB)
86+
if (LED_PIN_R < 255) pinMode(LED_PIN_R, OUTPUT);
87+
if (LED_PIN_G < 255) pinMode(LED_PIN_G, OUTPUT);
88+
if (LED_PIN_B < 255) pinMode(LED_PIN_B, OUTPUT);
89+
#elif defined(NEOPIXEL_LED)
90+
strip.begin();
91+
strip.setBrightness(LED_MODE_BRIGHTNESS);
92+
strip.show();
93+
#elif defined(LED_MY9291)
94+
myled.setChannel(LED_MY92_CH_R, 0);
95+
myled.setChannel(LED_MY92_CH_G, 0);
96+
myled.setChannel(LED_MY92_CH_B, 0);
97+
myled.setChannel(LED_MY92_CH_BRIGHTNESS, LED_MODE_BRIGHTNESS);
98+
myled.setState(true);
99+
myled.update();
100+
#endif // if defined(LED_DIGITAL) || defined(LED_RGB)
94101
}
95-
}
96-
97-
void LED::setMode(LED_MODE mode, bool force) {
98-
if ((mode != this->mode) || force) {
99-
this->mode = mode;
100-
101-
switch (mode) {
102-
case OFF:
103-
setColor(LED_MODE_OFF);
104-
break;
105102

106-
case SCAN:
107-
setColor(LED_MODE_SCAN);
108-
break;
109-
110-
case ATTACK:
111-
setColor(LED_MODE_ATTACK);
112-
break;
103+
void update() {
104+
if (!settings::getLEDSettings().enabled) {
105+
setMode(OFF);
106+
} else if (scan.isScanning() && (scan.deauths < settings::getSnifferSettings().min_deauth_frames)) {
107+
setMode(SCAN);
108+
} else if (attack.isRunning()) {
109+
setMode(ATTACK);
110+
} else {
111+
setMode(IDLE);
112+
}
113+
}
113114

114-
case IDLE:
115-
setColor(LED_MODE_IDLE);
116-
break;
115+
void setMode(LED_MODE new_mode, bool force) {
116+
if ((new_mode != mode) || force) {
117+
mode = new_mode;
118+
119+
switch (mode) {
120+
case OFF:
121+
setColor(LED_MODE_OFF);
122+
break;
123+
case SCAN:
124+
setColor(LED_MODE_SCAN);
125+
break;
126+
case ATTACK:
127+
setColor(LED_MODE_ATTACK);
128+
break;
129+
case IDLE:
130+
setColor(LED_MODE_IDLE);
131+
break;
132+
}
117133
}
118134
}
119135
}

esp8266_deauther/LED.h

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,20 @@
1-
#ifndef LED_h
2-
#define LED_h
1+
/*
2+
Copyright (c) 2020 Stefan Kremser (@Spacehuhn)
3+
This software is licensed under the MIT License. See the license file for details.
4+
Source: github.com/spacehuhn/esp8266_deauther
5+
*/
36

4-
// ===== [Includes] ===== //
5-
#include "Arduino.h" // digitalWrite, analogWrite, pinMode
6-
#include "A_config.h" // Config for LEDs
7-
#include "language.h" // Strings used in printColor and tempDisable
7+
#pragma once
88

9-
// ===== [Defines] ===== //
10-
11-
// Inlcude libraries for Neopixel or LED_MY92xx if used
12-
#if defined(NEOPIXEL_LED)
13-
#include <Adafruit_NeoPixel.h>
14-
#elif defined(LED_MY92)
15-
#include <my92xx.h>
16-
#endif // if defined(NEOPIXEL_LED)
17-
18-
// ===== [Strings] ===== //
19-
const char L_OUTPUT[] PROGMEM = "LED = (%u,%u,%u)";
20-
21-
// ===== [LED Mode Enum] ===== //
229
enum LED_MODE {
2310
OFF,
2411
SCAN,
2512
ATTACK,
2613
IDLE
2714
};
2815

29-
// ===== [LED Class] ===== //
30-
class LED {
31-
private:
32-
LED_MODE mode = OFF;
33-
34-
#if defined(LED_NEOPIXEL_RGB)
35-
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_RGB + NEO_KHZ400);
36-
#elif defined(LED_NEOPIXEL_GRB)
37-
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NEOPIXEL_NUM, LED_NEOPIXEL_PIN, NEO_GRB + NEO_KHZ400);
38-
#elif defined(LED_MY92)
39-
my92xx myled = my92xx(LED_MY92_MODEL, LED_MY92_NUM, LED_MY92_DATA, LED_MY92_CLK, MY92XX_COMMAND_DEFAULT);
40-
#endif // if defined(NEOPIXEL_LED)
41-
42-
void setColor(uint8_t r, uint8_t g, uint8_t b, bool output = false);
43-
44-
public:
16+
namespace led {
4517
void setup();
4618
void update();
47-
void setMode(LED_MODE mode, bool force = false);
48-
};
49-
50-
#endif // ifndef LED_h
19+
void setMode(LED_MODE new_mode, bool force = false);
20+
}

esp8266_deauther/esp8266_deauther.ino

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@ extern "C" {
3434
#include "DisplayUI.h"
3535
#include "A_config.h"
3636

37-
#include "LED.h"
37+
#include "led.h"
3838

3939
// Run-Time Variables //
40-
LED led;
4140
Names names;
4241
SSIDs ssids;
4342
Accesspoints accesspoints;
@@ -151,13 +150,13 @@ void setup() {
151150
prntln(DEAUTHER_VERSION);
152151

153152
// setup LED
154-
led.setup();
153+
led::setup();
155154
}
156155

157156
void loop() {
158157
currentTime = millis();
159158

160-
led.update(); // update LED color
159+
led::update(); // update LED color
161160
wifi::update(); // manage access point
162161
attack.update(); // run attacks
163162
displayUI.update();

0 commit comments

Comments
 (0)