Fixed alignment problems in announcement packet creation

This commit is contained in:
adamdunkels 2009-11-27 12:49:27 +00:00
parent 236a6eee15
commit aeefa75304

View File

@ -28,7 +28,7 @@
*
* This file is part of the Contiki operating system.
*
* $Id: xmac.c,v 1.41 2009/11/04 16:02:45 adamdunkels Exp $
* $Id: xmac.c,v 1.42 2009/11/27 12:49:27 adamdunkels Exp $
*/
/**
@ -379,24 +379,26 @@ parse_announcements(const rimeaddr_t *from)
static int
format_announcement(char *hdr)
{
struct announcement_msg *adata;
struct announcement_msg adata;
struct announcement *a;
/* Construct the announcements */
adata = (struct announcement_msg *)hdr;
/* adata = (struct announcement_msg *)hdr;*/
adata->num = 0;
adata.num = 0;
for(a = announcement_list();
a != NULL && adata->num < ANNOUNCEMENT_MAX;
a != NULL && adata.num < ANNOUNCEMENT_MAX;
a = a->next) {
adata->data[adata->num].id = a->id;
adata->data[adata->num].value = a->value;
adata->num++;
adata.data[adata->num].id = a->id;
adata.data[adata->num].value = a->value;
adata.num++;
}
if(adata->num > 0) {
memcpy(hdr, &adata, sizeof(struct announcement_msg));
if(adata.num > 0) {
return ANNOUNCEMENT_MSG_HEADERLEN +
sizeof(struct announcement_data) * adata->num;
sizeof(struct announcement_data) * adata.num;
} else {
return 0;
}