Kelimion / odin-cue-sdk

Odin port of the Corsair CUE SDK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Odin bindings for the CUE SDK

This Odin port of the official CUE SDK bindings allows you to control the lighting on CORSAIR devices.

See the CUE SDK for its documentation and library releases.

Resources

Example usage

package corsair_cue_example_properties

import "core:fmt"
import cue "../../corsair-cue"

print_device_info :: proc(di: ^cue.Device_Info, index: i32) {
	assert(di != nil)
	using fmt

	using di
	printf("\tDevice Type:     %v\n", type)
	printf("\tDevice Model:    %v\n", model)
	printf("\tPhysical Layout: %v\n", physical_layout)
	printf("\tLogical Layout:  %v\n", logical_layout)
	printf("\tLEDs count:      %v\n", leds_count)

	device := cstring(raw_data(di.device_id[:]))
	printf("\tDevice ID:       %v\n", device)

	println("\tCapabilities:")

	if .Lighting in capabilities {
		println("\t\tLighting")
	}

	if .Property_Lookup in capabilities {
		println("\t\tProperty Lookup")
		print_device_caps(index)
	}
}

print_device_caps :: proc(index: i32) {
	using fmt
	using cue

	println("\tProperties:")
	if val, ok := get_bool_property_value(index, .Headset_Mic_Enabled); ok {
		printf("\t\tHeadset mic enabled value:   %v", val)
	}

	if val, ok := get_bool_property_value(index, .Headset_Surround_Sound_Enabled); ok {
		printf("\t\tHeadset surround enabled val: %v", val)
	}

	if val, ok := get_bool_property_value(index, .Headset_Sidetone_Enabled); ok {
		printf("\t\tHeadset sidetone enabled val: %v", val)
	}

	if val, ok := get_i32_property_value(index, .Headset_Equalizer_Preset); ok {
		printf("\t\tActive headset equalize preset index: %v", val)
	}
}

main :: proc() {
	using fmt
	using cue
	err:  Error

	if !init("../../lib/CUESDK.x64_2017.dll") {
		println("Corsair SDK couldn't be initialized.")
		return
	}
	defer destroy()

	protocol_details := perform_protocol_handshake()
	if err = get_last_error(); err != .None {
		printf("Error: %v\n", err)
		return
	}

	printf("Corsair CUE SDK version: %v\n", protocol_details.sdk_version)
	printf("Server      SDK version: %v\n", protocol_details.server_version)

	printf("SDK    protocol version: %v\n", protocol_details.sdk_protocol_version)
	printf("Server protocol version: %v\n", protocol_details.server_protocol_version)
	printf("Breaking changes:        %v\n", protocol_details.breaking_changes)

	println()

	device_count := get_device_count()
	if device_count == 0 {
		println("No devices connected.")
	} else {
		for i := i32(0); i < device_count; i += 1 {
			printf("Device: #%v\n", i)
			di := get_device_info(i)
			print_device_info(di, i)
		}
	}
}

About

Odin port of the Corsair CUE SDK


Languages

Language:Odin 100.0%