UDPa dn TCP messaging both working, but message timing varies by >= 300 msec
This commit is contained in:
parent
451a260cd0
commit
da0a1784c8
3 changed files with 18 additions and 23 deletions
|
|
@ -162,6 +162,7 @@ void pd_pollhost( void)
|
||||||
xSemaphoreGive(pd_bt_mutex);
|
xSemaphoreGive(pd_bt_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* this doesn't work as a printhook yet since posts are split into atoms */
|
||||||
void pdmain_print( const char *s)
|
void pdmain_print( const char *s)
|
||||||
{
|
{
|
||||||
char y[81];
|
char y[81];
|
||||||
|
|
@ -172,7 +173,7 @@ void pdmain_print( const char *s)
|
||||||
if (strlen(y) > 0)
|
if (strlen(y) > 0)
|
||||||
pd_bt_writeback((unsigned char *)y, strlen(y));
|
pd_bt_writeback((unsigned char *)y, strlen(y));
|
||||||
#endif
|
#endif
|
||||||
#if 0 /* this doesn't work all that well since posts are split into atoms */
|
#if 1
|
||||||
net_sendudp(y, strlen(y), CONFIG_ESP_WIFI_SENDPORT);
|
net_sendudp(y, strlen(y), CONFIG_ESP_WIFI_SENDPORT);
|
||||||
net_sendtcp(y, strlen(y));
|
net_sendtcp(y, strlen(y));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ extern float soundin[], soundout[];
|
||||||
void canvas_start_dsp( void);
|
void canvas_start_dsp( void);
|
||||||
void pdmain_init( void)
|
void pdmain_init( void)
|
||||||
{
|
{
|
||||||
sys_printhook = pdmain_print;
|
/* sys_printhook = pdmain_print; */
|
||||||
pd_init();
|
pd_init();
|
||||||
STUFF->st_dacsr = sys_getsr();
|
STUFF->st_dacsr = sys_getsr();
|
||||||
STUFF->st_soundout = soundout;
|
STUFF->st_soundout = soundout;
|
||||||
|
|
|
||||||
36
wifi/net.c
36
wifi/net.c
|
|
@ -73,49 +73,43 @@ void tcpreceivertask(void *z)
|
||||||
void udpreceivertask(void *z)
|
void udpreceivertask(void *z)
|
||||||
{
|
{
|
||||||
char rx_buffer[1000];
|
char rx_buffer[1000];
|
||||||
int ip_protocol = 0, err, newsocket;
|
int ip_protocol = 0, err, udpsocket;
|
||||||
struct sockaddr_in dest_addr;
|
struct sockaddr_in dest_addr;
|
||||||
|
|
||||||
ESP_LOGI(TAG, "udpreceivertask starting...");
|
ESP_LOGI(TAG, "udpreceivertask starting...");
|
||||||
dest_addr.sin_addr.s_addr = inet_addr(CONFIG_ESP_WIFI_SENDADDR);
|
dest_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
dest_addr.sin_family = AF_INET;
|
dest_addr.sin_family = AF_INET;
|
||||||
dest_addr.sin_port = htons(CONFIG_ESP_WIFI_SENDPORT);
|
dest_addr.sin_port = htons(CONFIG_ESP_WIFI_LISTENPORT);
|
||||||
|
|
||||||
newsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
udpsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
||||||
if (newsocket < 0) {
|
if (udpsocket < 0) {
|
||||||
ESP_LOGE(TAG, "Unable to create socket: errno %d", errno);
|
ESP_LOGE(TAG, "Unable to create socket: errno %d", errno);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ESP_LOGI(TAG, "udp connecting...");
|
ESP_LOGI(TAG, "udp binding...");
|
||||||
while (err = connect(newsocket, &dest_addr, sizeof(dest_addr)) < 0)
|
err = bind(udpsocket, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
|
||||||
{
|
if (err < 0) {
|
||||||
ESP_LOGE(TAG, "Socket unable to bind: errno %d - retrying", errno);
|
ESP_LOGE(TAG, "Socket unable to bind: errno %d", errno);
|
||||||
close(newsocket);
|
|
||||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
|
||||||
newsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
|
||||||
if (newsocket < 0) {
|
|
||||||
ESP_LOGE(TAG, "Unable to create socket: errno %d", errno);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
ESP_LOGI(TAG, "udp bound. receiving ...");
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
int len = recv(newsocket, rx_buffer, sizeof(rx_buffer) - 1, 0);
|
int len = recv(udpsocket, rx_buffer, sizeof(rx_buffer) - 1, 0);
|
||||||
|
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
ESP_LOGE(TAG, "recvfrom failed: errno %d -- restarting", errno);
|
ESP_LOGE(TAG, "UDP recvfrom failed: errno %d -- restarting", errno);
|
||||||
esp_restart();
|
esp_restart();
|
||||||
}
|
}
|
||||||
else if (len == 0)
|
else if (len == 0)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "unexpected EOF on socket");
|
ESP_LOGE(TAG, "UDP unexpected EOF on socket");
|
||||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rx_buffer[len] = 0;
|
rx_buffer[len] = 0;
|
||||||
ESP_LOGI(TAG, "rcv: %s", rx_buffer);
|
ESP_LOGI(TAG, "UDP rcv: %s", rx_buffer);
|
||||||
pd_fromhost(rx_buffer, strlen(rx_buffer));
|
pd_fromhost(rx_buffer, strlen(rx_buffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +134,7 @@ void net_init( void)
|
||||||
xTaskCreate(udpreceivertask, "udprcv", 3000, NULL, PRIORITY_WIFI, NULL);
|
xTaskCreate(udpreceivertask, "udprcv", 3000, NULL, PRIORITY_WIFI, NULL);
|
||||||
while (!tcp_socket)
|
while (!tcp_socket)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "sendtcp: waiting for socket");
|
ESP_LOGI(TAG, "sendtcp: waiting for socket");
|
||||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue