# LibMRAA

**libmraa - Low Level Skeleton Library for Communication on GNU/Linux platforms**\
Libmraa is a C/C++ library with bindings to Python, Javascript and Java to interface with the I/O on ruggedBoard, Galileo, Edison & other platforms, with a structured and sane API where port names/numbering matches the board that you are on. Use of libmraa does not tie you to specific hardware with board detection done at runtime you can create portable code that will work across the supported platforms.

The intent is to make it easier for developers and sensor manufacturers to map their sensors & actuators on top of supported hardware and to allow control of low level communication protocol by high level languages & constructs.

![LIBMRAA ARCHITECTURE](/files/-Ldh81JwUK0mgT1n1wcs)

These interfaces allow you to interact with all libmraa functionality. The C++ classes directly wrap the C API and provide a near 1:1 mapping of functionality.

* UART
* SPI
* I2C
* GPIO
* PWM
* LED

**LibMraa code flow:**\
Code flow starts from arm.c file. In arm.c file, it calls different boards. In arm.c file we have to register our board information, like hardware name and board name. \
Example: ruggedBOARD\_A5D2x

&#x20;<br>

<div align="center"><img src="/files/-LdhEJmr1PZ_ohoniikB" alt="Code Flow"></div>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ruggedboard.gitbook.io/ruggedboard/tutorial-using-c/lib-mraa-and-upm-sensor-libraries/know-your-libraries/libmraa.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
