forked from Hay1tsme/segatools
chuniio: Add OpeNITHM LED protocol support #26
@ -139,9 +139,10 @@ void chuni_io_slider_start(chuni_io_slider_callback_t callback);
|
|||||||
void chuni_io_slider_stop(void);
|
void chuni_io_slider_stop(void);
|
||||||
|
|
||||||
/* Update the RGB lighting on the slider. A pointer to an array of 32 * 3 = 96
|
/* Update the RGB lighting on the slider. A pointer to an array of 32 * 3 = 96
|
||||||
bytes is supplied. The illuminated areas on the touch slider are some
|
bytes is supplied, organized in BRG format.
|
||||||
combination of rectangular regions and dividing lines between these regions
|
The first set of bytes is the right-most slider key, and from there the bytes
|
||||||
but the exact mapping of this lighting control buffer is still TBD.
|
alternate between the dividers and the keys until the left-most key.
|
||||||
|
There are 31 illuminated sections in total.
|
||||||
|
|
||||||
Minimum API version: 0x0100 */
|
Minimum API version: 0x0100 */
|
||||||
|
|
||||||
|
@ -63,6 +63,8 @@ void chuni_io_config_load(
|
|||||||
cfg->controller_led_output_pipe = GetPrivateProfileIntW(L"led", L"controllerLedOutputPipe", 1, filename);
|
cfg->controller_led_output_pipe = GetPrivateProfileIntW(L"led", L"controllerLedOutputPipe", 1, filename);
|
||||||
cfg->controller_led_output_serial = GetPrivateProfileIntW(L"led", L"controllerLedOutputSerial", 0, filename);
|
cfg->controller_led_output_serial = GetPrivateProfileIntW(L"led", L"controllerLedOutputSerial", 0, filename);
|
||||||
|
|
||||||
|
cfg->controller_led_output_openithm = GetPrivateProfileIntW(L"led", L"controllerLedOutputOpeNITHM", 0, filename);
|
||||||
|
|
||||||
cfg->led_serial_baud = GetPrivateProfileIntW(L"led", L"serialBaud", 921600, filename);
|
cfg->led_serial_baud = GetPrivateProfileIntW(L"led", L"serialBaud", 921600, filename);
|
||||||
|
|
||||||
GetPrivateProfileStringW(
|
GetPrivateProfileStringW(
|
||||||
|
@ -18,6 +18,8 @@ struct chuni_io_config {
|
|||||||
bool controller_led_output_pipe;
|
bool controller_led_output_pipe;
|
||||||
bool controller_led_output_serial;
|
bool controller_led_output_serial;
|
||||||
|
|
||||||
|
bool controller_led_output_openithm;
|
||||||
|
|
||||||
// The name of a COM port to output LED data on, in serial mode
|
// The name of a COM port to output LED data on, in serial mode
|
||||||
wchar_t led_serial_port[12];
|
wchar_t led_serial_port[12];
|
||||||
int32_t led_serial_baud;
|
int32_t led_serial_baud;
|
||||||
|
@ -127,7 +127,11 @@ void led_output_update(uint8_t board, const byte* rgb)
|
|||||||
|
|
||||||
if (config->controller_led_output_serial)
|
if (config->controller_led_output_serial)
|
||||||
{
|
{
|
||||||
|
if (config->controller_led_output_openithm){
|
||||||
|
led_serial_update_openithm(rgb);
|
||||||
|
} else {
|
||||||
led_serial_update(escaped_data);
|
led_serial_update(escaped_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ chuniio_lib = static_library(
|
|||||||
include_directories : inc,
|
include_directories : inc,
|
||||||
implicit_include_directories : false,
|
implicit_include_directories : false,
|
||||||
c_pch : '../precompiled.h',
|
c_pch : '../precompiled.h',
|
||||||
|
|
||||||
sources : [
|
sources : [
|
||||||
'chu2to3.c',
|
'chu2to3.c',
|
||||||
'chu2to3.h',
|
'chu2to3.h',
|
||||||
|
@ -97,3 +97,27 @@ void led_serial_update(struct _chuni_led_data_buf_t* data)
|
|||||||
|
|
||||||
ReleaseMutex(serial_write_mutex);
|
ReleaseMutex(serial_write_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void led_serial_update_openithm(const byte* rgb)
|
||||||
|
{
|
||||||
Dniel97 marked this conversation as resolved
|
|||||||
|
if (serial_port != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
char led_buffer[100];
|
||||||
|
DWORD bytes_to_write; // No of bytes to write into the port
|
||||||
|
DWORD bytes_written = 0; // No of bytes written to the port
|
||||||
|
bytes_to_write = sizeof(led_buffer);
|
||||||
|
BOOL status;
|
||||||
|
|
||||||
|
led_buffer[0] = 0xAA;
|
||||||
|
led_buffer[1] = 0xAA;
|
||||||
|
memcpy(led_buffer+2, rgb, sizeof(uint8_t) * 96);
|
||||||
|
led_buffer[98] = 0xDD;
|
||||||
|
led_buffer[99] = 0xDD;
|
||||||
|
|
||||||
|
status = WriteFile(serial_port, // Handle to the Serial port
|
||||||
|
led_buffer, // Data to be written to the port
|
||||||
|
bytes_to_write, // No of bytes to write
|
||||||
|
&bytes_written, // Bytes written
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -13,3 +13,4 @@
|
|||||||
|
|
||||||
HRESULT led_serial_init(wchar_t led_com[12], DWORD baud);
|
HRESULT led_serial_init(wchar_t led_com[12], DWORD baud);
|
||||||
void led_serial_update(struct _chuni_led_data_buf_t* data);
|
void led_serial_update(struct _chuni_led_data_buf_t* data);
|
||||||
|
void led_serial_update_openithm(const byte* rgb);
|
4
dist/chuni/segatools.ini
vendored
4
dist/chuni/segatools.ini
vendored
@ -82,10 +82,12 @@ cabLedOutputSerial=0
|
|||||||
controllerLedOutputPipe=1
|
controllerLedOutputPipe=1
|
||||||
; Output slider LED data to the serial port
|
; Output slider LED data to the serial port
|
||||||
controllerLedOutputSerial=0
|
controllerLedOutputSerial=0
|
||||||
|
; Use the OpeNITHM protocol for serial LED output
|
||||||
|
controllerLedOutputOpeNITHM=0
|
||||||
Dniel97
commented
OpeNITHM lol OpeNITHM
lol
|
|||||||
|
|
||||||
; Serial port to send data to if using serial output. Default is COM5.
|
; Serial port to send data to if using serial output. Default is COM5.
|
||||||
;serialPort=COM5
|
;serialPort=COM5
|
||||||
; Baud rate for serial data
|
; Baud rate for serial data (set to 115200 if using OpeNITHM)
|
||||||
;serialBaud=921600
|
;serialBaud=921600
|
||||||
|
|
||||||
; Data output a sequence of bytes, with JVS-like framing.
|
; Data output a sequence of bytes, with JVS-like framing.
|
||||||
|
8
dist/chusan/segatools.ini
vendored
8
dist/chusan/segatools.ini
vendored
@ -108,10 +108,12 @@ cabLedOutputSerial=0
|
|||||||
controllerLedOutputPipe=1
|
controllerLedOutputPipe=1
|
||||||
; Output slider LED data to the serial port
|
; Output slider LED data to the serial port
|
||||||
controllerLedOutputSerial=0
|
controllerLedOutputSerial=0
|
||||||
|
; Use the OpeNITHM protocol for serial LED output
|
||||||
|
controllerLedOutputOpeNITHM=0
|
||||||
Dniel97 marked this conversation as resolved
Outdated
Dniel97
commented
see above see above
|
|||||||
|
|
||||||
; Serial port to send data to if using serial output. Default is COM5.
|
; Serial port to send data to if using serial output. Default is COM5.
|
||||||
;serialPort=COM5
|
;serialPort=COM5
|
||||||
; Baud rate for serial data
|
; Baud rate for serial data (set to 115200 if using OpeNITHM)
|
||||||
Dniel97 marked this conversation as resolved
Outdated
Dniel97
commented
see above see above
|
|||||||
;serialBaud=921600
|
;serialBaud=921600
|
||||||
|
|
||||||
; Data output a sequence of bytes, with JVS-like framing.
|
; Data output a sequence of bytes, with JVS-like framing.
|
||||||
@ -202,7 +204,3 @@ ir=0x20
|
|||||||
; ... etc ...
|
; ... etc ...
|
||||||
;cell31=0x53
|
;cell31=0x53
|
||||||
;cell32=0x53
|
;cell32=0x53
|
||||||
|
|
||||||
; Enable slider LED serial output. This follows OpeNITHM Serial LED Protocol.
|
|
||||||
; eg. COM5
|
|
||||||
;ledport=
|
|
||||||
|
Loading…
Reference in New Issue
Block a user
Please remove the nw line here and adjust the comments to either use
or align them properly