1 //******************************************************************
3 // Copyright 2016 Samsung Electronics 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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "NSConsumerCommon.h"
22 #include "NSConstants.h"
24 #include "oic_malloc.h"
25 #include "oic_string.h"
27 #define NS_QUERY_CONSUMER_ID "consumerid"
29 char ** NSGetConsumerId()
31 static char * g_consumerId = NULL;
32 return & g_consumerId;
35 void NSSetConsumerId(char * cId)
37 NS_VERTIFY_NOT_NULL_V(cId);
38 char ** consumerId = NSGetConsumerId();
39 NSOICFree(*consumerId);
40 *consumerId = (char *)OICMalloc(sizeof(char) * NS_DEVICE_ID_LENGTH);
41 NS_VERTIFY_NOT_NULL_V(*consumerId);
43 OICStrcpy(*consumerId, sizeof(char) * NS_DEVICE_ID_LENGTH, cId);
46 char * NSGetQuery(const char * uri)
48 NS_VERTIFY_NOT_NULL(uri, NULL);
50 char * consumerId = OICStrdup(*NSGetConsumerId());
51 NS_VERTIFY_NOT_NULL(consumerId, NULL);
53 size_t uriLen = strlen(uri) + 1;
54 size_t qKeyLen = sizeof(NS_QUERY_CONSUMER_ID);
55 size_t queryLen = NS_DEVICE_ID_LENGTH + uriLen + qKeyLen + 2;
57 char * retQuery = (char *)OICMalloc(sizeof(char) * queryLen);
58 NS_VERTIFY_NOT_NULL(retQuery, NULL);
61 OICStrcpy((retQuery + index), uriLen, uri);
63 OICStrcpy((retQuery + index), 2, "?");
65 OICStrcpy((retQuery + index), qKeyLen, NS_QUERY_CONSUMER_ID);
67 OICStrcpy((retQuery + index), 2, "=");
69 OICStrcpy((retQuery + index), NS_DEVICE_ID_LENGTH, consumerId);
71 NSOICFree(consumerId);
76 bool * NSGetBoneIsStartedConsumer()
78 static bool g_isStartedConsumer = false;
80 return & g_isStartedConsumer;
83 void NSSetIsStartedConsumer(bool setValue)
85 * NSGetBoneIsStartedConsumer() = setValue;
88 bool NSIsStartedConsumer()
90 return * NSGetBoneIsStartedConsumer();
93 NSProviderDiscoveredCallback * NSGetBoneDiscoverCb()
95 static NSProviderDiscoveredCallback g_discoverCb = NULL;
97 return & g_discoverCb;
100 void NSSetDiscoverProviderCb(NSProviderDiscoveredCallback cb)
102 * NSGetBoneDiscoverCb() = cb;
105 NSProviderDiscoveredCallback NSGetDiscoverCb()
107 return * NSGetBoneDiscoverCb();
110 void * NSDiscoveredProviderFunc(void * provider)
112 NSGetDiscoverCb()((NSProvider *) provider);
117 void NSDiscoveredProvider(NSProvider * provider)
119 NSConsumerThread * thread = NSThreadInit(NSDiscoveredProviderFunc, (void *) provider);
120 NS_VERTIFY_NOT_NULL_V(thread);
123 NSSyncCallback * NSGetBoneNotificationSyncCb()
125 static NSSyncCallback g_syncCb = NULL;
130 void NSSetNotificationSyncCb(NSSyncCallback cb)
132 * NSGetBoneNotificationSyncCb() = cb;
137 NSProvider * provider;
141 void * NSNotificationSyncFunc(void * obj)
143 NSProvider * provider = ((NSSyncData *) obj)->provider;
144 NSSyncInfo * syncData = ((NSSyncData *) obj)->sync;
145 (* NSGetBoneNotificationSyncCb())(provider, syncData);
149 void NSNotificationSync(NSProvider * provider, NSSyncInfo * sync)
151 NSSyncData * obj = (NSSyncData *)OICMalloc(sizeof(NSSyncData));
152 NS_VERTIFY_NOT_NULL_V(obj);
153 obj->provider = provider;
156 NSConsumerThread * thread = NSThreadInit(NSNotificationSyncFunc, (void *) obj);
157 NS_VERTIFY_NOT_NULL_V(thread);
160 NSNotificationReceivedCallback * NSGetBoneMessagePostedCb()
162 static NSNotificationReceivedCallback g_postCb = NULL;
167 void NSSetMessagePostedCb(NSNotificationReceivedCallback cb)
169 * NSGetBoneMessagePostedCb() = cb;
172 NSNotificationReceivedCallback NSGetMessagePostedCb()
174 return * NSGetBoneMessagePostedCb();
179 NSProvider * provider;
183 void * NSMessagePostFunc(void * obj)
185 NSMessageData * msgData = (NSMessageData *) obj;
187 NSGetMessagePostedCb()((NSProvider *) msgData->provider,
188 (NSMessage *) msgData->msg);
192 void NSMessagePost(NSProvider * provider, NSMessage * msg)
194 NSMessageData * obj = (NSMessageData *)OICMalloc(sizeof(NSMessageData));
195 NS_VERTIFY_NOT_NULL_V(obj);
196 obj->provider = provider;
199 NSConsumerThread * thread = NSThreadInit(NSMessagePostFunc, (void *) obj);
200 NS_VERTIFY_NOT_NULL_V(thread);
203 NSTask * NSMakeTask(NSTaskType type, void * data)
205 NSTask * retTask = OICMalloc(sizeof(NSTask));
206 NS_VERTIFY_NOT_NULL(retTask, NULL);
208 retTask->taskType = type;
209 retTask->taskData = data;
210 retTask->nextTask = NULL;
215 NSMessage_consumer * NSCopyMessage(NSMessage_consumer * msg)
217 NS_VERTIFY_NOT_NULL(msg, NULL);
219 NSMessage_consumer * newMsg = (NSMessage_consumer *)OICMalloc(sizeof(NSMessage_consumer));
220 NS_VERTIFY_NOT_NULL(newMsg, NULL);
222 newMsg->addr = (OCDevAddr *)OICMalloc(sizeof(OCDevAddr));
223 NS_VERTIFY_NOT_NULL_WITH_POST_CLEANING(newMsg, NULL, OICFree(newMsg));
224 memcpy(newMsg->addr, msg->addr, sizeof(OCDevAddr));
226 newMsg->messageId = msg->messageId;
227 newMsg->title = OICStrdup(msg->title);
228 newMsg->contentText = OICStrdup(msg->contentText);
229 newMsg->sourceName = OICStrdup(msg->sourceName);
233 void NSRemoveMessage(NSMessage_consumer * msg)
236 NSOICFree(msg->title);
237 NSOICFree(msg->contentText);
238 NSOICFree(msg->sourceName);
239 NSOICFree(msg->addr);
244 OCStackResult NSInvokeRequest(OCDoHandle * handle,
245 OCMethod method, const OCDevAddr * addr,
246 const char * queryUrl, OCPayload * payload,
247 void * callbackFunc, void * callbackData)
249 OCCallbackData cbdata;
251 cbdata.cb = callbackFunc;
252 cbdata.context = callbackData;
255 return OCDoResource(handle, method, queryUrl, addr,
256 payload, CT_DEFAULT, NS_QOS, &cbdata, NULL, 0);