From 421fd09abca60ffe5284113deefc60b76d9f5b80 Mon Sep 17 00:00:00 2001 From: Shinichiro Nakamura Date: Sun, 15 Jul 2012 08:22:13 +0900 Subject: [PATCH] Changed the VS1011E module interface. --- firm/sample/sample1/bootload/vs1011e.c | 20 ++++++++++---------- firm/sample/sample1/bootload/vs1011e.h | 4 +++- firm/sample/sample1/os/task_audio.c | 9 ++++++--- firm/sample/sample1/os/vs1011e.c | 20 ++++++++++---------- firm/sample/sample1/os/vs1011e.h | 4 +++- 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/firm/sample/sample1/bootload/vs1011e.c b/firm/sample/sample1/bootload/vs1011e.c index 3468d9b..0b1a743 100644 --- a/firm/sample/sample1/bootload/vs1011e.c +++ b/firm/sample/sample1/bootload/vs1011e.c @@ -183,28 +183,28 @@ void vs1011e_volume_write(const uint8 left, const uint8 right) 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(); } } diff --git a/firm/sample/sample1/bootload/vs1011e.h b/firm/sample/sample1/bootload/vs1011e.h index 17138d9..7380b5d 100644 --- a/firm/sample/sample1/bootload/vs1011e.h +++ b/firm/sample/sample1/bootload/vs1011e.h @@ -11,7 +11,9 @@ void vs1011e_set_enhancer(uint8 st_amp, uint8 st_freq, uint8 sb_amp, uint8 sb_fr 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); diff --git a/firm/sample/sample1/os/task_audio.c b/firm/sample/sample1/os/task_audio.c index b6408bb..f6ba2b0 100644 --- a/firm/sample/sample1/os/task_audio.c +++ b/firm/sample/sample1/os/task_audio.c @@ -32,7 +32,7 @@ static int audio_cmdproc(char *p) return 0; } -int8 readfunc(uint8 * buf, const uint16 len) +int readfunc(void * buf, const int len) { WORD cnt; pf_read(buf, len, &cnt); @@ -45,7 +45,10 @@ static int play(const char *filename) 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; } @@ -54,7 +57,7 @@ int task_audio(int argc, char *argv[]) int size; char *p; -#if 0 +#if 1 FATFS fatfs; DIR dir; FILINFO filinfo; diff --git a/firm/sample/sample1/os/vs1011e.c b/firm/sample/sample1/os/vs1011e.c index 3468d9b..0b1a743 100644 --- a/firm/sample/sample1/os/vs1011e.c +++ b/firm/sample/sample1/os/vs1011e.c @@ -183,28 +183,28 @@ void vs1011e_volume_write(const uint8 left, const uint8 right) 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(); } } diff --git a/firm/sample/sample1/os/vs1011e.h b/firm/sample/sample1/os/vs1011e.h index 17138d9..7380b5d 100644 --- a/firm/sample/sample1/os/vs1011e.h +++ b/firm/sample/sample1/os/vs1011e.h @@ -11,7 +11,9 @@ void vs1011e_set_enhancer(uint8 st_amp, uint8 st_freq, uint8 sb_amp, uint8 sb_fr 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); -- 2.11.0