10个不稳定版本 (4个破坏性更新)
0.6.0 | 2024年6月12日 |
---|---|
0.5.0 | 2024年1月30日 |
0.4.1 | 2024年1月24日 |
0.3.3 | 2023年12月18日 |
0.2.1 | 2023年4月24日 |
#92 in 嵌入式开发
每月135次下载
用于 4 包
145KB
2.5K SLoC
a653rs
所需服务 https://www.aviation-ia.com/support-files/arinc653h
扩展服务 https://www.aviation-ia.com/support-files/arinc653p2h
a653rs的位置
a653rs应作为Hypervisor-Wrapper-Library、分区和进程的依赖项使用。
潜在的Hypervisor-Wrapper-Library将使用引入的Apex traits来提供符合ARINC653规范的虚拟机预期的功能。
使用Rust编写的下游分区和进程将使用a653rs
结合实现a653rs
的任何Hypervisor-Wrapper-Library,以获取用于使用Apex功能的安全抽象Apex结构。
对于这两种情况,都定义了预述,提供了所有必需的结构、特性和类型别名。
bindings
:用于虚拟机包装库prelude
:用于下游用户(分区和进程)
设计决策
该包提供多个特质,针对ARINC653标准中定义的特定功能。
- ApexBlackboardP1
- ApexBufferP1
- ApexErrorP1/P4
- ...
这些特质要求实现者实现与ARINC653标准中定义的函数密切相关的静态函数(见所需服务中的头文件)。这些函数的实现可能是对虚拟机底层C函数的bindgen。
将静态函数分离到特定的特质中,是因为这样即使是功能受限的虚拟机也能至少提供有限的集合,而不是没有任何功能。
虽然所需的功能与ARINC653标准中定义的功能密切相关,但它们并不相同。标准中的所有函数都不返回任何值。相反,它们接受引用作为参数,这些引用在函数调用过程中被修改。虽然我们的函数可以使用相同的结构,但我们选择了更类似于Rust风格的函数,其中我们至少在ReturnCode的NoError-case中返回一个预期的Ok
类型的Result,在其他所有情况下返回一个ErrorReturnCode
作为Err
类型。
ErrorReturnCode
只是没有NoError
变体的ARINC653特定ReturnCode
枚举类型。
不安全函数
虽然预期实现虚拟机包装库将需要使用大量的不安全代码块和函数,但我们的特质中只有一种类型的函数被明确标记为不安全:接受可变引用作为参数的函数。可变引用仅传递给读取/接收函数,这些函数接受对ApexByte
切片的可变引用。由于如果用户提供的可变切片太小则极为不安全,因此此函数被标记为不安全。
因此,我们通常在抽象中提供两个函数。一个是安全函数,它检查用户提供的可变切片是否至少可以容纳定义的最大消息大小,另一个是不安全函数,它只是希望读取/接收到的消息长度不超过用户期望的长度。
面向下游用户(分区和进程)的决策
待办事项
待办事项
- 编写README
- 编写RustDoc
许可信息
ARINC 653标准属于航空无线电公司(ARINC)。
对于这个库,版权属于德国航空航天中心/德意志航空航天中心协会(DLR)。
版权 © 2023 德意志航空航天中心协会(DLR)
依赖关系
~0.4–1.3MB
~27K SLoC