diff --git a/core/net/mac/framer-802154.c b/core/net/mac/framer-802154.c index 056d74b51..59f61994a 100644 --- a/core/net/mac/framer-802154.c +++ b/core/net/mac/framer-802154.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: framer-802154.c,v 1.5 2010/03/09 20:40:11 adamdunkels Exp $ + * $Id: framer-802154.c,v 1.6 2010/03/12 14:49:21 nifi Exp $ */ /** @@ -109,7 +109,12 @@ create(void) \todo For phase 1 the addresses are all long. We'll need a mechanism in the rime attributes to tell the mac to use long or short for phase 2. */ - params.fcf.src_addr_mode = FRAME802154_LONGADDRMODE; + if(sizeof(rimeaddr_t) == 2) { + /* Use short address mode if rimeaddr size is short. */ + params.fcf.src_addr_mode = FRAME802154_SHORTADDRMODE; + } else { + params.fcf.src_addr_mode = FRAME802154_LONGADDRMODE; + } params.dest_pid = mac_dst_pan_id; /* @@ -125,7 +130,12 @@ create(void) } else { rimeaddr_copy((rimeaddr_t *)¶ms.dest_addr, packetbuf_addr(PACKETBUF_ADDR_RECEIVER)); - params.fcf.dest_addr_mode = FRAME802154_LONGADDRMODE; + /* Use short address mode if rimeaddr size is small */ + if(sizeof(rimeaddr_t) == 2) { + params.fcf.dest_addr_mode = FRAME802154_SHORTADDRMODE; + } else { + params.fcf.dest_addr_mode = FRAME802154_LONGADDRMODE; + } } /* Set the source PAN ID to the global variable. */