Coverage Report

Created: 2026-04-12 06:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/S2OPC/src/ClientServer/services/b2c/util_b2c.c
Line
Count
Source
1
/*
2
 * Licensed to Systerel under one or more contributor license
3
 * agreements. See the NOTICE file distributed with this work
4
 * for additional information regarding copyright ownership.
5
 * Systerel licenses this file to you under the Apache
6
 * License, Version 2.0 (the "License"); you may not use this
7
 * file except in compliance with the License. You may obtain
8
 * a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
20
#include <stdbool.h>
21
#include <stddef.h>
22
#include <stdio.h>
23
#include <string.h>
24
25
#include "util_b2c.h"
26
27
#include "opcua_identifiers.h"
28
#include "sopc_crypto_profiles.h"
29
#include "sopc_logger.h"
30
31
/* Note: it should be removed and OpcUa_BadLocaleNotSupported should be used once published
32
         on OPC UA NodeSet git repository */
33
0
#define TMP_OpcUa_BadLocaleNotSupported 0x80ED0000
34
35
void util_message__get_encodeable_type(const constants__t_msg_type_i message__msg_type,
36
                                       SOPC_EncodeableType** reqEncType,
37
                                       SOPC_EncodeableType** respEncType,
38
                                       t_bool* isRequest)
