RTI Connext DDS Micro C API
Version 2.4.14
|
AutoSAR System API. More...
Data Structures | |
struct | OSAPI_PortProperty |
Typedefs | |
typedef Std_ReturnType(* | NETIO_Autosar_TcpIp_get_socket )(TcpIp_DomainType domain, TcpIp_ProtocolType protocol, TcpIp_SocketIdType *socket) |
Function used to create a socket. Users must provide this function in case SocketOwner is used. The implementation of this function normally calls TcpIp_<Up>GetSocket(). | |
typedef Std_ReturnType(* | NETIO_Autosar_TcpIp_send_dyn_data )(void const *data_ptr, uint16 length, TcpIp_SockAddrType const *remote_addr_ptr) |
Function used to send data. User's must provide this function only in case SocketOwner is not used. If SocketOwner is used RTI Connext DDS Micro will use a socket to send UDP packets. |
Enumerations | |
enum | OSAPI_Autosar_SyncKind_T { OSAPI_AUTOSAR_SYNCKIND_RESOURCES } |
Synchronization method enum. More... |
AutoSAR System API.
The AutoSAR System is defined as specific functionality needed to run RTI Connext DDS Micro on an AutoSAR based OS.
typedef Std_ReturnType(* NETIO_Autosar_TcpIp_get_socket)(TcpIp_DomainType domain, TcpIp_ProtocolType protocol, TcpIp_SocketIdType *socket) |
Function used to create a socket. Users must provide this function in case SocketOwner is used. The implementation of this function normally calls TcpIp_<Up>GetSocket().
[in] | domain | - IP address family. |
[in] | protocol | - Socket protocol as sub-family of parameter type. |
[out] | socket | - Pointer to socket identifier representing the requested socket. This socket identifier must be provided for all further API calls which requires a SocketId. Note: value of 'socket' parameter is only valid if return value is E_OK |
typedef Std_ReturnType(* NETIO_Autosar_TcpIp_send_dyn_data)(void const *data_ptr, uint16 length, TcpIp_SockAddrType const *remote_addr_ptr) |
Function used to send data. User's must provide this function only in case SocketOwner is not used. If SocketOwner is used RTI Connext DDS Micro will use a socket to send UDP packets.
[in] | data_ptr | - Pointer to data to send. |
[in] | length | - Length of data to send. |
[in] | remote_addr_ptr | - Address and port where to send the data. |
uint32 OSAPI_PortProperty::timer_resolution_ms |
Timer resolution in ms. Frequency at which the timer task is executed.
uint32 OSAPI_PortProperty::number_of_heap_areas |
Heap used by RTI Connext DDS Micro can span across a number of different areas. This field indicates the number of areas in the heap memory. Minimum valid value is 1.
uint32 const* OSAPI_PortProperty::heap_area_size |
Pointer to size of each heap area. As many elements as indicated in field 'number_of_heap_areas'.
char* const* OSAPI_PortProperty::heap_area |
Pointer to heap areas. As many elements as indicated in field 'number_of_heap_areas'.
OSAPI_Autosar_SyncKind_T OSAPI_PortProperty::sync_type |
Kind of synchronization used.
ResourceType OSAPI_PortProperty::first_resource_id |
First resource id that RTI Connext DDS Micro uses to synchronize the concurrent access to shared resources. This is only used in case Resources are configured as synchronization method.
ResourceType OSAPI_PortProperty::last_resource_id |
Last resource id that RTI Connext DDS Micro uses to synchronize the concurrent access to shared resources. This is only used in case Resources are configured as synchronization method.
uint16 OSAPI_PortProperty::spinlock_id |
Spinlock id used in case sync_type is OSAPI_AUTOSAR_SYNCKIND_SPINLOCK. Type SpinlockIdType could be used for this field but some AutoSAR implementations don't include this type in case spinlock module is not added. To avoid ifdef we use uint16.
uint32 OSAPI_PortProperty::semaphore_max_count |
Maximum number of semaphores that can be created. As many give and timeout events and alarms as indicated by this field must be configured in Autosar. Give events shall have 'consecutive' event IDs, starting at first_give_event (e.g. 1, 2, 4). Timeout events shall have 'consecutive' event IDs starting at first_timeout_event (e.g. 8, 16, 32). Alarms shall have 'consecutive' IDs starting at first_alarm (e.g. 1, 2, 3).
A Waitset object needs two semaphores. In case Waitsets are not used this field can be set to 0.
Semaphore implementation uses two events and one alarm for each semaphore that is created. One event, the give event, is set in the semaphore give() method. The other event, the timeout event, is used to signal a timeout in the semaphore. The alarm must be configured to set the timeout event. The semaphore take() operation starts the alarm and waits for any of the events.
The alarm must be configured as 'RELATIVE' and to set the timeout event when it expires. The counter used to trigger the alarm must be configured with one tick per millisecond and in case this is not done properly the semaphore timeout will occur sooner or later than expected.
The semaphore take() method in the semaphore can be used only from one task.
In case semaphores are not needed it is possible to just set fields first_give_event, first_timeout_event, first_alarm and semaphore_max_count to 0.
EventMaskType OSAPI_PortProperty::first_give_event |
First give event id used for semaphore implementation.
EventMaskType OSAPI_PortProperty::first_timeout_event |
First timeout event id used for semaphore implementation.
AlarmType OSAPI_PortProperty::first_alarm |
First alarm id used for semaphore implementation.
boolean OSAPI_PortProperty::use_socket_owner |
TRUE if SocketOwner is configured in AutoSAR TcpIp module configuration. In that case RTI Connext DDS Micro will use sockets to send and receive UDP packets. Otherwise a function pointer will be used to send packets.
If set to 'TRUE' fields 'number_of_socket' and 'get_socket' must be configured properly (can't be NULL_PTR).
If set to 'FALSE' field 'send_data' needs to be configured properly (can't be NULL_PTR).
uint8 OSAPI_PortProperty::max_receive_sockets |
Maximum number of sockets that RTI Connext DDS Micro can use to receive UDP packets. This number depends on the number of participants created and the UDP transport configuration.
If SocketOwner is used for each participant 2 sockets are normally needed to receive UDP packets:
If SocketOwner is not used sockets are not used but this field must have at least a value of 1.
uint8 OSAPI_PortProperty::number_of_rcv_buffers |
RTI Connext DDS Micro can use internal socket buffers. This is normally needed in case the received callback indication is called in the context of an ISR. Number of receive buffers of size specified in field 'rcv_buffer_size'. This is only used when field 'use_udp_thread' is TRUE.
uint32 OSAPI_PortProperty::rcv_buffer_size |
RTI Connext DDS Micro Size of each receive buffer.
NETIO_Autosar_TcpIp_get_socket OSAPI_PortProperty::get_socket |
Pointer to the function that can create a socket. This function is used to create sockets to send and receive UDP packets. This field is used only in case a SocketOwner is configured, field 'use_socket_owner' is set to TRUE. Otherwise this field can be NULL_PTR.
NETIO_Autosar_TcpIp_send_dyn_data OSAPI_PortProperty::send_data |
Pointer to the function that can send data. This field is used only in case a SocketOwner is not configured, when field 'use_socket_owner' is FALSE. Otherwise this field can be NULL_PTR.
TcpIp_LocalAddrIdType OSAPI_PortProperty::local_addr_id |
IP address identifier representing the local IP address and EthIf controller to bind the socket to.
boolean OSAPI_PortProperty::use_udp_thread |
Set to TRUE to use a thread to receive data. If this field is set to FALSE, the incoming UDP packets will be processed in the callback notification function. If this field is set to TRUE, the callback notification function will copy the UDP packet in an internal buffer and set an event for the UDP thread to process the packet.
TaskType OSAPI_PortProperty::udp_receive_task_id |
UDP receive thask id. This must be configured with the ID of the task NETIO_Autosar_udp_receive_task. This field must be configured only in case field 'use_udp_thread' is set to TRUE.
EventMaskType OSAPI_PortProperty::udp_packet_received_event |
Event used to notify the UDP task that an incoming packet has been received. This event is used only in case UDP task is used, that is when field 'use_udp_thread' is set to TRUE.
uint32 OSAPI_PortProperty::log_dst_address |
Destination IP address used to send logs to. The format of the address must be compatible with the format needed for function TcpIp_UdpTransmit(), that is in host format instead of network format. I.e. 0xCA00A8C0 would be IP address 192.168.0.202. If 0, logs will not be send to any address. This is the default value.
uint16 OSAPI_PortProperty::log_dst_port |
Destination IP port used to send logs to. The format of the port must be compatible with the format needed for function TcpIp_UdpTransmit().