37#ifndef DRIVER_ISD17XX_H
38#define DRIVER_ISD17XX_H
137 uint8_t (*
spi_read)(uint8_t reg, uint8_t *buf, uint16_t len);
138 uint8_t (*
spi_write)(uint8_t reg, uint8_t *buf, uint16_t len);
186#define DRIVER_ISD17XX_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
194#define DRIVER_ISD17XX_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
202#define DRIVER_ISD17XX_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
210#define DRIVER_ISD17XX_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
218#define DRIVER_ISD17XX_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
226#define DRIVER_ISD17XX_LINK_SPI_TRANSMIT(HANDLE, FUC) (HANDLE)->spi_transmit = FUC
234#define DRIVER_ISD17XX_LINK_GPIO_RESET_INIT(HANDLE, FUC) (HANDLE)->gpio_reset_init = FUC
242#define DRIVER_ISD17XX_LINK_GPIO_RESET_DEINIT(HANDLE, FUC) (HANDLE)->gpio_reset_deinit = FUC
250#define DRIVER_ISD17XX_LINK_GPIO_RESET_WRITE(HANDLE, FUC) (HANDLE)->gpio_reset_write = FUC
258#define DRIVER_ISD17XX_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
266#define DRIVER_ISD17XX_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
274#define DRIVER_ISD17XX_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
uint8_t isd17xx_global_erase(isd17xx_handle_t *handle)
global erase
uint8_t isd17xx_reset(isd17xx_handle_t *handle)
reset
uint8_t isd17xx_set_record(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr)
set the record point
uint8_t isd17xx_info(isd17xx_info_t *info)
get chip's information
isd17xx_status2_t
isd17xx status2 enumeration definition
isd17xx_bool_t
isd17xx bool enumeration definition
uint8_t isd17xx_toggle_extern_clock(isd17xx_handle_t *handle)
toggle the enable and disable of the external clock
uint8_t isd17xx_set_mix_input(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable the mix input
uint8_t isd17xx_set_spi_ft(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable spi ft
uint8_t isd17xx_power_up(isd17xx_handle_t *handle)
power up
uint8_t isd17xx_read_play_point(isd17xx_handle_t *handle, uint16_t *point)
read the play point
uint8_t isd17xx_irq_handler(isd17xx_handle_t *handle)
irq handler
uint8_t isd17xx_get_sound_effect_editing(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the sound effect editing status
uint8_t isd17xx_set_volume(isd17xx_handle_t *handle, uint8_t vol)
set the volume
uint8_t isd17xx_get_volume(isd17xx_handle_t *handle, uint8_t *vol)
get the volume
uint8_t isd17xx_set_type(isd17xx_handle_t *handle, isd17xx_type_t type)
set the chip type
uint8_t isd17xx_get_mix_input(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the mix input status
uint8_t isd17xx_get_power_up_analog_output(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the power up analog output status
uint8_t isd17xx_get_spi_ft(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the spi ft status
uint8_t isd17xx_set_sound_effect_editing(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable sound effect editing
uint8_t isd17xx_next(isd17xx_handle_t *handle)
next
uint8_t isd17xx_get_status(isd17xx_handle_t *handle, uint16_t *status1, uint8_t *status2)
get the status
uint8_t isd17xx_get_v_alert(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the v alert status
uint8_t isd17xx_get_type(isd17xx_handle_t *handle, isd17xx_type_t *type)
get the chip type
uint8_t isd17xx_set_erase(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr)
set the erase point
uint8_t isd17xx_hardware_reset(isd17xx_handle_t *handle)
hardware reset
uint8_t isd17xx_set_play(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr)
set the play point
uint8_t isd17xx_clear_interrupt(isd17xx_handle_t *handle)
clear interrupt
uint8_t isd17xx_stop(isd17xx_handle_t *handle)
stop
uint8_t isd17xx_record(isd17xx_handle_t *handle)
record
uint8_t isd17xx_power_down(isd17xx_handle_t *handle)
power down
isd17xx_vol_control_t
isd17xx vol control enumeration definition
uint8_t isd17xx_write_to_nv(isd17xx_handle_t *handle)
write config to non volatile memory
isd17xx_status1_t
isd17xx status1 enumeration definition
uint8_t isd17xx_set_power_up_analog_output(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable power up analog output
uint8_t isd17xx_get_analog_output(isd17xx_handle_t *handle, isd17xx_analog_output_t *output)
get the analog output type
uint8_t isd17xx_get_device_id(isd17xx_handle_t *handle, uint8_t *id)
get the device id
uint8_t isd17xx_init(isd17xx_handle_t *handle)
initialize the chip
uint8_t isd17xx_read_record_point(isd17xx_handle_t *handle, uint16_t *point)
read the record point
uint8_t isd17xx_check_memory(isd17xx_handle_t *handle)
check memory
uint8_t isd17xx_set_analog_output(isd17xx_handle_t *handle, isd17xx_analog_output_t output)
set the analog output type
struct isd17xx_info_s isd17xx_info_t
isd17xx information structure definition
uint8_t isd17xx_set_v_alert(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable v alert
uint8_t isd17xx_erase(isd17xx_handle_t *handle)
erase
uint8_t isd17xx_set_monitor_input(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable the monitor input
uint8_t isd17xx_get_pwm_speaker(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the pwm speaker status
uint8_t isd17xx_load_from_nv(isd17xx_handle_t *handle)
load config from non volatile memory
uint8_t isd17xx_get_eom(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the eom status
uint8_t isd17xx_set_pwm_speaker(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable pwm speaker
uint8_t isd17xx_get_volume_control(isd17xx_handle_t *handle, isd17xx_vol_control_t *control)
get the volume control type
struct isd17xx_handle_s isd17xx_handle_t
isd17xx handle structure definition
uint8_t isd17xx_set_eom(isd17xx_handle_t *handle, isd17xx_bool_t enable)
enable or disable eom stop playing
uint8_t isd17xx_set_volume_control(isd17xx_handle_t *handle, isd17xx_vol_control_t control)
set the volume control type
isd17xx_type_t
isd17xx type enumeration definition
uint8_t isd17xx_get_monitor_input(isd17xx_handle_t *handle, isd17xx_bool_t *enable)
get the monitor input status
isd17xx_analog_output_t
isd17xx analog output enumeration definition
uint8_t isd17xx_deinit(isd17xx_handle_t *handle)
close the chip
uint8_t isd17xx_play(isd17xx_handle_t *handle)
play
@ ISD17XX_VOL_CONTROL_REG
@ ISD17XX_VOL_CONTROL_BUTTON
@ ISD17XX_STATUS1_CMD_ERR
@ ISD17XX_ANALOG_OUTPUT_AUX
@ ISD17XX_ANALOG_OUTPUT_AUD
uint8_t isd17xx_get_reg(isd17xx_handle_t *handle, uint8_t cmd, uint8_t *buf, uint16_t len)
get the chip register
uint8_t isd17xx_set_reg(isd17xx_handle_t *handle, uint8_t cmd, uint8_t *buf, uint16_t len)
set the chip register
isd17xx handle structure definition
uint8_t(* gpio_reset_deinit)(void)
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_read)(uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* spi_write)(uint8_t reg, uint8_t *buf, uint16_t len)
void(* debug_print)(const char *const fmt,...)
void(* receive_callback)(uint16_t type)
uint8_t(* spi_transmit)(uint8_t *tx, uint8_t *rx, uint16_t len)
uint8_t(* spi_deinit)(void)
uint8_t(* gpio_reset_write)(uint8_t level)
uint8_t(* gpio_reset_init)(void)
isd17xx information structure definition
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v