39
0
{
40
0
    *isRequest = false;
41
42
0
    switch (message__msg_type)
43
0
    {
44
0
    case constants__e_msg_discovery_find_servers_req:
45
0
        *reqEncType = &OpcUa_FindServersRequest_EncodeableType;
46
0
        *respEncType = &OpcUa_FindServersResponse_EncodeableType;
47
0
        *isRequest = true;
48
0
        break;
49
0
    case constants__e_msg_discovery_find_servers_resp:
50
0
        *reqEncType = &OpcUa_FindServersRequest_EncodeableType;
51
0
        *respEncType = &OpcUa_FindServersResponse_EncodeableType;
52
0
        break;
53
0
    case constants__e_msg_discovery_find_servers_on_network_req:
54
0
        *reqEncType = &OpcUa_FindServersOnNetworkRequest_EncodeableType;
55
0
        *respEncType = &OpcUa_FindServersOnNetworkResponse_EncodeableType;
56
0
        *isRequest = true;
57
0
        break;
58
0
    case constants__e_msg_discovery_find_servers_on_network_resp:
59
0
        *reqEncType = &OpcUa_FindServersOnNetworkRequest_EncodeableType;
60
0
        *respEncType = &OpcUa_FindServersOnNetworkResponse_EncodeableType;
61
0
        break;
62
0
    case constants__e_msg_discovery_get_endpoints_req:
63
0
        *reqEncType = &OpcUa_GetEndpointsRequest_EncodeableType;
64
0
        *respEncType = &OpcUa_GetEndpointsResponse_EncodeableType;
65
0
        *isRequest = true;
66
0
        break;
67
0
    case constants__e_msg_discovery_get_endpoints_resp:
68
0
        *reqEncType = &OpcUa_GetEndpointsRequest_EncodeableType;
69
0
        *respEncType = &OpcUa_GetEndpointsResponse_EncodeableType;
70
0
        break;
71
0
    case constants__e_msg_discovery_register_server_req:
72
0
        *reqEncType = &OpcUa_RegisterServerRequest_EncodeableType;
73
0
        *respEncType = &OpcUa_RegisterServerResponse_EncodeableType;
74
0
        *isRequest = true;
75
0
        break;
76
0
    case constants__e_msg_discovery_register_server_resp:
77
0
        *reqEncType = &OpcUa_RegisterServerRequest_EncodeableType;
78
0
        *respEncType = &OpcUa_RegisterServerResponse_EncodeableType;
79
0
        break;
80
0
    case constants__e_msg_discovery_register_server2_req:
81
0
        *reqEncType = &OpcUa_RegisterServer2Request_EncodeableType;
82
0
        *respEncType = &OpcUa_RegisterServer2Response_EncodeableType;
83
0
        *isRequest = true;
84
0
        break;
85
0
    case constants__e_msg_discovery_register_server2_resp:
86
0
        *reqEncType = &OpcUa_RegisterServer2Request_EncodeableType;
87
0
        *respEncType = &OpcUa_RegisterServer2Response_EncodeableType;
88
0
        break;
89
0
    case constants__e_msg_session_create_req:
90
0
        *reqEncType = &OpcUa_CreateSessionRequest_EncodeableType;
91
0
        *respEncType = &OpcUa_CreateSessionResponse_EncodeableType;
92
0
        *isRequest = true;
93
0
        break;
94
0
    case constants__e_msg_session_create_resp:
95
0
        *reqEncType = &OpcUa_CreateSessionRequest_EncodeableType;
96
0
        *respEncType = &OpcUa_CreateSessionResponse_EncodeableType;
97
0
        break;
98
0
    case constants__e_msg_session_activate_req:
99
0
        *reqEncType = &OpcUa_ActivateSessionRequest_EncodeableType;
100
0
        *respEncType = &OpcUa_ActivateSessionResponse_EncodeableType;
101
0
        *isRequest = true;
102
0
        break;
103
0
    case constants__e_msg_session_activate_resp:
104
0
        *reqEncType = &OpcUa_ActivateSessionRequest_EncodeableType;
105
0
        *respEncType = &OpcUa_ActivateSessionResponse_EncodeableType;
106
0
        break;
107
0
    case constants__e_msg_session_close_req:
108
0
        *reqEncType = &OpcUa_CloseSessionRequest_EncodeableType;
109
0
        *respEncType = &OpcUa_CloseSessionResponse_EncodeableType;
110
0
        *isRequest = true;
111
0
        break;
112
0
    case constants__e_msg_session_close_resp:
113
0
        *reqEncType = &OpcUa_CloseSessionRequest_EncodeableType;
114
0
        *respEncType = &OpcUa_CloseSessionResponse_EncodeableType;
115
0
        break;
116
0
    case constants__e_msg_session_cancel_req:
117
0
        *reqEncType = &OpcUa_CancelRequest_EncodeableType;
118
0
        *respEncType = &OpcUa_CancelResponse_EncodeableType;
119
0
        *isRequest = true;
120
0
        break;
121
0
    case constants__e_msg_session_cancel_resp:
122
0
        *reqEncType = &OpcUa_CancelRequest_EncodeableType;
123
0
        *respEncType = &OpcUa_CancelResponse_EncodeableType;
124
0
        break;
125
0
    case constants__e_msg_node_add_nodes_req:
126
0
        *reqEncType = &OpcUa_AddNodesRequest_EncodeableType;
127
0
        *respEncType = &OpcUa_AddNodesResponse_EncodeableType;
128
0
        *isRequest = true;
129
0
        break;
130
0
    case constants__e_msg_node_add_nodes_resp:
131
0
        *reqEncType = &OpcUa_AddNodesRequest_EncodeableType;
132
0
        *respEncType = &OpcUa_AddNodesResponse_EncodeableType;
133
0
        break;
134
0
    case constants__e_msg_node_add_references_req:
135
0
        *reqEncType = &OpcUa_AddReferencesRequest_EncodeableType;
136
0
        *respEncType = &OpcUa_AddReferencesResponse_EncodeableType;
137
0
        *isRequest = true;
138
0
        break;
139
0
    case constants__e_msg_node_add_references_resp:
140
0
        *reqEncType = &OpcUa_AddReferencesRequest_EncodeableType;
141
0
        *respEncType = &OpcUa_AddReferencesResponse_EncodeableType;
142
0
        break;
143
0
    case constants__e_msg_node_delete_nodes_req:
144
0
        *reqEncType = &OpcUa_DeleteNodesRequest_EncodeableType;
145
0
        *respEncType = &OpcUa_DeleteNodesResponse_EncodeableType;
146
0
        *isRequest = true;
147
0
        break;
148
0
    case constants__e_msg_node_delete_nodes_resp:
149
0
        *reqEncType = &OpcUa_DeleteNodesRequest_EncodeableType;
150
0
        *respEncType = &OpcUa_DeleteNodesResponse_EncodeableType;
151
0
        break;
152
0
    case constants__e_msg_node_delete_references_req:
153
0
        *reqEncType = &OpcUa_DeleteReferencesRequest_EncodeableType;
154
0
        *respEncType = &OpcUa_DeleteReferencesResponse_EncodeableType;
155
0
        *isRequest = true;
156
0
        break;
157
0
    case constants__e_msg_node_delete_references_resp:
158
0
        *reqEncType = &OpcUa_DeleteReferencesRequest_EncodeableType;
159
0
        *respEncType = &OpcUa_DeleteReferencesResponse_EncodeableType;
160
0
        break;
161
0
    case constants__e_msg_view_browse_req:
162
0
        *reqEncType = &OpcUa_BrowseRequest_EncodeableType;
163
0
        *respEncType = &OpcUa_BrowseResponse_EncodeableType;
164
0
        *isRequest = true;
165
0
        break;
166
0
    case constants__e_msg_view_browse_resp:
167
0
        *reqEncType = &OpcUa_BrowseRequest_EncodeableType;
168
0
        *respEncType = &OpcUa_BrowseResponse_EncodeableType;
169
0
        break;
170
0
    case constants__e_msg_view_browse_next_req:
171
0
        *reqEncType = &OpcUa_BrowseNextRequest_EncodeableType;
172
0
        *respEncType = &OpcUa_BrowseNextResponse_EncodeableType;
173
0
        *isRequest = true;
174
0
        break;
175
0
    case constants__e_msg_view_browse_next_resp:
176
0
        *reqEncType = &OpcUa_BrowseNextRequest_EncodeableType;
177
0
        *respEncType = &OpcUa_BrowseNextResponse_EncodeableType;
178
0
        break;
179
0
    case constants__e_msg_view_translate_browse_paths_to_node_ids_req:
180
0
        *reqEncType = &OpcUa_TranslateBrowsePathsToNodeIdsRequest_EncodeableType;
181
0
        *respEncType = &OpcUa_TranslateBrowsePathsToNodeIdsResponse_EncodeableType;
182
0
        *isRequest = true;
183
0
        break;
184
0
    case constants__e_msg_view_translate_browse_paths_to_node_ids_resp:
185
0
        *reqEncType = &OpcUa_TranslateBrowsePathsToNodeIdsRequest_EncodeableType;
186
0
        *respEncType = &OpcUa_TranslateBrowsePathsToNodeIdsResponse_EncodeableType;
187
0
        break;
188
0
    case constants__e_msg_view_register_nodes_req:
189
0
        *reqEncType = &OpcUa_RegisterNodesRequest_EncodeableType;
190
0
        *respEncType = &OpcUa_RegisterNodesResponse_EncodeableType;
191
0
        *isRequest = true;
192
0
        break;
193
0
    case constants__e_msg_view_register_nodes_resp:
194
0
        *reqEncType = &OpcUa_RegisterNodesRequest_EncodeableType;
195
0
        *respEncType = &OpcUa_RegisterNodesResponse_EncodeableType;
196
0
        break;
197
0
    case constants__e_msg_view_unregister_nodes_req:
198
0
        *reqEncType = &OpcUa_UnregisterNodesRequest_EncodeableType;
199
0
        *respEncType = &OpcUa_UnregisterNodesResponse_EncodeableType;
200
0
        *isRequest = true;
201
0
        break;
202
0
    case constants__e_msg_view_unregister_nodes_resp:
203
0
        *reqEncType = &OpcUa_UnregisterNodesRequest_EncodeableType;
204
0
        *respEncType = &OpcUa_UnregisterNodesResponse_EncodeableType;
205
0
        break;
206
0
    case constants__e_msg_query_first_req:
207
0
        *reqEncType = &OpcUa_QueryFirstRequest_EncodeableType;
208
0
        *respEncType = &OpcUa_QueryFirstResponse_EncodeableType;
209
0
        *isRequest = true;
210
0
        break;
211
0
    case constants__e_msg_query_first_resp:
212
0
        *reqEncType = &OpcUa_QueryFirstRequest_EncodeableType;
213
0
        *respEncType = &OpcUa_QueryFirstResponse_EncodeableType;
214
0
        break;
215
0
    case constants__e_msg_query_next_req:
216
0
        *reqEncType = &OpcUa_QueryNextRequest_EncodeableType;
217
0
        *respEncType = &OpcUa_QueryNextResponse_EncodeableType;
218
0
        *isRequest = true;
219
0
        break;
220
0
    case constants__e_msg_query_next_resp:
221
0
        *reqEncType = &OpcUa_QueryNextRequest_EncodeableType;
222
0
        *respEncType = &OpcUa_QueryNextResponse_EncodeableType;
223
0
        break;
224
0
    case constants__e_msg_attribute_read_req:
225
0
        *reqEncType = &OpcUa_ReadRequest_EncodeableType;
226
0
        *respEncType = &OpcUa_ReadResponse_EncodeableType;
227
0
        *isRequest = true;
228
0
        break;
229
0
    case constants__e_msg_attribute_read_resp:
230
0
        *reqEncType = &OpcUa_ReadRequest_EncodeableType;
231
0
        *respEncType = &OpcUa_ReadResponse_EncodeableType;
232
0
        break;
233
0
    case constants__e_msg_attribute_history_read_req:
234
0
        *reqEncType = &OpcUa_HistoryReadRequest_EncodeableType;
235
0
        *respEncType = &OpcUa_HistoryReadResponse_EncodeableType;
236
0
        *isRequest = true;
237
0
        break;
238
0
    case constants__e_msg_attribute_history_read_resp:
239
0
        *reqEncType = &OpcUa_HistoryReadRequest_EncodeableType;
240
0
        *respEncType = &OpcUa_HistoryReadResponse_EncodeableType;
241
0
        break;
242
0
    case constants__e_msg_attribute_write_req:
243
0
        *reqEncType = &OpcUa_WriteRequest_EncodeableType;
244
0
        *respEncType = &OpcUa_WriteResponse_EncodeableType;
245
0
        *isRequest = true;
246
0
        break;
247
0
    case constants__e_msg_attribute_write_resp:
248
0
        *reqEncType = &OpcUa_WriteRequest_EncodeableType;
249
0
        *respEncType = &OpcUa_WriteResponse_EncodeableType;
250
0
        break;
251
0
    case constants__e_msg_attribute_history_update_req:
252
0
        *reqEncType = &OpcUa_HistoryUpdateRequest_EncodeableType;
253
0
        *respEncType = &OpcUa_HistoryUpdateResponse_EncodeableType;
254
0
        *isRequest = true;
255
0
        break;
256
0
    case constants__e_msg_attribute_history_update_resp:
257
0
        *reqEncType = &OpcUa_HistoryUpdateRequest_EncodeableType;
258
0
        *respEncType = &OpcUa_HistoryUpdateResponse_EncodeableType;
259
0
        break;
260
0
    case constants__e_msg_method_call_req:
261
0
        *reqEncType = &OpcUa_CallRequest_EncodeableType;
262
0
        *respEncType = &OpcUa_CallResponse_EncodeableType;
263
0
        *isRequest = true;
264
0
        break;
265
0
    case constants__e_msg_method_call_resp:
266
0
        *reqEncType = &OpcUa_CallRequest_EncodeableType;
267
0
        *respEncType = &OpcUa_CallResponse_EncodeableType;
268
0
        break;
269
0
    case constants__e_msg_monitored_items_create_req:
270
0
        *reqEncType = &OpcUa_CreateMonitoredItemsRequest_EncodeableType;
271
0
        *respEncType = &OpcUa_CreateMonitoredItemsResponse_EncodeableType;
272
0
        *isRequest = true;
273
0
        break;
274
0
    case constants__e_msg_monitored_items_create_resp:
275
0
        *reqEncType = &OpcUa_CreateMonitoredItemsRequest_EncodeableType;
276
0
        *respEncType = &OpcUa_CreateMonitoredItemsResponse_EncodeableType;
277
0
        break;
278
0
    case constants__e_msg_monitored_items_modify_req:
279
0
        *reqEncType = &OpcUa_ModifyMonitoredItemsRequest_EncodeableType;
280
0
        *respEncType = &OpcUa_ModifyMonitoredItemsResponse_EncodeableType;
281
0
        *isRequest = true;
282
0
        break;
283
0
    case constants__e_msg_monitored_items_modify_resp:
284
0
        *reqEncType = &OpcUa_ModifyMonitoredItemsRequest_EncodeableType;
285
0
        *respEncType = &OpcUa_ModifyMonitoredItemsResponse_EncodeableType;
286
0
        break;
287
0
    case constants__e_msg_monitored_items_set_monitoring_mode_req:
288
0
        *reqEncType = &OpcUa_SetMonitoringModeRequest_EncodeableType;
289
0
        *respEncType = &OpcUa_SetMonitoringModeResponse_EncodeableType;
290
0
        *isRequest = true;
291
0
        break;
292
0
    case constants__e_msg_monitored_items_set_monitoring_mode_resp:
293
0
        *reqEncType = &OpcUa_SetMonitoringModeRequest_EncodeableType;
294
0
        *respEncType = &OpcUa_SetMonitoringModeResponse_EncodeableType;
295
0
        break;
296
0
    case constants__e_msg_monitored_items_set_triggering_req:
297
0
        *reqEncType = &OpcUa_SetTriggeringRequest_EncodeableType;
298
0
        *respEncType = &OpcUa_SetTriggeringResponse_EncodeableType;
299
0
        *isRequest = true;
300
0
        break;
301
0
    case constants__e_msg_monitored_items_set_triggering_resp:
302
0
        *reqEncType = &OpcUa_SetTriggeringRequest_EncodeableType;
303
0
        *respEncType = &OpcUa_SetTriggeringResponse_EncodeableType;
304
0
        break;
305
0
    case constants__e_msg_monitored_items_delete_req:
306
0
        *reqEncType = &OpcUa_DeleteMonitoredItemsRequest_EncodeableType;
307
0
        *respEncType = &OpcUa_DeleteMonitoredItemsResponse_EncodeableType;
308
0
        *isRequest = true;
309
0
        break;
310
0
    case constants__e_msg_monitored_items_delete_resp:
311
0
        *reqEncType = &OpcUa_DeleteMonitoredItemsRequest_EncodeableType;
312
0
        *respEncType = &OpcUa_DeleteMonitoredItemsResponse_EncodeableType;
313
0
        break;
314
0
    case constants__e_msg_subscription_create_req:
315
0
        *reqEncType = &OpcUa_CreateSubscriptionRequest_EncodeableType;
316
0
        *respEncType = &OpcUa_CreateSubscriptionResponse_EncodeableType;
317
0
        *isRequest = true;
318
0
        break;
319
0
    case constants__e_msg_subscription_create_resp:
320
0
        *reqEncType = &OpcUa_CreateSubscriptionRequest_EncodeableType;
321
0
        *respEncType = &OpcUa_CreateSubscriptionResponse_EncodeableType;
322
0
        break;
323
0
    case constants__e_msg_subscription_modify_req:
324
0
        *reqEncType = &OpcUa_ModifySubscriptionRequest_EncodeableType;
325
0
        *respEncType = &OpcUa_ModifySubscriptionResponse_EncodeableType;
326
0
        *isRequest = true;
327
0
        break;
328
0
    case constants__e_msg_subscription_modify_resp:
329
0
        *reqEncType = &OpcUa_ModifySubscriptionRequest_EncodeableType;
330
0
        *respEncType = &OpcUa_ModifySubscriptionResponse_EncodeableType;
331
0
        break;
332
0
    case constants__e_msg_subscription_set_publishing_mode_req:
333
0
        *reqEncType = &OpcUa_SetPublishingModeRequest_EncodeableType;
334
0
        *respEncType = &OpcUa_SetPublishingModeResponse_EncodeableType;
335
0
        *isRequest = true;
336
0
        break;
337
0
    case constants__e_msg_subscription_set_publishing_mode_resp:
338
0
        *reqEncType = &OpcUa_SetPublishingModeRequest_EncodeableType;
339
0
        *respEncType = &OpcUa_SetPublishingModeResponse_EncodeableType;
340
0
        break;
341
0
    case constants__e_msg_subscription_publish_req:
342
0
        *reqEncType = &OpcUa_PublishRequest_EncodeableType;
343
0
        *respEncType = &OpcUa_PublishResponse_EncodeableType;
344
0
        *isRequest = true;
345
0
        break;
346
0
    case constants__e_msg_subscription_publish_resp:
347
0
        *reqEncType = &OpcUa_PublishRequest_EncodeableType;
348
0
        *respEncType = &OpcUa_PublishResponse_EncodeableType;
349
0
        break;
350
0
    case constants__e_msg_subscription_republish_req:
351
0
        *reqEncType = &OpcUa_RepublishRequest_EncodeableType;
352
0
        *respEncType = &OpcUa_RepublishResponse_EncodeableType;
353
0
        *isRequest = true;
354
0
        break;
355
0
    case constants__e_msg_subscription_republish_resp:
356
0
        *reqEncType = &OpcUa_RepublishRequest_EncodeableType;
357
0
        *respEncType = &OpcUa_RepublishResponse_EncodeableType;
358
0
        break;
359
0
    case constants__e_msg_subscription_transfer_subscriptions_req:
360
0
        *reqEncType = &OpcUa_TransferSubscriptionsRequest_EncodeableType;
361
0
        *respEncType = &OpcUa_TransferSubscriptionsResponse_EncodeableType;
362
0
        *isRequest = true;
363
0
        break;
364
0
    case constants__e_msg_subscription_transfer_subscriptions_resp:
365
0
        *reqEncType = &OpcUa_TransferSubscriptionsRequest_EncodeableType;
366
0
        *respEncType = &OpcUa_TransferSubscriptionsResponse_EncodeableType;
367
0
        break;
368
0
    case constants__e_msg_subscription_delete_subscriptions_req:
369
0
        *reqEncType = &OpcUa_DeleteSubscriptionsRequest_EncodeableType;
370
0
        *respEncType = &OpcUa_DeleteSubscriptionsResponse_EncodeableType;
371
0
        *isRequest = true;
372
0
        break;
373
0
    case constants__e_msg_subscription_delete_subscriptions_resp:
374
0
        *reqEncType = &OpcUa_DeleteSubscriptionsRequest_EncodeableType;
375
0
        *respEncType = &OpcUa_DeleteSubscriptionsResponse_EncodeableType;
376
0
        break;
377
0
    case constants__e_msg_service_fault_resp:
378
0
        *reqEncType = NULL;
379
0
        *respEncType = &OpcUa_ServiceFault_EncodeableType;
380
0
        break;
381
0
    default:
382
0
        SOPC_Logger_TraceError(SOPC_LOG_MODULE_CLIENTSERVER, "util_message__get_encodeable_type: unknown type %d",
383
0
                               (int) message__msg_type);
384
0
        *reqEncType = NULL;
385
0
        *respEncType = NULL;
386
0
    }
387
0
}
388
389
void util_message__get_message_type(SOPC_EncodeableType* encType, constants__t_msg_type_i* message__msg_type)
390
0
{
391
0
    if (NULL == encType)
392
0
    {
393
0
        *message__msg_type = constants__c_msg_type_indet;
394
0
    }
395
0
    else
396
0
    {
397
0
        switch (encType->TypeId)
398
0
        {
399
0
        case OpcUaId_FindServersRequest:
400
0
            *message__msg_type = constants__e_msg_discovery_find_servers_req;
401
0
            break;
402
0
        case OpcUaId_FindServersResponse:
403
0
            *message__msg_type = constants__e_msg_discovery_find_servers_resp;
404
0
            break;
405
0
        case OpcUaId_FindServersOnNetworkRequest:
406
0
            *message__msg_type = constants__e_msg_discovery_find_servers_on_network_req;
407
0
            break;
408
0
        case OpcUaId_FindServersOnNetworkResponse:
409
0
            *message__msg_type = constants__e_msg_discovery_find_servers_on_network_resp;
410
0
            break;
411
0
        case OpcUaId_GetEndpointsRequest:
412
0
            *message__msg_type = constants__e_msg_discovery_get_endpoints_req;
413
0
            break;
414
0
        case OpcUaId_GetEndpointsResponse:
415
0
            *message__msg_type = constants__e_msg_discovery_get_endpoints_resp;
416
0
            break;
417
0
        case OpcUaId_RegisterServerRequest:
418
0
            *message__msg_type = constants__e_msg_discovery_register_server_req;
419
0
            break;
420
0
        case OpcUaId_RegisterServerResponse:
421
0
            *message__msg_type = constants__e_msg_discovery_register_server_resp;
422
0
            break;
423
0
        case OpcUaId_RegisterServer2Request:
424
0
            *message__msg_type = constants__e_msg_discovery_register_server2_req;
425
0
            break;
426
0
        case OpcUaId_RegisterServer2Response:
427
0
            *message__msg_type = constants__e_msg_discovery_register_server2_resp;
428
0
            break;
429
0
        case OpcUaId_CreateSessionRequest:
430
0
            *message__msg_type = constants__e_msg_session_create_req;
431
0
            break;
432
0
        case OpcUaId_CreateSessionResponse:
433
0
            *message__msg_type = constants__e_msg_session_create_resp;
434
0
            break;
435
0
        case OpcUaId_ActivateSessionRequest:
436
0
            *message__msg_type = constants__e_msg_session_activate_req;
437
0
            break;
438
0
        case OpcUaId_ActivateSessionResponse:
439
0
            *message__msg_type = constants__e_msg_session_activate_resp;
440
0
            break;
441
0
        case OpcUaId_CloseSessionRequest:
442
0
            *message__msg_type = constants__e_msg_session_close_req;
443
0
            break;
444
0
        case OpcUaId_CloseSessionResponse:
445
0
            *message__msg_type = constants__e_msg_session_close_resp;
446
0
            break;
447
0
        case OpcUaId_CancelRequest:
448
0
            *message__msg_type = constants__e_msg_session_cancel_req;
449
0
            break;
450
0
        case OpcUaId_CancelResponse:
451
0
            *message__msg_type = constants__e_msg_session_cancel_resp;
452
0
            break;
453
0
        case OpcUaId_AddNodesRequest:
454
0
            *message__msg_type = constants__e_msg_node_add_nodes_req;
455
0
            break;
456
0
        case OpcUaId_AddNodesResponse:
457
0
            *message__msg_type = constants__e_msg_node_add_nodes_resp;
458
0
            break;
459
0
        case OpcUaId_AddReferencesRequest:
460
0
            *message__msg_type = constants__e_msg_node_add_references_req;
461
0
            break;
462
0
        case OpcUaId_AddReferencesResponse:
463
0
            *message__msg_type = constants__e_msg_node_add_references_resp;
464
0
            break;
465
0
        case OpcUaId_DeleteNodesRequest:
466
0
            *message__msg_type = constants__e_msg_node_delete_nodes_req;
467
0
            break;
468
0
        case OpcUaId_DeleteNodesResponse:
469
0
            *message__msg_type = constants__e_msg_node_delete_nodes_resp;
470
0
            break;
471
0
        case OpcUaId_DeleteReferencesRequest:
472
0
            *message__msg_type = constants__e_msg_node_delete_references_req;
473
0
            break;
474
0
        case OpcUaId_DeleteReferencesResponse:
475
0
            *message__msg_type = constants__e_msg_node_delete_references_resp;
476
0
            break;
477
0
        case OpcUaId_BrowseRequest:
478
0
            *message__msg_type = constants__e_msg_view_browse_req;
479
0
            break;
480
0
        case OpcUaId_BrowseResponse:
481
0
            *message__msg_type = constants__e_msg_view_browse_resp;
482
0
            break;
483
0
        case OpcUaId_BrowseNextRequest:
484
0
            *message__msg_type = constants__e_msg_view_browse_next_req;
485
0
            break;
486
0
        case OpcUaId_BrowseNextResponse:
487
0
            *message__msg_type = constants__e_msg_view_browse_next_resp;
488
0
            break;
489
0
        case OpcUaId_TranslateBrowsePathsToNodeIdsRequest:
490
0
            *message__msg_type = constants__e_msg_view_translate_browse_paths_to_node_ids_req;
491
0
            break;
492
0
        case OpcUaId_TranslateBrowsePathsToNodeIdsResponse:
493
0
            *message__msg_type = constants__e_msg_view_translate_browse_paths_to_node_ids_resp;
494
0
            break;
495
0
        case OpcUaId_RegisterNodesRequest:
496
0
            *message__msg_type = constants__e_msg_view_register_nodes_req;
497
0
            break;
498
0
        case OpcUaId_RegisterNodesResponse:
499
0
            *message__msg_type = constants__e_msg_view_register_nodes_resp;
500
0
            break;
501
0
        case OpcUaId_UnregisterNodesRequest:
502
0
            *message__msg_type = constants__e_msg_view_unregister_nodes_req;
503
0
            break;
504
0
        case OpcUaId_UnregisterNodesResponse:
505
0
            *message__msg_type = constants__e_msg_view_unregister_nodes_resp;
506
0
            break;
507
0
        case OpcUaId_QueryFirstRequest:
508
0
            *message__msg_type = constants__e_msg_query_first_req;
509
0
            break;
510
0
        case OpcUaId_QueryFirstResponse:
511
0
            *message__msg_type = constants__e_msg_query_first_resp;
512
0
            break;
513
0
        case OpcUaId_QueryNextRequest:
514
0
            *message__msg_type = constants__e_msg_query_next_req;
515
0
            break;
516
0
        case OpcUaId_QueryNextResponse:
517
0
            *message__msg_type = constants__e_msg_query_next_resp;
518
0
            break;
519
0
        case OpcUaId_ReadRequest:
520
0
            *message__msg_type = constants__e_msg_attribute_read_req;
521
0
            break;
522
0
        case OpcUaId_ReadResponse:
523
0
            *message__msg_type = constants__e_msg_attribute_read_resp;
524
0
            break;
525
0
        case OpcUaId_HistoryReadRequest:
526
0
            *message__msg_type = constants__e_msg_attribute_history_read_req;
527
0
            break;
528
0
        case OpcUaId_HistoryReadResponse:
529
0
            *message__msg_type = constants__e_msg_attribute_history_read_resp;
530
0
            break;
531
0
        case OpcUaId_WriteRequest:
532
0
            *message__msg_type = constants__e_msg_attribute_write_req;
533
0
            break;
534
0
        case OpcUaId_WriteResponse:
535
0
            *message__msg_type = constants__e_msg_attribute_write_resp;
536
0
            break;
537
0
        case OpcUaId_HistoryUpdateRequest:
538
0
            *message__msg_type = constants__e_msg_attribute_history_update_req;
539
0
            break;
540
0
        case OpcUaId_HistoryUpdateResponse:
541
0
            *message__msg_type = constants__e_msg_attribute_history_update_resp;
542
0
            break;
543
0
        case OpcUaId_CallRequest:
544
0
            *message__msg_type = constants__e_msg_method_call_req;
545
0
            break;
546
0
        case OpcUaId_CallResponse:
547
0
            *message__msg_type = constants__e_msg_method_call_resp;
548
0
            break;
549
0
        case OpcUaId_CreateMonitoredItemsRequest:
550
0
            *message__msg_type = constants__e_msg_monitored_items_create_req;
551
0
            break;
552
0
        case OpcUaId_CreateMonitoredItemsResponse:
553
0
            *message__msg_type = constants__e_msg_monitored_items_create_resp;
554
0
            break;
555
0
        case OpcUaId_ModifyMonitoredItemsRequest:
556
0
            *message__msg_type = constants__e_msg_monitored_items_modify_req;
557
0
            break;
558
0
        case OpcUaId_ModifyMonitoredItemsResponse:
559
0
            *message__msg_type = constants__e_msg_monitored_items_modify_resp;
560
0
            break;
561
0
        case OpcUaId_SetMonitoringModeRequest:
562
0
            *message__msg_type = constants__e_msg_monitored_items_set_monitoring_mode_req;
563
0
            break;
564
0
        case OpcUaId_SetMonitoringModeResponse:
565
0
            *message__msg_type = constants__e_msg_monitored_items_set_monitoring_mode_resp;
566
0
            break;
567
0
        case OpcUaId_SetTriggeringRequest:
568
0
            *message__msg_type = constants__e_msg_monitored_items_set_triggering_req;
569
0
            break;
570
0
        case OpcUaId_SetTriggeringResponse:
571
0
            *message__msg_type = constants__e_msg_monitored_items_set_triggering_resp;
572
0
            break;
573
0
        case OpcUaId_DeleteMonitoredItemsRequest:
574
0
            *message__msg_type = constants__e_msg_monitored_items_delete_req;
575
0
            break;
576
0
        case OpcUaId_DeleteMonitoredItemsResponse:
577
0
            *message__msg_type = constants__e_msg_monitored_items_delete_resp;
578
0
            break;
579
0
        case OpcUaId_CreateSubscriptionRequest:
580
0
            *message__msg_type = constants__e_msg_subscription_create_req;
581
0
            break;
582
0
        case OpcUaId_CreateSubscriptionResponse:
583
0
            *message__msg_type = constants__e_msg_subscription_create_resp;
584
0
            break;
585
0
        case OpcUaId_ModifySubscriptionRequest:
586
0
            *message__msg_type = constants__e_msg_subscription_modify_req;
587
0
            break;
588
0
        case OpcUaId_ModifySubscriptionResponse:
589
0
            *message__msg_type = constants__e_msg_subscription_modify_resp;
590
0
            break;
591
0
        case OpcUaId_SetPublishingModeRequest:
592
0
            *message__msg_type = constants__e_msg_subscription_set_publishing_mode_req;
593
0
            break;
594
0
        case OpcUaId_SetPublishingModeResponse:
595
0
            *message__msg_type = constants__e_msg_subscription_set_publishing_mode_resp;
596
0
            break;
597
0
        case OpcUaId_PublishRequest:
598
0
            *message__msg_type = constants__e_msg_subscription_publish_req;
599
0
            break;
600
0
        case OpcUaId_PublishResponse:
601
0
            *message__msg_type = constants__e_msg_subscription_publish_resp;
602
0
            break;
603
0
        case OpcUaId_RepublishRequest:
604
0
            *message__msg_type = constants__e_msg_subscription_republish_req;
605
0
            break;
606
0
        case OpcUaId_RepublishResponse:
607
0
            *message__msg_type = constants__e_msg_subscription_republish_resp;
608
0
            break;
609
0
        case OpcUaId_TransferSubscriptionsRequest:
610
0
            *message__msg_type = constants__e_msg_subscription_transfer_subscriptions_req;
611
0
            break;
612
0
        case OpcUaId_TransferSubscriptionsResponse:
613
0
            *message__msg_type = constants__e_msg_subscription_transfer_subscriptions_resp;
614
0
            break;
615
0
        case OpcUaId_DeleteSubscriptionsRequest:
616
0
            *message__msg_type = constants__e_msg_subscription_delete_subscriptions_req;
617
0
            break;
618
0
        case OpcUaId_DeleteSubscriptionsResponse:
619
0
            *message__msg_type = constants__e_msg_subscription_delete_subscriptions_resp;
620
0
            break;
621
0
        case OpcUaId_ServiceFault:
622
0
            *message__msg_type = constants__e_msg_service_fault_resp;
623
0
            break;
624
0
        default:
625
0
            *message__msg_type = constants__c_msg_type_indet;
626
0
        }
627
0
    }
628
0
}
629
630
/*
631
 * We take here advantage that the header is always stored as the second field
632
 * of any response struct.
633
 */
