#hsl #card #travel #java #data #models #version

scannit-core-ffi

scannit-core 的 FFI 封装。以 FFI 友好的方式导出 scannit-core 的功能和数据模型。

3 个版本 (稳定)

1.0.11 2020年3月14日
1.0.5 2019年10月27日
0.1.0 2019年8月17日

#148FFI

MIT 许可证

74KB
1.5K SLoC

scannit-core

Build Status

这是一个用于读取 V2 HSL 旅行卡 的库。它基于 HSL 提供的 Java 库,并是我基于 V1、C# 版本的库的演进,HSLTravelSharp

用法

将以下内容添加到您的 Cargo.toml 中

[dependencies]
scannit-core = "0.1.0"

获取 TravelCard 对象需要通过 NFC 与您的实体旅行卡通信。这在本仓库的 scannit-cli 子项目中有所体现。

创建 TravelCard 对象的示例可能如下所示

use scannit_core::travelcard::create_travel_card;

// function declaration here somewhere...

let app_info: &[u8] = get_app_info_from_nfc_card();
let control_info: &[u8] = get_control_info_from_nfc_card();
let period_pass: &[u8] = get_period_pass_from_nfc_card();
let stored_value: &[u8] = get_stored_value_from_nfc_card();
let e_ticket: &[u8] = get_e_ticket_from_nfc_card();
let all_history : &[u8] = get_history_from_nfc_card();

let travel_card = create_travel_card(
    app_info,
    control_info,
    period_pass,
    stored_value,
    e_ticket,
    all_history,
);

此 crate 还通过 desfire 模块公开了与 NFC 卡通信的命令。

FFI

此 crate 还包括 scannit-core-ffi 子项目,其中包含主 crate 中数据模型的 FFI 友好投影以及可以用于创建(并释放)TravelCard 对象的 FFI 友好函数。请参阅 ScannitSharp 库中的 C# 示例。

构建 FFI crate

> cd scannit-core-ffi
> cargo build

或只需

> cargo build --all

构建

>cargo build

这就完了!

交叉编译应该没有太大问题,但需要交叉编译到您的目标三重组合的标准工具。Android 需要 NDK 以及为 arlinker 设置的 ~/.cargo/config,例如。

依赖项

~1.3–2MB
~27K SLoC