Modified a little for 32k byte buffer.
Dependents: Peach_AudioChannelDividerAndCompensator
Diff: Doku_USBAudio/USBAudio.cpp
- Revision:
- 61:ff0388dee94f
- Parent:
- 60:68924f211e71
--- a/Doku_USBAudio/USBAudio.cpp Sun Oct 11 07:37:39 2015 +0000 +++ b/Doku_USBAudio/USBAudio.cpp Sun Oct 18 08:16:03 2015 +0000 @@ -55,7 +55,7 @@ volume = 0; // connect the device - USBDevice::connect(); + //USBDevice::connect(); //doku } bool USBAudio::read(uint8_t * buf) { @@ -116,58 +116,17 @@ return (mute) ? 0.0 : volume; } -extern DigitalOut LedR; -extern DigitalOut LedG; -extern DigitalOut LedB; - -// receive 32k sample of sudio stereo data -// if input stalls then zero is paded -// so, it every time returns 32k sample of data -int USBAudio::read32kSZ(uint32_t *Buf) +// receive 32k sample of stereo data +int USBAudio::read32k(uint32_t *Buf) { //受信データが準備できてなければ、 if(! m_prbuf) { -printf("Data stall in bank:"); - //バッファの前半を受信中ならば、 - if(m_widx < 32768) - { -printf("0\n"); - //データをユーザのバッファへコピーして、 - memcpy((uint8_t *)Buf,(uint8_t *)&m_rbuf[32768*0],32768 * 4); - //ユーザバッファをゼロで埋めて - memset((uint8_t *)Buf,0,32768*4); - //受信バッファをクリアする - memset((uint8_t*)m_rbuf,0,65536*4); - //次は、バッファの前半から受信する - //m_widx = 0; - //受信データに「準備中」を設定する - //m_prbuf = NULL; - //1(受信完了)を返す - return 1; - } - //バッファの後半を受信中ならば、 - else - { -printf("1\n"); - //データをユーザのバッファへコピーして、 - memcpy((uint8_t *)Buf,(uint8_t *)&m_rbuf[32768*1],32768 * 4); - //ユーザバッファをゼロで埋めて - memset((uint8_t *)Buf,0,32768*4); - //受信バッファをクリアする - memset((uint8_t*)m_rbuf,0,65536*4); - //次は、バッファの前半から受信する - //m_widx = 0; - //受信データに「準備中」を設定する - //m_prbuf = NULL; - //1(受信完了)を返す - return 1; - } + return 0; } //受信データが準備できていれば、 else { -printf("Data ready\n"); //データをユーザのバッファへコピーして、 memcpy((uint8_t *)Buf,(uint8_t *)m_prbuf,32768 * 4); //受信データに「準備中」を設定する @@ -177,26 +136,11 @@ } } -// receive 32k sample of sudio stereo data -//int USBAudio::read32k(uint8_t *buf) -//{ -// //受信データが準備できてなければ、 -// if(! m_prbuf) -// { -// //0(受信準備中)を返す。 -// return 0; -// } -// //受信データが準備できていれば、 -// else -// { -// //データをユーザのバッファへコピーして、 -// memcpy((uint8_t *)buf,(uint8_t *)m_prbuf,32768 * 4); -// //受信データに「準備中」を設定する -// m_prbuf = NULL; -// //1(受信完了)を返す -// return 1; -// } -//} +int USBAudio::clear32k() +{ + //clear entier buffer + memset((uint8_t *)m_rbuf,0,32768 * 4 * 2); +} bool USBAudio::EPISO_OUT_callback() { int ridx;