Rename the class Json to avoid symbol conflicts with Jsoncpp
[platform/core/context/context-provider.git] / include / ProviderList.h
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef _CONTEXT_PROVIDER_LIST_H_
18 #define _CONTEXT_PROVIDER_LIST_H_
19
20 #include <ContextProvider.h>
21 #include <ProviderTypes.h>
22 #include <MyPlaceTypes.h>
23 #include <SensorRecorderTypes.h>
24
25 #define LIB_PREFIX              "/context-service/libctx-prvd-"
26 #define LIB_EXTENSION   ".so"
27
28 /* CtxJson1 Formats */
29 #define TRIG_DEF_RANK                   "\"Rank\":{\"type\":\"integer\",\"minimum\":1}"
30 #define TRIG_DEF_TOTAL_COUNT    "\"TotalCount\":{\"type\":\"integer\",\"minimum\":0}"
31 #define TRIG_DEF_TIME_OF_DAY    "\"TimeOfDay\":{\"type\":\"string\"}"
32 #define TRIG_DEF_DAY_OF_WEEK    "\"DayOfWeek\":{\"enum\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\",\"Weekday\",\"Weekend\"]}"
33 #define TRIG_BOOL_ITEM_DEF(sbj) "\"" sbj "\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":1}"
34
35 const struct {
36         const char *subject;
37         const char *library;
38 } subjectLibraryList[] = {
39         {SUBJ_ACTIVITY,                 "activity"},
40         {SUBJ_APP_STATS,                "app-stats"},
41         {SUBJ_BATTERY_STATS,    "battery-stats"},
42         {SUBJ_STATE_CALL,               "call"},
43         {SUBJ_STATE_CONTACTS,   "contacts"},
44         {SUBJ_CUSTOM,                   "custom"},
45         {SUBJ_STATE_EMAIL,              "email"},
46         {SUBJ_PLACE_GEOFENCE,   "geofence"},
47         {SUBJ_STATE_HEADPHONE,  "headphone"},
48         {SUBJ_MEDIA_LOGGER,             "media-stats"},
49         {SUBJ_MUSIC_STATS,              "media-stats"},
50         {SUBJ_VIDEO_STATS,              "media-stats"},
51         {SUBJ_STATE_MESSAGE,    "message"},
52         {SUBJ_PLACE_DETECTION,  "my-place"},
53         {SUBJ_SENSOR,                   "sensor"},
54         {SUBJ_SOCIAL_STATS,             "social-stats"},
55         {SUBJ_STATE_BATTERY,    "system"},
56         {SUBJ_STATE_CHARGER,    "system"},
57         {SUBJ_STATE_USB,                "system"},
58         {SUBJ_STATE_GPS,                "system"},
59         {SUBJ_STATE_PSMODE,             "system"},
60         {SUBJ_STATE_ALARM,              "time"},
61         {SUBJ_STATE_TIME,               "time"},
62         {SUBJ_STATE_WIFI,               "wifi"}
63 };
64
65 const struct {
66         const char *subject;
67         int operation;
68         const char *attribute;
69         const char *option;
70 } triggerTemplateList[] = {
71         {
72                 SUBJ_ACTIVITY,
73                 OPS_SUBSCRIBE,
74                 "{\"Event\":{\"enum\":[\"Detected\"]}}",
75                 "{\"Accuracy\":{\"enum\":[\"Low\",\"Normal\",\"High\"]}}"
76         },
77         {
78                 SUBJ_APP_FREQUENCY,
79                 OPS_READ,
80                 "{" TRIG_DEF_RANK "," TRIG_DEF_TOTAL_COUNT "}",
81                 "{"
82                         "\"AppId\":{\"type\":\"string\"},"
83                         TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK
84                 "}"
85         },
86         {
87                 SUBJ_STATE_CALL,
88                 OPS_SUBSCRIBE | OPS_READ,
89                 /* TODO remove Connecting, Connected */
90                 "{"
91                         "\"Medium\":{\"enum\":[\"Voice\",\"Video\"]},"
92                         "\"State\":{\"enum\":[\"Idle\",\"Connecting\",\"Connected\"]},"
93                         "\"Address\":{\"type\":\"string\"}"
94                 "}",
95                 NULL
96         },
97         {
98                 SUBJ_STATE_CONTACTS,
99                 OPS_SUBSCRIBE,
100                 "{"
101                         "\"Event\":{\"enum\":[\"Changed\"]},"
102                         "\"Type\":{\"enum\":[\"MyProfile\",\"Person\"]}"
103                 "}",
104                 NULL
105         },
106         {
107                 SUBJ_CUSTOM,
108                 OPS_SUBSCRIBE,
109                 "{}",
110                 NULL
111         },
112         {
113                 SUBJ_STATE_EMAIL,
114                 OPS_SUBSCRIBE,
115                 "{"
116                         "\"Event\":{\"enum\":[\"Received\",\"Sent\"]}"
117                 "}",
118                 NULL
119         },
120         {
121                 SUBJ_PLACE_GEOFENCE,
122                 OPS_SUBSCRIBE,
123                 "{"
124                         "\"Event\":{\"enum\":[\"In\",\"Out\"]}"
125                 "}",
126                 "{"
127                         "\"PlaceId\":{\"type\":\"integer\",\"minimum\":1}"
128                 "}"
129         },
130         {
131                 SUBJ_STATE_HEADPHONE,
132                 OPS_SUBSCRIBE | OPS_READ,
133                 "{"
134                         TRIG_BOOL_ITEM_DEF("IsConnected") ","
135                         "\"Type\":{\"enum\":[\"Normal\",\"Headset\",\"Bluetooth\"]}"
136                 "}",
137                 NULL
138         },
139         {
140                 SUBJ_MUSIC_FREQUENCY,
141                 OPS_READ,
142                 "{" TRIG_DEF_TOTAL_COUNT "}",
143                 "{" TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK "}"
144         },
145         {
146                 SUBJ_VIDEO_FREQUENCY,
147                 OPS_READ,
148                 "{" TRIG_DEF_TOTAL_COUNT "}",
149                 "{" TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK "}"
150         },
151         {
152                 SUBJ_STATE_MESSAGE,
153                 OPS_SUBSCRIBE,
154                 "{"
155                         "\"Event\":{\"enum\":[\"Received\"]},"
156                         "\"Type\":{\"enum\":[\"SMS\",\"MMS\"]},"
157                         "\"Address\":{\"type\":\"string\"}"
158                 "}",
159                 NULL
160         },
161         {
162                 SUBJ_SOCIAL_FREQUENCY,
163                 OPS_READ,
164                 "{" TRIG_DEF_RANK "," TRIG_DEF_TOTAL_COUNT "}",
165                 "{"
166                         "\"Address\":{\"type\":\"string\"},"
167                         TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK
168                 "}"
169         },
170         {
171                 SUBJ_STATE_BATTERY,
172                 OPS_SUBSCRIBE | OPS_READ,
173                 "{"
174                         "\"Level\":{\"enum\":[\"Empty\",\"Critical\",\"Low\",\"Normal\",\"High\",\"Full\"]},"
175                         TRIG_BOOL_ITEM_DEF("IsCharging")
176                 "}",
177                 NULL
178         },
179         {
180                 SUBJ_STATE_CHARGER,
181                 OPS_SUBSCRIBE | OPS_READ,
182                 "{" TRIG_BOOL_ITEM_DEF("IsConnected") "}",
183                 NULL
184         },
185         {
186                 SUBJ_STATE_GPS,
187                 OPS_SUBSCRIBE | OPS_READ,
188                 "{"
189                         "\"State\":{\"enum\":[\"Disabled\",\"Searching\",\"Connected\"]}"
190                 "}",
191                 NULL
192         },
193         {
194                 SUBJ_STATE_PSMODE,
195                 OPS_SUBSCRIBE | OPS_READ,
196                 "{" TRIG_BOOL_ITEM_DEF("IsEnabled") "}",
197                 NULL
198         },
199         {
200                 SUBJ_STATE_USB,
201                 OPS_SUBSCRIBE | OPS_READ,
202                 "{" TRIG_BOOL_ITEM_DEF("IsConnected") "}",
203                 NULL
204         },
205         {
206                 SUBJ_STATE_ALARM,
207                 OPS_SUBSCRIBE,
208                 "{"
209                         "\"TimeOfDay\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":1439},"
210                         "\"DayOfWeek\":{\"enum\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\",\"Weekday\",\"Weekend\"]}"
211                 "}",
212                 NULL
213         },
214         {
215                 SUBJ_STATE_TIME,
216                 OPS_READ,
217                 "{"
218                         "\"TimeOfDay\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":1439},"
219                         "\"DayOfWeek\":{\"enum\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\",\"Weekday\",\"Weekend\"]},"
220                         "\"DayOfMonth\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":31}"
221                 "}",
222                 NULL
223         },
224         {
225                 SUBJ_STATE_WIFI,
226                 OPS_SUBSCRIBE | OPS_READ,
227                 "{"
228                         "\"State\":{\"enum\":[\"Disabled\",\"Unconnected\",\"Connected\"]},"
229                         "\"BSSID\":{\"type\":\"string\"}"
230                 "}",
231                 NULL
232         }
233 };
234
235 #endif  /* _CONTEXT_PROVIDER_TYPES_H_ */