examples: Add notice about using experimental API
[iotivity.git] / service / easy-setup / sampleapp / enrollee / linux / easysetup_x.c
1 //******************************************************************
2 //
3 // Copyright 2015 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
22 #include "easysetup_x.h"
23 #include "string.h"
24 #include "oic_malloc.h"
25 #include "ocpayload.h"
26
27 #include <inttypes.h>
28
29 /// This example is using experimental API, so there is no guarantee of support for future release,
30 /// nor any there any guarantee that breaking changes will not occur across releases.
31 #include "experimental/logger.h"
32 /**
33  * @var ESX_ENROLLEE_TAG
34  * @brief Logging tag for module name.
35  */
36 #define ESX_ENROLLEE_TAG "ESX"
37
38 UserProperties g_userProperties;
39
40 void SetUserProperties(const UserProperties *prop)
41 {
42     if(prop != NULL)
43     {
44         strncpy(g_userProperties.userValue_str, prop->userValue_str, MAXLEN_STRING);
45         g_userProperties.userValue_int = prop->userValue_int;
46     }
47 }
48
49 void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata)
50 {
51     OIC_LOG(DEBUG, ESX_ENROLLEE_TAG, "ReadUserdataCb IN");
52
53     if(payload != NULL)
54     {
55         if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_WIFICONF))
56         {
57             int64_t value = -1;
58             if (OCRepPayloadGetPropInt(payload, USERPROPERTY_KEY_INT, &value))
59             {
60                 if(*userdata != NULL)
61                 {
62                     *userdata = (void*)OICMalloc(sizeof(UserProperties));
63                     ((UserProperties*)(*userdata))->userValue_int = value;
64                 }
65                 OIC_LOG_V(INFO, ESX_ENROLLEE_TAG, "[User specific property] %s : %" PRId64,
66                                                                             USERPROPERTY_KEY_INT, value);
67                 g_userProperties.userValue_int = value;
68             }
69         }
70     }
71
72     OIC_LOG(DEBUG, ESX_ENROLLEE_TAG, "ReadUserdataCb OUT");
73 }
74
75 void WriteUserdataCb(OCRepPayload* payload, char* resourceType)
76 {
77     OIC_LOG(DEBUG, ESX_ENROLLEE_TAG, "WriteUserdataCb IN");
78
79     if(payload != NULL)
80     {
81         if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_WIFICONF))
82         {
83             OCRepPayloadSetPropInt(payload, USERPROPERTY_KEY_INT, g_userProperties.userValue_int);
84         }
85
86         if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_DEVCONF))
87         {
88             OCRepPayloadSetPropString(payload, USERPROPERTY_KEY_STR, g_userProperties.userValue_str);
89         }
90     }
91
92     OIC_LOG(DEBUG, ESX_ENROLLEE_TAG, "WriteUserdataCb OUT");
93 }