157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu/*
257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Copyright (C) 2017 The Android Open Source Project
357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Licensed under the Apache License, Version 2.0 (the "License");
557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * you may not use this file except in compliance with the License.
657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * You may obtain a copy of the License at
757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *      http://www.apache.org/licenses/LICENSE-2.0
957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu *
1057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * Unless required by applicable law or agreed to in writing, software
1157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * distributed under the License is distributed on an "AS IS" BASIS,
1257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * See the License for the specific language governing permissions and
1457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu * limitations under the License.
1557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu */
1657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
1757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#include "BaseSensorObject.h"
1857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#include "SensorEventCallback.h"
194715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu#include "Utils.h"
2057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu#include <cstring>
2257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xunamespace android {
2457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xunamespace SensorHalExt {
2557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng XuBaseSensorObject::BaseSensorObject() : mCallback(nullptr) {
2757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu}
2857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
2957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xubool BaseSensorObject::setEventCallback(SensorEventCallback* callback) {
3057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    if (mCallback != nullptr) {
3157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu        return false;
3257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    }
3357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    mCallback = callback;
3457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    return true;
3557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu}
3657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
3757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuvoid BaseSensorObject::getUuid(uint8_t* uuid) const {
3857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    // default uuid denoting uuid feature is not supported on this sensor.
3957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    memset(uuid, 0, 16);
4057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu}
4157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
4257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuint BaseSensorObject::flush() {
4357d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    static const sensors_event_t event = {
4457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu        .type = SENSOR_TYPE_META_DATA,
4557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu        .timestamp = TIMESTAMP_AUTO_FILL  // timestamp will be filled at dispatcher
4657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    };
4757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    generateEvent(event);
4857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    return 0;
4957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu}
5057d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
5157d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xuvoid BaseSensorObject::generateEvent(const sensors_event_t &e) {
5257d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    if (mCallback) {
534715d1734d2c60cc91ef70d409678d8eda382fdePeng Xu        mCallback->submitEvent(SP_THIS, e);
5457d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu    }
5557d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu}
5657d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
5757d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu} // namespace SensorHalExt
5857d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu} // namespace android
5957d8af7f5ecbdbadb043b05ac5874989ef33fdadPeng Xu
60