7 #if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLCOK
10 static uint16_t any_port = 50000;
11 static uint8_t curr_state[8] = {0,};
12 static uint8_t sock_state[8] = {0,};
17 int32_t
loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port, uint8_t loopback_mode)
20 datasize_t sentsize=0;
23 datasize_t received_size;
30 }
else if(loopback_mode ==
AS_IPV6)
37 #ifdef _LOOPBACK_DEBUG_
38 uint8_t dst_ip[16], ext_status;
48 #ifdef _LOOPBACK_DEBUG_
53 printf(
"%d:Peer IP : %04X:%04X", sn, ((uint16_t)dst_ip[0] << 8) | ((uint16_t)dst_ip[1]),
54 ((uint16_t)dst_ip[2] << 8) | ((uint16_t)dst_ip[3]));
55 printf(
":%04X:%04X", ((uint16_t)dst_ip[4] << 8) | ((uint16_t)dst_ip[5]),
56 ((uint16_t)dst_ip[6] << 8) | ((uint16_t)dst_ip[7]));
57 printf(
":%04X:%04X", ((uint16_t)dst_ip[8] << 8) | ((uint16_t)dst_ip[9]),
58 ((uint16_t)dst_ip[10] << 8) | ((uint16_t)dst_ip[11]));
59 printf(
":%04X:%04X, ", ((uint16_t)dst_ip[12] << 8) | ((uint16_t)dst_ip[13]),
60 ((uint16_t)dst_ip[14] << 8) | ((uint16_t)dst_ip[15]));
65 printf(
"%d:Peer IP : %.3d.%.3d.%.3d.%.3d, ",
66 sn, dst_ip[0], dst_ip[1], dst_ip[2], dst_ip[3]);
69 printf(
"Peer Port : %d\r\n", dst_port);
76 if(received_size > 0){
78 ret =
recv(sn, buf, received_size);
80 if(ret <= 0)
return ret;
81 received_size = (uint16_t) ret;
85 printf(
"Dostal jsem %d bytu: %10s ... \n",received_size,buf);
88 while(received_size != sentsize)
90 ret =
send(sn, buf+sentsize, received_size-sentsize);
101 #ifdef _LOOPBACK_DEBUG_
102 printf(
"%d:CloseWait\r\n",sn);
105 if(received_size > 0)
108 ret =
recv(sn, buf, received_size);
110 if(ret <= 0)
return ret;
111 received_size = (uint16_t) ret;
114 while(received_size != sentsize)
116 ret =
send(sn, buf+sentsize, received_size-sentsize);
127 #ifdef _LOOPBACK_DEBUG_
128 printf(
"%d:Socket Closed\r\n", sn);
133 #ifdef _LOOPBACK_DEBUG_
134 printf(
"%d:Listen, TCP server loopback, port [%d] as %s\r\n", sn, port, mode_msg);
136 printf(
"%d:Listen, TCP server loopback, port [%d] as %s\r\n", sn, port, mode_msg);
139 #ifdef _LOOPBACK_DEBUG_
140 printf(
"%d:TCP server loopback start\r\n",sn);
142 switch(loopback_mode)
158 #ifdef _LOOPBACK_DEBUG_
159 printf(
"%d : Fail to create socket.\r\n",sn);
163 #ifdef _LOOPBACK_DEBUG_
164 printf(
"%d:Socket opened[%d]\r\n",sn,
getSn_SR(sn));
175 int32_t
loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport, uint8_t loopback_mode)
179 datasize_t sentsize=0;
180 uint8_t status,inter,addr_len;
181 datasize_t received_size;
196 #ifdef _LOOPBACK_DEBUG_
197 printf(
"%d:Connected to - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport);
208 if(received_size > 0)
211 ret =
recv(sn, buf, received_size);
213 if(ret <= 0)
return ret;
214 received_size = (uint16_t) ret;
218 while(received_size != sentsize)
220 ret =
send(sn, buf+sentsize, received_size-sentsize);
233 #ifdef _LOOPBACK_DEBUG_
234 printf(
"%d:CloseWait\r\n",sn);
241 ret =
recv(sn, buf, received_size);
243 if(ret <= 0)
return ret;
244 received_size = (uint16_t) ret;
248 while(received_size != sentsize)
250 ret =
send(sn, buf+sentsize, received_size-sentsize);
260 #ifdef _LOOPBACK_DEBUG_
261 printf(
"%d:Socket Closed\r\n", sn);
266 #ifdef _LOOPBACK_DEBUG_
268 printf(
"%d:Try to connect to the %d.%d.%d.%d, %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport);
269 else if(loopback_mode ==
AS_IPV6)
271 printf(
"%d:Try to connect to the %04X:%04X", sn, ((uint16_t)destip[0] << 8) | ((uint16_t)destip[1]),
272 ((uint16_t)destip[2] << 8) | ((uint16_t)destip[3]));
273 printf(
":%04X:%04X", ((uint16_t)destip[4] << 8) | ((uint16_t)destip[5]),
274 ((uint16_t)destip[6] << 8) | ((uint16_t)destip[7]));
275 printf(
":%04X:%04X", ((uint16_t)destip[8] << 8) | ((uint16_t)destip[9]),
276 ((uint16_t)destip[10] << 8) | ((uint16_t)destip[11]));
277 printf(
":%04X:%04X,", ((uint16_t)destip[12] << 8) | ((uint16_t)destip[13]),
278 ((uint16_t)destip[14] << 8) | ((uint16_t)destip[15]));
279 printf(
"%d\r\n", destport);
284 ret =
connect(sn, destip, destport, 4);
285 else if(loopback_mode ==
AS_IPV6)
286 ret =
connect(sn, destip, destport, 16);
288 printf(
"SOCK Status: %d\r\n", ret);
290 if( ret !=
SOCK_OK)
return ret;
294 switch(loopback_mode)
310 #ifdef _LOOPBACK_DEBUG_
311 printf(
"%d : Fail to create socket.\r\n",sn);
315 printf(
"%d:Socket opened[%d]\r\n",sn,
getSn_SR(sn));
325 int32_t
loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port, uint8_t loopback_mode)
328 static uint8_t destip[16] = {0,};
329 static uint16_t destport;
333 datasize_t received_size;
334 uint16_t
size, sentsize;
340 }
else if(loopback_mode ==
AS_IPV6)
356 ret =
recvfrom(sn, buf, received_size, (uint8_t*)&destip, (uint16_t*)&destport, &addr_len);
360 received_size = (uint16_t) ret;
362 while(sentsize != received_size){
363 ret =
sendto(sn, buf+sentsize, received_size-sentsize, destip, destport, addr_len);
365 if(ret < 0)
return ret;
373 switch(loopback_mode)
385 printf(
"%d:Opened, UDP loopback, port [%d] as %s\r\n", sn, port, mode_msg);