Getting started
Getting started may be the most challenging part of every new library. This guide is describing how to start with the library quickly and effectively
Download library
Library is primarly hosted on Github.
You can get it by:
Downloading latest release from releases area on Github
Cloning
mainbranch for latest stable versionCloning
developbranch for latest development
Download from releases
All releases are available on Github releases area.
Clone from Github
First-time clone
This is used when you do not have yet local copy on your machine.
Make sure
gitis installed.Open console and navigate to path in the system to clone repository to. Use command
cd your_pathClone repository with one of available options below
Run
git clone --recurse-submodules https://github.com/MaJerle/lwrbcommand to clone entire repository, including submodulesRun
git clone --recurse-submodules --branch develop https://github.com/MaJerle/lwrbto clone development branch, including submodulesRun
git clone --recurse-submodules --branch main https://github.com/MaJerle/lwrbto clone latest stable branch, including submodules
Navigate to
examplesdirectory and run favourite example
Update cloned to latest version
Open console and navigate to path in the system where your repository is located. Use command
cd your_pathRun
git pull origin maincommand to get latest changes onmainbranchRun
git pull origin developcommand to get latest changes ondevelopbranchRun
git submodule update --init --remoteto update submodules to latest version
Note
This is preferred option to use when you want to evaluate library and run prepared examples. Repository consists of multiple submodules which can be automatically downloaded when cloning and pulling changes from root repository.
Add library to project
At this point it is assumed that you have successfully download library, either with git clone command or with manual download from the library releases page.
Next step is to add the library to the project, by means of source files to compiler inputs and header files in search path.
CMake is the main supported build system. Package comes with the CMakeLists.txt and library.cmake files, both located in the lwrb directory:
library.cmake: It is a fully configured set of variables and with library definition. User can include this file to the project file withinclude(path/to/library.cmake)and then manually use the variables provided by the file, such as list of source files, include paths or necessary compiler definitions. It is up to the user to properly use the this file on its own.CMakeLists.txt: It is a wrapper-only file and includeslibrary.cmakefile. It is used for when user wants to include the library to the main project by simply calling CMakeadd_subdirectorycommand, followed bytarget_link_librariesto link external library to the final project.
Tip
Open library.cmake and analyze the provided information. Among variables, you can also find list of all possible exposed libraries for the user.
If you do not use the CMake, you can do the following:
Copy
lwrbfolder to your project, it contains library filesAdd
lwrb/src/includefolder to include path of your toolchain. This is where C/C++ compiler can find the files during compilation process. Usually using-IflagAdd source files from
lwrb/src/folder to toolchain build. These files are built by C/C++ compileryBuild the project
Minimal example code
To verify proper library setup, minimal example has been prepared. Run it in your main application file to verify its proper execution
1#include "lwrb/lwrb.h"
2
3/* Declare rb instance & raw data */
4lwrb_t buff;
5uint8_t buff_data[8];
6
7/* Application code ... */
8lwrb_init(&buff, buff_data, sizeof(buff_data)); /* Initialize buffer */
9
10/* Write 4 bytes of data */
11lwrb_write(&buff, "0123", 4);
12
13/* Print number of bytes in buffer */
14printf("Bytes in buffer: %d\r\n", (int)lwrb_get_full(&buff));
15/* Will print "4" */
16
17/* Now let's read */
18uint8_t data[8]; /* Application working data */
19size_t len;
20
21/* Read from buffer, will return number of bytes read */
22len = lwrb_read(&buff, data, sizeof(data));
23printf("Number of bytes read: %d\r\n", (int)len);
24
25/* Data is now available in the "data" variable */