/*
 * File:   LightSensor.h
 * Author: cterndru
 *
 * Created on February 3, 2015, 2:52 PM
 */

#ifndef LIGHTSENSOR_H
#define	LIGHTSENSOR_H

#include "I2C2.h"

// I2C REGISTERS
#define PART_ID 0x00
#define REV_ID 0x01
#define SEQ_ID 0x02
#define INT_CFG 0x03
#define IRQ_ENABLE 0x04
#define HW_KEY 0x07
#define MEAS_RATE0 0x08
#define MEAS_RATE1 0x09
#define PS_RATE 0x0A
#define PS_LED21 0x0F
#define PS_LED3 0x10
#define UCOEF0 0x13
#define UCOEF1 0x14
#define UCOEF2 0x15
#define UCOEF3 0x16
#define PARAM_WR 0x17
#define COMMAND 0x18
#define RESPONSE 0x20
#define IRQ_STATUS 0x21
#define ALS_VIS_DATA0 0x22
#define ALS_VIS_DATA1 0x23
#define ALS_IR_DATA0 0x24
#define ALS_IR_DATA1 0x25
#define PS1_DATA0 0x26
#define PS1_DATA1 0x27
#define PS2_DATA0 0x28
#define PS2_DATA1 0x29
#define PS3_DATA0 0x2A
//#define PS3_DATA1 0x2B
#define UVINDEX0 0x2C
#define UVINDEX1 0x2D
#define PARAM_RD 0x2E
#define CHIP_STAT 0x30
#define ANA_IN_KEY 0x3B // 0x3B-0x3E

// COMMAND CODES
#define NOP 0x00
#define RESET 0x01
#define BUSADDR 0x02
#define PS_FORCE 0x05
#define GET_CAL 0x12
#define ALS_FORCE 0x06
#define PSALS_FORCE 0x07
#define PS_PAUSE 0x09
#define ALS_PAUSE 0x0A
#define PSALS_PAUSE 0x0B
#define PS_AUTO 0x0D
#define ALS_AUTO 0x0E
#define PSALS_AUTO 0x0F

// RESPONSE CODES
#define INVALID_SETTING 0x80
#define PS1_ADC_OVERFLOW 0x88
#define PS2_ADC_OVERFLOW 0x89
#define PS3_ADC_OVERFLOW 0x8A
#define ALS_VIS_ADC_OVERFLOW 0x8C
#define ALS_IR_ADC_OVERFLOW 0x8D
#define AUX_ADC_OVERFLOW 0x8E

// WRITE AND READ
#define WRITE_LS 0xC0
#define READ_LS 0xC1

void i2c_write_LS(char,char);
unsigned char i2c_read_LS(char);
void LS_init();
unsigned int LS_measure(void);

#endif	/* LIGHTSENSOR_H */

