Hi
I think the reason may be due to the code of event TOS_MsgPtr
UARTTokenReceive.receive(TOS_MsgPtr Msg, uint8_t Token) ;
When TokenReceiveMsg.receive event is signaled, you need to send back ack by
calling
call TokenReceiveMsg.ReflectToken(gTokenBuf);
You can see the code in FramAckM.nc.
On Fri, Apr 11, 2008 at 1:58 AM, Bhavish Aggarwal <[EMAIL PROTECTED]>
wrote:
> I am writing an application to bridge packets from UART to radio in
> tinyos 1. The send command on the radio returns a success but the
> senddone event is not signalled. Could anyone please help me with this
> issue. The code is as below.
>
> Thanks,
>
> Bhavish
>
> module UARTToRadioM{
> provides{
> interface StdControl;
> }
> uses{
> interface StdControl as UARTControl;
> interface ReceiveMsg as UARTReceive;
> interface BareSendMsg as UARTSend;
> interface TokenReceiveMsg as UARTTokenReceive;
>
> interface StdControl as RadioControl;
> interface BareSendMsg as RadioSend;
> interface ReceiveMsg as RadioReceive;
>
> interface Leds;
> }
> }
>
> implementation{
>
> void failBlink();
>
> command result_t StdControl.init() {
> result_t ok1, ok2, ok3;
>
> ok1 = call UARTControl.init();
> ok2 = call RadioControl.init();
> ok3 = call Leds.init();
>
> return rcombine3(ok1, ok2, ok3);
> }
>
> command result_t StdControl.start() {
> result_t ok1, ok2;
>
> ok1 = call UARTControl.start();
> ok2 = call RadioControl.start();
>
> return rcombine(ok1, ok2);
> }
>
> command result_t StdControl.stop() {
> result_t ok1, ok2;
>
> ok1 = call UARTControl.stop();
> ok2 = call RadioControl.stop();
>
> return rcombine(ok1, ok2);
> }
>
> event result_t UARTSend.sendDone(TOS_MsgPtr msg, result_t success) {
> if (!success) {
> failBlink();
> }
>
> return SUCCESS;
> }
>
> event TOS_MsgPtr UARTReceive.receive(TOS_MsgPtr Msg) {
> if (call RadioSend.send(&Msg) == SUCCESS) {
> call Leds.redToggle();
> }
> else{
> failBlink();
> }
>
> return Msg;
> }
>
> event TOS_MsgPtr UARTTokenReceive.receive(TOS_MsgPtr Msg, uint8_t Token)
> {
> if (call RadioSend.send(Msg) == SUCCESS) {
> call Leds.redToggle();
> }
> else{
> call Leds.redToggle();
> // failBlink();
> }
>
> return Msg;
> }
>
> event TOS_MsgPtr RadioReceive.receive(TOS_MsgPtr Msg) {
> if ((!Msg->crc))
> return Msg;
>
> if (call UARTSend.send(&Msg) == SUCCESS) {
> call Leds.greenToggle();
> }
> else {
> failBlink();
> }
>
> return Msg;
> }
>
>
> event result_t RadioSend.sendDone(TOS_MsgPtr msg, result_t success) {
> if (!success) {
> call Leds.greenToggle();
> //failBlink();
> }
> call Leds.yellowToggle();
> return SUCCESS;
> }
>
> void failBlink() {
> call Leds.yellowToggle();
> }
> }
>
> configuration UARTToRadioC {
> }
> implementation {
> components Main, UARTToRadioM, RadioCRCPacket as Comm, FramerM, UART,
> LedsC;
>
> Main.StdControl -> UARTToRadioM;
>
> UARTToRadioM.UARTControl -> FramerM;
> UARTToRadioM.UARTReceive -> FramerM;
> UARTToRadioM.UARTSend -> FramerM;
> UARTToRadioM.UARTTokenReceive -> FramerM;
>
> UARTToRadioM.RadioControl -> Comm;
> UARTToRadioM.RadioSend -> Comm;
> UARTToRadioM.RadioReceive -> Comm;
>
> UARTToRadioM.Leds -> LedsC;
>
> FramerM.ByteControl -> UART;
> FramerM.ByteComm -> UART;
> }
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
--
Renjie Huang
Sensorweb Research Laboratory
http://sensorweb.vancouver.wsu.edu/
Washington State University
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help