Skip to content

Commit 74d4f29

Browse files
committed
libraries/WiFi: UDP write added and modified socket.write.
Signed-off-by: IFX-Anusha <[email protected]>
1 parent 87edad8 commit 74d4f29

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

libraries/WiFi/src/SecSocket.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,16 +150,25 @@ bool Socket::accept(Socket & client_socket) {
150150
return true;
151151
}
152152

153-
uint32_t Socket::send(const void *data, uint32_t len) {
153+
uint32_t Socket::send(const void *data, uint32_t len, cy_socket_sockaddr_t *addr) {
154154
uint32_t bytes_sent = 0;
155-
_last_error = cy_socket_send(socket, data, len,
156-
CY_SOCKET_FLAGS_NONE, &bytes_sent);
155+
switch (_protocol) {
156+
case SOCKET_PROTOCOL_TCP:
157+
_last_error = cy_socket_send(socket, data, len,
158+
CY_SOCKET_FLAGS_NONE, &bytes_sent);
159+
break;
160+
case SOCKET_PROTOCOL_UDP:
161+
_last_error = cy_socket_sendto(socket, data, len,
162+
CY_SOCKET_FLAGS_NONE, addr,
163+
sizeof(cy_socket_sockaddr_t), &bytes_sent);
164+
break;
165+
}
157166
if (_last_error != CY_RSLT_SUCCESS) {
158167
_status = SOCKET_STATUS_ERROR;
159168
}
160-
161169
return bytes_sent;
162170
}
171+
163172
uint32_t Socket::available() {
164173
return rx_buf.available();
165174
}

libraries/WiFi/src/SecSocket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class Socket {
4141

4242
void listen(int max_connections);
4343
bool accept(Socket & client_socket);
44-
uint32_t send(const void *data, uint32_t len);
44+
uint32_t send(const void *data, uint32_t len, cy_socket_sockaddr_t *addr = NULL);
4545
uint32_t available();
4646
int peek();
4747
uint32_t receive(uint8_t *data, uint32_t len);

libraries/WiFi/src/WiFiUdp.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,26 @@ int WiFiUDP::endPacket() {
6262
}
6363

6464
size_t WiFiUDP::write(uint8_t) {
65-
return 0;
65+
return write(&byte, 1);
6666
}
6767

6868
size_t WiFiUDP::write(const uint8_t *buffer, size_t size) {
69-
return 0;
69+
if (size == 0) {
70+
return 0;
71+
}
72+
cy_socket_sockaddr_t addr = {
73+
.port = _port,
74+
.ip_address = {
75+
.version = CY_SOCKET_IP_VER_V4,
76+
.ip = { .v4 = (uint32_t)remote_ip }
77+
}
78+
};
79+
size_t bytes_written = socket.send(buffer, size, &addr);
80+
if (bytes_written != size) {
81+
_status = SOCKET_STATUS_ERROR;
82+
return 0;
83+
}
84+
return bytes_written;
7085
}
7186

7287
int WiFiUDP::parsePacket() {

0 commit comments

Comments
 (0)