Line data Source code
1 : /********************************************************************************
2 : * Copyright (c) 2026 Accenture
3 : *
4 : * This program and the accompanying materials are made available under the
5 : * terms of the Apache License Version 2.0 which is available at
6 : * https://www.apache.org/licenses/LICENSE-2.0
7 : *
8 : * SPDX-License-Identifier: Apache-2.0
9 : ********************************************************************************/
10 :
11 : #pragma once
12 :
13 : #include <cstdint>
14 :
15 : namespace someip
16 : {
17 : struct ServiceQuery;
18 : class ProvidedService;
19 : class IEventListener;
20 : } // namespace someip
21 :
22 : namespace someip
23 : {
24 : /*
25 : * Interface for the SOME/IP stack.
26 : *
27 : * Contains methods to initialize the SD and RPC ports,
28 : * to register consumed or provided services and eventgroups
29 : * and to register event-listener at the stack.
30 : */
31 : class ISomeIpStack
32 : {
33 : public:
34 7 : virtual ~ISomeIpStack() = default;
35 :
36 : /* CONFIG */
37 :
38 : virtual bool initSdPort(uint16_t port) = 0;
39 : virtual bool initUdpPort(uint16_t port) = 0;
40 : virtual bool initTcpPort(uint16_t port) = 0;
41 :
42 : /* CLIENT */
43 :
44 : /**
45 : * Register a service query with:
46 : *
47 : * - serviceId,
48 : * - majorVersion, minorVersion
49 : * - instanceId (or INSTANCE_ID_ANY)
50 : * - service-listener
51 : *
52 : * Register an eventgroup query with:
53 : *
54 : * - serviceId,
55 : * - majorVersion, minorVersion
56 : * - instanceId,
57 : * - eventgroupId
58 : * - TTL
59 : * - localPort
60 : * - protocol
61 : *
62 : * \return true on success.
63 : */
64 : virtual bool registerServiceQuery(ServiceQuery& query) = 0;
65 :
66 : /**
67 : * Unregister a service or eventgroup query.
68 : */
69 : virtual void unregisterServiceQuery(ServiceQuery& query) = 0;
70 :
71 : /**
72 : * Register an event-listener.
73 : */
74 : virtual void addEventListener(IEventListener& listener) = 0;
75 :
76 : /**
77 : * Unregister an event-listener.
78 : */
79 : virtual void removeEventListener(IEventListener& listener) = 0;
80 :
81 : /* SERVER */
82 :
83 : /**
84 : * Register a provided service with:
85 : *
86 : * - serviceId,
87 : * - majorVersion, minorVersion
88 : * - instanceId
89 : * - TTL
90 : * - localPort
91 : * - protocol
92 : * - service-handler
93 : *
94 : * Register a provided eventgroup with:
95 : *
96 : * - serviceId,
97 : * - majorVersion, minorVersion
98 : * - instanceId,
99 : * - eventgroupId
100 : * - TTL
101 : * - [multicastIp] if multicast
102 : * - localPort
103 : * - service-handler
104 : *
105 : * \return true on success.
106 : */
107 : virtual bool registerProvidedService(ProvidedService& service) = 0;
108 :
109 : /**
110 : * Unregister a provided service or eventgroup.
111 : */
112 : virtual void unregisterProvidedService(ProvidedService& service) = 0;
113 : };
114 :
115 : } // namespace someip
|