Skip to content

Commit

Permalink
Merge branch '83-implementation-hal-aktorik' into 'master'
Browse files Browse the repository at this point in the history
Resolve "Implementation HAL Aktorik"

Closes #83

See merge request ss21-esep-gruppe-2.3/esep!37
  • Loading branch information
Grimmgockel committed May 3, 2021
2 parents c873d08 + 8fcfe25 commit 97478a4
Show file tree
Hide file tree
Showing 24 changed files with 987 additions and 109 deletions.
32 changes: 16 additions & 16 deletions esep_ss2021_Gruppe2_3/.cproject
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.258293840" name="x86_64-debug" parent="org.eclipse.cdt.build.core.emptycfg">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.258293840" name="x86_64-debug" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="com.qnx.qcc.toolChain.258293840.1581586676" name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.1320243978" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.os.1970530258" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
Expand All @@ -21,16 +21,16 @@
<option id="com.qnx.qcc.option.runtime.149658314" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
<option id="com.qnx.qcc.option.buildtype.1492891890" name="Build Type:" superClass="com.qnx.qcc.option.buildtype"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.288568751" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1322282193" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1322282193" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="com.qnx.qcc.tool.compiler.1453130778" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.135623402" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compiler.optlevel.135623402" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<inputType id="com.qnx.qcc.inputType.compiler.1648827221" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.394627207" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<inputType id="com.qnx.qcc.inputType.assembler.1787522021" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1476354583" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.langcpp.31732456" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.langcpp.31732456" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
</tool>
<tool id="com.qnx.qcc.tool.archiver.156277045" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
Expand All @@ -50,7 +50,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.849511972" name="x86_64-release" parent="org.eclipse.cdt.build.core.emptycfg">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.849511972" name="x86_64-release" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="com.qnx.qcc.toolChain.849511972.554235171" name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.1114493579" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.os.757776785" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
Expand All @@ -59,16 +59,16 @@
<option id="com.qnx.qcc.option.runtime.1289868457" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
<option id="com.qnx.qcc.option.buildtype.396379227" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="release" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.251002228" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1488790903" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1488790903" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="com.qnx.qcc.tool.compiler.1566381972" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.553073499" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compiler.optlevel.553073499" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<inputType id="com.qnx.qcc.inputType.compiler.2032804499" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.1130745598" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<inputType id="com.qnx.qcc.inputType.assembler.1351761988" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.203306295" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.langcpp.358618948" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.langcpp.358618948" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
</tool>
<tool id="com.qnx.qcc.tool.archiver.985696609" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
Expand All @@ -88,7 +88,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.1257328768" name="x86_64-coverage" parent="org.eclipse.cdt.build.core.emptycfg">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1257328768" name="x86_64-coverage" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="com.qnx.qcc.toolChain.1257328768.2095080954" name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.1644953113" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.os.1177809683" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
Expand All @@ -97,16 +97,16 @@
<option id="com.qnx.qcc.option.runtime.1996113015" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
<option id="com.qnx.qcc.option.buildtype.480369729" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="coverage" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.226177272" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1252444229" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1252444229" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="com.qnx.qcc.tool.compiler.1691362589" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1884546539" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compiler.optlevel.1884546539" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<inputType id="com.qnx.qcc.inputType.compiler.2139517436" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.1288780875" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<inputType id="com.qnx.qcc.inputType.assembler.693846809" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1439712232" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.langcpp.677364794" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.langcpp.677364794" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
</tool>
<tool id="com.qnx.qcc.tool.archiver.652629357" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
Expand All @@ -126,7 +126,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.1411453347" name="x86_64-profile" parent="org.eclipse.cdt.build.core.emptycfg">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1411453347" name="x86_64-profile" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="com.qnx.qcc.toolChain.1411453347.678492994" name="/" resourcePath="">
<toolChain id="com.qnx.qcc.toolChain.76680635" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
<option id="com.qnx.qcc.option.os.367561906" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
Expand All @@ -135,16 +135,16 @@
<option id="com.qnx.qcc.option.runtime.1729549857" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
<option id="com.qnx.qcc.option.buildtype.5010341" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="profile" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1226828082" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1817871264" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1817871264" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="com.qnx.qcc.tool.compiler.302792889" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
<option id="com.qnx.qcc.option.compiler.optlevel.1718725085" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<option id="com.qnx.qcc.option.compiler.optlevel.1718725085" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" useByScannerDiscovery="false" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
<inputType id="com.qnx.qcc.inputType.compiler.1288959387" superClass="com.qnx.qcc.inputType.compiler"/>
</tool>
<tool id="com.qnx.qcc.tool.assembler.24111765" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
<inputType id="com.qnx.qcc.inputType.assembler.96752385" superClass="com.qnx.qcc.inputType.assembler"/>
</tool>
<tool id="com.qnx.qcc.tool.linker.1164860834" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
<option id="com.qnx.qcc.option.linker.langcpp.631359891" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.qnx.qcc.option.linker.langcpp.631359891" name="C++ (-lang-c++)" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
</tool>
<tool id="com.qnx.qcc.tool.archiver.1028638487" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
</toolChain>
Expand Down
2 changes: 2 additions & 0 deletions esep_ss2021_Gruppe2_3/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ TARGET = $(OUTPUT_DIR)/$(ARTIFACT)
CC = qcc -Vgcc_nto$(PLATFORM)
CXX = qcc -lang-c++ -Vgcc_nto$(PLATFORM) -DSIM_SOW_SENSORS -DSIM_SHOW_ACTUATORS
CXX += -DSIM_REPORT -DSIM_EXT_CTRL
# CXX += -std=c++14 # only runs with C++ 11

