diff --git a/picow_access_point.c b/picow_access_point.c index 08f4c79..cb4265a 100644 --- a/picow_access_point.c +++ b/picow_access_point.c @@ -87,6 +87,17 @@ void run_udp_beacon() { } } +void udp_receive_callback(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port){ + printf("UDP callback !\n"); + printf("IP: %d.%d.%d.%d, port %d\n", (addr->addr >>24) & 0xFF, (addr->addr >>16) & 0xFF, (addr->addr >>8) & 0xFF, addr->addr & 0xFF, port); + printf("Taille:%d\n", p->len); + printf("Contenu: "); + for(int i=0; i < p->len; i++){ + printf("%c", ((char*)p->payload)[i]); + } + printf("\n"); +} + static err_t tcp_close_client_connection(TCP_CONNECT_STATE_T *con_state, struct tcp_pcb *client_pcb, err_t close_err) { if (client_pcb) { assert(con_state && con_state->pcb == client_pcb); @@ -328,6 +339,8 @@ void key_pressed_func(void *param) { int main() { stdio_init_all(); + sleep_ms(4000); + TCP_SERVER_T *state = calloc(1, sizeof(TCP_SERVER_T)); if (!state) { DEBUG_printf("failed to allocate state\n"); @@ -371,6 +384,17 @@ int main() { dns_server_t dns_server; dns_server_init(&dns_server, &state->gw); + // UDP Callback + struct udp_pcb * udp_pcd_received = udp_new(); + err_t err = udp_bind(udp_pcd_received, IP_ADDR_ANY, 4444); + if(err != ERR_OK){ + printf("udb_bind err = %d\n", err); + }else{ + printf("udb_bind ok\n"); + } + + udp_recv(udp_pcd_received, udp_receive_callback, NULL); + if (!tcp_server_open(state, ap_name)) { DEBUG_printf("failed to open server\n"); return 1;