TLS support
[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 #ifdef WITH_TCP
71     uint16_t        tcpPort;         /**< tcp port **/
72 #endif
73     char             secVer[MAX_VERSION_LEN];         /**< security version **/
74     DeviceStatus    devStatus;       /**< status of device **/
75     struct OCProvisionDev  *next;    /**< Next pointer. **/
76 }OCProvisionDev_t;
77
78 /**
79  * Device Information of discoverd direct pairing device(s).
80  */
81 typedef struct OCDirectPairingDev
82 {
83     OCDevAddr               endpoint;
84     OCConnectivityType   connType;
85     uint16_t                     securePort;
86     bool              edp;
87     OicSecPrm_t  *prm;
88     size_t            prmLen;
89     OicUuid_t       deviceID;
90     OicUuid_t       rowner;
91     struct OCDirectPairingDev *next;
92 } OCDirectPairingDev_t;
93
94 /**
95  * Result information for each target device.
96  */
97 typedef struct OCPMResult{
98     OicUuid_t      deviceId;
99     OCStackResult  res;
100 }OCProvisionResult_t;
101
102 /**
103  * Callback function definition of provisioning API
104  *
105  * @param[OUT] ctx - If user set his/her context, it will be returned here.
106  * @param[OUT] nOfRes - total number of results, it depends on using which provisioning API.
107  * @param[OUT] arr - Array of OCPMResult_t, each OCPMResult_t contains result for target Device.
108  * @param[OUT} hasError - If there is no error, it's returned with 'false' but if there is a single
109  *                        or more error is/are occured during operation, it will be 'true'.
110  */
111 typedef void (*OCProvisionResultCB)(void* ctx, int nOfRes, OCProvisionResult_t *arr, bool hasError);
112
113
114 /**
115  * Callback function definition of direct-pairing
116  *
117  * @param[OUT] ctx - User context which will be returned wth callback
118  * @param[OUT] peer - pairing device info.
119  * @param[OUT} result - It's returned with 'OC_STACK_XXX'. It will return 'OC_STACK_OK'
120  *                                   if D2D pairing is success without error
121  */
122 typedef void (*OCDirectPairingResultCB)(void *ctx, OCDirectPairingDev_t *peer, OCStackResult result);
123
124
125 #ifdef __cplusplus
126 }
127 #endif
128
129 #endif //OC_PROVISIONING_TYPES_H