39#if VS1053B_OGG_VENC08K1Q00 != 0
42#if VS1053B_OGG_VENC08K1Q01 != 0
45#if VS1053B_OGG_VENC08K1Q02 != 0
48#if VS1053B_OGG_VENC08K1Q03 != 0
51#if VS1053B_OGG_VENC08K1Q04 != 0
54#if VS1053B_OGG_VENC08K1Q05 != 0
57#if VS1053B_OGG_VENC08K1Q06 != 0
60#if VS1053B_OGG_VENC08K1Q07 != 0
63#if VS1053B_OGG_VENC08K1Q08 != 0
66#if VS1053B_OGG_VENC08K1Q09 != 0
69#if VS1053B_OGG_VENC08K1Q10 != 0
72#if VS1053B_OGG_VENC16K1Q00 != 0
75#if VS1053B_OGG_VENC16K1Q01 != 0
78#if VS1053B_OGG_VENC16K1Q02 != 0
81#if VS1053B_OGG_VENC16K1Q03 != 0
84#if VS1053B_OGG_VENC16K1Q04 != 0
87#if VS1053B_OGG_VENC16K1Q05 != 0
90#if VS1053B_OGG_VENC16K1Q06 != 0
93#if VS1053B_OGG_VENC16K1Q07 != 0
96#if VS1053B_OGG_VENC16K1Q08 != 0
99#if VS1053B_OGG_VENC16K1Q09 != 0
102#if VS1053B_OGG_VENC16K1Q10 != 0
105#if VS1053B_OGG_VENC16K2Q00 != 0
108#if VS1053B_OGG_VENC16K2Q01 != 0
111#if VS1053B_OGG_VENC16K2Q02 != 0
114#if VS1053B_OGG_VENC16K2Q03 != 0
117#if VS1053B_OGG_VENC16K2Q04 != 0
120#if VS1053B_OGG_VENC16K2Q05 != 0
123#if VS1053B_OGG_VENC16K2Q06 != 0
126#if VS1053B_OGG_VENC16K2Q07 != 0
129#if VS1053B_OGG_VENC16K2Q08 != 0
132#if VS1053B_OGG_VENC16K2Q09 != 0
135#if VS1053B_OGG_VENC16K2Q10 != 0
138#if VS1053B_OGG_VENC44K1Q00 != 0
141#if VS1053B_OGG_VENC44K1Q01 != 0
144#if VS1053B_OGG_VENC44K1Q02 != 0
147#if VS1053B_OGG_VENC44K1Q03 != 0
150#if VS1053B_OGG_VENC44K1Q04 != 0
153#if VS1053B_OGG_VENC44K1Q05 != 0
156#if VS1053B_OGG_VENC44K2Q00 != 0
159#if VS1053B_OGG_VENC44K2Q01 != 0
162#if VS1053B_OGG_VENC44K2Q02 != 0
165#if VS1053B_OGG_VENC44K2Q03 != 0
168#if VS1053B_OGG_VENC44K2Q04 != 0
171#if VS1053B_OGG_VENC44K2Q05 != 0
181#define CHIP_NAME "VLSI VS1053B"
182#define MANUFACTURER_NAME "VLSI"
183#define SUPPLY_VOLTAGE_MIN 2.6f
184#define SUPPLY_VOLTAGE_MAX 3.6f
185#define MAX_CURRENT 60.0f
186#define TEMPERATURE_MIN -40.0f
187#define TEMPERATURE_MAX 85.0f
188#define DRIVER_VERSION 1000
193#define VS1053B_COMMAND_READ 0x03
194#define VS1053B_COMMAND_WRITE 0x02
199#define VS1053B_REG_MODE 0x00
200#define VS1053B_REG_STATUS 0x01
201#define VS1053B_REG_BASS 0x02
202#define VS1053B_REG_CLOCKF 0x03
203#define VS1053B_REG_DECODE_TIME 0x04
204#define VS1053B_REG_AUDATA 0x05
205#define VS1053B_REG_WRAM 0x06
206#define VS1053B_REG_WRAMADDR 0x07
207#define VS1053B_REG_HDAT0 0x08
208#define VS1053B_REG_HDAT1 0x09
209#define VS1053B_REG_AIADDR 0x0A
210#define VS1053B_REG_VOL 0x0B
211#define VS1053B_REG_AICTRL0 0x0C
212#define VS1053B_REG_AICTRL1 0x0D
213#define VS1053B_REG_AICTRL2 0x0E
214#define VS1053B_REG_AICTRL3 0x0F
219#define VS1053B_STATUS_STOP 0x00
220#define VS1053B_STATUS_PLAY 0x01
221#define VS1053B_STATUS_RECORD 0x02
226#define MIN(a, b) (((a) < (b)) ? (a) : (b))
239static uint8_t a_vs1053b_spi_read(
vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
262static uint8_t a_vs1053b_spi_write(
vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
284static uint8_t a_vs1053b_spi_write_data(
vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
310 for (i = 0; i < 1000; i++)
348 uint8_t buf_init[32];
352 if (a_check_busy_pin(handle) != 0)
361 handle->
debug_print(
"vs1053b: read mode failed.\n");
365 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
368 buf[0] = (prev >> 8) & 0xFF;
369 buf[1] = (prev >> 0) & 0xFF;
373 handle->
debug_print(
"vs1053b: write mode failed.\n");
378 memset(buf_init, 0,
sizeof(uint8_t) * 32);
379 for (i = 0; i < 64; i++)
383 handle->
debug_print(
"vs1053b: fill buffer failed.\n");
387 if (a_check_busy_pin(handle) != 0)
396 handle->
debug_print(
"vs1053b: read mode failed.\n");
400 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
401 if ((prev & (1 << 3)) == 0)
408 handle->
debug_print(
"vs1053b: cancel bit is invalid.\n");
413 for (i = 0; i < 65; i++)
415 if (a_check_busy_pin(handle) != 0)
422 buf[0] = (prev >> 8) & 0xFF;
423 buf[1] = (prev >> 0) & 0xFF;
424 res = a_vs1053b_spi_write(handle,
428 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
432 if (a_check_busy_pin(handle) != 0)
441 handle->
debug_print(
"vs1053b: read ram failed.\n");
445 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
446 memset(buf_init, prev & 0xFF,
sizeof(uint8_t) * 32);
449 handle->
debug_print(
"vs1053b: fill buffer failed.\n");
455 if (a_check_busy_pin(handle) != 0)
464 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
468 dat0 = ((uint16_t)(buf[0]) << 8) | buf[1];
472 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
476 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
477 if ((dat0 != 0) || (dat1 != 0))
479 handle->
debug_print(
"vs1053b: dat0 and dat1 ara invalid.\n");
498 uint64_t current_time;
501 current_time = (((uint64_t)sec) * 1000000 + ((uint64_t)us));
574 handle->
debug_print(
"vs1053b: audio write failed.\n");
607 if (a_check_busy_pin(handle) != 0)
617 handle->
debug_print(
"vs1053b: read mode failed.\n");
621 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
624 buf[0] = (prev >> 8) & 0xFF;
625 buf[1] = (prev >> 0) & 0xFF;
629 handle->
debug_print(
"vs1053b: write mode failed.\n");
662 if (a_check_busy_pin(handle) != 0)
672 handle->
debug_print(
"vs1053b: read mode failed.\n");
676 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
707 if (a_check_busy_pin(handle) != 0)
717 handle->
debug_print(
"vs1053b: read mode failed.\n");
721 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
724 buf[0] = (prev >> 8) & 0xFF;
725 buf[1] = (prev >> 0) & 0xFF;
729 handle->
debug_print(
"vs1053b: write mode failed.\n");
762 if (a_check_busy_pin(handle) != 0)
772 handle->
debug_print(
"vs1053b: read mode failed.\n");
776 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
807 if (a_check_busy_pin(handle) != 0)
817 handle->
debug_print(
"vs1053b: read mode failed.\n");
821 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
824 buf[0] = (prev >> 8) & 0xFF;
825 buf[1] = (prev >> 0) & 0xFF;
829 handle->
debug_print(
"vs1053b: write mode failed.\n");
863 if (a_check_busy_pin(handle) != 0)
873 handle->
debug_print(
"vs1053b: read mode failed.\n");
877 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
908 if (a_check_busy_pin(handle) != 0)
918 handle->
debug_print(
"vs1053b: read mode failed.\n");
922 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
925 buf[0] = (prev >> 8) & 0xFF;
926 buf[1] = (prev >> 0) & 0xFF;
930 handle->
debug_print(
"vs1053b: write mode failed.\n");
963 if (a_check_busy_pin(handle) != 0)
973 handle->
debug_print(
"vs1053b: read mode failed.\n");
977 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1008 if (a_check_busy_pin(handle) != 0)
1018 handle->
debug_print(
"vs1053b: read mode failed.\n");
1022 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1024 prev |= enable << 4;
1025 buf[0] = (prev >> 8) & 0xFF;
1026 buf[1] = (prev >> 0) & 0xFF;
1030 handle->
debug_print(
"vs1053b: write mode failed.\n");
1063 if (a_check_busy_pin(handle) != 0)
1073 handle->
debug_print(
"vs1053b: read mode failed.\n");
1077 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1108 if (a_check_busy_pin(handle) != 0)
1118 handle->
debug_print(
"vs1053b: read mode failed.\n");
1122 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1124 prev |= enable << 5;
1125 buf[0] = (prev >> 8) & 0xFF;
1126 buf[1] = (prev >> 0) & 0xFF;
1130 handle->
debug_print(
"vs1053b: write mode failed.\n");
1163 if (a_check_busy_pin(handle) != 0)
1173 handle->
debug_print(
"vs1053b: read mode failed.\n");
1177 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1208 if (a_check_busy_pin(handle) != 0)
1218 handle->
debug_print(
"vs1053b: read mode failed.\n");
1222 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1224 prev |= enable << 6;
1225 buf[0] = (prev >> 8) & 0xFF;
1226 buf[1] = (prev >> 0) & 0xFF;
1230 handle->
debug_print(
"vs1053b: write mode failed.\n");
1263 if (a_check_busy_pin(handle) != 0)
1273 handle->
debug_print(
"vs1053b: read mode failed.\n");
1277 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1308 if (a_check_busy_pin(handle) != 0)
1318 handle->
debug_print(
"vs1053b: read mode failed.\n");
1322 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1324 prev |= enable << 7;
1325 buf[0] = (prev >> 8) & 0xFF;
1326 buf[1] = (prev >> 0) & 0xFF;
1330 handle->
debug_print(
"vs1053b: write mode failed.\n");
1363 if (a_check_busy_pin(handle) != 0)
1373 handle->
debug_print(
"vs1053b: read mode failed.\n");
1377 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1408 if (a_check_busy_pin(handle) != 0)
1418 handle->
debug_print(
"vs1053b: read mode failed.\n");
1422 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1425 buf[0] = (prev >> 8) & 0xFF;
1426 buf[1] = (prev >> 0) & 0xFF;
1430 handle->
debug_print(
"vs1053b: write mode failed.\n");
1463 if (a_check_busy_pin(handle) != 0)
1473 handle->
debug_print(
"vs1053b: read mode failed.\n");
1477 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1508 if (a_check_busy_pin(handle) != 0)
1518 handle->
debug_print(
"vs1053b: read mode failed.\n");
1522 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1525 buf[0] = (prev >> 8) & 0xFF;
1526 buf[1] = (prev >> 0) & 0xFF;
1530 handle->
debug_print(
"vs1053b: write mode failed.\n");
1563 if (a_check_busy_pin(handle) != 0)
1573 handle->
debug_print(
"vs1053b: read mode failed.\n");
1577 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1608 if (a_check_busy_pin(handle) != 0)
1618 handle->
debug_print(
"vs1053b: read mode failed.\n");
1622 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1624 prev |= enable << 10;
1625 buf[0] = (prev >> 8) & 0xFF;
1626 buf[1] = (prev >> 0) & 0xFF;
1630 handle->
debug_print(
"vs1053b: write mode failed.\n");
1663 if (a_check_busy_pin(handle) != 0)
1673 handle->
debug_print(
"vs1053b: read mode failed.\n");
1677 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1708 if (a_check_busy_pin(handle) != 0)
1718 handle->
debug_print(
"vs1053b: read mode failed.\n");
1722 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1724 prev |= enable << 11;
1725 buf[0] = (prev >> 8) & 0xFF;
1726 buf[1] = (prev >> 0) & 0xFF;
1730 handle->
debug_print(
"vs1053b: write mode failed.\n");
1763 if (a_check_busy_pin(handle) != 0)
1773 handle->
debug_print(
"vs1053b: read mode failed.\n");
1777 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1808 if (a_check_busy_pin(handle) != 0)
1818 handle->
debug_print(
"vs1053b: read mode failed.\n");
1822 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1824 prev |= enable << 12;
1825 buf[0] = (prev >> 8) & 0xFF;
1826 buf[1] = (prev >> 0) & 0xFF;
1830 handle->
debug_print(
"vs1053b: write mode failed.\n");
1863 if (a_check_busy_pin(handle) != 0)
1873 handle->
debug_print(
"vs1053b: read mode failed.\n");
1877 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1908 if (a_check_busy_pin(handle) != 0)
1918 handle->
debug_print(
"vs1053b: read mode failed.\n");
1922 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
1924 prev |= selector << 14;
1925 buf[0] = (prev >> 8) & 0xFF;
1926 buf[1] = (prev >> 0) & 0xFF;
1930 handle->
debug_print(
"vs1053b: write mode failed.\n");
1963 if (a_check_busy_pin(handle) != 0)
1973 handle->
debug_print(
"vs1053b: read mode failed.\n");
1977 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2008 if (a_check_busy_pin(handle) != 0)
2018 handle->
debug_print(
"vs1053b: read mode failed.\n");
2022 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2024 prev |= range << 15;
2025 buf[0] = (prev >> 8) & 0xFF;
2026 buf[1] = (prev >> 0) & 0xFF;
2030 handle->
debug_print(
"vs1053b: write mode failed.\n");
2063 if (a_check_busy_pin(handle) != 0)
2073 handle->
debug_print(
"vs1053b: read mode failed.\n");
2077 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2108 if (a_check_busy_pin(handle) != 0)
2118 handle->
debug_print(
"vs1053b: read status failed.\n");
2122 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2124 prev |= enable << 15;
2125 buf[0] = (prev >> 8) & 0xFF;
2126 buf[1] = (prev >> 0) & 0xFF;
2130 handle->
debug_print(
"vs1053b: write status failed.\n");
2163 if (a_check_busy_pin(handle) != 0)
2173 handle->
debug_print(
"vs1053b: read status failed.\n");
2177 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2215 if (a_check_busy_pin(handle) != 0)
2225 handle->
debug_print(
"vs1053b: read status failed.\n");
2229 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2230 prev &= ~(0x07 << 12);
2231 prev |= swing << 12;
2232 buf[0] = (prev >> 8) & 0xFF;
2233 buf[1] = (prev >> 0) & 0xFF;
2237 handle->
debug_print(
"vs1053b: write status failed.\n");
2270 if (a_check_busy_pin(handle) != 0)
2280 handle->
debug_print(
"vs1053b: read status failed.\n");
2284 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2312 *reg = (uint8_t)(db / 2.0f);
2339 *db = (float)(reg) / 0.5f;
2369 if (a_check_busy_pin(handle) != 0)
2379 handle->
debug_print(
"vs1053b: read status failed.\n");
2383 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2385 prev |= enable << 11;
2386 buf[0] = (prev >> 8) & 0xFF;
2387 buf[1] = (prev >> 0) & 0xFF;
2391 handle->
debug_print(
"vs1053b: write status failed.\n");
2424 if (a_check_busy_pin(handle) != 0)
2434 handle->
debug_print(
"vs1053b: read status failed.\n");
2438 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2469 if (a_check_busy_pin(handle) != 0)
2479 handle->
debug_print(
"vs1053b: read status failed.\n");
2483 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2485 prev |= (!enable) << 10;
2486 buf[0] = (prev >> 8) & 0xFF;
2487 buf[1] = (prev >> 0) & 0xFF;
2491 handle->
debug_print(
"vs1053b: write status failed.\n");
2524 if (a_check_busy_pin(handle) != 0)
2534 handle->
debug_print(
"vs1053b: read status failed.\n");
2538 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2569 if (a_check_busy_pin(handle) != 0)
2579 handle->
debug_print(
"vs1053b: read status failed.\n");
2583 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2614 if (a_check_busy_pin(handle) != 0)
2624 handle->
debug_print(
"vs1053b: read status failed.\n");
2628 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2630 prev |= enable << 3;
2631 buf[0] = (prev >> 8) & 0xFF;
2632 buf[1] = (prev >> 0) & 0xFF;
2636 handle->
debug_print(
"vs1053b: write status failed.\n");
2669 if (a_check_busy_pin(handle) != 0)
2679 handle->
debug_print(
"vs1053b: read status failed.\n");
2683 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2714 if (a_check_busy_pin(handle) != 0)
2724 handle->
debug_print(
"vs1053b: read status failed.\n");
2728 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2730 prev |= enable << 2;
2731 buf[0] = (prev >> 8) & 0xFF;
2732 buf[1] = (prev >> 0) & 0xFF;
2736 handle->
debug_print(
"vs1053b: write status failed.\n");
2769 if (a_check_busy_pin(handle) != 0)
2779 handle->
debug_print(
"vs1053b: read status failed.\n");
2783 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2814 if (a_check_busy_pin(handle) != 0)
2824 handle->
debug_print(
"vs1053b: read status failed.\n");
2828 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2830 prev |= ad_clock << 1;
2831 buf[0] = (prev >> 8) & 0xFF;
2832 buf[1] = (prev >> 0) & 0xFF;
2836 handle->
debug_print(
"vs1053b: write status failed.\n");
2869 if (a_check_busy_pin(handle) != 0)
2879 handle->
debug_print(
"vs1053b: read status failed.\n");
2883 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2914 if (a_check_busy_pin(handle) != 0)
2924 handle->
debug_print(
"vs1053b: read status failed.\n");
2928 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
2930 prev |= voltage << 0;
2931 buf[0] = (prev >> 8) & 0xFF;
2932 buf[1] = (prev >> 0) & 0xFF;
2936 handle->
debug_print(
"vs1053b: write status failed.\n");
2969 if (a_check_busy_pin(handle) != 0)
2979 handle->
debug_print(
"vs1053b: read status failed.\n");
2983 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3021 if (a_check_busy_pin(handle) != 0)
3031 handle->
debug_print(
"vs1053b: read bass failed.\n");
3035 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3036 prev &= ~(0xF << 12);
3038 buf[0] = (prev >> 8) & 0xFF;
3039 buf[1] = (prev >> 0) & 0xFF;
3043 handle->
debug_print(
"vs1053b: write bass failed.\n");
3076 if (a_check_busy_pin(handle) != 0)
3086 handle->
debug_print(
"vs1053b: read bass failed.\n");
3090 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3091 *db = ((prev >> 12) & 0x0F);
3118 *reg = (uint8_t)(db / 1.5f);
3145 *db = (float)(reg) * 1.5f;
3182 if (a_check_busy_pin(handle) != 0)
3192 handle->
debug_print(
"vs1053b: read bass failed.\n");
3196 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3197 prev &= ~(0xF << 8);
3199 buf[0] = (prev >> 8) & 0xFF;
3200 buf[1] = (prev >> 0) & 0xFF;
3204 handle->
debug_print(
"vs1053b: write bass failed.\n");
3237 if (a_check_busy_pin(handle) != 0)
3247 handle->
debug_print(
"vs1053b: read bass failed.\n");
3251 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3252 *step = ((prev >> 8) & 0x0F);
3279 *reg = (uint8_t)(hz / 1000);
3306 *hz = (uint32_t)(reg) * 1000;
3343 if (a_check_busy_pin(handle) != 0)
3353 handle->
debug_print(
"vs1053b: read bass failed.\n");
3357 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3358 prev &= ~(0xF << 4);
3360 buf[0] = (prev >> 8) & 0xFF;
3361 buf[1] = (prev >> 0) & 0xFF;
3365 handle->
debug_print(
"vs1053b: write bass failed.\n");
3398 if (a_check_busy_pin(handle) != 0)
3408 handle->
debug_print(
"vs1053b: read bass failed.\n");
3412 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3413 *db = ((prev >> 4) & 0x0F);
3450 if (a_check_busy_pin(handle) != 0)
3460 handle->
debug_print(
"vs1053b: read bass failed.\n");
3464 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3465 prev &= ~(0xF << 0);
3467 buf[0] = (prev >> 8) & 0xFF;
3468 buf[1] = (prev >> 0) & 0xFF;
3472 handle->
debug_print(
"vs1053b: write bass failed.\n");
3505 if (a_check_busy_pin(handle) != 0)
3515 handle->
debug_print(
"vs1053b: read bass failed.\n");
3519 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3520 *step = ((prev >> 0) & 0x0F);
3547 *reg = (uint8_t)(hz / 10);
3574 *hz = (uint32_t)(reg) * 10;
3604 if (a_check_busy_pin(handle) != 0)
3614 handle->
debug_print(
"vs1053b: read clock failed.\n");
3618 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3619 prev &= ~(0x7 << 13);
3620 prev |= multiplier << 13;
3621 buf[0] = (prev >> 8) & 0xFF;
3622 buf[1] = (prev >> 0) & 0xFF;
3626 handle->
debug_print(
"vs1053b: write clock failed.\n");
3659 if (a_check_busy_pin(handle) != 0)
3669 handle->
debug_print(
"vs1053b: read clock failed.\n");
3673 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3704 if (a_check_busy_pin(handle) != 0)
3714 handle->
debug_print(
"vs1053b: read clock failed.\n");
3718 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3719 prev &= ~(0x3 << 11);
3720 prev |= addition << 11;
3721 buf[0] = (prev >> 8) & 0xFF;
3722 buf[1] = (prev >> 0) & 0xFF;
3726 handle->
debug_print(
"vs1053b: write clock failed.\n");
3759 if (a_check_busy_pin(handle) != 0)
3769 handle->
debug_print(
"vs1053b: read clock failed.\n");
3773 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3811 if (a_check_busy_pin(handle) != 0)
3821 handle->
debug_print(
"vs1053b: read clock failed.\n");
3825 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3826 prev &= ~(0x3FF << 0);
3828 buf[0] = (prev >> 8) & 0xFF;
3829 buf[1] = (prev >> 0) & 0xFF;
3833 handle->
debug_print(
"vs1053b: write clock failed.\n");
3866 if (a_check_busy_pin(handle) != 0)
3876 handle->
debug_print(
"vs1053b: read clock failed.\n");
3880 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
3881 *clk = ((prev >> 0) & 0x3FF);
3908 *reg = (uint16_t)((hz - 8000000.0f) / 4000.0f);
3935 *hz = (float)((
float)reg * 4000.0f + 8000000.0f);
3964 if (a_check_busy_pin(handle) != 0)
3971 buf[0] = (decode_time >> 8) & 0xFF;
3972 buf[1] = (decode_time >> 0) & 0xFF;
3976 handle->
debug_print(
"vs1053b: write decode time failed.\n");
3980 if (a_check_busy_pin(handle) != 0)
3989 handle->
debug_print(
"vs1053b: write decode time failed.\n");
4021 if (a_check_busy_pin(handle) != 0)
4031 handle->
debug_print(
"vs1053b: read decode time failed.\n");
4035 *decode_time = ((uint16_t)(buf[0]) << 8) | buf[1];
4066 if (a_check_busy_pin(handle) != 0)
4073 prev = rate | channel;
4074 buf[0] = (prev >> 8) & 0xFF;
4075 buf[1] = (prev >> 0) & 0xFF;
4079 handle->
debug_print(
"vs1053b: write audata failed.\n");
4113 if (a_check_busy_pin(handle) != 0)
4123 handle->
debug_print(
"vs1053b: read audata failed.\n");
4127 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
4128 *rate = prev & (~(1 << 0));
4158 if (a_check_busy_pin(handle) != 0)
4168 handle->
debug_print(
"vs1053b: write ram failed.\n");
4200 if (a_check_busy_pin(handle) != 0)
4210 handle->
debug_print(
"vs1053b: read ram failed.\n");
4242 if (a_check_busy_pin(handle) != 0)
4249 buf[0] = (addr >> 8) & 0xFF;
4250 buf[1] = (addr >> 0) & 0xFF;
4254 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
4287 if (a_check_busy_pin(handle) != 0)
4297 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
4301 *dat0 = ((uint16_t)(buf[0]) << 8) | buf[1];
4305 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
4309 *dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
4338 if (a_check_busy_pin(handle) != 0)
4348 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
4352 *dat0 = ((uint16_t)(buf[0]) << 8) | buf[1];
4381 if (a_check_busy_pin(handle) != 0)
4391 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
4395 *dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
4424 if (a_check_busy_pin(handle) != 0)
4431 buf[0] = (addr >> 8) & 0xFF;
4432 buf[1] = (addr >> 0) & 0xFF;
4436 handle->
debug_print(
"vs1053b: write aiaddr failed.\n");
4468 if (a_check_busy_pin(handle) != 0)
4478 handle->
debug_print(
"vs1053b: read aiaddr failed.\n");
4482 *addr = ((uint16_t)(buf[0]) << 8) | buf[1];
4513 if (a_check_busy_pin(handle) != 0)
4520 prev = (uint16_t)left << 8 | right;
4521 buf[0] = (prev >> 8) & 0xFF;
4522 buf[1] = (prev >> 0) & 0xFF;
4526 handle->
debug_print(
"vs1053b: write vol failed.\n");
4559 if (a_check_busy_pin(handle) != 0)
4569 handle->
debug_print(
"vs1053b: read vol failed.\n");
4601 *reg = (uint8_t)(fabsf(db) / 0.5f);
4628 *db = (float)(reg * 0.5f);
4658 if (a_check_busy_pin(handle) != 0)
4670 handle->
debug_print(
"vs1053b: write aictrl0 failed.\n");
4680 handle->
debug_print(
"vs1053b: write aictrl1 failed.\n");
4690 handle->
debug_print(
"vs1053b: write aictrl2 failed.\n");
4700 handle->
debug_print(
"vs1053b: write aictrl3 failed.\n");
4734 if (a_check_busy_pin(handle) != 0)
4746 handle->
debug_print(
"vs1053b: read aictrl0 failed.\n");
4756 handle->
debug_print(
"vs1053b: read aictrl1 failed.\n");
4766 handle->
debug_print(
"vs1053b: write aictrl2 failed.\n");
4776 handle->
debug_print(
"vs1053b: write aictrl3 failed.\n");
4811 if (a_check_busy_pin(handle) != 0)
4818 buf[0] = (prev >> 8) & 0xFF;
4819 buf[1] = (prev >> 0) & 0xFF;
4823 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
4828 if (a_check_busy_pin(handle) != 0)
4835 buf[0] = (prev >> 8) & 0xFF;
4836 buf[1] = (prev >> 0) & 0xFF;
4840 handle->
debug_print(
"vs1053b: write ram failed.\n");
4874 if (a_check_busy_pin(handle) != 0)
4881 buf[0] = (prev >> 8) & 0xFF;
4882 buf[1] = (prev >> 0) & 0xFF;
4886 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
4891 if (a_check_busy_pin(handle) != 0)
4900 handle->
debug_print(
"vs1053b: read ram failed.\n");
4904 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
4936 if (a_check_busy_pin(handle) != 0)
4943 buf[0] = (prev >> 8) & 0xFF;
4944 buf[1] = (prev >> 0) & 0xFF;
4948 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
4953 if (a_check_busy_pin(handle) != 0)
4962 handle->
debug_print(
"vs1053b: read ram failed.\n");
4966 *rate = ((uint16_t)(buf[0]) << 8) | buf[1];
4997 if (a_check_busy_pin(handle) != 0)
5004 buf[0] = (prev >> 8) & 0xFF;
5005 buf[1] = (prev >> 0) & 0xFF;
5009 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5014 if (a_check_busy_pin(handle) != 0)
5023 handle->
debug_print(
"vs1053b: read ram failed.\n");
5027 *
byte = ((uint16_t)(buf[0]) << 8) | buf[1];
5059 if (a_check_busy_pin(handle) != 0)
5066 buf[0] = (prev >> 8) & 0xFF;
5067 buf[1] = (prev >> 0) & 0xFF;
5071 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5076 if (a_check_busy_pin(handle) != 0)
5085 handle->
debug_print(
"vs1053b: read ram failed.\n");
5089 prev2 = ((uint16_t)(buf[0]) << 8) | buf[1];
5091 if (a_check_busy_pin(handle) != 0)
5098 buf[0] = (prev >> 8) & 0xFF;
5099 buf[1] = (prev >> 0) & 0xFF;
5103 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5108 if (a_check_busy_pin(handle) != 0)
5115 prev2 |= enable << 3;
5116 buf[0] = (prev2 >> 8) & 0xFF;
5117 buf[1] = (prev2 >> 0) & 0xFF;
5121 handle->
debug_print(
"vs1053b: write ram failed.\n");
5155 if (a_check_busy_pin(handle) != 0)
5162 buf[0] = (prev >> 8) & 0xFF;
5163 buf[1] = (prev >> 0) & 0xFF;
5167 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5172 if (a_check_busy_pin(handle) != 0)
5181 handle->
debug_print(
"vs1053b: read ram failed.\n");
5185 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
5186 buf[0] = (prev >> 8) & 0xFF;
5187 buf[1] = (prev >> 0) & 0xFF;
5220 if (a_check_busy_pin(handle) != 0)
5227 buf[0] = (prev >> 8) & 0xFF;
5228 buf[1] = (prev >> 0) & 0xFF;
5232 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5237 if (a_check_busy_pin(handle) != 0)
5246 handle->
debug_print(
"vs1053b: read ram failed.\n");
5250 prev2 = ((uint16_t)(buf[0]) << 8) | buf[1];
5252 if (a_check_busy_pin(handle) != 0)
5259 buf[0] = (prev >> 8) & 0xFF;
5260 buf[1] = (prev >> 0) & 0xFF;
5264 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5269 if (a_check_busy_pin(handle) != 0)
5276 prev2 |= enable << 2;
5277 buf[0] = (prev2 >> 8) & 0xFF;
5278 buf[1] = (prev2 >> 0) & 0xFF;
5282 handle->
debug_print(
"vs1053b: write ram failed.\n");
5316 if (a_check_busy_pin(handle) != 0)
5323 buf[0] = (prev >> 8) & 0xFF;
5324 buf[1] = (prev >> 0) & 0xFF;
5328 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5333 if (a_check_busy_pin(handle) != 0)
5342 handle->
debug_print(
"vs1053b: read ram failed.\n");
5346 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
5347 buf[0] = (prev >> 8) & 0xFF;
5348 buf[1] = (prev >> 0) & 0xFF;
5381 if (a_check_busy_pin(handle) != 0)
5388 buf[0] = (prev >> 8) & 0xFF;
5389 buf[1] = (prev >> 0) & 0xFF;
5393 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5398 if (a_check_busy_pin(handle) != 0)
5407 handle->
debug_print(
"vs1053b: read ram failed.\n");
5411 prev2 = ((uint16_t)(buf[0]) << 8) | buf[1];
5413 if (a_check_busy_pin(handle) != 0)
5420 buf[0] = (prev >> 8) & 0xFF;
5421 buf[1] = (prev >> 0) & 0xFF;
5425 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5430 if (a_check_busy_pin(handle) != 0)
5437 prev2 |= iis_rate << 0;
5438 buf[0] = (prev2 >> 8) & 0xFF;
5439 buf[1] = (prev2 >> 0) & 0xFF;
5443 handle->
debug_print(
"vs1053b: write ram failed.\n");
5477 if (a_check_busy_pin(handle) != 0)
5484 buf[0] = (prev >> 8) & 0xFF;
5485 buf[1] = (prev >> 0) & 0xFF;
5489 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5494 if (a_check_busy_pin(handle) != 0)
5503 handle->
debug_print(
"vs1053b: read ram failed.\n");
5507 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
5508 buf[0] = (prev >> 8) & 0xFF;
5509 buf[1] = (prev >> 0) & 0xFF;
5542 if (a_check_busy_pin(handle) != 0)
5549 buf[0] = (prev >> 8) & 0xFF;
5550 buf[1] = (prev >> 0) & 0xFF;
5554 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5559 if (a_check_busy_pin(handle) != 0)
5568 handle->
debug_print(
"vs1053b: read ram failed.\n");
5572 prev2 = ((uint16_t)(buf[0]) << 8) | buf[1];
5574 if (a_check_busy_pin(handle) != 0)
5581 buf[0] = (prev >> 8) & 0xFF;
5582 buf[1] = (prev >> 0) & 0xFF;
5586 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5591 if (a_check_busy_pin(handle) != 0)
5599 buf[0] = (prev2 >> 8) & 0xFF;
5600 buf[1] = (prev2 >> 0) & 0xFF;
5604 handle->
debug_print(
"vs1053b: write ram failed.\n");
5638 if (a_check_busy_pin(handle) != 0)
5645 buf[0] = (prev >> 8) & 0xFF;
5646 buf[1] = (prev >> 0) & 0xFF;
5650 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5655 if (a_check_busy_pin(handle) != 0)
5664 handle->
debug_print(
"vs1053b: read ram failed.\n");
5668 *mask = ((uint16_t)(buf[0]) << 8) | buf[1];
5699 if (a_check_busy_pin(handle) != 0)
5706 buf[0] = (prev >> 8) & 0xFF;
5707 buf[1] = (prev >> 0) & 0xFF;
5711 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5716 if (a_check_busy_pin(handle) != 0)
5725 handle->
debug_print(
"vs1053b: read ram failed.\n");
5729 *data = ((uint16_t)(buf[0]) << 8) | buf[1];
5761 if (a_check_busy_pin(handle) != 0)
5768 buf[0] = (prev >> 8) & 0xFF;
5769 buf[1] = (prev >> 0) & 0xFF;
5773 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5778 if (a_check_busy_pin(handle) != 0)
5787 handle->
debug_print(
"vs1053b: read ram failed.\n");
5791 prev2 = ((uint16_t)(buf[0]) << 8) | buf[1];
5793 if (a_check_busy_pin(handle) != 0)
5800 buf[0] = (prev >> 8) & 0xFF;
5801 buf[1] = (prev >> 0) & 0xFF;
5805 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5810 if (a_check_busy_pin(handle) != 0)
5818 buf[0] = (prev2 >> 8) & 0xFF;
5819 buf[1] = (prev2 >> 0) & 0xFF;
5823 handle->
debug_print(
"vs1053b: write ram failed.\n");
5857 if (a_check_busy_pin(handle) != 0)
5864 buf[0] = (prev >> 8) & 0xFF;
5865 buf[1] = (prev >> 0) & 0xFF;
5869 handle->
debug_print(
"vs1053b: write ram addr failed.\n");
5874 if (a_check_busy_pin(handle) != 0)
5883 handle->
debug_print(
"vs1053b: read ram failed.\n");
5887 *data = ((uint16_t)(buf[0]) << 8) | buf[1];
5973 handle->
debug_print(
"vs1053b: spi_cmd_init is null.\n");
5979 handle->
debug_print(
"vs1053b: spi_cmd_deinit is null.\n");
5985 handle->
debug_print(
"vs1053b: spi_cmd_write_address16 is null.\n");
5991 handle->
debug_print(
"vs1053b: spi_cmd_read_address16 is null.\n");
5997 handle->
debug_print(
"vs1053b: spi_dat_init is null.\n");
6003 handle->
debug_print(
"vs1053b: spi_dat_deinit is null.\n");
6009 handle->
debug_print(
"vs1053b: spi_dat_write_cmd is null.\n");
6015 handle->
debug_print(
"vs1053b: reset_gpio_init is null.\n");
6021 handle->
debug_print(
"vs1053b: reset_gpio_deinit is null.\n");
6027 handle->
debug_print(
"vs1053b: reset_gpio_write is null.\n");
6033 handle->
debug_print(
"vs1053b: dreq_gpio_init is null.\n");
6039 handle->
debug_print(
"vs1053b: dreq_gpio_deinit is null.\n");
6045 handle->
debug_print(
"vs1053b: dreq_gpio_read is null.\n");
6051 handle->
debug_print(
"vs1053b: audio_init is null.\n");
6057 handle->
debug_print(
"vs1053b: audio_deinit is null.\n");
6063 handle->
debug_print(
"vs1053b: audio_read is null.\n");
6069 handle->
debug_print(
"vs1053b: audio_write is null.\n");
6075 handle->
debug_print(
"vs1053b: timestamp_read is null.\n");
6081 handle->
debug_print(
"vs1053b: delay_ms is null.\n");
6087 handle->
debug_print(
"vs1053b: receive_callback is null.\n");
6094 handle->
debug_print(
"vs1053b: reset gpio init failed.\n");
6100 handle->
debug_print(
"vs1053b: dreq gpio init failed.\n");
6107 handle->
debug_print(
"vs1053b: spi cmd init failed.\n");
6115 handle->
debug_print(
"vs1053b: spi dat init failed.\n");
6126 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
6138 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
6147 if (a_check_busy_pin(handle) != 0)
6160 handle->
debug_print(
"vs1053b: read mode failed.\n");
6168 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
6171 buf[0] = (prev >> 8) & 0xFF;
6172 buf[1] = (prev >> 0) & 0xFF;
6176 handle->
debug_print(
"vs1053b: write mode failed.\n");
6185 if (a_check_busy_pin(handle) != 0)
6196 while (timeout != 0)
6201 handle->
debug_print(
"vs1053b: read mode failed.\n");
6209 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
6210 if (((prev >> 2) & 0x01) == 0)
6269 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
6277 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
6285 handle->
debug_print(
"vs1053b: spi cmd deinit failed.\n");
6292 handle->
debug_print(
"vs1053b: spi dat deinit failed.\n");
6299 handle->
debug_print(
"vs1053b: dreq gpio deinit failed.\n");
6306 handle->
debug_print(
"vs1053b: reset gpio deinit failed.\n");
6352 if (a_check_busy_pin(handle) == 0)
6360 handle->
debug_print(
"vs1053b: audio read failed.\n");
6375 handle->
debug_print(
"vs1053b: fill buffer failed.\n");
6387 if (a_vs1053b_stop(handle) != 0)
6393 handle->
debug_print(
"vs1053b: audio deinit failed.\n");
6424 if (a_check_busy_pin(handle) != 0)
6433 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6437 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
6443 for (j = 0; j < l; j++)
6448 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
6452 handle->
buf[i++] = buf[0];
6453 handle->
buf[i++] = buf[1];
6463 handle->
debug_print(
"vs1053b: audio write failed.\n");
6478 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
6485 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6492 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6496 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
6497 if (!(dat1 & (1 << 2)))
6502 handle->
debug_print(
"vs1053b: audio write failed.\n");
6513 handle->
debug_print(
"vs1053b: audio write failed.\n");
6535 if (a_check_busy_pin(handle) != 0)
6544 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6548 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
6549 if ((dat1 >= 256) && (dat1 < 896))
6557 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
6561 handle->
buf[i++] = buf[1];
6562 handle->
buf[i++] = buf[0];
6572 handle->
debug_print(
"vs1053b: audio write failed.\n");
6583 else if (dat1 >= 896)
6591 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
6595 handle->
buf[i++] = buf[1];
6596 handle->
buf[i++] = buf[0];
6608 handle->
debug_print(
"vs1053b: buffer is over.\n");
6620 handle->
debug_print(
"vs1053b: status is invalid.\n");
6691 if (handle->
pause != 0)
6698 res = a_vs1053b_stop(handle);
6706 handle->
debug_print(
"vs1053b: audio init failed.\n");
6711 handle->
timestamp = (((uint64_t)sec) * 1000000 + ((uint64_t)us));
6755 if (handle->
pause != 0)
6765 handle->
debug_print(
"vs1053b: audio init failed.\n");
6774 if (sample_rate != 8000)
6777 "doesn't match path.\n");
6785 if (sample_rate != 16000)
6788 "doesn't match path.\n");
6796 if (sample_rate != 44100)
6799 "doesn't match path.\n");
6807 "doesn't match path.\n");
6812 if (a_check_busy_pin(handle) != 0)
6823 handle->
debug_print(
"vs1053b: write aiaddr failed.\n");
6856 if (a_vs1053b_write_wav_header(handle, &handle->
wav) != 0)
6863 handle->
timestamp = (((uint64_t)sec) * 1000000 + ((uint64_t)us));
6898 handle->
debug_print(
"vs1053b: audio not working.\n");
6905 if (a_vs1053b_stop(handle) != 0)
6911 handle->
debug_print(
"vs1053b: audio deinit failed.\n");
6924 else if (handle->
status == 2)
6940 if (a_check_busy_pin(handle) != 0)
6951 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6956 if (a_check_busy_pin(handle) != 0)
6965 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6969 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
6971 if (a_check_busy_pin(handle) != 0)
6980 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
6984 ll = ((uint16_t)(buf[0]) << 8) | buf[1];
6985 if ((ll & (1 << 1)) != 0)
6987 if (a_check_busy_pin(handle) != 0)
6996 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
7000 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
7007 if (((ll & (1 << 1)) != 0) && (!dat1))
7012 for (j = 0; j < l; j++)
7017 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
7021 handle->
buf[i++] = buf[0];
7022 handle->
buf[i++] = buf[1];
7032 handle->
debug_print(
"vs1053b: audio write failed.\n");
7047 handle->
debug_print(
"vs1053b: read hdat0 failed.\n");
7054 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
7061 handle->
debug_print(
"vs1053b: read hdat1 failed.\n");
7065 dat1 = ((uint16_t)(buf[0]) << 8) | buf[1];
7066 if (!(dat1 & (1 << 2)))
7071 handle->
debug_print(
"vs1053b: audio write failed.\n");
7082 handle->
debug_print(
"vs1053b: audio write failed.\n");
7093 if (a_check_busy_pin(handle) != 0)
7103 handle->
debug_print(
"vs1053b: read mode failed.\n");
7107 prev = ((uint16_t)(buf[0]) << 8) | buf[1];
7110 buf[0] = (prev >> 8) & 0xFF;
7111 buf[1] = (prev >> 0) & 0xFF;
7115 handle->
debug_print(
"vs1053b: write mode failed.\n");
7121 if (a_vs1053b_write_wav_header(handle, &handle->
wav) != 0)
7128 handle->
debug_print(
"vs1053b: audio deinit failed.\n");
7142 handle->
debug_print(
"vs1053b: status is invalid.\n");
7174 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
7182 handle->
debug_print(
"vs1053b: reset gpio write failed.\n");
7186 if (a_check_busy_pin(handle) != 0)
7219 handle->
period = (((uint64_t)second) * 1000000 + ((uint64_t)microsecond));
7248 *second = (handle->
period / 1000000) & 0xFFFFFFFF;
7249 *microsecond = (handle->
period % 1000000) & 0xFFFFFFFF;
7269 const float bitrate[2][16]= {{0.0f, 8.0f, 16.0f, 24.0f, 32.0f, 40.0f, 48.0f, 56.0f, 64.0f,
7270 80.0f, 96.0f, 112.0f, 128.0f, 144.0f, 160.0f, 0.0f},
7271 {0.0f, 32.0f, 40.0f, 48.0f, 56.0f, 64.0f, 80.0f, 96.0f, 112.0f,
7272 128.0f, 160.0f, 192.0f, 224.0f, 256.0f, 320.0f, 0.0f}};
7290 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7299 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7308 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7317 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7326 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7335 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7344 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7353 info->
kbps = (float)(dat0) * 8.0f / 1000.0f;
7364 tmp = (dat1 >> 3) & 0x03;
7367 info->
kbps = bitrate[1][(dat0 >> 12) & 0xF];
7371 info->
kbps = bitrate[0][(dat0 >> 12) & 0xF];
7406 *patch_addr = gsc_vs1053b_patch_flac_plugin;
7409#if VS1053B_OGG_VENC08K1Q00 != 0
7416#if VS1053B_OGG_VENC08K1Q01 != 0
7423#if VS1053B_OGG_VENC08K1Q02 != 0
7430#if VS1053B_OGG_VENC08K1Q03 != 0
7437#if VS1053B_OGG_VENC08K1Q04 != 0
7444#if VS1053B_OGG_VENC08K1Q05 != 0
7451#if VS1053B_OGG_VENC08K1Q06 != 0
7458#if VS1053B_OGG_VENC08K1Q07 != 0
7465#if VS1053B_OGG_VENC08K1Q08 != 0
7472#if VS1053B_OGG_VENC08K1Q09 != 0
7479#if VS1053B_OGG_VENC08K1Q10 != 0
7486#if VS1053B_OGG_VENC16K1Q00 != 0
7493#if VS1053B_OGG_VENC16K1Q01 != 0
7500#if VS1053B_OGG_VENC16K1Q02 != 0
7507#if VS1053B_OGG_VENC16K1Q03 != 0
7514#if VS1053B_OGG_VENC16K1Q04 != 0
7521#if VS1053B_OGG_VENC16K1Q05 != 0
7528#if VS1053B_OGG_VENC16K1Q06 != 0
7535#if VS1053B_OGG_VENC16K1Q07 != 0
7542#if VS1053B_OGG_VENC16K1Q08 != 0
7549#if VS1053B_OGG_VENC16K1Q09 != 0
7556#if VS1053B_OGG_VENC16K1Q10 != 0
7563#if VS1053B_OGG_VENC16K2Q00 != 0
7570#if VS1053B_OGG_VENC16K2Q01 != 0
7577#if VS1053B_OGG_VENC16K2Q02 != 0
7584#if VS1053B_OGG_VENC16K2Q03 != 0
7591#if VS1053B_OGG_VENC16K2Q04 != 0
7598#if VS1053B_OGG_VENC16K2Q05 != 0
7605#if VS1053B_OGG_VENC16K2Q06 != 0
7612#if VS1053B_OGG_VENC16K2Q07 != 0
7619#if VS1053B_OGG_VENC16K2Q08 != 0
7626#if VS1053B_OGG_VENC16K2Q09 != 0
7633#if VS1053B_OGG_VENC16K2Q10 != 0
7640#if VS1053B_OGG_VENC44K1Q00 != 0
7647#if VS1053B_OGG_VENC44K1Q01 != 0
7654#if VS1053B_OGG_VENC44K1Q02 != 0
7661#if VS1053B_OGG_VENC44K1Q03 != 0
7668#if VS1053B_OGG_VENC44K1Q04 != 0
7675#if VS1053B_OGG_VENC44K1Q05 != 0
7682#if VS1053B_OGG_VENC44K2Q00 != 0
7689#if VS1053B_OGG_VENC44K2Q01 != 0
7696#if VS1053B_OGG_VENC44K2Q02 != 0
7703#if VS1053B_OGG_VENC44K2Q03 != 0
7710#if VS1053B_OGG_VENC44K2Q04 != 0
7717#if VS1053B_OGG_VENC44K2Q05 != 0
7726 *patch_addr = gsc_vs1053b_patch_wav_plugin;
7764 if (patch == gsc_vs1053b_patch_flac_plugin)
7768#if VS1053B_OGG_VENC08K1Q00 != 0
7774#if VS1053B_OGG_VENC08K1Q01 != 0
7780#if VS1053B_OGG_VENC08K1Q02 != 0
7786#if VS1053B_OGG_VENC08K1Q03 != 0
7792#if VS1053B_OGG_VENC08K1Q04 != 0
7798#if VS1053B_OGG_VENC08K1Q05 != 0
7804#if VS1053B_OGG_VENC08K1Q06 != 0
7810#if VS1053B_OGG_VENC08K1Q07 != 0
7816#if VS1053B_OGG_VENC08K1Q08 != 0
7822#if VS1053B_OGG_VENC08K1Q09 != 0
7828#if VS1053B_OGG_VENC08K1Q10 != 0
7834#if VS1053B_OGG_VENC16K1Q00 != 0
7840#if VS1053B_OGG_VENC16K1Q01 != 0
7846#if VS1053B_OGG_VENC16K1Q02 != 0
7852#if VS1053B_OGG_VENC16K1Q03 != 0
7858#if VS1053B_OGG_VENC16K1Q04 != 0
7864#if VS1053B_OGG_VENC16K1Q05 != 0
7870#if VS1053B_OGG_VENC16K1Q06 != 0
7876#if VS1053B_OGG_VENC16K1Q07 != 0
7882#if VS1053B_OGG_VENC16K1Q08 != 0
7888#if VS1053B_OGG_VENC16K1Q09 != 0
7894#if VS1053B_OGG_VENC16K1Q10 != 0
7900#if VS1053B_OGG_VENC16K2Q00 != 0
7906#if VS1053B_OGG_VENC16K2Q01 != 0
7912#if VS1053B_OGG_VENC16K2Q02 != 0
7918#if VS1053B_OGG_VENC16K2Q03 != 0
7924#if VS1053B_OGG_VENC16K2Q04 != 0
7930#if VS1053B_OGG_VENC16K2Q05 != 0
7936#if VS1053B_OGG_VENC16K2Q06 != 0
7942#if VS1053B_OGG_VENC16K2Q07 != 0
7948#if VS1053B_OGG_VENC16K2Q08 != 0
7954#if VS1053B_OGG_VENC16K2Q09 != 0
7960#if VS1053B_OGG_VENC16K2Q10 != 0
7966#if VS1053B_OGG_VENC44K1Q00 != 0
7972#if VS1053B_OGG_VENC44K1Q01 != 0
7978#if VS1053B_OGG_VENC44K1Q02 != 0
7984#if VS1053B_OGG_VENC44K1Q03 != 0
7990#if VS1053B_OGG_VENC44K1Q04 != 0
7996#if VS1053B_OGG_VENC44K1Q05 != 0
8002#if VS1053B_OGG_VENC44K2Q00 != 0
8008#if VS1053B_OGG_VENC44K2Q01 != 0
8014#if VS1053B_OGG_VENC44K2Q02 != 0
8020#if VS1053B_OGG_VENC44K2Q03 != 0
8026#if VS1053B_OGG_VENC44K2Q04 != 0
8032#if VS1053B_OGG_VENC44K2Q05 != 0
8038 else if (patch == gsc_vs1053b_patch_wav_plugin)
8044 handle->
debug_print(
"vs1053b: invalid path address.\n");
8054 if ((n & 0x8000U) != 0)
8060 buf[0] = (val >> 8) & 0xFF;
8061 buf[1] = (val >> 0) & 0xFF;
8062 res = a_vs1053b_spi_write(handle, (uint8_t)addr, buf, 2);
8065 handle->
debug_print(
"vs1053b: load patch failed.\n");
8076 buf[0] = (val >> 8) & 0xFF;
8077 buf[1] = (val >> 0) & 0xFF;
8078 res = a_vs1053b_spi_write(handle, (uint8_t)addr, buf, 2);
8081 handle->
debug_print(
"vs1053b: load patch failed.\n");
8115 return a_vs1053b_spi_write_data(handle, buf, len);
8141 if (a_check_busy_pin(handle) != 0)
8148 return a_vs1053b_spi_write(handle, reg, buf, len);
8174 if (a_check_busy_pin(handle) != 0)
8181 return a_vs1053b_spi_read(handle, reg, buf, len);
#define VS1053B_REG_CLOCKF
#define VS1053B_REG_DECODE_TIME
#define VS1053B_REG_HDAT0
#define VS1053B_REG_WRAMADDR
#define VS1053B_REG_MODE
chip register definition
#define VS1053B_REG_STATUS
#define VS1053B_STATUS_STOP
chip status definition
#define MIN(a, b)
inner function definition
#define VS1053B_REG_AICTRL2
#define VS1053B_REG_AUDATA
#define SUPPLY_VOLTAGE_MAX
#define MANUFACTURER_NAME
#define SUPPLY_VOLTAGE_MIN
#define VS1053B_COMMAND_READ
chip command definition
#define VS1053B_REG_AICTRL1
#define VS1053B_REG_AICTRL0
#define VS1053B_STATUS_RECORD
#define VS1053B_REG_AICTRL3
#define VS1053B_REG_AIADDR
#define VS1053B_REG_HDAT1
#define CHIP_NAME
chip information definition
#define VS1053B_STATUS_PLAY
#define VS1053B_COMMAND_WRITE
driver vs1053b header file
driver vs1053b patch flac header file
#define VS1053B_PATCH_FLAC_PLUGIN_SIZE
vs1053b patch flac plugin size definition
driver vs1053b patch ogg venc08k1q00 header file
#define VS1053B_PATCH_OGG_VENC08K1Q00_PLUGIN_SIZE
vs1053b patch ogg venc08k1q00 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q00_plugin[VS1053B_PATCH_OGG_VENC08K1Q00_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q00 plugin definition
driver vs1053b patch ogg venc08k1q01 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q01_plugin[VS1053B_PATCH_OGG_VENC08K1Q01_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q01 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q01_PLUGIN_SIZE
vs1053b patch ogg venc08k1q01 plugin size definition
driver vs1053b patch ogg venc08k1q02 header file
#define VS1053B_PATCH_OGG_VENC08K1Q02_PLUGIN_SIZE
vs1053b patch ogg venc08k1q02 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q02_plugin[VS1053B_PATCH_OGG_VENC08K1Q02_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q02 plugin definition
driver vs1053b patch ogg venc08k1q03 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q03_plugin[VS1053B_PATCH_OGG_VENC08K1Q03_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q03 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q03_PLUGIN_SIZE
vs1053b patch ogg venc08k1q03 plugin size definition
driver vs1053b patch ogg venc08k1q04 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q04_plugin[VS1053B_PATCH_OGG_VENC08K1Q04_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q04 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q04_PLUGIN_SIZE
vs1053b patch ogg venc08k1q04 plugin size definition
driver vs1053b patch ogg venc08k1q05 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q05_plugin[VS1053B_PATCH_OGG_VENC08K1Q05_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q05 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q05_PLUGIN_SIZE
vs1053b patch ogg venc08k1q05 plugin size definition
driver vs1053b patch ogg venc08k1q06 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q06_plugin[VS1053B_PATCH_OGG_VENC08K1Q06_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q06 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q06_PLUGIN_SIZE
vs1053b patch ogg venc08k1q06 plugin size definition
driver vs1053b patch ogg venc08k1q07 header file
#define VS1053B_PATCH_OGG_VENC08K1Q07_PLUGIN_SIZE
vs1053b patch ogg venc08k1q07 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q07_plugin[VS1053B_PATCH_OGG_VENC08K1Q07_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q07 plugin definition
driver vs1053b patch ogg venc08k1q08 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q08_plugin[VS1053B_PATCH_OGG_VENC08K1Q08_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q08 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q08_PLUGIN_SIZE
vs1053b patch ogg venc08k1q08 plugin size definition
driver vs1053b patch ogg venc08k1q09 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q09_plugin[VS1053B_PATCH_OGG_VENC08K1Q09_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q09 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q09_PLUGIN_SIZE
vs1053b patch ogg venc08k1q09 plugin size definition
driver vs1053b patch ogg venc08k1q10 header file
const uint16_t gsc_vs1053b_patch_ogg_venc08k1q10_plugin[VS1053B_PATCH_OGG_VENC08K1Q10_PLUGIN_SIZE]
vs1053b patch ogg venc08k1q10 plugin definition
#define VS1053B_PATCH_OGG_VENC08K1Q10_PLUGIN_SIZE
vs1053b patch ogg venc08k1q10 plugin size definition
driver vs1053b patch ogg venc16k1q00 header file
#define VS1053B_PATCH_OGG_VENC16K1Q00_PLUGIN_SIZE
vs1053b patch ogg venc16k1q00 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q00_plugin[VS1053B_PATCH_OGG_VENC16K1Q00_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q00 plugin definition
driver vs1053b patch ogg venc16k1q01 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q01_plugin[VS1053B_PATCH_OGG_VENC16K1Q01_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q01 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q01_PLUGIN_SIZE
vs1053b patch ogg venc16k1q01 plugin size definition
driver vs1053b patch ogg venc16k1q02 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q02_plugin[VS1053B_PATCH_OGG_VENC16K1Q02_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q02 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q02_PLUGIN_SIZE
vs1053b patch ogg venc16k1q02 plugin size definition
driver vs1053b patch ogg venc16k1q03 header file
#define VS1053B_PATCH_OGG_VENC16K1Q03_PLUGIN_SIZE
vs1053b patch ogg venc16k1q03 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q03_plugin[VS1053B_PATCH_OGG_VENC16K1Q03_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q03 plugin definition
driver vs1053b patch ogg venc16k1q04 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q04_plugin[VS1053B_PATCH_OGG_VENC16K1Q04_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q04 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q04_PLUGIN_SIZE
vs1053b patch ogg venc16k1q04 plugin size definition
driver vs1053b patch ogg venc16k1q05 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q05_plugin[VS1053B_PATCH_OGG_VENC16K1Q05_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q05 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q05_PLUGIN_SIZE
vs1053b patch ogg venc16k1q05 plugin size definition
driver vs1053b patch ogg venc16k1q06 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q06_plugin[VS1053B_PATCH_OGG_VENC16K1Q06_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q06 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q06_PLUGIN_SIZE
vs1053b patch ogg venc16k1q06 plugin size definition
driver vs1053b patch ogg venc16k1q07 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q07_plugin[VS1053B_PATCH_OGG_VENC16K1Q07_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q07 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q07_PLUGIN_SIZE
vs1053b patch ogg venc16k1q07 plugin size definition
driver vs1053b patch ogg venc16k1q08 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q08_plugin[VS1053B_PATCH_OGG_VENC16K1Q08_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q08 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q08_PLUGIN_SIZE
vs1053b patch ogg venc16k1q08 plugin size definition
driver vs1053b patch ogg venc16k1q09 header file
#define VS1053B_PATCH_OGG_VENC16K1Q09_PLUGIN_SIZE
vs1053b patch ogg venc16k1q09 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q09_plugin[VS1053B_PATCH_OGG_VENC16K1Q09_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q09 plugin definition
driver vs1053b patch ogg venc16k1q10 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k1q10_plugin[VS1053B_PATCH_OGG_VENC16K1Q10_PLUGIN_SIZE]
vs1053b patch ogg venc16k1q10 plugin definition
#define VS1053B_PATCH_OGG_VENC16K1Q10_PLUGIN_SIZE
vs1053b patch ogg venc16k1q10 plugin size definition
driver vs1053b patch ogg venc16k2q00 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q00_plugin[VS1053B_PATCH_OGG_VENC16K2Q00_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q00 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q00_PLUGIN_SIZE
vs1053b patch ogg venc16k2q00 plugin size definition
driver vs1053b patch ogg venc16k2q01 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q01_plugin[VS1053B_PATCH_OGG_VENC16K2Q01_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q01 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q01_PLUGIN_SIZE
vs1053b patch ogg venc16k2q01 plugin size definition
driver vs1053b patch ogg venc16k2q02 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q02_plugin[VS1053B_PATCH_OGG_VENC16K2Q02_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q02 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q02_PLUGIN_SIZE
vs1053b patch ogg venc16k2q02 plugin size definition
driver vs1053b patch ogg venc16k2q03 header file
#define VS1053B_PATCH_OGG_VENC16K2Q03_PLUGIN_SIZE
vs1053b patch ogg venc16k2q03 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q03_plugin[VS1053B_PATCH_OGG_VENC16K2Q03_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q03 plugin definition
driver vs1053b patch ogg venc16k2q04 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q04_plugin[VS1053B_PATCH_OGG_VENC16K2Q04_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q04 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q04_PLUGIN_SIZE
vs1053b patch ogg venc16k2q04 plugin size definition
driver vs1053b patch ogg venc16k2q05 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q05_plugin[VS1053B_PATCH_OGG_VENC16K2Q05_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q05 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q05_PLUGIN_SIZE
vs1053b patch ogg venc16k2q05 plugin size definition
driver vs1053b patch ogg venc16k2q06 header file
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q06_plugin[VS1053B_PATCH_OGG_VENC16K2Q06_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q06 plugin definition
#define VS1053B_PATCH_OGG_VENC16K2Q06_PLUGIN_SIZE
vs1053b patch ogg venc16k2q06 plugin size definition
driver vs1053b patch ogg venc16k2q07 header file
#define VS1053B_PATCH_OGG_VENC16K2Q07_PLUGIN_SIZE
vs1053b patch ogg venc16k2q07 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q07_plugin[VS1053B_PATCH_OGG_VENC16K2Q07_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q07 plugin definition
driver vs1053b patch ogg venc16k2q08 header file
#define VS1053B_PATCH_OGG_VENC16K2Q08_PLUGIN_SIZE
vs1053b patch ogg venc16k2q08 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q08_plugin[VS1053B_PATCH_OGG_VENC16K2Q08_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q08 plugin definition
driver vs1053b patch ogg venc16k2q09 header file
#define VS1053B_PATCH_OGG_VENC16K2Q09_PLUGIN_SIZE
vs1053b patch ogg venc16k2q09 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q09_plugin[VS1053B_PATCH_OGG_VENC16K2Q09_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q09 plugin definition
driver vs1053b patch ogg venc16k2q10 header file
#define VS1053B_PATCH_OGG_VENC16K2Q10_PLUGIN_SIZE
vs1053b patch ogg venc16k2q10 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc16k2q10_plugin[VS1053B_PATCH_OGG_VENC16K2Q10_PLUGIN_SIZE]
vs1053b patch ogg venc16k2q10 plugin definition
driver vs1053b patch ogg venc44k1q00 header file
#define VS1053B_PATCH_OGG_VENC44K1Q00_PLUGIN_SIZE
vs1053b patch ogg venc44k1q00 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q00_plugin[VS1053B_PATCH_OGG_VENC44K1Q00_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q00 plugin definition
driver vs1053b patch ogg venc44k1q01 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q01_plugin[VS1053B_PATCH_OGG_VENC44K1Q01_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q01 plugin definition
#define VS1053B_PATCH_OGG_VENC44K1Q01_PLUGIN_SIZE
vs1053b patch ogg venc44k1q01 plugin size definition
driver vs1053b patch ogg venc44k1q02 header file
#define VS1053B_PATCH_OGG_VENC44K1Q02_PLUGIN_SIZE
vs1053b patch ogg venc44k1q02 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q02_plugin[VS1053B_PATCH_OGG_VENC44K1Q02_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q02 plugin definition
driver vs1053b patch ogg venc44k1q03 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q03_plugin[VS1053B_PATCH_OGG_VENC44K1Q03_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q03 plugin definition
#define VS1053B_PATCH_OGG_VENC44K1Q03_PLUGIN_SIZE
vs1053b patch ogg venc44k1q03 plugin size definition
driver vs1053b patch ogg venc44k1q04 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q04_plugin[VS1053B_PATCH_OGG_VENC44K1Q04_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q04 plugin definition
#define VS1053B_PATCH_OGG_VENC44K1Q04_PLUGIN_SIZE
vs1053b patch ogg venc44k1q04 plugin size definition
driver vs1053b patch ogg venc44k1q05 header file
#define VS1053B_PATCH_OGG_VENC44K1Q05_PLUGIN_SIZE
vs1053b patch ogg venc44k1q05 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc44k1q05_plugin[VS1053B_PATCH_OGG_VENC44K1Q05_PLUGIN_SIZE]
vs1053b patch ogg venc44k1q05 plugin definition
driver vs1053b patch ogg venc44k2q00 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q00_plugin[VS1053B_PATCH_OGG_VENC44K2Q00_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q00 plugin definition
#define VS1053B_PATCH_OGG_VENC44K2Q00_PLUGIN_SIZE
vs1053b patch ogg venc44k2q00 plugin size definition
driver vs1053b patch ogg venc44k2q01 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q01_plugin[VS1053B_PATCH_OGG_VENC44K2Q01_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q01 plugin definition
#define VS1053B_PATCH_OGG_VENC44K2Q01_PLUGIN_SIZE
vs1053b patch ogg venc44k2q01 plugin size definition
driver vs1053b patch ogg venc44k2q02 header file
#define VS1053B_PATCH_OGG_VENC44K2Q02_PLUGIN_SIZE
vs1053b patch ogg venc44k2q02 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q02_plugin[VS1053B_PATCH_OGG_VENC44K2Q02_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q02 plugin definition
driver vs1053b patch ogg venc44k2q03 header file
#define VS1053B_PATCH_OGG_VENC44K2Q03_PLUGIN_SIZE
vs1053b patch ogg venc44k2q03 plugin size definition
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q03_plugin[VS1053B_PATCH_OGG_VENC44K2Q03_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q03 plugin definition
driver vs1053b patch ogg venc44k2q04 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q04_plugin[VS1053B_PATCH_OGG_VENC44K2Q04_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q04 plugin definition
#define VS1053B_PATCH_OGG_VENC44K2Q04_PLUGIN_SIZE
vs1053b patch ogg venc44k2q04 plugin size definition
driver vs1053b patch ogg venc44k2q05 header file
const uint16_t gsc_vs1053b_patch_ogg_venc44k2q05_plugin[VS1053B_PATCH_OGG_VENC44K2Q05_PLUGIN_SIZE]
vs1053b patch ogg venc44k2q05 plugin definition
#define VS1053B_PATCH_OGG_VENC44K2Q05_PLUGIN_SIZE
vs1053b patch ogg venc44k2q05 plugin size definition
driver vs1053b patch wav header file
#define VS1053B_PATCH_WAV_PLUGIN_SIZE
vs1053b patch wav plugin size definition
uint8_t vs1053b_get_version(vs1053b_handle_t *handle, uint8_t *version)
get version
uint8_t vs1053b_set_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis mclk
uint8_t vs1053b_parse_info(vs1053b_handle_t *handle, uint16_t dat0, uint16_t dat1, vs1053b_audio_info_t *info)
parse info
uint8_t vs1053b_set_swing(vs1053b_handle_t *handle, uint8_t swing)
set swing
uint8_t vs1053b_get_overload_indicator(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get overload indicator status
uint8_t vs1053b_set_treble_control(vs1053b_handle_t *handle, uint8_t db)
set treble control
uint8_t vs1053b_set_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t ad_clock)
set ad clock
uint8_t vs1053b_set_clock_multiplier(vs1053b_handle_t *handle, vs1053b_clock_multiplier_t multiplier)
set clock multiplier
uint8_t vs1053b_get_diff(vs1053b_handle_t *handle, vs1053b_diff_t *diff)
get the audio differential
uint8_t vs1053b_get_lower_limit_frequency_in_1000_hz(vs1053b_handle_t *handle, uint8_t *step)
get lower limit frequency in 1000 hz
uint8_t vs1053b_set_reference_voltage(vs1053b_handle_t *handle, vs1053b_reference_voltage_t voltage)
set reference voltage
uint8_t vs1053b_set_period_callback(vs1053b_handle_t *handle, uint32_t second, uint32_t microsecond, vs1053b_bool_t enable)
set period callback
uint8_t vs1053b_get_end_fill_byte(vs1053b_handle_t *handle, uint16_t *byte)
get end fill byte
uint8_t vs1053b_get_iis(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get iis status
uint8_t vs1053b_get_ear_speaker_high_setting(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get ear speaker high setting status
uint8_t vs1053b_set_analog_internal_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog internal power down
uint8_t vs1053b_vol_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to vol
uint8_t vs1053b_get_allow_sdi_test(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get allow sdi test status
uint8_t vs1053b_swing_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the swing to the register raw data
uint8_t vs1053b_set_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 10 hz
uint8_t vs1053b_stop(vs1053b_handle_t *handle)
stop audio
uint8_t vs1053b_set_vol(vs1053b_handle_t *handle, uint8_t left, uint8_t right)
set vol
uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 1000 hz to the register raw data
uint8_t vs1053b_get_lower_limit_frequency_in_10_hz(vs1053b_handle_t *handle, uint8_t *step)
get lower limit frequency in 10 hz
uint8_t vs1053b_read_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
read ram
uint8_t vs1053b_get_play_speed(vs1053b_handle_t *handle, vs1053b_play_speed_t *speed)
get play speed
uint8_t vs1053b_process(vs1053b_handle_t *handle)
audio process
uint8_t vs1053b_set_selector(vs1053b_handle_t *handle, vs1053b_selector_t selector)
set selector
uint8_t vs1053b_clock_frequency_convert_to_register(vs1053b_handle_t *handle, float hz, uint16_t *reg)
convert the clock frequency to the register raw data
uint8_t vs1053b_get_gpio_output(vs1053b_handle_t *handle, uint16_t *data)
get gpio output
uint8_t vs1053b_get_pcm_adpcm_recording_active(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get pcm adpcm recording active status
uint8_t vs1053b_set_do_not_jump(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable do not jump
uint8_t vs1053b_get_stream_mode(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get stream mode status
vs1053b_ad_clock_t
vs1053b ad clock enumeration definition
uint8_t vs1053b_get_mpeg_layer_i_and_ii(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get mpeg layer i and ii status
uint8_t vs1053b_get_bass_enhancement(vs1053b_handle_t *handle, uint8_t *db)
get bass enhancement
uint8_t vs1053b_get_clock_frequency(vs1053b_handle_t *handle, uint16_t *clk)
get clock frequency
uint8_t vs1053b_get_period_callback(vs1053b_handle_t *handle, uint32_t *second, uint32_t *microsecond, vs1053b_bool_t *enable)
get period callback
vs1053b_reference_voltage_t
vs1053b reference voltage enumeration definition
vs1053b_bit_order_t
vs1053b bit order enumeration definition
vs1053b_allowed_multiplier_addition_t
vs1053b allowed multiplier addition enumeration definition
uint8_t vs1053b_get_clock_multiplier(vs1053b_handle_t *handle, vs1053b_clock_multiplier_t *multiplier)
get clock multiplier
vs1053b_diff_t
vs1053b diff enumeration definition
uint8_t vs1053b_get_gpio_direction(vs1053b_handle_t *handle, uint16_t *mask)
get gpio direction
uint8_t vs1053b_set_sample_rate(vs1053b_handle_t *handle, uint16_t rate, vs1053b_channel_t channel)
set sample rate
vs1053b_bool_t
vs1053b bool enumeration definition
uint8_t vs1053b_set_decode_time(vs1053b_handle_t *handle, uint16_t decode_time)
set decode time
uint8_t vs1053b_get_hdata0(vs1053b_handle_t *handle, uint16_t *dat0)
get hdata0
vs1053b_selector_t
vs1053b selector enumeration definition
uint8_t vs1053b_set_gpio_direction(vs1053b_handle_t *handle, uint16_t mask)
set gpio direction
uint8_t vs1053b_get_gpio_input(vs1053b_handle_t *handle, uint16_t *data)
get gpio input
uint8_t vs1053b_get_share_spi_chip_select(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get share spi chip select status
uint8_t vs1053b_get_soft_reset(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get soft reset status
uint8_t vs1053b_set_native_spi_modes(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable native spi modes
uint8_t vs1053b_get_selector(vs1053b_handle_t *handle, vs1053b_selector_t *selector)
get selector
uint8_t vs1053b_init(vs1053b_handle_t *handle)
initialize the chip
uint8_t vs1053b_set_cancel_decoding_current_file(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable cancel decoding current file
vs1053b_patch_t
vs1053b patch enumeration definition
uint8_t vs1053b_set_start_address(vs1053b_handle_t *handle, uint16_t addr)
set start address
uint8_t vs1053b_get_swing(vs1053b_handle_t *handle, uint8_t *swing)
get swing
vs1053b_dclk_edge_t
vs1053b dclk edge enumeration definition
uint8_t vs1053b_set_stream_mode(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable stream mode
uint8_t vs1053b_get_allowed_multiplier_addition(vs1053b_handle_t *handle, vs1053b_allowed_multiplier_addition_t *addition)
get allowed multiplier addition
uint8_t vs1053b_get_decode_time(vs1053b_handle_t *handle, uint16_t *decode_time)
get decode time
uint8_t vs1053b_get_treble_control(vs1053b_handle_t *handle, uint8_t *db)
get treble control
uint8_t vs1053b_set_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t iis_rate)
set iis rate
uint8_t vs1053b_read_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len)
read application
uint8_t vs1053b_write_application(vs1053b_handle_t *handle, vs1053b_application_t num, uint8_t *buf, uint16_t len)
write application
#define VS1053B_BUFFER_SIZE
vs1053b buffer size definition
uint8_t vs1053b_set_dclk_edge(vs1053b_handle_t *handle, vs1053b_dclk_edge_t edge)
set dclk edge
uint8_t vs1053b_get_dclk_edge(vs1053b_handle_t *handle, vs1053b_dclk_edge_t *edge)
get dclk edge
uint8_t vs1053b_set_analog_driver_power_down(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable analog driver power down
uint8_t vs1053b_set_play_speed(vs1053b_handle_t *handle, vs1053b_play_speed_t speed)
set play speed
uint8_t vs1053b_set_pcm_adpcm_recording_active(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable pcm adpcm recording active
uint8_t vs1053b_set_clock_frequency(vs1053b_handle_t *handle, uint16_t clk)
set clock frequency
uint8_t vs1053b_lower_limit_frequency_in_1000_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz)
convert the register raw data to the lower limit frequency in 1000 hz
uint8_t vs1053b_hard_reset(vs1053b_handle_t *handle)
hard reset
uint8_t vs1053b_get_iis_mclk(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get iis mclk status
uint8_t vs1053b_get_analog_internal_power_down(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get analog internal power down status
vs1053b_clock_range_t
vs1053b clock range enumeration definition
uint8_t vs1053b_set_ear_speaker_low_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker low setting
uint8_t vs1053b_clock_frequency_convert_to_data(vs1053b_handle_t *handle, uint16_t reg, float *hz)
convert the register raw data to the clock frequency
uint8_t vs1053b_set_record_format(vs1053b_handle_t *handle, vs1053b_record_format_t format)
set record format
uint8_t vs1053b_set_clock_range(vs1053b_handle_t *handle, vs1053b_clock_range_t range)
set clock range
uint8_t vs1053b_get_patch(vs1053b_handle_t *handle, vs1053b_patch_t type, const uint16_t **patch_addr, uint16_t *len)
get patch info
uint8_t vs1053b_set_diff(vs1053b_handle_t *handle, vs1053b_diff_t diff)
set the audio differential
uint8_t vs1053b_get_do_not_jump(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get do not jump status
uint8_t vs1053b_get_cancel_decoding_current_file(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get cancel decoding current file status
uint8_t vs1053b_get_overload_detection(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get overload detection status
uint8_t vs1053b_get_record_format(vs1053b_handle_t *handle, vs1053b_record_format_t *format)
get record format
uint8_t vs1053b_set_ear_speaker_high_setting(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable ear speaker high setting
uint8_t vs1053b_treble_control_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to the treble control
uint8_t vs1053b_set_share_spi_chip_select(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable share spi chip select
uint8_t vs1053b_vol_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert vol to the register raw data
uint8_t vs1053b_set_soft_reset(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable soft reset
vs1053b_application_t
vs1053b application enumeration definition
uint8_t vs1053b_get_reference_voltage(vs1053b_handle_t *handle, vs1053b_reference_voltage_t *voltage)
get reference voltage
uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, uint32_t *hz)
convert the register raw data to the lower limit frequency in 10 hz
uint8_t vs1053b_get_analog_driver_power_down(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get analog driver power down status
uint8_t vs1053b_set_ram_address(vs1053b_handle_t *handle, uint16_t addr)
set ram address
vs1053b_record_format_t
vs1053b record format enumeration definition
uint8_t vs1053b_set_overload_indicator(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable overload indicator
struct vs1053b_handle_s vs1053b_handle_t
vs1053b handle structure definition
vs1053b_play_speed_t
vs1053b play speed enumeration definition
uint8_t vs1053b_set_allow_sdi_test(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable allow sdi test
uint8_t vs1053b_get_sdi_bit_order(vs1053b_handle_t *handle, vs1053b_bit_order_t *order)
get sdi bit order
uint8_t vs1053b_set_overload_detection(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable overload detection
uint8_t vs1053b_treble_control_convert_to_register(vs1053b_handle_t *handle, float db, uint8_t *reg)
convert the treble control to the register raw data
struct vs1053b_audio_info_s vs1053b_audio_info_t
vs1053b audio info structure definition
uint8_t vs1053b_deinit(vs1053b_handle_t *handle)
deinit the chip
vs1053b_iis_rate_t
vs1053b iis rate enumeration definition
uint8_t vs1053b_set_iis(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable iis
struct vs1053b_wav_s vs1053b_wav_t
vs1053b wav structure definition
uint8_t vs1053b_set_allowed_multiplier_addition(vs1053b_handle_t *handle, vs1053b_allowed_multiplier_addition_t addition)
set allowed multiplier addition
uint8_t vs1053b_set_sdi_bit_order(vs1053b_handle_t *handle, vs1053b_bit_order_t order)
set sdi bit order
uint8_t vs1053b_get_start_address(vs1053b_handle_t *handle, uint16_t *addr)
get start address
struct vs1053b_info_s vs1053b_info_t
vs1053b information structure definition
uint8_t vs1053b_set_gpio_output(vs1053b_handle_t *handle, uint16_t data)
set gpio output
uint8_t vs1053b_get_vol(vs1053b_handle_t *handle, uint8_t *left, uint8_t *right)
get vol
vs1053b_clock_multiplier_t
vs1053b clock multiplier enumeration definition
uint8_t vs1053b_get_iis_rate(vs1053b_handle_t *handle, vs1053b_iis_rate_t *iis_rate)
get iis rate
uint8_t vs1053b_get_ad_clock(vs1053b_handle_t *handle, vs1053b_ad_clock_t *ad_clock)
get ad clock
uint8_t vs1053b_info(vs1053b_info_t *info)
get chip's information
uint8_t vs1053b_get_byte_rate(vs1053b_handle_t *handle, uint16_t *rate)
get byte rate
uint8_t vs1053b_get_hdata(vs1053b_handle_t *handle, uint16_t *dat0, uint16_t *dat1)
get hdata
uint8_t vs1053b_record(vs1053b_handle_t *handle, char *path, uint32_t sample_rate)
record audio
uint8_t vs1053b_play(vs1053b_handle_t *handle, char *path)
play audio
uint8_t vs1053b_load_patch(vs1053b_handle_t *handle, const uint16_t *patch, uint16_t len)
load patch
uint8_t vs1053b_pause(vs1053b_handle_t *handle)
pause audio
uint8_t vs1053b_write_ram(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
write ram
uint8_t vs1053b_get_hdata1(vs1053b_handle_t *handle, uint16_t *dat1)
get hdata1
vs1053b_channel_t
vs1053b channel enumeration definition
uint8_t vs1053b_get_native_spi_modes(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get native spi modes status
uint8_t vs1053b_set_bass_enhancement(vs1053b_handle_t *handle, uint8_t db)
set bass enhancement
uint8_t vs1053b_set_lower_limit_frequency_in_1000_hz(vs1053b_handle_t *handle, uint8_t step)
set lower limit frequency in 1000 hz
uint8_t vs1053b_get_sample_rate(vs1053b_handle_t *handle, uint16_t *rate, vs1053b_channel_t *channel)
get sample rate
uint8_t vs1053b_swing_convert_to_data(vs1053b_handle_t *handle, uint8_t reg, float *db)
convert the register raw data to the swing
uint8_t vs1053b_set_mpeg_layer_i_and_ii(vs1053b_handle_t *handle, vs1053b_bool_t enable)
enable or disable mpeg layer i and ii
uint8_t vs1053b_get_ear_speaker_low_setting(vs1053b_handle_t *handle, vs1053b_bool_t *enable)
get ear speaker low setting status
uint8_t vs1053b_get_clock_range(vs1053b_handle_t *handle, vs1053b_clock_range_t *range)
get clock range
uint8_t vs1053b_lower_limit_frequency_in_10_hz_convert_to_register(vs1053b_handle_t *handle, uint32_t hz, uint8_t *reg)
convert the lower limit frequency in 10 hz to the register raw data
@ VS1053B_TYPE_PLAY_WRITE
@ VS1053B_TYPE_RECORD_END
@ VS1053B_TYPE_RECORD_READ
@ VS1053B_TYPE_RECORD_WRITE
@ VS1053B_TYPE_RECORD_OVER
@ VS1053B_FORMAT_AAC_ADTS
@ VS1053B_FORMAT_AAC_ADIF
@ VS1053B_PATCH_OGG_VENC16K1Q07
@ VS1053B_PATCH_OGG_VENC16K2Q09
@ VS1053B_PATCH_OGG_VENC44K1Q03
@ VS1053B_PATCH_OGG_VENC16K1Q04
@ VS1053B_PATCH_OGG_VENC44K1Q05
@ VS1053B_PATCH_OGG_VENC16K2Q05
@ VS1053B_PATCH_OGG_VENC16K2Q07
@ VS1053B_PATCH_OGG_VENC16K1Q09
@ VS1053B_PATCH_OGG_VENC44K2Q04
@ VS1053B_PATCH_OGG_VENC16K1Q06
@ VS1053B_PATCH_OGG_VENC08K1Q10
@ VS1053B_PATCH_OGG_VENC08K1Q03
@ VS1053B_PATCH_OGG_VENC44K2Q01
@ VS1053B_PATCH_OGG_VENC16K1Q02
@ VS1053B_PATCH_OGG_VENC16K1Q05
@ VS1053B_PATCH_OGG_VENC44K2Q03
@ VS1053B_PATCH_OGG_VENC08K1Q05
@ VS1053B_PATCH_OGG_VENC16K2Q02
@ VS1053B_PATCH_OGG_VENC08K1Q01
@ VS1053B_PATCH_OGG_VENC16K1Q08
@ VS1053B_PATCH_OGG_VENC44K2Q02
@ VS1053B_PATCH_OGG_VENC16K2Q10
@ VS1053B_PATCH_OGG_VENC44K2Q05
@ VS1053B_PATCH_OGG_VENC08K1Q09
@ VS1053B_PATCH_OGG_VENC44K1Q04
@ VS1053B_PATCH_OGG_VENC16K2Q04
@ VS1053B_PATCH_OGG_VENC44K1Q02
@ VS1053B_PATCH_OGG_VENC44K1Q01
@ VS1053B_PATCH_OGG_VENC16K2Q08
@ VS1053B_PATCH_OGG_VENC08K1Q07
@ VS1053B_PATCH_OGG_VENC16K1Q00
@ VS1053B_PATCH_OGG_VENC16K2Q00
@ VS1053B_PATCH_OGG_VENC08K1Q08
@ VS1053B_PATCH_OGG_VENC44K2Q00
@ VS1053B_PATCH_OGG_VENC16K1Q10
@ VS1053B_PATCH_OGG_VENC16K2Q01
@ VS1053B_PATCH_OGG_VENC08K1Q00
@ VS1053B_PATCH_OGG_VENC16K1Q01
@ VS1053B_PATCH_OGG_VENC44K1Q00
@ VS1053B_PATCH_OGG_VENC08K1Q02
@ VS1053B_PATCH_OGG_VENC08K1Q06
@ VS1053B_PATCH_OGG_VENC08K1Q04
@ VS1053B_PATCH_OGG_VENC16K1Q03
@ VS1053B_PATCH_OGG_VENC16K2Q06
@ VS1053B_PATCH_OGG_VENC16K2Q03
uint8_t vs1053b_set_data(vs1053b_handle_t *handle, uint8_t *buf, uint16_t len)
set chip data
uint8_t vs1053b_get_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t vs1053b_set_reg(vs1053b_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
uint8_t(* spi_dat_deinit)(void)
void(* timestamp_read)(uint32_t *sec, uint32_t *us)
uint8_t(* spi_cmd_write_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
uint8_t(* dreq_gpio_init)(void)
uint8_t(* spi_dat_write_cmd)(uint8_t *buf, uint16_t len)
uint8_t(* spi_cmd_deinit)(void)
uint8_t buf[VS1053B_BUFFER_SIZE]
uint8_t(* spi_cmd_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_cmd_read_address16)(uint16_t addr, uint8_t *buf, uint16_t len)
void(* receive_callback)(uint8_t type, uint32_t cur_pos)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* audio_init)(uint8_t type, char *name, uint32_t *size)
uint8_t(* audio_read)(uint32_t addr, uint16_t size, uint8_t *buffer)
uint8_t(* reset_gpio_init)(void)
uint8_t(* spi_dat_init)(void)
uint8_t(* dreq_gpio_deinit)(void)
uint8_t(* dreq_gpio_read)(uint8_t *data)
uint8_t(* reset_gpio_write)(uint8_t data)
uint8_t(* audio_deinit)(void)
uint8_t plugin_patch_type
uint8_t(* audio_write)(uint32_t addr, uint16_t size, uint8_t *buffer)
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v