From ecca9af3a3e8bbcf540acab99f82b3a1603aff9e Mon Sep 17 00:00:00 2001 From: kerem <kerem.yollu@gmail.com> Date: Tue, 28 Feb 2023 17:43:29 +0100 Subject: [PATCH] README for driver written and on looking how it presents itself --- CMakeLists.txt | 2 +- drivers/README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 31b79d1..2fd7b62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ set(DOXYGEN_WORKING_DIR ${CMAKE_SOURCE_DIR}/env/doc) # INCLUDES #################################################################################################### # Adding human readable color references for cmake -include(${CMAKE_CORE_DIR}/colors.cmake) +include(${CMAKE_CORE_DIR}/colors.cmake) # All the library and submodule funtions and definitions are written here include(${CMAKE_CORE_DIR}/cmakeCore.cmake) diff --git a/drivers/README.md b/drivers/README.md index e69de29..b44e270 100644 --- a/drivers/README.md +++ b/drivers/README.md @@ -0,0 +1,96 @@ +# Drivers +## Description +Drivers are the higher level of code prowided by *KED*. It come on top of the [Peripheras](https://git.keydev.me/kerem/KED/src/branch/master/peripherals) and alows the usage of comercially awailable IC's or moludes. + +--- +## Please follow this guide to find out about the : +- [Structure](#Structure) +- [Usage](#Usage) +- [Creation](#creation) +- [Modification](#modification) +- [Credits](#credits) +- [License](#license) +--- + +## Structure +##### The __driver__ folder has multiple elements inside : + + CMakeLists.txt + + where the DRIVERS_LIST is defined + + Folders named after the driver that they respresent. Inside you will find: + + Source file of the driver + + Header file of the driver + + This Readme file +--- + +## Usage +In the *CMakeLists.txt* you will find the decalarion of __DRIVERS_LIST__ list which contains the dirvers that are to be compiled. +The *name* of the declared *driver* also defines the name of the driver's *folder*, *souce* file and *header* file. +Once the driver is implemented correctly you can call the header of the driver from any soure of header file. +> exmaple for *ssd1306_i2c* +~~~ C +#include "ssd1306_i2c.h" +~~~ + +CMake will the automatically find the driver, compile it and implement it to the main projet as a submodule. + +--- +## Creation +### Let's implement a driver named *ssd1306_i2c* +#### First let's add *ssd1306_i2c* to the __DRIVERS_LIST__. +Open *CMakeLists.txt* with your favorite *text editor* and modifiy the line wehre __DRIVERS_LIST__ is defined. +In which order the drivers are added to the list has no importance. + +> Before adding *ssd1306_i2c* + +~~~ CMAKE +set(DRIVERS_LIST lcd_oled max7219 max31865) +~~~ + +> After adding *ssd1306_i2c* the declaration of __DRIVERS_LIST__ should look like this + +~~~ CMAKE +set(DRIVERS_LIST lcd_oled max7219 max31865 ssd1306_i2c) +~~~ + +#### Than we can create a folder with the same name +~~~ bash +mkdir ssd1306_i2c +~~~ + +#### Inside the newly created folder add the *source* and *header* file with the same name as the driver +In our case that means __ssd1306_i2c.c__ and __ssd1306_i2c.h__ + +~~~ bash +touch ssd1306_i2c.c ssd1306_i2c.h +~~~ + +#### The final structure should look like this +As you can see this folder also contains the datashhed for this driver. If you have any additional documentation like a datasheet or calculation sheet, feel free to add them here. + +~~~ bash +└── ssd1306_i2c + ├── ssd1306_i2c.c + ├── ssd1306_i2c.h + └── SSD1306.pdf +~~~ +--- +## Modification +You can modify each driver to your convinience but it can't be pushed again so please be careful during GIT transactions. +You can also remove any driver from the complation by simply removing his declaration from the __DRIVERS_LIST__ +> Like so : +set(DRIVERS_LIST lcd_oled max7219 max31865 ~~ssd1306_i2c~~) +## How to Contribute +Do you want to become a contibutor ? : +How is Ked organised : +Rules to write a Driver : + +## Credits + +Edwin Koch +Kerem Yollu + +## License + +The last section of a high-quality README file is the license. This lets other developers know what they can and cannot do with your project. If you need help choosing a license, refer to [https://choosealicense.com/](https://choosealicense.com/). + +---