#protocols #raspberry-pi #peripheral #no-std

no-std fancp

解析/创建风扇控制协议消息的类型和方法

2个不稳定版本

0.6.0 2021年6月23日
0.4.2 2021年6月17日

#2080 in 嵌入式开发

MIT许可证

15KB
313

crates.io

风扇控制协议 (FCP)

一个用于传输风扇控制消息的小型协议。

为资源不被默认的系统编写的。

例如,绝对没有stdlib依赖(no_std)。此crate也不假设任何类型的堆分配器;所有操作都使用堆栈,并且非常节省。

FCP不使用浮点数。微调是通过假设值是,例如,毫伏而不是伏来完成的。这样做的原因是,并非所有微控制器都配备有浮点单元。

稳定性和版本控制

任何主要版本都不是向下兼容的。

任何新的次要版本,直到1.0可能或可能不破坏向后兼容性。1.0之后的任何新的次要版本将不会破坏向后兼容性,除非版本是安全相关或关键的。

任何新的补丁版本始终是向后兼容的。

请求

SET

SET请求用于设置变量,例如操作速度百分比。

SET请求的语法是

SET <CHAR>[VALUE]

其中

  • CHAR: 一个字节字符,表示要设置的目标。字母必须是小写。
  • VALUE: 任何没有空格字符的ASCII编码字符串。
SET %<u8> # set speed percentage
SET v<u16> # set voltage in millivolts
SET a # let the device decide

ADJ

ADJ(调整)请求用于根据当前设置调整设备参数。ADJ请求的语法是

ADJ <CHAR><VALUE>

其中

  • CHAR: 一个字节字符,表示要设置的目标。字母必须是小写。
  • VALUE: 由数字组成的数值,可以是正号(+)或负号(-)。
ADJ v<i16> # adjust the voltage in millivolts
ADJ %<i8> # adjust the speed percentage

GET

GET请求用于从操作设备获取各种读数,例如温度。GET请求的语法是

GET <PARAMETER>

其中

PARAMETER: 读取或设置,无空格字符的ASCII字符串。

GET volt # get current voltage in millivolts
get cfg # get if manual or auto
GET temp # get temperature in celcius
GET % # get speed percentage
GET all # get all possible readings

编码

ASCII。

连接

任何无损连接,如TCP或通过蓝牙的串行连接。

消息以分号(;)终止。

响应

有两种响应类型

  • Ok: 状态码0。
  • Err: 状态码1。

响应格式是 CODE:MSG,其中

  • CODE: 状态码
  • MSG: 消息字符串

示例响应

0:电压设置为3.3v

无运行时依赖