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