1cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca/* 2cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * Copyright (C) 2015 Intel Corporation 3cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * 4cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * Licensed under the Apache License, Version 2.0 (the "License"); 5cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * you may not use this file except in compliance with the License. 6cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * You may obtain a copy of the License at 7cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * 8cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * http://www.apache.org/licenses/LICENSE-2.0 9cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * 10cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * Unless required by applicable law or agreed to in writing, software 11cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * distributed under the License is distributed on an "AS IS" BASIS, 12cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * See the License for the specific language governing permissions and 14cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca * limitations under the License. 15cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca */ 16cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 17cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca#include <cutils/log.h> 18cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca#include "GroveLight.hpp" 192260148caf820ec683166792851b504e036c1f39Constantin Musca#include "SensorsHAL.hpp" 20cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 212260148caf820ec683166792851b504e036c1f39Constantin Muscastruct sensor_t GroveLight::sensorDescription = { 226134630c71b16746935fe284c64dc29014a89577Bruce Beare .name = "Grove Light Sensor", 231a7a7ca125ef0eb3e576e94412eba05ed916acaaConstantin Musca .vendor = "Senba Optical & Electronic", 246134630c71b16746935fe284c64dc29014a89577Bruce Beare .version = 1, 256134630c71b16746935fe284c64dc29014a89577Bruce Beare .handle = -1, 266134630c71b16746935fe284c64dc29014a89577Bruce Beare .type = SENSOR_TYPE_LIGHT, 271a7a7ca125ef0eb3e576e94412eba05ed916acaaConstantin Musca .maxRange = 60.0f, 286134630c71b16746935fe284c64dc29014a89577Bruce Beare .resolution = 1.0f, 296134630c71b16746935fe284c64dc29014a89577Bruce Beare .power = 0.001f, 301a7a7ca125ef0eb3e576e94412eba05ed916acaaConstantin Musca .minDelay = 10, 316134630c71b16746935fe284c64dc29014a89577Bruce Beare .fifoReservedEventCount = 0, 326134630c71b16746935fe284c64dc29014a89577Bruce Beare .fifoMaxEventCount = 0, 336134630c71b16746935fe284c64dc29014a89577Bruce Beare .stringType = SENSOR_STRING_TYPE_LIGHT, 346134630c71b16746935fe284c64dc29014a89577Bruce Beare .requiredPermission = "", 351a7a7ca125ef0eb3e576e94412eba05ed916acaaConstantin Musca .maxDelay = 1000, 366134630c71b16746935fe284c64dc29014a89577Bruce Beare .flags = SENSOR_FLAG_ON_CHANGE_MODE, 376134630c71b16746935fe284c64dc29014a89577Bruce Beare .reserved = {}, 38cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca}; 39cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 402260148caf820ec683166792851b504e036c1f39Constantin MuscaSensor * GroveLight::createSensor(int pollFd) { 412260148caf820ec683166792851b504e036c1f39Constantin Musca return new GroveLight(pollFd, 0); 422260148caf820ec683166792851b504e036c1f39Constantin Musca} 432260148caf820ec683166792851b504e036c1f39Constantin Musca 442260148caf820ec683166792851b504e036c1f39Constantin Muscavoid GroveLight::initModule() { 452260148caf820ec683166792851b504e036c1f39Constantin Musca SensorContext::addSensorModule(&sensorDescription, createSensor); 462260148caf820ec683166792851b504e036c1f39Constantin Musca} 472260148caf820ec683166792851b504e036c1f39Constantin Musca 482260148caf820ec683166792851b504e036c1f39Constantin MuscaGroveLight::GroveLight(int pollFd, int pin) : upm::GroveLight(pin), pollFd(pollFd) { 492260148caf820ec683166792851b504e036c1f39Constantin Musca handle = sensorDescription.handle; 50cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca type = SENSOR_TYPE_LIGHT; 51cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca} 52cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 53cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin MuscaGroveLight::~GroveLight() {} 54cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 55cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Muscaint GroveLight::pollEvents(sensors_event_t* data, int count) { 56cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca data->light = value(); 57cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca return 1; 58cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca} 59cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca 60cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Muscaint GroveLight::activate(int handle, int enabled) { 61cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca /* start or stop the acquisition thread */ 622260148caf820ec683166792851b504e036c1f39Constantin Musca return activateAcquisitionThread(pollFd, handle, enabled); 63cf6591ae5272db9f2718d75d0e32d0298b0dc7fdConstantin Musca} 64