X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=apps%2Ftests%2FNxFloat%2FTestSerialC.nc;fp=apps%2Ftests%2FNxFloat%2FTestSerialC.nc;h=3a40db6bdbfaab7f939a05e23ffcedc61180c4e9;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=0000000000000000000000000000000000000000;hpb=adf1de6c009d13b7b52e68535c63b28f59c97400;p=tinyos-2.x.git diff --git a/apps/tests/NxFloat/TestSerialC.nc b/apps/tests/NxFloat/TestSerialC.nc new file mode 100644 index 00000000..3a40db6b --- /dev/null +++ b/apps/tests/NxFloat/TestSerialC.nc @@ -0,0 +1,130 @@ +// $Id$ + +/* tab:4 + * "Copyright (c) 2000-2005 The Regents of the University of California. + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without written agreement is + * hereby granted, provided that the above copyright notice, the following + * two paragraphs and the author appear in all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT + * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF + * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." + * + * Copyright (c) 2002-2003 Intel Corporation + * All rights reserved. + * + * This file is distributed under the terms in the attached INTEL-LICENSE + * file. If you do not find these files, copies can be found by writing to + * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, + * 94704. Attention: Intel License Inquiry. + */ + +/** + * Application to test that the TinyOS java toolchain can communicate + * with motes over the serial port. + * + * @author Gilman Tolle + * @author Philip Levis + * + * @date Aug 12 2005 + * + **/ + +#include "Timer.h" +#include "TestSerial.h" + +module TestSerialC { + uses { + interface SplitControl as Control; + interface Leds; + interface Boot; + interface Receive; + interface AMSend; + interface Timer 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 * 3.2; + 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 ((int)rcm->counter & 0x1) { + call Leds.led0On(); + } + else { + call Leds.led0Off(); + } + if ((int)rcm->counter & 0x2) { + call Leds.led1On(); + } + else { + call Leds.led1Off(); + } + if ((int)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); + } + } + event void Control.stopDone(error_t err) {} +} + + + +