#cue #led #rgb #corsair #safe-wrapper #api-bindings #icue

cue-sdk

在 cue-sdk-sys 之上提供的高层安全包装,用于与 iCUE SDK 交互

3 个版本

0.0.3 2020年11月8日
0.0.2 2020年9月13日
0.0.1 2020年9月9日

#936硬件支持

MIT 许可证

195KB
4K SLoC

cue-sdk

对原生 iCUE SDK 的高层 Rust 包装。

如果您需要低级(且不安全)的访问,请查看此仓库的父 crate cue-sdk-sys

快速入门

请确保为 cue-sdk-sys 依赖 crate 设置所需的环境变量。

如果您需要二进制文件,最简单的方法是在 Github 发布页面 上获取它们。由于我们无法从头构建它们(不是开源的),您必须自己获取它们。

此 crate 版本针对 iCUE SDK 的 3.0.55 版本构建。

示例代码

use cue_sdk::led::LedColor;
use cue_sdk::initialize;
let sdk = initialize()
    .expect("failed to initialize sdk");
let mut  devices = sdk.get_all_devices().expect("failed to get all devices");
let new_color = LedColor { red: 200, green: 20, blue: 165 };
for d in &mut devices {
    //print some info
    println!("Device: {:?} at index {:?} has led count: ${:?}",
        d.device_info.model, d.device_index, d.leds.len());

    // set the first led in every device to our `new_color` color
    d.leds.first_mut().unwrap().update_color_buffer(new_color);
}
//flush the colors buffer (send to device hardware)
sdk.flush_led_colors_update_buffer_sync()
    .expect("failed to flush led buffer");

您可以从以下示例中注意,大多数“写入”操作可能由于各种原因而失败,包括但不限于

  • 设备状态变化(设备已被拔出/插入)
  • ffi 接口失败,由于 iCUE SDK 中的未记录的破坏性更改或 crate 代码中的错误,例如指针解引用等
  • 另一个客户端已请求独占访问

示例

有关更多示例,请参阅 示例代码 并使用 cargo run --example {example_name} 运行示例。

功能

异步

异步功能提供了返回 futures 而不是接受回调/闭包的额外方法和结构。

依赖项

~3.5–4.5MB
~90K SLoC