vs1011e_write(REGADDR_VOL, val);
}
-void vs1011e_play(int8(*func) (uint8 * buf, const uint16 len))
+void vs1011e_play(
+ void *buf, int siz,
+ int (*readfunc)(void * buf, const int len))
{
-#define UNITBYTE (128)
- uint8 i;
- uint8 buf[UNITBYTE];
+ int i;
while (1) {
/*
* Read the song data.
*/
- int8 len = func(buf, UNITBYTE);
- if (len <= 0) {
+ int n = readfunc(buf, siz);
+ if (n <= 0) {
return;
}
/*
* Send the data.
*/
- for (i = 0; i < UNITBYTE; i++) {
+ spi_select(SpiTarget_VS1011E_DATA);
+ for (i = 0; i < n; i++) {
while (VS1011E_CHK_DREQ()) { }
- spi_select(SpiTarget_VS1011E_DATA);
- spi_tx(*(buf + i));
- spi_deselect();
+ spi_tx(*((char *)buf + i));
}
+ spi_deselect();
}
}
void vs1011e_get_enhancer(uint8 * st_amp, uint8 * st_freq, uint8 * sb_amp, uint8 * sb_freq);
void vs1011e_volume_read(uint8 * left, uint8 * right);
void vs1011e_volume_write(const uint8 left, const uint8 right);
-void vs1011e_play(int8(*func) (uint8 * buf, const uint16 len));
+void vs1011e_play(
+ void *buf, int siz,
+ int (*readfunc)(void * buf, const int len));
void vs1011e_decodetime_read(uint16 * sec);
void vs1011e_decodetime_write(const uint16 sec);
void vs1011e_register_print(void);
return 0;
}
-int8 readfunc(uint8 * buf, const uint16 len)
+int readfunc(void * buf, const int len)
{
WORD cnt;
pf_read(buf, len, &cnt);
if (r != FR_OK) {
return 1;
}
- vs1011e_play(readfunc);
+ int siz = 512;
+ void *p = kz_kmalloc(siz);
+ vs1011e_play(p, siz, readfunc);
+ kz_kmfree(p);
return 0;
}
int size;
char *p;
-#if 0
+#if 1
FATFS fatfs;
DIR dir;
FILINFO filinfo;
vs1011e_write(REGADDR_VOL, val);
}
-void vs1011e_play(int8(*func) (uint8 * buf, const uint16 len))
+void vs1011e_play(
+ void *buf, int siz,
+ int (*readfunc)(void * buf, const int len))
{
-#define UNITBYTE (128)
- uint8 i;
- uint8 buf[UNITBYTE];
+ int i;
while (1) {
/*
* Read the song data.
*/
- int8 len = func(buf, UNITBYTE);
- if (len <= 0) {
+ int n = readfunc(buf, siz);
+ if (n <= 0) {
return;
}
/*
* Send the data.
*/
- for (i = 0; i < UNITBYTE; i++) {
+ spi_select(SpiTarget_VS1011E_DATA);
+ for (i = 0; i < n; i++) {
while (VS1011E_CHK_DREQ()) { }
- spi_select(SpiTarget_VS1011E_DATA);
- spi_tx(*(buf + i));
- spi_deselect();
+ spi_tx(*((char *)buf + i));
}
+ spi_deselect();
}
}
void vs1011e_get_enhancer(uint8 * st_amp, uint8 * st_freq, uint8 * sb_amp, uint8 * sb_freq);
void vs1011e_volume_read(uint8 * left, uint8 * right);
void vs1011e_volume_write(const uint8 left, const uint8 right);
-void vs1011e_play(int8(*func) (uint8 * buf, const uint16 len));
+void vs1011e_play(
+ void *buf, int siz,
+ int (*readfunc)(void * buf, const int len));
void vs1011e_decodetime_read(uint16 * sec);
void vs1011e_decodetime_write(const uint16 sec);
void vs1011e_register_print(void);