LibDriver ISD17XX
Loading...
Searching...
No Matches
driver_isd17xx.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_ISD17XX_H
38#define DRIVER_ISD17XX_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62typedef enum
63{
64 ISD1730 = 0x10,
65 ISD1740 = 0x16,
66 ISD1750 = 0x15,
67 ISD1760 = 0x14,
68 ISD1790 = 0x1A,
69 ISD17120 = 0x19,
70 ISD17150 = 0x18,
71 ISD17180 = 0x1E,
72 ISD17210 = 0x1D,
73 ISD17240 = 0x1C,
75
79typedef enum
80{
84
93
102
114
129
133typedef struct isd17xx_handle_s
134{
135 uint8_t (*spi_init)(void);
136 uint8_t (*spi_deinit)(void);
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);
139 uint8_t (*spi_transmit)(uint8_t *tx, uint8_t *rx, uint16_t len);
140 uint8_t (*gpio_reset_init)(void);
141 uint8_t (*gpio_reset_deinit)(void);
142 uint8_t (*gpio_reset_write)(uint8_t level);
143 void (*receive_callback)(uint16_t type);
144 void (*delay_ms)(uint32_t ms);
145 void (*debug_print)(const char *const fmt, ...);
146 uint16_t end_address;
147 uint8_t vol_control;
148 uint8_t type;
149 uint8_t inited;
150 uint8_t done;
152
168
172
179
186#define DRIVER_ISD17XX_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
187
194#define DRIVER_ISD17XX_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
195
202#define DRIVER_ISD17XX_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
203
210#define DRIVER_ISD17XX_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
211
218#define DRIVER_ISD17XX_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
219
226#define DRIVER_ISD17XX_LINK_SPI_TRANSMIT(HANDLE, FUC) (HANDLE)->spi_transmit = FUC
227
234#define DRIVER_ISD17XX_LINK_GPIO_RESET_INIT(HANDLE, FUC) (HANDLE)->gpio_reset_init = FUC
235
242#define DRIVER_ISD17XX_LINK_GPIO_RESET_DEINIT(HANDLE, FUC) (HANDLE)->gpio_reset_deinit = FUC
243
250#define DRIVER_ISD17XX_LINK_GPIO_RESET_WRITE(HANDLE, FUC) (HANDLE)->gpio_reset_write = FUC
251
258#define DRIVER_ISD17XX_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
259
266#define DRIVER_ISD17XX_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
267
274#define DRIVER_ISD17XX_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
275
279
286
295uint8_t isd17xx_info(isd17xx_info_t *info);
296
307
317uint8_t isd17xx_get_type(isd17xx_handle_t *handle, isd17xx_type_t *type);
318
330
346uint8_t isd17xx_init(isd17xx_handle_t *handle);
347
359uint8_t isd17xx_deinit(isd17xx_handle_t *handle);
360
371uint8_t isd17xx_power_up(isd17xx_handle_t *handle);
372
383uint8_t isd17xx_power_down(isd17xx_handle_t *handle);
384
395uint8_t isd17xx_play(isd17xx_handle_t *handle);
396
407uint8_t isd17xx_record(isd17xx_handle_t *handle);
408
419uint8_t isd17xx_stop(isd17xx_handle_t *handle);
420
431uint8_t isd17xx_erase(isd17xx_handle_t *handle);
432
444
455uint8_t isd17xx_next(isd17xx_handle_t *handle);
456
468
479uint8_t isd17xx_reset(isd17xx_handle_t *handle);
480
492
504
517uint8_t isd17xx_get_status(isd17xx_handle_t *handle, uint16_t *status1, uint8_t *status2);
518
530uint8_t isd17xx_get_device_id(isd17xx_handle_t *handle, uint8_t *id);
531
543uint8_t isd17xx_read_play_point(isd17xx_handle_t *handle, uint16_t *point);
544
556uint8_t isd17xx_read_record_point(isd17xx_handle_t *handle, uint16_t *point);
557
570
582
596uint8_t isd17xx_set_volume(isd17xx_handle_t *handle, uint8_t vol);
597
609uint8_t isd17xx_get_volume(isd17xx_handle_t *handle, uint8_t *vol);
610
623
636
649
662
675
688
700uint8_t isd17xx_set_spi_ft(isd17xx_handle_t *handle, isd17xx_bool_t enable);
701
713uint8_t isd17xx_get_spi_ft(isd17xx_handle_t *handle, isd17xx_bool_t *enable);
714
727
740
753
766
779
792
805
817uint8_t isd17xx_get_v_alert(isd17xx_handle_t *handle, isd17xx_bool_t *enable);
818
830uint8_t isd17xx_set_eom(isd17xx_handle_t *handle, isd17xx_bool_t enable);
831
843uint8_t isd17xx_get_eom(isd17xx_handle_t *handle, isd17xx_bool_t *enable);
844
856
868
883uint8_t isd17xx_set_play(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr);
884
899uint8_t isd17xx_set_record(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr);
900
915uint8_t isd17xx_set_erase(isd17xx_handle_t *handle, uint16_t start_addr, uint16_t end_addr);
916
928
932
939
953uint8_t isd17xx_set_reg(isd17xx_handle_t *handle, uint8_t cmd, uint8_t *buf, uint16_t len);
954
968uint8_t isd17xx_get_reg(isd17xx_handle_t *handle, uint8_t cmd, uint8_t *buf, uint16_t len);
969
973
977
978#ifdef __cplusplus
979}
980#endif
981
982#endif
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_STATUS2_REC
@ ISD17XX_STATUS2_SE2
@ ISD17XX_STATUS2_SE4
@ ISD17XX_STATUS2_PLAY
@ ISD17XX_STATUS2_RDY
@ ISD17XX_STATUS2_ERASE
@ ISD17XX_STATUS2_SE3
@ ISD17XX_STATUS2_SE1
@ ISD17XX_BOOL_TRUE
@ ISD17XX_BOOL_FALSE
@ ISD17XX_VOL_CONTROL_REG
@ ISD17XX_VOL_CONTROL_BUTTON
@ ISD17XX_STATUS1_FULL
@ ISD17XX_STATUS1_PU
@ ISD17XX_STATUS1_INT
@ ISD17XX_STATUS1_CMD_ERR
@ ISD17XX_STATUS1_EOM
@ ISD17240
@ ISD1730
@ ISD17210
@ ISD1790
@ ISD1760
@ ISD1750
@ ISD17150
@ ISD17120
@ ISD17180
@ ISD1740
@ 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
uint32_t driver_version
char manufacturer_name[32]