summaryrefslogtreecommitdiff
path: root/implementation/configuration/include/internal_android.hpp
blob: 8ecd2b595cbc2da768c5887b3b6ba527ae6c1a1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
// Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

#ifndef VSOMEIP_V3_INTERNAL_HPP_
#define VSOMEIP_V3_INTERNAL_HPP_

#include <cstdint>
#include <limits>
#include <vsomeip/primitive_types.hpp>

#define VSOMEIP_ENV_APPLICATION_NAME            "VSOMEIP_APPLICATION_NAME"
#define VSOMEIP_ENV_CONFIGURATION               "VSOMEIP_CONFIGURATION"
#define VSOMEIP_ENV_CONFIGURATION_MODULE        "VSOMEIP_CONFIGURATION_MODULE"
#define VSOMEIP_ENV_E2E_PROTECTION_MODULE       "VSOMEIP_E2E_PROTECTION_MODULE"
#define VSOMEIP_ENV_MANDATORY_CONFIGURATION_FILES "VSOMEIP_MANDATORY_CONFIGURATION_FILES"
#define VSOMEIP_ENV_LOAD_PLUGINS                "VSOMEIP_LOAD_PLUGINS"
#define VSOMEIP_ENV_CLIENTSIDELOGGING           "VSOMEIP_CLIENTSIDELOGGING"
#define VSOMEIP_ENV_BASE_PATH                   "VSOMEIP_BASE_PATH"

#define VSOMEIP_DEFAULT_CONFIGURATION_FILE      "/vendor/etc/vsomeip.json"
#define VSOMEIP_LOCAL_CONFIGURATION_FILE        "./vsomeip.json"
#define VSOMEIP_MANDATORY_CONFIGURATION_FILES   "vsomeip_std.json,vsomeip_app.json,vsomeip_plc.json,vsomeip_log.json,vsomeip_security.json,vsomeip_whitelist.json"

#define VSOMEIP_DEFAULT_CONFIGURATION_FOLDER    "/vendor/etc/vsomeip"
#define VSOMEIP_DEBUG_CONFIGURATION_FOLDER      "/var/opt/public/sin/vsomeip/"
#define VSOMEIP_LOCAL_CONFIGURATION_FOLDER      "./vsomeip"

#define VSOMEIP_BASE_PATH                       "/storage/"

#define VSOMEIP_CFG_LIBRARY                     "libvsomeip3-cfg.so"

#define VSOMEIP_SD_LIBRARY                      "libvsomeip3-sd.so"

#define VSOMEIP_E2E_LIBRARY                     "libvsomeip3-e2e.so"

#define VSOMEIP_ROUTING_CLIENT                  0

#define VSOMEIP_CLIENT_UNSET                    0xFFFF

#define VSOMEIP_UNICAST_ADDRESS                 "127.0.0.1"
#define VSOMEIP_NETMASK                         "255.255.255.0"

#define VSOMEIP_DEFAULT_CONNECT_TIMEOUT         100
#define VSOMEIP_MAX_CONNECT_TIMEOUT             1600
#define VSOMEIP_DEFAULT_FLUSH_TIMEOUT           1000

#define VSOMEIP_DEFAULT_SHUTDOWN_TIMEOUT        5000

#define VSOMEIP_DEFAULT_QUEUE_WARN_SIZE         102400

#define VSOMEIP_MAX_TCP_CONNECT_TIME            5000
#define VSOMEIP_MAX_TCP_RESTART_ABORTS          5
#define VSOMEIP_MAX_TCP_SENT_WAIT_TIME          10000

#define VSOMEIP_DEFAULT_BUFFER_SHRINK_THRESHOLD 5

#define VSOMEIP_DEFAULT_WATCHDOG_TIMEOUT        5000
#define VSOMEIP_DEFAULT_MAX_MISSING_PONGS       3

#define VSOMEIP_DEFAULT_UDP_RCV_BUFFER_SIZE     1703936

#define VSOMEIP_IO_THREAD_COUNT                 2
#define VSOMEIP_IO_THREAD_NICE_LEVEL            255

