Commit 0f803f1d32ae808ac3014252adbbe9de09b7ae2b
1 parent
41eae2a4
test application real-time
Showing
4 changed files
with
64 additions
and
337 deletions
Show diff stats
RIOT/examples/real_time_app/main.c
@@ -100,13 +100,19 @@ char sock_time_server_stack[THREAD_STACKSIZE_MAIN]; | @@ -100,13 +100,19 @@ char sock_time_server_stack[THREAD_STACKSIZE_MAIN]; | ||
100 | // | 100 | // |
101 | kernel_pid_t server, client, time_server; | 101 | kernel_pid_t server, client, time_server; |
102 | int ordre = 0; | 102 | int ordre = 0; |
103 | -uint8_t buf[128]; | 103 | +int64_t offset = 0; |
104 | +int timer_run = 0; | ||
104 | sock_udp_ep_t local = SOCK_IPV6_EP_ANY; | 105 | sock_udp_ep_t local = SOCK_IPV6_EP_ANY; |
105 | sock_udp_t sock; | 106 | sock_udp_t sock; |
106 | sock_udp_ep_t local_ntp = SOCK_IPV6_EP_ANY; | 107 | sock_udp_ep_t local_ntp = SOCK_IPV6_EP_ANY; |
107 | sock_udp_t sock_ntp; | 108 | sock_udp_t sock_ntp; |
108 | static ntp_packet_t sntp_packet; | 109 | static ntp_packet_t sntp_packet; |
109 | 110 | ||
111 | +typedef struct tableau { | ||
112 | + uint32_t heure_actuelle; | ||
113 | + char donnees[2]; | ||
114 | +}Data; | ||
115 | + | ||
110 | 116 | ||
111 | void *sock_time_server_thread(void *arg) | 117 | void *sock_time_server_thread(void *arg) |
112 | { | 118 | { |
@@ -125,7 +131,7 @@ void *sock_time_server_thread(void *arg) | @@ -125,7 +131,7 @@ void *sock_time_server_thread(void *arg) | ||
125 | if ((res = sock_udp_recv(&sock_ntp,&sntp_packet, sizeof(sntp_packet), SOCK_NO_TIMEOUT, | 131 | if ((res = sock_udp_recv(&sock_ntp,&sntp_packet, sizeof(sntp_packet), SOCK_NO_TIMEOUT, |
126 | &remote)) >= 0) { | 132 | &remote)) >= 0) { |
127 | puts("Received a message"); | 133 | puts("Received a message"); |
128 | - printf("TT: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds)); | 134 | + //printf("TT: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds)); |
129 | 135 | ||
130 | // printf("%c\n",remote.addr.ipv6[15]); | 136 | // printf("%c\n",remote.addr.ipv6[15]); |
131 | //xtimer_ticks64_t now = xtimer_now64(); | 137 | //xtimer_ticks64_t now = xtimer_now64(); |
@@ -133,8 +139,8 @@ void *sock_time_server_thread(void *arg) | @@ -133,8 +139,8 @@ void *sock_time_server_thread(void *arg) | ||
133 | sntp_packet.receive.seconds=byteorder_htonl( xtimer_now_usec()); | 139 | sntp_packet.receive.seconds=byteorder_htonl( xtimer_now_usec()); |
134 | sntp_packet.origin.seconds=sntp_packet.transmit.seconds; | 140 | sntp_packet.origin.seconds=sntp_packet.transmit.seconds; |
135 | sntp_packet.transmit.seconds=byteorder_htonl( xtimer_now_usec()); | 141 | sntp_packet.transmit.seconds=byteorder_htonl( xtimer_now_usec()); |
136 | - printf("heure actuelle : %lu\n",xtimer_now_usec()); | ||
137 | - printf("TT2: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds)); | 142 | + //printf("heure actuelle : %lu\n",xtimer_now_usec()); |
143 | + //printf("TT2: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds)); | ||
138 | //memset(&sntp_packet, 0, sizeof(sntp_packet)); | 144 | //memset(&sntp_packet, 0, sizeof(sntp_packet)); |
139 | //ntp_packet_set_vn(&sntp_packet); | 145 | //ntp_packet_set_vn(&sntp_packet); |
140 | //ntp_packet_set_mode(&sntp_packet, NTP_MODE_SERVER); | 146 | //ntp_packet_set_mode(&sntp_packet, NTP_MODE_SERVER); |
@@ -172,8 +178,13 @@ void *pwm_thread(void *arg) | @@ -172,8 +178,13 @@ void *pwm_thread(void *arg) | ||
172 | void *sock_server_thread(void *arg) | 178 | void *sock_server_thread(void *arg) |
173 | { | 179 | { |
174 | (void) arg; | 180 | (void) arg; |
181 | + Data buf; | ||
182 | + int compteur = 5; | ||
183 | + int deadline; | ||
175 | local.port = 1234; | 184 | local.port = 1234; |
176 | - | 185 | + sock_udp_ep_t server = { .port = NTP_PORT, .family = AF_INET6 }; |
186 | + ipv6_addr_from_str((ipv6_addr_t *)&server.addr, "dead:beef::3402"); | ||
187 | + | ||
177 | if (sock_udp_create(&sock, &local, NULL, 0) < 0) { | 188 | if (sock_udp_create(&sock, &local, NULL, 0) < 0) { |
178 | puts("Error creating UDP sock"); | 189 | puts("Error creating UDP sock"); |
179 | return NULL; | 190 | return NULL; |
@@ -186,14 +197,42 @@ void *sock_server_thread(void *arg) | @@ -186,14 +197,42 @@ void *sock_server_thread(void *arg) | ||
186 | sock_udp_ep_t remote; | 197 | sock_udp_ep_t remote; |
187 | ssize_t res; | 198 | ssize_t res; |
188 | 199 | ||
189 | - if ((res = sock_udp_recv(&sock, buf, sizeof(buf), SOCK_NO_TIMEOUT, | 200 | + if ((res = sock_udp_recv(&sock, &buf, sizeof(buf), SOCK_NO_TIMEOUT, |
190 | &remote)) >= 0) { | 201 | &remote)) >= 0) { |
191 | // puts("Received a message"); | 202 | // puts("Received a message"); |
192 | //printf("%s\n",buf); | 203 | //printf("%s\n",buf); |
193 | - if (sock_udp_send(&sock, buf, res, &remote) < 0) { | 204 | + /*if (sock_udp_send(&sock, buf, res, &remote) < 0) { |
194 | puts("Error sending reply"); | 205 | puts("Error sending reply"); |
195 | - } | ||
196 | - if(strcmp((char *)buf,"go")==0) | 206 | + }*/ |
207 | + if (sntp_sync(&server, SOCK_NO_TIMEOUT) < 0) { | ||
208 | + puts("Error in synchronization"); | ||
209 | + return NULL; | ||
210 | + } | ||
211 | + offset = sntp_get_offset(); | ||
212 | + deadline = xtimer_now_usec() + offset - buf.heure_actuelle; | ||
213 | + printf("tps de transmission : %i\n",deadline); | ||
214 | + printf("compteur : %d\n",compteur); | ||
215 | + if(deadline<=70000 && compteur >=5) | ||
216 | + { | ||
217 | + ordre = 1; | ||
218 | + timer_clear(TIMER_DEV(1),0); | ||
219 | + } | ||
220 | + else if(deadline<=70000 && (ordre == 2 || ordre ==0)) | ||
221 | + { | ||
222 | + compteur++; | ||
223 | + } | ||
224 | + else | ||
225 | + { | ||
226 | + ordre = 2; | ||
227 | + compteur = 0; | ||
228 | + if(timer_run == 0) | ||
229 | + { | ||
230 | + timer_set(TIMER_DEV(1),0,25200); | ||
231 | + timer_run = 1; | ||
232 | + } | ||
233 | + } | ||
234 | + | ||
235 | + /*if(strcmp((char *)buf,"go")==0) | ||
197 | { | 236 | { |
198 | ordre = 1; | 237 | ordre = 1; |
199 | timer_set(XTIMER_DEV,0,8400); | 238 | timer_set(XTIMER_DEV,0,8400); |
@@ -203,15 +242,20 @@ void *sock_server_thread(void *arg) | @@ -203,15 +242,20 @@ void *sock_server_thread(void *arg) | ||
203 | { | 242 | { |
204 | ordre = 0; | 243 | ordre = 0; |
205 | } | 244 | } |
206 | - } | 245 | + }*/ |
246 | + memset(&buf,0,sizeof(buf)); | ||
207 | } | 247 | } |
248 | + } | ||
208 | return NULL; | 249 | return NULL; |
209 | } | 250 | } |
210 | 251 | ||
211 | void *sock_client_thread(void *arg) | 252 | void *sock_client_thread(void *arg) |
212 | { | 253 | { |
213 | (void) arg; | 254 | (void) arg; |
214 | - uint_8t paquet[]; | 255 | + Data data; |
256 | + data.donnees[0] = 'g'; | ||
257 | + data.donnees[1] = 'o'; | ||
258 | + //uint8_t paquet[]; | ||
215 | sock_udp_ep_t remote = { .family = AF_INET6 }; | 259 | sock_udp_ep_t remote = { .family = AF_INET6 }; |
216 | 260 | ||
217 | remote.port = 1234; | 261 | remote.port = 1234; |
@@ -225,7 +269,9 @@ void *sock_client_thread(void *arg) | @@ -225,7 +269,9 @@ void *sock_client_thread(void *arg) | ||
225 | while (1) { | 269 | while (1) { |
226 | // //ipv6_addr_set_all_nodes_multicast((ipv6_addr_t *)&remote.addr.ipv6, | 270 | // //ipv6_addr_set_all_nodes_multicast((ipv6_addr_t *)&remote.addr.ipv6, |
227 | // // IPV6_ADDR_MCAST_SCP_LINK_LOCAL); | 271 | // // IPV6_ADDR_MCAST_SCP_LINK_LOCAL); |
228 | - if (sock_udp_send(NULL, "go", sizeof("go"), &remote) < 0) { | 272 | + data.heure_actuelle = xtimer_now_usec(); |
273 | + | ||
274 | + if (sock_udp_send(NULL, &data, sizeof(data), &remote) < 0) { | ||
229 | puts("Error sending message"); | 275 | puts("Error sending message"); |
230 | } | 276 | } |
231 | xtimer_sleep(1); | 277 | xtimer_sleep(1); |
@@ -237,23 +283,24 @@ static void arret_urgence(void *arg,int channel) | @@ -237,23 +283,24 @@ static void arret_urgence(void *arg,int channel) | ||
237 | { | 283 | { |
238 | //pwm_set(PWM_DEV(0),1,0); | 284 | //pwm_set(PWM_DEV(0),1,0); |
239 | ordre=0; | 285 | ordre=0; |
286 | + timer_run = 0; | ||
240 | printf("Arret d'urgence\n"); | 287 | printf("Arret d'urgence\n"); |
241 | } | 288 | } |
242 | 289 | ||
243 | -static void degradation(void *arg,int channel) | 290 | +/*static void degradation(void *arg,int channel) |
244 | { | 291 | { |
245 | ordre=2; | 292 | ordre=2; |
246 | //pwm_set(PWM_DEV(0),1,0); | 293 | //pwm_set(PWM_DEV(0),1,0); |
247 | printf("Ralentissement\n"); | 294 | printf("Ralentissement\n"); |
248 | timer_set(TIMER_DEV(1),0,25200); | 295 | timer_set(TIMER_DEV(1),0,25200); |
249 | -} | 296 | +}*/ |
250 | 297 | ||
251 | static void _init_timer(void) | 298 | static void _init_timer(void) |
252 | { | 299 | { |
253 | printf("ok timer\n"); | 300 | printf("ok timer\n"); |
254 | - timer_init(XTIMER_DEV, CLOCK_CORECLOCK/2 ,°radation,NULL); | ||
255 | - timer_set(XTIMER_DEV, 0, 8400); | ||
256 | - timer_irq_enable(XTIMER_DEV); | 301 | + //timer_init(XTIMER_DEV, CLOCK_CORECLOCK/2 ,°radation,NULL); |
302 | + //timer_set(XTIMER_DEV, 0, 8400); | ||
303 | + //timer_irq_enable(XTIMER_DEV); | ||
257 | timer_init(TIMER_DEV(1), CLOCK_CORECLOCK/2 ,&arret_urgence,NULL); | 304 | timer_init(TIMER_DEV(1), CLOCK_CORECLOCK/2 ,&arret_urgence,NULL); |
258 | timer_irq_enable(TIMER_DEV(1)); | 305 | timer_irq_enable(TIMER_DEV(1)); |
259 | } | 306 | } |
RIOT/examples/static_network_app_sock_udp/README.md deleted
@@ -1,142 +0,0 @@ | @@ -1,142 +0,0 @@ | ||
1 | -# gnrc_networking example | ||
2 | - | ||
3 | -This example shows you how to try out the code in two different ways: Either by communicating | ||
4 | -between the RIOT machine and its Linux host, or by communicating between two RIOT instances. | ||
5 | -Note that the former only works with native, i.e. if you run RIOT on your Linux machine. | ||
6 | - | ||
7 | -## Connecting RIOT native and the Linux host | ||
8 | - | ||
9 | -> **Note:** RIOT does not support IPv4, so you need to stick to IPv6 anytime. To | ||
10 | -establish a connection between RIOT and the Linux host, you will need `netcat` | ||
11 | -(with IPv6 support). Ubuntu 14.04 comes with netcat IPv6 support pre-installed. | ||
12 | -On Debian it's available in the package `netcat-openbsd`. Be aware that many | ||
13 | -programs require you to add an option such as -6 to tell them to use IPv6, otherwise they | ||
14 | -will fail. If you're using a _Raspberry Pi_, run `sudo modprobe ipv6` before trying | ||
15 | -this example, because raspbian does not load the IPv6 module automatically. | ||
16 | -On some systems (openSUSE for example), the _firewall_ may interfere, and prevent | ||
17 | -some packets to arrive at the application (they will however show up in Wireshark, | ||
18 | -which can be confusing). So be sure to adjust your firewall rules, or turn it off | ||
19 | -(who needs security anyway). | ||
20 | - | ||
21 | -First, create a tap interface: | ||
22 | - | ||
23 | - sudo ip tuntap add tap0 mode tap user ${USER} | ||
24 | - sudo ip link set tap0 up | ||
25 | - | ||
26 | -Now you can start the `gnrc_networking` example by invoking `make term`. This should | ||
27 | -automatically connect to the `tap0` interface. If this doesn't work for any reason, | ||
28 | -run make term with the tap0 interface as the PORT environment variable: | ||
29 | - | ||
30 | - PORT=tap0 make term | ||
31 | - | ||
32 | -To verify that there is connectivity between RIOT and Linux, go to the RIOT console and run `ifconfig`: | ||
33 | - | ||
34 | - > ifconfig | ||
35 | - Iface 7 HWaddr: ce:f5:e1:c5:f7:5a | ||
36 | - inet6 addr: ff02::1/128 scope: local [multicast] | ||
37 | - inet6 addr: fe80::ccf5:e1ff:fec5:f75a/64 scope: local | ||
38 | - inet6 addr: ff02::1:ffc5:f75a/128 scope: local [multicast] | ||
39 | - | ||
40 | -Copy the [link-local address](https://en.wikipedia.org/wiki/Link-local_address) | ||
41 | -of the RIOT node (prefixed with `fe80`) and try to ping it **from the Linux node**: | ||
42 | - | ||
43 | - ping6 fe80::ccf5:e1ff:fec5:f75a%tap0 | ||
44 | - | ||
45 | -Note that the interface on which to send the ping needs to be appended to the IPv6 | ||
46 | -address, `%tap0` in the above example. When talking to the RIOT node, you always want | ||
47 | -to send to/receive from the `tap0` interface. | ||
48 | - | ||
49 | -If the pings succeed you can go on to send UDP packets. To do that, first start a | ||
50 | -UDP server on the RIOT node: | ||
51 | - | ||
52 | - > udp server start 8808 | ||
53 | - Success: started UDP server on port 8808 | ||
54 | - | ||
55 | -Now, on the Linux host, you can run netcat to connect with RIOT's UDP server: | ||
56 | - | ||
57 | - nc -6uv fe80::ccf5:e1ff:fec5:f75a%tap0 8808 | ||
58 | - | ||
59 | -The `-6` option is necessary to tell netcat to use IPv6 only, the `-u` option tells | ||
60 | -it to use UDP only, and the `-v` option makes it give more verbose output (this one is optional). | ||
61 | - | ||
62 | -You should now see that UDP messages are received on the RIOT side. Opening a UDP | ||
63 | -server on the Linux side is also possible. To do that, write down the IP address | ||
64 | -of the host (run on Linux): | ||
65 | - | ||
66 | - ifconfig tap0 | ||
67 | - tap0 Link encap:Ethernet HWaddr ce:f5:e1:c5:f7:59 | ||
68 | - inet6 addr: fe80::4049:5fff:fe17:b3ae/64 Scope:Link | ||
69 | - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
70 | - RX packets:6 errors:0 dropped:0 overruns:0 frame:0 | ||
71 | - TX packets:36 errors:0 dropped:0 overruns:0 carrier:0 | ||
72 | - collisions:0 txqueuelen:0 | ||
73 | - RX bytes:488 (488.0 B) TX bytes:3517 (3.5 KB) | ||
74 | - | ||
75 | -Then open a UDP server on Linux (the `-l` option makes netcat listen for incoming connections): | ||
76 | - | ||
77 | - nc -6ul 8808 | ||
78 | - | ||
79 | -Now, on the RIOT side, send a UDP packet using: | ||
80 | - | ||
81 | - udp send fe80::4049:5fff:fe17:b3ae 8808 testmessage | ||
82 | - | ||
83 | -You should see `testmessage` appear in netcat. Instead of using netcat, you can of | ||
84 | -course write your own software, but you may have to bind the socket to a specific | ||
85 | -interface (tap0 in this case). For an example that shows how to do so, see | ||
86 | -[here](https://gist.github.com/backenklee/dad5e80b764b3b3d0d3e). | ||
87 | - | ||
88 | -## Connecting two RIOT instances | ||
89 | - | ||
90 | -When using native (i.e. when you're trying this on your Linux machine), you first | ||
91 | -need to set up two tap devices and a bridge that connects them. This constitutes a | ||
92 | -virtual network that the RIOT instances can use to communicate. | ||
93 | - | ||
94 | - ./../../dist/tools/tapsetup/tapsetup --create 2 | ||
95 | - | ||
96 | -Then, make sure you've compiled the application by calling `make` and start the | ||
97 | -first RIOT instance by invoking `make term`. In the RIOT shell, get to know the | ||
98 | -IP address of this node: | ||
99 | - | ||
100 | - > ifconfig | ||
101 | - Iface 7 HWaddr: ce:f5:e1:c5:f7:5a | ||
102 | - inet6 addr: ff02::1/128 scope: local [multicast] | ||
103 | - inet6 addr: fe80::ccf5:e1ff:fec5:f75a/64 scope: local | ||
104 | - inet6 addr: ff02::1:ffc5:f75a/128 scope: local [multicast] | ||
105 | - | ||
106 | -and start a UDP server. | ||
107 | - | ||
108 | - > udp server start 8808 | ||
109 | - | ||
110 | -This node is now ready to receive data on port `8808`. | ||
111 | - | ||
112 | -In a second terminal, start a second RIOT instance, this time listening on `tap1`: | ||
113 | - | ||
114 | - PORT=tap1 make term | ||
115 | - | ||
116 | -In the RIOT shell, you can now send a message to the first RIOT instance: | ||
117 | - | ||
118 | - > udp send fe80::ccf5:e1ff:fec5:f75 8808 testmessage | ||
119 | - | ||
120 | -*(Make sure to copy the actual | ||
121 | -[link-local address](https://en.wikipedia.org/wiki/Link-local_address) of your first | ||
122 | -RIOT instance into the above command)* | ||
123 | - | ||
124 | -In your first terminal, you should now see output that looks like this. | ||
125 | - | ||
126 | - > PKTDUMP: data received: | ||
127 | - ~~ SNIP 0 - size: 11 byte, type: NETTYPE_UNDEF (0) | ||
128 | - 000000 74 65 73 74 6d 65 73 73 61 67 65 | ||
129 | - ~~ SNIP 1 - size: 8 byte, type: NETTYPE_UDP (3) | ||
130 | - src-port: 8808 dst-port: 8808 | ||
131 | - length: 19 cksum: 0x4d95f | ||
132 | - ~~ SNIP 2 - size: 40 byte, type: NETTYPE_IPV6 (1) | ||
133 | - traffic class: 0x00 (ECN: 0x0, DSCP: 0x00) | ||
134 | - flow label: 0x00000 | ||
135 | - length: 19 next header: 17 hop limit: 64 | ||
136 | - source address: fe80::a08a:84ff:fe68:544f | ||
137 | - destination address: fe80::60fc:3cff:fe5e:40df | ||
138 | - ~~ SNIP 3 - size: 20 byte, type: NETTYPE_NETIF (-1) | ||
139 | - if_pid: 6 rssi: 0 lqi: 0 | ||
140 | - src_l2addr: a2:8a:84:68:54:4f | ||
141 | - dst_l2addr: 62:fc:3c:5e:40:df | ||
142 | - ~~ PKT - 4 snips, total size: 79 byte |
RIOT/examples/static_network_app_sock_udp/udp.c deleted
@@ -1,174 +0,0 @@ | @@ -1,174 +0,0 @@ | ||
1 | -/* | ||
2 | - * Copyright (C) 2015 Freie Universitรคt Berlin | ||
3 | - * | ||
4 | - * This file is subject to the terms and conditions of the GNU Lesser | ||
5 | - * General Public License v2.1. See the file LICENSE in the top level | ||
6 | - * directory for more details. | ||
7 | - */ | ||
8 | - | ||
9 | -/** | ||
10 | - * @ingroup examples | ||
11 | - * @{ | ||
12 | - * | ||
13 | - * @file | ||
14 | - * @brief Demonstrating the sending and receiving of UDP data | ||
15 | - * | ||
16 | - * @author Hauke Petersen <hauke.petersen@fu-berlin.de> | ||
17 | - * | ||
18 | - * @} | ||
19 | - */ | ||
20 | - | ||
21 | -#include <stdio.h> | ||
22 | -#include <inttypes.h> | ||
23 | - | ||
24 | -#include "net/gnrc.h" | ||
25 | -#include "net/gnrc/ipv6.h" | ||
26 | -#include "net/gnrc/udp.h" | ||
27 | -#include "net/gnrc/pktdump.h" | ||
28 | -#include "timex.h" | ||
29 | -#include "xtimer.h" | ||
30 | - | ||
31 | -//static gnrc_netreg_entry_t server = GNRC_NETREG_ENTRY_INIT_PID(GNRC_NETREG_DEMUX_CTX_ALL, | ||
32 | - // KERNEL_PID_UNDEF); | ||
33 | - | ||
34 | - | ||
35 | -static void send(char *addr_str, char *port_str, char *data, unsigned int num, | ||
36 | - unsigned int delay) | ||
37 | -{ | ||
38 | - uint16_t port; | ||
39 | - ipv6_addr_t addr; | ||
40 | - | ||
41 | - /* parse destination address */ | ||
42 | - if (ipv6_addr_from_str(&addr, addr_str) == NULL) { | ||
43 | - puts("Error: unable to parse destination address"); | ||
44 | - return; | ||
45 | - } | ||
46 | - /* parse port */ | ||
47 | - port = (uint16_t)atoi(port_str); | ||
48 | - if (port == 0) { | ||
49 | - puts("Error: unable to parse destination port"); | ||
50 | - return; | ||
51 | - } | ||
52 | - | ||
53 | - for (unsigned int i = 0; i < num; i++) { | ||
54 | - gnrc_pktsnip_t *payload, *udp, *ip; | ||
55 | - unsigned payload_size; | ||
56 | - /* allocate payload */ | ||
57 | - payload = gnrc_pktbuf_add(NULL, data, strlen(data), GNRC_NETTYPE_UNDEF); | ||
58 | - if (payload == NULL) { | ||
59 | - puts("Error: unable to copy data to packet buffer"); | ||
60 | - return; | ||
61 | - } | ||
62 | - /* store size for output */ | ||
63 | - payload_size = (unsigned)payload->size; | ||
64 | - /* allocate UDP header, set source port := destination port */ | ||
65 | - udp = gnrc_udp_hdr_build(payload, port, port); | ||
66 | - if (udp == NULL) { | ||
67 | - puts("Error: unable to allocate UDP header"); | ||
68 | - gnrc_pktbuf_release(payload); | ||
69 | - return; | ||
70 | - } | ||
71 | - /* allocate IPv6 header */ | ||
72 | - ip = gnrc_ipv6_hdr_build(udp, NULL, &addr); | ||
73 | - if (ip == NULL) { | ||
74 | - puts("Error: unable to allocate IPv6 header"); | ||
75 | - gnrc_pktbuf_release(udp); | ||
76 | - return; | ||
77 | - } | ||
78 | - /* send packet */ | ||
79 | - if (!gnrc_netapi_dispatch_send(GNRC_NETTYPE_UDP, GNRC_NETREG_DEMUX_CTX_ALL, ip)) { | ||
80 | - puts("Error: unable to locate UDP thread"); | ||
81 | - gnrc_pktbuf_release(ip); | ||
82 | - return; | ||
83 | - } | ||
84 | - /* access to `payload` was implicitly given up with the send operation above | ||
85 | - * => use temporary variable for output */ | ||
86 | - printf("Success: send %u byte to [%s]:%u\n", payload_size, addr_str, | ||
87 | - port); | ||
88 | - xtimer_usleep(delay); | ||
89 | - } | ||
90 | -} | ||
91 | - | ||
92 | -static void start_server(char *port_str) | ||
93 | -{ | ||
94 | -// uint16_t port; | ||
95 | -// | ||
96 | -// /* check if server is already running */ | ||
97 | -// if (server.target.pid != KERNEL_PID_UNDEF) { | ||
98 | -// printf("Error: server already running on port %" PRIu32 "\n", | ||
99 | -// server.demux_ctx); | ||
100 | -// return; | ||
101 | -// } | ||
102 | -// /* parse port */ | ||
103 | -// port = (uint16_t)atoi(port_str); | ||
104 | -// if (port == 0) { | ||
105 | -// puts("Error: invalid port specified"); | ||
106 | -// return; | ||
107 | -// } | ||
108 | -// /* start server (which means registering pktdump for the chosen port) */ | ||
109 | -// server.target.pid = gnrc_pktdump_pid; | ||
110 | -// server.demux_ctx = (uint32_t)port; | ||
111 | -// gnrc_netreg_register(GNRC_NETTYPE_UDP, &server); | ||
112 | -// printf("Success: started UDP server on port %" PRIu16 "\n", port); | ||
113 | -} | ||
114 | - | ||
115 | -static void stop_server(void) | ||
116 | -{ | ||
117 | -// /* check if server is running at all */ | ||
118 | -// if (server.target.pid == KERNEL_PID_UNDEF) { | ||
119 | -// printf("Error: server was not running\n"); | ||
120 | -// return; | ||
121 | -// } | ||
122 | -// /* stop server */ | ||
123 | -// gnrc_netreg_unregister(GNRC_NETTYPE_UDP, &server); | ||
124 | -// server.target.pid = KERNEL_PID_UNDEF; | ||
125 | -// puts("Success: stopped UDP server"); | ||
126 | -} | ||
127 | - | ||
128 | -int udp_cmd(int argc, char **argv) | ||
129 | -{ | ||
130 | - if (argc < 2) { | ||
131 | - printf("usage: %s [send|server]\n", argv[0]); | ||
132 | - return 1; | ||
133 | - } | ||
134 | - | ||
135 | - if (strcmp(argv[1], "send") == 0) { | ||
136 | - uint32_t num = 1; | ||
137 | - uint32_t delay = 1000000; | ||
138 | - if (argc < 5) { | ||
139 | - printf("usage: %s send <addr> <port> <data> [<num> [<delay in us>]]\n", | ||
140 | - argv[0]); | ||
141 | - return 1; | ||
142 | - } | ||
143 | - if (argc > 5) { | ||
144 | - num = (uint32_t)atoi(argv[5]); | ||
145 | - } | ||
146 | - if (argc > 6) { | ||
147 | - delay = (uint32_t)atoi(argv[6]); | ||
148 | - } | ||
149 | - send(argv[2], argv[3], argv[4], num, delay); | ||
150 | - } | ||
151 | - else if (strcmp(argv[1], "server") == 0) { | ||
152 | - if (argc < 3) { | ||
153 | - printf("usage: %s server [start|stop]\n", argv[0]); | ||
154 | - return 1; | ||
155 | - } | ||
156 | - if (strcmp(argv[2], "start") == 0) { | ||
157 | - if (argc < 4) { | ||
158 | - printf("usage %s server start <port>\n", argv[0]); | ||
159 | - return 1; | ||
160 | - } | ||
161 | - start_server(argv[3]); | ||
162 | - } | ||
163 | - else if (strcmp(argv[2], "stop") == 0) { | ||
164 | - stop_server(); | ||
165 | - } | ||
166 | - else { | ||
167 | - puts("error: invalid command"); | ||
168 | - } | ||
169 | - } | ||
170 | - else { | ||
171 | - puts("error: invalid command"); | ||
172 | - } | ||
173 | - return 0; | ||
174 | -} |
RIOT/sys/net/application_layer/sntp/sntp.c
@@ -68,8 +68,6 @@ int sntp_sync(sock_udp_ep_t *server, uint32_t timeout) | @@ -68,8 +68,6 @@ int sntp_sync(sock_udp_ep_t *server, uint32_t timeout) | ||
68 | DEBUG("Error receiving message\n"); | 68 | DEBUG("Error receiving message\n"); |
69 | sock_udp_close(&_sntp_sock); | 69 | sock_udp_close(&_sntp_sock); |
70 | mutex_unlock(&_sntp_mutex); | 70 | mutex_unlock(&_sntp_mutex); |
71 | - printf("result : %d\n",result); | ||
72 | - | ||
73 | return result; | 71 | return result; |
74 | } | 72 | } |
75 | //xtimer_ticks64_t now = xtimer_now64(); | 73 | //xtimer_ticks64_t now = xtimer_now64(); |
@@ -78,8 +76,6 @@ int sntp_sync(sock_udp_ep_t *server, uint32_t timeout) | @@ -78,8 +76,6 @@ int sntp_sync(sock_udp_ep_t *server, uint32_t timeout) | ||
78 | /* _sntp_offset = (byteorder_ntohl(_sntp_packet.transmit.seconds) * SEC_IN_USEC) + | 76 | /* _sntp_offset = (byteorder_ntohl(_sntp_packet.transmit.seconds) * SEC_IN_USEC) + |
79 | ((byteorder_ntohl(_sntp_packet.transmit.fraction) * 232) | 77 | ((byteorder_ntohl(_sntp_packet.transmit.fraction) * 232) |
80 | / 1000000) - xtimer_now_usec();*/ | 78 | / 1000000) - xtimer_now_usec();*/ |
81 | - printf("TT: %lu\n", byteorder_ntohl(_sntp_packet.transmit.seconds)); | ||
82 | - printf("heure actuelle : %lu\n",xtimer_now_usec()); | ||
83 | mutex_unlock(&_sntp_mutex); | 79 | mutex_unlock(&_sntp_mutex); |
84 | return 0; | 80 | return 0; |
85 | } | 81 | } |