#watch #bindings #pebble #ffi #embedded #events

nightly pebble-sys

为Pebble(手表)SDK 4.3提供的低级别FFI绑定

1 个不稳定版本

0.0.1 2020年10月31日

#6 in #pebble


用于 pebble-skip

MIT/Apache

24KB
415

pebble-sys

Lib.rs Crates.io Docs.rs

Rust nightly-2020-10-30 Build Status Crates.io - License

GitHub open issues open pull requests crev reviews

为Pebble(手表)SDK 4.3提供的低级别FFI绑定。

我建议使用pebble-skip中的高级封装,因为它提供了几乎相同的功能,具有完整的内存安全和极小的开销。

这个crate仍在积极开发中,因此在0.1版之前,请预期会有频繁的重大变更和缺失的功能。如果您想让我优先考虑特定的API,请在GitHub上提交功能请求

安装

请使用cargo-edit始终添加此库的最新版本

cargo add pebble-sys

示例

#![no_std]

use pebble_sys::{
  foundation::app::app_event_loop,
  standard_c::memory::{c_str, void},
  user_interface::{
    window::number_window::{
      number_window_create, number_window_get_window_mut, number_window_set_value,
      NumberWindowCallbacks,
    },
    window_stack::window_stack_push,
  },
};

#[no_mangle]
pub extern "C" fn main() -> i32 {
  static mut CONTEXT: () = ();

  unsafe {
    let label = &*("miles to see you\0" as *const _ as *const c_str);
    let number_window = number_window_create(
      label,
      NumberWindowCallbacks {
        incremented: None,
        decremented: None,
        selected: None,
      },
      &mut *(&mut CONTEXT as *mut _ as *mut void),
    )
    .unwrap();
    number_window_set_value(number_window, 10_000);
    let window = number_window_get_window_mut(number_window);
    window_stack_push(window, true);
    app_event_loop();
    0
  }
}

许可证

根据您选择以下任一许可证授权:

贡献

除非您明确声明,否则您提交给作品的所有有意贡献,根据Apache-2.0许可证定义,应按上述方式双许可,不附加任何其他条款或条件。

行为准则

变更日志

版本控制

pebble-sys严格遵循语义版本控制2.0.0,以下有例外:

  • 在主要版本更改时,次要版本不会重置为0(除v1外)。
    视为全局功能级别。
  • 在主要版本或次要版本更改时,补丁版本不会重置为0(除v0.1和v1外)。
    视为全局补丁级别。

这包括上述指定的Rust版本要求。
较早的Rust版本可能与当前版本兼容,但此兼容性可能随着次要版本或补丁版本的发布而改变。

受功能和补丁影响的版本可以从CHANGELOG.md中的相应标题确定。

无运行时依赖