summaryrefslogtreecommitdiffstats
path: root/src/device/udp.c
blob: b88f31433b7df1bbd2e821e4b040973368a8d7c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "udp.h"
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

static char udppacketbuffer[32] = {0};
static char *udppacketcursor = NULL;

void udp_init_packet(IPAddress ip, const int port)
{
	Udp.beginPacket(ip, port);
	memset(udppacketbuffer, 0, sizeof(udppacketbuffer));
	udppacketcursor = udppacketbuffer;
}

void udp_push(const void * const data, const size_t size)
{
	memcpy(udppacketcursor, data, size);
	udppacketcursor += size;
}

int udp_flush(void)
{
	Udp.write((const uint8_t *) udppacketbuffer, udppacketcursor - udppacketbuffer);
	return Udp.endPacket();
}