Chirp SonicLib  4.9.0
chirp_bsp.h
Go to the documentation of this file.
1 
179 /*
180  Copyright 2016-2023, InvenSense, Inc. All rights reserved.
181 
182  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
183  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
184  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
185  DISCLAIMED.
186 
187  */
188 
189 #ifndef __CHIRP_BSP_H_
190 #define __CHIRP_BSP_H_
191 
192 #include <stdint.h>
193 #ifdef __cplusplus
194 extern "C" {
195 #endif
196 
197 #include <invn/soniclib/soniclib.h>
198 
215 void chbsp_debug_toggle(uint8_t dbg_pin_num);
216 
233 void chbsp_debug_on(uint8_t dbg_pin_num);
234 
251 void chbsp_debug_off(uint8_t dbg_pin_num);
252 
262 
273 
289 
300 
312 
330 
342 
360 
371 
383 void chbsp_int1_clear(ch_dev_t *dev_ptr);
384 
395 
409 void chbsp_int1_set(ch_dev_t *dev_ptr);
410 
422 
434 
446 
458 
470 
488 
500 
518 
532 
546 void chbsp_int2_clear(ch_dev_t *dev_ptr);
547 
558 
572 void chbsp_int2_set(ch_dev_t *dev_ptr);
573 
585 
597 
609 
621 
634 void chbsp_delay_us(uint32_t us);
635 
647 void chbsp_pulse_len_hint_us(uint32_t us);
648 
665 void chbsp_delay_ms(uint32_t ms);
666 
678 uint32_t chbsp_timestamp_ms(void);
679 
689 uint8_t chbsp_event_wait(uint16_t time_out_ms, uint32_t event_mask);
690 
698 void chbsp_event_notify(uint32_t event_mask);
699 
705 void chbsp_event_wait_setup(uint32_t event_mask);
706 
719 int chbsp_i2c_init(void);
720 
747 uint8_t chbsp_i2c_get_info(ch_group_t *grp_ptr, uint8_t dev_num, ch_i2c_info_t *info_ptr);
748 
766 int chbsp_i2c_write(ch_dev_t *dev_ptr, const uint8_t *data, uint16_t num_bytes);
767 
768 // clang-format off
798 // clang-format on
799 int chbsp_i2c_mem_write(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes);
800 
801 // clang-format off
832 int chbsp_i2c_mem_write_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes);
833 // clang-format on
834 
852 int chbsp_i2c_read(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes);
853 
854 // clang-format off
898 // clang-format on
899 
900 int chbsp_i2c_mem_read(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes);
901 
924 int chbsp_i2c_read_nb(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes);
925 
944 int chbsp_i2c_mem_read_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes);
945 
962 
972 void chbsp_i2c_reset(ch_dev_t *dev_ptr);
973 
981 void chbsp_spi_cs_on(ch_dev_t *dev_ptr);
982 
990 void chbsp_spi_cs_off(ch_dev_t *dev_ptr);
991 
1005 int chbsp_spi_write(ch_dev_t *dev_ptr, const uint8_t *data, uint16_t num_bytes);
1006 
1020 int chbsp_spi_read(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes);
1021 
1039 int chbsp_spi_mem_read_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes);
1040 
1054 void chbsp_print_str(const char *str);
1055 
1056 #ifdef __cplusplus
1057 }
1058 #endif
1059 
1060 #endif /* __CHIRP_BSP_H_ */
void chbsp_set_int1_dir_in(ch_dev_t *dev_ptr)
Configure the Chirp sensor INT1 pin as an input for one sensor.
int chbsp_spi_mem_read_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes)
Read bytes from an SPI slave using memory addressing, non-blocking.
void chbsp_group_set_int2_dir_out(ch_group_t *grp_ptr)
Configure the Chirp sensor INT2 pin as an output for a group of sensors.
void chbsp_set_int2_dir_in(ch_dev_t *dev_ptr)
Configure the Chirp sensor INT2 pin as an input for one sensor.
uint8_t chbsp_i2c_get_info(ch_group_t *grp_ptr, uint8_t dev_num, ch_i2c_info_t *info_ptr)
Return I2C information for a sensor port on the board.
void chbsp_print_str(const char *str)
Output a text string via serial interface.
void chbsp_group_int2_clear(ch_group_t *grp_ptr)
Set the INT2 pins as inactive for a group of sensors.
void chbsp_debug_on(uint8_t dbg_pin_num)
Turn on a debug indicator pin.
void chbsp_int1_interrupt_disable(ch_dev_t *dev_ptr)
Disable the INT1 interrupt for one sensor.
void chbsp_event_notify(uint32_t event_mask)
Notify an interrupt event for the selected device.
void chbsp_external_irq_handler(chdrv_transaction_t *trans)
Interrupt handler callout for external devices sharing the SPI/I2C bus.
void chbsp_reset_release(void)
Deassert the reset pin for all sensors.
int chbsp_i2c_read_nb(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes)
Read bytes from an I2C slave, non-blocking.
void chbsp_event_wait_setup(uint32_t event_mask)
Prepare the mechanism to wait for an event.
void chbsp_int1_interrupt_enable(ch_dev_t *dev_ptr)
Enable the INT1 interrupt for one sensor.
void chbsp_int2_set(ch_dev_t *dev_ptr)
Set the INT2 pin high for one sensor.
void chbsp_delay_us(uint32_t us)
Delay for specified number of microseconds.
uint32_t chbsp_timestamp_ms(void)
Return a free-running counter value in milliseconds.
void chbsp_group_int1_interrupt_disable(ch_group_t *grp_ptr)
Disable INT1 interrupts for a group of sensors.
void chbsp_spi_cs_on(ch_dev_t *dev_ptr)
Assert the SPI chip select line for a device.
int chbsp_i2c_write(ch_dev_t *dev_ptr, const uint8_t *data, uint16_t num_bytes)
Write bytes to an I2C slave.
void chbsp_pulse_len_hint_us(uint32_t us)
Delay for approximately the specified number of microseconds. This function times the INT pulse lengt...
void chbsp_debug_toggle(uint8_t dbg_pin_num)
Toggle a debug indicator pin.
void chbsp_debug_off(uint8_t dbg_pin_num)
Turn off a debug indicator pin.
void chbsp_i2c_reset(ch_dev_t *dev_ptr)
Reset I2C bus associated with device.
int chbsp_spi_write(ch_dev_t *dev_ptr, const uint8_t *data, uint16_t num_bytes)
Write bytes to an SPI slave.
void chbsp_spi_cs_off(ch_dev_t *dev_ptr)
De-assert the SPI chip select line for a device.
void chbsp_reset_assert(void)
Assert the reset pin for all sensors.
uint8_t chbsp_event_wait(uint16_t time_out_ms, uint32_t event_mask)
Wait for any interrupt event.
void chbsp_group_set_int1_dir_out(ch_group_t *grp_ptr)
Configure the Chirp sensor INT1 pin as an output for a group of sensors.
void chbsp_int2_interrupt_enable(ch_dev_t *dev_ptr)
Enable the INT2 interrupt for one sensor.
int chbsp_i2c_read(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes)
Read bytes from an I2C slave.
void chbsp_int1_set(ch_dev_t *dev_ptr)
Set the INT1 pin high for one sensor.
void chbsp_group_int2_interrupt_enable(ch_group_t *grp_ptr)
Enable INT2 interrupts for a group of sensors.
int chbsp_i2c_mem_read(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes)
Read bytes from an I2C slave using memory addressing.
int chbsp_i2c_init(void)
Initialize the host's I2C hardware.
void chbsp_group_set_int2_dir_in(ch_group_t *grp_ptr)
Configure the Chirp sensor INT2 pins as inputs for a group of sensors.
void chbsp_program_disable(ch_dev_t *dev_ptr)
Deassert the PROG pin.
void chbsp_group_int1_set(ch_group_t *grp_ptr)
Set the INT1 pins high for a group of sensors.
void chbsp_int2_clear(ch_dev_t *dev_ptr)
Set the INT2 pin as inactive for one sensor.
void chbsp_group_int1_clear(ch_group_t *grp_ptr)
Set the INT1 pins low for a group of sensors.
void chbsp_set_int2_dir_out(ch_dev_t *dev_ptr)
Configure the Chirp sensor INT2 pin as an output for one sensor.
void chbsp_delay_ms(uint32_t ms)
Delay for specified number of milliseconds.
void chbsp_int2_interrupt_disable(ch_dev_t *dev_ptr)
Disable the INT2 interrupt for one sensor.
void chbsp_group_int1_interrupt_enable(ch_group_t *grp_ptr)
Enable INT1 interrupts for a group of sensors.
void chbsp_program_enable(ch_dev_t *dev_ptr)
Assert the PROG pin.
int chbsp_spi_read(ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes)
Read bytes from an SPI slave.
void chbsp_group_set_int1_dir_in(ch_group_t *grp_ptr)
Configure the Chirp sensor INT1 pins as inputs for a group of sensors.
int chbsp_i2c_mem_write_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes)
Write bytes to an I2C slave using memory addressing, non-blocking.
void chbsp_int1_clear(ch_dev_t *dev_ptr)
Set the INT1 pin low for one sensor.
int chbsp_i2c_mem_read_nb(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes)
Read bytes from an I2C slave using memory addressing, non-blocking.
void chbsp_group_int2_set(ch_group_t *grp_ptr)
Set the INT2 pins high for a group of sensors.
void chbsp_group_int2_interrupt_disable(ch_group_t *grp_ptr)
Disable INT2 interrupts for a group of sensors.
void chbsp_set_int1_dir_out(ch_dev_t *dev_ptr)
Configure the Chirp sensor INT1 pin as an output for one sensor.
int chbsp_i2c_mem_write(ch_dev_t *dev_ptr, uint16_t mem_addr, uint8_t *data, uint16_t num_bytes)
Write bytes to an I2C slave using memory addressing.
SonicLib public API and support functions for TDK/InvenSense ultrasonic sensors (originally developed...
Chirp sensor device descriptor structure.
Definition: soniclib.h:739
Chirp sensor group descriptor structure.
Definition: soniclib.h:711
I2C info structure.
Definition: soniclib.h:420
Transaction control structure.
Definition: ch_driver.h:105