1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH 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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 #include "ocstackconfig.h"
25 #include "occlientcb.h"
27 #define OC_OBSERVER_NOT_INTERESTED (0)
28 #define OC_OBSERVER_STILL_INTERESTED (1)
29 #define OC_OBSERVER_FAILED_COMM (2)
31 //-----------------------------------------------------------------------------
32 // Virtual Resource Presence Attributes
33 //-----------------------------------------------------------------------------
35 typedef struct PRESENCERESOURCE{
36 OCResourceHandle handle;
41 //-----------------------------------------------------------------------------
42 // Forward declarations
43 //-----------------------------------------------------------------------------
46 //-----------------------------------------------------------------------------
48 //-----------------------------------------------------------------------------
50 // IF here stands for Interface
59 // following structure will be created in occollection.
60 typedef struct occapability {
61 struct occapability* next;
63 char *capability; // It is a name about resource capability.
64 char *status; // It is mean status of capability.
68 // following structure will be created in occollection.
69 typedef struct ocaction {
70 struct ocaction *next;
73 // It will be used to execute the action.
79 // following structure will be created in occollection.
80 typedef struct ocactionset
82 struct ocactionset *next;
91 typedef struct resourcetype_t {
92 struct resourcetype_t *next; // linked list; for multiple types on resource
94 // Name of the type; this string is ‘.’ (dot) separate list of segments where each segment is a
95 // namespace and the final segment is the type; type and sub-types can be separate with
96 // ‘-‘ (dash) usually only two segments would be defined. Either way this string is meant to be
97 // human friendly and is used opaquely and not parsed by code. This name is used in the “rt=”
98 // parameter of a resource description when resources are introspected and is also use in the
99 // <base URI>/types list of available types.
100 char *resourcetypename;
103 typedef struct attr_t {
104 struct attr_t *next; // Points to next resource in list
106 // The name of the attribute; used to look up the attribute in list;
107 // for a given attribute SHOULD not be changed once assigned
108 const char *attrName;
109 char *attrValue; // value of the attribute as string
112 typedef struct resourceinterface_t {
113 struct resourceinterface_t *next; // linked list; for multiple interfaces on resource
115 // Name of the interface; this is ‘.’ (dot) separate list of segments where each segment is a
116 // namespace and the final segment is the interface; usually only two segments would be
117 // defined. Either way this string is opaque and not parsed by segment
120 // Supported content types to serialize request and response on this interface
121 // (REMOVE for V1 – only jSON for all but core.ll that uses Link Format)
123 char *inputContentType ;
124 char *outputContentType ;
126 /*** Future placeholder for access control and policy ***/
127 } OCResourceInterface;
129 typedef struct OCResource {
130 struct OCResource *next; // Points to next resource in list
131 // Relative path on the device; will be combined with base url to create fully qualified path
133 OCResourceType *rsrcType; // Resource type(s); linked list
134 OCResourceInterface *rsrcInterface; // Resource interface(s); linked list
135 OCAttribute *rsrcAttributes; // Resource interface(s); linked list
136 // Array of pointers to resources; can be used to represent a container of resources
137 // (i.e. hierarchies of resources) or for reference resources (i.e. for a resource collection)
138 struct OCResource *rsrcResources[MAX_CONTAINED_RESOURCES];
139 //struct rsrc_t *rsrcResources;
140 // Pointer to function that handles the entity bound to the resource.
141 // This handler has to be explicitly defined by the programmer
142 OCEntityHandler entityHandler;
143 // callback parameter
144 void * entityHandlerCallbackParam;
145 // Properties on the resource – defines meta information on the resource
146 OCResourceProperty resourceProperties ; /* ACTIVE, DISCOVERABLE etc */
147 // NOTE: Methods supported by this resource should be based on the interface targeted
148 // i.e. look into the interface structure based on the query request Can be removed here;
149 // place holder for the note above
150 /* method_t methods; */
151 // Sequence number for observable resources. Per the CoAP standard it is a 24 bit value.
152 uint32_t sequenceNum;
153 // Pointer of ActionSet which to support group action.
154 OCActionSet *actionsetHead;
159 #endif /* OCRESOURCE_H_ */