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
1223extern Attack attack;
1324extern 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}
0 commit comments