Fix: [Epomaker TH80 Pro] Windows compat fix

This commit is contained in:
Perroboc 2023-08-28 13:20:03 +00:00 committed by Adam Honse
parent 0969b5d24e
commit 6b9aef10a9
4 changed files with 228 additions and 227 deletions

View file

@ -10,9 +10,11 @@
#include "EpomakerController.h"
#include <math.h>
#include "LogManager.h"
EpomakerController::EpomakerController(hid_device* dev_handle, char *_path)
{
const int szTemp = 256;
const int szTemp = 128;
wchar_t tmpName[szTemp];
dev = dev_handle;
@ -31,11 +33,11 @@ EpomakerController::EpomakerController(hid_device* dev_handle, char *_path)
location = _path;
current_mode = Epomaker_MODE_ALWAYS_ON;
current_speed = Epomaker_SPEED_DEFAULT;
current_brightness = Epomaker_BRIGHTNESS_DEFAULT;
current_dazzle = Epomaker_OPTION_DAZZLE_OFF;
current_option = Epomaker_OPTION_DEFAULT;
current_mode = EPOMAKER_MODE_ALWAYS_ON;
current_speed = EPOMAKER_SPEED_DEFAULT;
current_brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
current_dazzle = EPOMAKER_OPTION_DAZZLE_OFF;
current_option = EPOMAKER_OPTION_DEFAULT;
}
@ -81,11 +83,11 @@ void EpomakerController::SetDazzle(bool is_dazzle)
{
if(is_dazzle)
{
current_dazzle = Epomaker_OPTION_DAZZLE_ON;
current_dazzle = EPOMAKER_OPTION_DAZZLE_ON;
}
else
{
current_dazzle = Epomaker_OPTION_DAZZLE_OFF;
current_dazzle = EPOMAKER_OPTION_DAZZLE_OFF;
}
}
@ -96,33 +98,32 @@ void EpomakerController::SetOption(unsigned char option)
void EpomakerController::SendUpdate()
{
unsigned char command[Epomaker_PACKET_LENGTH] = { 0x00 };
command[0] = 0xf6;
command[1] = 0x0a;
unsigned char buffer[EPOMAKER_PACKET_LENGTH + 1] = { 0x00 };
unsigned char buffer[Epomaker_PACKET_LENGTH] = { 0x00 };
int buffer_size = (sizeof(buffer) / sizeof(buffer[0]));
buffer[Epomaker_BYTE_COMMAND] = Epomaker_COMMAND_RGB;
buffer[Epomaker_BYTE_MODE] = current_mode;
buffer[Epomaker_BYTE_SPEED] = current_speed;
buffer[Epomaker_BYTE_BRIGHTNESS] = current_brightness;
buffer[Epomaker_BYTE_FLAGS] = current_option | current_dazzle;
buffer[Epomaker_BYTE_RED] = current_red;
buffer[Epomaker_BYTE_GREEN] = current_green;
buffer[Epomaker_BYTE_BLUE] = current_blue;
buffer[EPOMAKER_BYTE_COMMAND] = EPOMAKER_COMMAND_RGB;
buffer[EPOMAKER_BYTE_MODE] = current_mode;
buffer[EPOMAKER_BYTE_SPEED] = current_speed;
buffer[EPOMAKER_BYTE_BRIGHTNESS] = current_brightness;
buffer[EPOMAKER_BYTE_FLAGS] = current_option | current_dazzle;
buffer[EPOMAKER_BYTE_RED] = current_red;
buffer[EPOMAKER_BYTE_GREEN] = current_green;
buffer[EPOMAKER_BYTE_BLUE] = current_blue;
int sum_bits = 0;
for (int i=Epomaker_BYTE_COMMAND; i<=Epomaker_BYTE_BLUE; i++)
for(int i = EPOMAKER_BYTE_COMMAND; i <= EPOMAKER_BYTE_BLUE; i++)
{
sum_bits += buffer[i];
}
int next_pow2 = pow(2, ceil(log2(sum_bits)));
int next_pow2 = (int)(pow(2, ceil(log2((double)(sum_bits)))));
int filler = next_pow2 - sum_bits - 1;
buffer[Epomaker_BYTE_FILLER] = filler;
buffer[EPOMAKER_BYTE_FILLER] = filler;
int send_buffer_result = hid_send_feature_report(dev, buffer, (sizeof(buffer) / sizeof(buffer[0])));
if(send_buffer_result<0)
{
LOG_ERROR("[EPOMAKER]: Send Buffer Error. HIDAPI Error: %ls", hid_error(dev));
}
hid_send_feature_report(dev, command, buffer_size);
hid_send_feature_report(dev, buffer, buffer_size);
}

