42#ifdef PREINIT_SUPPORTED
46#ifdef MikroCCoreVersion
47 #if MikroCCoreVersion >= 1
52#include "drv_digital_out.h"
53#include "drv_digital_in.h"
54#include "drv_i2c_master.h"
66#define SMOKE_MAP_MIKROBUS( cfg, mikrobus ) \
67 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
68 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
69 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
76#define SMOKE_RETVAL uint8_t
79#define SMOKE_INIT_ERROR 0xFF
80#define SMOKE_PARAMETER_ERROR 0xFE
87#define SMOKE_I2C_ADDRESS 0x57
99#define SMOKE_INT_STAT1 0x00
100#define SMOKE_INT_STAT2 0x01
101#define SMOKE_INT_ENABLE1 0x02
102#define SMOKE_INT_ENABLE2 0x03
109#define SMOKE_INT_FLAG_GET_MAIN 1
110#define SMOKE_INT_FLAG_GET_TEMP_DATA 2
112#define SMOKE_INT_FLAG_SET_AFULL 0
113#define SMOKE_INT_FLAG_SET_DATA_RDY 1
114#define SMOKE_INT_FLAG_SET_ALS_OVF 2
115#define SMOKE_INT_FLAG_SET_PROXY_THRESH 3
116#define SMOKE_INT_FLAG_SET_TEMP 4
118#define SMOKE_INT_FLAG_SET_ENABLE 1
119#define SMOKE_INT_FLAG_SET_DISABLE 0
126#define SMOKE_FIFO_WRITE_PTR 0x04
127#define SMOKE_FIFO_OVERFLOW 0x05
128#define SMOKE_FIFO_READ_PTR 0x06
129#define SMOKE_FIFO_DATA 0x07
130#define SMOKE_BUFFER_LENGTH 32
137#define SMOKE_REG_FIFO_CONFIG 0x08
138#define SMOKE_REG_MODE_CONFIG 0x09
139#define SMOKE_REG_PARTICLE_CONFIG 0x0A
140#define SMOKE_REG_LED_RED_PULSE_AMP 0x0C
141#define SMOKE_REG_LED_IR_PULSE_AMP 0x0D
142#define SMOKE_REG_LED_GREEN_PULSE_AMP 0x0E
143#define SMOKE_REG_LED_PROX_AMP 0x10
144#define SMOKE_REG_LED_PROX_THRESH 0x30
145#define SMOKE_REG_MULTI_LED_CONFIG1 0x11
146#define SMOKE_REG_MULTI_LED_CONFIG2 0x12
147#define SMOKE_REG_MIN_POWER_LEVEL 0x01
148#define SMOKE_REG_AVG_POWER_LEVEL 0x1F
149#define SMOKE_REG_MAX_POWER_LEVEL 0xFF
156#define SMOKE_DIE_TEMP_INT 0x1F
157#define SMOKE_DIE_TEMP_FRAC 0x20
158#define SMOKE_DIE_TEMP_CONFIG 0x21
165#define SMOKE_PROX_INT_THRESH 0x30
172#define SMOKE_REVISION_ID 0xFE
173#define SMOKE_PART_ID 0xFF
187#define SMOKE_INT_A_FULL_MASK (uint8_t)~0b10000000
188#define SMOKE_INT_A_FULL_ENABLE 0x80
189#define SMOKE_INT_A_FULL_DISABLE 0x00
190#define SMOKE_INT_DATA_RDY_MASK (uint8_t)~0b01000000
191#define SMOKE_INT_DATA_RDY_ENABLE 0x40
192#define SMOKE_INT_DATA_RDY_DISABLE 0x00
193#define SMOKE_INT_ALC_OVF_MASK (uint8_t)~0b00100000
194#define SMOKE_INT_ALC_OVF_ENABLE 0x20
195#define SMOKE_INT_ALC_OVF_DISABLE 0x00
196#define SMOKE_INT_PROX_INT_MASK (uint8_t)~0b00010000
197#define SMOKE_INT_PROX_INT_ENABLE 0x10
198#define SMOKE_INT_PROX_INT_DISABLE 0x00
199#define SMOKE_INT_DIE_TEMP_RDY_MASK (uint8_t)~0b00000010
200#define SMOKE_INT_DIE_TEMP_RDY_ENABLE 0x02
201#define SMOKE_INT_DIE_TEMP_RDY_DISABLE 0x00
208#define SMOKE_SAMPLEAVG_MASK (uint8_t)~0b11100000
209#define SMOKE_SAMPLEAVG_1 0x00
210#define SMOKE_SAMPLEAVG_2 0x20
211#define SMOKE_SAMPLEAVG_4 0x40
212#define SMOKE_SAMPLEAVG_8 0x60
213#define SMOKE_SAMPLEAVG_16 0x80
214#define SMOKE_SAMPLEAVG_32 0xA0
215#define SMOKE_ROLLOVER_MASK 0xEF
216#define SMOKE_ROLLOVER_ENABLE 0x10
217#define SMOKE_ROLLOVER_DISABLE 0x00
218#define SMOKE_A_FULL_MASK 0xF0
225#define SMOKE_SHUTDOWN_MASK 0x7F
226#define SMOKE_SHUTDOWN 0x80
227#define SMOKE_WAKEUP 0x00
228#define SMOKE_RESET_MASK 0xBF
229#define SMOKE_RESET 0x40
230#define SMOKE_MODE_MASK 0xF8
231#define SMOKE_MODE_REDONLY 0x02
232#define SMOKE_MODE_REDIRONLY 0x03
233#define SMOKE_MODE_MULTILED 0x07
240#define SMOKE_ADCRANGE_MASK 0x9F
241#define SMOKE_ADCRANGE_2048 0x00
242#define SMOKE_ADCRANGE_4096 0x20
243#define SMOKE_ADCRANGE_8192 0x40
244#define SMOKE_ADCRANGE_16384 0x60
245#define SMOKE_SAMPLERATE_MASK 0xE3
246#define SMOKE_SAMPLERATE_50 0x00
247#define SMOKE_SAMPLERATE_100 0x04
248#define SMOKE_SAMPLERATE_200 0x08
249#define SMOKE_SAMPLERATE_400 0x0C
250#define SMOKE_SAMPLERATE_800 0x10
251#define SMOKE_SAMPLERATE_1000 0x14
252#define SMOKE_SAMPLERATE_1600 0x18
253#define SMOKE_SAMPLERATE_3200 0x1C
254#define SMOKE_PULSEWIDTH_MASK 0xFC
255#define SMOKE_PULSEWIDTH_69 0x00
256#define SMOKE_PULSEWIDTH_118 0x01
257#define SMOKE_PULSEWIDTH_215 0x02
258#define SMOKE_PULSEWIDTH_411 0x03
265#define SMOKE_SLOT1_MASK 0xF8
266#define SMOKE_SLOT2_MASK 0x8F
267#define SMOKE_SLOT3_MASK 0xF8
268#define SMOKE_SLOT4_MASK 0x8F
270#define SMOKE_SLOT_NONE 0x00
271#define SMOKE_SLOT_RED_LED 0x01
272#define SMOKE_SLOT_IR_LED 0x02
273#define SMOKE_SLOT_GREEN_LED 0x03
275#define SMOKE_SLOT_NONE_PILOT 0x04
276#define SMOKE_SLOT_RED_PILOT 0x05
277#define SMOKE_SLOT_IR_PILOT 0x06
278#define SMOKE_SLOT_GREEN_PILOT 0x07
#define SMOKE_RETVAL
Definition smoke.h:76
void smoke_reset(smoke_t *ctx)
Reset device function.
uint8_t smoke_read_device_id(smoke_t *ctx)
Read device ID function.
void smoke_write_data(smoke_t *ctx, uint8_t wr_addr, uint8_t wr_data)
Generic write function.
uint8_t smoke_get_intrrupt(smoke_t *ctx, uint8_t flag)
Get desired interrupt function.
uint8_t smoke_get_write_ptr(smoke_t *ctx)
Read the FIFO Write Pointer function.
uint8_t smoke_read_data(smoke_t *ctx, uint8_t rd_addr)
Generic read function.
void smoke_disable_slots(smoke_t *ctx)
Disable slots in MultiLED mode function.
uint8_t smoke_set_led_mode(smoke_t *ctx, uint8_t mode)
Enable leds.
uint8_t smoke_set_sample_rate(smoke_t *ctx, uint8_t sample_rate)
Set sample rate.
uint8_t smoke_set_rollover_state(smoke_t *ctx, uint8_t state)
Set rollover state.
uint8_t smoke_set_pulse_width(smoke_t *ctx, uint8_t pulse_width)
Set pulse width.
uint8_t smoke_set_registers(smoke_t *ctx, smoke_set_registers_t *registers)
Set registers values function.
uint8_t smoke_enable_disable_interrupts(smoke_t *ctx, uint8_t interrupt_flag, uint8_t enable_flag)
Enable or disable interrupt function.
void smoke_default_cfg(smoke_t *ctx)
Click Default Configuration function.
uint8_t smoke_enable_slot(smoke_t *ctx, uint8_t slot_num, uint8_t dev)
Define slots in MultiLED mode function.
uint8_t smoke_set_sample_avarage(smoke_t *ctx, uint8_t samples)
Set avarage samples.
uint8_t smoke_set_almost_full_trigger(smoke_t *ctx, uint8_t trigger_range)
Set almost full trigger.
void smoke_generic_read(smoke_t *ctx, uint8_t rd_addr, uint8_t *buffer, uint8_t cnt)
Generic read function.
float smoke_read_temp(smoke_t *ctx)
Read temperature in Centigrade function.
uint8_t smoke_set_proximity_amplitude_threshold(smoke_t *ctx, uint8_t threshold)
Set proximity threshold.
uint8_t smoke_read_leds(smoke_t *ctx)
Function for reading enabled leds.
uint8_t smoke_check_int(smoke_t *ctx)
Get Interrupt state function.
uint8_t smoke_set_power(smoke_t *ctx, uint8_t state)
I2C power setter.
uint8_t smoke_get_read_ptr(smoke_t *ctx)
Read the FIFO Read Pointer function.
uint8_t smoke_set_led_amplitude(smoke_t *ctx, uint8_t led, uint8_t amplitude)
Set led amplitude.
uint8_t smoke_set_adc_range(smoke_t *ctx, uint8_t adc_range)
Set ADC range.
void smoke_cfg_setup(smoke_cfg_t *cfg)
Config Object Initialization function.
void smoke_set_new_value(smoke_t *ctx, smoke_set_new_value_t *new_value_data)
Set new value function.
void smoke_clear_fifo(smoke_t *ctx)
Clearing FIFO pointers function.
SMOKE_RETVAL smoke_init(smoke_t *ctx, smoke_cfg_t *cfg)
Initialization function.
Click configuration structure definition.
Definition smoke.h:316
uint32_t i2c_speed
Definition smoke.h:328
pin_name_t scl
Definition smoke.h:319
pin_name_t int_pin
Definition smoke.h:324
pin_name_t sda
Definition smoke.h:320
uint8_t i2c_address
Definition smoke.h:329
New value object definition.
Definition smoke.h:351
uint8_t value
Definition smoke.h:354
uint8_t mask
Definition smoke.h:353
uint8_t reg_addr
Definition smoke.h:352
Click registers object definition.
Definition smoke.h:337
uint8_t mode
Definition smoke.h:339
uint8_t led_pow_lvl
Definition smoke.h:343
uint8_t avg_samp
Definition smoke.h:338
uint8_t adc_range
Definition smoke.h:340
uint8_t samp_rate
Definition smoke.h:341
uint8_t pulse_width
Definition smoke.h:342
Click ctx object definition.
Definition smoke.h:292
uint32_t ir_value
Definition smoke.h:307
digital_in_t int_pin
Definition smoke.h:295
i2c_master_t i2c
Definition smoke.h:299
uint8_t slave_address
Definition smoke.h:303
uint32_t red_value
Definition smoke.h:306
uint8_t num_en_led
Definition smoke.h:305
uint32_t green_value
Definition smoke.h:308