first commit

This commit is contained in:
TemanSv1n
2025-12-02 18:52:45 +03:00
commit bdda481bff
202 changed files with 73723 additions and 0 deletions

139
DeautherX/led.cpp Normal file
View File

@@ -0,0 +1,139 @@
/* This software is licensed under the MIT License: https://github.com/BlackTechX011/DeautherX */
#include "led.h"
#include "A_config.h"
#include <Arduino.h>
#include "language.h"
#include "settings.h"
#include "Attack.h"
#include "Scan.h"
extern Attack attack;
extern Scan scan;
namespace led {
// ===== PRIVATE ===== //
LED_MODE mode = OFF;
// Определяем пины для отдельных светодиодов
const uint8_t ZLED_PIN_R = 15; // D8 - Красный
const uint8_t ZLED_PIN_G = 16; // D0 - Зеленый
const uint8_t ZLED_PIN_B = 13; // D7 - Синий
// Яркость для каждого режима (0-255)
const uint8_t BRIGHTNESS_HIGH = 255;
const uint8_t BRIGHTNESS_MED = 128;
const uint8_t BRIGHTNESS_LOW = 64;
void setColor(uint8_t r, uint8_t g, uint8_t b) {
// Для отдельных светодиодов используем digitalWrite
// Если нужна яркость - можно использовать analogWrite с ШИМ пинами
// Красный светодиод
if (ZLED_PIN_R < 255) {
digitalWrite(ZLED_PIN_R, r > 0 ? HIGH : LOW);
}
// Зеленый светодиод
if (ZLED_PIN_G < 255) {
digitalWrite(ZLED_PIN_G, g > 0 ? HIGH : LOW);
}
// Синий светодиод
if (ZLED_PIN_B < 255) {
digitalWrite(ZLED_PIN_B, b > 0 ? HIGH : LOW);
}
}
// Функции для отдельных цветов (опционально)
void setRed() {
setColor(255, 0, 0);
}
void setGreen() {
setColor(0, 255, 0);
}
void setBlue() {
setColor(0, 0, 255);
}
void setYellow() {
setColor(255, 255, 0);
}
void setPurple() {
setColor(255, 0, 255);
}
void setCyan() {
setColor(0, 255, 255);
}
void setWhite() {
setColor(255, 255, 255);
}
// ===== PUBLIC ===== //
void setup() {
// Настраиваем пины как выходы
if (ZLED_PIN_R < 255) pinMode(ZLED_PIN_R, OUTPUT);
if (ZLED_PIN_G < 255) pinMode(ZLED_PIN_G, OUTPUT);
if (ZLED_PIN_B < 255) pinMode(ZLED_PIN_B, OUTPUT);
// Выключаем все светодиоды при старте
setColor(0, 0, 0);
}
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);
}
}
void setMode(LED_MODE new_mode, bool force) {
if ((new_mode != mode) || force) {
mode = new_mode;
switch (mode) {
case OFF:
setColor(0, 0, 0); // Все выключено
break;
case SCAN:
setColor(0, 255, 0); // Зеленый - сканирование
break;
case ATTACK:
setColor(255, 0, 0); // Красный - атака
break;
case IDLE:
setColor(0, 0, 255); // Синий - режим ожидания
break;
}
}
}
// Дополнительные функции для более сложных индикаций
void blinkRed(int times = 3, int delayMs = 200) {
for (int i = 0; i < times; i++) {
setRed();
delay(delayMs);
setColor(0, 0, 0);
delay(delayMs);
}
}
void blinkGreen(int times = 3, int delayMs = 200) {
for (int i = 0; i < times; i++) {
setGreen();
delay(delayMs);
setColor(0, 0, 0);
delay(delayMs);
}
}
}