Reworked 802.15.4 header creation and parsing so that it works regardless of the size of the rimeaddr_t typedef
This commit is contained in:
parent
2fbf21b2b3
commit
f5c48751b5
3 changed files with 29 additions and 28 deletions
|
@ -44,7 +44,7 @@
|
|||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: frame802154.c,v 1.3 2009/09/09 21:08:46 adamdunkels Exp $
|
||||
* $Id: frame802154.c,v 1.4 2010/02/18 21:00:28 adamdunkels Exp $
|
||||
*/
|
||||
/*
|
||||
* \brief This file is where the main functions that relate to frame
|
||||
|
@ -217,7 +217,7 @@ frame802154_create(frame802154_t *p, uint8_t *buf, uint8_t buf_len)
|
|||
|
||||
/* Destination address */
|
||||
for(c = flen.dest_addr_len; c > 0; c--) {
|
||||
tx_frame_buffer[pos++] = p->dest_addr.u8[c - 1];
|
||||
tx_frame_buffer[pos++] = p->dest_addr[c - 1];
|
||||
}
|
||||
|
||||
/* Source PAN ID */
|
||||
|
@ -228,7 +228,7 @@ frame802154_create(frame802154_t *p, uint8_t *buf, uint8_t buf_len)
|
|||
|
||||
/* Source address */
|
||||
for(c = flen.src_addr_len; c > 0; c--) {
|
||||
tx_frame_buffer[pos++] = p->src_addr.u8[c - 1];
|
||||
tx_frame_buffer[pos++] = p->src_addr[c - 1];
|
||||
}
|
||||
|
||||
/* Aux header */
|
||||
|
@ -291,18 +291,18 @@ frame802154_parse(uint8_t *data, uint8_t len, frame802154_t *pf)
|
|||
/* } */
|
||||
/* p += l; */
|
||||
if(fcf.dest_addr_mode == FRAME802154_SHORTADDRMODE) {
|
||||
rimeaddr_copy(&(pf->dest_addr), &rimeaddr_null);
|
||||
pf->dest_addr.u8[0] = p[1];
|
||||
pf->dest_addr.u8[1] = p[0];
|
||||
rimeaddr_copy((rimeaddr_t *)&(pf->dest_addr), &rimeaddr_null);
|
||||
pf->dest_addr[0] = p[1];
|
||||
pf->dest_addr[1] = p[0];
|
||||
p += 2;
|
||||
} else if(fcf.dest_addr_mode == FRAME802154_LONGADDRMODE) {
|
||||
for(c = 0; c < 8; c++) {
|
||||
pf->dest_addr.u8[c] = p[7 - c];
|
||||
pf->dest_addr[c] = p[7 - c];
|
||||
}
|
||||
p += 8;
|
||||
}
|
||||
} else {
|
||||
rimeaddr_copy(&(pf->dest_addr), &rimeaddr_null);
|
||||
rimeaddr_copy((rimeaddr_t *)&(pf->dest_addr), &rimeaddr_null);
|
||||
pf->dest_pid = 0;
|
||||
}
|
||||
|
||||
|
@ -323,18 +323,18 @@ frame802154_parse(uint8_t *data, uint8_t len, frame802154_t *pf)
|
|||
/* } */
|
||||
/* p += l; */
|
||||
if(fcf.src_addr_mode == FRAME802154_SHORTADDRMODE) {
|
||||
rimeaddr_copy(&(pf->src_addr), &rimeaddr_null);
|
||||
pf->src_addr.u8[0] = p[1];
|
||||
pf->src_addr.u8[1] = p[0];
|
||||
rimeaddr_copy((rimeaddr_t *)&(pf->src_addr), &rimeaddr_null);
|
||||
pf->src_addr[0] = p[1];
|
||||
pf->src_addr[1] = p[0];
|
||||
p += 2;
|
||||
} else if(fcf.src_addr_mode == FRAME802154_LONGADDRMODE) {
|
||||
for(c = 0; c < 8; c++) {
|
||||
pf->src_addr.u8[c] = p[7 - c];
|
||||
pf->src_addr[c] = p[7 - c];
|
||||
}
|
||||
p += 8;
|
||||
}
|
||||
} else {
|
||||
rimeaddr_copy(&(pf->src_addr), &rimeaddr_null);
|
||||
rimeaddr_copy((rimeaddr_t *)&(pf->src_addr), &rimeaddr_null);
|
||||
pf->src_pid = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue