you never really state what the problem you are trying to solve or running into.
Other than to say you don't know how to do something. you won't get much help with that. i'd suggest you start working through the tutorials until something gels and you figure out how to do what you want. On Fri, Sep 27, 2013 at 2:57 AM, Victor Rosello <[email protected]>wrote: > > > > > > > > > > > > Hello, > I am Victor Rosello, i am trying to send a command to a base station > using the serial port and transmit this message using the radio. > After some test I realize that if I have SerailActiveMessageComponentC > and ActiveMessageComponentC running at the same time using the > SplicControlC.start() the base station does not get the serial port > messages. I am using a telosb-like mote. > > To reproduce the failure I modified the TestSerial application. as follows. > > I don`t know how to dela with this problem, to use the > ActiveMessageComponentC to use radio communications and > SerailActiveMessageComponentC to use the serial port at the same time. > > -- TestSerialC.nc with > module TestSerialC { > uses { > interface SplitControl as Control; > interface SplitControl as RadioControl; // Added interface > interface Leds; > interface Boot; > interface Receive; > interface AMSend; > interface Timer<TMilli> as MilliTimer; > interface Packet; > } > } > implementation { > > message_t packet; > > bool locked = FALSE; > uint16_t counter = 0; > > event void Boot.booted() { > call Control.start(); > } > > event void MilliTimer.fired() { > counter++; > if (locked) { > return; > } > else { > test_serial_msg_t* rcm = (test_serial_msg_t*)call > Packet.getPayload(&packet, sizeof(test_serial_msg_t)); > if (rcm == NULL) {return;} > if (call Packet.maxPayloadLength() < sizeof(test_serial_msg_t)) { > return; > } > > rcm->counter = counter; > if (call AMSend.send(AM_BROADCAST_ADDR, &packet, > sizeof(test_serial_msg_t)) == SUCCESS) { > locked = TRUE; > } > } > } > > event message_t* Receive.receive(message_t* bufPtr, > void* payload, uint8_t len) { > if (len != sizeof(test_serial_msg_t)) {return bufPtr;} > else { > test_serial_msg_t* rcm = (test_serial_msg_t*)payload; > if (rcm->counter & 0x1) { > call Leds.led0On(); > } > else { > call Leds.led0Off(); > } > if (rcm->counter & 0x2) { > call Leds.led1On(); > } > else { > call Leds.led1Off(); > } > if (rcm->counter & 0x4) { > call Leds.led2On(); > } > else { > call Leds.led2Off(); > } > return bufPtr; > } > } > > event void AMSend.sendDone(message_t* bufPtr, error_t error) { > if (&packet == bufPtr) { > locked = FALSE; > } > } > > event void Control.startDone(error_t err) { > if (err == SUCCESS) { > call MilliTimer.startPeriodic(1000); > call RadioControl.start(); // Added start call > } > } > event void Control.stopDone(error_t err) {} > > event void RadioControl.stopDone(error_t err) {} // Added events > event void RadioControl.startDone(error_t err) {} // Added events > } > > -- TestSerialApp.nc with ActiveMessageC component > #include "TestSerial.h" > > configuration TestSerialAppC {} > implementation { > components TestSerialC as App, LedsC, MainC; > components SerialActiveMessageC as AM; > components ActiveMessageC as RadioAM; // Added component > components new TimerMilliC(); > > App.Boot -> MainC.Boot; > App.Control -> AM; > App.RadioControl -> RadioAM; // Added link > App.Receive -> AM.Receive[AM_TEST_SERIAL_MSG]; > App.AMSend -> AM.AMSend[AM_TEST_SERIAL_MSG]; > App.Leds -> LedsC; > App.MilliTimer -> TimerMilliC; > App.Packet -> AM; > } > > > > > > _______________________________________________ > Tinyos-help mailing list > [email protected] > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > -- Eric B. Decker Senior (over 50 :-) Researcher
_______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
