Chirp SonicLib  2.1.0
ch201_presence.h
Go to the documentation of this file.
1 
13 /*
14  * Copyright © 2016-2020, Chirp Microsystems. All rights reserved.
15  *
16  * Chirp Microsystems CONFIDENTIAL
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL CHIRP MICROSYSTEMS BE LIABLE FOR ANY
22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  *
29  * You can contact the authors of this program by email at support@chirpmicro.com
30  * or by mail at 2560 Ninth Street, Suite 220, Berkeley, CA 94710.
31  */
32 
33 #ifndef CH201_PRESENCE_H_
34 #define CH201_PRESENCE_H_
35 
36 #include <stdint.h>
37 #include "ch201.h"
38 #include "soniclib.h"
39 
40 /* Presence detection firmware registers */
41 #define CH201_PRESENCE_REG_OPMODE (0x01)
42 #define CH201_PRESENCE_REG_TICK_INTERVAL (0x02)
43 #define CH201_PRESENCE_REG_PERIOD (0x05)
44 #define CH201_PRESENCE_REG_CAL_TRIG (0x06)
45 #define CH201_PRESENCE_REG_MAX_RANGE (0x07)
46 #define CH201_PRESENCE_REG_THRESH_LEN_0 (0x08)
47 #define CH201_PRESENCE_REG_THRESH_LEN_1 (0x09)
48 #define CH201_PRESENCE_REG_CAL_RESULT (0x0A)
49 #define CH201_PRESENCE_REG_THRESH_LEN_2 (0x0C)
50 #define CH201_PRESENCE_REG_THRESH_LEN_3 (0x0D)
51 #define CH201_PRESENCE_PMUTRINGLENGTH (0x12)
52 #define CH201_PRESENCE_DECIMATION (0x13)
53 #define CH201_PRESENCE_REG_READY (0x14)
54 #define CH201_PRESENCE_REG_THRESH_LEN_4 (0x15)
55 #define CH201_PRESENCE_REG_THRESHOLDS (0x16) // start of array of six 2-byte threshold levels
56 #define CH201_PRESENCE_REG_TOF_SF (0x22)
57 #define CH201_PRESENCE_REG_TOF (0x24)
58 #define CH201_PRESENCE_REG_AMPLITUDE (0x26)
59 #define CH201_PRESENCE_REG_DATA (0x28)
60 
61 #define CH201_PRESENCE_MAX_SAMPLES (300) // max number of samples
62 #define CH201_PRESENCE_NUM_THRESHOLDS (6) // total number of thresholds
63 
64 // Enumerated values for various registers
65 #define CH201_PRESENCE_DECIMATION_MASK (0x03)
66 #define CH201_PRESENCE_DECIMATION_NO (0x00)
67 #define CH201_PRESENCE_DECIMATION_2 (0x01)
68 #define CH201_PRESENCE_DECIMATION_3 (0x02)
69 #define CH201_PRESENCE_DECIMATION_4 (0x03)
70 
71 #define CH201_PRESENCE_CORDIC_MASK (0x80)
72 #define CH201_PRESENCE_CORDIC_EN (0x80)
73 #define CH201_PRESENCE_CORDIC_DIS (0x00)
74 
75 #define CH201_PRESENCE_READY_FREQ_LOCKED (0x04)
76 #define CH201_PRESENCE_FREQCOUNTERCYCLES (1150)
77 
78 extern const char *ch201_presence_version; // version string in fw .c file
79 extern const uint8_t ch201_presence_fw[CH201_FW_SIZE];
80 
81 uint16_t get_ch201_presence_fw_ram_init_addr(void);
82 uint16_t get_ch201_presence_fw_ram_init_size(void);
83 
84 const unsigned char * get_ram_ch201_presence_init_ptr(void);
85 
86 uint8_t ch201_presence_init(ch_dev_t *dev_ptr, ch_group_t *grp_ptr, uint8_t i2c_addr, uint8_t dev_num, uint8_t i2c_bus_index);
87 uint8_t ch201_presence_set_decimation(ch_dev_t *dev_ptr, uint8_t decimation);
88 uint8_t ch201_presence_enable_cordic(ch_dev_t *dev_ptr, uint8_t enable);
89 
90 #endif
Chirp SonicLib public API and support functions for Chirp ultrasonic sensors.
Chirp sensor device structure.
Definition: soniclib.h:349
Chirp sensor group configuration structure.
Definition: soniclib.h:329
Internal definitions for the Chirp CH201 ultrasonic sensor.