Skip to content

Commit 97478a4

Browse files
committed
Merge branch '83-implementation-hal-aktorik' into 'master'
Resolve "Implementation HAL Aktorik" Closes #83 See merge request ss21-esep-gruppe-2.3/esep!37
2 parents c873d08 + 8fcfe25 commit 97478a4

File tree

24 files changed

+987
-109
lines changed

24 files changed

+987
-109
lines changed

esep_ss2021_Gruppe2_3/.cproject

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</extensions>
1313
</storageModule>
1414
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
15-
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.258293840" name="x86_64-debug" parent="org.eclipse.cdt.build.core.emptycfg">
15+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.258293840" name="x86_64-debug" parent="org.eclipse.cdt.build.core.emptycfg">
1616
<folderInfo id="com.qnx.qcc.toolChain.258293840.1581586676" name="/" resourcePath="">
1717
<toolChain id="com.qnx.qcc.toolChain.1320243978" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
1818
<option id="com.qnx.qcc.option.os.1970530258" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
@@ -21,16 +21,16 @@
2121
<option id="com.qnx.qcc.option.runtime.149658314" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
2222
<option id="com.qnx.qcc.option.buildtype.1492891890" name="Build Type:" superClass="com.qnx.qcc.option.buildtype"/>
2323
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.288568751" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
24-
<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"/>
24+
<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"/>
2525
<tool id="com.qnx.qcc.tool.compiler.1453130778" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
26-
<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"/>
26+
<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"/>
2727
<inputType id="com.qnx.qcc.inputType.compiler.1648827221" superClass="com.qnx.qcc.inputType.compiler"/>
2828
</tool>
2929
<tool id="com.qnx.qcc.tool.assembler.394627207" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
3030
<inputType id="com.qnx.qcc.inputType.assembler.1787522021" superClass="com.qnx.qcc.inputType.assembler"/>
3131
</tool>
3232
<tool id="com.qnx.qcc.tool.linker.1476354583" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
33-
<option id="com.qnx.qcc.option.linker.langcpp.31732456" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
33+
<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"/>
3434
</tool>
3535
<tool id="com.qnx.qcc.tool.archiver.156277045" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
3636
</toolChain>
@@ -50,7 +50,7 @@
5050
</extensions>
5151
</storageModule>
5252
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
53-
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.849511972" name="x86_64-release" parent="org.eclipse.cdt.build.core.emptycfg">
53+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.849511972" name="x86_64-release" parent="org.eclipse.cdt.build.core.emptycfg">
5454
<folderInfo id="com.qnx.qcc.toolChain.849511972.554235171" name="/" resourcePath="">
5555
<toolChain id="com.qnx.qcc.toolChain.1114493579" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
5656
<option id="com.qnx.qcc.option.os.757776785" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
@@ -59,16 +59,16 @@
5959
<option id="com.qnx.qcc.option.runtime.1289868457" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
6060
<option id="com.qnx.qcc.option.buildtype.396379227" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="release" valueType="enumerated"/>
6161
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.251002228" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
62-
<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"/>
62+
<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"/>
6363
<tool id="com.qnx.qcc.tool.compiler.1566381972" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
64-
<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"/>
64+
<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"/>
6565
<inputType id="com.qnx.qcc.inputType.compiler.2032804499" superClass="com.qnx.qcc.inputType.compiler"/>
6666
</tool>
6767
<tool id="com.qnx.qcc.tool.assembler.1130745598" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
6868
<inputType id="com.qnx.qcc.inputType.assembler.1351761988" superClass="com.qnx.qcc.inputType.assembler"/>
6969
</tool>
7070
<tool id="com.qnx.qcc.tool.linker.203306295" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
71-
<option id="com.qnx.qcc.option.linker.langcpp.358618948" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
71+
<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"/>
7272
</tool>
7373
<tool id="com.qnx.qcc.tool.archiver.985696609" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
7474
</toolChain>
@@ -88,7 +88,7 @@
8888
</extensions>
8989
</storageModule>
9090
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
91-
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.1257328768" name="x86_64-coverage" parent="org.eclipse.cdt.build.core.emptycfg">
91+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1257328768" name="x86_64-coverage" parent="org.eclipse.cdt.build.core.emptycfg">
9292
<folderInfo id="com.qnx.qcc.toolChain.1257328768.2095080954" name="/" resourcePath="">
9393
<toolChain id="com.qnx.qcc.toolChain.1644953113" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
9494
<option id="com.qnx.qcc.option.os.1177809683" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
@@ -97,16 +97,16 @@
9797
<option id="com.qnx.qcc.option.runtime.1996113015" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
9898
<option id="com.qnx.qcc.option.buildtype.480369729" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="coverage" valueType="enumerated"/>
9999
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.226177272" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
100-
<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"/>
100+
<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"/>
101101
<tool id="com.qnx.qcc.tool.compiler.1691362589" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
102-
<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"/>
102+
<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"/>
103103
<inputType id="com.qnx.qcc.inputType.compiler.2139517436" superClass="com.qnx.qcc.inputType.compiler"/>
104104
</tool>
105105
<tool id="com.qnx.qcc.tool.assembler.1288780875" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
106106
<inputType id="com.qnx.qcc.inputType.assembler.693846809" superClass="com.qnx.qcc.inputType.assembler"/>
107107
</tool>
108108
<tool id="com.qnx.qcc.tool.linker.1439712232" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
109-
<option id="com.qnx.qcc.option.linker.langcpp.677364794" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
109+
<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"/>
110110
</tool>
111111
<tool id="com.qnx.qcc.tool.archiver.652629357" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
112112
</toolChain>
@@ -126,7 +126,7 @@
126126
</extensions>
127127
</storageModule>
128128
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
129-
<configuration artifactName="${ProjName}" buildProperties="" id="com.qnx.qcc.toolChain.1411453347" name="x86_64-profile" parent="org.eclipse.cdt.build.core.emptycfg">
129+
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.1411453347" name="x86_64-profile" parent="org.eclipse.cdt.build.core.emptycfg">
130130
<folderInfo id="com.qnx.qcc.toolChain.1411453347.678492994" name="/" resourcePath="">
131131
<toolChain id="com.qnx.qcc.toolChain.76680635" name="QNX QCC" superClass="com.qnx.qcc.toolChain">
132132
<option id="com.qnx.qcc.option.os.367561906" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
@@ -135,16 +135,16 @@
135135
<option id="com.qnx.qcc.option.runtime.1729549857" name="C++ Runtime:" superClass="com.qnx.qcc.option.runtime"/>
136136
<option id="com.qnx.qcc.option.buildtype.5010341" name="Build Type:" superClass="com.qnx.qcc.option.buildtype" value="profile" valueType="enumerated"/>
137137
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.1226828082" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
138-
<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"/>
138+
<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"/>
139139
<tool id="com.qnx.qcc.tool.compiler.302792889" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
140-
<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"/>
140+
<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"/>
141141
<inputType id="com.qnx.qcc.inputType.compiler.1288959387" superClass="com.qnx.qcc.inputType.compiler"/>
142142
</tool>
143143
<tool id="com.qnx.qcc.tool.assembler.24111765" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
144144
<inputType id="com.qnx.qcc.inputType.assembler.96752385" superClass="com.qnx.qcc.inputType.assembler"/>
145145
</tool>
146146
<tool id="com.qnx.qcc.tool.linker.1164860834" name="QCC Linker" superClass="com.qnx.qcc.tool.linker">
147-
<option id="com.qnx.qcc.option.linker.langcpp.631359891" superClass="com.qnx.qcc.option.linker.langcpp" useByScannerDiscovery="false" value="true" valueType="boolean"/>
147+
<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"/>
148148
</tool>
149149
<tool id="com.qnx.qcc.tool.archiver.1028638487" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
150150
</toolChain>

