ESPHome 2025.5.0
Loading...
Searching...
No Matches
ltr_definitions_501.h
Go to the documentation of this file.
1#pragma once
3#include <cstdint>
5namespace esphome {
6namespace ltr501 {
7
8enum class CommandRegisters : uint8_t {
9 ALS_CONTR = 0x80, // ALS operation mode control and SW reset
10 PS_CONTR = 0x81, // PS operation mode control
11 PS_LED = 0x82, // PS LED pulse frequency control
12 PS_N_PULSES = 0x83, // PS number of pulses control
13 PS_MEAS_RATE = 0x84, // PS measurement rate in active mode
14 MEAS_RATE = 0x85, // ALS measurement rate in active mode
15 PART_ID = 0x86, // Part Number ID and Revision ID
16 MANUFAC_ID = 0x87, // Manufacturer ID
17 ALS_DATA_CH1_0 = 0x88, // ALS measurement CH1 data, lower byte - infrared only
18 ALS_DATA_CH1_1 = 0x89, // ALS measurement CH1 data, upper byte - infrared only
19 ALS_DATA_CH0_0 = 0x8A, // ALS measurement CH0 data, lower byte - visible + infrared
20 ALS_DATA_CH0_1 = 0x8B, // ALS measurement CH0 data, upper byte - visible + infrared
21 ALS_PS_STATUS = 0x8C, // ALS PS new data status
22 PS_DATA_0 = 0x8D, // PS measurement data, lower byte
23 PS_DATA_1 = 0x8E, // PS measurement data, upper byte
24 ALS_PS_INTERRUPT = 0x8F, // Interrupt status
25 PS_THRES_UP_0 = 0x90, // PS interrupt upper threshold, lower byte
26 PS_THRES_UP_1 = 0x91, // PS interrupt upper threshold, upper byte
27 PS_THRES_LOW_0 = 0x92, // PS interrupt lower threshold, lower byte
28 PS_THRES_LOW_1 = 0x93, // PS interrupt lower threshold, upper byte
29 PS_OFFSET_1 = 0x94, // PS offset, upper byte
30 PS_OFFSET_0 = 0x95, // PS offset, lower byte
31 // 0x96 - reserved
32 ALS_THRES_UP_0 = 0x97, // ALS interrupt upper threshold, lower byte
33 ALS_THRES_UP_1 = 0x98, // ALS interrupt upper threshold, upper byte
34 ALS_THRES_LOW_0 = 0x99, // ALS interrupt lower threshold, lower byte
35 ALS_THRES_LOW_1 = 0x9A, // ALS interrupt lower threshold, upper byte
36 // 0x9B - reserved
37 // 0x9C - reserved
38 // 0x9D - reserved
39 INTERRUPT_PERSIST = 0x9E // Interrupt persistence filter
40};
41
42// ALS Sensor gain levels
43enum AlsGain501 : uint8_t {
44 GAIN_1 = 0, // GAIN_RANGE_2 // default
45 GAIN_150 = 1, // GAIN_RANGE_1
46};
47static const uint8_t GAINS_COUNT = 2;
48
49// ALS Sensor integration times
50enum IntegrationTime501 : uint8_t {
51 INTEGRATION_TIME_100MS = 0, // default
52 INTEGRATION_TIME_50MS = 1, // only in Dynamic GAIN_RANGE_2
53 INTEGRATION_TIME_200MS = 2, // only in Dynamic GAIN_RANGE_1
54 INTEGRATION_TIME_400MS = 3, // only in Dynamic GAIN_RANGE_1
55};
56static const uint8_t TIMES_COUNT = 4;
57
58// ALS Sensor measurement repeat rate
67
68// PS Sensor gain levels
69enum PsGain501 : uint8_t {
70 PS_GAIN_1 = 0, // default
74};
75
76// LED Pulse Modulation Frequency
87
88// LED current duty
89enum PsLedDuty : uint8_t {
91 PS_LED_DUTY_50 = 1, // default
94};
95
96// LED pulsed current level
107
108// PS measurement rate
119
120//
121// ALS_CONTR Register (0x80)
122//
124 uint8_t raw;
125 struct {
126 bool asl_mode_xxx : 1;
128 bool sw_reset : 1;
130 uint8_t reserved : 4;
131 } __attribute__((packed));
132};
133
134//
135// PS_CONTR Register (0x81)
136//
138 uint8_t raw;
139 struct {
140 bool ps_mode_xxx : 1;
143 bool reserved_4 : 1;
144 bool reserved_5 : 1;
145 bool reserved_6 : 1;
146 bool reserved_7 : 1;
147 } __attribute__((packed));
148};
149
150//
151// PS_LED Register (0x82)
152//
160};
161
162//
163// PS_N_PULSES Register (0x83)
164//
166 uint8_t raw;
168};
169
170//
171// PS_MEAS_RATE Register (0x84)
172//
174 uint8_t raw;
175 struct {
177 uint8_t reserved : 4;
178 } __attribute__((packed));
179};
180
181//
182// ALS_MEAS_RATE Register (0x85)
183//
194
195//
196// PART_ID Register (0x86) (Read Only)
197//
199 uint8_t raw;
200 struct {
201 uint8_t part_number_id : 4;
202 uint8_t revision_id : 4;
203 } __attribute__((packed));
204};
205
206//
207// ALS_PS_STATUS Register (0x8C) (Read Only)
208//
210 uint8_t raw;
211 struct {
212 bool ps_new_data : 1; // 0 - old data, 1 - new data
213 bool ps_interrupt : 1; // 0 - interrupt signal not active, 1 - interrupt signal active
214 bool als_new_data : 1; // 0 - old data, 1 - new data
215 bool als_interrupt : 1; // 0 - interrupt signal not active, 1 - interrupt signal active
216 AlsGain501 gain : 1; // current ALS gain
217 bool reserved_5 : 1;
218 bool reserved_6 : 1;
219 bool reserved_7 : 1;
220 } __attribute__((packed));
221};
222
223//
224// PS_DATA_1 Register (0x8E) (Read Only)
225//
227 uint8_t raw;
228 struct {
229 uint8_t ps_data_high : 3;
230 uint8_t reserved : 4;
232 } __attribute__((packed));
233};
234
235//
236// INTERRUPT Register (0x8F) (Read Only)
237//
239 uint8_t raw;
240 struct {
241 bool ps_interrupt : 1;
243 bool interrupt_polarity : 1; // 0 - active low (default), 1 - active high
244 uint8_t reserved : 5;
245 } __attribute__((packed));
246};
247
248//
249// INTERRUPT_PERSIST Register (0x9E)
250//
252 uint8_t raw;
253 struct {
254 uint8_t als_persist : 4; // 0 - every ALS cycle, 1 - every 2 ALS cycles, ... 15 - every 16 ALS cycles
255 uint8_t ps_persist : 4; // 0 - every PS cycle, 1 - every 2 PS cycles, ... 15 - every 16 PS cycles
256 } __attribute__((packed));
257};
258
259} // namespace ltr501
260} // namespace esphome
struct @67::@68 __attribute__
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7