Commit f3ddc9b9 authored by Robert Ricci's avatar Robert Ricci

Add a bunch of tools and TinyOS apps I used for the recent paper.

Inclues the TinyOS apps we used for data gathering, and the tools
we used to process data collected by the TinyOS apps.

All are modifications of standard TinyOS tools/apps. I've modified the
READMEs to explain the changes I made.
parent 41a206a2
// $Id: CntToLedsAndRfm.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/**
This application blinks the LEDS as a binary counter and also send
a radio packet sending the current value of the counter.
**/
configuration CntToLedsAndRfm {
}
implementation {
components Main, Counter, IntToLeds, IntToRfm, TimerC, CntToLedsAndRfmM,
CC2420ControlM;
Main.StdControl -> Counter.StdControl;
Main.StdControl -> IntToLeds.StdControl;
Main.StdControl -> IntToRfm.StdControl;
Main.StdControl -> TimerC.StdControl;
Main.StdControl -> CntToLedsAndRfmM.StdControl;
Counter.Timer -> TimerC.Timer[unique("Timer")];
IntToLeds <- Counter.IntOutput;
Counter.IntOutput -> IntToRfm;
CntToLedsAndRfmM.Radio -> CC2420ControlM;
}
// $Id: CntToLedsAndRfmM.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/**
This application blinks the LEDS as a binary counter and also send
a radio packet sending the current value of the counter.
**/
module CntToLedsAndRfmM {
provides {
interface StdControl;
}
uses {
interface CC2420Control as Radio;
}
}
implementation {
command result_t StdControl.init() {
return call Radio.SetRFPower(0x02);
}
command result_t StdControl.start() {
return SUCCESS;
}
command result_t StdControl.stop() {
return FAIL;
}
}
COMPONENT=CntToLedsAndRfm
PFLAGS += -I%T/lib/Counters
include ../Makerules
README for CntToLedsAndRfm.Power
Modified from the standard CntToLedsAndRfm by ricci@cs.utah.edu
Orignal README below.
Simply calls SetRFPower to set transmit power in its initialization code.
----------------------------------------------------------------------
README for CntToLedsAndRfm
Author/Contact: tinyos-help@millennium.berkeley.edu
Description:
CntToLeds maintains a counter on a 4Hz timer; it displays the lowest
three bits of the counter value on its LEDS. The red LED is the least
significant of the bits, while the yellow is the most significant. It
also sends out each counter value in an IntMsg AM packet.
Tools:
None.
Known bugs/limitations:
None.
// $Id: CntToLedsAndRfm.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/**
This application blinks the LEDS as a binary counter and also send
a radio packet sending the current value of the counter.
**/
configuration CntToLedsAndRfm {
}
implementation {
components Main, Counter, IntToLeds, IntToRfm, TimerC, CntToLedsAndRfmM, CC1000ControlM;
Main.StdControl -> Counter.StdControl;
Main.StdControl -> IntToLeds.StdControl;
Main.StdControl -> IntToRfm.StdControl;
Main.StdControl -> TimerC.StdControl;
Main.StdControl -> CntToLedsAndRfmM.StdControl;
Counter.Timer -> TimerC.Timer[unique("Timer")];
IntToLeds <- Counter.IntOutput;
Counter.IntOutput -> IntToRfm;
CntToLedsAndRfmM.CC1000Control -> CC1000ControlM;
}
/**
* Implementation
**/
module CntToLedsAndRfmM {
provides {
interface StdControl;
}
uses {
interface CC1000Control;
}
}
implementation {
/**
* Initialize the component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t StdControl.init() {
return SUCCESS;
}
/**
* Start things up. This just sets the rate for the clock component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t StdControl.start() {
return call CC1000Control.SetRFPower(0x0f);
}
/**
* Halt execution of the application.
* This just disables the clock component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t StdControl.stop() {
}
}
// $Id: Counter.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/*
* Authors: Jason Hill, David Gay, Philip Levis
* Date last modified: 6/25/02
*
*/
/**
* @author Jason Hill
* @author David Gay
* @author Philip Levis
*/
module Counter {
provides {
interface StdControl;
}
uses {
interface Timer;
interface IntOutput;
}
}
implementation {
int state;
command result_t StdControl.init()
{
state = 0;
return SUCCESS;
}
command result_t StdControl.start()
{
return call Timer.start(TIMER_REPEAT, 102);
}
command result_t StdControl.stop()
{
return call Timer.stop();
}
event result_t Timer.fired()
{
state++;
return call IntOutput.output(state);
}
event result_t IntOutput.outputComplete(result_t success)
{
if(success == 0) state --;
return SUCCESS;
}
}
COMPONENT=CntToLedsAndRfm
PFLAGS=-I%T/lib/Counters
include ../Makerules
README for RobFastCntToLedsAndRfm
Modified version of the standard CntToLedsAndRfm that counts (almost) at 10Hz,
and with a different power level. Due to the fact that TinyOS timers us binary
milliseconds (1024 per second, not 1000), it counts at 10.04 Hz.
Modified from the standard CntToLedsAndRfm by ricci@cs.utah.edu
Orignal README below.
----------------------------------------------------------------------
README for CntToLedsAndRfm
Author/Contact: tinyos-help@millennium.berkeley.edu
Description:
CntToLeds maintains a counter on a 4Hz timer; it displays the lowest
three bits of the counter value on its LEDS. The red LED is the least
significant of the bits, while the yellow is the most significant. It
also sends out each counter value in an IntMsg AM packet.
Tools:
None.
Known bugs/limitations:
None.
COMPONENT=TOSBase
PFLAGS=-I%T/lib/HDLC
include ../Makerules
README for RobTransparetBase
Modified from the standard TransparentBase by ricci@cs.utah.edu
Forwards packets from the radio to the serial port, and vice versa. My
main modifications were: to use the GenericComm component for UART I/O
rather then Framer, to make it easier for my own scripts to process the
packets, and to stuff the received RSSI into packets that are resent on
the serial port.
// $Id: TOSBase.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/* Author: Phil Buonadonna
* Revision: $Id: TOSBase.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
*/
/**
* @author Phil Buonadonna
*/
configuration TOSBase {
}
implementation {
components Main, TOSBaseM, RadioCRCPacket as Comm,
//UARTNoCRCPacket as UART,
GenericComm as UART,
LedsC;
//FramerM, UART
Main.StdControl -> TOSBaseM;
//TOSBaseM.UARTControl -> FramerM;
//TOSBaseM.UARTSend -> FramerM;
//TOSBaseM.UARTReceive -> FramerM;
//TOSBaseM.UARTTokenReceive -> FramerM;
TOSBaseM.UARTControl -> UART;
//TOSBaseM.UARTSend -> UART;
//TOSBaseM.UARTReceive -> UART;
TOSBaseM.UARTSend -> UART.SendMsg[42];
TOSBaseM.UARTReceive -> UART.ReceiveMsg[42];
TOSBaseM.RadioControl -> Comm;
TOSBaseM.RadioSend -> Comm;
TOSBaseM.RadioReceive -> Comm;
TOSBaseM.Leds -> LedsC;
//FramerM.ByteControl -> UART;
//FramerM.ByteComm -> UART;
}
// $Id: TOSBaseM.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
/* tab:4
* "Copyright (c) 2000-2003 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.
*/
/*
* Author: Phil Buonadonna
* Revision: $Id: TOSBaseM.nc,v 1.1 2005-04-20 20:47:23 ricci Exp $
*
*
*/
/* TOSBaseM
- captures all the packets that it can hear and report it back to the UART
- forward all incoming UART messages out to the radio
*/
/**
* @author Phil Buonadonna
*/
module TOSBaseM {
provides interface StdControl;
uses {
interface StdControl as UARTControl;
//interface BareSendMsg as UARTSend;
interface SendMsg as UARTSend;
interface ReceiveMsg as UARTReceive;
//interface TokenReceiveMsg as UARTTokenReceive;
interface StdControl as RadioControl;
interface BareSendMsg as RadioSend;
interface ReceiveMsg as RadioReceive;
interface Leds;
}
}
implementation
{
enum {
QUEUE_SIZE = 5
};
enum {
TXFLAG_BUSY = 0x1,
TXFLAG_TOKEN = 0x2
};
TOS_Msg gRxBufPool[QUEUE_SIZE];
TOS_MsgPtr gRxBufPoolTbl[QUEUE_SIZE];
uint8_t gRxHeadIndex,gRxTailIndex;
TOS_Msg gTxBuf;
TOS_MsgPtr gpTxMsg;
uint8_t gTxPendingToken;
uint8_t gfTxFlags;
task void RadioRcvdTask() {
TOS_MsgPtr pMsg;
result_t Result;
dbg (DBG_USR1, "TOSBase forwarding Radio packet to UART\n");
atomic {
pMsg = gRxBufPoolTbl[gRxTailIndex];
gRxTailIndex++; gRxTailIndex %= QUEUE_SIZE;
}
//*(pMsg->data) = 1;
pMsg->data[1] = pMsg->strength;
pMsg->data[2] = pMsg->strength >> 8;
pMsg->length = 3;
Result = call UARTSend.send(TOS_UART_ADDR,pMsg->length,pMsg);
if (Result != SUCCESS) {
pMsg->length = 0;
}
else {
call Leds.redToggle();
}
}
task void UARTRcvdTask() {
result_t Result;
dbg (DBG_USR1, "TOSBase forwarding UART packet to Radio\n");
Result = call RadioSend.send(gpTxMsg);
if (Result != SUCCESS) {
atomic gfTxFlags = 0;
}
else {
call Leds.greenToggle();
}
}
#if 0
task void SendAckTask() {
call UARTTokenReceive.ReflectToken(gTxPendingToken);
call Leds.yellowToggle();
atomic {
gpTxMsg->length = 0;
gfTxFlags = 0;
}
}
#endif
command result_t StdControl.init() {
result_t ok1, ok2, ok3;
uint8_t i;
for (i = 0; i < QUEUE_SIZE; i++) {
gRxBufPool[i].length = 0;
gRxBufPoolTbl[i] = &gRxBufPool[i];
}
gRxHeadIndex = 0;
gRxTailIndex = 0;
gTxBuf.length = 0;
gpTxMsg = &gTxBuf;
gfTxFlags = 0;
ok1 = call UARTControl.init();
ok2 = call RadioControl.init();
ok3 = call Leds.init();
dbg(DBG_BOOT, "TOSBase initialized\n");
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 TOS_MsgPtr RadioReceive.receive(TOS_MsgPtr Msg) {
TOS_MsgPtr pBuf;
dbg(DBG_USR1, "TOSBase received radio packet.\n");
if (Msg->crc) {
atomic {
pBuf = gRxBufPoolTbl[gRxHeadIndex];
if (pBuf->length == 0) {
gRxBufPoolTbl[gRxHeadIndex] = Msg;
gRxHeadIndex++; gRxHeadIndex %= QUEUE_SIZE;
}
else {
pBuf = NULL;
}
}
if (pBuf) {
post RadioRcvdTask();
}
else {
pBuf = Msg;
}
}
else {
pBuf = Msg;
}
return pBuf;
}
event TOS_MsgPtr UARTReceive.receive(TOS_MsgPtr Msg) {
TOS_MsgPtr pBuf;
dbg(DBG_USR1, "TOSBase received UART packet.\n");
atomic {
if (gfTxFlags & TXFLAG_BUSY) {
pBuf = NULL;
}
else {
pBuf = gpTxMsg;
gfTxFlags |= (TXFLAG_BUSY);
gpTxMsg = Msg;
}
}
if (pBuf == NULL) {
pBuf = Msg;
}
else {
post UARTRcvdTask();
}
return pBuf;
}
#if 0
event TOS_MsgPtr UARTTokenReceive.receive(TOS_MsgPtr Msg, uint8_t Token) {
TOS_MsgPtr pBuf;
dbg(DBG_USR1, "TOSBase received UART token packet.\n");
atomic {
if (gfTxFlags & TXFLAG_BUSY) {
pBuf = NULL;
}
else {
pBuf = gpTxMsg;
gfTxFlags |= (TXFLAG_BUSY | TXFLAG_TOKEN);
gpTxMsg = Msg;
gTxPendingToken = Token;
}
}
if (pBuf == NULL) {
pBuf = Msg;
}
else {
post UARTRcvdTask();
}
return pBuf;
}
#endif
event result_t UARTSend.sendDone(TOS_MsgPtr Msg, result_t success) {
Msg->length = 0;
return SUCCESS;
}
event result_t RadioSend.sendDone(TOS_MsgPtr Msg, result_t success) {
if ((gfTxFlags & TXFLAG_TOKEN)) {
if (success == SUCCESS) {
//post SendAckTask();
}
}
else {
atomic {
gpTxMsg->length = 0;
gfTxFlags = 0;
}
}
return SUCCESS;
}
}
PROGRAMS=sf sflisten
all: $(PROGRAMS)
sf: sf.c serialsource.c sfsource.c platform.c platform.h serialsource.h sfsource.h
gcc -O1 -Wall -g -o $@ sf.c serialsource.c sfsource.c platform.c
# For ARM
asf: sf.c serialsource.c sfsource.c platform.c platform.h serialsource.h sfsource.h
arm-linux-gcc -O1 -Wall -g -o $@ sf.c serialsource.c sfsource.c platform.c
sflisten: sflisten.c sfsource.c platform.c platform.h sfsource.h
gcc -O1 -Wall -g -o $@ sflisten.c sfsource.c platform.c
asflisten: sflisten.c sfsource.c platform.c platform.h sfsource.h
arm-linux-gcc -O1 -Wall -g -o $@ sflisten.c sfsource.c platform.c
aseriallisten: seriallisten.c sfsource.c platform.c platform.h sfsource.h
arm-linux-gcc -O1 -Wall -g -o $@ seriallisten.c serialsource.c platform.c
rssi_cnt_listen: rssi_cnt_listen.c sfsource.c platform.c platform.h sfsource.h
arm-linux-gcc -O1 -Wall -g -o $@ pkt_listen.c serialsource.c platform.c