Implementation of JNI for publishing resource to RD
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcPlatform.h
1 /*
2 * //******************************************************************
3 * //
4 * // Copyright 2015 Intel Corporation.
5 * //
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 * //
8 * // Licensed under the Apache License, Version 2.0 (the "License");
9 * // you may not use this file except in compliance with the License.
10 * // You may obtain a copy of the License at
11 * //
12 * //      http://www.apache.org/licenses/LICENSE-2.0
13 * //
14 * // Unless required by applicable law or agreed to in writing, software
15 * // distributed under the License is distributed on an "AS IS" BASIS,
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * // See the License for the specific language governing permissions and
18 * // limitations under the License.
19 * //
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 */
22 #include "JniOcStack.h"
23 #include "JniOnResourceFoundListener.h"
24 #include "JniOnDeviceInfoListener.h"
25 #include "JniOnPlatformInfoListener.h"
26 #include "JniOnDPDevicesFoundListener.h"
27 #include "JniOnDirectPairingListener.h"
28 #include "JniOnPresenceListener.h"
29 #include "JniOnPublishResourceListener.h"
30 #include <mutex>
31
32 #ifndef _Included_org_iotivity_base_OcPlatform
33 #define _Included_org_iotivity_base_OcPlatform
34
35 using namespace OC;
36
37 JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener);
38 void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener);
39
40 JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener);
41 void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener);
42
43 JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener);
44 void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener);
45
46 JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener);
47 void RemoveOnPresenceListener(JNIEnv* env, jobject jListener);
48
49 JniOnDPDevicesFoundListener* AddOnDPDevicesFoundListener(JNIEnv* env, jobject jListener);
50 void RemoveOnDPDevicesFoundListener(JNIEnv* env, jobject jListener);
51
52 JniOnDirectPairingListener* AddOnDirectPairingListener(JNIEnv* env, jobject jListener);
53 void RemoveOnDirectPairingListener(JNIEnv* env, jobject jListener);
54
55 JniOnPublishResourceListener* AddOnPublishResourceListener(JNIEnv* env, jobject jListener);
56 void RemoveOnPublishResourceListener(JNIEnv* env, jobject jListener);
57
58 std::map<jobject, std::pair<JniOnResourceFoundListener*, int>> onResourceFoundListenerMap;
59 std::map<jobject, std::pair<JniOnDeviceInfoListener*, int>> onDeviceInfoListenerMap;
60 std::map<jobject, std::pair<JniOnPlatformInfoListener*, int>> onPlatformInfoListenerMap;
61 std::map<jobject, std::pair<JniOnPresenceListener*, int>> onPresenceListenerMap;
62 std::map<jobject, std::pair<JniOnDPDevicesFoundListener*, int>> onDPDevicesFoundListenerMap;
63 std::map<jobject, std::pair<JniOnDirectPairingListener*, int>> directPairingListenerMap;
64 std::map<jobject, std::pair<JniOnPublishResourceListener*, int>> onPublishResourceListenerMap;
65
66 std::mutex resourceFoundMapLock;
67 std::mutex deviceInfoMapLock;
68 std::mutex platformInfoMapLock;
69 std::mutex presenceMapLock;
70 std::mutex dpDevicesFoundListenerMapLock;
71 std::mutex directPairingListenerMapLock;
72 std::mutex publishResourceListenerMapLock;
73
74 #ifdef __cplusplus
75 extern "C" {
76 #endif
77     /*
78     * Class:     org_iotivity_base_OcPlatform
79     * Method:    configure
80     * Signature: (IILjava/lang/String;II)V
81     */
82     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
83         (JNIEnv *, jclass, jint, jint, jstring, jint, jint, jstring);
84
85     /*
86     * Class:     org_iotivity_base_OcPlatform
87     * Method:    notifyAllObservers0
88     * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
89     */
90     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
91         (JNIEnv *, jclass, jobject);
92
93     /*
94     * Class:     org_iotivity_base_OcPlatform
95     * Method:    notifyAllObservers1
96     * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
97     */
98     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
99         (JNIEnv *, jclass, jobject, jint);
100
101     /*
102     * Class:     org_iotivity_base_OcPlatform
103     * Method:    notifyListOfObservers2
104     * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;)V
105     */
106     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2
107         (JNIEnv *, jclass, jobject, jbyteArray, jobject);
108
109     /*
110     * Class:     org_iotivity_base_OcPlatform
111     * Method:    notifyListOfObservers3
112     * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;I)V
113     */
114     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3
115         (JNIEnv *, jclass, jobject, jbyteArray, jobject, jint);
116
117     /*
118     * Class:     org_iotivity_base_OcPlatform
119     * Method:    findResource0
120     * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
121     */
122     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0
123         (JNIEnv *, jclass, jstring, jstring, jint, jobject);
124
125     /*
126     * Class:     org_iotivity_base_OcPlatform
127     * Method:    findResource1
128     * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
129     */
130     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1
131         (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
132
133     /*
134     * Class:     org_iotivity_base_OcPlatform
135     * Method:    getDeviceInfo0
136     * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
137     */
138     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0
139         (JNIEnv *, jclass, jstring, jstring, jint, jobject);
140
141     /*
142     * Class:     org_iotivity_base_OcPlatform
143     * Method:    getDeviceInfo1
144     * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
145     */
146     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1
147         (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
148
149     /*
150      * Class:     org_iotivity_base_OcPlatform
151      * Method:    getPlatformInfo0
152      * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
153      */
154      JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0
155         (JNIEnv *, jclass, jstring, jstring, jint, jobject);
156
157     /*
158      * Class:     org_iotivity_base_OcPlatform
159      * Method:    getPlatformInfo1
160      * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
161      */
162      JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1
163         (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
164
165     /*
166     * Class:     org_iotivity_base_OcPlatform
167     * Method:    registerResource0
168     * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
169     */
170     JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0
171         (JNIEnv *, jclass, jobject);
172
173     /*
174     * Class:     org_iotivity_base_OcPlatform
175     * Method:    registerResource1
176     * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
177     */
178     JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1
179         (JNIEnv *, jclass, jstring, jstring, jstring, jobject, jint);
180
181     /*
182     * Class:     org_iotivity_base_OcPlatform
183     * Method:    registerDeviceInfo0
184     * Signature: (Ljava/lang/String;[Ljava/lang/String;)V
185     */
186     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0
187         (JNIEnv *, jclass, jstring, jobjectArray);
188
189     /*
190     * Class:     org_iotivity_base_OcPlatform
191     * Method:    registerPlatformInfo0
192     * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
193     */
194     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0
195         (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring);
196
197     /*
198     * Class:     org_iotivity_base_OcPlatform
199     * Method:    unregisterResource0
200     * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
201     */
202     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0
203         (JNIEnv *, jclass, jobject);
204
205     /*
206     * Class:     org_iotivity_base_OcPlatform
207     * Method:    bindResource0
208     * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
209     */
210     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
211         (JNIEnv *, jclass, jobject, jobject);
212
213     /*
214     * Class:     org_iotivity_base_OcPlatform
215     * Method:    bindResources0
216     * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
217     */
218     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0
219         (JNIEnv *, jclass, jobject, jobjectArray);
220
221     /*
222     * Class:     org_iotivity_base_OcPlatform
223     * Method:    unbindResource0
224     * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
225     */
226     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0
227         (JNIEnv *, jclass, jobject, jobject);
228
229     /*
230     * Class:     org_iotivity_base_OcPlatform
231     * Method:    unbindResources0
232     * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
233     */
234     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0
235         (JNIEnv *, jclass, jobject, jobjectArray);
236
237     /*
238     * Class:     org_iotivity_base_OcPlatform
239     * Method:    bindTypeToResource0
240     * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
241     */
242     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0
243         (JNIEnv *, jclass, jobject, jstring);
244
245     /*
246     * Class:     org_iotivity_base_OcPlatform
247     * Method:    bindInterfaceToResource0
248     * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
249     */
250     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
251         (JNIEnv *, jclass, jobject, jstring);
252
253     /*
254     * Class:     org_iotivity_base_OcPlatform
255     * Method:    startPresence0
256     * Signature: (I)V
257     */
258     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0
259         (JNIEnv *, jclass, jint);
260
261     /*
262     * Class:     org_iotivity_base_OcPlatform
263     * Method:    stopPresence0
264     * Signature: ()V
265     */
266     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0
267         (JNIEnv *, jclass);
268
269     /*
270     * Class:     org_iotivity_base_OcPlatform
271     * Method:    subscribePresence0
272     * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
273     */
274     JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0
275         (JNIEnv *, jclass, jstring, jint, jobject);
276
277     /*
278     * Class:     org_iotivity_base_OcPlatform
279     * Method:    subscribePresence1
280     * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
281     */
282     JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1
283         (JNIEnv *, jclass, jstring, jstring, jint, jobject);
284
285     /*
286     * Class:     org_iotivity_base_OcPlatform
287     * Method:    unsubscribePresence0
288     * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
289     */
290     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0
291         (JNIEnv *, jclass, jobject);
292
293     /*
294     * Class:     org_iotivity_base_OcPlatform
295     * Method:    constructResourceObject0
296     * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)Lorg/iotivity/base/OcResource;
297     */
298     JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0
299         (JNIEnv *, jclass, jstring, jstring, jint, jboolean, jobjectArray, jobjectArray);
300
301     /*
302     * Class:     org_iotivity_base_OcPlatform0
303     * Method:    sendResponse0
304     * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
305     */
306     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0
307         (JNIEnv *, jclass, jobject);
308
309     /*
310      * Class:     org_iotivity_base_OcPlatform
311      * Method:    findDirectPairingDevices
312      * Signature: (ILorg/iotivity/base/OcPlatform/FindDirectPairingListener;)V
313      */
314     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevices
315         (JNIEnv *, jclass, jint, jobject);
316
317     /*
318      * Class:     org_iotivity_base_OcPlatform
319      * Method:    getDirectPairedDevices
320      * Signature: (Lorg/iotivity/base/OcDirectPairDevice/GetDirectPairedListener;)V
321      */
322     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
323         (JNIEnv *, jclass, jobject);
324
325     /*
326      * Class:     org_iotivity_base_OcPlatform
327      * Method:    doDirectPairing
328      * Signature: (Lorg/iotivity/base/OcDirectPairDevice;Lorg/iotivity/base/OcPrmType;
329      *           Ljava/lang/String;Lorg/iotivity/base/OcDirectPairDevice/DirectPairingListener;)V
330      */
331     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_doDirectPairing0
332         (JNIEnv *, jclass, jobject, jint, jstring, jobject);
333
334     /*
335      * Class:     org_iotivity_base_OcPlatform
336      * Method:    publishResourceToRD0
337      * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPublishResourceListener;I)V
338      */
339     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_publishResourceToRD0
340         (JNIEnv *, jclass, jstring, jint, jobject, jint);
341
342     /*
343      * Class:     org_iotivity_base_OcPlatform
344      * Method:    publishResourceToRD1
345      * Signature: (Ljava/lang/String;I[Lorg/iotivity/base/OcResourceHandle
346      *            ;Lorg/iotivity/base/OcPlatform/OnPublishResourceListener;I)V
347      */
348     JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_publishResourceToRD1
349         (JNIEnv *, jclass, jstring, jint, jobjectArray, jobject, jint);
350 #ifdef __cplusplus
351 }
352 #endif
353 #endif
354