634
typedef struct SOPC_OpcUaResponseMsgStructureStart
635
{
636
    SOPC_EncodeableType* encodeableType;
637
    OpcUa_ResponseHeader ResponseHeader;
638
} SOPC_OpcUaResponseMsgStructureStart;
639
640
void util_message__copy_resp_header_into_msg(const constants__t_msg_header_i header, const constants__t_msg_i msg)
641
0
{
642
0
    OpcUa_ResponseHeader* respHeader = (OpcUa_ResponseHeader*) header;
643
0
    SOPC_OpcUaResponseMsgStructureStart* respMsg = (SOPC_OpcUaResponseMsgStructureStart*) msg;
644
0
    respMsg->ResponseHeader = *respHeader;
645
0
}
646
647
void util_status_code__B_to_C(constants_statuscodes_bs__t_StatusCode_i bstatus, SOPC_StatusCode* status)
648
0
{
649
0
    switch (bstatus)
650
0
    {
651
0
    case constants_statuscodes_bs__e_sc_ok:
652
0
        *status = SOPC_GoodGenericStatus;
653
0
        break;
654
0
    case constants_statuscodes_bs__e_sc_bad_generic:
655
0
        *status = SOPC_BadStatusMask; // generic bad status
656
0
        break;
657
0
    case constants_statuscodes_bs__e_sc_uncertain_generic:
658
0
        *status = SOPC_UncertainStatusMask; // generic uncertain status
659
0
        break;
660
0
    case constants_statuscodes_bs__e_sc_bad_internal_error:
661
0
        *status = OpcUa_BadInternalError;
662
0
        break;
663
0
    case constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid:
664
0
        *status = OpcUa_BadSecureChannelIdInvalid;
665
0
        break;
666
0
    case constants_statuscodes_bs__e_sc_bad_secure_channel_closed:
667
0
        *status = OpcUa_BadSecureChannelClosed;
668
0
        break;
669
0
    case constants_statuscodes_bs__e_sc_bad_connection_closed:
670
0
        *status = OpcUa_BadConnectionClosed;
671
0
        break;
672
0
    case constants_statuscodes_bs__e_sc_bad_invalid_state:
673
0
        *status = OpcUa_BadInvalidState;
674
0
        break;
675
0
    case constants_statuscodes_bs__e_sc_bad_session_id_invalid:
676
0
        *status = OpcUa_BadSessionIdInvalid;
677
0
        break;
678
0
    case constants_statuscodes_bs__e_sc_bad_session_closed:
679
0
        *status = OpcUa_BadSessionClosed;
680
0
        break;
681
0
    case constants_statuscodes_bs__e_sc_bad_session_not_activated:
682
0
        *status = OpcUa_BadSessionNotActivated;
683
0
        break;
684
0
    case constants_statuscodes_bs__e_sc_bad_too_many_sessions:
685
0
        *status = OpcUa_BadTooManySessions;
686
0
        break;
687
0
    case constants_statuscodes_bs__e_sc_bad_identity_token_invalid:
688
0
        *status = OpcUa_BadIdentityTokenInvalid;
689
0
        break;
690
0
    case constants_statuscodes_bs__e_sc_bad_identity_token_rejected:
691
0
        *status = OpcUa_BadIdentityTokenRejected;
692
0
        break;
693
0
    case constants_statuscodes_bs__e_sc_bad_application_signature_invalid:
694
0
        *status = OpcUa_BadApplicationSignatureInvalid;
695
0
        break;
696
0
    case constants_statuscodes_bs__e_sc_bad_encoding_error:
697
0
        *status = OpcUa_BadEncodingError;
698
0
        break;
699
0
    case constants_statuscodes_bs__e_sc_bad_decoding_error:
700
0
        *status = OpcUa_BadDecodingError;
701
0
        break;
702
0
    case constants_statuscodes_bs__e_sc_bad_request_too_large:
703
0
        *status = OpcUa_BadRequestTooLarge;
704
0
        break;
705
0
    case constants_statuscodes_bs__e_sc_bad_response_too_large:
706
0
        *status = OpcUa_BadResponseTooLarge;
707
0
        break;
708
0
    case constants_statuscodes_bs__e_sc_bad_invalid_argument:
709
0
        *status = OpcUa_BadInvalidArgument;
710
0
        break;
711
0
    case constants_statuscodes_bs__e_sc_bad_unexpected_error:
712
0
        *status = OpcUa_BadUnexpectedError;
713
0
        break;
714
0
    case constants_statuscodes_bs__e_sc_bad_out_of_memory:
715
0
        *status = OpcUa_BadOutOfMemory;
716
0
        break;
717
0
    case constants_statuscodes_bs__e_sc_bad_nothing_to_do:
718
0
        *status = OpcUa_BadNothingToDo;
719
0
        break;
720
0
    case constants_statuscodes_bs__e_sc_bad_too_many_ops:
721
0
        *status = OpcUa_BadTooManyOperations;
722
0
        break;
723
0
    case constants_statuscodes_bs__e_sc_bad_max_age_invalid:
724
0
        *status = OpcUa_BadMaxAgeInvalid;
725
0
        break;
726
0
    case constants_statuscodes_bs__e_sc_bad_timestamps_to_return_invalid:
727
0
        *status = OpcUa_BadTimestampsToReturnInvalid;
728
0
        break;
729
0
    case constants_statuscodes_bs__e_sc_bad_history_operation_invalid:
730
0
        *status = OpcUa_BadHistoryOperationInvalid;
731
0
        break;
732
0
    case constants_statuscodes_bs__e_sc_bad_history_operation_unsupported:
733
0
        *status = OpcUa_BadHistoryOperationUnsupported;
734
0
        break;
735
0
    case constants_statuscodes_bs__e_sc_bad_node_id_unknown:
736
0
        *status = OpcUa_BadNodeIdUnknown;
737
0
        break;
738
0
    case constants_statuscodes_bs__e_sc_bad_node_id_invalid:
739
0
        *status = OpcUa_BadNodeIdInvalid;
740
0
        break;
741
0
    case constants_statuscodes_bs__e_sc_bad_view_id_unknown:
742
0
        *status = OpcUa_BadViewIdUnknown;
743
0
        break;
744
0
    case constants_statuscodes_bs__e_sc_bad_attribute_id_invalid:
745
0
        *status = OpcUa_BadAttributeIdInvalid;
746
0
        break;
747
0
    case constants_statuscodes_bs__e_sc_bad_browse_direction_invalid:
748
0
        *status = OpcUa_BadBrowseDirectionInvalid;
749
0
        break;
750
0
    case constants_statuscodes_bs__e_sc_bad_browse_name_invalid:
751
0
        *status = OpcUa_BadBrowseNameInvalid;
752
0
        break;
753
0
    case constants_statuscodes_bs__e_sc_bad_service_unsupported:
754
0
        *status = OpcUa_BadServiceUnsupported;
755
0
        break;
756
0
    case constants_statuscodes_bs__e_sc_bad_write_not_supported:
757
0
        *status = OpcUa_BadWriteNotSupported;
758
0
        break;
759
0
    case constants_statuscodes_bs__e_sc_bad_timeout:
760
0
        *status = OpcUa_BadTimeout;
761
0
        break;
762
0
    case constants_statuscodes_bs__e_sc_bad_too_many_subscriptions:
763
0
        *status = OpcUa_BadTooManySubscriptions;
764
0
        break;
765
0
    case constants_statuscodes_bs__e_sc_bad_no_subscription:
766
0
        *status = OpcUa_BadNoSubscription;
767
0
        break;
768
0
    case constants_statuscodes_bs__e_sc_bad_subscription_id_invalid:
769
0
        *status = OpcUa_BadSubscriptionIdInvalid;
770
0
        break;
771
0
    case constants_statuscodes_bs__e_sc_bad_too_many_monitored_items:
772
0
        *status = OpcUa_BadTooManyMonitoredItems;
773
0
        break;
774
0
    case constants_statuscodes_bs__e_sc_bad_monitored_item_id_invalid:
775
0
        *status = OpcUa_BadMonitoredItemIdInvalid;
776
0
        break;
777
0
    case constants_statuscodes_bs__e_sc_bad_monitoring_mode_invalid:
778
0
        *status = OpcUa_BadMonitoringModeInvalid;
779
0
        break;
780
0
    case constants_statuscodes_bs__e_sc_bad_monitored_item_filter_unsupported:
781
0
        *status = OpcUa_BadMonitoredItemFilterUnsupported;
782
0
        break;
783
0
    case constants_statuscodes_bs__e_sc_bad_monitored_item_filter_invalid:
784
0
        *status = OpcUa_BadMonitoredItemFilterInvalid;
785
0
        break;
786
0
    case constants_statuscodes_bs__e_sc_bad_deadband_filter_invalid:
787
0
        *status = OpcUa_BadDeadbandFilterInvalid;
788
0
        break;
789
0
    case constants_statuscodes_bs__e_sc_bad_filter_not_allowed:
790
0
        *status = OpcUa_BadFilterNotAllowed;
791
0
        break;
792
0
    case constants_statuscodes_bs__e_sc_bad_too_many_publish_requests:
793
0
        *status = OpcUa_BadTooManyPublishRequests;
794
0
        break;
795
0
    case constants_statuscodes_bs__e_sc_bad_message_not_available:
796
0
        *status = OpcUa_BadMessageNotAvailable;
797
0
        break;
798
0
    case constants_statuscodes_bs__e_sc_bad_sequence_number_unknown:
799
0
        *status = OpcUa_BadSequenceNumberUnknown;
800
0
        break;
801
0
    case constants_statuscodes_bs__e_sc_bad_index_range_invalid:
802
0
        *status = OpcUa_BadIndexRangeInvalid;
803
0
        break;
804
0
    case constants_statuscodes_bs__e_sc_bad_index_range_no_data:
805
0
        *status = OpcUa_BadIndexRangeNoData;
806
0
        break;
807
0
    case constants_statuscodes_bs__e_sc_bad_user_access_denied:
808
0
        *status = OpcUa_BadUserAccessDenied;
809
0
        break;
810
0
    case constants_statuscodes_bs__e_sc_bad_certificate_uri_invalid:
811
0
        *status = OpcUa_BadCertificateUriInvalid;
812
0
        break;
813
0
    case constants_statuscodes_bs__e_sc_bad_security_checks_failed:
814
0
        *status = OpcUa_BadSecurityChecksFailed;
815
0
        break;
816
0
    case constants_statuscodes_bs__e_sc_bad_request_interrupted:
817
0
        *status = OpcUa_BadRequestInterrupted;
818
0
        break;
819
0
    case constants_statuscodes_bs__e_sc_bad_data_unavailable:
820
0
        *status = OpcUa_BadDataUnavailable;
821
0
        break;
822
0
    case constants_statuscodes_bs__e_sc_bad_not_writable:
823
0
        *status = OpcUa_BadNotWritable;
824
0
        break;
825
0
    case constants_statuscodes_bs__e_sc_bad_not_readable:
826
0
        *status = OpcUa_BadNotReadable;
827
0
        break;
828
0
    case constants_statuscodes_bs__e_sc_bad_type_mismatch:
829
0
        *status = OpcUa_BadTypeMismatch;
830
0
        break;
831
0
    case constants_statuscodes_bs__e_sc_bad_locale_not_supported:
832
0
        *status = TMP_OpcUa_BadLocaleNotSupported;
833
0
        break;
834
0
    case constants_statuscodes_bs__e_sc_bad_reference_type_id_invalid:
835
0
        *status = OpcUa_BadReferenceTypeIdInvalid;
836
0
        break;
837
0
    case constants_statuscodes_bs__e_sc_bad_continuation_point_invalid:
838
0
        *status = OpcUa_BadContinuationPointInvalid;
839
0
        break;
840
0
    case constants_statuscodes_bs__e_sc_bad_no_continuation_points:
841
0
        *status = OpcUa_BadNoContinuationPoints;
842
0
        break;
843
0
    case constants_statuscodes_bs__e_sc_bad_query_too_complex:
844
0
        *status = OpcUa_BadQueryTooComplex;
845
0
        break;
846
0
    case constants_statuscodes_bs__e_sc_bad_no_match:
847
0
        *status = OpcUa_BadNoMatch;
848
0
        break;
849
0
    case constants_statuscodes_bs__e_sc_bad_data_encoding_invalid:
850
0
        *status = OpcUa_BadDataEncodingInvalid;
851
0
        break;
852
0
    case constants_statuscodes_bs__e_sc_bad_data_encoding_unsupported:
853
0
        *status = OpcUa_BadDataEncodingUnsupported;
854
0
        break;
855
0
    case constants_statuscodes_bs__e_sc_bad_server_uri_invalid:
856
0
        *status = OpcUa_BadServerUriInvalid;
857
0
        break;
858
0
    case constants_statuscodes_bs__e_sc_bad_server_name_missing:
859
0
        *status = OpcUa_BadServerNameMissing;
860
0
        break;
861
0
    case constants_statuscodes_bs__e_sc_bad_discovery_url_missing:
862
0
        *status = OpcUa_BadDiscoveryUrlMissing;
863
0
        break;
864
0
    case constants_statuscodes_bs__e_sc_bad_semaphore_file_missing:
865
0
        *status = OpcUa_BadSemaphoreFileMissing;
866
0
        break;
867
0
    case constants_statuscodes_bs__e_sc_bad_not_supported:
868
0
        *status = OpcUa_BadNotSupported;
869
0
        break;
870
0
    case constants_statuscodes_bs__e_sc_uncertain_reference_out_of_server:
871
0
        *status = OpcUa_UncertainReferenceOutOfServer;
872
0
        break;
873
0
    case constants_statuscodes_bs__e_sc_bad_arguments_missing:
874
0
        *status = OpcUa_BadArgumentsMissing;
875
0
        break;
876
0
    case constants_statuscodes_bs__e_sc_bad_too_many_arguments:
877
0
        *status = OpcUa_BadTooManyArguments;
878
0
        break;
879
0
    case constants_statuscodes_bs__e_sc_bad_method_invalid:
880
0
        *status = OpcUa_BadMethodInvalid;
881
0
        break;
882
0
    case constants_statuscodes_bs__e_sc_bad_not_implemented:
883
0
        *status = OpcUa_BadNotImplemented;
884
0
        break;
885
0
    case constants_statuscodes_bs__e_sc_bad_nonce_invalid:
886
0
        *status = OpcUa_BadNonceInvalid;
887
0
        break;
888
0
    case constants_statuscodes_bs__e_sc_bad_encoding_limits_exceeded:
889
0
        *status = OpcUa_BadEncodingLimitsExceeded;
890
0
        break;
891
0
    case constants_statuscodes_bs__e_sc_bad_not_found:
892
0
        *status = OpcUa_BadNotFound;
893
0
        break;
894
0
    case constants_statuscodes_bs__e_sc_bad_security_mode_insufficient:
895
0
        *status = OpcUa_BadSecurityModeInsufficient;
896
0
        break;
897
0
    case constants_statuscodes_bs__e_sc_bad_not_executable:
898
0
        *status = OpcUa_BadNotExecutable;
899
0
        break;
900
0
    case constants_statuscodes_bs__e_sc_bad_no_communication:
901
0
        *status = OpcUa_BadNoCommunication;
902
0
        break;
903
0
    case constants_statuscodes_bs__e_sc_bad_out_of_range:
904
0
        *status = OpcUa_BadOutOfRange;
905
0
        break;
906
0
    case constants_statuscodes_bs__e_sc_bad_resource_unavailable:
907
0
        *status = OpcUa_BadResourceUnavailable;
908
0
        break;
909
0
    case constants_statuscodes_bs__e_sc_bad_parent_node_id_invalid:
910
0
        *status = OpcUa_BadParentNodeIdInvalid;
911
0
        break;
912
0
    case constants_statuscodes_bs__e_sc_bad_reference_not_allowed:
913
0
        *status = OpcUa_BadReferenceNotAllowed;
914
0
        break;
915
0
    case constants_statuscodes_bs__e_sc_bad_node_id_rejected:
916
0
        *status = OpcUa_BadNodeIdRejected;
917
0
        break;
918
0
    case constants_statuscodes_bs__e_sc_bad_node_id_exists:
919
0
        *status = OpcUa_BadNodeIdExists;
920
0
        break;
921
0
    case constants_statuscodes_bs__e_sc_bad_node_class_invalid:
922
0
        *status = OpcUa_BadNodeClassInvalid;
923
0
        break;
924
0
    case constants_statuscodes_bs__e_sc_bad_browse_name_duplicated:
925
0
        *status = OpcUa_BadBrowseNameDuplicated;
926
0
        break;
927
0
    case constants_statuscodes_bs__e_sc_bad_node_attributes_invalid:
928
0
        *status = OpcUa_BadNodeAttributesInvalid;
929
0
        break;
930
0
    case constants_statuscodes_bs__e_sc_bad_type_definition_invalid:
931
0
        *status = OpcUa_BadTypeDefinitionInvalid;
932
0
        break;
933
0
    case constants_statuscodes_bs__e_sc_bad_user_signature_invalid:
934
0
        *status = OpcUa_BadUserSignatureInvalid;
935
0
        break;
936
0
    case constants_statuscodes_bs__e_sc_uncertain_reference_not_deleted:
937
0
        *status = OpcUa_UncertainReferenceNotDeleted;
938
0
        break;
939
0
    case constants_statuscodes_bs__e_sc_bad_server_too_busy:
940
0
        *status = OpcUa_BadServerTooBusy;
941
0
        break;
942
0
    default:
943
0
        *status = OpcUa_BadInternalError;
944
0
    }
945
0
}
946
947
SOPC_ReturnStatus util_status_code__B_to_return_status_C(constants_statuscodes_bs__t_StatusCode_i bstatus)
948
0
{
949
0
    SOPC_ReturnStatus result = SOPC_STATUS_NOK;
950
0
    switch (bstatus)
951
0
    {
952
0
    case constants_statuscodes_bs__e_sc_ok:
953
0
        result = SOPC_STATUS_OK;
954
0
        break;
955
0
    case constants_statuscodes_bs__e_sc_bad_generic:
956
0
        result = SOPC_STATUS_NOK;
957
0
        break;
958
0
    case constants_statuscodes_bs__e_sc_uncertain_generic:
959
0
        result = SOPC_STATUS_NOK;
960
0
        break;
961
0
    case constants_statuscodes_bs__e_sc_bad_internal_error:
962
0
        result = SOPC_STATUS_NOK;
963
0
        break;
964
0
    case constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid:
965
0
        result = SOPC_STATUS_INVALID_PARAMETERS;
966
0
        break;
967
0
    case constants_statuscodes_bs__e_sc_bad_secure_channel_closed:
968
0
        result = SOPC_STATUS_CLOSED;
969
0
        break;
970
0
    case constants_statuscodes_bs__e_sc_bad_connection_closed:
971
0
        result = SOPC_STATUS_CLOSED;
972
0
        break;
973
0
    case constants_statuscodes_bs__e_sc_bad_invalid_state:
974
0
        result = SOPC_STATUS_INVALID_STATE;
975
0
        break;
976
0
    case constants_statuscodes_bs__e_sc_bad_session_id_invalid:
977
0
        result = SOPC_STATUS_INVALID_PARAMETERS;
978
0
        break;
979
0
    case constants_statuscodes_bs__e_sc_bad_session_closed:
980
0
        result = SOPC_STATUS_INVALID_STATE;
981
0
        break;
982
0
    case constants_statuscodes_bs__e_sc_bad_session_not_activated:
983
0
        result = SOPC_STATUS_INVALID_STATE;
984
0
        break;
985
0
    case constants_statuscodes_bs__e_sc_bad_identity_token_invalid:
986
0
        result = SOPC_STATUS_INVALID_PARAMETERS;
987
0
        break;
988
0
    case constants_statuscodes_bs__e_sc_bad_identity_token_rejected:
989
0
        result = SOPC_STATUS_INVALID_PARAMETERS;
990
0
        break;
991
0
    case constants_statuscodes_bs__e_sc_bad_encoding_error:
992
0
        result = SOPC_STATUS_ENCODING_ERROR;
993
0
        break;
994
0
    case constants_statuscodes_bs__e_sc_bad_decoding_error:
995
0
        result = SOPC_STATUS_ENCODING_ERROR;
996
0
        break;
997
0
    case constants_statuscodes_bs__e_sc_bad_request_too_large:
998
0
        result = SOPC_STATUS_ENCODING_ERROR;
999
0
        break;
1000
0
    case constants_statuscodes_bs__e_sc_bad_response_too_large:
1001
0
        result = SOPC_STATUS_ENCODING_ERROR;
1002
0
        break;
1003
0
    case constants_statuscodes_bs__e_sc_bad_encoding_limits_exceeded:
1004
0
        result = SOPC_STATUS_ENCODING_ERROR;
1005
0
        break;
1006
0
    case constants_statuscodes_bs__e_sc_bad_invalid_argument:
1007
0
        result = SOPC_STATUS_INVALID_PARAMETERS;
1008
0
        break;
1009
0
    case constants_statuscodes_bs__e_sc_bad_out_of_memory:
1010
0
        result = SOPC_STATUS_OUT_OF_MEMORY;
1011
0
        break;
1012
0
    case constants_statuscodes_bs__e_sc_bad_too_many_ops:
1013
0
        result = SOPC_STATUS_OUT_OF_MEMORY;
1014
0
        break;
1015
0
    case constants_statuscodes_bs__e_sc_bad_timeout:
1016
0
        result = SOPC_STATUS_TIMEOUT;
1017
0
        break;
1018
0
    default:
1019
0
        result = SOPC_STATUS_NOK;
1020
0
    }
1021
0
    return result;
1022
0
}
1023
1024
constants_statuscodes_bs__t_StatusCode_i util_return_status__C_to_status_code_B(SOPC_ReturnStatus status)
1025
0
{
1026
0
    switch (status)
1027
0
    {
1028
0
    case SOPC_STATUS_OUT_OF_MEMORY:
1029
0
        return constants_statuscodes_bs__e_sc_bad_out_of_memory;
1030
0
    default:
1031
0
        SOPC_Logger_TraceWarning(
1032
0
            SOPC_LOG_MODULE_CLIENTSERVER,
1033
0
            "util_return_status__C_to_status_code_B: internal error generated from return status code %d",
1034
0
            (int) status);
1035
0
        return constants_statuscodes_bs__e_sc_bad_internal_error;
1036
0
    }
1037
0
}
1038
1039
void util_status_code__C_to_B(SOPC_StatusCode status, constants_statuscodes_bs__t_StatusCode_i* bstatus)
1040
0
{
1041
    /*
1042
     * Important note: Good* and Uncertain* statuses shall always be translated
1043
     *                 to normalized enum value (e_sc_ok / e_sc_uncertain_generic)
1044
     *                 to ensure expected behavior with current B model.
1045
     *                 Otherwise model shall be updated (e.g. see treat_one_method_call)
1046
     */
1047
0
    switch (status)
1048
0
    {
1049
0
    case OpcUa_BadInternalError:
1050
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_internal_error;
1051
0
        break;
1052
0
    case OpcUa_BadSecureChannelClosed:
1053
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_secure_channel_closed;
1054
0
        break;
1055
0
    case OpcUa_BadSecureChannelIdInvalid:
1056
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_secure_channel_id_invalid;
1057
0
        break;
1058
0
    case OpcUa_BadConnectionClosed:
1059
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_connection_closed;
1060
0
        break;
1061
0
    case OpcUa_BadInvalidState:
1062
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_invalid_state;
1063
0
        break;
1064
0
    case OpcUa_BadSessionIdInvalid:
1065
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_session_id_invalid;
1066
0
        break;
1067
0
    case OpcUa_BadSessionClosed:
1068
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_session_closed;
1069
0
        break;
1070
0
    case OpcUa_BadSessionNotActivated:
1071
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_session_not_activated;
1072
0
        break;
1073
0
    case OpcUa_BadTooManySessions:
1074
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_sessions;
1075
0
        break;
1076
0
    case OpcUa_BadIdentityTokenInvalid:
1077
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_identity_token_invalid;
1078
0
        break;
1079
0
    case OpcUa_BadIdentityTokenRejected:
1080
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_identity_token_rejected;
1081
0
        break;
1082
0
    case OpcUa_BadApplicationSignatureInvalid:
1083
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_application_signature_invalid;
1084
0
        break;
1085
0
    case OpcUa_BadEncodingError:
1086
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_encoding_error;
1087
0
        break;
1088
0
    case OpcUa_BadDecodingError:
1089
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_decoding_error;
1090
0
        break;
1091
0
    case OpcUa_BadRequestTooLarge:
1092
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_request_too_large;
1093
0
        break;
1094
0
    case OpcUa_BadResponseTooLarge:
1095
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_response_too_large;
1096
0
        break;
1097
0
    case OpcUa_BadInvalidArgument:
1098
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_invalid_argument;
1099
0
        break;
1100
0
    case OpcUa_BadUnexpectedError:
1101
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_unexpected_error;
1102
0
        break;
1103
0
    case OpcUa_BadOutOfMemory:
1104
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_out_of_memory;
1105
0
        break;
1106
0
    case OpcUa_BadNothingToDo:
1107
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_nothing_to_do;
1108
0
        break;
1109
0
    case OpcUa_BadTooManyOperations:
1110
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_ops;
1111
0
        break;
1112
0
    case OpcUa_BadMaxAgeInvalid:
1113
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_max_age_invalid;
1114
0
        break;
1115
0
    case OpcUa_BadTimestampsToReturnInvalid:
1116
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_timestamps_to_return_invalid;
1117
0
        break;
1118
0
    case OpcUa_BadHistoryOperationInvalid:
1119
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_history_operation_invalid;
1120
0
        break;
1121
0
    case OpcUa_BadHistoryOperationUnsupported:
1122
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_history_operation_unsupported;
1123
0
        break;
1124
0
    case OpcUa_BadNodeIdUnknown:
1125
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_id_unknown;
1126
0
        break;
1127
0
    case OpcUa_BadNodeIdInvalid:
1128
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_id_invalid;
1129
0
        break;
1130
0
    case OpcUa_BadViewIdUnknown:
1131
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_view_id_unknown;
1132
0
        break;
1133
0
    case OpcUa_BadAttributeIdInvalid:
1134
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_attribute_id_invalid;
1135
0
        break;
1136
0
    case OpcUa_BadBrowseDirectionInvalid:
1137
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_browse_direction_invalid;
1138
0
        break;
1139
0
    case OpcUa_BadBrowseNameInvalid:
1140
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_browse_name_invalid;
1141
0
        break;
1142
0
    case OpcUa_BadServiceUnsupported:
1143
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_service_unsupported;
1144
0
        break;
1145
0
    case OpcUa_BadWriteNotSupported:
1146
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_write_not_supported;
1147
0
        break;
1148
0
    case OpcUa_BadTimeout:
1149
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_timeout;
1150
0
        break;
1151
0
    case OpcUa_BadTooManySubscriptions:
1152
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_subscriptions;
1153
0
        break;
1154
0
    case OpcUa_BadNoSubscription:
1155
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_no_subscription;
1156
0
        break;
1157
0
    case OpcUa_BadSubscriptionIdInvalid:
1158
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_subscription_id_invalid;
1159
0
        break;
1160
0
    case OpcUa_BadTooManyMonitoredItems:
1161
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_monitored_items;
1162
0
        break;
1163
0
    case OpcUa_BadMonitoringModeInvalid:
1164
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_monitoring_mode_invalid;
1165
0
        break;
1166
0
    case OpcUa_BadMonitoredItemIdInvalid:
1167
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_monitored_item_id_invalid;
1168
0
        break;
1169
0
    case OpcUa_BadMonitoredItemFilterUnsupported:
1170
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_monitored_item_filter_unsupported;
1171
0
        break;
1172
0
    case OpcUa_BadMonitoredItemFilterInvalid:
1173
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_monitored_item_filter_invalid;
1174
0
        break;
1175
0
    case OpcUa_BadDeadbandFilterInvalid:
1176
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_deadband_filter_invalid;
1177
0
        break;
1178
0
    case OpcUa_BadFilterNotAllowed:
1179
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_filter_not_allowed;
1180
0
        break;
1181
0
    case OpcUa_BadTooManyPublishRequests:
1182
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_publish_requests;
1183
0
        break;
1184
0
    case OpcUa_BadMessageNotAvailable:
1185
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_message_not_available;
1186
0
        break;
1187
0
    case OpcUa_BadSequenceNumberUnknown:
1188
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_sequence_number_unknown;
1189
0
        break;
1190
0
    case OpcUa_BadIndexRangeInvalid:
1191
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_index_range_invalid;
1192
0
        break;
1193
0
    case OpcUa_BadIndexRangeNoData:
1194
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_index_range_no_data;
1195
0
        break;
1196
0
    case OpcUa_BadUserAccessDenied:
1197
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_user_access_denied;
1198
0
        break;
1199
0
    case OpcUa_BadCertificateUriInvalid:
1200
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_certificate_uri_invalid;
1201
0
        break;
1202
0
    case OpcUa_BadSecurityChecksFailed:
1203
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_security_checks_failed;
1204
0
        break;
1205
0
    case OpcUa_BadRequestInterrupted:
1206
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_request_interrupted;
1207
0
        break;
1208
0
    case OpcUa_BadDataUnavailable:
1209
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_data_unavailable;
1210
0
        break;
1211
0
    case OpcUa_BadNotWritable:
1212
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_writable;
1213
0
        break;
1214
0
    case OpcUa_BadNotReadable:
1215
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_readable;
1216
0
        break;
1217
0
    case OpcUa_BadTypeMismatch:
1218
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_type_mismatch;
1219
0
        break;
1220
0
    case TMP_OpcUa_BadLocaleNotSupported:
1221
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_locale_not_supported;
1222
0
        break;
1223
0
    case OpcUa_BadReferenceTypeIdInvalid:
1224
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_reference_type_id_invalid;
1225
0
        break;
1226
0
    case OpcUa_BadContinuationPointInvalid:
1227
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_continuation_point_invalid;
1228
0
        break;
1229
0
    case OpcUa_BadNoContinuationPoints:
1230
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_no_continuation_points;
1231
0
        break;
1232
0
    case OpcUa_BadQueryTooComplex:
1233
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_query_too_complex;
1234
0
        break;
1235
0
    case OpcUa_BadNoMatch:
1236
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_no_match;
1237
0
        break;
1238
0
    case OpcUa_BadDataEncodingInvalid:
1239
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_data_encoding_invalid;
1240
0
        break;
1241
0
    case OpcUa_BadDataEncodingUnsupported:
1242
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_data_encoding_unsupported;
1243
0
        break;
1244
0
    case OpcUa_BadServerUriInvalid:
1245
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_server_uri_invalid;
1246
0
        break;
1247
0
    case OpcUa_BadServerNameMissing:
1248
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_server_name_missing;
1249
0
        break;
1250
0
    case OpcUa_BadDiscoveryUrlMissing:
1251
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_discovery_url_missing;
1252
0
        break;
1253
0
    case OpcUa_BadSemaphoreFileMissing:
1254
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_semaphore_file_missing;
1255
0
        break;
1256
0
    case OpcUa_BadNotSupported:
1257
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_supported;
1258
0
        break;
1259
0
    case OpcUa_UncertainReferenceOutOfServer:
1260
0
        *bstatus = constants_statuscodes_bs__e_sc_uncertain_reference_out_of_server;
1261
0
        break;
1262
0
    case OpcUa_BadArgumentsMissing:
1263
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_arguments_missing;
1264
0
        break;
1265
0
    case OpcUa_BadTooManyArguments:
1266
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_too_many_arguments;
1267
0
        break;
1268
0
    case OpcUa_BadMethodInvalid:
1269
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_method_invalid;
1270
0
        break;
1271
0
    case OpcUa_BadNotImplemented:
1272
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_implemented;
1273
0
        break;
1274
0
    case OpcUa_BadNonceInvalid:
1275
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_nonce_invalid;
1276
0
        break;
1277
0
    case OpcUa_BadEncodingLimitsExceeded:
1278
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_encoding_limits_exceeded;
1279
0
        break;
1280
0
    case OpcUa_BadNotFound:
1281
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_found;
1282
0
        break;
1283
0
    case OpcUa_BadSecurityModeInsufficient:
1284
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_security_mode_insufficient;
1285
0
        break;
1286
0
    case OpcUa_BadNotExecutable:
1287
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_not_executable;
1288
0
        break;
1289
0
    case OpcUa_BadNoCommunication:
1290
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_no_communication;
1291
0
        break;
1292
0
    case OpcUa_BadOutOfRange:
1293
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_out_of_range;
1294
0
        break;
1295
0
    case OpcUa_BadResourceUnavailable:
1296
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_resource_unavailable;
1297
0
        break;
1298
0
    case OpcUa_BadParentNodeIdInvalid:
1299
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_parent_node_id_invalid;
1300
0
        break;
1301
0
    case OpcUa_BadReferenceNotAllowed:
1302
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_reference_not_allowed;
1303
0
        break;
1304
0
    case OpcUa_BadNodeIdRejected:
1305
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_id_rejected;
1306
0
        break;
1307
0
    case OpcUa_BadNodeIdExists:
1308
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_id_exists;
1309
0
        break;
1310
0
    case OpcUa_BadNodeClassInvalid:
1311
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_class_invalid;
1312
0
        break;
1313
0
    case OpcUa_BadBrowseNameDuplicated:
1314
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_browse_name_duplicated;
1315
0
        break;
1316
0
    case OpcUa_BadNodeAttributesInvalid:
1317
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_node_attributes_invalid;
1318
0
        break;
1319
0
    case OpcUa_BadTypeDefinitionInvalid:
1320
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_type_definition_invalid;
1321
0
        break;
1322
0
    case OpcUa_BadUserSignatureInvalid:
1323
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_user_signature_invalid;
1324
0
        break;
1325
0
    case OpcUa_UncertainReferenceNotDeleted:
1326
0
        *bstatus = constants_statuscodes_bs__e_sc_uncertain_reference_not_deleted;
1327
0
        break;
1328
0
    case OpcUa_BadServerTooBusy:
1329
0
        *bstatus = constants_statuscodes_bs__e_sc_bad_server_too_busy;
1330
0
        break;
1331
0
    default:
1332
0
        if ((status & SOPC_GoodStatusOppositeMask) == 0)
1333
0
        {
1334
0
            *bstatus = constants_statuscodes_bs__e_sc_ok;
1335
0
        }
1336
0
        else if ((status & SOPC_BadStatusMask) != 0)
1337
0
        {
1338
0
            *bstatus = constants_statuscodes_bs__e_sc_bad_generic;
1339
0
        }
1340
0
        else if ((status & SOPC_UncertainStatusMask) != 0)
1341
0
        {
1342
0
            *bstatus = constants_statuscodes_bs__e_sc_uncertain_generic;
1343
0
        }
1344
0
        else
1345
0
        {
1346
            // Not identified status code => Use severity Bad
1347
0
            *bstatus = constants_statuscodes_bs__e_sc_bad_generic;
1348
0
        }
1349
0
    }
1350
0
}
1351
1352
bool util_channel__SecurityPolicy_C_to_B(const char* uri, constants__t_SecurityPolicy* secpol)
1353
0
{
1354
0
    if (NULL == uri || NULL == secpol)
1355
0
        return false;
1356
1357
0
    if (strncmp(uri, SOPC_SecurityPolicy_None_URI, strlen(uri)) == 0)
1358
0
    {
1359
0
        *secpol = constants__e_secpol_None;
1360
0
        return true;
1361
0
    }
1362
0
    if (strncmp(uri, SOPC_SecurityPolicy_Basic256_URI, strlen(uri)) == 0)
1363
0
    {
1364
0
        *secpol = constants__e_secpol_B256;
1365
0
        return true;
1366
0
    }
1367
0
    if (strncmp(uri, SOPC_SecurityPolicy_Basic256Sha256_URI, strlen(uri)) == 0)
1368
0
    {
1369
0
        *secpol = constants__e_secpol_B256S256;
1370
0
        return true;
1371
0
    }
1372
0
    if (strncmp(uri, SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI, strlen(uri)) == 0)
1373
0
    {
1374
0
        *secpol = constants__e_secpol_Aes128Sha256RsaOaep;
1375
0
        return true;
1376
0
    }
1377
0
    if (strncmp(uri, SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI, strlen(uri)) == 0)
1378
0
    {
1379
0
        *secpol = constants__e_secpol_Aes256Sha256RsaPss;
1380
0
        return true;
1381
0
    }
1382
1383
0
    return false;
1384
0
}
1385
1386
const char* util_channel__SecurityPolicy_B_to_C(constants__t_SecurityPolicy secpol)
1387
0
{
1388
0
    switch (secpol)
1389
0
    {
1390
0
    case constants__e_secpol_None:
1391
0
        return SOPC_SecurityPolicy_None_URI;
1392
0
    case constants__e_secpol_B256:
1393
0
        return SOPC_SecurityPolicy_Basic256_URI;
1394
0
    case constants__e_secpol_B256S256:
1395
0
        return SOPC_SecurityPolicy_Basic256Sha256_URI;
1396
0
    case constants__e_secpol_Aes128Sha256RsaOaep:
1397
0
        return SOPC_SecurityPolicy_Aes128Sha256RsaOaep_URI;
1398
0
    case constants__e_secpol_Aes256Sha256RsaPss:
1399
0
        return SOPC_SecurityPolicy_Aes256Sha256RsaPss_URI;
1400
0
    default:
1401
0
        SOPC_ASSERT(false && "Invalid security policy");
1402
0
        return NULL;
1403
0
    }
1404
0
}
1405
1406
constants__t_BrowseDirection_i util_BrowseDirection__C_to_B(OpcUa_BrowseDirection cdir)
1407
0
{
1408
0
    switch (cdir)
1409
0
    {
1410
0
    case OpcUa_BrowseDirection_Forward:
1411
0
        return constants__e_bd_forward;
1412
0
    case OpcUa_BrowseDirection_Inverse:
1413
0
        return constants__e_bd_inverse;
1414
0
    case OpcUa_BrowseDirection_Both:
1415
0
        return constants__e_bd_both;
1416
0
    default:
1417
0
        return constants__e_bd_indet;
1418
0
    }
1419
0
}
1420
1421
OpcUa_BrowseDirection util_BrowseDirection__B_to_C(constants__t_BrowseDirection_i bdir)
1422
0
{
1423
0
    switch (bdir)
1424
0
    {
1425
0
    case constants__e_bd_forward:
1426
0
        return OpcUa_BrowseDirection_Forward;
1427
0
    case constants__e_bd_inverse:
1428
0
        return OpcUa_BrowseDirection_Inverse;
1429
0
    case constants__e_bd_both:
1430
0
        return OpcUa_BrowseDirection_Both;
1431
0
    default:
1432
0
        SOPC_ASSERT(OpcUa_BrowseDirection_Both + 1 != OpcUa_BrowseDirection_Forward);
1433
0
        SOPC_ASSERT(OpcUa_BrowseDirection_Both + 1 != OpcUa_BrowseDirection_Inverse);
1434
0
        return OpcUa_BrowseDirection_Both + 1;
1435
0
    }
1436
0
}
1437
1438
bool util_NodeClass__B_to_C(constants__t_NodeClass_i bncl, OpcUa_NodeClass* cncl)
1439
0
{
1440
0
    if (NULL == cncl)
1441
0
        return false;
1442
1443
0
    switch (bncl)
1444
0
    {
1445
0
    case constants__e_ncl_Object:
1446
0
        *cncl = OpcUa_NodeClass_Object;
1447
0
        break;
1448
0
    case constants__e_ncl_Variable:
1449
0
        *cncl = OpcUa_NodeClass_Variable;
1450
0
        break;
1451
0
    case constants__e_ncl_Method:
1452
0
        *cncl = OpcUa_NodeClass_Method;
1453
0
        break;
1454
0
    case constants__e_ncl_ObjectType:
1455
0
        *cncl = OpcUa_NodeClass_ObjectType;
1456
0
        break;
1457
0
    case constants__e_ncl_VariableType:
1458
0
        *cncl = OpcUa_NodeClass_VariableType;
1459
0
        break;
1460
0
    case constants__e_ncl_ReferenceType:
1461
0
        *cncl = OpcUa_NodeClass_ReferenceType;
1462
0
        break;
1463
0
    case constants__e_ncl_DataType:
1464
0
        *cncl = OpcUa_NodeClass_DataType;
1465
0
        break;
1466
0
    case constants__e_ncl_View:
1467
0
        *cncl = OpcUa_NodeClass_View;
1468
0
        break;
1469
0
    case constants__c_NodeClass_indet:
1470
0
    default:
1471
0
        return false;
1472
0
    }
1473
1474
0
    return true;
1475
0
}
1476
1477
bool util_NodeClass__C_to_B(OpcUa_NodeClass cncl, constants__t_NodeClass_i* bncl)
1478
0
{
1479
0
    if (NULL == bncl)
1480
0
        return false;
1481
1482
0
    switch (cncl)
1483
0
    {
1484
0
    case OpcUa_NodeClass_Object:
1485
0
        *bncl = constants__e_ncl_Object;
1486
0
        break;
1487
0
    case OpcUa_NodeClass_Variable:
1488
0
        *bncl = constants__e_ncl_Variable;
1489
0
        break;
1490
0
    case OpcUa_NodeClass_Method:
1491
0
        *bncl = constants__e_ncl_Method;
1492
0
        break;
1493
0
    case OpcUa_NodeClass_ObjectType:
1494
0
        *bncl = constants__e_ncl_ObjectType;
1495
0
        break;
1496
0
    case OpcUa_NodeClass_VariableType:
1497
0
        *bncl = constants__e_ncl_VariableType;
1498
0
        break;
1499
0
    case OpcUa_NodeClass_ReferenceType:
1500
0
        *bncl = constants__e_ncl_ReferenceType;
1501
0
        break;
1502
0
    case OpcUa_NodeClass_DataType:
1503
0
        *bncl = constants__e_ncl_DataType;
1504
0
        break;
1505
0
    case OpcUa_NodeClass_View:
1506
0
        *bncl = constants__e_ncl_View;
1507
0
        break;
1508
0
    default:
1509
0
        return false;
1510
0
    }
1511
1512
0
    return true;
1513
0
}
1514
1515
bool util_TimestampsToReturn__B_to_C(constants__t_TimestampsToReturn_i bttr, OpcUa_TimestampsToReturn* pcttr)
1516
0
{
1517
0
    if (pcttr == NULL || bttr == constants__c_TimestampsToReturn_indet)
1518
0
    {
1519
0
        return false;
1520
0
    }
1521
1522
0
    switch (bttr)
1523
0
    {
1524
0
    case constants__e_ttr_source:
1525
0
        *pcttr = OpcUa_TimestampsToReturn_Source;
1526
0
        break;
1527
0
    case constants__e_ttr_server:
1528
0
        *pcttr = OpcUa_TimestampsToReturn_Server;
1529
0
        break;
1530
0
    case constants__e_ttr_both:
1531
0
        *pcttr = OpcUa_TimestampsToReturn_Both;
1532
0
        break;
1533
0
    case constants__e_ttr_neither:
1534
0
        *pcttr = OpcUa_TimestampsToReturn_Neither;
1535
0
        break;
1536
0
    default:
1537
0
        return false;
1538
0
    }
1539
1540
0
    return true;
1541
0
}
1542
1543
constants__t_TimestampsToReturn_i util_TimestampsToReturn__C_to_B(OpcUa_TimestampsToReturn cttr)
1544
0
{
1545
0
    constants__t_TimestampsToReturn_i result = constants__c_TimestampsToReturn_indet;
1546
1547
0
    switch (cttr)
1548
0
    {
1549
0
    case OpcUa_TimestampsToReturn_Source:
1550
0
        result = constants__e_ttr_source;
1551
0
        break;
1552
0
    case OpcUa_TimestampsToReturn_Server:
1553
0
        result = constants__e_ttr_server;
1554
0
        break;
1555
0
    case OpcUa_TimestampsToReturn_Both:
1556
0
        result = constants__e_ttr_both;
1557
0
        break;
1558
0
    case OpcUa_TimestampsToReturn_Neither:
1559
0
        result = constants__e_ttr_neither;
1560
0
        break;
1561
0
    default:
1562
0
        result = constants__c_TimestampsToReturn_indet;
1563
0
        break;
1564
0
    }
1565
1566
0
    return result;
1567
0
}
1568
1569
constants__t_AttributeId_i util_AttributeId__C_to_B(uint32_t caid)
1570
0
{
1571
0
    switch (caid)
1572
0
    {
1573
0
    case constants__e_aid_NodeId:
1574
0
    case constants__e_aid_NodeClass:
1575
0
    case constants__e_aid_BrowseName:
1576
0
    case constants__e_aid_DisplayName:
1577
0
    case constants__e_aid_Description:
1578
0
    case constants__e_aid_WriteMask:
1579
0
    case constants__e_aid_UserWriteMask:
1580
0
    case constants__e_aid_IsAbstract:
1581
0
    case constants__e_aid_Symmetric:
1582
0
    case constants__e_aid_InverseName:
1583
0
    case constants__e_aid_ContainsNoLoops:
1584
0
    case constants__e_aid_EventNotifier:
1585
0
    case constants__e_aid_Value:
1586
0
    case constants__e_aid_DataType:
1587
0
    case constants__e_aid_ValueRank:
1588
0
    case constants__e_aid_ArrayDimensions:
1589
0
    case constants__e_aid_AccessLevel:
1590
0
    case constants__e_aid_UserAccessLevel:
1591
0
    case constants__e_aid_MinimumSamplingInterval:
1592
0
    case constants__e_aid_Historizing:
1593
0
    case constants__e_aid_Executable:
1594
0
    case constants__e_aid_UserExecutable:
1595
0
    case constants__e_aid_DataTypeDefinition:
1596
0
    case constants__e_aid_RolePermissions:
1597
0
    case constants__e_aid_UserRolePermissions:
1598
0
    case constants__e_aid_AccessRestrictions:
1599
0
    case constants__e_aid_AccessLevelEx:
1600
0
        return (constants__t_AttributeId_i) caid;
1601
0
    default:
1602
0
        return constants__c_AttributeId_indet;
1603
0
        break;
1604
0
    }
1605
0
}
1606
1607
void util_operation_type__B_to_C(constants__t_operation_type_i boptype, SOPC_UserAuthorization_OperationType* pcoptype)
1608
0
{
1609
0
    SOPC_ASSERT(NULL != pcoptype);
1610
1611
0
    switch (boptype)
1612
0
    {
1613
0
    case constants__e_operation_type_read:
1614
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_READ;
1615
0
        break;
1616
0
    case constants__e_operation_type_write:
1617
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_WRITE;
1618
0
        break;
1619
0
    case constants__e_operation_type_executable:
1620
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_EXECUTABLE;
1621
0
        break;
1622
0
    case constants__e_operation_type_addnode:
1623
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_ADDNODE;
1624
0
        break;
1625
0
    case constants__e_operation_type_receive_events:
1626
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_RECEIVE_EVENTS;
1627
0
        break;
1628
0
    case constants__e_operation_type_deletenode:
1629
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_DELETENODE;
1630
0
        break;
1631
0
    case constants__e_operation_type_historyread:
1632
0
        *pcoptype = SOPC_USER_AUTHORIZATION_OPERATION_HISTORY_READ;
1633
0
        break;
1634
0
    default:
1635
0
        SOPC_ASSERT(false); /* Unexpected operation type */
1636
0
    }
1637
0
}
1638
1639
constants_statuscodes_bs__t_StatusCode_i util_read_value_indexed_helper(SOPC_Variant* dst,
1640
                                                                        const SOPC_Variant* src,
1641
                                                                        const SOPC_NumericRange* range)
