From 41bfb2cdd7901614f2d69d7d4559be06e079ab22 Mon Sep 17 00:00:00 2001 From: polymurph Date: Sat, 14 Aug 2021 15:07:45 +0200 Subject: [PATCH] added foo for example of the interface principle --- bsl/csl/PC/peripherals/pinPC.hpp | 15 +++++++++++++++ main.cpp | 17 +++++++++++++++++ main.hpp | 1 + runtest | Bin 28512 -> 28768 bytes 4 files changed, 33 insertions(+) create mode 100644 bsl/csl/PC/peripherals/pinPC.hpp diff --git a/bsl/csl/PC/peripherals/pinPC.hpp b/bsl/csl/PC/peripherals/pinPC.hpp new file mode 100644 index 0000000..8661eb1 --- /dev/null +++ b/bsl/csl/PC/peripherals/pinPC.hpp @@ -0,0 +1,15 @@ +#ifndef __PINPC_HPP__ +#define __PINPC_HPP__ + +#include + +struct Pin_PC : Pin +{ + void writeImpl(bool logic) + { + std::cout << "PC pin set to " << logic << std::endl; + } +}; + + +#endif // __PINPC_HPP__ \ No newline at end of file diff --git a/main.cpp b/main.cpp index a52103e..9e6e9bb 100644 --- a/main.cpp +++ b/main.cpp @@ -16,6 +16,14 @@ CommandManager commander; Pin_Raspberry rpin; +Pin_PC pcpin; + +template +void baa(Pin& p) +{ + p.write(true); +} + void dummy() { rpin.write(1); @@ -23,10 +31,19 @@ void dummy() } +void foo() +{ + std::cout << "foo" << std::endl; + + baa(rpin); + baa(pcpin); +} + int main(int argc, char *argv[]) { std::cout << "Main Begin" << std::endl; commander.addNewCommand("dummy", "The test command for testing the test", dummy); + commander.addNewCommand("foo", "The test command for foo was called", foo); commander(argv[1]); std::cout << "Main End" << std::endl; return 1; diff --git a/main.hpp b/main.hpp index 5e48fef..206957a 100644 --- a/main.hpp +++ b/main.hpp @@ -7,5 +7,6 @@ #include "./utils/commandManager.h" #include "./interfaces/pin.hpp" #include "bsl/csl/raspberry/peripherals/pinRaspberry.hpp" +#include "bsl/csl/PC/peripherals/pinPC.hpp" #endif // __MAIN_HPP__ diff --git a/runtest b/runtest index f1a0c3a69effc357b9e9a9243115a8f67ef0862a..2685520e787d213fabd3bd683919bd1c692e3a0e 100755 GIT binary patch literal 28768 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 Fe*NZq1; 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