mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-12-22 10:30:13 +00:00
Fixed alignment problem on the MSP430, where the ping message may be misaligned
This commit is contained in:
parent
e2cc8b2a3e
commit
dc8338d248
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the Contiki operating system.
|
* This file is part of the Contiki operating system.
|
||||||
*
|
*
|
||||||
* $Id: shell-rime-ping.c,v 1.8 2009/03/24 14:44:42 adamdunkels Exp $
|
* $Id: shell-rime-ping.c,v 1.9 2009/03/31 17:39:36 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,6 +42,7 @@
|
|||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
#include "net/rime.h"
|
#include "net/rime.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#ifndef HAVE_SNPRINTF
|
#ifndef HAVE_SNPRINTF
|
||||||
int snprintf(char *str, size_t size, const char *format, ...);
|
int snprintf(char *str, size_t size, const char *format, ...);
|
||||||
@ -124,18 +125,19 @@ sent_mesh(struct mesh_conn *c)
|
|||||||
static void
|
static void
|
||||||
recv_mesh(struct mesh_conn *c, const rimeaddr_t *from, u8_t hops)
|
recv_mesh(struct mesh_conn *c, const rimeaddr_t *from, u8_t hops)
|
||||||
{
|
{
|
||||||
struct rime_ping_msg *ping;
|
struct rime_ping_msg ping;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
rtimer_clock_t pingrecvtime;
|
rtimer_clock_t pingrecvtime;
|
||||||
|
|
||||||
ping = packetbuf_dataptr();
|
memcpy(&ping, packetbuf_dataptr(), sizeof(struct rime_ping_msg));
|
||||||
|
|
||||||
if(waiting_for_pong == 0) {
|
if(waiting_for_pong == 0) {
|
||||||
#if TIMESYNCH_CONF_ENABLED
|
#if TIMESYNCH_CONF_ENABLED
|
||||||
ping->pongtime = timesynch_time();
|
ping.pongtime = timesynch_time();
|
||||||
#else
|
#else
|
||||||
ping->pongtime = ping->pingtime;
|
ping.pongtime = ping.pingtime;
|
||||||
#endif
|
#endif
|
||||||
|
memcpy(packetbuf_dataptr(), &ping, sizeof(struct rime_ping_msg));
|
||||||
mesh_send(&mesh, from);
|
mesh_send(&mesh, from);
|
||||||
} else {
|
} else {
|
||||||
#if TIMESYNCH_CONF_ENABLED
|
#if TIMESYNCH_CONF_ENABLED
|
||||||
@ -144,9 +146,9 @@ recv_mesh(struct mesh_conn *c, const rimeaddr_t *from, u8_t hops)
|
|||||||
pingrecvtime = rtimer_arch_now();
|
pingrecvtime = rtimer_arch_now();
|
||||||
#endif
|
#endif
|
||||||
snprintf(buf, sizeof(buf), "%lu ms (%lu + %lu), %d hops.",
|
snprintf(buf, sizeof(buf), "%lu ms (%lu + %lu), %d hops.",
|
||||||
(1000L * (pingrecvtime - ping->pingtime)) / RTIMER_ARCH_SECOND,
|
(1000L * (pingrecvtime - ping.pingtime)) / RTIMER_ARCH_SECOND,
|
||||||
(1000L * (ping->pongtime - ping->pingtime)) / RTIMER_ARCH_SECOND,
|
(1000L * (ping.pongtime - ping.pingtime)) / RTIMER_ARCH_SECOND,
|
||||||
(1000L * (pingrecvtime - ping->pongtime)) / RTIMER_ARCH_SECOND,
|
(1000L * (pingrecvtime - ping.pongtime)) / RTIMER_ARCH_SECOND,
|
||||||
hops);
|
hops);
|
||||||
|
|
||||||
shell_output_str(&rime_ping_command,
|
shell_output_str(&rime_ping_command,
|
||||||
|
Loading…
Reference in New Issue
Block a user