1642
0
{
1643
0
    SOPC_ASSERT(NULL != dst);
1644
0
    SOPC_ASSERT(NULL != src);
1645
0
    SOPC_ASSERT(NULL != range);
1646
0
    bool has_range = false;
1647
0
    SOPC_ReturnStatus status = SOPC_Variant_HasRange(src, range, false, &has_range);
1648
1649
0
    if (status != SOPC_STATUS_OK)
1650
0
    {
1651
0
        return constants_statuscodes_bs__e_sc_bad_index_range_invalid;
1652
0
    }
1653
1654
0
    if (!has_range)
1655
0
    {
1656
0
        return constants_statuscodes_bs__e_sc_bad_index_range_no_data;
1657
0
    }
1658
1659
0
    status = SOPC_Variant_GetRange(dst, src, range);
1660
1661
0
    if (status != SOPC_STATUS_OK)
1662
0
    {
1663
0
        return util_return_status__C_to_status_code_B(status);
1664
0
    }
1665
1666
0
    return constants_statuscodes_bs__e_sc_ok;
1667
0
}
1668
1669
constants_statuscodes_bs__t_StatusCode_i util_read_value_string_indexed(SOPC_Variant* dst,
1670
                                                                        const SOPC_Variant* src,
1671
                                                                        const SOPC_String* range_str)
