Skip to content

Commit 2c330ef

Browse files
author
Spacehuhn
committed
Restored led
Needed to fix case problems
1 parent 51baead commit 2c330ef

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

esp8266_deauther/led.cpp

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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) || defined(LED_NEOPIXEL_RGB) || defined(LED_NEOPIXEL_GRB)
18+
#include <Adafruit_NeoPixel.h>
19+
#elif defined(LED_MY92)
20+
#include <my92xx.h>
21+
#endif // if defined(NEOPIXEL_LED)
22+
23+
extern Attack attack;
24+
extern Scan scan;
25+
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+
}
60+
61+
analogWrite(LED_PIN_R, r);
62+
analogWrite(LED_PIN_G, g);
63+
analogWrite(LED_PIN_B, b);
64+
#elif defined(NEOPIXEL_LED)
65+
66+
for (size_t i = 0; i < LED_NEOPIXEL_NUM; i++) {
67+
strip.setPixelColor(i, r, g, b);
68+
}
69+
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)
79+
}
80+
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)
101+
}
102+
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+
}
114+
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+
}
133+
}
134+
}
135+
}

esp8266_deauther/led.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
#pragma once
8+
9+
enum LED_MODE {
10+
OFF,
11+
SCAN,
12+
ATTACK,
13+
IDLE
14+
};
15+
16+
namespace led {
17+
void setup();
18+
void update();
19+
void setMode(LED_MODE new_mode, bool force = false);
20+
}

0 commit comments

Comments
 (0)