4个版本
0.1.3 | 2024年3月13日 |
---|---|
0.1.2 | 2024年2月23日 |
0.1.1 | 2024年2月14日 |
0.1.0 | 2024年1月24日 |
133 in 金融
每月下载量 54
在 bnr 中使用
535KB
11K SLoC
BNR XFS
此库用于与MEI/CPI BNR现金回收设备通信。
XFS协议是通过USB连接的XML编码的消息格式。
通信通过四个端点进行
- XFS响应(设备到主机)
- XFS调用(主机到设备)
- XFS回调调用(设备到主机)
- XFS回调响应(主机到设备)
用法
设备交互的主要接口是DeviceHandle
use bnr_xfs::{CallbackArg, DeviceHandle};
// Callback handler for when an async call completes
//
// See OperationCompletedFn for details.
fn op_com(_call_id: i32, _op_id: i32, _res: i32, _ext_res: i32, _cb_arg: &mut dyn CallbackArg) {
// process the completion event...
}
// Callback handler for when an intermediate event occurs
//
// See IntermediateOccurredFn for details.
fn int_oc(_call_id: i32, _op_id: i32, _reason: i32, _cb_arg: &mut dyn CallbackArg) {
// process the intermediate event...
}
// Callback handler for when a status event occurs
//
// See StatusOccurredFn for details.
fn st_oc(_call_id: i32, _op_id: i32, _reason: i32, _cb_arg: &mut dyn CallbackArg) {
// process the status event...
}
let device_handle = DeviceHandle::open(Some(op_com), Some(int_oc), Some(st_oc)).unwrap();
let _status = device_handle.get_status().unwrap();
测试
端到端设备测试位于tests/e2e_tests 目录。
这些测试目前需要一个BNR设备连接到运行测试的计算机。
要运行测试
$ cargo test --all --features e2e_tests
进行中
仍有许多BNR XFS API表面需要从C库在Rust中实现。
实现应遵循现有函数的模式,并且任何额外的类型都需要实现转换为XFS XML。
存在辅助宏用于实现大多数基本XFS类型的转换。
如果您注意到未实现的数据类型,请提交合并请求!
依赖项
~2–15MB
~160K SLoC