Rename Functions, variables, structs and bug fixed.
[platform/upstream/iotivity.git] / service / notification / examples / linux / notificationprovider.c
1 /******************************************************************\r
2  *\r
3  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
4  *\r
5  *\r
6  *\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  *\r
19  ******************************************************************/\r
20 \r
21 #include <stdio.h>\r
22 #include <stdbool.h>\r
23 #include <stdlib.h>\r
24 #include "NSCommon.h"\r
25 #include "NSProviderInterface.h"\r
26 #include "logger.h"\r
27 #include "octypes.h"\r
28 #include "pthread.h"\r
29 #include "oic_string.h"\r
30 #include "oic_malloc.h"\r
31 \r
32 #define TAG "notiProviderExample"\r
33 \r
34 extern char *strdup(const char *s);\r
35 \r
36 bool isExit = false;\r
37 \r
38 int id;\r
39 \r
40 void* OCProcessThread(void * ptr)\r
41 {\r
42     (void) ptr;\r
43     while (!isExit)\r
44     {\r
45         if (OCProcess() != OC_STACK_OK)\r
46         {\r
47             OIC_LOG(ERROR, TAG, "OCStack process error");\r
48             return NULL;\r
49         }\r
50     }\r
51 \r
52     return NULL;\r
53 }\r
54 \r
55 void subscribeRequestCallback(NSConsumer *consumer)\r
56 {\r
57     OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
58 \r
59     printf("NS_APP Consumer Address ID: %s\n", consumer->mAddress);\r
60     printf("NS_APP Consumer Device ID: %s\n", consumer->mDeviceId);\r
61 \r
62     NSAccept(consumer, true);\r
63 }\r
64 \r
65 void syncCallback(NSSync *sync)\r
66 {\r
67     OIC_LOG(INFO, TAG, "sync requested");\r
68 \r
69     printf("NS_APP Sync State: %d\n", sync->mState);\r
70 }\r
71 \r
72 int main()\r
73 {\r
74     int num;\r
75     pthread_t processThread;\r
76 \r
77     OIC_LOG(INFO, TAG, "NSStartProvider()");\r
78 \r
79     if (OCInit(NULL, 0, OC_CLIENT_SERVER) != OC_STACK_OK)\r
80     {\r
81         OIC_LOG(INFO, TAG, "OCStack init error");\r
82         return 0;\r
83     }\r
84 \r
85     pthread_create(&processThread, NULL, OCProcessThread, NULL);\r
86 \r
87     while (!isExit)\r
88     {\r
89         char dummy;\r
90 \r
91         printf("1. NSStartProvider(Accepter: Provider) \n");\r
92         printf("2. NSStartProvider(Accepter: Consumer) \n");\r
93         printf("3. NSSendNotification() \n");\r
94         printf("4. NSRead \n");\r
95         printf("5. NSStopProvider() \n");\r
96         printf("6. NSGetConsumerList \n");\r
97         //printf("7. startPresence \n");\r
98         //printf("8. stopPresence \n");\r
99         printf("0. Exit() \n");\r
100 \r
101         printf("input : ");\r
102 \r
103         scanf("%d", &num);\r
104         fflush(stdin);\r
105         scanf("%c", &dummy);\r
106         fflush(stdin);\r
107 \r
108         switch (num)\r
109         {\r
110             case 1:\r
111                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Provider)");\r
112                 NSStartProvider(NS_ACCEPTER_PROVIDER, subscribeRequestCallback, syncCallback);\r
113                 break;\r
114             case 2:\r
115                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Consumer)");\r
116                 NSStartProvider(NS_ACCEPTER_CONSUMER, subscribeRequestCallback, syncCallback);\r
117                 break;\r
118             case 3:\r
119                 OIC_LOG(INFO, TAG, "NSSendNotification()");\r
120 \r
121                 char title[100];\r
122                 char body[100];\r
123                 char charID[100];\r
124 \r
125                 printf("id : %d\n", ++id);\r
126                 printf("title : ");\r
127 \r
128                 gets(title);\r
129 \r
130                 printf("body : ");\r
131                 gets(body);\r
132 \r
133                 printf("app - mId : %s \n", charID);\r
134                 printf("app - mTitle : %s \n", title);\r
135                 printf("app - mContentText : %s \n", body);\r
136 \r
137                 NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));\r
138 \r
139                 sprintf(charID, "%d", id);\r
140 \r
141                 msg->mId = strdup(charID);\r
142                 msg->mTitle = strdup(title);\r
143                 msg->mContentText = OICStrdup(body);\r
144                 msg->mSource = NULL;\r
145 \r
146                 NSSendMessage(msg);\r
147 \r
148                 break;\r
149 \r
150             case 4:\r
151                 OIC_LOG(INFO, TAG, "NSRead");\r
152                 NSSync * sync = (NSSync*) OICMalloc(sizeof(NSSync));\r
153 \r
154                 sync->mMessageId = OICStrdup("dev_001");\r
155                 sync->mState = 1;\r
156 \r
157                 break;\r
158 \r
159             case 5:\r
160                 NSStopProvider();\r
161                 break;\r
162             case 6:\r
163                 OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
164                 break;\r
165             case 7:\r
166                 OIC_LOG(INFO, TAG, "NSStartPresence - not working");\r
167                 //NSTestStartPresence();\r
168                 break;\r
169             case 8:\r
170                 OIC_LOG(INFO, TAG, "NSStopPresence- not working");\r
171                 //NSTestStopPresence();\r
172                 break;\r
173             case 0:\r
174                 NSStopProvider();\r
175                 isExit = true;\r
176                 break;\r
177             default:\r
178                 OIC_LOG(INFO, TAG, "Under Construction");\r
179                 break;\r
180         }\r
181 \r
182         printf("\n");\r
183     }\r
184 \r
185     return 0;\r
186 }\r