41eae2a4
vrobic
ajout serveur snt...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/*
* Copyright (C) 2015 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup examples
* @{
*
* @file
* @brief Example application for demonstrating the RIOT network stack
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*
* @}
*/
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
|
41eae2a4
vrobic
ajout serveur snt...
|
26
|
#include <arpa/inet.h>
|
0ce5a8d8
root
correctif mode dé...
|
27
|
|
41eae2a4
vrobic
ajout serveur snt...
|
28
29
|
#include "../../boards/stm32f4discovery/include/board.h"
#include "../../boards/stm32f4discovery/include/periph_conf.h"
|
5345525d
root
ajout retour serv...
|
30
|
#include "periph/gpio.h"
|
41eae2a4
vrobic
ajout serveur snt...
|
31
32
33
34
35
36
37
38
39
40
|
#include "net/sock/udp.h"
#include "net/gnrc/ipv6.h"
#include "net/af.h"
#include "net/sixlowpan.h"
#include "net/gnrc/pktdump.h"
#include "shell.h"
#include "shell_commands.h"
#include "msg.h"
#include "thread.h"
#include "sched.h"
|
41eae2a4
vrobic
ajout serveur snt...
|
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#include "kernel_types.h"
#include "net/netstats.h"
#include "net/ipv6/addr.h"
#include "periph/timer.h"
#include "net/gnrc/ipv6/netif.h"
#include "net/gnrc/netif.h"
#include "net/gnrc/netapi.h"
#include "net/netopt.h"
#include "net/gnrc/pkt.h"
#include "net/gnrc/pktbuf.h"
#include "net/gnrc/netif/hdr.h"
#include "net/gnrc/sixlowpan/netif.h"
#include "net/fib.h"
#include "net/gnrc/udp.h"
#include "periph/pwm.h"
#include "od.h"
#include "net/sntp.h"
#include "net/ntp_packet.h"
#ifdef MODULE_SCHEDSTATISTICS
#include "xtimer.h"
#endif
#ifdef MODULE_TLSF
#include "tlsf.h"
#endif
#define MAIN_QUEUE_SIZE (8)
/**
* @brief The maximal expected link layer address length in byte
*/
#define MAX_ADDR_LEN (8U)
/**
* @brief The default IPv6 prefix length if not specified.
*/
#define SC_NETIF_IPV6_DEFAULT_PREFIX_LEN (64)
#define _STACKSIZE (THREAD_STACKSIZE_DEFAULT + THREAD_EXTRA_STACKSIZE_PRINTF)
#define MSG_TYPE_ISR (0x3456)
|
0ce5a8d8
root
correctif mode dé...
|
81
82
83
|
#define PWM_FREQ 1000
#define PWM_RES 1000
#define DEADLINE 40000
|
41eae2a4
vrobic
ajout serveur snt...
|
84
85
86
87
88
89
|
// addr ipv6 link local node 1: fe80::3734:510e:3317:3402
uint8_t node1[16]={0xfe,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x34,0x51,0x0e,0x33,0x17,0x34,0x02};
// addr ipv6 link local node 2: fe80::3634:5110:3473:3762
uint8_t node2[16]={0xfe,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x34,0x51,0x10,0x34,0x73,0x37,0x62};
//addr ipv6 link local node 3: fe80::3634:5110:3471:3766
|
5345525d
root
ajout retour serv...
|
90
|
uint8_t node3[16]={0xfe,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x34,0x51,0x0b,0x33,0x0a,0x34,0x1e};
|
41eae2a4
vrobic
ajout serveur snt...
|
91
92
93
94
95
96
97
98
99
100
101
102
103
|
//static char _stack_server[GNRC_PKTDUMP_STACKSIZE];
char pwm_stack[THREAD_STACKSIZE_MAIN];
char sock_server_stack[THREAD_STACKSIZE_MAIN];
char sock_client_stack[THREAD_STACKSIZE_MAIN];
char sock_time_server_stack[THREAD_STACKSIZE_MAIN];
// static gnrc_netreg_entry_t server = GNRC_NETREG_ENTRY_INIT_PID(GNRC_NETREG_DEMUX_CTX_ALL,
// KERNEL_PID_UNDEF);
//
// kernel_pid_t gnrc_server_pid = KERNEL_PID_UNDEF;
//
kernel_pid_t server, client, time_server;
int ordre = 0;
|
0f803f1d
root
test application ...
|
104
105
|
int64_t offset = 0;
int timer_run = 0;
|
e873cff7
root
application real-...
|
106
|
int tourne = 0;
|
d3acc3ce
root
ajout gestion led...
|
107
|
int arret = 0;
|
41eae2a4
vrobic
ajout serveur snt...
|
108
109
110
111
112
113
|
sock_udp_ep_t local = SOCK_IPV6_EP_ANY;
sock_udp_t sock;
sock_udp_ep_t local_ntp = SOCK_IPV6_EP_ANY;
sock_udp_t sock_ntp;
static ntp_packet_t sntp_packet;
|
0f803f1d
root
test application ...
|
114
115
116
117
118
|
typedef struct tableau {
uint32_t heure_actuelle;
char donnees[2];
}Data;
|
41eae2a4
vrobic
ajout serveur snt...
|
119
120
121
|
void *sock_time_server_thread(void *arg)
{
|
0ce5a8d8
root
correctif mode dé...
|
122
123
124
125
126
|
(void) arg;
local_ntp.port = NTP_PORT;
if (sock_udp_create(&sock_ntp, &local_ntp, NULL, 0) < 0) {
puts("Error creating UDP sock");
|
41eae2a4
vrobic
ajout serveur snt...
|
127
|
return NULL;
|
0ce5a8d8
root
correctif mode dé...
|
128
129
130
131
132
133
134
135
136
137
|
}
while (1) {
sock_udp_ep_t remote;
ssize_t res;
if ((res = sock_udp_recv(&sock_ntp,&sntp_packet, sizeof(sntp_packet), SOCK_NO_TIMEOUT,
&remote)) >= 0) {
// puts("Received a message");
//printf("TT: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds));
|
41eae2a4
vrobic
ajout serveur snt...
|
138
|
|
0ce5a8d8
root
correctif mode dé...
|
139
140
141
142
143
144
145
146
147
148
149
150
151
|
// printf("%c\n",remote.addr.ipv6[15]);
//xtimer_ticks64_t now = xtimer_now64();
// heure actuelle du serveur
sntp_packet.receive.seconds=byteorder_htonl( xtimer_now_usec());
sntp_packet.origin.seconds=sntp_packet.transmit.seconds;
sntp_packet.transmit.seconds=byteorder_htonl( xtimer_now_usec());
//printf("heure actuelle : %lu\n",xtimer_now_usec());
//printf("TT2: %lu\n", byteorder_ntohl(sntp_packet.transmit.seconds));
//memset(&sntp_packet, 0, sizeof(sntp_packet));
//ntp_packet_set_vn(&sntp_packet);
//ntp_packet_set_mode(&sntp_packet, NTP_MODE_SERVER);
if (sock_udp_send(&sock_ntp, &sntp_packet, sizeof(sntp_packet), &remote) < 0) {
puts("Error sending reply");
|
41eae2a4
vrobic
ajout serveur snt...
|
152
|
}
|
0ce5a8d8
root
correctif mode dé...
|
153
154
155
156
157
|
}
}
return NULL;
}
|
41eae2a4
vrobic
ajout serveur snt...
|
158
159
160
|
void *sock_server_thread(void *arg)
{
|
ceb4c7ca
root
changement carte ...
|
161
162
163
164
|
(void) arg;
Data buf;
int compteur = 5;
int deadline;
|
0ce5a8d8
root
correctif mode dé...
|
165
|
int interruption_msg = 0;
|
ceb4c7ca
root
changement carte ...
|
166
167
168
|
local.port = 1234;
sock_udp_ep_t server = { .port = NTP_PORT, .family = AF_INET6 };
ipv6_addr_from_str((ipv6_addr_t *)&server.addr, "dead:beef::3402");
|
0ce5a8d8
root
correctif mode dé...
|
169
|
|
ceb4c7ca
root
changement carte ...
|
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
if (sock_udp_create(&sock, &local, NULL, 0) < 0) {
puts("Error creating UDP sock");
return NULL;
}
if (sntp_sync(&server, SOCK_NO_TIMEOUT) < 0) {
puts("Error in synchronization");
return NULL;
}
offset = sntp_get_offset();
printf("offset : %i\n",(int)offset);
while (1) {
sock_udp_ep_t remote;
ssize_t res;
|
0ce5a8d8
root
correctif mode dé...
|
184
|
if ((res = sock_udp_recv(&sock, &buf, sizeof(buf), 5 * SEC_IN_USEC ,&remote)) >= 0) {
|
ceb4c7ca
root
changement carte ...
|
185
186
187
188
|
deadline = xtimer_now_usec() + offset - buf.heure_actuelle;
printf("tps de transmission : %i\n",deadline);
if(buf.donnees[0] == 'g' && buf.donnees[1] == 'o') {
|
0ce5a8d8
root
correctif mode dé...
|
189
190
191
192
193
194
195
196
197
|
if(interruption_msg == 1) {
if (sntp_sync(&server, SOCK_NO_TIMEOUT) < 0) {
puts("Error in synchronization");
return NULL;
}
offset = sntp_get_offset();
printf("offset : %i\n",(int)offset);
interruption_msg = 0;
}
|
ceb4c7ca
root
changement carte ...
|
198
199
|
if(deadline >= DEADLINE && compteur >=5) {
compteur = 0;
|
d3acc3ce
root
ajout gestion led...
|
200
201
202
203
|
if(arret == 0) {
if (sock_udp_send(&sock, "d", sizeof("d"), &remote) < 0) {
puts("Error sending reply");
}
|
0ce5a8d8
root
correctif mode dé...
|
204
205
206
207
208
209
|
}
if(tourne == 1)
{
pwm_set(PWM_DEV(0),1,987);
pwm_set(PWM_DEV(1),1,960);
}
|
ceb4c7ca
root
changement carte ...
|
210
|
if(timer_run == 0) {
|
d3acc3ce
root
ajout gestion led...
|
211
|
puts("Degradation");
|
5345525d
root
ajout retour serv...
|
212
213
214
|
gpio_clear(LED1_PIN);
gpio_clear(LED2_PIN);
gpio_set(LED0_PIN);
|
ceb4c7ca
root
changement carte ...
|
215
|
timer_set(TIMER_DEV(1),0,25200);
|
d3acc3ce
root
ajout gestion led...
|
216
217
218
219
220
221
|
/* if (sntp_sync(&server, SOCK_NO_TIMEOUT) < 0) {
* puts("Error in synchronization");
* return NULL;
}
offset = sntp_get_offset();
printf("offset : %i\n",(int)offset);*/
|
ceb4c7ca
root
changement carte ...
|
222
223
224
225
226
|
timer_run = 1;
}
}
if(deadline >= DEADLINE && compteur < 5) {
compteur = 0;
|
0ce5a8d8
root
correctif mode dé...
|
227
228
229
|
if (sock_udp_send(&sock, "d", sizeof("d"), &remote) < 0) {
puts("Error sending reply");
}
|
ceb4c7ca
root
changement carte ...
|
230
231
|
}
if(deadline<=DEADLINE && compteur >=5) {
|
0ce5a8d8
root
correctif mode dé...
|
232
233
|
pwm_set(PWM_DEV(0),1,992);
pwm_set(PWM_DEV(1),1,658);
|
ceb4c7ca
root
changement carte ...
|
234
235
236
|
tourne = 1;
timer_run=0;
timer_clear(TIMER_DEV(1),0);
|
0ce5a8d8
root
correctif mode dé...
|
237
238
239
|
if (sock_udp_send(&sock, "n", sizeof("n"), &remote) < 0) {
puts("Error sending reply");
}
|
d3acc3ce
root
ajout gestion led...
|
240
|
arret = 0;
|
0ce5a8d8
root
correctif mode dé...
|
241
242
243
|
gpio_clear(LED2_PIN);
gpio_clear(LED0_PIN);
gpio_set(LED1_PIN);
|
ceb4c7ca
root
changement carte ...
|
244
245
246
247
248
249
|
}
if(deadline<=DEADLINE && compteur <5) {
compteur++;
}
printf("compteur : %d\n",compteur);
memset(&buf,0,sizeof(buf));
|
d3acc3ce
root
ajout gestion led...
|
250
251
252
253
254
|
if(arret == 1) {
if (sock_udp_send(&sock, "a", sizeof("a"), &remote) < 0) {
puts("Error sending reply");
}
}
|
41eae2a4
vrobic
ajout serveur snt...
|
255
|
}
|
0f803f1d
root
test application ...
|
256
|
}
|
0ce5a8d8
root
correctif mode dé...
|
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
else {
puts("msg non recu");
if(timer_run == 0 && interruption_msg == 0) {
timer_run = 1;
timer_set(TIMER_DEV(1),0,25200);
}
interruption_msg = 1;
if(tourne == 1)
{
pwm_set(PWM_DEV(0),1,987);
pwm_set(PWM_DEV(1),1,960);
gpio_clear(LED1_PIN);
gpio_clear(LED2_PIN);
gpio_set(LED0_PIN);
}
}
|
ceb4c7ca
root
changement carte ...
|
273
|
}
|
0ce5a8d8
root
correctif mode dé...
|
274
|
return NULL;
|
41eae2a4
vrobic
ajout serveur snt...
|
275
276
277
278
|
}
void *sock_client_thread(void *arg)
{
|
ceb4c7ca
root
changement carte ...
|
279
280
|
(void) arg;
Data data;
|
5345525d
root
ajout retour serv...
|
281
|
int vitesse=2;
|
0ce5a8d8
root
correctif mode dé...
|
282
|
uint8_t buf[3];pwm_set(PWM_DEV(0),1,0);
|
ceb4c7ca
root
changement carte ...
|
283
284
285
|
data.donnees[0] = 'g';
data.donnees[1] = 'o';
//uint8_t paquet[];
|
5345525d
root
ajout retour serv...
|
286
|
ssize_t res;
|
ceb4c7ca
root
changement carte ...
|
287
288
289
290
291
292
293
294
|
sock_udp_ep_t remote = { .family = AF_INET6 };
remote.port = 1234;
remote.addr.ipv6[0] = 0xde;
remote.addr.ipv6[1] = 0xad;
remote.addr.ipv6[2] = 0xbe;
remote.addr.ipv6[3] = 0xef;
remote.addr.ipv6[14] = 0x34;
|
5345525d
root
ajout retour serv...
|
295
|
remote.addr.ipv6[15] = 0x1e;
|
0ce5a8d8
root
correctif mode dé...
|
296
|
|
ceb4c7ca
root
changement carte ...
|
297
|
while (1) {
|
0ce5a8d8
root
correctif mode dé...
|
298
299
300
301
|
data.heure_actuelle = xtimer_now_usec();
if (sock_udp_send(&sock, &data, sizeof(data), &remote) < 0) {
puts("Error sending message");
}
|
5345525d
root
ajout retour serv...
|
302
303
|
if ((res = sock_udp_recv(&sock, buf, sizeof(buf), 0.05 * SEC_IN_USEC,NULL)) < 0) {
if (res == -ETIMEDOUT) {
|
0ce5a8d8
root
correctif mode dé...
|
304
|
vitesse = 1;
|
5345525d
root
ajout retour serv...
|
305
306
307
308
309
310
|
}
else {
puts("Error receiving message");
}
}
else {
|
5345525d
root
ajout retour serv...
|
311
312
|
if(buf[0] == 'n')
vitesse = 2;
|
d3acc3ce
root
ajout gestion led...
|
313
314
315
316
|
else if(buf[0] == 'a') {
vitesse = 1;
gpio_set(LED2_PIN);
}
|
5345525d
root
ajout retour serv...
|
317
|
else vitesse = 1;
|
d3acc3ce
root
ajout gestion led...
|
318
319
320
321
322
323
324
325
326
|
}
if(vitesse==2) {
gpio_clear(LED0_PIN);
gpio_clear(LED2_PIN);
gpio_toggle(LED1_PIN);
}
else {
gpio_clear(LED1_PIN);
gpio_toggle(LED0_PIN);
|
5345525d
root
ajout retour serv...
|
327
328
|
}
xtimer_sleep(vitesse);
|
ceb4c7ca
root
changement carte ...
|
329
330
|
}
return NULL;
|
41eae2a4
vrobic
ajout serveur snt...
|
331
332
333
334
|
}
static void arret_urgence(void *arg,int channel)
{
|
e873cff7
root
application real-...
|
335
|
pwm_set(PWM_DEV(0),1,0);
|
0ce5a8d8
root
correctif mode dé...
|
336
|
pwm_set(PWM_DEV(1),1,0);
|
e873cff7
root
application real-...
|
337
|
tourne = 0;
|
0f803f1d
root
test application ...
|
338
|
timer_run = 0;
|
d3acc3ce
root
ajout gestion led...
|
339
|
arret = 1;
|
5345525d
root
ajout retour serv...
|
340
341
342
|
gpio_clear(LED0_PIN);
gpio_clear(LED1_PIN);
gpio_set(LED2_PIN);
|
d3acc3ce
root
ajout gestion led...
|
343
|
puts("Arret d'urgence");
|
41eae2a4
vrobic
ajout serveur snt...
|
344
345
|
}
|
41eae2a4
vrobic
ajout serveur snt...
|
346
347
|
static void _init_timer(void)
{
|
ceb4c7ca
root
changement carte ...
|
348
349
|
timer_init(TIMER_DEV(1), CLOCK_CORECLOCK/2 ,&arret_urgence,NULL);
timer_irq_enable(TIMER_DEV(1));
|
41eae2a4
vrobic
ajout serveur snt...
|
350
351
352
353
|
}
static void _init_pwm(void)
{
|
ceb4c7ca
root
changement carte ...
|
354
355
|
pwm_init(PWM_DEV(0), PWM_LEFT, PWM_FREQ, PWM_RES);
pwm_set(PWM_DEV(0),1,0);
|
0ce5a8d8
root
correctif mode dé...
|
356
357
|
pwm_init(PWM_DEV(1), PWM_LEFT, PWM_FREQ, PWM_RES);
pwm_set(PWM_DEV(1),1,0);
|
41eae2a4
vrobic
ajout serveur snt...
|
358
359
|
}
|
0ce5a8d8
root
correctif mode dé...
|
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
|
static void _init_interface(void)
{
kernel_pid_t ifs[GNRC_NETIF_NUMOF];
ipv6_addr_t addr = IPV6_ADDR_UNSPECIFIED;
ipv6_addr_t tmp_addr= IPV6_ADDR_UNSPECIFIED;
uint8_t hwaddr[MAX_ADDR_LEN];
int res;
gnrc_netif_get(ifs);
//addresses gobales
addr.u8[0] = 0xde;
addr.u8[1] = 0xad;
addr.u8[2] = 0xbe;
addr.u8[3] = 0xef;
res = gnrc_netapi_get(ifs[0], NETOPT_ADDRESS, 0, hwaddr, sizeof(hwaddr));
if (res >= 0) {
addr.u8[14] = *hwaddr;
addr.u8[15] = *(hwaddr+1);
}
memcpy(tmp_addr.u8,addr.u8,IPV6_ADDR_BIT_LEN);
gnrc_ipv6_netif_add_addr(ifs[0], &addr, 64, GNRC_IPV6_NETIF_ADDR_FLAGS_UNICAST);
/* model ipv6 addr: dead:beef::Hwaddr */
if((addr.u8[14]==0x34)&&(addr.u8[15]==0x02)){
tmp_addr.u8[14] = 0x34;
tmp_addr.u8[15] = 0x1e;
//fibroute dest: dead:beef::3766 via fe80::3634:5110:3473:3762
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node2, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE);
tmp_addr.u8[14] = 0x37;
tmp_addr.u8[15] = 0x62;
//fibroute dest: dead:beef::3762 via fe80::3634:5110:3473:3762
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node2, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE);
client=thread_create(sock_client_stack,sizeof(sock_client_stack),8,THREAD_CREATE_STACKTEST,sock_client_thread,NULL,"sock_client_thread");
time_server=thread_create(sock_time_server_stack,sizeof(sock_time_server_stack),6,THREAD_CREATE_STACKTEST,sock_time_server_thread,NULL,"sock_time_server_thread");
}else if((addr.u8[14]==0x37)&&(addr.u8[15]==0x62)){
tmp_addr.u8[14] = 0x34;
tmp_addr.u8[15] = 0x1e;
//fibroute dest: dead:beef::3766 via fe80::3634:5110:3471:3766
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node3, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE);
tmp_addr.u8[14] = 0x34;
tmp_addr.u8[15] = 0x02;
//fibroute dest: dead:beef::3402 via fe80::3734:510e:3317:3402
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node1, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE);
}else if((addr.u8[14]==0x34)&&(addr.u8[15]==0x1e)){
tmp_addr.u8[14] = 0x34;
tmp_addr.u8[15] = 0x02;
//fibroute dest: dead:beef::3402 via fe80::3634:5110:3473:3762
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node2, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE); tmp_addr.u8[14] = 0x37;
tmp_addr.u8[14] = 0x37;
tmp_addr.u8[15] = 0x62;
//fibroute dest: dead:beef::3762 via fe80::3634:5110:3473:3762
fib_add_entry(&gnrc_ipv6_fib_table, ifs[0],tmp_addr.u8, IN6ADDRSZ, 0,node2, IN6ADDRSZ, 0, FIB_LIFETIME_NO_EXPIRE);
_init_timer();
_init_pwm();
server=thread_create(sock_server_stack,sizeof(sock_server_stack),6,THREAD_CREATE_STACKTEST,sock_server_thread,NULL,"sock_server_thread");
}else{
puts("new node ?");
}
}
|
41eae2a4
vrobic
ajout serveur snt...
|
426
|
|
41eae2a4
vrobic
ajout serveur snt...
|
427
428
429
430
431
|
static msg_t _main_msg_queue[MAIN_QUEUE_SIZE];
extern int udp_cmd(int argc, char **argv);
static const shell_command_t shell_commands[] = {
|
0ce5a8d8
root
correctif mode dé...
|
432
433
|
{ "udp", "send data over UDP and listen on UDP ports", udp_cmd },
{ NULL, NULL, NULL }
|
41eae2a4
vrobic
ajout serveur snt...
|
434
435
436
437
438
|
};
int main(void)
{
|
0ce5a8d8
root
correctif mode dé...
|
439
440
441
442
443
444
445
446
447
448
449
450
|
msg_init_queue(_main_msg_queue, MAIN_QUEUE_SIZE);
puts("RIOT network stack example application");
_init_interface();
/* start shell */
puts("All up, running the shell now");
char line_buf[SHELL_DEFAULT_BUFSIZE];
shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE);
/* should be never reached */
return 0;
|
41eae2a4
vrobic
ajout serveur snt...
|
451
|
}
|