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);
|
||||
}
|
||||
|
||||
/* this doesn't work as a printhook yet since posts are split into atoms */
|
||||
void pdmain_print( const char *s)
|
||||
{
|
||||
char y[81];
|
||||
|
|
@ -172,7 +173,7 @@ void pdmain_print( const char *s)
|
|||
if (strlen(y) > 0)
|
||||
pd_bt_writeback((unsigned char *)y, strlen(y));
|
||||
#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_sendtcp(y, strlen(y));
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ extern float soundin[], soundout[];
|
|||
void canvas_start_dsp( void);
|
||||
void pdmain_init( void)
|
||||
{
|
||||
sys_printhook = pdmain_print;
|
||||
/* sys_printhook = pdmain_print; */
|
||||
pd_init();
|
||||
STUFF->st_dacsr = sys_getsr();
|
||||
STUFF->st_soundout = soundout;
|
||||
|
|
|
|||
36
wifi/net.c
36
wifi/net.c
|
|
@ -73,49 +73,43 @@ void tcpreceivertask(void *z)
|
|||
void udpreceivertask(void *z)
|
||||
{
|
||||
char rx_buffer[1000];
|
||||
int ip_protocol = 0, err, newsocket;
|
||||
int ip_protocol = 0, err, udpsocket;
|
||||
struct sockaddr_in dest_addr;
|
||||
|
||||
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_port = htons(CONFIG_ESP_WIFI_SENDPORT);
|
||||
dest_addr.sin_port = htons(CONFIG_ESP_WIFI_LISTENPORT);
|
||||
|
||||
newsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
||||
if (newsocket < 0) {
|
||||
udpsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
||||
if (udpsocket < 0) {
|
||||
ESP_LOGE(TAG, "Unable to create socket: errno %d", errno);
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "udp connecting...");
|
||||
while (err = connect(newsocket, &dest_addr, sizeof(dest_addr)) < 0)
|
||||
{
|
||||
ESP_LOGE(TAG, "Socket unable to bind: errno %d - retrying", 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 binding...");
|
||||
err = bind(udpsocket, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
|
||||
if (err < 0) {
|
||||
ESP_LOGE(TAG, "Socket unable to bind: errno %d", errno);
|
||||
}
|
||||
ESP_LOGI(TAG, "udp bound. receiving ...");
|
||||
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) {
|
||||
ESP_LOGE(TAG, "recvfrom failed: errno %d -- restarting", errno);
|
||||
ESP_LOGE(TAG, "UDP recvfrom failed: errno %d -- restarting", errno);
|
||||
esp_restart();
|
||||
}
|
||||
else if (len == 0)
|
||||
{
|
||||
ESP_LOGE(TAG, "unexpected EOF on socket");
|
||||
ESP_LOGE(TAG, "UDP unexpected EOF on socket");
|
||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||
}
|
||||
else
|
||||
{
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
|
@ -140,7 +134,7 @@ void net_init( void)
|
|||
xTaskCreate(udpreceivertask, "udprcv", 3000, NULL, PRIORITY_WIFI, NULL);
|
||||
while (!tcp_socket)
|
||||
{
|
||||
ESP_LOGE(TAG, "sendtcp: waiting for socket");
|
||||
ESP_LOGI(TAG, "sendtcp: waiting for socket");
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue