#vex #vex-v5 #vex-robotics

nightly 无 std vex-sdk

对 vexos 用户跳转表函数的原始绑定

27 个版本 (17 个破坏性版本)

0.18.0 2024 年 8 月 17 日
0.17.0 2024 年 5 月 28 日
0.16.1 2024 年 5 月 28 日
0.5.0 2024 年 3 月 31 日

#22 in 机器人

Download history 255/week @ 2024-05-02 87/week @ 2024-05-09 514/week @ 2024-05-16 521/week @ 2024-05-23 317/week @ 2024-05-30 111/week @ 2024-06-06 199/week @ 2024-06-13 43/week @ 2024-06-20 84/week @ 2024-06-27 86/week @ 2024-07-04 83/week @ 2024-07-11 29/week @ 2024-07-18 96/week @ 2024-07-25 59/week @ 2024-08-01 75/week @ 2024-08-08 194/week @ 2024-08-15

每月下载 424 次
8 个 crates 中使用 (7 个直接)

自定义许可

65KB
1K SLoC

vex_sdk

对 VEXos 用户跳转表函数的原始绑定。

此存储库作为 VEX V5 运行时 SDK (libv5rt.a) 的部分开源重新实现,但不一定旨在与 API 或 ABI 兼容。此 crate 的目的是作为构建块,用于在 V5 脑上运行高级 rust 工具,而无需以任何方式链接 C 库。

  • 跳转表和固件地址偏移量主要来自 cetio 的 VEXAPI 研究存储库
  • 符号和函数签名来自公开来源,例如 PROS 内核和 v5rtmod 等项目。

[!WARNING] 这完全是未经授权的,与 VEX 机器人没有任何关联、认可、支持或创建。

稳定性

[!CAUTION] 由于 vex_sdk 仅提供固件地址偏移量的绑定,因此无法对这些 API 提供稳定性保证。使用此 crate 有风险 - 这些可能会在任何时候随着固件更新而更改(尽管可能不会以重大方式更改,因为这会破坏现有的用户程序)。

SDK 覆盖范围

此项目旨在覆盖在 v5_api SDK 中公开可用的所有符号,以及任何已公开发布的私有符号(如 vexTaskAdd)。

libv5rt 中存在但目前在 vex_sdk 中不存在的功能

  • v5_api.hv5_types.h 以外的大部分内容。这包括“用户函数”,这些函数基本上是传递端口索引的直接便捷方法(例如,vexImuResetvexDeviceImuReset)。
  • vexSystemVersionvexStdlibVersionvexSdkVersionvexStdlibVersionLinkedvexStdlibVersionVerify,因为这些不是跳转表上的实际函数,只是地址上的数据。将来可能添加支持。
  • 大多数私有 API 符号*。
  • vexDeviceAiCamX 函数系列目前缺少绑定,但计划提供支持。

私有 API 符号

libv5rt中许多符号被保留为私有(即不包括在公共头文件中)。这通常是为了稳定性原因(VEX不想过早承诺稳定的API),或者是为了不暴露一些低级/调试函数。一般来说,这个仓库试图避免在私有API中暴露任何内容。例外情况是VEX或合作伙伴开发者为各种原因或演示而公开发布的功能。这包括以下功能:

  • vexTaskAdd
  • vexTaskGetCallbackAndId
  • vexTaskSleep
  • vexDeviceAdiAddrledSet
  • vexTasksRun(在合作伙伴SDK中称为vexBackgroundProcessing
  • vexDisplayClipRegionSetWithIndex

特别不鼓励使用这些API,因为它们可能会在任何时候因固件更新而中断。请谨慎使用(或者最好是根本不使用...)

依赖关系

~205KB