esep_ss2021_Gruppe2_3/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ TARGET = $(OUTPUT_DIR)/$(ARTIFACT)
1515
CC = qcc -Vgcc_nto$(PLATFORM)
1616
CXX = qcc -lang-c++ -Vgcc_nto$(PLATFORM) -DSIM_SOW_SENSORS -DSIM_SHOW_ACTUATORS
1717
CXX += -DSIM_REPORT -DSIM_EXT_CTRL
18+
# CXX += -std=c++14 # only runs with C++ 11
1819

1920
# - - - - - - - - - - - - - - - - - - - - TESTS AN/AUS - - - - - - - - - - - - - - - - - - - -
2021
#CXX += -DTEST_ENABLE
@@ -31,6 +32,7 @@ INCLUDES += -Isrc/simulation/simulationbase
3132
INCLUDES += -Isrc/simulation/simulationcore
3233
INCLUDES += -Isrc/simulation/simulationudpqnx
3334
INCLUDES += -Itest
35+
INCLUDES += -Isrc/actuators
3436
#LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib
3537
#LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib
3638
LIBS += -lsocket
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* BlinkWorker.cpp
3+
*
4+
* Created on: 30.04.2021
5+
* Author: jendr
6+
*/
7+
8+
#include <../actuators/BlinkWorker.h>
9+
#include <iostream>
10+
#include <memory>
11+
12+
namespace hal {
13+
14+
BlinkWorker::BlinkWorker(std::shared_ptr<GPIOWrapper> gpio) :
15+
_gpio { gpio }, _running { true }, _duty_cycle { 1000 }, _color { hal::RED } {
16+
_blink_lock.try_lock();
17+
}
18+
19+
void BlinkWorker::run() {
20+
int val = 0;
21+
while (_running) {
22+
_blink_lock.lock();
23+
_blink_lock.unlock();
24+
val = !val;
25+
switch (_color) {
26+
case GREEN:
27+
_gpio->out(gpio_adresses::BANK_ACTUATOR,
28+
gpio_adresses::AMPEL_GRUEN_1, val);
29+
break;
30+
case YELLOW:
31+
_gpio->out(gpio_adresses::BANK_ACTUATOR,
32+
gpio_adresses::AMPEL_GELB_1, val);
33+
break;
34+
default:
35+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1,
36+
val);
37+
break;
38+
}
39+
40+
std::this_thread::sleep_for (std::chrono::milliseconds(_duty_cycle/2));
41+
}
42+
}
43+
44+
void BlinkWorker::stop_loop() {
45+
stop_blinking();
46+
_blink_lock.unlock();
47+
_running = false;
48+
}
49+
50+
void BlinkWorker::set_duty_cycle(const uint32_t milliseconds) {
51+
_duty_cycle = milliseconds;
52+
}
53+
54+
void BlinkWorker::start_blinking(Color c) {
55+
_color = c;
56+
_blink_lock.try_lock();
57+
_blink_lock.unlock();
58+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GRUEN_1, 0);
59+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GELB_1, 0);
60+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1, 0);
61+
}
62+
63+
void BlinkWorker::stop_blinking() {
64+
_blink_lock.try_lock();
65+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GRUEN_1, 0);
66+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_GELB_1, 0);
67+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::AMPEL_ROT_1, 0);
68+
}
69+
70+
BlinkWorker::~BlinkWorker() {
71+
_running = false;
72+
_blink_lock.try_lock();
73+
_blink_lock.unlock();
74+
}
75+
76+
} /* namespace hal */
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* BlinkWorker.h
3+
*
4+
* Created on: 30.04.2021
5+
* Author: jendr
6+
*/
7+
8+
#ifndef SRC_ACTUATORS_BLINKWORKER_H_
9+
#define SRC_ACTUATORS_BLINKWORKER_H_
10+
11+
#include <mutex>
12+
#include <thread>
13+
#include "../gpiowrapper.h"
14+
#include "color.h"
15+
#include <chrono>
16+
17+
namespace hal {
18+
19+
class BlinkWorker {
20+
public:
21+
BlinkWorker(std::shared_ptr<GPIOWrapper>);
22+
BlinkWorker(const BlinkWorker&);
23+
void run();
24+
void set_duty_cycle(const uint32_t milliseconds = 1000);
25+
void start_blinking(Color);
26+
void stop_blinking();
27+
void stop_loop();
28+
virtual ~BlinkWorker();
29+
30+
private:
31+
std::shared_ptr<GPIOWrapper> _gpio;
32+
bool _running;
33+
useconds_t _duty_cycle;
34+
hal::Color _color;
35+
std::mutex _blink_lock;
36+
37+
};
38+
39+
} /* namespace hal */
40+
41+
#endif /* SRC_ACTUATORS_BLINKWORKER_H_ */
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* cb_motor.cpp
3+
*
4+
* Created on: 28.04.2021
5+
* Author: Justin Hoffmann
6+
*/
7+
8+
#include "../actuators/cb_motor.h"
9+
10+
namespace hal {
11+
12+
CBMotor::CBMotor(std::shared_ptr<GPIOWrapper> gpio) {
13+
_gpio = gpio;
14+
}
15+
16+
void CBMotor::set_direction(Direction direction) {
17+
switch(direction){
18+
case FAST_FORWARDS:
19+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
20+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
21+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
22+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 1);
23+
break;
24+
case SLOW_FORWARDS:
25+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
26+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
27+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 1);
28+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 1);
29+
break;
30+
case FAST_BACKWARDS:
31+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
32+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
33+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
34+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 1);
35+
break;
36+
case SLOW_BACKWARDS:
37+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 0);
38+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
39+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 1);
40+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 1);
41+
break;
42+
default:
43+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LANGSAM_1, 0);
44+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_LINKS_1, 0);
45+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_RECHTS_1, 0);
46+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::MOTOR_STOP_1, 1);
47+
}
48+
}
49+
50+
}
51+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* cb_motor.h
3+
*
4+
* Created on: 28.04.2021
5+
* Author: Justin Hoffmann
6+
*/
7+
8+
#ifndef SRC_ACTUATORS_CB_MOTOR_H_
9+
#define SRC_ACTUATORS_CB_MOTOR_H_
10+
11+
#include "../gpiowrapper.h"
12+
#include <memory>
13+
14+
namespace hal {
15+
16+
enum Direction {
17+
FAST_FORWARDS = 0, SLOW_FORWARDS, STOP, SLOW_BACKWARDS, FAST_BACKWARDS
18+
};
19+
20+
class CBMotor {
21+
private:
22+
std::shared_ptr<GPIOWrapper> _gpio;
23+
24+
public:
25+
CBMotor(std::shared_ptr<GPIOWrapper>);
26+
virtual ~CBMotor() = default;
27+
void set_direction(Direction);
28+
};
29+
30+
}
31+
32+
#endif /* SRC_ACTUATORS_CB_MOTOR_H_ */
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#ifndef COLOR_H
2+
#define COLOR_H
3+
4+
namespace hal{
5+
6+
enum Color {
7+
GREEN = 0, YELLOW, RED
8+
};
9+
10+
}
11+
12+
#endif
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* ejector.cpp
3+
*
4+
* Created on: 28.04.2021
5+
* Author: Justin Hoffmann
6+
*/
7+
8+
#include "../actuators/ejector.h"
9+
10+
namespace hal {
11+
12+
Ejector::Ejector(std::shared_ptr<GPIOWrapper> gpio) :
13+
SortingMechanism(gpio) {
14+
}
15+
16+
void Ejector::do_not_discard() const {
17+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
18+
0);
19+
}
20+
21+
void Ejector::discard() const {
22+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
23+
1);
24+
}
25+
26+
bool Ejector::is_open() const {
27+
return _gpio->in(gpio_adresses::BANK_INPUT, gpio_adresses::WEICHE_OFFEN_0)
28+
== 0;
29+
}
30+
31+
void Ejector::reset() const {
32+
_gpio->out(gpio_adresses::BANK_ACTUATOR, gpio_adresses::WEICHE_OEFFNEN_1,
33+
0);
34+
}
35+
36+
}
37+

0 commit comments

Comments
 (0)