1 /* 2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef STATIONARY_DATA_H 17 #define STATIONARY_DATA_H 18 19 #include <string> 20 21 namespace OHOS { 22 namespace Msdp { 23 namespace DeviceStatus { 24 constexpr double MOVEMENT_THRESHOLD { 0.001 }; 25 enum Type { 26 TYPE_INVALID = -1, 27 TYPE_ABSOLUTE_STILL, 28 TYPE_HORIZONTAL_POSITION, 29 TYPE_VERTICAL_POSITION, 30 TYPE_STILL, 31 TYPE_RELATIVE_STILL, 32 TYPE_CAR_BLUETOOTH, 33 TYPE_LID_OPEN, 34 TYPE_STAND, 35 TYPE_MAX 36 }; 37 38 enum TypeValue : bool { 39 INVALID = false, 40 VALID = true 41 }; 42 43 enum OnChangedValue { 44 VALUE_INVALID = -1, 45 VALUE_ENTER = 1, 46 VALUE_EXIT = 2 47 }; 48 49 enum ActivityEvent { 50 EVENT_INVALID = 0, 51 ENTER = 1, 52 EXIT = 2, 53 ENTER_EXIT = 3 54 }; 55 56 enum ReportLatencyNs { 57 Latency_INVALID = -1, 58 SHORT = 1, 59 MIDDLE = 2, 60 LONG = 3 61 }; 62 enum Status { 63 STATUS_INVALID = -1, 64 STATUS_CANCEL, 65 STATUS_START, 66 STATUS_PROCESS, 67 STATUS_FINISH 68 }; 69 70 enum Action { 71 ACTION_INVALID = -1, 72 ACTION_ENLARGE, 73 ACTION_REDUCE, 74 ACTION_UP, 75 ACTION_LEFT, 76 ACTION_DOWN, 77 ACTION_RIGHT 78 }; 79 80 struct Data { 81 Type type { TYPE_INVALID }; 82 OnChangedValue value { VALUE_INVALID }; 83 Status status { STATUS_INVALID }; 84 Action action { ACTION_INVALID }; 85 double movement { 0.0 }; 86 87 bool operator !=(const Data &r) const 88 { 89 if (type == r.type && value == r.value && 90 status - r.status && action == r.action && (movement - r.movement) < MOVEMENT_THRESHOLD) { 91 return false; 92 } 93 return true; 94 } 95 }; 96 97 struct DevicePostureData { 98 float rollRad = 0.0F; 99 float pitchRad = 0.0F; 100 float yawRad = 0.0F; 101 }; 102 103 typedef struct DeviceStatusJsonData { 104 int32_t type { -1 }; 105 std::string json; 106 }DeviceStatusJsonD; 107 108 static DeviceStatusJsonD DeviceStatusJson[] = { 109 { Type::TYPE_ABSOLUTE_STILL, "absoluteStill" }, 110 { Type::TYPE_HORIZONTAL_POSITION, "horizontalPosition" }, 111 { Type::TYPE_VERTICAL_POSITION, "verticalPosition" }, 112 { Type::TYPE_STILL, "still" }, 113 { Type::TYPE_RELATIVE_STILL, "relativeStill" }, 114 { Type::TYPE_CAR_BLUETOOTH, "carBluetooth" }, 115 { Type::TYPE_LID_OPEN, "LID_OPEN" }, 116 { Type::TYPE_MAX, "MAX" } 117 }; 118 } // namespace DeviceStatus 119 } // namespace Msdp 120 } // namespace OHOS 121 #endif // STATIONARY_DATA_H 122