WebRadioApp  0.1
mp3player.h
Go to the documentation of this file.
1 
21 #ifndef __mainmp3_H__
22 #define __mainmp3_H__
23 
24 #include <iostream>
25 #include <iomanip>
26 #include "web_radio_config.h"
27 #include <mp3dec.h>
28 #include "mp3common.h"
29 
36 typedef enum {
41 
42 typedef struct {
43  uint8_t buff[AUDIO_BUFFER_SIZE];
45  // uint32_t fptr;
47 
49  section(".tcpBuffer"))));
59 class Mp3Player
60 {
61  public:
67  Mp3Player();
68 
74  void initPlay();
75 
81  void resume();
82 
89  void bufferProcess();
90 
97  void audioProcess();
98 
105  void extractTcpBuffer(uint8_t *data, uint32_t btr);
106 
112  void deleteTcpBuffer(void);
113 
120  void insertTcpBuffer(uint8_t *data, uint32_t btw);
121 
137  void drawFTT(int32_t inx, int32_t *x, int32_t *ly, int32_t ll, int32_t *ry,
138  int32_t rr, int32_t height, int32_t FFTGraph);
148  void drawVuMeter(float *angle_L, float *angle_R);
149 
155  void getEtherAndBuffer(void);
156 
163  void drawSpectrum(void);
164 
165  private:
174  uint8_t init(uint32_t AudioFreq)
175  {
176  int error;
177 
178  BSP_AUDIO_Init_t *AudioInit;
179 
180  if (AudioFreq == 0)
181  AudioFreq = 48000; // if no frequency supplied by station
182 
183  std::cout << "InitPlayer with AudioFreq = " << (unsigned int)AudioFreq
184  << "\n\r";
185  /* Initialize the Audio codec and all related peripherals (I2S, I2C,
186  * IOExpander, IOs...) */
187 
188  AudioInit->BitsPerSample = 16;
189  AudioInit->ChannelsNbr = 2;
190  AudioInit->Device = AUDIO_OUT_DEVICE_HEADPHONE;
191  AudioInit->SampleRate = AudioFreq;
192  AudioInit->Volume = 50;
193 
194  error = BSP_AUDIO_OUT_Init(0, AudioInit);
195 
196  if (error) {
197  std::cout << "Cannot initialize Audio Subsystem\n\r";
198  return 1;
199  } else {
200  std::cout << "Audio Subsystem successfully initialised \n\r";
201  return 0;
202  }
203  }
204 };
205 
206 #endif
207 
XTAL_Sec
int XTAL_Sec
Definition: mp3player.cpp:31
BSP_AUDIO_OUT_HalfTransfer_CallBack
void BSP_AUDIO_OUT_HalfTransfer_CallBack(uint32_t Instance)
Manages the DMA Half Transfer complete event.
Definition: mp3player.cpp:812
MX_LWIP_Process
void MX_LWIP_Process(void)
Read a received packet from the Ethernet buffers.
Definition: lwip.c:139
hMP3Decoder
HMP3Decoder hMP3Decoder
Definition: mp3player.cpp:41
totalsum
int totalsum
Definition: mp3player.cpp:60
FILE_READ_BUFFER_SIZE
#define FILE_READ_BUFFER_SIZE
Definition: web_radio_config.h:42
MP3errorreason
int MP3errorreason
Definition: mp3player.cpp:43
Mp3Player::drawVuMeter
void drawVuMeter(float *angle_L, float *angle_R)
This function generate the parameters to be able to draw a volume unit meter graph.
Definition: mp3player.cpp:647
err
volatile int err
Definition: mp3player.cpp:51
mp3FrameInfo
MP3FrameInfo mp3FrameInfo
Definition: mp3player.cpp:40
DMAError
int DMAError
Definition: mp3player.cpp:44
BSP_AUDIO_OUT_TransferComplete_CallBack
void BSP_AUDIO_OUT_TransferComplete_CallBack(uint32_t Instance)
Manages the full Transfer complete event.
Definition: mp3player.cpp:793
Mp3Player::audioProcess
void audioProcess()
Decode 2304 Bytes in one step once indicated through. DMA interrupts that they have been consumed (= ...
Definition: mp3player.cpp:245
fftSize
uint32_t fftSize
Definition: mp3player.cpp:24
BUFFER_OFFSET_HALF
@ BUFFER_OFFSET_HALF
Definition: mp3player.h:38
str
char str[120]
Definition: mp3player.cpp:52
AUDIO_OUT_BufferTypeDef
Definition: mp3player.h:42
TCP_buff_start
int TCP_buff_start
Definition: tcp_client.cpp:82
data
char data[48]
Definition: ntpudp.c:32
Mp3Player::deleteTcpBuffer
void deleteTcpBuffer(void)
Delete TCP Buffer.
Definition: mp3player.cpp:574
FFTOutputMagLeft
float32_t FFTOutputMagLeft[1024]
Definition: mp3player.cpp:75
Mp3Player::drawFTT
void drawFTT(int32_t inx, int32_t *x, int32_t *ly, int32_t ll, int32_t *ry, int32_t rr, int32_t height, int32_t FFTGraph)
This function generate the parameters to be able to draw a FFT graph.
Definition: mp3player.cpp:595
TCPBUFF_MAXITEMS
#define TCPBUFF_MAXITEMS
Definition: web_radio_config.h:56
mp3player.h
Mp3 Player.
BUFFER_OFFSET_NONE
@ BUFFER_OFFSET_NONE
Definition: mp3player.h:37
bytes_left
static int bytes_left
Definition: mp3player.cpp:48
FFTBuffer
int16_t FFTBuffer[AUDIO_BUFFER_SIZE/2]
Definition: mp3player.cpp:72
AUDIO_OUT_BufferTypeDef::state
BUFFER_StateTypeDef state
Definition: mp3player.h:44
ifftFlag
uint32_t ifftFlag
Definition: mp3player.cpp:25
Mp3Player::insertTcpBuffer
void insertTcpBuffer(uint8_t *data, uint32_t btw)
This function is used to close the tcp connection with server.
Definition: mp3player.cpp:536
btr
volatile unsigned int btr
Definition: mp3player.cpp:50
TCP_extract_idx
volatile uint32_t TCP_extract_idx
Definition: tcp_client.cpp:30
items
volatile int items
Definition: tcp_client.cpp:72
__attribute__
__attribute__((weak))
Definition: syscalls.c:66
memoryVU_L
float memoryVU_L
Definition: mp3player.cpp:82
AUDIO_BUFFER_SIZE
#define AUDIO_BUFFER_SIZE
Definition: web_radio_config.h:41
BUFFER_OFFSET_FULL
@ BUFFER_OFFSET_FULL
Definition: mp3player.h:39
Mp3Player::bufferProcess
void bufferProcess()
Buffer Process - Refill Filebuffer by extractiong from TCP Ringbuffer.
Definition: mp3player.cpp:215
gnetif
struct netif gnetif
Definition: lwip.c:44
memoryVU_R
float memoryVU_R
Definition: mp3player.cpp:82
FFT_inputstruct_Left
float32_t FFT_inputstruct_Left[2048]
Definition: mp3player.cpp:74
XTAL_Hour
int XTAL_Hour
Definition: ew_bsp_clock.c:76
BUFFER_StateTypeDef
BUFFER_StateTypeDef
Definition: mp3player.h:36
Mp3Player::drawSpectrum
void drawSpectrum(void)
Draw Spectrum, i.e. FFT graph as computed here Note correct scaling only for 48 kHz sampling frequenc...
Definition: mp3player.cpp:720
Mp3Player::init
uint8_t init(uint32_t AudioFreq)
Initialize the Audio codec.
Definition: mp3player.h:174
currentVolume
int currentVolume
Definition: mp3player.cpp:32
XTAL_Min
int XTAL_Min
Definition: mp3player.cpp:31
BSP_AUDIO_OUT_Error_CallBack
void BSP_AUDIO_OUT_Error_CallBack(uint32_t Instance)
Manages the DMA FIFO error event.
Definition: mp3player.cpp:830
FFT_inputstruct_Right
float32_t FFT_inputstruct_Right[2048]
Definition: mp3player.cpp:76
Mp3Player::Mp3Player
Mp3Player()
Construct a new Mp 3 Player object.
Definition: mp3player.cpp:86
FFTOutputMagRight
float32_t FFTOutputMagRight[1024]
Definition: mp3player.cpp:77
extractsum
int extractsum
Definition: mp3player.cpp:53
web_radio_config.h
Web Radio Framework configuration.
TCP_insert_idx
volatile uint32_t TCP_insert_idx
Definition: tcp_client.cpp:29
offset
volatile int offset
Definition: mp3player.cpp:51
lock_FFT_tansfer
uint8_t lock_FFT_tansfer
unFramesDecoded
int unFramesDecoded
Definition: mp3player.cpp:30
br
volatile unsigned int br
Definition: mp3player.cpp:50
Mp3Player::initPlay
void initPlay()
Initialize playing.
Definition: mp3player.cpp:91
ALIGN_32BYTES
ALIGN_32BYTES(static AUDIO_OUT_BufferTypeDef BufferCtl __attribute__((section(".tcpBuffer"))))
initialaudiovolume
uint8_t initialaudiovolume
Definition: main.cpp:85
Mp3Player::getEtherAndBuffer
void getEtherAndBuffer(void)
It handles the LwIP process and the buffer process.
Definition: mp3player.cpp:705
Mp3Player
Mp3Player Object.
Definition: mp3player.h:59
fftix
uint32_t fftix
Definition: mp3player.cpp:27
TCP_Buffer
uint8_t TCP_Buffer[TCPBUFF_MAXITEMS]
mp3PlayerInstance
Mp3Player * mp3PlayerInstance
Definition: mp3player.cpp:84
Mp3Player::resume
void resume()
Mp3 resume play.
Definition: mp3player.cpp:200
MP3errorcount
int MP3errorcount
Definition: mp3player.cpp:42
read_ptr
static unsigned char * read_ptr
Definition: mp3player.cpp:49
file_read_buffer
uint8_t file_read_buffer[FILE_READ_BUFFER_SIZE]
Definition: mp3player.cpp:64
doBitReverse
uint32_t doBitReverse
Definition: mp3player.cpp:26
Mp3Player::extractTcpBuffer
void extractTcpBuffer(uint8_t *data, uint32_t btr)
This function is used to close the tcp connection with server.
Definition: mp3player.cpp:558