1672
0
{
1673
0
    SOPC_NumericRange* range = NULL;
1674
0
    SOPC_ReturnStatus status = SOPC_NumericRange_Parse(SOPC_String_GetRawCString(range_str), &range);
1675
1676
0
    if (status != SOPC_STATUS_OK)
1677
0
    {
1678
0
        return (status == SOPC_STATUS_NOK) ? constants_statuscodes_bs__e_sc_bad_index_range_invalid
1679
0
                                           : util_return_status__C_to_status_code_B(status);
1680
0
    }
1681
1682
0
    constants_statuscodes_bs__t_StatusCode_i ret = util_read_value_indexed_helper(dst, src, range);
1683
0
    SOPC_NumericRange_Delete(range);
1684
1685
0
    return ret;
1686
0
}
1687
1688
void util_NodeId_borrowReference_or_indet__C_to_B(constants__t_NodeId_i* bnodeId, SOPC_NodeId* nodeId)
1689
0
{
1690
0
    if (SOPC_NodeId_IsNull(nodeId))
1691
0
    {
1692
0
        *bnodeId = constants__c_NodeId_indet;
1693
0
    }
1694
0
    else
1695
0
    {
1696
0
        *bnodeId = nodeId;
1697
0
    }
1698
0
}
1699
1700
t_bool util_SOPC_Boolean_to_B(const SOPC_Boolean b)
1701
0
{
1702
0
    if (b)
1703
0
    {
1704
0
        return true;
1705
0
    }
1706
0
    return false;
1707
0
}
1708
1709
bool util_SecuModeEnumIncludedInSecuModeMasks(OpcUa_MessageSecurityMode msgSecurityMode, uint16_t securityModes)
1710
0
{
1711
0
    switch (msgSecurityMode)
1712
0
    {
1713
0
    case OpcUa_MessageSecurityMode_Invalid:
1714
0
        return false;
1715
0
    case OpcUa_MessageSecurityMode_None:
1716
0
        return (securityModes & SOPC_SECURITY_MODE_NONE_MASK) != 0;
1717
0
    case OpcUa_MessageSecurityMode_Sign:
1718
0
        return (securityModes & SOPC_SECURITY_MODE_SIGN_MASK) != 0;
1719
0
    case OpcUa_MessageSecurityMode_SignAndEncrypt:
1720
0
        return (securityModes & SOPC_SECURITY_MODE_SIGNANDENCRYPT_MASK) != 0;
1721
0
    default:
1722
        return false;
1723
0
    }
1724
0
}