View file

@ -13,79 +13,79 @@
#include <string>
#include <hidapi/hidapi.h>
#define Epomaker_PACKET_LENGTH 0x40
#define Epomaker_COMMAND_RGB 0x07
#define Epomaker_COMMAND_SET 0xf60a
#define Epomaker_COMMAND_PING 0xf7
#define EPOMAKER_PACKET_LENGTH 0x40
#define EPOMAKER_COMMAND_RGB 0x07
#define EPOMAKER_COMMAND_SET 0xf60a
#define EPOMAKER_COMMAND_PING 0xf7
enum
{
Epomaker_BYTE_COMMAND = 0,
Epomaker_BYTE_MODE = 1,
Epomaker_BYTE_SPEED = 2,
Epomaker_BYTE_BRIGHTNESS = 3,
Epomaker_BYTE_FLAGS = 4,
Epomaker_BYTE_RED = 5,
Epomaker_BYTE_GREEN = 6,
Epomaker_BYTE_BLUE = 7,
Epomaker_BYTE_FILLER = 8
EPOMAKER_BYTE_COMMAND = 1,
EPOMAKER_BYTE_MODE = 2,
EPOMAKER_BYTE_SPEED = 3,
EPOMAKER_BYTE_BRIGHTNESS = 4,
EPOMAKER_BYTE_FLAGS = 5,
EPOMAKER_BYTE_RED = 6,
EPOMAKER_BYTE_GREEN = 7,
EPOMAKER_BYTE_BLUE = 8,
EPOMAKER_BYTE_FILLER = 9
};
enum
{
Epomaker_MODE_ALWAYS_ON = 0x01,
Epomaker_MODE_DYNAMIC_BREATHING = 0x02,
Epomaker_MODE_SPECTRUM_CYCLE = 0x03,
Epomaker_MODE_DRIFT = 0x04,
Epomaker_MODE_WAVES_RIPPLE = 0x05,
Epomaker_MODE_STARS_TWINKLE = 0x06,
Epomaker_MODE_STEADY_STREAM = 0x07,
Epomaker_MODE_SHADOWING = 0x08,
Epomaker_MODE_PEAKS_RISING_ONE_AFTER_ANOTHER = 0x09,
Epomaker_MODE_SINE_WAVE = 0x0a,
Epomaker_MODE_CAISPRING_SURGING = 0x0b,
Epomaker_MODE_FLOWERS_BLOOMING = 0x0c,
Epomaker_MODE_LASER = 0x0e,
Epomaker_MODE_PEAK_TURN = 0x0f,
Epomaker_MODE_INCLINED_RAIN = 0x10,
Epomaker_MODE_SNOW = 0x11,
Epomaker_MODE_METEOR = 0x12,
Epomaker_MODE_THROUGH_THE_SNOW_NON_TRACE = 0x13,
Epomaker_MODE_LIGHT_SHADOW = 0x15
EPOMAKER_MODE_ALWAYS_ON = 0x01,
EPOMAKER_MODE_DYNAMIC_BREATHING = 0x02,
EPOMAKER_MODE_SPECTRUM_CYCLE = 0x03,
EPOMAKER_MODE_DRIFT = 0x04,
EPOMAKER_MODE_WAVES_RIPPLE = 0x05,
EPOMAKER_MODE_STARS_TWINKLE = 0x06,
EPOMAKER_MODE_STEADY_STREAM = 0x07,
EPOMAKER_MODE_SHADOWING = 0x08,
EPOMAKER_MODE_PEAKS_RISING_ONE_AFTER_ANOTHER = 0x09,
EPOMAKER_MODE_SINE_WAVE = 0x0a,
EPOMAKER_MODE_CAISPRING_SURGING = 0x0b,
EPOMAKER_MODE_FLOWERS_BLOOMING = 0x0c,
EPOMAKER_MODE_LASER = 0x0e,
EPOMAKER_MODE_PEAK_TURN = 0x0f,
EPOMAKER_MODE_INCLINED_RAIN = 0x10,
EPOMAKER_MODE_SNOW = 0x11,
EPOMAKER_MODE_METEOR = 0x12,
EPOMAKER_MODE_THROUGH_THE_SNOW_NON_TRACE = 0x13,
EPOMAKER_MODE_LIGHT_SHADOW = 0x15
};
enum
{
Epomaker_SPEED_MIN = 0x00,
Epomaker_SPEED_MAX = 0x05,
Epomaker_SPEED_MAX_SPECIAL = 0x04,
Epomaker_SPEED_DEFAULT = 0x04
EPOMAKER_SPEED_MIN = 0x00,
EPOMAKER_SPEED_MAX = 0x05,
EPOMAKER_SPEED_MAX_SPECIAL = 0x04,
EPOMAKER_SPEED_DEFAULT = 0x04
};
enum
{
Epomaker_BRIGHTNESS_MIN = 0x00,
Epomaker_BRIGHTNESS_MAX = 0x04,
Epomaker_BRIGHTNESS_DEFAULT = 0x04
EPOMAKER_BRIGHTNESS_MIN = 0x00,
EPOMAKER_BRIGHTNESS_MAX = 0x04,
EPOMAKER_BRIGHTNESS_DEFAULT = 0x04
};
enum
{
Epomaker_OPTION_DAZZLE_OFF = 0x07,
Epomaker_OPTION_DAZZLE_ON = 0x08,
Epomaker_OPTION_DEFAULT = 0x00,
Epomaker_OPTION_DRIFT_RIGHT = 0X00,
Epomaker_OPTION_DRIFT_LEFT = 0X10,
Epomaker_OPTION_DRIFT_DOWN = 0X20,
Epomaker_OPTION_DRIFT_UP = 0X30,
Epomaker_OPTION_STEADY_STREAM_ZIG_ZAG = 0x00,
Epomaker_OPTION_STEADY_STREAM_RETURN = 0x10,
Epomaker_OPTION_CAISPRING_SURGING_OUT = 0x00,
Epomaker_OPTION_CAISPRING_SURGING_IN = 0x10,
Epomaker_OPTION_FLOWERS_BLOOMING_RIGHT = 0x00,
Epomaker_OPTION_FLOWERS_BLOOMING_LEFT = 0x10,
Epomaker_OPTION_PEAK_TURN_ANTI_CLOCKWISE = 0x00,
Epomaker_OPTION_PEAK_TURN_CLOCKWISE = 0x10,
EPOMAKER_OPTION_DAZZLE_OFF = 0x07,
EPOMAKER_OPTION_DAZZLE_ON = 0x08,
EPOMAKER_OPTION_DEFAULT = 0x00,
EPOMAKER_OPTION_DRIFT_RIGHT = 0X00,
EPOMAKER_OPTION_DRIFT_LEFT = 0X10,
EPOMAKER_OPTION_DRIFT_DOWN = 0X20,
EPOMAKER_OPTION_DRIFT_UP = 0X30,
EPOMAKER_OPTION_STEADY_STREAM_ZIG_ZAG = 0x00,
EPOMAKER_OPTION_STEADY_STREAM_RETURN = 0x10,
EPOMAKER_OPTION_CAISPRING_SURGING_OUT = 0x00,
EPOMAKER_OPTION_CAISPRING_SURGING_IN = 0x10,
EPOMAKER_OPTION_FLOWERS_BLOOMING_RIGHT = 0x00,
EPOMAKER_OPTION_FLOWERS_BLOOMING_LEFT = 0x10,
EPOMAKER_OPTION_PEAK_TURN_ANTI_CLOCKWISE = 0x00,
EPOMAKER_OPTION_PEAK_TURN_CLOCKWISE = 0x10,
};
class EpomakerController

