+
Skip to content
/ libxr Public
forked from Jiu-xiao/libxr

Standardized compatibility layer for operating systems and peripheral devices written in C++.

License

Notifications You must be signed in to change notification settings

fossabot/libxr

 
 

Repository files navigation

LibXR

Want to be the best embedded framework

License Documentation GitHub Issues C/C++ CI Generate and Deploy Doxygen Docs CI/CD - Python Package FOSSA Status

English | 中文

Who is this library for

  • People who do not require desktop and web applications.
  • Realtime and high performance.
  • Finish the entire project quickly and reliably.
  • Don't want to care about the differences in APIs.

Support

System Layer

  1. The application will never exit unless it reboot or enter into low-power mode.
  2. All memory is only allocated during initializtion and will never be released.
  3. The minimum Non-blocking delay is 1us, minimum blocking delay is 1ms.
  4. All unused functions will not be linked.
System Thread Timer Semaphore Mutex Queue ASync
None
FreeRTOS
ThreadX
Linux
Webots(Linux)
WebAssembly(SingleThread)

Data structure

  1. Except list and tree, the memory of other data structures are determined before construction.
  2. No blocking APIs except Queue. If you want one, use Semaphore.
Structure List Stack RBTree LockFreeQueue LockFreeList

Middleware

A collection of commonly used software.

Middleware Event Message Ramfs Terminal Database Log

Periheral Layer

Only have virtual class, you can find the drivers in Platfrom folder. For example class STM32Uart based on the virtual class Uart.

Peripheral POWER GPIO WDG PWM ADC DAC UART SPI I2C CAN/CANFD USB-CDC FLASH
STM32
ESP32
Linux
GD32
HC32
WCH32
HPM
Network TCP/UDP WIFI Bluetooth SmartConfig
Linux
ESP32
STM32

Utils

Some useful tools for debugging, robotics, and communication.

Kinematics Forward-Kinematics Inverse-Kinematics Coordinate Pose and Position
Dynamics Inertia Torque G-Compensation
Control PID LQR MPC
Signal LP Filter Kalman Filter FFT FunctionGen
Math CycleValue CRC8/16/32 Triangle

Usage

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# LibXR
set(LIBXR_SYSTEM FreeRTOS) # None/Linux/FreeRTOS...
set(LIBXR_DRIVER st)       # st/Linux/...
add_subdirectory(path_to_libxr)

target_link_libraries(${CMAKE_PROJECT_NAME}
    xr
)

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
    PUBLIC $<TARGET_PROPERTY:xr,INTERFACE_INCLUDE_DIRECTORIES>
)

Others

STM32 C++ Code Generator

libxr-python-package

Video Tutorial

Bilibili

License

FOSSA Status

About

Standardized compatibility layer for operating systems and peripheral devices written in C++.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 85.4%
  • Fortran 8.1%
  • C 2.7%
  • CMake 1.9%
  • Cuda 1.1%
  • NASL 0.3%
  • Other 0.5%
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载