You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					158 lines
				
				4.3 KiB
			
		
		
			
		
	
	
					158 lines
				
				4.3 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2008 The Android Open Source Project
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								 * you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								 * You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *      http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								 * distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								 * See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								 * limitations under the License.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef ANDROID_LIGHTS_INTERFACE_H
							 | 
						||
| 
								 | 
							
								#define ANDROID_LIGHTS_INTERFACE_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdint.h>
							 | 
						||
| 
								 | 
							
								#include <sys/cdefs.h>
							 | 
						||
| 
								 | 
							
								#include <sys/types.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <hardware/hardware.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__BEGIN_DECLS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The id of this module
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHTS_HARDWARE_MODULE_ID "lights"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * These light IDs correspond to logical lights, not physical.
							 | 
						||
| 
								 | 
							
								 * So for example, if your INDICATOR light is in line with your
							 | 
						||
| 
								 | 
							
								 * BUTTONS, it might make sense to also light the INDICATOR
							 | 
						||
| 
								 | 
							
								 * light to a reasonable color when the BUTTONS are lit.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_BACKLIGHT          "backlight"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_KEYBOARD           "keyboard"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_BUTTONS            "buttons"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_BATTERY            "battery"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_NOTIFICATIONS      "notifications"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_ATTENTION          "attention"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * These lights aren't currently supported by the higher
							 | 
						||
| 
								 | 
							
								 * layers, but could be someday, so we have the constants
							 | 
						||
| 
								 | 
							
								 * here now.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_BLUETOOTH          "bluetooth"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_WIFI               "wifi"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Additional hardware-specific lights
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_CAPS               "caps"
							 | 
						||
| 
								 | 
							
								#define LIGHT_ID_FUNC               "func"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************
							 | 
						||
| 
								 | 
							
								 * Flash modes for the flashMode field of light_state_t.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define LIGHT_FLASH_NONE            0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * To flash the light at a given rate, set flashMode to LIGHT_FLASH_TIMED,
							 | 
						||
| 
								 | 
							
								 * and then flashOnMS should be set to the number of milliseconds to turn
							 | 
						||
| 
								 | 
							
								 * the light on, followed by the number of milliseconds to turn the light
							 | 
						||
| 
								 | 
							
								 * off.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_FLASH_TIMED           1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * To flash the light using hardware assist, set flashMode to
							 | 
						||
| 
								 | 
							
								 * the hardware mode.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_FLASH_HARDWARE        2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Light brightness is managed by a user setting.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define BRIGHTNESS_MODE_USER        0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Light brightness is managed by a light sensor.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define BRIGHTNESS_MODE_SENSOR      1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Light mode allows multiple LEDs
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define LIGHT_MODE_MULTIPLE_LEDS    0x01
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The parameters that can be set for a given light.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Not all lights must support all parameters.  If you
							 | 
						||
| 
								 | 
							
								 * can do something backward-compatible, you should.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct light_state_t {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * The color of the LED in ARGB.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Do your best here.
							 | 
						||
| 
								 | 
							
								     *   - If your light can only do red or green, if they ask for blue,
							 | 
						||
| 
								 | 
							
								     *     you should do green.
							 | 
						||
| 
								 | 
							
								     *   - If you can only do a brightness ramp, then use this formula:
							 | 
						||
| 
								 | 
							
								     *      unsigned char brightness = ((77*((color>>16)&0x00ff))
							 | 
						||
| 
								 | 
							
								     *              + (150*((color>>8)&0x00ff)) + (29*(color&0x00ff))) >> 8;
							 | 
						||
| 
								 | 
							
								     *   - If you can only do on or off, 0 is off, anything else is on.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * The high byte should be ignored.  Callers will set it to 0xff (which
							 | 
						||
| 
								 | 
							
								     * would correspond to 255 alpha).
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * CyanogenMod: The high byte value can be implemented to control the LEDs
							 | 
						||
| 
								 | 
							
								     * Brightness from the Lights settings. The value goes from 0x01 to 0xFF.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    unsigned int color;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * See the LIGHT_FLASH_* constants
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    int flashMode;
							 | 
						||
| 
								 | 
							
								    int flashOnMS;
							 | 
						||
| 
								 | 
							
								    int flashOffMS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Policy used by the framework to manage the light's brightness.
							 | 
						||
| 
								 | 
							
								     * Currently the values are BRIGHTNESS_MODE_USER and BRIGHTNESS_MODE_SENSOR.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    int brightnessMode;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Define the LEDs modes (multiple, ...).
							 | 
						||
| 
								 | 
							
								     * See the LIGHTS_MODE_* mask constants.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    unsigned int ledsModes;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct light_device_t {
							 | 
						||
| 
								 | 
							
								    struct hw_device_t common;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Set the provided lights to the provided values.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * Returns: 0 on succes, error code on failure.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    int (*set_light)(struct light_device_t* dev,
							 | 
						||
| 
								 | 
							
								            struct light_state_t const* state);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__END_DECLS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif  // ANDROID_LIGHTS_INTERFACE_H
							 | 
						||
| 
								 | 
							
								
							 |