/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /* This provides the interface for any Ambient Light Sensors that are connected * to the EC instead of the AP. */ #include "als.h" #include "common.h" #include "console.h" #include "host_command.h" #include "task.h" #include "timer.h" #include "util.h" int als_read(enum als_id id, int *lux) { int af = als[id].attenuation_factor; return als[id].read(lux, af); } void als_task(void) { int i, val; uint16_t *mapped = (uint16_t *)host_get_memmap(EC_MEMMAP_ALS); uint16_t als_data; while (1) { for (i = 0; i < EC_ALS_ENTRIES && i < ALS_COUNT; i++) { als_data = als_read(i, &val) == EC_SUCCESS ? val : 0; mapped[i] = als_data; } task_wait_event(SECOND); } } /*****************************************************************************/ /* Console commands */ static int command_als(int argc, char **argv) { int i, rv, val; for (i = 0; i < ALS_COUNT; i++) { ccprintf("%s: ", als[i].name); rv = als_read(i, &val); switch (rv) { case EC_SUCCESS: ccprintf("%d lux\n", val); break; default: ccprintf("Error %d\n", rv); } } return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(als, command_als, NULL, "Print ALS values", NULL);