Chirp SonicLib
2.1.0
|
User-supplied board support package functions to interface Chirp SonicLib to a specific hardware platform. More...
#include "soniclib.h"
Go to the source code of this file.
Functions | |
void | chbsp_board_init (ch_group_t *grp_ptr) |
Main hardware initialization. More... | |
void | chbsp_debug_toggle (uint8_t dbg_pin_num) |
Toggle a debug indicator pin. More... | |
void | chbsp_debug_on (uint8_t dbg_pin_num) |
Turn on a debug indicator pin. More... | |
void | chbsp_debug_off (uint8_t dbg_pin_num) |
Turn off a debug indicator pin. More... | |
void | chbsp_reset_assert (void) |
Assert the reset pin for all sensors. More... | |
void | chbsp_reset_release (void) |
Deassert the reset pin for all sensors. More... | |
void | chbsp_program_enable (ch_dev_t *dev_ptr) |
Assert the PROG pin. More... | |
void | chbsp_program_disable (ch_dev_t *dev_ptr) |
Deassert the PROG pin. More... | |
void | chbsp_group_set_io_dir_out (ch_group_t *grp_ptr) |
Configure the Chirp sensor INT pin as an output for a group of sensors. More... | |
void | chbsp_set_io_dir_out (ch_dev_t *dev_ptr) |
Configure the Chirp sensor INT pin as an output for one sensor. More... | |
void | chbsp_group_set_io_dir_in (ch_group_t *grp_ptr) |
Configure the Chirp sensor INT pins as inputs for a group of sensors. More... | |
void | chbsp_set_io_dir_in (ch_dev_t *dev_ptr) |
Configure the Chirp sensor INT pin as an input for one sensor. More... | |
void | chbsp_group_pin_init (ch_group_t *grp_ptr) |
Initialize the set of I/O pins for a group of sensors. More... | |
void | chbsp_group_io_clear (ch_group_t *grp_ptr) |
Set the INT pins low for a group of sensors. More... | |
void | chbsp_io_clear (ch_dev_t *dev_ptr) |
Set the INT pin low for one sensor. More... | |
void | chbsp_group_io_set (ch_group_t *grp_ptr) |
Set the INT pins high for a group of sensors. More... | |
void | chbsp_io_set (ch_dev_t *dev_ptr) |
Set the INT pin high for one sensor. More... | |
void | chbsp_group_io_interrupt_enable (ch_group_t *grp_ptr) |
Enable interrupts for a group of sensors. More... | |
void | chbsp_io_interrupt_enable (ch_dev_t *dev_ptr) |
Enable the interrupt for one sensor. More... | |
void | chbsp_group_io_interrupt_disable (ch_group_t *grp_ptr) |
Disable interrupts for a group of sensors. More... | |
void | chbsp_io_interrupt_disable (ch_dev_t *dev_ptr) |
Disable the interrupt for one sensor. More... | |
void | chbsp_io_callback_set (ch_io_int_callback_t callback_func_ptr) |
Set callback routine for Chirp sensor I/O interrupt. More... | |
void | chbsp_delay_us (uint32_t us) |
Delay for specified number of microseconds. More... | |
void | chbsp_delay_ms (uint32_t ms) |
Delay for specified number of milliseconds. More... | |
uint32_t | chbsp_timestamp_ms (void) |
Return a free-running counter value in milliseconds. More... | |
int | chbsp_i2c_init (void) |
Initialize the host's I2C hardware. More... | |
int | chbsp_i2c_deinit (void) |
De-initialize the host's I2C hardware. More... | |
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. More... | |
int | chbsp_i2c_write (ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes) |
Write bytes to an I2C slave. More... | |
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. More... | |
int | chbsp_i2c_write_nb (ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes) |
Write bytes to an I2C slave, non-blocking. More... | |
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. More... | |
int | chbsp_i2c_read (ch_dev_t *dev_ptr, uint8_t *data, uint16_t num_bytes) |
Read bytes from an I2C slave. More... | |
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. More... | |
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. More... | |
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. More... | |
void | chbsp_external_i2c_irq_handler (chdrv_i2c_transaction_t *trans) |
Interrupt handler callout for external devices sharing the I2C bus. More... | |
void | chbsp_i2c_reset (ch_dev_t *dev_ptr) |
Reset I2C bus associated with device. More... | |
uint8_t | chbsp_periodic_timer_init (uint16_t interval_ms, ch_timer_callback_t callback_func_ptr) |
Initialize periodic timer. More... | |
void | chbsp_periodic_timer_irq_enable (void) |
Enable periodic timer interrupt. More... | |
void | chbsp_periodic_timer_irq_disable (void) |
Disable periodic timer interrupt. More... | |
uint8_t | chbsp_periodic_timer_start (void) |
Start periodic timer. More... | |
uint8_t | chbsp_periodic_timer_stop (void) |
Stop periodic timer. More... | |
void | chbsp_periodic_timer_handler (void) |
Periodic timer handler. More... | |
void | chbsp_proc_sleep (void) |
Put the processor into low-power sleep state. More... | |
void | chbsp_led_on (uint8_t dev_num) |
Turn on an LED on the board. More... | |
void | chbsp_led_off (uint8_t dev_num) |
Turn off an LED on the board. More... | |
void | chbsp_led_toggle (uint8_t dev_num) |
Toggle an LED on the board. More... | |
void | chbsp_print_str (char *str) |
Output a text string via serial interface. More... | |
User-supplied board support package functions to interface Chirp SonicLib to a specific hardware platform.
This file defines the I/O interfaces that allow the standard Chirp SonicLib sensor driver functions to manage one or more sensors on a specific hardware platform. These include functions to initialize and control the various I/O pins connecting the sensor to the host system, the I2C communications interface, timer functions, etc.
The board support package developer should not need to modify this file. However, that developer is responsible for implementing these support functions for the desired platform. Note that some functions are optional, depending on the specific runtime requirements (e.g. is non-blocking I/O required?) or development needs (e.g. is debugging support needed?).
The file organization for a BSP is intentionally very flexible, so that you may efficiently use existing code that supports your hardware or otherwise use your own organizing preferences.
By convention, the functions that implement the BSP interfaces defined in chirp_bsp.h are placed in a source file called chbsp_VVV_BBB.c, where "VVV" is the board vendor name, and "BBB" is the board name. For example, the BSP for a Chirp SmartSonic board has a main file called chbsp_chirp_smartsonic.c.
The board support package must supply a header file called chirp_board_config.h containing definitions of two symbols used in the SonicLib driver functions.
The following symbols must be defined in chirp_board_config.h:
The chirp_board_config.h file must be in the C pre-processor include path when you build your application with SonicLib.
In some cases, the BSP is required to call a function to notify SonicLib or the application that an event has occurred:
Most of the required functions take a pointer to a ch_dev_t device descriptor structure as a handle to identify the sensor being controlled. The ch_dev_t structure contains various fields with configuration and operating state information for the device. In general, these data field values may be obtained using various ch_get_XXX() functions provided by the SonicLib API, so it should not be necessary to access fields directly.
Some functions take a pointer to a ch_group_t (sensor group descriptor) structure as a parameter but must operate on individual sensors. These functions can be implemented using the ch_get_dev_ptr() function to access the ch_dev_t structure describing each individual sensor in the group, based on its device number (I/O index value). The total number of possible sensor devices in a group may be obtained by using the ch_get_num_ports() function.
Similarly, each sensor's ch_dev_t structure contains a dev_num field that may be used to manage the pin assignments for the various sensors, by using it as an index into individual arrays which list the pins assigned to the PROG, INT, and RESET_N lines. The dev_num value for a sensor may be obtained using the ch_get_dev_num() function.
Often, an action should only be taken on a sensor port if a sensor is present and has been successfully initialized and connected. The ch_sensor_is_connected() function can be used to obtain the connection status.
These functions are often used together to implement a board support routine, as in the following pseudo-code which shows how to perform an action on all connected devices in a group. This snippet assumes that a sensor group pointer (ch_group_t *) called grp_ptr is an input parameter to the function:
ch_dev_t *dev_ptr; uint8_t dev_num; for (dev_num = 0; dev_num < ch_get_num_ports(grp_ptr); dev_num++ { dev_ptr = ch_get_dev_ptr(grp_ptr, dev_num); if (ch_sensor_is_connected(dev_ptr)) { DO WHAT NEEDS DOING FOR THIS CONNECTED DEVICE } }
The dev_num value for each device is specified by the user application as a parameter to ch_init().
void chbsp_board_init | ( | ch_group_t * | grp_ptr | ) |
Main hardware initialization.
This function executes the required hardware initialization sequence for the board being used. This includes clock, memory, and processor setup as well as any special handling that is needed. This function is called at the beginning of an application, as the first operation.
Along with the actual hardware initialization, this function must also initialize the following fields within the ch_group_t sensor group descriptor:
Often, during initialization the BSP needs to determine which sensor ports (possible connections) actually have a sensor attached. Here is a short sequence you can use to confirm if a Chirp sensor is alive and communicating by reading two signature byte values from the device using I2C. This sequence applies to both CH101 and CH201 devices.
A couple key points:
So, the overall sequence should be:
This function is REQUIRED.
void chbsp_debug_off | ( | uint8_t | dbg_pin_num | ) |
Turn off a debug indicator pin.
dbg_pin_num | index value for debug pin to turn off |
This function should drive the the specified debug indicator pin low. The dbg_pin_num parameter is an index value that specifies which debug pin should be controlled.
This function is OPTIONAL.
void chbsp_debug_on | ( | uint8_t | dbg_pin_num | ) |
Turn on a debug indicator pin.
dbg_pin_num | index value for debug pin to turn on |
This function should drive the specified debug indicator pin high. The dbg_pin_num parameter is an index value that specifies which debug pin should be controlled.
This function is OPTIONAL.
void chbsp_debug_toggle | ( | uint8_t | dbg_pin_num | ) |
Toggle a debug indicator pin.
dbg_pin_num | index value for debug pin to toggle |
This function should change the state (high/low) of the specified debug indicator pin. The dbg_pin_num parameter is an index value that specifies which debug pin should be controlled.
This function is OPTIONAL.
void chbsp_delay_ms | ( | uint32_t | ms | ) |
Delay for specified number of milliseconds.
ms | number of milliseconds to delay before returning |
This function should wait for the specified number of milliseconds before returning to the caller.
This function is REQUIRED.
void chbsp_delay_us | ( | uint32_t | us | ) |
Delay for specified number of microseconds.
us | number of microseconds to delay before returning |
This function should wait for the specified number of microseconds before returning to the caller.
This function is REQUIRED.
void chbsp_external_i2c_irq_handler | ( | chdrv_i2c_transaction_t * | trans | ) |
Interrupt handler callout for external devices sharing the I2C bus.
trans | pointer to Chirp sensor I2C transaction control structure |
This function is called when a non-blocking I2C operation completes on an "external" (non Chirp sensor) device. The chbsp_external_i2c_queue() function should be called to add such a transaction to the I2C queue.
void chbsp_group_io_clear | ( | ch_group_t * | grp_ptr | ) |
Set the INT pins low for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
This function should drive the INT line low for each sensor in the group.
This function is REQUIRED.
void chbsp_group_io_interrupt_disable | ( | ch_group_t * | grp_ptr | ) |
Disable interrupts for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
For each sensor in the group, this function should disable the host interrupt associated with the Chirp sensor device's INT line.
void chbsp_group_io_interrupt_enable | ( | ch_group_t * | grp_ptr | ) |
Enable interrupts for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
For each sensor in the group, this function should enable the host interrupt associated with the Chirp sensor device's INT line.
This function is REQUIRED.
void chbsp_group_io_set | ( | ch_group_t * | grp_ptr | ) |
Set the INT pins high for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
This function should drive the INT line high for each sensor in the group.
This function is REQUIRED.
void chbsp_group_pin_init | ( | ch_group_t * | grp_ptr | ) |
Initialize the set of I/O pins for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
This function initializes the set of I/O pins used for a group of sensors. It should perform any clock initialization and other setup required to use the ports/pins. It should then configure the RESET_N and PROG pins as outputs (from the perspective of the host system), and assert both RESET_N and PROG. It should also configure the INT pin as an input.
This function is REQUIRED.
void chbsp_group_set_io_dir_in | ( | ch_group_t * | grp_ptr | ) |
Configure the Chirp sensor INT pins as inputs for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
This function should configure each Chirp sensor's INT pin as an input (from the perspective of the host system).
This function is REQUIRED.
void chbsp_group_set_io_dir_out | ( | ch_group_t * | grp_ptr | ) |
Configure the Chirp sensor INT pin as an output for a group of sensors.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
This function should configure each Chirp sensor's INT pin as an output (from the perspective of the host system).
This function is REQUIRED.
int chbsp_i2c_deinit | ( | void | ) |
De-initialize the host's I2C hardware.
This function de-initializes the I2C hardware and control structures on the host system.
This function is OPTIONAL.
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.
grp_ptr | pointer to the ch_group_t config structure for a group of sensors |
dev_num | device number within sensor group |
info_ptr | pointer to structure to be filled with I2C config values |
This function is called by SonicLib functions to obtain I2C operating parameters for a specific device on the board.
This function returns I2C values in the ch_i2c_info_t structure specified by info_ptr. The structure includes three fields.
- The address field contains the I2C address for the sensor.
- The bus_num field contains the I2C bus number (index).
- The drv_flags field contains various bit flags through which the BSP can inform SonicLib driver functions to perform specific actions during I2C I/O operations. The possible flags include:
This function is REQUIRED.
int chbsp_i2c_init | ( | void | ) |
Initialize the host's I2C hardware.
This function should perform general I2C initialization on the host system. This includes both hardware initialization and setting up any necessary software structures. Upon successful return from this routine, the system should be ready to perform I/O operations such as chbsp_i2c_read() and chbsp_i2c_write().
This function is REQUIRED.
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.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
mem_addr | internal memory or register address within device |
data | pointer to receive data buffer |
num_bytes | number of bytes to read |
This function should read the specified number of bytes from an I2C slave device, using an internal memory or register address. The remote device will return num_bytes bytes starting at internal memory/register address mem_addr.
The I2C interface must have already been initialized using chbsp_i2c_init().
This function is normally implemented such that the device address and memory address are written to the I2C bus, then a repeated-start marker is sent, and the data is read. Most micro-controller I/O libraries support such an access sequence. (If this is not possible, the write and read phases may be separated into two discrete operations, without the repeated-start. However, this may be a problem if more than one bus master is present, because the bus is not held between the two phases.)
This function is REQUIRED.
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.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
mem_addr | internal memory or register address within device |
data | pointer to receive data buffer |
num_bytes | number of bytes to read |
This function should initiate a non-blocking read of the specified number of bytes from an I2C slave. The I2C interface must have already been initialized using chbsp_i2c_init().
This function is OPTIONAL.
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.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
mem_addr | internal memory or register address within device |
data | data to be transmitted |
num_bytes | length of data to be transmitted |
This function should write one or more bytes of data to an I2C slave device using an internal memory or register address. The remote device will write num_bytes bytes of data starting at internal memory/register address mem_addr. The I2C interface will have already been initialized using chbsp_i2c_init().
This function is REQUIRED.
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.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
mem_addr | internal memory or register address within device |
data | pointer to the start of data to be transmitted |
num_bytes | length of data to be transmitted |
This function should initiate a non-blocking write of the specified number of bytes to an I2C slave device, using an internal memory or register address. The remote device will write num_bytes bytes of data starting at internal memory/register address mem_addr.
The I2C interface must have already been initialized using chbsp_i2c_init().
This function is OPTIONAL.
int chbsp_i2c_read | ( | ch_dev_t * | dev_ptr, |
uint8_t * | data, | ||
uint16_t | num_bytes | ||
) |
Read bytes from an I2C slave.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
data | pointer to receive data buffer |
num_bytes | number of bytes to read |
This function should read the specified number of bytes from an I2C slave device. The I2C interface must have already been initialized using chbsp_i2c_init().
This function is REQUIRED.
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.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
data | pointer to receive data buffer |
num_bytes | number of bytes to read |
This function should initiate a non-blocking read of the specified number of bytes from an I2C slave.
The I2C interface must have already been initialized using chbsp_i2c_init().
This function is OPTIONAL.
void chbsp_i2c_reset | ( | ch_dev_t * | dev_ptr | ) |
Reset I2C bus associated with device.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should perform a reset of the I2C interface for the specified device.
int chbsp_i2c_write | ( | ch_dev_t * | dev_ptr, |
uint8_t * | data, | ||
uint16_t | num_bytes | ||
) |
Write bytes to an I2C slave.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
data | data to be transmitted |
num_bytes | length of data to be transmitted |
This function should write one or more bytes of data to an I2C slave device. The I2C interface will have already been initialized using chbsp_i2c_init().
int chbsp_i2c_write_nb | ( | ch_dev_t * | dev_ptr, |
uint8_t * | data, | ||
uint16_t | num_bytes | ||
) |
Write bytes to an I2C slave, non-blocking.
data | pointer to the start of data to be transmitted |
num_bytes | length of data to be transmitted |
This function should initiate a non-blocking write of the specified number of bytes to an I2C slave device.
The I2C interface must have already been initialized using chbsp_i2c_init().
This function is OPTIONAL.
void chbsp_io_callback_set | ( | ch_io_int_callback_t | callback_func_ptr | ) |
Set callback routine for Chirp sensor I/O interrupt.
callback_func_ptr | pointer to application function to be called when interrupt occurs |
This function sets up the specified callback routine to be called whenever the interrupt associated with the sensor's INT line occurs. The implementation will typically save the callback routine address in a pointer variable that can later be accessed from within the interrupt handler to call the function.
The callback function will generally be called at interrupt level from the interrupt service routine.
This function is REQUIRED.
void chbsp_io_clear | ( | ch_dev_t * | dev_ptr | ) |
Set the INT pin low for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should drive the INT line low for the specified sensor.
void chbsp_io_interrupt_disable | ( | ch_dev_t * | dev_ptr | ) |
Disable the interrupt for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should disable the host interrupt associated with the Chirp sensor device's INT line.
This function is REQUIRED.
void chbsp_io_interrupt_enable | ( | ch_dev_t * | dev_ptr | ) |
Enable the interrupt for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should enable the host interrupt associated with the Chirp sensor device's INT line.
This function is REQUIRED.
void chbsp_io_set | ( | ch_dev_t * | dev_ptr | ) |
Set the INT pin high for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should drive the INT line high for the specified sensor.
This function is OPTIONAL.
void chbsp_led_off | ( | uint8_t | dev_num | ) |
Turn off an LED on the board.
This function turns off an LED on the board. The implementation of this function is flexible to allow for different arrangements of LEDs.
The dev_num parameter contains the device number of a specific sensor. The device number may be used to select which LED should be turned off (e.g. if it is located next to an individual sensor). If the board does not have LEDs associated with individual sensors, the BSP may implement this routine to combine all device numbers to control a single LED, or any other organization that makes sense for the board.
This function is RECOMMENDED.
void chbsp_led_on | ( | uint8_t | dev_num | ) |
Turn on an LED on the board.
This function turns on an LED on the board. The implementation of this function is flexible to allow for different arrangements of LEDs.
The dev_num parameter contains the device number of a specific sensor. The device number may be used to select which LED should be turned on (e.g. if it is located next to an individual sensor). If the board does not have LEDs associated with individual sensors, the BSP may implement this routine to combine all device numbers to control a single LED, or any other organization that makes sense for the board.
This function is RECOMMENDED.
void chbsp_led_toggle | ( | uint8_t | dev_num | ) |
Toggle an LED on the board.
This function toggles an LED on the board. It changes the on/off state from whatever it currently is. The implementation of this function is flexible to allow for different arrangements of LEDs.
The dev_num parameter contains the device number of a specific sensor. The device number may be used to select which LED should be toggled (e.g. if it is located next to an individual sensor). If the board does not have LEDs associated with individual sensors, the BSP may implement this routine to combine all device numbers to control a single LED, or any other organization that makes sense for the board.
This function is RECOMMENDED.
void chbsp_periodic_timer_handler | ( | void | ) |
Periodic timer handler.
This function handles the expiration of the periodic timer, re-arms it and any associated interrupts for the next interval, and calls the callback routine that was registered using chbsp_periodic_timer_init().
This function is RECOMMENDED.
uint8_t chbsp_periodic_timer_init | ( | uint16_t | interval_ms, |
ch_timer_callback_t | callback_func_ptr | ||
) |
Initialize periodic timer.
interval_ms | timer interval, in milliseconds |
callback_func_ptr | address of routine to be called every time the timer expires |
This function initializes a periodic timer on the board. The timer should be programmed to generate an interrupt after every interval_ms milliseconds.
The callback_func_ptr parameter specifies a callback routine that will be called when the timer expires (and interrupt occurs). The timer interrupt handler function within the board support package should call this function.
The period timer is often used to trigger sensor measurement cycles by having the application's callback function call ch_trigger() or ch_group_trigger().
This function is RECOMMENDED.
void chbsp_periodic_timer_irq_disable | ( | void | ) |
Disable periodic timer interrupt.
This function enables the interrupt associated with the periodic timer initialized by chbsp_periodic_timer_init().
This function is RECOMMENDED.
void chbsp_periodic_timer_irq_enable | ( | void | ) |
Enable periodic timer interrupt.
This function enables the interrupt associated with the periodic timer initialized by chbsp_periodic_timer_init().
This function is RECOMMENDED.
uint8_t chbsp_periodic_timer_start | ( | void | ) |
Start periodic timer.
This function starts the periodic timer initialized by chbsp_periodic_timer_init().
This function is RECOMMENDED.
uint8_t chbsp_periodic_timer_stop | ( | void | ) |
Stop periodic timer.
This function stops the periodic timer initialized by chbsp_periodic_timer_init().
This function is RECOMMENDED.
void chbsp_print_str | ( | char * | str | ) |
Output a text string via serial interface.
str | pointer to a string of characters to be output |
This function should print debug information to the console. The user can implement this function to print characters over a serial port, for example.
In the Chirp SonicLib sensor driver, debug message output may be enabled by defining CHDRV_DEBUG and/or CHDRV_DEBUG_VERBOSE.
void chbsp_proc_sleep | ( | void | ) |
Put the processor into low-power sleep state.
This function puts the host processor (MCU) into a low-power sleep mode, to conserve energy. The sleep state should be selected such that interrupts associated with the I2C, external GPIO pins, and the periodic timer (if used) are able to wake up the device.
This function is RECOMMENDED.
void chbsp_program_disable | ( | ch_dev_t * | dev_ptr | ) |
Deassert the PROG pin.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should drive the Chirp sensor PROG pin low for the specified device.
This function is REQUIRED.
void chbsp_program_enable | ( | ch_dev_t * | dev_ptr | ) |
Assert the PROG pin.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should drive the Chirp sensor PROG pin high for the specified device. It is used by the driver to initiate I2C communication with a specific Chirp sensor device before a unique I2C address is assigned to the device or when the programming interface is used.
When the PROG pin is asserted, the device will respond to the standard programming I2C address (0x45).
This function is REQUIRED.
void chbsp_reset_assert | ( | void | ) |
Assert the reset pin for all sensors.
This function should drive the Chirp sensor reset pin low (assert RESET_N) on all sensors.
This function is REQUIRED.
void chbsp_reset_release | ( | void | ) |
Deassert the reset pin for all sensors.
This function should drive the Chirp sensor reset pin high (or open drain if there is a pull-up) on all sensors.
This function is REQUIRED.
void chbsp_set_io_dir_in | ( | ch_dev_t * | dev_ptr | ) |
Configure the Chirp sensor INT pin as an input for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should configure the Chirp sensor INT pin as an input (from the perspective of the host system).
This function is RECOMMENDED.
void chbsp_set_io_dir_out | ( | ch_dev_t * | dev_ptr | ) |
Configure the Chirp sensor INT pin as an output for one sensor.
dev_ptr | pointer to the ch_dev_t config structure for a sensor |
This function should configure the Chirp sensor INT pin as an output (from the perspective of the host system).
This function is RECOMMENDED.
uint32_t chbsp_timestamp_ms | ( | void | ) |
Return a free-running counter value in milliseconds.
This function should use a running timer to provide an updated timestamp, in milliseconds, when called.
If CHDRV_DEBUG is defined, this function is used by the SonicLib driver to calculate elapsed times for various operations.
This function is OPTIONAL.