Hi All,

I just designed a small test for my project to collect the data.

In the .h file, i have a struct like this

typedef nx_struct HashMsg {
  nx_uint16_t nodeid;
  nx_uint8_t flag;
  nx_uint64_t payload_hash;
  nx_uint64_t payload_M;
  nx_uint64_t payload_R;
  nx_uint16_t payload_ID;
} HashMsg;

typedef struct Context
{
 uint64_t hash;
 uint64_t M;
 uint64_t R;
 uint16_t ID;
} Context;



in the test file I disigned the send and receive function.
========================================
Context a;

event void Timer0.fired() {
    //uint64_t hash;

 uint64_t cmd=0xFFFFFFFFFFFFFFFF;
 uint64_t S=0x1111111111111111;




 if(TOS_NODE_ID==0x00000001){
   //call Squash.resetSquash(&squash);
   call Squash.setSquash(cmd,S);
 if (!busy) {
      HashMsg* hmpkt =
 (HashMsg*)(call Packet.getPayload(&pkt, sizeof(HashMsg)));
      if (hmpkt == NULL) {
 return;
      }
      hmpkt->nodeid = TOS_NODE_ID;
   hmpkt->flag = 1;
      hmpkt->payload_hash = 0x0000000000000000;
   hmpkt->payload_M = 0x0000000000000000;    // M
    hmpkt->payload_R = 0x0000000000000000;    // R
   hmpkt->payload_ID = 0x0000;
      if (call AMSend.send(destinationMote,
          &pkt, sizeof(HashMsg)) == SUCCESS) {
  call Leds.led0On();
        busy = TRUE;
      }
    }


 event message_t* Receive.receive(message_t* msg, void* payload, uint8_t
len){
 if (len == sizeof(HashMsg)) {
      HashMsg* hmpkt = (HashMsg*)payload;
   if(hmpkt->flag==1){
  a.hash=hmpkt->payload_hash;

   }
 }
    return msg;
  }
================================================
I can't compile it. the error is as follows: it said sth wrong with my
receive.receive event.

$ make telosb
mkdir -p build/telosb
    compiling BlinkToRadioAppC to a telosb binary
ncc -o build/telosb/main.exe  -Os -O -mdisable-hwmul -Wall -Wshadow
-Wnesc-all -
target=telosb -fnesc-cfile=build/telosb/app.c -board=
-DDEFINED_TOS_AM_GROUP=0x2
2 -I/opt/tinyos-2.x/tos/lib/printf -DIDENT_APPNAME=\"BlinkToRadioApp\"
-DIDENT_U
SERNAME=\"EIT\" -DIDENT_HOSTNAME=\"wsn\" -DIDENT_USERHASH=0xa200ffadL
-DIDENT_TI
MESTAMP=0x49a725ccL -DIDENT_UIDHASH=0x26925cc5L  BlinkToRadioAppC.nc -lm
/opt/tinyos-2.x/tos/chips/cc2420/lpl/DummyLplC.nc:39:2: warning: #warning
"*** L
OW POWER COMMUNICATIONS DISABLED ***"
/opt/tinyos-2.x/tos/chips/msp430/usart/HplMsp430UsartInterrupts.nc: In
function
`BlinkToRadioC$Receive$receive':
/opt/tinyos-2.x/tos/chips/msp430/usart/HplMsp430UsartInterrupts.nc:49:
internal
error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html <http://gcc.gnu.org/bugs.html>> for
instructions.
make: *** [exe0] Error 1

==========================================================================

I know it is sth wrong with the struct. If I don't assign the received
message to the struct member as follows. It can be compiled. I am just
wonderig why it could have this kind of problem?

event message_t* Receive.receive(message_t* msg, void* payload, uint8_t
len){
    uint64_t hash;    //changed

 if (len == sizeof(HashMsg)) {
      HashMsg* hmpkt = (HashMsg*)payload;
   if(hmpkt->flag==1){
  hash=hmpkt->payload_hash;       //changed

  //a.hash=hmpkt->payload_hash;    // original

   }

 }
    return msg;
  }

======================================================================================

Anyone can tell me what is the problem? Thanks in advance.
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to