 |
WebRadioApp
0.1
|
Go to the documentation of this file.
21 #ifndef __TCP_CLIENT_H__
22 #define __TCP_CLIENT_H__
30 #include "mp3common.h"
61 extern volatile int metnum;
86 extern long long unsigned int sent_len;
97 extern volatile int items;
125 this->gnetif = connection;
203 std::cout <<
"CONNECTED = " << (int)
err << std::endl;
212 es->es->
p_tx = pbuf_alloc(PBUF_TRANSPORT,
213 strlen((
char *)
httpstr), PBUF_POOL);
231 tcp_recv(tpcb,
es->recv);
236 tcp_sent(tpcb,
es->sent);
241 tcp_poll(tpcb,
es->poll, 1);
246 es->send(tpcb,
es->es);
253 es->connectionClose(tpcb,
es->es);
255 std::cout <<
" connectionClose top \n\r";
262 es->connectionClose(tpcb,
es->es);
263 std::cout <<
" connectionClose bottom\n\r";
275 static err_t
recv(
void *arg,
struct tcp_pcb *tpcb,
struct pbuf *
p,
280 LWIP_ASSERT(
"arg != NULL", arg != NULL);
286 std::cout <<
" remote host closed \n\r";
290 if (
es->es->
p_tx == NULL) {
292 es->connectionClose(tpcb,
es->es);
293 std::cout <<
" done closing \n\r";
297 es->send(tpcb,
es->es);
304 else if (
err != ERR_OK) {
344 const char needle[] =
"icy-name:";
363 const char needle2[] =
"icy-metaint:";
385 for (
int ii = 0; ii < (int)
sent_len; ii++) {
404 es->m_mp3->insertTcpBuffer(
444 es->m_mp3->insertTcpBuffer(
467 es->m_mp3->insertTcpBuffer(
516 tcp_recved(tpcb,
p->tot_len);
528 tcp_recved(tpcb,
p->tot_len);
549 err_t wr_err = ERR_OK;
551 while ((wr_err == ERR_OK) && (
es->
p_tx != NULL) &&
552 (
es->
p_tx->len <= tcp_sndbuf(tpcb))) {
557 wr_err = tcp_write(tpcb, ptr->payload, ptr->len, 1);
563 if (wr_err == ERR_OK) {
575 }
else if (wr_err == ERR_MEM) {
590 static err_t
poll(
void *arg,
struct tcp_pcb *tpcb)
594 if (
es->es != NULL) {
595 if (
es->es->
p_tx != NULL) {
597 es->send(tpcb,
es->es);
602 es->connectionClose(tpcb,
es->es);
622 static err_t
sent(
void *arg,
struct tcp_pcb *tpcb, u16_t len)
624 LWIP_UNUSED_ARG(len);
627 if (
es->es->
p_tx != NULL) {
629 es->send(tpcb,
es->es);
642 BufferCtl.buff[i] = 0;
int XTAL_Sec1
Definition: tcp_client.cpp:85
int16_t station_id
Definition: tcp_client.cpp:46
void clearAudioBuffer(void)
Definition: tcp_client.h:639
char getKalenderwoche(const int uTag, const int uMonat, const int uJahr)
Definition: calend.c:156
int buffer_underrunning
Definition: tcp_client.cpp:115
void gateActivities(void)
Gate for all activites that are admitted every 1s.
#define FILE_READ_BUFFER_SIZE
Definition: web_radio_config.h:42
int state_connected
Definition: tcp_client.cpp:27
DNS_desc_t Server[MaxStation]
Definition: stations.cpp:24
enum client_states state
Definition: tcp_client.h:51
Definition: stations.h:334
volatile uint64_t message_count
Definition: tcp_client.cpp:60
int buffer_overrunning
Definition: tcp_client.cpp:114
void process(void)
Process object.
volatile int err
Definition: mp3player.cpp:51
volatile int meta_info_len
Definition: tcp_client.cpp:70
int TCP_buff_start
Definition: tcp_client.cpp:82
volatile uint64_t MS_TIMER1
Definition: main.cpp:97
char connectionInfo[240]
Definition: tcp_client.cpp:35
int XTAL_Weekday
Definition: tcp_client.cpp:86
char radioInfo[240]
Definition: tcp_client.cpp:35
int XTAL_Min
Definition: main.cpp:48
void sendNTP(ip_addr_t *ipaddr)
Definition: ntpudp.c:119
void check_stations_DNS(void)
Definition: stations.cpp:115
char stationInfo[160]
Definition: tcp_client.cpp:35
char StreamURL[500]
Definition: tcp_client.cpp:39
char s3[80]
Definition: tcp_client.cpp:41
char * startnameptr
Definition: tcp_client.cpp:57
long long unsigned int sent_len
Definition: tcp_client.cpp:61
struct tcp_pcb * pcb
Definition: tcp_client.h:52
uint8_t file_read_buffer[FILE_READ_BUFFER_SIZE]
Definition: mp3player.cpp:64
Station * stations
Definition: tcp_client.h:110
int DEST_IP_ADDR3
Definition: tcp_client.cpp:24
volatile uint32_t TCP_extract_idx
Definition: tcp_client.cpp:30
#define TCPBUFF_MAXITEMS
Definition: web_radio_config.h:56
char stationname[160]
Definition: tcp_client.cpp:32
int XTAL_Sec
Definition: tcp_client.cpp:85
void disconnect(void)
disconnects the TCP server
@ ES_RECEIVED
Definition: tcp_client.h:41
char StreamTitle[500]
Definition: tcp_client.cpp:37
volatile int inserted_len
Definition: tcp_client.cpp:66
char httpstr[160]
Definition: tcp_client.cpp:25
int ntpsyncd
Definition: tcp_client.cpp:101
int XTAL_Hour
Definition: tcp_client.cpp:85
struct client * es
Definition: tcp_client.h:128
volatile int items
Definition: tcp_client.cpp:72
static err_t connected(void *arg, struct tcp_pcb *tpcb, err_t err)
Function called when TCP connection established.
Definition: tcp_client.h:199
char Scratch1[500]
Definition: tcp_client.cpp:40
char * strptr
Definition: tcp_client.cpp:56
static err_t sent(void *arg, struct tcp_pcb *tpcb, u16_t len)
This function implements the tcp_sent LwIP callback (called when ACK is received from remote host for...
Definition: tcp_client.h:622
void adjustBuffer()
Adjust speed of danger of buffer overfill: consume items slower
uint8_t TCP_Buffer[TCPBUFF_MAXITEMS] __attribute__((section(".tcpBuffer")))
DNS_desc_t * server
Definition: tcp_client.h:111
char * payloadtemp
Definition: tcp_client.cpp:51
int MP3errorcount
Definition: mp3player.cpp:42
volatile int meta_start_index
Definition: tcp_client.cpp:69
int unFramesDecoded
Definition: mp3player.cpp:30
int XTAL_Month
Definition: tcp_client.cpp:86
#define AUDIO_BUFFER_SIZE
Definition: web_radio_config.h:41
DNS_desc_t * Servers_ptr
Definition: stations.cpp:25
int DEST_IP_ADDR0
Definition: tcp_client.cpp:24
int number_timeouts
Definition: tcp_client.cpp:92
ip_addr_t CurrNTPserver
Definition: main.cpp:98
SAI_HandleTypeDef haudio_out_sai
int XTAL_Day
Definition: tcp_client.cpp:86
int day_of_year
Definition: tcp_client.cpp:119
int metainterval
Definition: tcp_client.cpp:53
volatile uint8_t data_with_metainfo[12000]
Definition: tcp_client.cpp:48
static long long int lencounter
Definition: tcp_client.h:67
int getTagDesJahres(const int uTag, const int uMonat, const int uJahr)
Definition: calend.c:136
volatile uint8_t metainfo_present
Definition: tcp_client.cpp:49
int XTAL_Min2
Definition: tcp_client.cpp:85
struct pbuf * p
Definition: ntpudp.c:48
static err_t recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
tcp_receiv callback
Definition: tcp_client.h:275
char meta_string[15 *256]
Definition: tcp_client.cpp:63
volatile int msg_len_max
Definition: tcp_client.cpp:68
volatile uint64_t connection_timeout
Definition: tcp_client.cpp:91
tcp client application using LwIP RAW API
volatile int metnum
Definition: tcp_client.cpp:34
char metaint[10]
Definition: tcp_client.cpp:33
int DEST_IP_ADDR1
Definition: tcp_client.cpp:24
int laststation
Definition: tcp_client.cpp:44
int XTAL_Min1
Definition: tcp_client.cpp:85
int XTAL_Year
Definition: tcp_client.cpp:86
TcpClient(Mp3Player *mp3, struct netif *connection)
Construct a new Tcp Client object.
Definition: tcp_client.h:122
int currstation
Definition: tcp_client.cpp:43
char initial_pipe[20000]
Definition: tcp_client.cpp:62
static long long int totaldatacount
Definition: tcp_client.h:66
void clearFileReadBuffer(void)
Definition: tcp_client.h:650
@ ES_CLOSING
Definition: tcp_client.h:42
volatile int insertion_point_maximum
Definition: tcp_client.cpp:65
volatile int curr_len
Definition: tcp_client.cpp:67
structure to be passed as argument to the tcp callbacks
Definition: tcp_client.h:50
TcpClient Object.
Definition: tcp_client.h:106
#define MaxStation
Definition: web_radio_config.h:66
int DEST_IP_ADDR2
Definition: tcp_client.cpp:24
@ ES_NOT_CONNECTED
Definition: tcp_client.h:39
struct pbuf * p_tx
Definition: tcp_client.h:53
static Station Stationlist[MaxStation]
Definition: stations.h:48
Web Radio Framework configuration.
volatile uint8_t metainfo_present_LCD
Definition: tcp_client.cpp:50
Definition: stations.h:37
int MP3errorreason
Definition: mp3player.cpp:43
uint32_t maxbuf
Definition: tcp_client.cpp:96
static void send(struct tcp_pcb *tpcb, struct client *es)
function used to send data
Definition: tcp_client.h:546
int XTAL_Sec2
Definition: tcp_client.cpp:86
char s4[80]
Definition: tcp_client.cpp:41
unsigned char calender_week
Definition: tcp_client.cpp:118
struct netif * gnetif
Definition: tcp_client.h:112
int display_state
Definition: tcp_client.cpp:103
@ ES_CONNECTED
Definition: tcp_client.h:40
void analysisOfMetaInfo(void)
Analyse and display metainfo, if present.
MP3FrameInfo mp3FrameInfo
Definition: mp3player.cpp:40
Mp3Player Object.
Definition: mp3player.h:59
void updateStation(void)
On station change disconnect and delete all buffers, then reconnect with new station.
DNS_desc_t Server[MaxStation]
Definition: stations.cpp:24
void connect(ip_addr_t DestIPaddr, uint16_t DEST_PORT)
Tcp Client object and Connects to the TCP server.
client_states
protocol states
Definition: tcp_client.h:38
uint8_t TCP_Buffer[TCPBUFF_MAXITEMS]
void connectionClose(struct tcp_pcb *tpcb, struct client *es)
This function is used to close the tcp connection with server.
int DEST_PORT
Definition: tcp_client.cpp:24
Mp3Player * m_mp3
Definition: tcp_client.h:109
volatile uint32_t TCP_insert_idx
Definition: tcp_client.cpp:29
char metaInfo[240]
Definition: tcp_client.cpp:35
char * ptr2
Definition: tcp_client.cpp:58
volatile int insertion_point
Definition: tcp_client.cpp:64
static err_t poll(void *arg, struct tcp_pcb *tpcb)
This function implements the tcp_poll callback function.
Definition: tcp_client.h:590