Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / service / soft-sensor-manager / SSMCore / src / SSMInterface / SSMModelDefinition.h
1 /******************************************************************
2 *
3 * Copyright 2014 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 #ifndef _SSMModelDefinition_H_
21 #define _SSMModelDefinition_H_
22 #include <map>
23 #include <string>
24 #include <vector>
25
26 #if defined(WIN32)
27
28 #if defined(SSMSENSOR_WINDOWS_EXPORTS)
29 #define INTERFACE_DECLSPEC    __declspec(dllexport)
30 #elif defined(WIN32)
31 #define INTERFACE_DECLSPEC    __declspec(dllimport)
32 #endif
33
34 #elif defined(TIZEN)
35
36 #include <tizen.h>
37
38 #define INTERFACE_DECLSPEC EXPORT_API
39
40 #else
41
42 #define INTERFACE_DECLSPEC
43
44 #endif
45
46 #define SSM_MODEL_RETRY 3
47 typedef enum {SSM_ONCE, SSM_REPEAT} TypeofEvent;
48 typedef enum {SSM_EVENT_NORMAL, SSM_EVENT_ADDED, SSM_REMOVED, SSM_UPDATED} RESOURCE_EVENT_TYPE;
49 typedef enum {SENSOR_LOCATION_REMOTE, SENSOR_LOCATION_LOCAL} SENSOR_LOCATION;
50 class ISSMResource
51 {
52     public:
53         ISSMResource()
54         {
55             location = SENSOR_LOCATION_LOCAL;
56         }
57         ISSMResource(const std::string &n, const std::string &t) :
58             name(n), type(t)
59         {
60                 location = SENSOR_LOCATION_LOCAL;
61         }
62         SENSOR_LOCATION location;
63         std::string name;
64         std::string type;
65         std::string friendlyName;
66         std::string ip;
67         std::vector<std::string> inputList;
68         std::vector<std::map<std::string, std::string> > outputProperty;
69 };
70
71 class ContextData
72 {
73     public:
74         std::string rootName;
75         int outputPropertyCount;
76         std::vector< std::map<std::string, std::string> > outputProperty;
77 };
78
79 struct ResourceResult
80 {
81     std::string deviceID;
82     TypeofEvent callType;
83     ContextData ctxData;
84 };
85
86 enum CTX_EVENT_TYPE {SPF_START, SPF_UPDATE, SPF_END};
87
88 class ICtxEvent
89 {
90     public:
91         virtual void onCtxEvent(enum CTX_EVENT_TYPE, std::vector<ContextData>) = 0 ;
92         virtual ~ICtxEvent() {};
93 };
94
95 class IEvent
96 {
97     public:
98         virtual int onEvent(std::string deviceID, TypeofEvent callType,
99                             std::vector<ContextData> ctxData) = 0;
100         std::string appId;
101         virtual ~IEvent() {};
102 };
103
104 class IResourceEvent
105 {
106     public:
107         virtual int onResourceEvent(RESOURCE_EVENT_TYPE eventType, ISSMResource *pSSMResource,
108                                     std::string info) = 0;
109         virtual ~IResourceEvent() {};
110 };
111
112 class ICtxDelegate
113 {
114     public:
115         virtual void registerCallback(ICtxEvent *pEvent) = 0;
116         virtual void addOutput(std::vector<ContextData>) = 0;
117         virtual void getDataFromDatabase(std::string modelName, int startIndex, int count,
118                                          std::vector<ContextData> *data, int *pLastIndex) = 0;
119         virtual ~ICtxDelegate() {};
120 };
121
122 #endif