Merge branch 'master' into notification-service
[platform/upstream/iotivity.git] / service / notification / src / consumer / NSConsumerCommon.h
1 //******************************************************************
2 //
3 // Copyright 2016 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 _NS_CONSUMER_CONSTANTS_H_
22 #define _NS_CONSUMER_CONSTANTS_H_
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif // __cplusplus
27
28 #include <stdio.h>
29 #include <stdbool.h>
30
31 #include "NSConsumerInterface.h"
32 #include "NSStructs.h"
33 #include "ocstack.h"
34
35 #define NS_QOS OC_HIGH_QOS
36 #define NS_RESOURCE_TYPE "oic.r.notification"
37 #define NS_RESOURCE_URI "/notification"
38 #define NS_INTERFACE_BASELINE "oic.if.baseline"
39 #define NS_INTERFACE_NOTIFICATION "oic.if.notification"
40 #define NS_RESOURCE_QUERY "/oic/res"
41
42 #define NS_DISCOVER_QUERY "/oic/res?rt=oic.r.notification"
43 #define NS_DEVICE_ID_LENGTH 37
44
45 typedef enum
46 {
47     NS_DISCOVER_DEFAULT, // will work for adapter_ip.
48     NS_DISCOVER_UDP,
49     NS_DISCOVER_TCP,
50     NS_DISCOVER_CLOUD
51 } NSConsumerDiscoverType;
52
53 typedef enum
54 {
55     NS_SELECTION_CONSUMER = 0,
56     NS_SELECTION_PROVIDER = 1
57 } NSSelector;
58
59 typedef struct NSProviderConnectionInfo
60 {
61     OCDevAddr * addr;
62
63     OCDoHandle messageHandle;
64     OCDoHandle syncHandle;
65
66     bool isCloudConnection;
67     bool isSubscribing;
68
69     struct NSProviderConnectionInfo * next;
70
71 } NSProviderConnectionInfo;
72
73 typedef struct
74 {
75     char providerId[NS_DEVICE_ID_LENGTH];
76
77     char * messageUri;
78     char * syncUri;
79     char * topicUri;
80
81     NSSelector accessPolicy;
82
83     NSProviderConnectionInfo * connection;
84
85     NSTopicList * topicList;
86     size_t topicListSize;
87
88 } NSProvider_internal;
89
90 typedef struct
91 {
92     uint64_t messageId;
93     char providerId[NS_DEVICE_ID_LENGTH];
94     NSSyncType state;
95
96     NSProviderConnectionInfo * connection;
97
98 } NSSyncInfo_internal;
99
100 typedef struct
101 {
102     NSSyncType status;
103     NSMessage * msg;
104
105 } NSStoreMessage;
106
107 bool NSIsStartedConsumer();
108 void NSSetIsStartedConsumer(bool setValue);
109
110 void NSSetDiscoverProviderCb(NSProviderDiscoveredCallback cb);
111 void NSDiscoveredProvider(NSProvider * provider);
112
113 void NSSetProviderChangedCb(NSProviderChangedCallback cb);
114 void NSProviderChanged(NSProvider * provider, NSResponse response);
115
116 void NSSetMessagePostedCb(NSMessageReceivedCallback  cb);
117 void NSMessagePost(NSMessage * obj);
118
119 void NSSetNotificationSyncCb(NSSyncInfoReceivedCallback cb);
120 void NSNotificationSync(NSSyncInfo * sync);
121
122 char ** NSGetConsumerId();
123 void NSSetConsumerId(char * cId);
124
125 char * NSMakeRequestUriWithConsumerId(const char * uri);
126
127 NSTask * NSMakeTask(NSTaskType, void *);
128
129 NSResult NSConsumerPushEvent(NSTask *);
130
131 NSMessage * NSCopyMessage(NSMessage *);
132 void NSRemoveMessage(NSMessage *);
133
134 NSProviderConnectionInfo * NSCreateProviderConnections(OCDevAddr * inAddr);
135 NSProviderConnectionInfo * NSCopyProviderConnections(NSProviderConnectionInfo * conn);
136 void NSRemoveConnections(NSProviderConnectionInfo * connections);
137
138 NSProvider_internal * NSCopyProvider(NSProvider_internal *);
139 void NSRemoveProvider(NSProvider_internal *);
140
141 NSSyncInfo_internal * NSCopySyncInfo(NSSyncInfo_internal *);
142 void NSRemoveSyncInfo(NSSyncInfo_internal *);
143
144 NSTopicList * NSCopyProviderTopicList(NSTopicList * topicList, size_t dimensionSize);
145 void NSRemoveProviderTopicList(NSTopicList * topicList, size_t dimensionSize);
146
147 OCStackResult NSInvokeRequest(OCDoHandle * handle,
148         OCMethod method, const OCDevAddr * addr,
149         const char * queryUrl, OCPayload * payload,
150         void * callbackFunc, void * callbackData, OCConnectivityType type);
151
152 bool NSOCResultToSuccess(OCStackResult ret);
153
154 #ifdef __cplusplus
155 }
156 #endif // __cplusplus
157
158 #endif // _NS_CONSUMER_CONSTANTS_H_