# - - - - - - - - - - - - - - - - - - - - TESTS AN/AUS - - - - - - - - - - - - - - - - - - - -
#CXX += -DTEST_ENABLE
Expand All @@ -31,6 +32,7 @@ INCLUDES += -Isrc/simulation/simulationbase
INCLUDES += -Isrc/simulation/simulationcore
INCLUDES += -Isrc/simulation/simulationudpqnx
INCLUDES += -Itest
INCLUDES += -Isrc/actuators
#LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib
#LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib
LIBS += -lsocket
Expand Down
76 changes: 76 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/BlinkWorker.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* BlinkWorker.cpp
*
* Created on: 30.04.2021
* Author: jendr
*/

#include <../actuators/BlinkWorker.h>
#include <iostream>
#include <memory>

namespace hal {

BlinkWorker::BlinkWorker(std::shared_ptr<GPIOWrapper> gpio) :
_gpio { gpio }, _running { true }, _duty_cycle { 1000 }, _color { hal::RED } {
_blink_lock.try_lock();
}

void BlinkWorker::run() {
int val = 0;
while (_running) {
_blink_lock.lock();
_blink_lock.unlock();
val = !val;
switch (_color) {
case GREEN:
_gpio->out(gpio_adresses::BANK_ACTUATOR,
gpio_adresses::AMPEL_GRUEN_1, val);
break;
case YELLOW:
_gpio->out(gpio_adresses::BANK_ACTUATOR,
gpio_adresses::AMPEL_GELB_1, val);
break;
default:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1,
val);
break;
}

std::this_thread::sleep_for (std::chrono::milliseconds(_duty_cycle/2));
}
}

void BlinkWorker::stop_loop() {
stop_blinking();
_blink_lock.unlock();
_running = false;
}

void BlinkWorker::set_duty_cycle(const uint32_t milliseconds) {
_duty_cycle = milliseconds;
}

void BlinkWorker::start_blinking(Color c) {
_color = c;
_blink_lock.try_lock();
_blink_lock.unlock();
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GRUEN_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GELB_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1, 0);
}

void BlinkWorker::stop_blinking() {
_blink_lock.try_lock();
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GRUEN_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GELB_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1, 0);
}

BlinkWorker::~BlinkWorker() {
_running = false;
_blink_lock.try_lock();
_blink_lock.unlock();
}

} /* namespace hal */
41 changes: 41 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/BlinkWorker.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* BlinkWorker.h
*
* Created on: 30.04.2021
* Author: jendr
*/

#ifndef SRC_ACTUATORS_BLINKWORKER_H_
#define SRC_ACTUATORS_BLINKWORKER_H_

#include <mutex>
#include <thread>
#include "../gpiowrapper.h"
#include "color.h"
#include <chrono>

namespace hal {

class BlinkWorker {
public:
BlinkWorker(std::shared_ptr<GPIOWrapper>);
BlinkWorker(const BlinkWorker&);
void run();
void set_duty_cycle(const uint32_t milliseconds = 1000);
void start_blinking(Color);
void stop_blinking();
void stop_loop();
virtual ~BlinkWorker();

private:
std::shared_ptr<GPIOWrapper> _gpio;
bool _running;
useconds_t _duty_cycle;
hal::Color _color;
std::mutex _blink_lock;

};

} /* namespace hal */

#endif /* SRC_ACTUATORS_BLINKWORKER_H_ */
51 changes: 51 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/cb_motor.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* cb_motor.cpp
*
* Created on: 28.04.2021
* Author: Justin Hoffmann
*/

#include "../actuators/cb_motor.h"

namespace hal {

CBMotor::CBMotor(std::shared_ptr<GPIOWrapper> gpio) {
_gpio = gpio;
}

void CBMotor::set_direction(Direction direction) {
switch(direction){
case FAST_FORWARDS:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 1);
break;
case SLOW_FORWARDS:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 1);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 1);
break;
case FAST_BACKWARDS:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 1);
break;
case SLOW_BACKWARDS:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 1);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 1);
break;
default:
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 1);
}
}

}

32 changes: 32 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/cb_motor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* cb_motor.h
*
* Created on: 28.04.2021
* Author: Justin Hoffmann
*/

#ifndef SRC_ACTUATORS_CB_MOTOR_H_
#define SRC_ACTUATORS_CB_MOTOR_H_

#include "../gpiowrapper.h"
#include <memory>

namespace hal {

enum Direction {
FAST_FORWARDS = 0, SLOW_FORWARDS, STOP, SLOW_BACKWARDS, FAST_BACKWARDS
};

class CBMotor {
private:
std::shared_ptr<GPIOWrapper> _gpio;

public:
CBMotor(std::shared_ptr<GPIOWrapper>);
virtual ~CBMotor() = default;
void set_direction(Direction);
};

}

#endif /* SRC_ACTUATORS_CB_MOTOR_H_ */
12 changes: 12 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/color.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef COLOR_H
#define COLOR_H

namespace hal{

enum Color {
GREEN = 0, YELLOW, RED
};

}

#endif
37 changes: 37 additions & 0 deletions esep_ss2021_Gruppe2_3/src/actuators/ejector.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* ejector.cpp
*
* Created on: 28.04.2021
* Author: Justin Hoffmann
*/

#include "../actuators/ejector.h"

namespace hal {

Ejector::Ejector(std::shared_ptr<GPIOWrapper> gpio) :
SortingMechanism(gpio) {
}

void Ejector::do_not_discard() const {
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
0);
}

void Ejector::discard() const {
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
1);
}

bool Ejector::is_open() const {
return _gpio->in(gpio_adresses::BANK_INPUT, gpio_adresses::WEICHE_OFFEN_0)
== 0;
}

void Ejector::reset() const {
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
0);
}

}

Loading

0 comments on commit 97478a4

Please sign in to comment.