| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * resarding copyright ownership. The ASF licenses this file |
| * to you 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 __TCS34725_H__ |
| #define __TCS34725_H__ |
| |
| #define TCS34725_INTEGRATIONTIME_2_4MS 0xFF /* 2.4ms - 1 cycle - Max Count: 1024 */ |
| #define TCS34725_INTEGRATIONTIME_24MS 0xF6 /* 24ms - 10 cycles - Max Count: 10240 */ |
| #define TCS34725_INTEGRATIONTIME_50MS 0xEB /* 50ms - 20 cycles - Max Count: 20480 */ |
| #define TCS34725_INTEGRATIONTIME_101MS 0xD5 /* 101ms - 42 cycles - Max Count: 43008 */ |
| #define TCS34725_INTEGRATIONTIME_154MS 0xC0 /* 154ms - 64 cycles - Max Count: 65535 */ |
| #define TCS34725_INTEGRATIONTIME_700MS 0x00 /* 700ms - 256 cycles - Max Count: 65535 */ |
| |
| #define TCS34725_GAIN_1X 0x00 /* No gain */ |
| #define TCS34725_GAIN_4X 0x01 /* 4x gain */ |
| #define TCS34725_GAIN_16X 0x02 /* 16x gain */ |
| #define TCS34725_GAIN_60X 0x03 /* 60x gain */ |
| |
| #include "os/mynewt.h" |
| #include "sensor/sensor.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| struct tcs34725_cfg { |
| uint8_t gain; |
| uint8_t integration_time; |
| uint8_t int_enable; |
| sensor_type_t mask; |
| }; |
| |
| struct tcs34725 { |
| struct os_dev dev; |
| struct sensor sensor; |
| struct tcs34725_cfg cfg; |
| os_time_t last_read_time; |
| }; |
| |
| /** |
| * Expects to be called back through os_dev_create(). |
| * |
| * @param The device object associated with this color sensor |
| * @param Argument passed to OS device init, unused |
| * |
| * @return 0 on success, non-zero error on failure. |
| */ |
| int |
| tcs34725_init(struct os_dev *dev, void *arg); |
| |
| /** |
| * Configure the sensor |
| * |
| * @param ptr to the sensor |
| * @param ptr to sensor config |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_config(struct tcs34725 *tcs34725, struct tcs34725_cfg *cfg); |
| |
| #if MYNEWT_VAL(TCS34725_CLI) |
| int tcs34725_shell_init(void); |
| #endif |
| |
| /** |
| * Get chip ID from the sensor |
| * |
| * @param The sensor interface |
| * @param Pointer to the variable to fill up chip ID in |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_get_chip_id(struct sensor_itf *itf, uint8_t *id); |
| |
| /** |
| * Get gain of the sensor |
| * |
| * @param The sensor interface |
| * @param ptr to gain |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_get_gain(struct sensor_itf *itf, uint8_t *gain); |
| |
| /** |
| * Set gain of the sensor |
| * |
| * @param The sensor interface |
| * @param gain |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_set_gain(struct sensor_itf *itf, uint8_t gain); |
| |
| /** |
| * enables/disables interrupts |
| * |
| * @param enable/disable |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_enable_interrupt(struct sensor_itf *itf, uint8_t enable); |
| |
| /** |
| * Clears the interrupts |
| * |
| * @param The sensor interface |
| * @param The sensor interface |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_clear_interrupt(struct sensor_itf *itf); |
| |
| /** |
| * Sets threshold limits for interrupts, if the low threshold is set above |
| * the high threshold, the high threshold is ignored and only the low |
| * threshold is evaluated |
| * |
| * @param The sensor interface |
| * @param lower threshold |
| * @param higher threshold |
| * |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_set_int_limits(struct sensor_itf *itf, uint16_t low, uint16_t high); |
| |
| /** |
| * Sets integration time |
| * |
| * @param The sensor interface |
| * @param integration time to be set |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_set_integration_time(struct sensor_itf *itf, uint8_t int_time); |
| |
| /** |
| * Gets integration time set earlier |
| * |
| * @param The sensor interface |
| * @param ptr to integration time |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_get_integration_time(struct sensor_itf *itf, uint8_t *int_time); |
| |
| /** |
| * |
| * Enables the device |
| * |
| * @param The sensor interface |
| * @param enable/disable |
| * @return 0 on success, non-zero on error |
| */ |
| int |
| tcs34725_enable(struct sensor_itf *itf, uint8_t enable); |
| |
| /** |
| * Indicates whether the sensor is enabled or not |
| * |
| * @param The sensor interface |
| * @param ptr to is_enabled variable |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_get_enable(struct sensor_itf *itf, uint8_t *is_enabled); |
| |
| /** |
| * Reads the raw red, green, blue and clear channel values |
| * |
| * |
| * @param The sensor interface |
| * @param red value to return |
| * @param green value to return |
| * @param blue value to return |
| * @param clear channel value |
| * @param driver sturcture containing config |
| */ |
| int |
| tcs34725_get_rawdata(struct sensor_itf *itf, uint16_t *r, uint16_t *g, |
| uint16_t *b, uint16_t *c, struct tcs34725 *tcs34725); |
| |
| /** |
| * |
| * Gets threshold limits for interrupts, if the low threshold is set above |
| * the high threshold, the high threshold is ignored and only the low |
| * threshold is evaluated |
| * |
| * @param The sensor interface |
| * @param ptr to lower threshold |
| * @param ptr to higher threshold |
| * |
| * @return 0 on success, non-zero on failure |
| */ |
| int |
| tcs34725_get_int_limits(struct sensor_itf *itf, uint16_t *low, uint16_t *high); |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |