From df004818be0944a5459b2d23dd4b49c55b716448 Mon Sep 17 00:00:00 2001 From: kusy Date: Thu, 7 Aug 2008 00:06:53 +0000 Subject: [PATCH] Previously reported timestamping bug was only fixed partially: *timesync was computed correctly, but could be written at the wrong offset with TXFIFO_RAM.write (this would only happen if cc2420 was not the longest header). Bug fixed here. --- tos/chips/cc2420/transmit/CC2420TransmitP.nc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tos/chips/cc2420/transmit/CC2420TransmitP.nc b/tos/chips/cc2420/transmit/CC2420TransmitP.nc index 1b6cd48f..bbf76f09 100644 --- a/tos/chips/cc2420/transmit/CC2420TransmitP.nc +++ b/tos/chips/cc2420/transmit/CC2420TransmitP.nc @@ -268,12 +268,12 @@ implementation { call CaptureSFD.captureFallingEdge(); call PacketTimeStamp.set(m_msg, time32); if (call PacketTimeSyncOffset.isSet(m_msg)) { - nx_uint8_t *taddr = m_msg->data + (call PacketTimeSyncOffset.get(m_msg) - sizeof(cc2420_header_t)); - timesync_radio_t *timesync = (timesync_radio_t*)taddr; + uint8_t absOffset = sizeof(message_header_t)-sizeof(cc2420_header_t)+call PacketTimeSyncOffset.get(m_msg); + timesync_radio_t *timesync = (timesync_radio_t *)((nx_uint8_t*)m_msg+absOffset); // set timesync event time as the offset between the event time and the SFD interrupt time (TEP 133) *timesync -= time32; call CSN.clr(); - call TXFIFO_RAM.write( call PacketTimeSyncOffset.get(m_msg), (uint8_t*)timesync, sizeof(timesync_radio_t) ); + call TXFIFO_RAM.write( absOffset, (uint8_t*)timesync, sizeof(timesync_radio_t) ); call CSN.set(); } -- 2.39.2