View file

@ -4,10 +4,10 @@
#include "RGBController_EpomakerController.h"
#include <hidapi/hidapi.h>
#define Epomaker_VID 0x3151
#define Epomaker_TH80_Pro_USB_PID 0x4010
#define Epomaker_TH80_Pro_Dongle_PID 0x4011
#define Epomaker_TH80_Pro_BT_PID 0x4013
#define EPOMAKER_VID 0x3151
#define EPOMAKER_TH80_Pro_USB_PID 0x4010
#define EPOMAKER_TH80_Pro_Dongle_PID 0x4011
#define EPOMAKER_TH80_Pro_BT_PID 0x4013
/******************************************************************************************\
* *
@ -30,10 +30,10 @@ void DetectEpomakerControllers(hid_device_info* info, const std::string&)
}
} /* DetectEpomakerControllers() */
REGISTER_HID_DETECTOR_IPU("Epomaker TH80 Pro (USB Cable)", DetectEpomakerControllers, Epomaker_VID, Epomaker_TH80_Pro_USB_PID, 1, 1, 2);
REGISTER_HID_DETECTOR_IPU("Epomaker TH80 Pro (USB Dongle)", DetectEpomakerControllers, Epomaker_VID, Epomaker_TH80_Pro_Dongle_PID, 1, 1, 2);
REGISTER_HID_DETECTOR_I("Epomaker TH80 Pro (USB Cable)", DetectEpomakerControllers, EPOMAKER_VID, EPOMAKER_TH80_Pro_USB_PID, 2);
REGISTER_HID_DETECTOR_I("Epomaker TH80 Pro (USB Dongle)", DetectEpomakerControllers, EPOMAKER_VID, EPOMAKER_TH80_Pro_Dongle_PID, 2);
/*---------------------------------------------------------*\
| Bluetooth Not implemented |
\*---------------------------------------------------------*/
//REGISTER_HID_DETECTOR("Epomaker TH80 Pro (Bluetooth)", DetectEpomakerControllers, Epomaker_VID, Epomaker_TH80_Pro_BT_PID);
//REGISTER_HID_DETECTOR("Epomaker TH80 Pro (Bluetooth)", DetectEpomakerControllers, EPOMAKER_VID, EPOMAKER_TH80_Pro_BT_PID);

