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 /* Sequence number is a 24 bit field */
25 #define MAX_SEQUENCE_NUMBER (0xFFFFFF)
27 #define MAX_OBSERVER_FAILED_COMM (2)
28 #define MAX_OBSERVER_NON_COUNT (3)
30 /* This information is stored for each registerd observer */
31 typedef struct ResourceObserver
33 // Observation Identifier for request
34 OCObservationId observeId;
35 // URI of observed resource
39 //token for the observe request
41 //token length for the observe request
45 //TODO bundle it in Endpoint structure(address, uri, type, secured)
46 /** Remote Endpoint address **/
47 CAAddress_t addressInfo;
48 /** Connectivity of the endpoint**/
49 CAConnectivityType_t connectivityType;
50 // Quality of service of the request
51 OCQualityOfService qos;
52 // number of times the server failed to reach the observer
53 uint8_t failedCommCount;
54 // number of times the server sent NON notifications
56 // force the qos value to CON
58 // next node in this list
59 struct ResourceObserver *next;
63 OCStackResult SendAllObserverNotification (OCMethod method, OCResource *resPtr, uint32_t maxAge,
64 OCResourceType *resourceType, OCQualityOfService qos);
66 OCStackResult SendAllObserverNotification (OCMethod method, OCResource *resPtr, uint32_t maxAge,
67 OCQualityOfService qos);
69 OCStackResult SendListObserverNotification (OCResource * resource,
70 OCObservationId *obsIdList, uint8_t numberOfIds,
71 const char *notificationJSONPayload, uint32_t maxAge,
72 OCQualityOfService qos);
74 void DeleteObserverList();
76 OCStackResult GenerateObserverId (OCObservationId *observationId);
78 OCStackResult AddObserver (const char *resUri,
80 OCObservationId obsId,
83 OCResource *resHandle,
84 OCQualityOfService qos,
85 const CAAddress_t *addressInfo,
86 CAConnectivityType_t connectivityType);
88 OCStackResult DeleteObserverUsingToken (CAToken_t * token, uint8_t tokenLength);
90 ResourceObserver* GetObserverUsingToken (const CAToken_t * token, uint8_t tokenLength);
92 ResourceObserver* GetObserverUsingId (const OCObservationId observeId);
95 CreateObserveHeaderOption (CAHeaderOption_t **caHdrOpt,
96 OCHeaderOption *ocHdrOpt,
100 GetObserveHeaderOption (uint32_t * observationOption,
101 CAHeaderOption_t *options,
102 uint8_t * numOptions);
104 #endif //OC_OBSERVE_H