#define VSOMEIP_MAX_DISPATCHERS                 10
#define VSOMEIP_MAX_DISPATCH_TIME               100

#define VSOMEIP_REQUEST_DEBOUNCE_TIME           10
#define VSOMEIP_DEFAULT_STATISTICS_MAX_MSG      50
#define VSOMEIP_DEFAULT_STATISTICS_MIN_FREQ     50
#define VSOMEIP_DEFAULT_STATISTICS_INTERVAL     10000

#define VSOMEIP_DEFAULT_MAX_REMOTE_SUBSCRIBERS  3

#define VSOMEIP_MAX_WAIT_SENT                   5

#define VSOMEIP_COMMAND_HEADER_SIZE             7

#define VSOMEIP_COMMAND_TYPE_POS                0
#define VSOMEIP_COMMAND_CLIENT_POS              1
#define VSOMEIP_COMMAND_SIZE_POS_MIN            3
#define VSOMEIP_COMMAND_SIZE_POS_MAX            6
#define VSOMEIP_COMMAND_PAYLOAD_POS             7

#define VSOMEIP_ASSIGN_CLIENT                   0x00
#define VSOMEIP_ASSIGN_CLIENT_ACK               0x01
#define VSOMEIP_REGISTER_APPLICATION            0x02
#define VSOMEIP_DEREGISTER_APPLICATION          0x03
#define VSOMEIP_APPLICATION_LOST                0x04
#define VSOMEIP_ROUTING_INFO                    0x05
#define VSOMEIP_REGISTERED_ACK                  0x06

#define VSOMEIP_PING                            0x0E
#define VSOMEIP_PONG                            0x0F

#define VSOMEIP_OFFER_SERVICE                   0x10
#define VSOMEIP_STOP_OFFER_SERVICE              0x11
#define VSOMEIP_SUBSCRIBE                       0x12
#define VSOMEIP_UNSUBSCRIBE                     0x13
#define VSOMEIP_REQUEST_SERVICE                 0x14
#define VSOMEIP_RELEASE_SERVICE                 0x15
#define VSOMEIP_SUBSCRIBE_NACK                  0x16
#define VSOMEIP_SUBSCRIBE_ACK                   0x17

#define VSOMEIP_SEND                            0x18
#define VSOMEIP_NOTIFY                          0x19
#define VSOMEIP_NOTIFY_ONE                      0x1A

#define VSOMEIP_REGISTER_EVENT                  0x1B
#define VSOMEIP_UNREGISTER_EVENT                0x1C
#define VSOMEIP_ID_RESPONSE                     0x1D
#define VSOMEIP_ID_REQUEST                      0x1E
#define VSOMEIP_OFFERED_SERVICES_REQUEST        0x1F
#define VSOMEIP_OFFERED_SERVICES_RESPONSE       0x20
#define VSOMEIP_UNSUBSCRIBE_ACK                 0x21
#define VSOMEIP_RESEND_PROVIDED_EVENTS          0x22

#define VSOMEIP_UPDATE_SECURITY_POLICY          0x23
#define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE 0x24
#define VSOMEIP_REMOVE_SECURITY_POLICY          0x25
#define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE 0x26
#define VSOMEIP_UPDATE_SECURITY_CREDENTIALS     0x27
#define VSOMEIP_DISTRIBUTE_SECURITY_POLICIES    0x28
#define VSOMEIP_UPDATE_SECURITY_POLICY_INT      0x29
#define VSOMEIP_EXPIRED_SUBSCRIPTION            0x2A

#define VSOMEIP_SUSPEND                         0x30

#define VSOMEIP_SEND_COMMAND_SIZE               13
#define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MIN   7
#define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MAX   8
#define VSOMEIP_SEND_COMMAND_RELIABLE_POS       9
#define VSOMEIP_SEND_COMMAND_CHECK_STATUS_POS   10
#define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MIN 11
#define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MAX 12
#define VSOMEIP_SEND_COMMAND_PAYLOAD_POS        13

