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