View file

@ -40,231 +40,231 @@ RGBController_EpomakerController::RGBController_EpomakerController(EpomakerContr
modes.push_back(Off);
mode Always_on;
Always_on.name = "Static";
Always_on.value = Epomaker_MODE_ALWAYS_ON;
Always_on.name = "Direct";
Always_on.value = EPOMAKER_MODE_ALWAYS_ON;
Always_on.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Always_on.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Always_on.brightness_min = Epomaker_BRIGHTNESS_MIN;
Always_on.brightness_max = Epomaker_BRIGHTNESS_MAX;
Always_on.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Always_on.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Always_on.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Always_on.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
modes.push_back(Always_on);
mode Dynamic_breathing;
Dynamic_breathing.name = "Breathing";
Dynamic_breathing.value = Epomaker_MODE_DYNAMIC_BREATHING;
Dynamic_breathing.value = EPOMAKER_MODE_DYNAMIC_BREATHING;
Dynamic_breathing.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
Dynamic_breathing.color_mode = MODE_COLORS_PER_LED;
Dynamic_breathing.brightness_min = Epomaker_BRIGHTNESS_MIN;
Dynamic_breathing.brightness_max = Epomaker_BRIGHTNESS_MAX;
Dynamic_breathing.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Dynamic_breathing.speed_min = Epomaker_SPEED_MIN;
Dynamic_breathing.speed_max = Epomaker_SPEED_MAX;
Dynamic_breathing.speed = Epomaker_SPEED_DEFAULT;
Dynamic_breathing.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Dynamic_breathing.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Dynamic_breathing.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Dynamic_breathing.speed_min = EPOMAKER_SPEED_MIN;
Dynamic_breathing.speed_max = EPOMAKER_SPEED_MAX;
Dynamic_breathing.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Dynamic_breathing);
mode Spectrum_cycle;
Spectrum_cycle.name = "Spectrum Cycle";
Spectrum_cycle.value = Epomaker_MODE_SPECTRUM_CYCLE;
Spectrum_cycle.value = EPOMAKER_MODE_SPECTRUM_CYCLE;
Spectrum_cycle.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Spectrum_cycle.color_mode = MODE_COLORS_NONE;
Spectrum_cycle.brightness_min = Epomaker_BRIGHTNESS_MIN;
Spectrum_cycle.brightness_max = Epomaker_BRIGHTNESS_MAX;
Spectrum_cycle.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Spectrum_cycle.speed_min = Epomaker_SPEED_MIN;
Spectrum_cycle.speed_max = Epomaker_SPEED_MAX_SPECIAL;
Spectrum_cycle.speed = Epomaker_SPEED_DEFAULT;
Spectrum_cycle.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Spectrum_cycle.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Spectrum_cycle.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Spectrum_cycle.speed_min = EPOMAKER_SPEED_MIN;
Spectrum_cycle.speed_max = EPOMAKER_SPEED_MAX_SPECIAL;
Spectrum_cycle.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Spectrum_cycle);
mode Drift;
Drift.name = "Drift";
Drift.value = Epomaker_MODE_DRIFT;
Drift.value = EPOMAKER_MODE_DRIFT;
Drift.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_DIRECTION_UD;
Drift.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Drift.brightness_min = Epomaker_BRIGHTNESS_MIN;
Drift.brightness_max = Epomaker_BRIGHTNESS_MAX;
Drift.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Drift.speed_min = Epomaker_SPEED_MIN;
Drift.speed_max = Epomaker_SPEED_MAX;
Drift.speed = Epomaker_SPEED_DEFAULT;
Drift.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Drift.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Drift.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Drift.speed_min = EPOMAKER_SPEED_MIN;
Drift.speed_max = EPOMAKER_SPEED_MAX;
Drift.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Drift);
mode Waves_ripple;
Waves_ripple.name = "Waves ripple";
Waves_ripple.value = Epomaker_MODE_WAVES_RIPPLE;
Waves_ripple.value = EPOMAKER_MODE_WAVES_RIPPLE;
Waves_ripple.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Waves_ripple.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Waves_ripple.brightness_min = Epomaker_BRIGHTNESS_MIN;
Waves_ripple.brightness_max = Epomaker_BRIGHTNESS_MAX;
Waves_ripple.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Waves_ripple.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Waves_ripple.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Waves_ripple.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
modes.push_back(Waves_ripple);
mode Stars_twinkle;
Stars_twinkle.name = "Stars twinkle";
Stars_twinkle.value = Epomaker_MODE_STARS_TWINKLE;
Stars_twinkle.value = EPOMAKER_MODE_STARS_TWINKLE;
Stars_twinkle.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Stars_twinkle.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Stars_twinkle.brightness_min = Epomaker_BRIGHTNESS_MIN;
Stars_twinkle.brightness_max = Epomaker_BRIGHTNESS_MAX;
Stars_twinkle.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Stars_twinkle.speed_min = Epomaker_SPEED_MIN;
Stars_twinkle.speed_max = Epomaker_SPEED_MAX;
Stars_twinkle.speed = Epomaker_SPEED_DEFAULT;
Stars_twinkle.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Stars_twinkle.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Stars_twinkle.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Stars_twinkle.speed_min = EPOMAKER_SPEED_MIN;
Stars_twinkle.speed_max = EPOMAKER_SPEED_MAX;
Stars_twinkle.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Stars_twinkle);
mode Steady_stream;
Steady_stream.name = "Steady stream";
Steady_stream.value = Epomaker_MODE_STEADY_STREAM;
Steady_stream.value = EPOMAKER_MODE_STEADY_STREAM;
Steady_stream.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR;
Steady_stream.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Steady_stream.brightness_min = Epomaker_BRIGHTNESS_MIN;
Steady_stream.brightness_max = Epomaker_BRIGHTNESS_MAX;
Steady_stream.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Steady_stream.speed_min = Epomaker_SPEED_MIN;
Steady_stream.speed_max = Epomaker_SPEED_MAX;
Steady_stream.speed = Epomaker_SPEED_DEFAULT;
Steady_stream.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Steady_stream.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Steady_stream.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Steady_stream.speed_min = EPOMAKER_SPEED_MIN;
Steady_stream.speed_max = EPOMAKER_SPEED_MAX;
Steady_stream.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Steady_stream);
mode Shadowing;
Shadowing.name = "Reactive";
Shadowing.value = Epomaker_MODE_SHADOWING;
Shadowing.value = EPOMAKER_MODE_SHADOWING;
Shadowing.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Shadowing.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Shadowing.brightness_min = Epomaker_BRIGHTNESS_MIN;
Shadowing.brightness_max = Epomaker_BRIGHTNESS_MAX;
Shadowing.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Shadowing.speed_min = Epomaker_SPEED_MIN;
Shadowing.speed_max = Epomaker_SPEED_MAX;
Shadowing.speed = Epomaker_SPEED_DEFAULT;
Shadowing.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Shadowing.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Shadowing.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Shadowing.speed_min = EPOMAKER_SPEED_MIN;
Shadowing.speed_max = EPOMAKER_SPEED_MAX;
Shadowing.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Shadowing);
mode Peaks_rising;
Peaks_rising.name = "Peaks rising one after another";
Peaks_rising.value = Epomaker_MODE_PEAKS_RISING_ONE_AFTER_ANOTHER;
Peaks_rising.value = EPOMAKER_MODE_PEAKS_RISING_ONE_AFTER_ANOTHER;
Peaks_rising.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Peaks_rising.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Peaks_rising.brightness_min = Epomaker_BRIGHTNESS_MIN;
Peaks_rising.brightness_max = Epomaker_BRIGHTNESS_MAX;
Peaks_rising.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Peaks_rising.speed_min = Epomaker_SPEED_MIN;
Peaks_rising.speed_max = Epomaker_SPEED_MAX;
Peaks_rising.speed = Epomaker_SPEED_DEFAULT;
Peaks_rising.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Peaks_rising.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Peaks_rising.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Peaks_rising.speed_min = EPOMAKER_SPEED_MIN;
Peaks_rising.speed_max = EPOMAKER_SPEED_MAX;
Peaks_rising.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Peaks_rising);
mode Sine_wave;
Sine_wave.name = "Sine wave";
Sine_wave.value = Epomaker_MODE_SINE_WAVE;
Sine_wave.value = EPOMAKER_MODE_SINE_WAVE;
Sine_wave.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Sine_wave.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Sine_wave.brightness_min = Epomaker_BRIGHTNESS_MIN;
Sine_wave.brightness_max = Epomaker_BRIGHTNESS_MAX;
Sine_wave.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Sine_wave.speed_min = Epomaker_SPEED_MIN;
Sine_wave.speed_max = Epomaker_SPEED_MAX;
Sine_wave.speed = Epomaker_SPEED_DEFAULT;
Sine_wave.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Sine_wave.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Sine_wave.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Sine_wave.speed_min = EPOMAKER_SPEED_MIN;
Sine_wave.speed_max = EPOMAKER_SPEED_MAX;
Sine_wave.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Sine_wave);
mode Caispring;
Caispring.name = "Caispring Surging";
Caispring.value = Epomaker_MODE_CAISPRING_SURGING;
Caispring.value = EPOMAKER_MODE_CAISPRING_SURGING;
Caispring.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR;
Caispring.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Caispring.brightness_min = Epomaker_BRIGHTNESS_MIN;
Caispring.brightness_max = Epomaker_BRIGHTNESS_MAX;
Caispring.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Caispring.speed_min = Epomaker_SPEED_MIN;
Caispring.speed_max = Epomaker_SPEED_MAX;
Caispring.speed = Epomaker_SPEED_DEFAULT;
Caispring.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Caispring.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Caispring.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Caispring.speed_min = EPOMAKER_SPEED_MIN;
Caispring.speed_max = EPOMAKER_SPEED_MAX;
Caispring.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Caispring);
mode Flowers_blooming;
Flowers_blooming.name = "Flowers blooming";
Flowers_blooming.value = Epomaker_MODE_FLOWERS_BLOOMING;
Flowers_blooming.value = EPOMAKER_MODE_FLOWERS_BLOOMING;
Flowers_blooming.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR;
Flowers_blooming.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Flowers_blooming.brightness_min = Epomaker_BRIGHTNESS_MIN;
Flowers_blooming.brightness_max = Epomaker_BRIGHTNESS_MAX;
Flowers_blooming.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Flowers_blooming.speed_min = Epomaker_SPEED_MIN;
Flowers_blooming.speed_max = Epomaker_SPEED_MAX;
Flowers_blooming.speed = Epomaker_SPEED_DEFAULT;
Flowers_blooming.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Flowers_blooming.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Flowers_blooming.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Flowers_blooming.speed_min = EPOMAKER_SPEED_MIN;
Flowers_blooming.speed_max = EPOMAKER_SPEED_MAX;
Flowers_blooming.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Flowers_blooming);
mode Laser;
Laser.name = "Laser";
Laser.value = Epomaker_MODE_LASER;
Laser.value = EPOMAKER_MODE_LASER;
Laser.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Laser.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Laser.brightness_min = Epomaker_BRIGHTNESS_MIN;
Laser.brightness_max = Epomaker_BRIGHTNESS_MAX;
Laser.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Laser.speed_min = Epomaker_SPEED_MIN;
Laser.speed_max = Epomaker_SPEED_MAX;
Laser.speed = Epomaker_SPEED_DEFAULT;
Laser.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Laser.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Laser.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Laser.speed_min = EPOMAKER_SPEED_MIN;
Laser.speed_max = EPOMAKER_SPEED_MAX;
Laser.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Laser);
mode Peak_turn;
Peak_turn.name = "Peak turn";
Peak_turn.value = Epomaker_MODE_PEAK_TURN;
Peak_turn.value = EPOMAKER_MODE_PEAK_TURN;
Peak_turn.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR;
Peak_turn.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Peak_turn.brightness_min = Epomaker_BRIGHTNESS_MIN;
Peak_turn.brightness_max = Epomaker_BRIGHTNESS_MAX;
Peak_turn.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Peak_turn.speed_min = Epomaker_SPEED_MIN;
Peak_turn.speed_max = Epomaker_SPEED_MAX_SPECIAL;
Peak_turn.speed = Epomaker_SPEED_DEFAULT;
Peak_turn.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Peak_turn.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Peak_turn.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Peak_turn.speed_min = EPOMAKER_SPEED_MIN;
Peak_turn.speed_max = EPOMAKER_SPEED_MAX_SPECIAL;
Peak_turn.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Peak_turn);
mode Inclined_rain;
Inclined_rain.name = "Inclined Rain";
Inclined_rain.value = Epomaker_MODE_INCLINED_RAIN;
Inclined_rain.value = EPOMAKER_MODE_INCLINED_RAIN;
Inclined_rain.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Inclined_rain.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Inclined_rain.brightness_min = Epomaker_BRIGHTNESS_MIN;
Inclined_rain.brightness_max = Epomaker_BRIGHTNESS_MAX;
Inclined_rain.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Inclined_rain.speed_min = Epomaker_SPEED_MIN;
Inclined_rain.speed_max = Epomaker_SPEED_MAX;
Inclined_rain.speed = Epomaker_SPEED_DEFAULT;
Inclined_rain.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Inclined_rain.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Inclined_rain.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Inclined_rain.speed_min = EPOMAKER_SPEED_MIN;
Inclined_rain.speed_max = EPOMAKER_SPEED_MAX;
Inclined_rain.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Inclined_rain);
mode Snow;
Snow.name = "Snow";
Snow.value = Epomaker_MODE_SNOW;
Snow.value = EPOMAKER_MODE_SNOW;
Snow.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Snow.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Snow.brightness_min = Epomaker_BRIGHTNESS_MIN;
Snow.brightness_max = Epomaker_BRIGHTNESS_MAX;
Snow.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Snow.speed_min = Epomaker_SPEED_MIN;
Snow.speed_max = Epomaker_SPEED_MAX_SPECIAL;
Snow.speed = Epomaker_SPEED_DEFAULT;
Snow.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Snow.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Snow.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Snow.speed_min = EPOMAKER_SPEED_MIN;
Snow.speed_max = EPOMAKER_SPEED_MAX_SPECIAL;
Snow.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Snow);
mode Meteor;
Meteor.name = "Meteor";
Meteor.value = Epomaker_MODE_METEOR;
Meteor.value = EPOMAKER_MODE_METEOR;
Meteor.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Meteor.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Meteor.brightness_min = Epomaker_BRIGHTNESS_MIN;
Meteor.brightness_max = Epomaker_BRIGHTNESS_MAX;
Meteor.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Meteor.speed_min = Epomaker_SPEED_MIN;
Meteor.speed_max = Epomaker_SPEED_MAX_SPECIAL;
Meteor.speed = Epomaker_SPEED_DEFAULT;
Meteor.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Meteor.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Meteor.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Meteor.speed_min = EPOMAKER_SPEED_MIN;
Meteor.speed_max = EPOMAKER_SPEED_MAX_SPECIAL;
Meteor.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Meteor);
mode Through_the_snow;
Through_the_snow.name = "Through the snow (non trace)";
Through_the_snow.value = Epomaker_MODE_THROUGH_THE_SNOW_NON_TRACE;
Through_the_snow.value = EPOMAKER_MODE_THROUGH_THE_SNOW_NON_TRACE;
Through_the_snow.flags = MODE_FLAG_AUTOMATIC_SAVE | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR;
Through_the_snow.color_mode = MODE_COLORS_PER_LED | MODE_COLORS_RANDOM;
Through_the_snow.brightness_min = Epomaker_BRIGHTNESS_MIN;
Through_the_snow.brightness_max = Epomaker_BRIGHTNESS_MAX;
Through_the_snow.brightness = Epomaker_BRIGHTNESS_DEFAULT;
Through_the_snow.speed_min = Epomaker_SPEED_MIN;
Through_the_snow.speed_max = Epomaker_SPEED_MAX_SPECIAL;
Through_the_snow.speed = Epomaker_SPEED_DEFAULT;
Through_the_snow.brightness_min = EPOMAKER_BRIGHTNESS_MIN;
Through_the_snow.brightness_max = EPOMAKER_BRIGHTNESS_MAX;
Through_the_snow.brightness = EPOMAKER_BRIGHTNESS_DEFAULT;
Through_the_snow.speed_min = EPOMAKER_SPEED_MIN;
Through_the_snow.speed_max = EPOMAKER_SPEED_MAX_SPECIAL;
Through_the_snow.speed = EPOMAKER_SPEED_DEFAULT;
modes.push_back(Through_the_snow);
SetupZones();
@ -287,26 +287,26 @@ void RGBController_EpomakerController::DeviceUpdateLEDs()
void RGBController_EpomakerController::DeviceUpdateMode()
{
if(modes[active_mode].value == Epomaker_MODE_DRIFT)
if(modes[active_mode].value == EPOMAKER_MODE_DRIFT)
{
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
controller->SetOption(Epomaker_OPTION_DRIFT_LEFT);
controller->SetOption(EPOMAKER_OPTION_DRIFT_LEFT);
}
else if(modes[active_mode].direction == MODE_DIRECTION_RIGHT)
{
controller->SetOption(Epomaker_OPTION_DRIFT_RIGHT);
controller->SetOption(EPOMAKER_OPTION_DRIFT_RIGHT);
}
else if(modes[active_mode].direction == MODE_DIRECTION_UP)
{
controller->SetOption(Epomaker_OPTION_DRIFT_UP);
controller->SetOption(EPOMAKER_OPTION_DRIFT_UP);
}
else if(modes[active_mode].direction == MODE_DIRECTION_DOWN)
{
controller->SetOption(Epomaker_OPTION_DRIFT_DOWN);
controller->SetOption(EPOMAKER_OPTION_DRIFT_DOWN);
}
}
else if(modes[active_mode].value == Epomaker_MODE_STEADY_STREAM)
else if(modes[active_mode].value == EPOMAKER_MODE_STEADY_STREAM)
{
/*---------------------------------------------------------*\
| TODO: These OPTIONS (zig-zag, return) should not |
@ -314,14 +314,14 @@ void RGBController_EpomakerController::DeviceUpdateMode()
\*---------------------------------------------------------*/
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
controller->SetOption(Epomaker_OPTION_STEADY_STREAM_ZIG_ZAG);
controller->SetOption(EPOMAKER_OPTION_STEADY_STREAM_ZIG_ZAG);
}
else if(modes[active_mode].direction == MODE_DIRECTION_RIGHT)
{
controller->SetOption(Epomaker_OPTION_STEADY_STREAM_RETURN);
controller->SetOption(EPOMAKER_OPTION_STEADY_STREAM_RETURN);
}
}
else if(modes[active_mode].value == Epomaker_MODE_CAISPRING_SURGING)
else if(modes[active_mode].value == EPOMAKER_MODE_CAISPRING_SURGING)
{
/*---------------------------------------------------------*\
| TODO: These OPTIONS (in, out) should not |
@ -329,25 +329,25 @@ void RGBController_EpomakerController::DeviceUpdateMode()
\*---------------------------------------------------------*/
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
controller->SetOption(Epomaker_OPTION_CAISPRING_SURGING_OUT);
controller->SetOption(EPOMAKER_OPTION_CAISPRING_SURGING_OUT);
}
else if(modes[active_mode].direction == MODE_DIRECTION_RIGHT)
{
controller->SetOption(Epomaker_OPTION_CAISPRING_SURGING_IN);
controller->SetOption(EPOMAKER_OPTION_CAISPRING_SURGING_IN);
}
}
else if(modes[active_mode].value == Epomaker_MODE_FLOWERS_BLOOMING)
else if(modes[active_mode].value == EPOMAKER_MODE_FLOWERS_BLOOMING)
{
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
controller->SetOption(Epomaker_OPTION_FLOWERS_BLOOMING_LEFT);
controller->SetOption(EPOMAKER_OPTION_FLOWERS_BLOOMING_LEFT);
}
else if(modes[active_mode].direction == MODE_DIRECTION_RIGHT)
{
controller->SetOption(Epomaker_OPTION_FLOWERS_BLOOMING_RIGHT);
controller->SetOption(EPOMAKER_OPTION_FLOWERS_BLOOMING_RIGHT);
}
}
else if(modes[active_mode].value == Epomaker_MODE_PEAK_TURN)
else if(modes[active_mode].value == EPOMAKER_MODE_PEAK_TURN)
{
/*---------------------------------------------------------*\
| TODO: These OPTIONS (clockwise, anti-clockwise) |
@ -355,16 +355,16 @@ void RGBController_EpomakerController::DeviceUpdateMode()
\*---------------------------------------------------------*/
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
controller->SetOption(Epomaker_OPTION_PEAK_TURN_ANTI_CLOCKWISE);
controller->SetOption(EPOMAKER_OPTION_PEAK_TURN_ANTI_CLOCKWISE);
}
else if(modes[active_mode].direction == MODE_DIRECTION_RIGHT)
{
controller->SetOption(Epomaker_OPTION_PEAK_TURN_CLOCKWISE);
controller->SetOption(EPOMAKER_OPTION_PEAK_TURN_CLOCKWISE);
}
}
else
{
controller->SetOption(Epomaker_OPTION_DEFAULT);
controller->SetOption(EPOMAKER_OPTION_DEFAULT);
}
controller->SetDazzle(modes[active_mode].color_mode == MODE_COLORS_RANDOM);