  | 
                        
                             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