Merge branch 'master' into simulator
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / include / pmtypes.h
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 #ifndef OC_PROVISIONING_TYPES_H
22 #define OC_PROVISIONING_TYPES_H
23
24 #include <stdbool.h>
25 #include "securevirtualresourcetypes.h"
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 /**
32  * Node to construct list of UUID pair list.
33  */
34 typedef struct OCPairList OCPairList_t;
35 struct OCPairList
36 {
37     OicUuid_t dev;
38     OicUuid_t dev2;
39     OCPairList_t *next;
40 };
41
42 /**
43  * Node to construct UUID linked list.
44  */
45 typedef struct OCUuidList  OCUuidList_t;
46 struct OCUuidList
47 {
48     OicUuid_t dev;
49     OCUuidList_t *next;
50 };
51
52 /*
53  * Device's power on/off state.
54  */
55 typedef enum {
56     DEV_STATUS_ON = (1 << 0),
57     DEV_STATUS_OFF = (1 << 1)
58 }DeviceStatus;
59
60 /**
61  * Device Information of discoverd unowned/owned device(s) for provisioning.
62  */
63 typedef struct OCProvisionDev
64 {
65     OCDevAddr       endpoint;        /**< target address **/
66     OicSecPstat_t   *pstat;          /**< Pointer to target's pstat resource. **/
67     OicSecDoxm_t    *doxm;           /**< Pointer to target's doxm resource. **/
68     OCConnectivityType connType;     /**< Connectivity type of endpoint */
69     uint16_t        securePort;      /**< secure port **/
70     DeviceStatus    devStatus;       /**< status of device **/
71     struct OCProvisionDev  *next;    /**< Next pointer. **/
72 }OCProvisionDev_t;
73
74 /**
75  * Result information for each target device.
76  */
77 typedef struct OCPMResult{
78     OicUuid_t      deviceId;
79     OCStackResult  res;
80 }OCProvisionResult_t;
81
82 /**
83  * Callback function definition of provisioning API
84  *
85  * @param[OUT] ctx - If user set his/her context, it will be returned here.
86  * @param[OUT] nOfRes - total number of results, it depends on using which provisioning API.
87  * @param[OUT] arr - Array of OCPMResult_t, each OCPMResult_t contains result for target Device.
88  * @param[OUT} hasError - If there is no error, it's returned with 'false' but if there is a single
89  *                        or more error is/are occured during operation, it will be 'true'.
90  */
91 typedef void (*OCProvisionResultCB)(void* ctx, int nOfRes, OCProvisionResult_t *arr, bool hasError);
92
93 #ifdef __cplusplus
94 }
95 #endif
96
97 #endif //OC_PROVISIONING_TYPES_H