forked from ARMmbed/mbed-os
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ARMmbed#3339 from jamike/USBAudio_CB_RX_TX
USB audio callback rx and tx
- Loading branch information
Showing
4 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
// Playback example with the USBAUDIO library | ||
|
||
#include "mbed.h" | ||
#include "USBAudio.h" | ||
|
||
// frequency: 48 kHz | ||
#define FREQ_SPK 16000 | ||
#define FREQ_MIC 16000 | ||
|
||
// 2channels: stereo | ||
#define NB_CHA_SPK 2 | ||
#define NB_CHA_MIC 2 | ||
|
||
// length computed: each ms, we receive 48 * 16bits ->48 * 2 bytes. as there are two channels, the length will be 48 * 2 * 2 | ||
#define LENGTH_AUDIO_PACKET_SPK (FREQ_SPK / 500) * NB_CHA_SPK | ||
#define LENGTH_AUDIO_PACKET_MIC (FREQ_MIC / 500) * NB_CHA_MIC | ||
|
||
// USBAudio object | ||
USBAudio audio(FREQ_SPK, NB_CHA_SPK, FREQ_MIC, NB_CHA_MIC, 0xab45, 0x0378); | ||
int filled; | ||
int ready = 2; | ||
|
||
/* buffer 4 packets to avoid */ | ||
int buf[4][LENGTH_AUDIO_PACKET_SPK/sizeof(int)]; | ||
void tx_audio(void) | ||
{ | ||
/* used some buffer in advance */ | ||
ready = (filled+2)&0x3; | ||
audio.writeSync((uint8_t *)buf[ready]); | ||
} | ||
|
||
|
||
void rx_audio(void) | ||
{ | ||
int size=0; | ||
int next = (filled + 1)&0x3; | ||
size = audio.readSync((uint8_t *)buf[next]); | ||
if (size ) filled = next; | ||
if ((size) && (size!=LENGTH_AUDIO_PACKET_MIC)) printf("%d\n",size); | ||
} | ||
|
||
int main() | ||
{ | ||
filled = 0; | ||
memset(&buf[0][0], 0, sizeof (buf)); | ||
audio.attachTx(tx_audio); | ||
audio.attachRx(rx_audio); | ||
/* start the tx with a silent packet */ | ||
audio.write((uint8_t *)buf[2]); | ||
while(1); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters