Skip to content
Snippets Groups Projects
Commit f1388dd1 authored by Florian Hölzl's avatar Florian Hölzl
Browse files

Added 7 segment display actuator generator extension.

parent 0a5cb2a4
No related branches found
No related tags found
No related merge requests found
......@@ -201,6 +201,19 @@
</objectClass>
</target>
</transformationProvider>
<transformationProvider
transformationProvider="org.fortiss.af3.platform.raspberry.generator.transform.brick.ActuatorDigitsTransformation">
<source>
<objectClass
objectClass="org.fortiss.af3.platform.raspberry.model.brick.ActuatorDigits">
</objectClass>
</source>
<target>
<objectClass
objectClass="org.fortiss.af3.platform.raspberry.generator.extension.brick.ActuatorDigitsGeneratorExtension">
</objectClass>
</target>
</transformationProvider>
<transformationProvider
transformationProvider="org.fortiss.af3.platform.raspberry.generator.transform.brick.LaserRangeTransformation">
<source>
......
......@@ -5,4 +5,4 @@ ConsoleOutputGeneratorExtension.java d57db44d57630a50e26c9eeed90d6631bf99db5d YE
MultiUnitMainGenerator.java 458754b89c2d79db3fee08baa444424772e40fb7 RED
PWMActuatorGeneratorExtension.java 8cbfd72070cfc1c8a4da4ccc1d18a6b3e75cea7f YELLOW
RaspberryPIGeneratorExtension.java 2cd95ddc54d7562bd9fa0b8a4018c25eda01b5a8 RED
SingleUnitMainGenerator.java 93d0370b01330ab023e02761df818d36fac42b0f RED
SingleUnitMainGenerator.java bea3d14367798b0ac6e832328f57cd6e7ea05425 RED
......@@ -306,7 +306,8 @@ class SingleUnitMainGenerator {
String sPostfix = null;
if(exec instanceof ISingletonGeneratorExtension) {
sPostfix =
singletonPostfixMap.get(((ISingletonGeneratorExtension)exec).getSingletonIdentifier());
singletonPostfixMap.get(((ISingletonGeneratorExtension)exec)
.getSingletonIdentifier());
}
String iPostfix = instancePostfixMap.get(exec);
if(exec instanceof IWriteableGeneratorExtension) {
......@@ -316,7 +317,7 @@ class SingleUnitMainGenerator {
String novalCode = wexec.getNoValWriteCode(iPostfix, sPostfix, outport);
if(novalCode != null) {
String novalVariable = getPortNoValIdentifier(sourceVariable);
return "if (" + novalVariable + ") {\n" + novalCode + "}\n else {\n" + writeCode +
return "if (" + novalVariable + ") {\n" + novalCode + "} else {\n" + writeCode +
"}\n";
}
return writeCode;
......@@ -331,7 +332,8 @@ class SingleUnitMainGenerator {
String sPostfix = null;
if(exec instanceof ISingletonGeneratorExtension) {
sPostfix =
singletonPostfixMap.get(((ISingletonGeneratorExtension)exec).getSingletonIdentifier());
singletonPostfixMap.get(((ISingletonGeneratorExtension)exec)
.getSingletonIdentifier());
}
String iPostfix = instancePostfixMap.get(exec);
if(exec instanceof IReadableGeneratorExtension) {
......
ActuatorDigitsGeneratorExtension.java 5df8861318c5b8002785ae4ff9fb9af0d095b7bc YELLOW
BrickGeneratorExtensionBase.java 01442772f80ebf32eaf0507495a4380d0de034b1 YELLOW
LaserRangeSensorGeneratorExtension.java ff0c1e5e96a69b7deb6d7675e40f18510a36e7a0 YELLOW
UltraSonicSensorGeneratorExtension.java cbd4555e28600ce8f47c737330adfc9b5581bae8 YELLOW
/*-------------------------------------------------------------------------+
| Copyright 2018 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.extension.brick;
import org.fortiss.af3.component.model.OutputPort;
import org.fortiss.af3.platform.raspberry.generator.framework.IInstanceInitializationGeneratorExtension;
import org.fortiss.af3.platform.raspberry.generator.framework.IWriteableGeneratorExtension;
import org.fortiss.af3.platform.raspberry.model.brick.ActuatorDigits;
/**
* Generator extension for {@link ActuatorDigits}s.
*
* @author hoelzl
*/
public class ActuatorDigitsGeneratorExtension extends BrickGeneratorExtensionBase<ActuatorDigits>
implements IWriteableGeneratorExtension, IInstanceInitializationGeneratorExtension {
/** Constructor. */
public ActuatorDigitsGeneratorExtension(ActuatorDigits modelElement) {
super(modelElement);
}
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
return "bricklet_segment_display_4x7.h";
}
/** {@inheritDoc} */
@Override
public String getVariableDeclaration(String postfix, String singletonPostfix) {
StringBuilder sb = new StringBuilder();
sb.append("static SegmentDisplay4x7 segment_display_" + postfix + ";\n");
return sb.toString();
}
/** {@inheritDoc} */
@Override
public String getInstanceAuxiliaryFunctions(String postfix, String singletonPostfix) {
StringBuilder sb = new StringBuilder();
sb.append("static void set_led_display_" + postfix +
"(SegmentDisplay4x7 *segment_display, uint16_t value, bool showHex) {\n");
sb.append("static const uint8_t digits_" + postfix + "[] = {0x3f,0x06,0x5b,0x4f,\n");
sb.append(" 0x66,0x6d,0x7d,0x07,\n");
sb.append(" 0x7f,0x6f,0x77,0x7c,\n");
sb.append(" 0x39,0x5e,0x79,0x71};\n");
sb.append("if(showHex) {\n");
sb.append("uint8_t segments[4] = {(uint8_t) digits_" + postfix +
"[(value >> 12) & 0x0F], (uint8_t) digits_" + postfix +
"[(value >> 8) & 0x0F], (uint8_t) digits_" + postfix +
"[(value >> 4) & 0x0F], (uint8_t) digits_" + postfix + "[value & 0x0F]};\n");
sb.append("segment_display_4x7_set_segments(segment_display, segments, 5, false);\n");
sb.append("} else {\n");
sb.append("uint8_t segments[4] = {(uint8_t) digits_" + postfix +
"[(value%10000)/1000], (uint8_t) digits_" + postfix +
"[(value%1000)/100], (uint8_t) digits_" + postfix +
"[(value%100)/10], (uint8_t) digits_" + postfix + "[value%10]};\n");
sb.append("segment_display_4x7_set_segments(segment_display, segments, 5, false);\n");
sb.append("}\n");
sb.append("}\n\n");
return sb.toString();
}
/** {@inheritDoc} */
@Override
public String getInitializationCode(String postfix, String singletonPostfix) {
StringBuilder sb = new StringBuilder();
sb.append("segment_display_4x7_create(&segment_display_" + postfix + ", \"" +
modelElement.getUniqueBrickletID() + "\", &" +
getConnectionVariable(singletonPostfix) + ");\n");
return sb.toString();
}
/** {@inheritDoc} */
@Override
public String getWriteCode(String postfix, String singletonPostfix, OutputPort logicalSignal,
String value) {
StringBuilder sb = new StringBuilder();
sb.append("set_led_display_" + postfix + "(&segment_display_" + postfix + ", (uint16_t)" +
value + ", " + modelElement.isShowHexValue() + ");\n");
return sb.toString();
}
/** {@inheritDoc} */
@Override
public String getNoValWriteCode(String postfix, String singletonPostfix,
OutputPort logicalSignal) {
return null;
}
}
/*-------------------------------------------------------------------------+
| Copyright 2018 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.transform.brick;
import org.fortiss.af3.platform.raspberry.generator.extension.brick.ActuatorDigitsGeneratorExtension;
import org.fortiss.af3.platform.raspberry.generator.transform.RasPiGeneratorTransformationBase;
import org.fortiss.af3.platform.raspberry.model.brick.ActuatorDigits;
/** Transformation for {@link ActuatorDigits}. */
public class ActuatorDigitsTransformation extends RasPiGeneratorTransformationBase {
/** Constructor. */
public ActuatorDigitsTransformation() {
super(ActuatorDigits.class, ActuatorDigitsGeneratorExtension.class);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment