Restructuring of the easy-setup service.
[platform/upstream/iotivity.git] / service / easy-setup / mediator / richsdk / android / jni / JniRemoteEnrollee.h
1 /******************************************************************
2  *
3  * Copyright 2016 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************/
20
21 /** @file   JniRemoteEnrollee.h
22  *
23  *   @brief  This file contains the JniRemoteEnrollee class
24  *               & declaration of RemoteEnrollee APIs for JNI implementation
25  */
26
27 #ifndef __JNI_ES_REMOTEENROLLEE_H
28 #define __JNI_ES_REMOTEENROLLEE_H
29
30 #include "RemoteEnrollee.h"
31 #include "escommon.h"
32 #include "Utility.h"
33 #include "ESException.h"
34
35 #include "JniJvm.h"
36 #include "JniEsUtils.h"
37 #include "JniProvisioningStatusListener.h"
38 #include "JniEsListenerManager.h"
39
40 using namespace OIC::Service;
41
42 /**
43  * @class   JniRemoteEnrollee
44  * @brief   This class contains all the APIs for RemoteEnrollee
45  *
46  * NOTE: JNI APIs internally call the APIs of this class.
47  */
48 class JniRemoteEnrollee
49 {
50     public:
51
52         /**
53         *@brief constructor
54         */
55         JniRemoteEnrollee(std::shared_ptr< RemoteEnrollee> remoteEnrollee);
56
57         /**
58          *@brief destructor
59         */
60         ~JniRemoteEnrollee();
61
62         // ***** JNI APIs internally call the APIs of this class ***** //
63
64         void startProvisioning(JNIEnv *env);
65         void stopProvisioning(JNIEnv *env);
66         void registerProvisioningHandler(JNIEnv *env, jobject jListener);
67
68         JniProvisioningStatusListener *addProvisioningStatusListener(JNIEnv *env, jobject jListener);
69         void removeProvisioningStatusListener(JNIEnv *env, jobject jListener);
70
71         static JniRemoteEnrollee *getJniRemoteEnrollee(JNIEnv *env, jobject thiz);
72
73     private:
74         JniEsListenerManager<JniProvisioningStatusListener> m_provisioingStatus;
75         std::shared_ptr<RemoteEnrollee> m_sharedResource;
76
77 };
78
79
80 #ifdef __cplusplus
81 extern "C" {
82 #endif
83
84 /**
85  * API for starting the provisioning process.
86  */
87 JNIEXPORT void JNICALL
88 Java_org_iotivity_service_easysetup_mediator_RemoteEnrollee_nativeStartProvision
89 (JNIEnv *env, jobject jClass);
90
91 /**
92  * API for stopping the provisioning process.
93  */
94 JNIEXPORT void JNICALL
95 Java_org_iotivity_service_easysetup_mediator_RemoteEnrollee_nativeStopProvision
96 (JNIEnv *env, jobject jClass);
97
98 /**
99  * API for setting the lisener for recieiving provisioning status.
100  *
101  * @param provisiongListener - Provisioning listener [callback from native layer will be passing to this listener]
102  */
103 JNIEXPORT void JNICALL
104 Java_org_iotivity_service_easysetup_mediator_RemoteEnrollee_nativeRegisterProvisioningHandler
105 (JNIEnv *env, jobject jClass, jobject provisiongListener);
106
107 #ifdef __cplusplus
108 }
109 #endif
110 #endif // __JNI_ES_REMOTEENROLLEE_H