128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung/*
228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * Copyright (C) 2018 The Android Open Source Project
328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung *
428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * Licensed under the Apache License, Version 2.0 (the "License");
528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * you may not use this file except in compliance with the License.
628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * You may obtain a copy of the License at
728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung *
828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung *      http://www.apache.org/licenses/LICENSE-2.0
928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung *
1028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * Unless required by applicable law or agreed to in writing, software
1128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * distributed under the License is distributed on an "AS IS" BASIS,
1228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * See the License for the specific language governing permissions and
1428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung * limitations under the License.
1528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung */
1628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
1728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#ifndef CHRE_PLATFORM_SLPI_SEE_SEE_HELPER_INTERNAL_H_
1828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#define CHRE_PLATFORM_SLPI_SEE_SEE_HELPER_INTERNAL_H_
1928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
2028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#include <stddef.h>
2128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#include <stdint.h>
2228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
2328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#include "sns_suid.pb.h"
2428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
2528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#include "chre/util/optional.h"
2628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
2728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chungnamespace chre {
2828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
2928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung//! A struct to store a sensor's calibration data
3028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chungstruct SeeCalData {
3128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  float bias[3];
3228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  float scale[3];
3328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  float matrix[9];
3428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  bool hasBias;
3528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  bool hasScale;
3628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  bool hasMatrix;
3728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  uint8_t accuracy;
3828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung};
3928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
4028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung//! A struct to store a cal sensor's UID and its cal data.
4128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chungstruct SeeCalInfo {
4228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  Optional<sns_std_suid> suid;
4328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  SeeCalData cal;
4428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung};
4528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
4628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung//! The list of SEE cal sensors supported.
4728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chungenum class SeeCalSensor {
4828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  AccelCal,
4928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  GyroCal,
5028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  MagCal,
5128a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung  NumCalSensors,
5228a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung};
5328a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
5428a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung//! A convenience constant.
5528a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chungconstexpr size_t kNumSeeCalSensors = static_cast<size_t>(
5628a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung    SeeCalSensor::NumCalSensors);
5728a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
5828a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung}  // namespace chre
5928a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung
6028a23dc113900ab96f165a4c4df6d1a17b7665dcMeng-hsuan Chung#endif  // CHRE_PLATFORM_SLPI_SEE_SEE_HELPER_INTERNAL_H_
61