Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / service / soft-sensor-manager / SoftSensorPlugin / BMISensor / include / BMISensor.h
1 /******************************************************************
2  *
3  * Copyright 2015 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 /*
22  * BMISensor.h
23  */
24
25 #ifndef BMISENSOR_H_
26 #define BMISENSOR_H_
27
28 /**
29  * This header file is included to define _EXPORT_.
30  */
31 #include "SSMModelDefinition.h"
32
33 #ifdef __cplusplus
34 extern "C"
35 {
36 #endif
37 INTERFACE_DECLSPEC void InitializeContext(ICtxDelegate *pDelegate);
38 #ifdef __cplusplus
39 }
40 ;
41 #endif
42
43
44 #if 0
45 Who BMI
46 weight / height*hegith
47
48 < 18.5  :underweight
49 18.5 <= < 25 : Normal Range
50 <= 25  < 30 : Overweight
51 <= 30 : Obese
52 #endif
53
54 #define UNKOWNBMI   -1
55 #define OUTOFDATEBMI   0
56 #define UNDERWEIGHT     1
57 #define NORMALRANGE     2
58 #define OVERWEIGHT      3
59 #define OBESE           4
60
61
62 #define UNDERWEIGHT_VAL     18.5
63 #define NORMALRANGE_VAL     25.9
64 #define OVERWEIGHT_VAL      30
65
66
67 #define DIFFTIME      4     // valid time difference. (seconds)
68
69
70
71
72
73 namespace BMISensorName
74 {
75 //#define PHYSICAL_EA 2
76
77
78     typedef struct _physicalInput_
79     {
80         char *m_thingName;
81         int m_inputNum;
82         void *m_pInputStruct;
83     } physicalInput;
84
85     typedef enum
86     {
87         SUCCESS = 0, ERROR
88     } DIResult;
89
90     class BMISensor: public ICtxEvent
91     {
92         private:
93
94  //           static physicalInput s_PHYSICAL_SOFTSENSORs[PHYSICAL_EA];
95
96             class InValue
97             {
98                 public:
99                     std::string m_usrname;          // each user. ; for future
100                     std::string m_timestamp;
101                     double  m_height; // Height.
102                     double  m_weight; // Weight
103                     time_t  m_timepstampH;
104                     time_t  m_timepstampW;
105                     int m_BMIresult;
106
107             };
108
109             //InValue m_DI[PHYSICAL_EA];
110             InValue m_result;
111
112             int runLogic(std::vector< ContextData > &contextDataList);
113
114         public:
115             BMISensor();
116
117             void onCtxEvent(enum CTX_EVENT_TYPE eventType, std::vector< ContextData > contextDataList);
118
119             DIResult getInput(std::vector< ContextData > &contextDataList);
120             DIResult makeBMI(void);
121             ContextData setOutput(int property_count);
122
123             friend void INTERFACE_DECLSPEC initializeContext(ICtxDelegate *pDelegate);
124     };
125 };
126
127 #endif /* BMISENSOR_H_ */