|
|
|
|
@ -9,25 +9,60 @@
|
|
|
|
|
|
|
|
|
|
#include "EKController.h"
|
|
|
|
|
|
|
|
|
|
static unsigned char colour_mode_data[][16] =
|
|
|
|
|
{
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x01, 0x00, 0xFF, 0x64}, // Static
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0xFF, 0x64}, // Breathing
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x03, 0xFF, 0xFF, 0x64}, // Fading
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x04, 0x00, 0xFF, 0x64}, // Marquee
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x05, 0x00, 0xFF, 0x64}, // Covering Marquee
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x06, 0x00, 0xFF, 0x64}, // Pulse
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x07, 0x00, 0xFF, 0x64}, // Wave
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x08, 0x00, 0xFF, 0x64}, // Alternating
|
|
|
|
|
{ 0x10, 0x12, 0x29, 0xAA, 0x01, 0x10, 0xA2, 0x60,
|
|
|
|
|
0x00, 0x10, 0x20, 0x01, 0x09, 0x00, 0xFF, 0x64}, // Candle
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static unsigned char speed_mode_data[][9] =
|
|
|
|
|
{
|
|
|
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // Static
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Breathing
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Fading
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Marquee
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Covering Marquee
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Pulse
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Wave
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 }, // Alternating
|
|
|
|
|
{ 0x00, 0x0C, 0x19, 0x25, 0x32, 0x3E, 0x4B, 0x57, 0x64 } // Candle
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EKController::EKController(hid_device* dev_handle, wchar_t *_vendor, wchar_t *_device_name, char *_path)
|
|
|
|
|
{
|
|
|
|
|
int tmp_size = wcslen(_vendor);
|
|
|
|
|
std::size_t tmp_size = wcslen(_vendor);
|
|
|
|
|
|
|
|
|
|
dev = dev_handle;
|
|
|
|
|
|
|
|
|
|
for(int i=0; (i < tmp_size) && (i < EK_DEVICE_NAME_SIZE); i++)
|
|
|
|
|
for(std::size_t i = 0; (i < tmp_size) && (i < EK_DEVICE_NAME_SIZE); i++)
|
|
|
|
|
{
|
|
|
|
|
device_name[i] = (char)_vendor[i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(int j=0; (j < wcslen(_vendor)) && ((tmp_size + j) < EK_DEVICE_NAME_SIZE); j++)
|
|
|
|
|
for(std::size_t j = 0; (j < wcslen(_vendor)) && ((tmp_size + j) < EK_DEVICE_NAME_SIZE); j++)
|
|
|
|
|
{
|
|
|
|
|
device_name[tmp_size+j] = (char)_device_name[j];
|
|
|
|
|
device_name[tmp_size + j] = (char)_device_name[j];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
location = _path;
|
|
|
|
|
|
|
|
|
|
current_mode = EK_MODE_STATIC;
|
|
|
|
|
current_mode = EK_MODE_STATIC;
|
|
|
|
|
current_speed = EK_SPEED_NORMAL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -76,15 +111,15 @@ void EKController::SendUpdate()
|
|
|
|
|
unsigned char buffer[EK_PACKET_LENGTH] = { 0x00 };
|
|
|
|
|
int buffer_size = (sizeof(buffer) / sizeof(buffer[0]));
|
|
|
|
|
|
|
|
|
|
for(int i = 0; i < EK_COLOUR_MODE_DATA_SIZE; i++)
|
|
|
|
|
for(std::size_t i = 0; i < EK_COLOUR_MODE_DATA_SIZE; i++)
|
|
|
|
|
{
|
|
|
|
|
buffer[i] = colour_mode_data[current_mode][i];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Set the relevant colour info
|
|
|
|
|
buffer[EK_RED_BYTE] = current_red;
|
|
|
|
|
buffer[EK_RED_BYTE] = current_red;
|
|
|
|
|
buffer[EK_GREEN_BYTE] = current_green;
|
|
|
|
|
buffer[EK_BLUE_BYTE] = current_blue;
|
|
|
|
|
buffer[EK_BLUE_BYTE] = current_blue;
|
|
|
|
|
buffer[EK_SPEED_BYTE] = speed_mode_data[current_mode][current_speed];
|
|
|
|
|
|
|
|
|
|
buffer[10] = 0x10;
|
|
|
|
|
|