138bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol/* 238bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * Copyright (C) 2016 The Android Open Source Project 338bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * 438bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * Licensed under the Apache License, Version 2.0 (the "License"); 538bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * you may not use this file except in compliance with the License. 638bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * You may obtain a copy of the License at 738bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * 838bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * http://www.apache.org/licenses/LICENSE-2.0 938bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * 1038bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * Unless required by applicable law or agreed to in writing, software 1138bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * distributed under the License is distributed on an "AS IS" BASIS, 1238bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1338bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * See the License for the specific language governing permissions and 1438bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol * limitations under the License. 1538bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol */ 1638bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol 170d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignol#include "chre/platform/platform_sensor.h" 1838bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol 1938bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignolnamespace chre { 2038bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol 2153cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian DuddiePlatformSensor::PlatformSensor(PlatformSensor&& other) { 2253cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian Duddie *this = std::move(other); 2353cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian Duddie} 2453cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian Duddie 2567de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan ChungPlatformSensor::~PlatformSensor() {} 2667de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan Chung 270d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignolvoid PlatformSensor::init() { 2838bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol // TODO: Implement this. Probably we would open some files provided to mock 2938bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol // sensor data. Perhaps from command-line arguemnts. 3038bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol} 3138bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol 320d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignolvoid PlatformSensor::deinit() { 33b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol // TODO: Implement this. Probably we would close the files opened previously 34b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol // by init. 35b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol} 36b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol 3753cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian Duddiebool PlatformSensor::getSensors(DynamicVector<Sensor> *sensors) { 38cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol CHRE_ASSERT(sensors); 39cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol 40cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol // TODO: Implement this. Perhaps look at all sensor trace files provided and 41cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol // return the list of sensor data available. 42cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol return false; 43cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol} 44cd70ffd7dc683bd0d473f98ba593362e9cc5a877Andrew Rossignol 4553cec69ff23e5ffabf9f29d824c14fbdb18dc856Brian Duddiebool PlatformSensor::applyRequest(const SensorRequest& request) { 46f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol // TODO: Implement this. Perhaps consider the request and start to pass in 47f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol // sensor samples from mock sensor data once the sensor has transitioned to 48f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol // being enabled. Maybe consider resampling input data if the provided mock 49f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol // data rate is higher than requested. 50f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol return false; 51f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol} 52f546f4c27e66dc4ea868e660cebac9ba0c31fad9Andrew Rossignol 53cb8312e5ce53430576e2343e4863af84676c93adAndrew RossignolSensorType PlatformSensor::getSensorType() const { 54cb8312e5ce53430576e2343e4863af84676c93adAndrew Rossignol // TODO: Implement this. 55cb8312e5ce53430576e2343e4863af84676c93adAndrew Rossignol return SensorType::Unknown; 56cb8312e5ce53430576e2343e4863af84676c93adAndrew Rossignol} 57cb8312e5ce53430576e2343e4863af84676c93adAndrew Rossignol 589cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chunguint64_t PlatformSensor::getMinInterval() const { 599cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung // TODO: Implement this. 609cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung return 0; 619cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung} 629cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung 639cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chungconst char *PlatformSensor::getSensorName() const { 649cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung // TODO: Implement this. 659cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung return ""; 669cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung} 679cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung 689cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan ChungPlatformSensor& PlatformSensor::operator=(PlatformSensor&& other) { 699cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung // TODO: Implement this. 709cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung return *this; 719cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung} 729cab6df9598abbf843a7b37eed0c7039048deba7Meng-hsuan Chung 7367de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan ChungChreSensorData *PlatformSensor::getLastEvent() const { 7467de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan Chung // TODO: Implement this. 7567de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan Chung return nullptr; 7667de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan Chung} 7767de3f239af66c0d5733950a916bc5566f2017f0Meng-hsuan Chung 786797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chungbool PlatformSensor::getSamplingStatus( 796797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chung struct chreSensorSamplingStatus *status) const { 806797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chung // TODO: Implement this. 816797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chung return false; 826797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chung} 836797f377898193cbf15b71eba313bd783e552836Meng-hsuan Chung 8444025a4900c7da7aa7da83ecb295e7c12642a23dAndrew Rossignolvoid PlatformSensorBase::setLastEvent(const ChreSensorData *event) { 8544025a4900c7da7aa7da83ecb295e7c12642a23dAndrew Rossignol // TODO: Implement this. 8644025a4900c7da7aa7da83ecb295e7c12642a23dAndrew Rossignol} 8744025a4900c7da7aa7da83ecb295e7c12642a23dAndrew Rossignol 8838bec5401084a884b19e8523649548d6a4f7169aAndrew Rossignol} // namespace chre 89