cb950f969d2f33787c4d2cbf636ff7052985ab9c
[platform/upstream/iotivity.git] / resource / csdk / stack / include / ocpayload.h
1 //******************************************************************
2 //
3 // Copyright 2015 Intel Mobile Communications GmbH 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 OCPAYLOAD_H_
22 #define OCPAYLOAD_H_
23
24 #include <stdbool.h>
25 #include <inttypes.h>
26 #include "logger.h"
27 #include "octypes.h"
28
29 #ifdef __cplusplus
30 extern "C"
31 {
32 #endif
33
34 typedef struct OCResource OCResource;
35
36 void OCPayloadDestroy(OCPayload* payload);
37
38 // Representation Payload
39 OCRepPayload* OCRepPayloadCreate();
40
41 size_t calcDimTotal(const size_t dimensions[MAX_REP_ARRAY_DEPTH]);
42
43 OCRepPayload* OCRepPayloadClone(const OCRepPayload* payload);
44
45 void OCRepPayloadAppend(OCRepPayload* parent, OCRepPayload* child);
46
47 bool OCRepPayloadSetUri(OCRepPayload* payload, const char* uri);
48
49 bool OCRepPayloadAddResourceType(OCRepPayload* payload, const char* resourceType);
50 bool OCRepPayloadAddInterface(OCRepPayload* payload, const char* interface);
51
52 bool OCRepPayloadAddResourceTypeAsOwner(OCRepPayload* payload, char* resourceType);
53 bool OCRepPayloadAddInterfaceAsOwner(OCRepPayload* payload, char* interface);
54
55 bool OCRepPayloadIsNull(const OCRepPayload* payload, const char* name);
56 bool OCRepPayloadSetNull(OCRepPayload* payload, const char* name);
57
58 bool OCRepPayloadSetPropInt(OCRepPayload* payload, const char* name, int64_t value);
59 bool OCRepPayloadGetPropInt(const OCRepPayload* payload, const char* name, int64_t* value);
60
61 bool OCRepPayloadSetPropDouble(OCRepPayload* payload, const char* name, double value);
62 bool OCRepPayloadGetPropDouble(const OCRepPayload* payload, const char* name, double* value);
63
64 bool OCRepPayloadSetPropString(OCRepPayload* payload, const char* name, const char* value);
65 bool OCRepPayloadSetPropStringAsOwner(OCRepPayload* payload, const char* name, char* value);
66 bool OCRepPayloadGetPropString(const OCRepPayload* payload, const char* name, char** value);
67
68 bool OCRepPayloadSetPropBool(OCRepPayload* payload, const char* name, bool value);
69 bool OCRepPayloadGetPropBool(const OCRepPayload* payload, const char* name, bool* value);
70
71 bool OCRepPayloadSetPropObject(OCRepPayload* payload, const char* name, const OCRepPayload* value);
72 bool OCRepPayloadSetPropObjectAsOwner(OCRepPayload* payload, const char* name,
73         OCRepPayload* value);
74 bool OCRepPayloadGetPropObject(const OCRepPayload* payload, const char* name, OCRepPayload** value);
75
76 bool OCRepPayloadSetIntArrayAsOwner(OCRepPayload* payload, const char* name,
77         int64_t* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
78 bool OCRepPayloadSetIntArray(OCRepPayload* payload, const char* name,
79         const int64_t* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
80 bool OCRepPayloadGetIntArray(const OCRepPayload* payload, const char* name,
81         int64_t** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
82
83 bool OCRepPayloadSetDoubleArrayAsOwner(OCRepPayload* payload, const char* name,
84         double* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
85 bool OCRepPayloadSetDoubleArray(OCRepPayload* payload, const char* name,
86         const double* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
87 bool OCRepPayloadGetDoubleArray(const OCRepPayload* payload, const char* name,
88         double** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
89
90 bool OCRepPayloadSetStringArrayAsOwner(OCRepPayload* payload, const char* name,
91         char** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
92 bool OCRepPayloadSetStringArray(OCRepPayload* payload, const char* name,
93         const char** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
94 bool OCRepPayloadGetStringArray(const OCRepPayload* payload, const char* name,
95         char*** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
96
97 bool OCRepPayloadSetBoolArrayAsOwner(OCRepPayload* payload, const char* name,
98         bool* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
99 bool OCRepPayloadSetBoolArray(OCRepPayload* payload, const char* name,
100         const bool* array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
101 bool OCRepPayloadGetBoolArray(const OCRepPayload* payload, const char* name,
102         bool** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
103
104 bool OCRepPayloadSetPropObjectArrayAsOwner(OCRepPayload* payload, const char* name,
105         OCRepPayload** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
106 bool OCRepPayloadSetPropObjectArray(OCRepPayload* payload, const char* name,
107         const OCRepPayload** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
108 bool OCRepPayloadGetPropObjectArray(const OCRepPayload* payload, const char* name,
109         OCRepPayload*** array, size_t dimensions[MAX_REP_ARRAY_DEPTH]);
110
111 void OCRepPayloadDestroy(OCRepPayload* payload);
112
113 // Discovery Payload
114 OCDiscoveryPayload* OCDiscoveryPayloadCreate();
115
116 OCSecurityPayload* OCSecurityPayloadCreate(const char* securityData);
117 void OCSecurityPayloadDestroy(OCSecurityPayload* payload);
118
119 void OCDiscoveryPayloadAddResource(OCDiscoveryPayload* payload, const OCResource* res,
120         uint16_t port);
121 void OCDiscoveryPayloadAddNewResource(OCDiscoveryPayload* payload, OCResourcePayload* res);
122 size_t OCDiscoveryPayloadGetResourceCount(OCDiscoveryPayload* payload);
123 OCResourcePayload* OCDiscoveryPayloadGetResource(OCDiscoveryPayload* payload, size_t index);
124
125 void OCDiscoveryPayloadDestroy(OCDiscoveryPayload* payload);
126
127 // Device Payload
128 OCDevicePayload* OCDevicePayloadCreate(const char* uri, const uint8_t* sid, const char* dname,
129         const char* specVer, const char* dmVer);
130 void OCDevicePayloadDestroy(OCDevicePayload* payload);
131
132 // Platform Payload
133 OCPlatformPayload* OCPlatformPayloadCreate(const char* uri, const OCPlatformInfo* platformInfo);
134 OCPlatformPayload* OCPlatformPayloadCreateAsOwner(char* uri, OCPlatformInfo* platformInfo);
135
136 void OCPlatformPayloadDestroy(OCPlatformPayload* payload);
137
138 // Presence Payload
139 OCPresencePayload* OCPresencePayloadCreate(uint32_t seqNum, uint32_t maxAge,
140         OCPresenceTrigger trigger, const char* resourceType);
141 void OCPresencePayloadDestroy(OCPresencePayload* payload);
142
143 #ifdef __cplusplus
144 }
145 #endif
146
147 #endif
148