diff --git a/CMakeLists.txt b/CMakeLists.txt index bcaaca9..6124cac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ set(INTERFACES_DIR ${CMAKE_SOURCE_DIR}/bsl/csl/interfaces) #################################################################################################### include(${PROJECT_DEFS}) add_subdirectory(bsl) +add_subdirectory(drivers/led) set(BSL_HEADER_FILE ${CMAKE_SOURCE_DIR}/bsl/raspberry/bsl_raspberry.hpp) diff --git a/bsl/nucleo_f042k6/bslConfig.cmake b/bsl/nucleo_f042k6/bslConfig.cmake index dbe7bbc..83da8a6 100644 --- a/bsl/nucleo_f042k6/bslConfig.cmake +++ b/bsl/nucleo_f042k6/bslConfig.cmake @@ -76,3 +76,4 @@ list(APPEND EXTRA_LIBS sub::translator) list(APPEND EXTRA_LIBS sub::sources) #list(APPEND EXTRA_LIBS sub::gpio) # TODO : PLease add this again. list(APPEND EXTRA_LIBS sub::delay) +list(APPEND EXTRA_LIBS sub::led) diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp index bb7dedc..2c0b349 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.cpp @@ -5,6 +5,7 @@ Nucleo_f042k6::Nucleo_f042k6() { stmStart(); } + Nucleo_f042k6::~Nucleo_f042k6(){} void Nucleo_f042k6::init() @@ -12,18 +13,24 @@ void Nucleo_f042k6::init() ledPin.init(); ledPin.setMode(Pin::mode::output); ledPin.setSpeed(Pin::speed::fast); - + + //Led ledGreen; + + /* pin_a0.init(); pin_a0.setMode(Pin::mode::input); pin_a0.setSpeed(Pin::speed::slow); pin_a0.setPullUpDonw(Pin::pullUpDown::pullDown); + */ } void Nucleo_f042k6::running() { - ledPin.write(true); + STM_Pin ledPin; + Led ledGreen(&ledPin); + ledGreen.on(); delay.ms(200); - ledPin.write(false); + ledGreen.off(); delay.ms(200); } diff --git a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp index ad00c00..d53c102 100644 --- a/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp +++ b/bsl/nucleo_f042k6/bsl_nucleo_f042k6.hpp @@ -4,6 +4,7 @@ #include "../csl/interfaces/pin.hpp" #include "../csl/interfaces/delay.hpp" #include "../csl/stm32f042/Inc/stm_pin.hpp" +#include "../../drivers/led/led.hpp" #include "stm32f0xx_csl.h" class Nucleo_f042k6 @@ -16,12 +17,12 @@ class Nucleo_f042k6 void init(); void running(); + private : Delay delay; - + //STM_Pin pin_a0; STM_Pin ledPin; - STM_Pin pin_a0; - + //Led ledGreen(&STM_Pin); }; #endif /* BSL_NUCLEO_F042K6_H */ diff --git a/drivers/led/CMakeLists.txt b/drivers/led/CMakeLists.txt new file mode 100644 index 0000000..be6b2df --- /dev/null +++ b/drivers/led/CMakeLists.txt @@ -0,0 +1,7 @@ +add_library(ledDriver led.cpp) + +target_compile_options(ledDriver PRIVATE ${C_FLAGS}) +target_compile_definitions(ledDriver PRIVATE ${C_DEFS}) +target_include_directories(ledDriver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + +add_library(sub::led ALIAS ledDriver) diff --git a/drivers/led/led.cpp b/drivers/led/led.cpp index 06d11ab..1749cf4 100644 --- a/drivers/led/led.cpp +++ b/drivers/led/led.cpp @@ -1,18 +1,30 @@ #include "led.hpp" +Led::Led(Pin* pin_ptr) +{ + pin = pin_ptr; + pin->init(); + pin->setMode(Pin::mode::output); + pin->setSpeed(Pin::speed::fast); +} + +Led::~Led() +{ + +} -void Pin::on() +void Led::on() { - pin.write(true); + pin->write(true); } -void Pin::off() +void Led::off() { - pin.write(false); + pin->write(false); } -void Pin::toggle() +void Led::toggle() { - pin.toggle(); + pin->toggle(); } diff --git a/drivers/led/led.hpp b/drivers/led/led.hpp index cba5706..2a6db6d 100644 --- a/drivers/led/led.hpp +++ b/drivers/led/led.hpp @@ -1,13 +1,14 @@ -#ifndef __LED_HPP -#define __LED_HPP +#ifndef _LED_HPP +#define _LED_HPP // TODO : Change Cmake to include "pin.hpp" #include "../../bsl/csl/interfaces/pin.hpp" +#include "../../bsl/csl/interfaces/delay.hpp" class Led { public: - Led(Pin& pin); + Led(Pin *pin_ptr); ~Led(); void on(); @@ -15,7 +16,7 @@ class Led void toggle(); private: - Pin& pin; + Pin *pin; }; diff --git a/main.cpp b/main.cpp index 9f34db6..b9ae02e 100644 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,10 @@ #include"main.hpp" - +#include"drivers/led/led.hpp" int main(int argc, char *argv[]) { Nucleo_f042k6 bsl; - + bsl.init(); while(1) {