12345678910111213141516171819202122232425262728293031323334353637383940 |
- /*
- * Squeezelite for esp32
- *
- * (c) Sebastien 2019
- * Philippe G. 2019, philippe_44@outlook.com
- *
- * This software is released under the MIT License.
- * https://opensource.org/licenses/MIT
- *
- */
- #include "freertos/FreeRTOS.h"
- #include "driver/i2s.h"
- #include "driver/i2c.h"
- typedef enum { ADAC_ON = 0, ADAC_STANDBY, ADAC_OFF } adac_power_e;
- struct adac_s {
- char *model;
- bool (*init)(char *config, int i2c_port_num, i2s_config_t *i2s_config, bool *mck);
- void (*deinit)(void);
- void (*power)(adac_power_e mode);
- void (*speaker)(bool active);
- void (*headset)(bool active);
- bool (*volume)(unsigned left, unsigned right);
- };
- extern const struct adac_s dac_tas57xx;
- extern const struct adac_s dac_tas5713;
- extern const struct adac_s dac_ac101;
- extern const struct adac_s dac_wm8978;
- extern const struct adac_s dac_external;
- int adac_init(char *config, int i2c_port);
- void adac_deinit(void);
- esp_err_t adac_write(int i2c_addr, uint8_t reg, uint8_t *data, size_t count);
- esp_err_t adac_write_byte(int i2c_addr, uint8_t reg, uint8_t val);
- esp_err_t adac_write_word(int i2c_addr, uint8_t reg, uint16_t val);
- uint8_t adac_read_byte(int i2c_addr, uint8_t reg);
- uint16_t adac_read_word(int i2c_addr, uint8_t reg);
|