@@ -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