3 个版本
0.0.3 | 2020年11月8日 |
---|---|
0.0.2 | 2020年9月13日 |
0.0.1 | 2020年9月9日 |
#936 在 硬件支持
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