4个版本 (2个稳定版)
2.0.0 | 2022年12月23日 |
---|---|
1.0.0 | 2019年5月8日 |
0.9.0 | 2019年2月11日 |
0.8.0 | 2019年1月28日 |
在嵌入式开发中排名1676
在 2 个包中使用
73KB
1.5K SLoC
mwatch
使用Rust编写的嵌入式智能手表,使用RTFM框架进行多线程。
特性
- 电容式触摸感应输入 - 支持多点触控手势
- 全16位色ssd1351 OLED
- 可运行时安装的应用程序(更多信息请参阅SDK部分)
- 实时时钟
- 通过蓝牙发送通知
- 可在稳定的Rust 2018上构建
为MWatch开发应用程序
mwatch
提供了一个SDK,用于开发可以在运行时通过mwatch-send-tool安装的应用程序。有关SDK的更多信息,请参阅SDK仓库。
系统架构
概述
MWatch
试图遵循现代计算机操作系统,包括内核、内置的窗口/显示管理器以及用于在手表上开发用户空间应用程序的用户空间API,还有一些内置应用程序。
窗口/显示管理器
窗口管理器处理手表内部的状态/应用程序的输入和渲染,所有状态必须实现State
特质才能运行,但可以可选地实现其他辅助特质,这允许窗口管理器为状态启用更多功能。
内核API
内核提供API供SDK交互,这由内核crate中的lib.rs
提供。这允许SDK正确依赖内核,意味着如果内核实现了新的API,SDK要使用它只需提高内核版本即可。目前没有检查SDK产生的二进制文件是否与当前运行的内核兼容。
协议
MWatch
有一个内置的蓝牙模块连接到usart2
。通过这个串行接口,我们可以接收Notifications
、Applications
等。基本协议如下所示
STX -> TYPE -> (DELIM:DATA)* -> ETX
^^^^^^^^^^
Can repeat many times based on the type
在英语中,起始字节后跟一个类型,然后跟任意数量的分隔符,最后是数据,最后是ETX。所有数据必须是有效的ASCII,发送二进制数据之前必须先转换为十六进制半字节。有关更多信息,请参阅application_manager。
输入管理
内置在mwatch
中的TSC(触摸感应控制器)提供三个输入。内核轮询这些输入并将结果多路复用来生成最终输出。例如,触摸中间按钮会产生中间输出,同时触摸左右按钮会产生双击输出。
文档
变更日志
构建
- 需要安装
thumbv7em-none-eabi
目标,使用rustup target add thumbv7em-none-eabi
来完成。 - 需要
cargo-binutils
来提供额外功能,例如生成精简的二进制文件。注意:必须使用rustup component add llvm-tools-preview
安装llvm-tools-preview
组件,才能使其正常工作。
许可
根据您的选择
-
Apache License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双重许可,没有其他条款或条件。
版权所有 Scott Mabin 2019
依赖关系
约5MB
约67K SLoC