generators issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/generators/-/issues2019-08-29T20:23:01+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/21Tag parsing2019-08-29T20:23:01+02:00Alexander David HellwigTag parsingCreate a parser that can read .tag files and turn them into MQTTConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/mqtt](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiA...Create a parser that can read .tag files and turn them into MQTTConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/mqtt](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/tree/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware):
- [x] Add a MQTTConnectionsSymbolCreator similar to [RosConnectionSymbolCreator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosConnectionSymbolCreator.java)
- Goal: Read a .tag file, convert it into MQTTConnectionSymbols and add them the specified EMAPortSymbol or EMAPortInstanceSymbol. MontiCore/EmbeddedMontiArc automatically reads the file reading and preprocesses the data. Therefore you only need to implement a `TagSymbolCreator`
- [x] There should be no references to Ros in the new SymbolCreator. The main regex can be found in line 50.
- Online java regex checker: `http://www.regexplanet.com/advanced/java/index.html`
- [x] Add a MQTTTagSchema similar to [RosToEmamTagSchema](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosToEmamTagSchema.java)
- [x] Add a Testcase similar to [test/.../middleware/ros/TaggingTest](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/middleware/ros/TaggingTest.java).
- [x] you will need to add your Tag Schema to the tagging resolver here: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/AbstractTaggingResolverTest.java#L56
## EMAM2Middleware
Here we are waiting for the merge request (https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/merge_requests/18) to proceed
- [x] pom.xml: Update the EmbeddedMontiArc dependency to the Version with your parser
- [x] DestributedTargetGeneratorCLI
- [x] resolve all MQTTConnectionSymbols from the Symbol table. Example for ros: [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L167)
- [x] the actual resolving is implemented [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/java/de/monticore/lang/monticar/generator/roscpp/helper/TagHelper.java#L20) in RosCpp, you can choose in which Project you want to implement it.
- [x] Previous test case
- [x] Adapt: Don't hand add the MQTTConnectionSymbols, build a .tag file, use your TagHelper(or equivalent) to resolve the MQTTConnectionSymbols
- Example for Ros: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L60 and line 64Georg VinogradovJannis Joachim TölleMike GrüneGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/22Fix: create folder before writting files in generate method2019-08-29T14:00:50+02:00Alexander David HellwigFix: create folder before writting files in generate methode.g.
```java
File directory = new File(generationTargetPath);
directory.mkdirs();
```e.g.
```java
File directory = new File(generationTargetPath);
directory.mkdirs();
```https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/13Move to EMADL2020-10-29T16:22:18+01:00Evgeny KusmenkoMove to EMADLCan this clas be moved to EMADL language project?
https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/blob/develop/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.javaCan this clas be moved to EMADL language project?
https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/blob/develop/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.javaNicola GattoEyüp HarputluNicola Gattohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/cnnarch2x/-/issues/2Padding type2019-09-26T14:00:01+02:00Evgeny KusmenkoPadding typePadding is defined to be a string in the readme, but is actually a list of ints in the implementation.
both should be possiblePadding is defined to be a string in the readme, but is actually a list of ints in the implementation.
both should be possibleJulian Johannes Steinsberger-DührßenBo PengTim Benjamin SchuppJulian Johannes Steinsberger-Dührßenhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/20Integration into EMAM2Middleware2019-08-25T20:47:10+02:00Alexander David HellwigIntegration into EMAM2MiddlewareIn EMAM2Middleware https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/tree/integrate-MQTT:
* [x] pom.xml
* [x] add the [dependency](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2M...In EMAM2Middleware https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/tree/integrate-MQTT:
* [x] pom.xml
* [x] add the [dependency](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/pom.xml#L103) of your mw generator
* [x] (increment [project version](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/pom.xml#L12))
* [x] New Class in de.monticore.lang.monticar.generator.middleware.impls
* [x] Wrapper for your generator
* [x] implements GeneratorImpl
* [x] similar to [RosCppGenImpl](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/impls/RosCppGenImpl.java)
* [x] Changes for [DistributedTargetGeneratorCli](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java)
* [x] New Constant like [Line 47](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L47)
* [x] also add to [getGeneratorNames()](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L89)
* [x] add to [runGenerator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L164), ignoring TagSchema and TagHelper instructions for now
* [x] Add a new Test Class
* [x] Similar to [Ros2GenerationTest](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L17)
* [x] 1 or more TestCases
* [x] replace [resolveTags](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L28) with manual adding of your middleware Tags as in the previous Test cases
* [x] add the [CPP](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L32) and your middleware generator
* [x] compile the result using [gitlab-ci](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/.gitlab-ci.yml#L35) and your docker imageGeorg VinogradovJannis Joachim TölleMike GrüneGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/21Integration into EMAM2Middleware2019-08-23T14:35:18+02:00Alexander David HellwigIntegration into EMAM2MiddlewareIn EMAM2Middleware:
- pom.xml
- add the [dependency](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/pom.xml#L103) of your mw generator
- (increment [project version](https://git.rwth...In EMAM2Middleware:
- pom.xml
- add the [dependency](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/pom.xml#L103) of your mw generator
- (increment [project version](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/pom.xml#L12))
- New Class in de.monticore.lang.monticar.generator.middleware.impls
- Wrapper for your generator
- implements GeneratorImpl
- similar to [RosCppGenImpl](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/impls/RosCppGenImpl.java)
- Changes for [DistributedTargetGeneratorCli](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java)
- New Constant like [Line 47](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L47)
- also add to [getGeneratorNames()](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L89)
- add to [runGenerator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L164), ignoring TagSchema and TagHelper instructions for now
- Add a new Test Class
- Similar to [Ros2GenerationTest](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L17)
- 1 or more TestCases
- replace [resolveTags](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L28) with manual adding of your middleware Tags as in the previous Test cases
- add the [CPP](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L32) and your middleware generator
- compile the result using [gitlab-ci](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/.gitlab-ci.yml#L35) and your docker imagehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/20Prepare Templates for Integration2019-07-30T21:52:39+02:00Alexander David HellwigPrepare Templates for Integration- CMake.ftl
- add the code generated by EMAM2CPP to the imported libraries(will replace the mock you used until now): https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/mont...- CMake.ftl
- add the code generated by EMAM2CPP to the imported libraries(will replace the mock you used until now): https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl#L14
- add the IAdapter interface to the imported libraries: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl#L15
- Adapter.h.ftl/Adapter.cpp.ftl
- import the code generated by EMAM2CPP: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L8
- import the IAdapter interface to the imported libraries:https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L9
- implement the IAdapter interface: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L15https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/19Prepare Templates for Integration2019-08-25T17:33:55+02:00Alexander David HellwigPrepare Templates for Integration- CMake.ftl
- add the code generated by EMAM2CPP to the imported libraries(will replace the mock you used until now): https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/mont...- CMake.ftl
- add the code generated by EMAM2CPP to the imported libraries(will replace the mock you used until now): https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl#L14
- add the IAdapter interface to the imported libraries: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl#L15
- Adapter.h.ftl/Adapter.cpp.ftl
- import the code generated by EMAM2CPP: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L8
- import the IAdapter interface to the imported libraries:https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L9
- implement the IAdapter interface: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl#L15Georg VinogradovGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/19Add deploy job to gitlab-ci2019-07-30T21:52:16+02:00Alexander David HellwigAdd deploy job to gitlab-ci- Used to deploy the resulting jar to the se maven repository
- similar to [roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.yml#L5)
- remove maven goal sonar:sonar for now
- onl...- Used to deploy the resulting jar to the se maven repository
- similar to [roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.yml#L5)
- remove maven goal sonar:sonar for now
- only deploy on master branch!(use only,except)
- only deployed changes can be used in other Projects(except if both artifacts are build on the same machine)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/18Add deploy job to gitlab-ci2019-07-28T15:26:31+02:00Alexander David HellwigAdd deploy job to gitlab-ci- Used to deploy the resulting jar to the se maven repository
- similar to [roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.yml#L5)
- remove maven goal sonar:sonar for now
- onl...- Used to deploy the resulting jar to the se maven repository
- similar to [roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.yml#L5)
- remove maven goal sonar:sonar for now
- only deploy on master branch!(use only,except)
- only deployed changes can be used in other Projects(except if both artifacts are build on the same machine)Jannis Joachim TölleJannis Joachim Töllehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/17Fix Subscribers/Publishers(MQTT)2019-07-28T14:47:00+02:00Alexander David HellwigFix Subscribers/Publishers(MQTT)- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the MQTTConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `mqttIn`(from [here](https://git.rwth-aac...- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the MQTTConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `mqttIn`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/blob/16-add-basic-adapter-generation/src/main/resources/de/monticore/lang/monticar/generator/mqtt/template/Callback.cpp.ftl#L30))
- it must be possible to write to more than one port, since a MQTTConnectionSymbol could be added to each incomming Port. You might need to create multiple instances of Callback or multiple Callback classes.
- Publisher
- use variable port name instead of `mqttOut`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/blob/16-add-basic-adapter-generation/src/main/resources/de/monticore/lang/monticar/generator/mqtt/template/Adapter.cpp.ftl#L50))https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/18Fix Subscribers/Publishers(SomeIP)2019-09-23T08:36:50+02:00Alexander David HellwigFix Subscribers/Publishers(SomeIP)- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the SomeIPConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `someIPIn`(from [here](https://git.rwth...- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the SomeIPConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `someIPIn`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/blob/master/src/main/resources/de/monticore/lang/monticar/generator/someip/template/Adapter.cpp.ftl#L50))
- it must be possible to write to more than one port, since a SomeIPConnectionSymbol could be added to each incomming Port. You might need to create multiple callback methods in the Adapter.
- Publisher
- use variable port name instead of `someIPOut`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/blob/master/src/main/resources/de/monticore/lang/monticar/generator/someip/template/Adapter.cpp.ftl#L61)). You will need to generate multiple publish methods.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/17Remove example Adapter from Dockerfile2019-07-14T22:07:17+02:00Alexander David HellwigRemove example Adapter from Dockerfilehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/32Issues with dynamic using2019-07-11T17:19:56+02:00Wei XuIssues with dynamic usingSome bugs occurred when dynamic ports are used in cooperative Autopilot development.
1. Generation of connecting method<br>
Duplicate Method for the copy of dynamic message inputs shows as follows:<br>
```js
dynamic component St...Some bugs occurred when dynamic ports are used in cooperative Autopilot development.
1. Generation of connecting method<br>
Duplicate Method for the copy of dynamic message inputs shows as follows:<br>
```js
dynamic component Statusduplicate{
ports
// copy statusmessage for dupilcate in ports
dynamic in Statusmessage status_msg[0:32],
dynamic out Statusmessage status_msg1[0:32],
...
out Statusmessage smsg;
@ status_msg::connect{/*interface for dynamic ports*/}
implementation Math{
for i = 1:32
if is_connected(status_msg,i)
smsg = status_msg(i);
if ports_connect(status_msg1, i, smsg)
status_msg1(i) = smsg;
end
....
end
end
}
}
```
Once the Statusduplicate component is instantiated is the structure like follows
```js
dynamic component Autopilot{
ports
dynamic in Statusmessage status_msg[0:32],
...
instance Statusduplicate s_dup;
instance Autopilot1 ap1;
@ status_msg::connect{
connect status_msg[?] -> s_dup.status_msg[?];
}
@ s_dup.status_msg1::connect{
connect s_dup.status_msg1 -> ap1.status_msg[?];
}
}
dynamic component Autopilot1{
ports
dynamic in Statusmessage status_msg[0:32],
...
instance Statusduplicate s_dup;
@ status_msg::connect{
connect status_msg[?] -> s_dup.status_msg[?];
}
}
```
the generated c++ file of Statusduplicate instance in Autopilot1 wont't contain the ports_connect methods.
2. When there are dynamic connects and static connects in one component, sometimes the execution order in generated c++ file is not correct, but it happens irregularly, so current the detailed problems cannot locate.
3. Generation of C++ files costs too long time when there are dynamic ports and connects in the model, the generation of around 4000 lines component costs over 10 hours(without dynamic using only 10 - 20 minutes), it may due to some redundant processes. Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/-/issues/2Matrix type translation is not generated if the connectionsymbol contains a ...2022-04-28T12:58:53+02:00Alexander David HellwigMatrix type translation is not generated if the connectionsymbol contains a msgFieldAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/16Add basic Adapter generation2019-07-12T11:57:14+02:00Alexander David HellwigAdd basic Adapter generationAdd basic generation of a Adapter .cpp and .h files
Deliverables:
- new Template Adapter.cpp.ftl and/or Adapter.h.ftl
- Can be based on Adapter.ftl template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/gener...Add basic generation of a Adapter .cpp and .h files
Deliverables:
- new Template Adapter.cpp.ftl and/or Adapter.h.ftl
- Can be based on Adapter.ftl template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl). Possible easiest if you implement your own MQTTMacro.ftl(reference: [RosMacros.ftl](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/RosMacros.ftl)) and use the original `Adapter.ftl`.
- Result should look or work similar to your example adapter .cpp and .h
- Assume all values are written/read as doubles for now(e.g. ignore all Matrix/Vector types, Struct Types)
- You can ignore all generics, for now
- The resulting class should should be named `MQTTAdapter_${escapedCompName}`, where `${escapedCompName}` is `componentInstance.getFullName()` with all `.`, `[`,`]` replaced by `_`
- In MQTTTemplates:
- A new constant + fill method pair for the new template(s)
- A new Class MQTTAdapterModel:
- can be based on the [RosAdapterModel](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/java/de/monticore/lang/monticar/generator/roscpp/template/RosAdapterModel.java) in RosCpp
- should contain all information needed to generate the Adapter
- (escaped) name of the component instance
- MQTTPorts of the component
- Possibly grouped by incomming/outgoing(for subscribers/publishers respectivly)
- In MQTTGenerator:
- a method `+ List<File> generateAdapter(EMAComponentInstanceSymbol)` that generates the CMake file using the MQTTTemplate Class and the template Adapter.cpp.ftl and/or Adapter.h.ftl.
- Add a test case:
- as previously(Issue #13):
- parse a simple componentInstance
- manually add MQTTConnectionSymbols with `EMAPortInstanceSymbol::setMiddlewareSymbol`
- call `generateCMake` on the componentInstance
- compare the resulting File(s) with an expected result(AbstractSymtabTest::testFilesAreEqual)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/16Add basic Adapter Generation2019-07-14T17:30:39+02:00Alexander David HellwigAdd basic Adapter GenerationAdd basic generation of a Adapter .cpp and .h files
Deliverables:
- new Template Adapter.cpp.ftl and/or Adapter.h.ftl
- Can be based on Adapter.ftl template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/gener...Add basic generation of a Adapter .cpp and .h files
Deliverables:
- new Template Adapter.cpp.ftl and/or Adapter.h.ftl
- Can be based on Adapter.ftl template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/Adapter.ftl). Possible easiest if you implement your own SomeIPMacro.ftl(reference: [RosMacros.ftl](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/RosMacros.ftl)) and use the original `Adapter.ftl`.
- Result should look or work similar to your example adapter .cpp and .h
- Assume all values are written/read as doubles for now(e.g. ignore all Matrix/Vector types, Struct Types)
- You can ignore all generics, for now
- The resulting class should should be named `SomeIPAdapter_${escapedCompName}`, where `${escapedCompName}` is `componentInstance.getFullName()` with all `.`, `[`,`]` replaced by `_`
- In SomeIPTemplates:
- A new constant + fill method pair for the new template(s)
- A new Class SomeIPAdapterModel:
- can be based on the [RosAdapterModel](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/java/de/monticore/lang/monticar/generator/roscpp/template/RosAdapterModel.java) in RosCpp
- should contain all information needed to generate the Adapter
- (escaped) name of the component instance
- SomeIPPorts of the component
- Possibly grouped by incomming/outgoing(for subscribers/publishers respectivly)
- In SomeIPGenerator:
- a method `+ List<File> generateAdapter(EMAComponentInstanceSymbol)` that generates the CMake file using the SomeIPTemplate Class and the template Adapter.cpp.ftl and/or Adapter.h.ftl.
- Add a test case:
- as previously(Issue #13):
- parse a simple componentInstance
- manually add SomeIPConnectionSymbols with `EMAPortInstanceSymbol::setMiddlewareSymbol`
- call `generateCMake` on the componentInstance
- compare the resulting File(s) with an expected result(AbstractSymtabTest::testFilesAreEqual)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/15Add basic CMake generation2019-07-10T12:55:39+02:00Alexander David HellwigAdd basic CMake generationAdd basic generation of a CMake File to compile an SomeIPAdapter(e.g. your example Adapter)
Deliverables:
- new Template CMakeLists.ftl
- Can be based on CMake template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMo...Add basic generation of a CMake File to compile an SomeIPAdapter(e.g. your example Adapter)
Deliverables:
- new Template CMakeLists.ftl
- Can be based on CMake template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl)
- Result should look similar to your example adapter's CMakeLists.txt
- The resulting compiled library should be named `SomeIPAdapter_${escapedCompName}`, where `${escapedCompName}` is `componentInstance.getFullName()` with all `.`, `[`,`]` replaced by `_`
- In SomeIPTemplates:
- A new constant + fill method pair for the template CMakeLists.ftl
- In SomeIPGenerator:
- a method `+ File generateCMake(EMAComponentInstanceSymbol)` that generates the CMake file using the SomeIPTemplate Class and the template CMakeLists.ftl.
- Add a test case:
- as previously(Issue #13):
- parse a simple componentInstance
- manually add SomeIPConnectionSymbols with `EMAPortInstanceSymbol::setMiddlewareSymbol`
- call `generateCMake` on the componentInstance
- compare the resulting File with an expected result(AbstractSymtabTest::testFilesAreEqual)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/15Add CMake Generation2019-07-08T12:00:32+02:00Alexander David HellwigAdd CMake GenerationAdd basic generation of a CMake File to compile an MQTTAdapter(e.g. your example Adapter)
Deliverables:
- new Template CMakeLists.ftl
- Can be based on CMake template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMont...Add basic generation of a CMake File to compile an MQTTAdapter(e.g. your example Adapter)
Deliverables:
- new Template CMakeLists.ftl
- Can be based on CMake template in [EMAM2Roscpp](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/resources/de/monticore/lang/monticar/generator/roscpp/template/CMakeLists.ftl)
- Result should look similar to your example adapter's CMakeLists.txt
- The resulting compiled library should be named `MQTTAdapter_${escapedCompName}`, where `${escapedCompName}` is `componentInstance.getFullName()` with all `.`, `[`,`]` replaced by `_`
- In MQTTTemplates:
- A new constant + fill method pair for the template CMakeLists.ftl
- In MQTTGenerator:
- a method `+ File generateCMake(EMAComponentInstanceSymbol)` that generates the CMake file using the MQTTTemplate Class and the template CMakeLists.ftl.
- Add a test case:
- as previously(Issue #13):
- parse a simple componentInstance
- manually add SomeIPConnectionSymbols with `EMAPortInstanceSymbol::setMiddlewareSymbol`
- call `generateCMake` on the componentInstance
- compare the resulting File with an expected result(AbstractSymtabTest::testFilesAreEqual)Mike GrüneMike Grünehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/12Checksum calculation for larger files fails2020-10-29T16:21:26+01:00Ghost UserChecksum calculation for larger files failsThe method `getChecksumForFile(...)` in file EMADLGenerator.java fails for larger files. It was executed on our training set (~2.0 GB) and failed.The method `getChecksumForFile(...)` in file EMADLGenerator.java fails for larger files. It was executed on our training set (~2.0 GB) and failed.