Skip to content
Snippets Groups Projects
Commit b59048a3 authored by Stefan Duenhuber's avatar Stefan Duenhuber
Browse files

Merge branch 'master' into feature/V2V

parents 5236e563 c09cceb5
No related branches found
No related tags found
1 merge request!2Feature/v2 v
Showing
with 446 additions and 54 deletions
......@@ -5,10 +5,9 @@
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Created on: 05.06.2018
* Author: Constantin
*/
* Contributors:
* Constantin Dresel - initial API and implementation
*******************************************************************************/
#ifndef INC_CONTROL_CENTER_DOWNSTREAM_H_
#define INC_CONTROL_CENTER_DOWNSTREAM_H_
......
/** @file v2v_msg_handlers.h
* \brief Handler functions for received vehicle 2 vehicle messages.
*
* Created on: 13.05.2018
* Author: Constantin
*/
#ifndef V2V_MESSAGE_HANDLERS_H_
#define V2V_MESSAGE_HANDLERS_H_
#include "v2v_message_types.h"
#include "v2v_udp_basic.h"
#include <stdint.h>
#include <unistd.h>
#include <pthread.h>
///**
// * \brief Generic monitoring handler for vehicle 2 vehicle messages.
// * This function accepts pointers to arbitrary vehicle 2 vehicle messages and
// * processes the message content for communication monitoring - i.e. it prints
// * the message content to the console in a userfriendly augmented formatting.
// * CAUTION: global_debug_print_level has to be set to DEBUG_PRINT_LEVEL_FEW or
// * something more verbose for this function to produce any output.
// * @param p_msg A pointer to the message to handle.
// */
//void v2v_msg_handler_debug_monitor_generic(af3_v2v_generic_message_t* p_msg);
/**
* \brief Monitoring handler for the vehicle 2 vehicle message type DELETEME.
* DELETEME is a sample message type created for testing purposes.
* This function accepts pointers to received messages of the type DELETEME and
* processes the message content for communication monitoring - i.e. it prints
* the message content to the console in a userfriendly augmented formatting.
* CAUTION: global_debug_print_level has to be set to DEBUG_PRINT_LEVEL_FEW or
* something more verbose for this function to produce any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_deleteme(uint8_t* p_msg, size_t msg_len);
/**
* \brief Monitoring handler for the vehicle 2 vehicle message type PLATOON.
* This function accepts pointers to received messages of the type PLATOON and
* processes the message content for communication monitoring - i.e. it prints
* the message content to the console in a userfriendly augmented formatting.
* CAUTION: global_debug_print_level has to be set to DEBUG_PRINT_LEVEL_FEW or
* something more verbose for this function to produce any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_platoon(uint8_t* p_msg, size_t msg_len);
/**
* \brief Monitoring handler for the vehicle2vehicle msg type LEADER HEARTBEAT.
* This function accepts pointers to received messages of the type LEADER
* HEARTBEAT and processes the message content for communication monitoring -
* i.e. it prints the message content to the console in a userfriendly augmented
* formatting. CAUTION: global_debug_print_level has to be set to
* DEBUG_PRINT_LEVEL_FEW or something more verbose for this function to produce
* any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_leader_heartbeat(uint8_t* p_msg,
size_t msg_len);
/**
* \brief Monitoring handler for the vehicle 2 vehicle message type FOLLOWER.
* This function accepts pointers to received messages of the type FOLLOWER and
* processes the message content for communication monitoring - i.e. it prints
* the message content to the console in a userfriendly augmented formatting.
* CAUTION: global_debug_print_level has to be set to DEBUG_PRINT_LEVEL_FEW or
* something more verbose for this function to produce any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_follower(uint8_t* p_msg, size_t msg_len);
/**
* \brief Monitoring handler for the vehicle 2 vehicle msg type LEAVE PLATOON.
* This function accepts pointers to received messages of the type LEAVE PLATOON
* and processes the message content for communication monitoring - i.e. it
* prints the message content to the console in a userfriendly augmented
* formatting. CAUTION: global_debug_print_level has to be set to
* DEBUG_PRINT_LEVEL_FEW or something more verbose for this function to produce
* any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_leave_platoon(uint8_t* p_msg, size_t msg_len)
;
/**
* \brief Monitoring handler for the vehicle 2 vehicle message type SPLIT.
* This function accepts pointers to received messages of the type SPLIT and
* processes the message content for communication monitoring - i.e. it prints
* the message content to the console in a userfriendly augmented formatting.
* CAUTION: global_debug_print_level has to be set to DEBUG_PRINT_LEVEL_FEW or
* something more verbose for this function to produce any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_split(uint8_t* p_msg, size_t msg_len);
/**
* \brief Monitoring handler for the vehicle 2 vehicle message type NEW LEADER.
* This function accepts pointers to received messages of the type NEW LEADER
* and processes the message content for communication monitoring - i.e. it
* prints the message content to the console in a userfriendly augmented
* formatting.CAUTION: global_debug_print_level has to be set to
* DEBUG_PRINT_LEVEL_FEW or something more verbose for this function to produce
* any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_new_leader(uint8_t* p_msg, size_t msg_len);
/**
* \brief Monitoring handler for the vehicle 2 vehicle msg type FUSE PLATOON.
* This function accepts pointers to received messages of the type FUSE PLATOON
* and processes the message content for communication monitoring - i.e. it
* prints the message content to the console in a userfriendly augmented
* formatting.CAUTION: global_debug_print_level has to be set to
* DEBUG_PRINT_LEVEL_FEW or something more verbose for this function to produce
* any output.
* @param p_msg A pointer to the received message.
* @param msg_len The length of the message pointed to given in bytes.
*/
void v2v_msg_handler_debug_monitor_fuse_platoon(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_debug_monitor_handshake(uint8_t* p_msg, size_t msg_len);
typedef struct v2v_msg_handler_list_entry_t {
size_t actual_message_length;
uint8_t is_new; //TODO remove when list exists
uint8_t message[V2V_MAX_UDP_PAYLOAD_BYTES]; //TODO adapt len
}v2v_msg_handler_list_entry_t;
typedef struct v2v_msg_handler_buffers_t {
v2v_msg_handler_list_entry_t deleteme_buffer;
v2v_msg_handler_list_entry_t platoon_buffer;
v2v_msg_handler_list_entry_t leader_heartbeat_buffer;
v2v_msg_handler_list_entry_t follower_buffer;
v2v_msg_handler_list_entry_t leave_platoon_buffer;
v2v_msg_handler_list_entry_t split_buffer;
v2v_msg_handler_list_entry_t new_leader_buffer;
v2v_msg_handler_list_entry_t fuse_platoon_buffer;
v2v_msg_handler_list_entry_t handshake_buffer;
}v2v_msg_handler_buffers_t;
void v2v_msg_handler_setup(v2v_msg_handler_buffers_t* p_buffers,
pthread_mutex_t* p_mutex);
void v2v_msg_handler_store_deleteme(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_platoon(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_leader_heartbeat(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_follower(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_leave_platoon(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_split(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_new_leader(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_fuse_platoon(uint8_t* p_msg, size_t msg_len);
void v2v_msg_handler_store_handshake(uint8_t* p_msg, size_t msg_len);
#endif /* V2V_MESSAGE_HANDLERS_H_ */
/** @file v2v_message_types.h
* \brief Message types and type info for vehicle 2 vehicle communication.
*
* Created on: 12.05.2018
* Author: Constantin
*/
#ifndef V2V_MESSAGE_TYPES_H_
#define V2V_MESSAGE_TYPES_H_
//#include <stdint.h>
#define V2V_MSG_TYPE_DELETEME 0x00 //!< type identifier for DELETEME
#define V2V_MSG_TYPE_PLATOON 0x01 //!< type identifier for platoon Message
#define V2V_MSG_TYPE_LEADER_HEARTBEAT 0x02 /*!< type identifier for leader
heartbeat */
#define V2V_MSG_TYPE_FOLLOWER 0x03 //!< type identifier for follower
#define V2V_MSG_TYPE_LEAVE_PLATOON 0x04 //!< type identifier for leave platoon
#define V2V_MSG_TYPE_SPLIT 0x05 //!< type identifier for split
#define V2V_MSG_TYPE_NEW_LEADER 0x06 //!< type identifier for new leader
#define V2V_MSG_TYPE_FUSE_PLATOON 0x07 //!< type identifier for fuse platoon
#define V2V_MSG_TYPE_HANDSHAKE 0x08 //!< type identifier for handshake
///** Template msg type - just a spacer*/
//typedef struct v2v_msg_deleteme_t {
// uint8_t first_spacer_field;
// uint16_t second_spacer_field;
// uint32_t third_spacer_field;
//}__attribute__ ((packed)) v2v_msg_deleteme_t; //!< the DELETEME message type
//#define V2V_MSG_SIZE_DELETEME sizeof(v2v_msg_deleteme_t) //!< DELETEME msg len
///** Platoon msg type */
//typedef struct v2v_msg_platoon_t {
// int platoon_id;
// int leader_id;
// int tail_id;
//}__attribute__ ((packed)) v2v_msg_platoon_t; //!< the platoon message type
//#define V2V_MSG_SIZE_PLATOON sizeof(v2v_msg_platoon_t) //!< platoon msg len
///** Leader heartbeat msg type*/
//typedef struct v2v_msg_leader_heartbeat_t {
// uint8_t is_leader;
// uint16_t vehicle_id;
// uint8_t number_participants;
// uint16_t list_of_participant_ids[UINT8_MAX];
// uint8_t brake_status;
//}__attribute__ ((packed)) v2v_msg_leader_heartbeat_t; /*!< the leader heartbeat
// message type */
//#define V2V_MSG_SIZE_LEADER_HEARTBEAT sizeof(v2v_msg_leader_heartbeat_t) /*!< leader
// heartbeat
// msg len */
///** Follower msg type*/
//typedef struct v2v_msg_follower_t {
// uint16_t vehicle_id;
// double heading_angle;
// double steering_angle;
// double vehicle_speed;
// double vehicle_longitudinal_acc;
// double acc_pedal_position;
// double jaw_rate;
// uint8_t brake_status;
// uint8_t flags; //TODO check whether 8bit are enough
//}__attribute__ ((packed)) v2v_msg_follower_t; //!< the follower message type
//#define V2V_MSG_SIZE_FOLLOWER sizeof(v2v_msg_follower_t) //!< follower msg len
///** Leave platoon msg type */
//typedef struct v2v_msg_leave_paltoon_t {
// uint16_t vehicle_id;
//}__attribute__ ((packed)) v2v_msg_leave_platoon_t; /*!< the leave paltoon
// message type */
//#define V2V_MSG_SIZE_LEAVE_PLATOON sizeof(v2v_msg_leave_platoon_t) /*!< leave
// platoon msg
// len */
///** Split msg type */
//typedef struct v2v_msg_split_t {
// uint16_t new_leader_id;
//}__attribute__ ((packed)) v2v_msg_split_t; //!< the split message type
//#define V2V_MSG_SIZE_SPLIT sizeof(v2v_msg_split_t) //!< split msg len
///** New leader msg type*/
//typedef struct v2v_msg_new_leader_t {
// uint16_t new_leader_id;
// uint16_t sender_id;
// uint16_t old_leader_id;
//}__attribute__ ((packed)) v2v_msg_new_leader_t; /*!< the new leader message
// type */
//#define V2V_MSG_SIZE_NEW_LEADER sizeof(v2v_msg_new_leader_t) /*!< new leader
// msg len */
///** Fuse platoon msg type */
//typedef struct v2v_msg_fuse_platoon_t {
// uint16_t sender_leader_id;
// uint16_t target_leader_id;
// uint8_t number_sender_participants;
// uint16_t list_of_sender_participant_ids[UINT8_MAX];
//}__attribute__ ((packed)) v2v_msg_fuse_platoon_t; /*!< the fuse platoon message
// type */
//#define V2V_MSG_SIZE_FUSE_PLATOON sizeof(v2v_msg_fuse_platoon_t) /*!< fuse
// platoon msg
// len */
#endif /* V2V_MESSAGE_TYPES_H_ */
/** @file v2v_udp_basic.h
* \brief Abstraction layer for vehicle 2 vehicle communication via UDP.
*
* Basic UDP broadcast functionality made more comfortable to use for vehicle 2
* vehicle communication by wrappers etc..
* Created on: 11.05.2018
* Author: Constantin
*/
#ifndef V2V_UDP_BASIC_H_
#define V2V_UDP_BASIC_H_
#include <unistd.h>
/** Define the maximum permitted payload size - see:
* https://stackoverflow.com/questions/1098897/
* what-is-the-largest-safe-udp-packet-size-on-the-internet (12.05.2018)
*/
#define V2V_MAX_UDP_PAYLOAD_BYTES 576 //IPv4
/**
* \brief Prints the given error msg combined with the an error description.
* Prints an error message containing the given message string and the error
* description from errno.
* @param p_text a pointer to the string to print
* @return number of characters printed, negative in case of error
*/
int v2v_print_error_msg(char* p_text);
/**
* \brief Initialize socket communication for v2v data exchange.
* Initializes socket communication for data exchange using udp broadcasts.
* @param p_local_sockaddr_in pointer to a sockaddr_in struct specifying the
* specifying the address and port to use for the local device.
* @return The socket file descriptor on success a negative value otherwise.
*/
int v2v_comm_init(struct sockaddr_in* p_local_sockaddr_in);
/**
* \brief Closes the socket used for v2v communication.
* Closes the specified socket specified by the given file descriptor using
* close().
* @param socket_fd_to_exit The file descriptor of the socket to close.
* @return Zero on success, negative otherwise.
*/
int v2v_comm_exit(int socket_fd_to_exit);
/**
* \brief Broadcast the given arbitrary raw msg via udp.
* Sends the specified length from the given buffer as payload of a udp
* broadcast packet.
* @param tx_buffer The buffer containing the message to transmit.
* @param tx_len The number of Bytes to transmit from tx_buffer.
* @param p_remote_sockaddr_in A pointer to a sockaddr_in struct specifying the
* remote target to send packets to (may be setup to broadcast address).
* @param socket_fd The file descriptor of the socket to use for transmitting.
* @return The number of bytes transmitted on success, negative otherwise.
*/
ssize_t v2v_comm_tx_raw(void* tx_buffer, size_t tx_len, struct sockaddr_in*
p_remote_sockaddr_in, int socket_fd);
/**
* \brief Receives arbitrary raw udp messages.
* Receives arbitrary raw udp messages and writes them to the specified
* rx_buffer.
* @param rx_buffer The buffer to write received messages to
* @param rx_buffer_size The capacity of the rx_buffer specified in bytes.
* @param p_remote_sockaddr_in A pointer to a sockaddr_in struct specifying the
* remote target to receive packets from (may be setup to receive any message).
* @param p_remote_sockaddr_in_len A pointer to a socklen_t variable where the
* length of the remote transmitters address will be stored.
* @param socket_fd The file descriptor of the socket to use for receiving.
* @return The number of bytes received on success, 0 if the socket was closed,
* negative otherwise.
*/
ssize_t v2v_comm_rx_raw(void* rx_buffer, size_t rx_buffer_size,
struct sockaddr_in* p_remote_sockaddr_in,
socklen_t* p_remote_sockaddr_in_len, int socket_fd);
#endif /*V2V_UDP_BASIC_H_*/
No preview for this file type
CanBusGeneratorExtension.java 4bed3c88e71923515d7d9dc9235bc40a49ce237f RED
CanConnectorGeneratorExtension.java 6ca987deb8c2ba4d47609691563570bf6e3d7306 RED
CanTransmissionCatalog.java 959d488ebec4ae6a50c3f699d42aad535b1ae0c3 YELLOW
ConsoleOutputGeneratorExtension.java 031444f629b6027f07f1d91db3e6f49563b27612 YELLOW
MultiUnitMainGenerator.java 458754b89c2d79db3fee08baa444424772e40fb7 RED
PWMActuatorGeneratorExtension.java edc94d4cdd6a0c2da7a3c0e9b314e50ca087443c YELLOW
RaspberryPIGeneratorExtension.java 2cd95ddc54d7562bd9fa0b8a4018c25eda01b5a8 RED
SingleUnitMainGenerator.java 44096a99b4bfc46f24f893487fad206a94d512e9 RED
CanBusGeneratorExtension.java 4bed3c88e71923515d7d9dc9235bc40a49ce237f RED
CanConnectorGeneratorExtension.java 6ca987deb8c2ba4d47609691563570bf6e3d7306 RED
CanTransmissionCatalog.java 959d488ebec4ae6a50c3f699d42aad535b1ae0c3 YELLOW
ConsoleOutputGeneratorExtension.java 031444f629b6027f07f1d91db3e6f49563b27612 YELLOW
MultiUnitMainGenerator.java 458754b89c2d79db3fee08baa444424772e40fb7 RED
PWMActuatorGeneratorExtension.java 579e41d5702f06aa764b11e43cde2c0687a73c9a YELLOW
RaspberryPIGeneratorExtension.java f57eea852f3c8e0c1df03fc2b623aef97ad3fa09 RED
SingleUnitMainGenerator.java 44096a99b4bfc46f24f893487fad206a94d512e9 RED
......@@ -15,6 +15,10 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.extension;
import static java.util.Arrays.asList;
import java.util.List;
import org.fortiss.af3.component.model.OutputPort;
import org.fortiss.af3.platform.raspberry.generator.extension.library.PiHALLibraryGeneratorExtensionBase;
import org.fortiss.af3.platform.raspberry.generator.framework.ISingletonGeneratorExtension;
......@@ -31,15 +35,15 @@ public class PWMActuatorGeneratorExtension extends PiHALLibraryGeneratorExtensio
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
return "temp_actuator.h";
public List<String> getHeaderFileNames() {
return asList("temp_actuator.h");
}
/** {@inheritDoc} */
@Override
public String getSingletonIdentifier() {
// Using header file as unique ID
return getHeaderFileName();
return "temp_actuator.h";
}
/** {@inheritDoc} */
......@@ -58,7 +62,7 @@ public class PWMActuatorGeneratorExtension extends PiHALLibraryGeneratorExtensio
@Override
public String getSingletonInitializationCode() {
return "actuator_pwm_" + getSingletonPostfix() +
" = temp_actuator_initialize(\"/dev/ttyACM0\");\n";
" = temp_actuator_initialize(\"/dev/Maestro0\");\n";
}
/** {@inheritDoc} */
......
......@@ -18,6 +18,7 @@ package org.fortiss.af3.platform.raspberry.generator.extension;
import static org.fortiss.af3.component.utils.ComponentArchitectureUtils.isAtomicComponent;
import static org.fortiss.af3.expression.utils.ExpressionModelElementFactory.createDataDictionary;
import static org.fortiss.af3.generator.common.utils.CLanguageModelElementFactory.createCSourcePackage;
import static org.fortiss.af3.generator.common.utils.SourceModelElementFactory.createByteContentUnitForPluginFileInRCP;
import static org.fortiss.af3.platform.raspberry.generator.templates.RasPiCTemplates.getConfigureFile;
import static org.fortiss.af3.platform.raspberry.generator.templates.RasPiCTemplates.getEclipseCDTProjectFile;
import static org.fortiss.af3.platform.raspberry.generator.templates.RasPiCTemplates.getEclipseProjectFile;
......@@ -122,12 +123,29 @@ public class RaspberryPIGeneratorExtension extends
return generatorResult;
}
/** Adds default header from af3pihal library. */
private void addDefaultHeader(String headerName) {
if(includedHeaders.add(headerName)) {
generatorResult.getSubPackage(INC_LIB_SUB_PACKAGE_NAME).addUnit(
createByteContentUnitForPluginFileInRCP(
AF3PlatformRaspberryActivator.PLUGIN_ID, "code-gen-hal/inc/af3pihal",
headerName, false));
}
}
/**
* Adds the libraries and header files required by the used platform elements and returns the
* set of header file names.
*/
private void analyzePlatformElementsAndCopyCode(
List<Pair<PlatformConnectorUnit, Port>> deployedPorts) {
// these headers are included by the main file template.
addDefaultHeader("af3.h");
addDefaultHeader("debugprint.h");
addDefaultHeader("timeutil.h");
addDefaultHeader("canthread.h");
addDefaultHeader("cansocket.h");
// add headers from platform elements
for(Pair<PlatformConnectorUnit, Port> pair : deployedPorts) {
PlatformConnectorUnit pcu = pair.getFirst();
ExecutableBase<?> extension =
......@@ -136,12 +154,14 @@ public class RaspberryPIGeneratorExtension extends
if(extension instanceof IRasPiCopiedHeaderGeneratorExtension) {
IRasPiCopiedHeaderGeneratorExtension headerExt =
(IRasPiCopiedHeaderGeneratorExtension)extension;
if(!includedHeaders.contains(headerExt.getHeaderFileName())) {
generatorResult.getSubPackage(INC_LIB_SUB_PACKAGE_NAME).addUnit(
headerExt.getHeaderFileContent());
includedHeaders.add(headerExt.getHeaderFileName());
for(String headerFileName : headerExt.getHeaderFileNames()) {
if(!includedHeaders.contains(headerExt.getHeaderFileNames())) {
generatorResult.getSubPackage(INC_LIB_SUB_PACKAGE_NAME).addUnit(
headerExt.getHeaderFileContent(headerFileName));
includedHeaders.add(headerFileName);
}
// ignore header file, since it is already included
}
// ignore header file, since it is already included
}
if(extension instanceof IRasPiCopiedSourceBasedGeneratorExtension) {
IRasPiCopiedSourceBasedGeneratorExtension srcExt =
......
AccelerationXSensorGeneratorExtension.java bec067ce2eca52eefd0784b98b65bed1a14586d9 YELLOW
AccelerationYSensorGeneratorExtension.java 7cc64233a3d64ae2fb6bd4fa0f454350c4a2b1c3 YELLOW
AccelerationZSensorGeneratorExtension.java f904dee91a67b1c02e9e57b1e3464ba2eaba183d YELLOW
ActuatorDigitsGeneratorExtension.java 05e766dc4b4c6954ceabadad10b6a77a739ca3ae YELLOW
AngularVelocityXSensorGeneratorExtension.java 4244f6442ff0602b56a0460b8bf8cbac5d4739aa YELLOW
AngularVelocityYSensorGeneratorExtension.java a34c53831a41d0ded9d34c1817b0ca592e46272b YELLOW
AngularVelocityZSensorGeneratorExtension.java fe7b0e7306c5399d39b0bb84968c22cfda4d5402 YELLOW
BrickGeneratorExtensionBase.java 36cad3503e58775fb400509dde40f1f243e8db7a YELLOW
IMUSensorGeneratorExtensionBase.java fe33a00e8017dae1ea9a35d9db3316d7af896e01 YELLOW
InstanceBrickGeneratorExtensionBase.java 571bdb29a3b2289232764286043e05f5ee8ee837 YELLOW
LEDButtonBActuatorGeneratorExtension.java d63faa3841e5105adec981d21d64efbc4894f526 RED
LEDButtonGActuatorGeneratorExtension.java 6eb9850b477fcf06a2ce50f4610141e0f9ad42a5 RED
LEDButtonGeneratorExtensionBase.java ca553bcb601e2d0d44fe81dd264946ab8fba854b RED
LEDButtonRActuatorGeneratorExtension.java 3de7cf630a7711f3f14085e5579c20f612fae77c RED
LaserRangeSensorGeneratorExtension.java d80d10ec1fa183005191829ec96eb6acbdb6865f YELLOW
SharedInstanceBrickGeneratorExtensionBase.java a70c20a1211f9c305634e44247c2dbe47c645382 YELLOW
UIDUnitSharedInstanceBrickGeneratorExtensionBase.java 60dbf2d1563b5adecc57cd6bf5120e90d3b2c84d YELLOW
UltraSonicSensorGeneratorExtension.java 96344faaeaab0b9ed3fd8c90be5fdad31257e6ea YELLOW
AccelerationXSensorGeneratorExtension.java bec067ce2eca52eefd0784b98b65bed1a14586d9 YELLOW
AccelerationYSensorGeneratorExtension.java 7cc64233a3d64ae2fb6bd4fa0f454350c4a2b1c3 YELLOW
AccelerationZSensorGeneratorExtension.java f904dee91a67b1c02e9e57b1e3464ba2eaba183d YELLOW
ActuatorDigitsGeneratorExtension.java a12c664b129aadaa2808efe5c6cf07bc8ba71aa9 YELLOW
AngularVelocityXSensorGeneratorExtension.java 4244f6442ff0602b56a0460b8bf8cbac5d4739aa YELLOW
AngularVelocityYSensorGeneratorExtension.java a34c53831a41d0ded9d34c1817b0ca592e46272b YELLOW
AngularVelocityZSensorGeneratorExtension.java fe7b0e7306c5399d39b0bb84968c22cfda4d5402 YELLOW
BrickGeneratorExtensionBase.java 770c58a93099a19bee8f0dcb65b58c69f969dd55 YELLOW
IMUSensorGeneratorExtensionBase.java e97a6dfb2939c00fcff6b95bbbc77c619f0bbd03 YELLOW
InstanceBrickGeneratorExtensionBase.java 571bdb29a3b2289232764286043e05f5ee8ee837 YELLOW
LEDButtonBActuatorGeneratorExtension.java d63faa3841e5105adec981d21d64efbc4894f526 RED
LEDButtonGActuatorGeneratorExtension.java 6eb9850b477fcf06a2ce50f4610141e0f9ad42a5 RED
LEDButtonGeneratorExtensionBase.java 4b7163bc3f5c8957cf2044db73e8550cd3e1b69a YELLOW
LEDButtonRActuatorGeneratorExtension.java 3de7cf630a7711f3f14085e5579c20f612fae77c RED
LaserRangeSensorGeneratorExtension.java 141b0e58c06e26afc2833fd7ccead3d1caade2da YELLOW
SharedInstanceBrickGeneratorExtensionBase.java a70c20a1211f9c305634e44247c2dbe47c645382 YELLOW
UIDUnitSharedInstanceBrickGeneratorExtensionBase.java 60dbf2d1563b5adecc57cd6bf5120e90d3b2c84d YELLOW
UltraSonicSensorGeneratorExtension.java 062b69bbc5aa5360f180801faeacb9df8e966856 YELLOW
......@@ -35,7 +35,7 @@ public class ActuatorDigitsGeneratorExtension extends
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
public String getBrickUnitHeader() {
return "bricklet_segment_display_4x7.h";
}
......
......@@ -15,6 +15,10 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.extension.brick;
import static java.util.Arrays.asList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.platform.raspberry.generator.extension.library.BrickLibraryGeneratorExtensionBase;
import org.fortiss.af3.platform.raspberry.generator.framework.ISingletonGeneratorExtension;
......@@ -34,6 +38,15 @@ abstract class BrickGeneratorExtensionBase<T extends EObject> extends
super(modelElement);
}
/** {@inheritDoc} */
@Override
public List<String> getHeaderFileNames() {
return asList("ip_connection.h", getBrickUnitHeader());
}
/** Returns the header file of the specific brick unit. */
protected abstract String getBrickUnitHeader();
/** {@inheritDoc} */
@Override
public final void setSingletonPostfix(String singletonPostfix) {
......
......@@ -32,7 +32,7 @@ abstract class IMUSensorGeneratorExtensionBase<T extends UIDUnit> extends
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
public String getBrickUnitHeader() {
return "brick_imu_v2.h";
}
......
......@@ -32,7 +32,7 @@ abstract class LEDButtonGeneratorExtensionBase<T extends UIDUnit> extends
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
public String getBrickUnitHeader() {
return "bricklet_rgb_led_button.h";
}
......
......@@ -34,7 +34,7 @@ public class LaserRangeSensorGeneratorExtension extends
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
public String getBrickUnitHeader() {
return "bricklet_laser_range_finder.h";
}
......
......@@ -34,7 +34,7 @@ public class UltraSonicSensorGeneratorExtension extends
/** {@inheritDoc} */
@Override
public String getHeaderFileName() {
public String getBrickUnitHeader() {
return "bricklet_distance_us.h";
}
......
......@@ -5,7 +5,7 @@ CameraDetectionStateLeftGeneratorExtension.java 00c3e17b789b25feacc28386b29f213a
CameraDetectionStateRightGeneratorExtension.java a6d2ba8e161006e4e65a2fa83d819e719de9f506 YELLOW
CameraDistanceLeftGeneratorExtension.java 48c435769863d66bdfb3e97942c1535537b31a2a YELLOW
CameraDistanceRightGeneratorExtension.java bd3c980a3ea79f725210f4d1b2648af22c72bca0 YELLOW
CameraGeneratorExtensionBase.java 0113df2ccb0577d3f5f7a1053a71b034f30abfad YELLOW
CameraGeneratorExtensionBase.java d23ef25dfbb3554bef8ad5b75d8a64f41d51ab78 YELLOW
CameraLastUpdateGeneratorExtension.java f8c6ed891b50e44d3be2ecfee7e81217278f057a YELLOW
CameraRoverDistanceGeneratorExtension.java ca8328c1796854a33c364cdfa57c2e78b2f631f4 YELLOW
CameraRoverIDGeneratorExtension.java f03bf8ebe9ae77ebcd42d5c8534437171a7532b2 YELLOW
......
......@@ -15,6 +15,10 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.extension.camera;
import static java.util.Arrays.asList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.component.model.InputPort;
import org.fortiss.af3.platform.raspberry.generator.extension.library.PiHALLibraryGeneratorExtensionBase;
......@@ -69,13 +73,13 @@ abstract class CameraGeneratorExtensionBase<T extends EObject> extends
@Override
public final String getSingletonIdentifier() {
// use header file as singleton identifier
return getHeaderFileName();
return "camera_client.h";
}
/** {@inheritDoc} */
@Override
public final String getHeaderFileName() {
return "camera_client.h";
public final List<String> getHeaderFileNames() {
return asList("camera_client.h");
}
/** {@inheritDoc} */
......
ControlCenterDownstreamInputGeneratorExtension.java 45a1b46d3b5e49a37dc2382cdc92f4ef52d1514a YELLOW
ControlCenterDownstreamInputGeneratorExtension.java eed6e72efaed9bcf5faa2e4d1f2a60ab70beff78 YELLOW
ControlCenterUpstreamOutputGeneratorExtension.java f1f22c116611ed555ade855befd37484ca333856 YELLOW
ControlcenterGeneratorExtensionBase.java 462d841179d95c07608326ed3cc7860932e31df4 YELLOW
ControlcenterGeneratorExtensionBase.java 64ea9eeaa6f17d7de720674550835b5c769a7e87 YELLOW
......@@ -15,6 +15,10 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.platform.raspberry.generator.extension.controlcenter;
import static java.util.Arrays.asList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.platform.raspberry.generator.extension.library.PiHALLibraryGeneratorExtensionBase;
import org.fortiss.af3.platform.raspberry.generator.framework.ISharedInstanceGeneratorExtension;
......@@ -107,13 +111,13 @@ abstract class ControlcenterGeneratorExtensionBase<T extends EObject> extends
@Override
public final String getSingletonIdentifier() {
// use header file as singleton identifier
return getHeaderFileName();
return "control_center_downstream.h";
}
/** {@inheritDoc} */
@Override
public final String getHeaderFileName() {
return "control_center_downstream.h";
public final List<String> getHeaderFileNames() {
return asList("control_center_downstream.h");
}
/** {@inheritDoc} */
......
......@@ -7,7 +7,7 @@ ButtonL1GeneratorExtension.java c367e0a10069041b80e14409aaa70ca68c01509b YELLOW
ButtonL2GeneratorExtension.java 035d2462b09d581a7be10d199bc011d8953bc082 YELLOW
ButtonR1GeneratorExtension.java d82887e00d4bbc2938f7a89057460f109f0ddcf3 YELLOW
ButtonR2GeneratorExtension.java d35159fef36179780b2cf5406de64ce75dd4facf YELLOW
GamepadGeneratorExtensionBase.java 669663e1c43ba44ce717af465c56de1a3c8904aa YELLOW
GamepadGeneratorExtensionBase.java cad7b0d750d105450f978b1ff61c1b45515c81bf YELLOW
Left_StickXGeneratorExtension.java 809953003e0e24908e17183aa86cc74f0e5078ab YELLOW
Left_StickYGeneratorExtension.java 5cb4c657e7b1baa6b6162a957912cb40209e53a2 YELLOW
Right_StickXGeneratorExtension.java f3d0096b369a2e8226f9a158a958bd581f2cad67 YELLOW
......
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