1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
11 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #ifndef ENROLLEE_RESOURCE_H_
22 #define ENROLLEE_RESOURCE_H_
27 #include "ESRichCommon.h"
38 class EnrolleeSecurity;
41 * This class contains the resource discovery methods.
43 * @see EnrolleeResource
45 class EnrolleeResource
47 friend class EnrolleeSecurity;
52 * EnrolleeResource constructor
54 * @param enrolleeNWProvInfo Provisioning information for the Enrollee
56 * @throw ESBadRequestException is thrown if the parameters are invalid
58 EnrolleeResource(const WiFiOnboadingConnection &onboardingconn);
59 // EnrolleeResource(const ProvConfig &enrolleeNWProvInfo,
60 // const WiFiOnboadingConnection &onboardingconn);
62 ~EnrolleeResource() = default;
65 * Register provisioning status handler.
67 * @param callback Callback to get Provisioning status.
69 * @throws InvalidParameterException If callback is an empty function or null.
70 * @throws ESBadRequestException If registration is already completed.
72 * @see ProvisioningStatus
74 void registerInitRemoteEnrolleeStatusCallback (InitRemoteEnrolleeStatusCb callback);
75 void registerCapabilityStatusCallback (RequestCapabilityStatusCb callback);
76 void registerProvStatusCallback (DataProvStatusCb callback);
79 * Construct Remote OIC resource using the enrollee host and connectivity information
80 * provided in the constructor of EnrolleeResource.
82 * @throws InvalidParameterException If the provided information is invalid.
83 * @throws ESBadRequestException If resource is already constructed.
85 * @see ProvisioningStatus
87 ESResult constructResourceObject();
89 void getCapabilityData();
92 * Function for provisioning of Remote Enrollee resource using the information provided.
94 * @throws InvalidParameterException If cb is empty.
96 void provisionEnrollee();
99 * Function for unprovisioning of Remote Enrollee and bring to unprovisioned state
101 * @throws ESBadRequestException If device is not provisioned already.
103 void unprovisionEnrollee();
108 std::shared_ptr< OC::OCResource > m_ocResource;
110 InitRemoteEnrolleeStatusCb m_initRemoteEnrolleeStatusCb;
111 RequestCapabilityStatusCb m_requestCapabilityStatusCb;
112 DataProvStatusCb m_dataProvStatusCb;
113 ProvConfig m_ProvConfig;
114 WiFiOnboadingConnection m_wifiOnboardingconn;
115 bool m_discoveryResponse;
117 void getCapabilityResponse(const HeaderOptions& headerOptions, const OCRepresentation& rep,
120 void getProvStatusResponse(const HeaderOptions& headerOptions, const OCRepresentation& rep,
123 void checkProvInformationCb(const HeaderOptions& headerOptions, const OCRepresentation& rep,
126 ESResult ESDiscoveryTimeout(unsigned short waittime);
128 void onDeviceDiscovered(std::shared_ptr<OC::OCResource> resource);
130 void triggerNetworkConnection();
132 void triggerNetworkConnectionCb(
133 const HeaderOptions& headerOptions, const OCRepresentation& rep,