#define VSOMEIP_ASSIGN_CLIENT_ACK_COMMAND_SIZE  9
#define VSOMEIP_OFFER_SERVICE_COMMAND_SIZE      16
#define VSOMEIP_REQUEST_SERVICE_COMMAND_SIZE    16
#define VSOMEIP_RELEASE_SERVICE_COMMAND_SIZE    11
#define VSOMEIP_STOP_OFFER_SERVICE_COMMAND_SIZE 16
#define VSOMEIP_SUBSCRIBE_COMMAND_SIZE          18
#define VSOMEIP_SUBSCRIBE_ACK_COMMAND_SIZE      19
#define VSOMEIP_SUBSCRIBE_NACK_COMMAND_SIZE     19
#define VSOMEIP_UNSUBSCRIBE_COMMAND_SIZE        17
#define VSOMEIP_UNSUBSCRIBE_ACK_COMMAND_SIZE    15
#define VSOMEIP_REGISTER_EVENT_COMMAND_SIZE     16
#define VSOMEIP_UNREGISTER_EVENT_COMMAND_SIZE   14
#define VSOMEIP_OFFERED_SERVICES_COMMAND_SIZE    8
#define VSOMEIP_RESEND_PROVIDED_EVENTS_COMMAND_SIZE 11
#define VSOMEIP_REMOVE_SECURITY_POLICY_COMMAND_SIZE 19
#define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11
#define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11
#define VSOMEIP_PING_COMMAND_SIZE                7
#define VSOMEIP_PONG_COMMAND_SIZE                7
#define VSOMEIP_REGISTER_APPLICATION_COMMAND_SIZE 7
#define VSOMEIP_DEREGISTER_APPLICATION_COMMAND_SIZE 7
#define VSOMEIP_REGISTERED_ACK_COMMAND_SIZE      7
#define VSOMEIP_EXPIRED_SUBSCRIPTION_COMMAND_SIZE 17

#include <pthread.h>

#define VSOMEIP_DATA_ID                         0x677D
#define VSOMEIP_DIAGNOSIS_ADDRESS               0x01

#define VSOMEIP_DEFAULT_SHM_PERMISSION          0666
#define VSOMEIP_DEFAULT_UDS_PERMISSIONS         0666

#define VSOMEIP_ROUTING_READY_MESSAGE           "SOME/IP routing ready."

namespace vsomeip_v3 {

typedef enum {
    RIE_ADD_CLIENT = 0x0,
    RIE_ADD_SERVICE_INSTANCE = 0x1,
    RIE_DEL_SERVICE_INSTANCE = 0x2,
    RIE_DEL_CLIENT = 0x3,
} routing_info_entry_e;

struct service_data_t {
    service_t service_;
    instance_t instance_;
    major_version_t major_;
    minor_version_t minor_;

    bool operator<(const service_data_t &_other) const {
        return (service_ < _other.service_
                || (service_ == _other.service_
                    && instance_ < _other.instance_));
    }
};

typedef enum {
    SUBSCRIPTION_ACKNOWLEDGED,
    SUBSCRIPTION_NOT_ACKNOWLEDGED,
    IS_SUBSCRIBING
} subscription_state_e;

const std::uint32_t MESSAGE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();

const std::uint32_t QUEUE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();

#define VSOMEIP_DEFAULT_NPDU_DEBOUNCING_NANO         2 * 1000 * 1000
#define VSOMEIP_DEFAULT_NPDU_MAXIMUM_RETENTION_NANO  5 * 1000 * 1000

const std::uint32_t MAX_RECONNECTS_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();

const std::uint32_t ANY_UID = 0xFFFFFFFF;
const std::uint32_t ANY_GID = 0xFFFFFFFF;

typedef std::pair<std::uint32_t, std::uint32_t> credentials_t;

enum class port_type_e {
    PT_OPTIONAL,
    PT_SECURE,
    PT_UNSECURE,
    PT_UNKNOWN
};

typedef uint8_t partition_id_t;
const partition_id_t VSOMEIP_DEFAULT_PARTITION_ID = 0;

} // namespace vsomeip_v3

#endif // VSOMEIP_V3_INTERNAL_HPP_