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 __ES_PROVISIONING_HANDLER_H_
22 #define __ES_PROVISIONING_HANDLER_H_
30 //-----------------------------------------------------------------------------
32 //-----------------------------------------------------------------------------
33 #define EASY_SETUP_DEFAULT_CONTEXT_VALUE 0x99
36 * List of methods that can be inititated from the client
38 OCStackResult InitProvisioningHandler();
40 OCStackResult TerminateProvisioningHandler();
42 OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char *query,
43 const OCDevAddr *destination);
45 OCStackResult StartProvisioningProcess(const ProvConfig *netInfo,
46 WiFiOnboadingConnection *onboardConn, OCProvisioningStatusCB provisioningStatusCallback,
49 void StopProvisioningProcess();
52 * Internal worker functions.
54 OCStackResult TriggerNetworkConnection(OCQualityOfService qos, const char *query,
55 const char *resUri, OCDevAddr *destination, int /*pauseBeforeStart*/);
57 OCStackApplicationResult TriggerNetworkConnectionResponse(void *ctx, OCDoHandle handle,
58 OCClientResponse *clientResponse);
60 OCStackApplicationResult ProvisionEnrolleeResponse(void *ctx, OCDoHandle handle,
61 OCClientResponse *clientResponse);
63 OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char *query, const char *resUri,
64 OCDevAddr *destination, int pauseBeforeStart);
66 OCStackApplicationResult GetProvisioningStatusResponse(void *ctx, OCDoHandle handle,
67 OCClientResponse *clientResponse);
69 OCStackResult InvokeOCDoResource(const char *query, OCMethod method, const OCDevAddr *dest,
70 OCQualityOfService qos, OCClientResponseHandler cb, OCRepPayload *payload,
71 OCHeaderOption *options, uint8_t numOptions);
73 OCStackApplicationResult FindProvisioningResourceResponse(void *ctx, OCDoHandle handle,
74 OCClientResponse *clientResponse);
76 void *FindProvisioningResource(void *data);
78 ProvisioningInfo *PrepareProvisioingStatusCB(OCClientResponse *clientResponse,
79 ProvStatus provStatus);
82 * Internal Util functions.
84 void LogProvisioningResponse(OCRepPayloadValue * val);
86 bool ConfigEnrolleeObject(const ProvConfig *netInfo, WiFiOnboadingConnection *onboardConn);
90 void SuccessCallback(OCClientResponse * clientResponse);
92 void ErrorCallback(ProvStatus status);
94 bool ValidateEnrolleeResponse(OCClientResponse * clientResponse);
96 bool ValidateFindResourceResponse(OCClientResponse * clientResponse);
98 bool ValidateEnrolleeBasicResponse(OCClientResponse * clientResponse);
100 ProvisioningInfo *GetCallbackObjectOnSuccess(OCClientResponse *clientResponse,
101 ProvStatus provStatus);
103 ProvisioningInfo *GetCallbackObjectOnError(ProvStatus status);
105 ProvisioningInfo *CreateCallBackObject();
107 bool ResetProgress();
109 bool SetProgress(OCProvisioningStatusCB provisioningStatusCallback);
113 bool ValidateEasySetupParams(const ProvConfig *netInfo, WiFiOnboadingConnection *onboardConn,
114 OCProvisioningStatusCB provisioningStatusCallback);
116 bool IsSetupStopped();
118 #endif //__ES_PROVISIONING_HANDLER_H_