Skip to content

Commit 2f56ac8

Browse files
natevwnlintz
authored andcommitted
catchup tm_net.c with runtime changes in tessel/t1-runtime#313
1 parent e20f692 commit 2f56ac8

File tree

1 file changed

+18
-27
lines changed

1 file changed

+18
-27
lines changed

src/tm/tm_net.c

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -174,22 +174,18 @@ int tm_tcp_close (tm_socket_t sock)
174174
return ret;
175175
}
176176

177-
int tm_tcp_connect (tm_socket_t sock, uint8_t ip0, uint8_t ip1, uint8_t ip2, uint8_t ip3, uint16_t port)
177+
int tm_tcp_connect (tm_socket_t sock, uint32_t addr, uint16_t port)
178178
{
179179
if (!hw_net_online_status()) return 1;
180180
CC3000_START;
181181

182182
// the family is always AF_INET
183-
sockaddr remoteSocketAddr;
184-
remoteSocketAddr.sa_family = AF_INET;
185-
remoteSocketAddr.sa_data[0] = (port & 0xFF00) >> 8;
186-
remoteSocketAddr.sa_data[1] = (port & 0x00FF);
187-
remoteSocketAddr.sa_data[2] = ip0;
188-
remoteSocketAddr.sa_data[3] = ip1;
189-
remoteSocketAddr.sa_data[4] = ip2;
190-
remoteSocketAddr.sa_data[5] = ip3;
191-
192-
int lerr = connect(sock, &remoteSocketAddr, sizeof(sockaddr));
183+
sockaddr_in remoteSocketAddr;
184+
remoteSocketAddr.sin_family = AF_INET;
185+
remoteSocketAddr.sin_port = htons(port);
186+
remoteSocketAddr.sin_addr.s_addr = htonl(addr);
187+
188+
int lerr = connect(sock, (sockaddr *) &remoteSocketAddr, sizeof(sockaddr));
193189
if (lerr != ESUCCESS) {
194190
TM_DEBUG("Error connecting to TCP socket.");
195191
}
@@ -255,19 +251,15 @@ int tm_tcp_listen (tm_socket_t sock, uint16_t port)
255251
if (!hw_net_online_status()) return -1;
256252
CC3000_START;
257253

258-
sockaddr localSocketAddr;
259-
localSocketAddr.sa_family = AF_INET;
260-
localSocketAddr.sa_data[0] = (port & 0xFF00) >> 8; //ascii_to_char(0x01, 0x01);
261-
localSocketAddr.sa_data[1] = (port & 0x00FF); //ascii_to_char(0x05, 0x0c);
262-
localSocketAddr.sa_data[2] = 0;
263-
localSocketAddr.sa_data[3] = 0;
264-
localSocketAddr.sa_data[4] = 0;
265-
localSocketAddr.sa_data[5] = 0;
254+
sockaddr_in localSocketAddr;
255+
localSocketAddr.sin_family = AF_INET;
256+
localSocketAddr.sin_port = htons(port);
257+
localSocketAddr.sin_addr.s_addr = 0;
266258

267259
// Bind socket
268260
TM_DEBUG("Binding local socket...");
269261
int sockStatus;
270-
if ((sockStatus = bind(sock, &localSocketAddr, sizeof(sockaddr))) != 0) {
262+
if ((sockStatus = bind(sock, (sockaddr *) &localSocketAddr, sizeof(localSocketAddr))) != 0) {
271263
TM_DEBUG("binding failed: %d", sockStatus);
272264
CC3000_END;
273265
return -1;
@@ -295,18 +287,17 @@ int tm_tcp_listen (tm_socket_t sock, uint16_t port)
295287
// Returns -1 on error or no socket.
296288
// Returns -2 on pending connection.
297289
// Returns >= 0 for socket descriptor.
298-
tm_socket_t tm_tcp_accept (tm_socket_t sock, uint32_t *ip)
290+
tm_socket_t tm_tcp_accept (tm_socket_t sock, uint32_t *addr, uint16_t *port)
299291
{
300292
if (!hw_net_online_status()) return -1;
301293

302294
// the family is always AF_INET
303-
sockaddr addrClient;
304-
socklen_t addrlen;
295+
sockaddr_in addrClient;
296+
socklen_t addrlen = sizeof(addrClient);
305297
CC3000_START;
306-
int res = accept(sock, &addrClient, &addrlen);
298+
int res = accept(sock, (sockaddr *) &addrClient, &addrlen);
307299
CC3000_END;
308-
309-
char *aliasable_socket = (char*) &(addrClient.sa_data[2]);
310-
*ip = *((uint32_t *) aliasable_socket);
300+
*addr = ntohl(addrClient.sin_addr.s_addr);
301+
*port = ntohs(addrClient.sin_addr.s_addr);
311302
return res;
312303
}

0 commit comments

Comments
 (0)