I have successfully sent a message from a PC host to an
Xmesh node, however I personally have not tested that in
a multi-hop environment.
On the node the message is configed as:
// messages we receive
App.CalibMsg -> MULTIHOPROUTER.Receive[CPAM_CALIBMSG];
Which causes this method to be called on message arrival:
event TOS_MsgPtr CalibMsg.receive(
TOS_MsgPtr m, void* payload, uint16_t payloadLen )
{ return m; }
On the PC host I use the "usual" Packetizer.java
writePacket() interface while specifying the target
node ID in the message. I presume, but do not know,
that one could use the usual send() mechanism from
another node as well. I could find nothing in the
"extensive" Xmesh documentation about this though.
MS
Atslands Rocha wrote:
> Hi all,
>
> How can a sensor node receive packets from another sensor node using
> Xmesh (Crossbow) and TinyOS1? I read the material and I just saw the
> upstream transmission mode using sink nodes, but I want a communication
> between sensor nodes (source and destination). I changed the source
> BASE_STATION_ADDRESS for the specific NODE_ADDRESS (ex: 1), but the code
> doesnt work.
>
> Thanks in advance.
>
> -----
>
> module ExampleM {
> provides {
> interface StdControl;
> }
> uses {
> interface Leds;
> interface MhopSend as Send;
> interface Receive;
> ........
>
> implementation {
> ....
> TOS_Msg msg_buf;
> TOS_MsgPtr msg_ptr;
> HealthMsg *h_msg;
> norace bool sending_packet,sensinginsession;
>
> norace uint8_t state;
> XDataMsg pack;
> bool sleeping; // application command state
> ......
>
> /****************************************************************************
> * Task to xmit radio message
> *
> ****************************************************************************/
> task void send_radio_msg(){
> uint16_t len;
> XDataMsg *data;
> uint8_t i;
> if(sending_packet) return;
> call Leds.yellowOn();
> atomic sending_packet=TRUE;
>
> data = (XDataMsg*)call Send.getBuffer(msg_ptr, &len);
> for (i=0; i<= sizeof(XDataMsg)-1; i++)
> ((uint8_t*) data)[i] = ((uint8_t*)&pack)[i];
> data->xMeshHeader.board_id = SENSOR_BOARD_ID;
> data->xMeshHeader.packet_id = 1;
> data->xMeshHeader.parent = call RouteControl.getParent();
> data->xMeshHeader.packet_id = data->xMeshHeader.packet_id | 0x80;
>
> #if FEATURE_UART_SEND
> if (TOS_LOCAL_ADDRESS != 0) {
> call Leds.yellowOn();
> call PowerMgrDisable();
> TOSH_uwait(1000);
> if (call SendUART.send(TOS_UART_ADDR, sizeof(XDataMsg),msg_ptr)
> != SUCCESS)
> {
> atomic sending_packet = FALSE;
> call Leds.greenToggle();
> call PowerMgrEnable();
> }
> }
> else
> #endif
> {
> // Send the RF packet!
> if (call Send.send(NODE_ADDRESS,MODE_UPSTREAM,msg_ptr,
> sizeof(XDataMsg)) != SUCCESS) {
> atomic sending_packet = FALSE;
> call Leds.yellowOn();
> call Leds.greenOff();
> }
> }
> return;
> }
>
>
> /****************************************************************************
> #if FEATURE_UART_SEND
> /**
> * Handle completion of sent UART packet.
> *
> * @author Martin Turon
> * @version 2004/7/21 mturon Initial revision
> */
> event result_t SendUART.sendDone(TOS_MsgPtr msg, result_t success)
> {
> //if (msg->addr == TOS_UART_ADDR) {
> atomic msg_ptr = msg;
> msg_ptr->addr = TOS_BCAST_ADDR;
> if (call
> Send.send(NODE_ADDRESS,MODE_UPSTREAM,msg_ptr,sizeof(XDataMsg)) != SUCCESS) {
> atomic sending_packet = FALSE;
> call Leds.yellowOff();
> }
>
> if (TOS_LOCAL_ADDRESS != 0) // never turn on power mgr for base
> call PowerMgrEnable();
>
> //}
> return SUCCESS;
> }
> #endif
>
>
>
> /****************************************************************************/
> * Receive packets from sensor nodes.
> *
> ****************************************************************************/
>
> event TOS_MsgPtr Receive.receive(TOS_MsgPtr msg, void* payload, uint16_t
> payloadLen) {
> call Leds.redOn();
> return msg;
> }
>
> .....
> }
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help