[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/lib/net/lqi BlockingCollectionSenderImplP.nc, NONE, 1.1 BlockingCollectionSenderP.nc, NONE, 1.1 BlockingCollectionSenderC.nc, 1.1, 1.2
Chieh-Jan Mike Liang
liang_mike at users.sourceforge.net
Thu Aug 21 21:09:50 PDT 2008
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net/lqi
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv32247/lqi
Modified Files:
BlockingCollectionSenderC.nc
Added Files:
BlockingCollectionSenderImplP.nc BlockingCollectionSenderP.nc
Log Message:
Unlike CTP, underlying LQI forwarding engine expects the outgoing packet to be updated with the collection ID already
--- NEW FILE: BlockingCollectionSenderImplP.nc ---
/*
* Copyright (c) 2008 Johns Hopkins University.
* 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 (updated) modification history and the author appear in
* all copies of this source code.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
* OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
*/
module BlockingCollectionSenderImplP {
provides {
interface BlockingSend[uint8_t client];
interface Init;
}
uses {
interface Send[uint8_t client];
interface SystemCall;
interface Mutex;
interface Packet;
interface Leds;
interface CollectionPacket;
interface CollectionId[uint8_t client];
}
}
implementation {
typedef struct params {
message_t *msg;
uint8_t len;
error_t error;
} params_t;
syscall_t* send_call;
mutex_t my_mutex;
command error_t Init.init()
{
call Mutex.init(&my_mutex);
return SUCCESS;
}
void sendTask(syscall_t *s)
{
params_t* p = s->params;
call CollectionPacket.setType(p->msg, call CollectionId.fetch[s->id]());
p->error = call Send.send[s->id](p->msg, p->len);
if(p->error != SUCCESS) {
call SystemCall.finish(s);
}
}
command error_t BlockingSend.send[uint8_t client](message_t *msg, uint8_t len)
{
syscall_t s;
params_t p;
call Mutex.lock(&my_mutex);
send_call = &s;
p.msg = msg;
p.len = len;
call SystemCall.start(&sendTask, &s, client, &p);
atomic {
call Mutex.unlock(&my_mutex);
return p.error;
}
}
event void Send.sendDone[uint8_t client](message_t* m, error_t error)
{
if (client == send_call->id) {
params_t* p;
p = send_call->params;
p->error = error;
call SystemCall.finish(send_call);
}
}
command error_t BlockingSend.cancel[uint8_t client](message_t* msg)
{
return call Send.cancel[client](msg);
}
command uint8_t BlockingSend.maxPayloadLength[uint8_t client]()
{
return call Send.maxPayloadLength[client]();
}
command void* BlockingSend.getPayload[uint8_t client](message_t* msg, uint8_t len)
{
return call Send.getPayload[client](msg, len);
}
default command collection_id_t CollectionId.fetch[uint8_t id]() { return 0; }
}
--- NEW FILE: BlockingCollectionSenderP.nc ---
/*
* Copyright (c) 2008 Johns Hopkins University.
* 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 (updated) modification history and the author appear in
* all copies of this source code.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
* OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
* @author Kevin Klues <klueska at cs.stanford.edu>
*/
configuration BlockingCollectionSenderP {
provides {
interface BlockingSend[uint8_t id];
}
uses {
interface CollectionId[uint8_t id];
}
}
implementation {
components BlockingCollectionSenderImplP,
CollectionC as Collector,
MutexC,
SystemCallC,
MainC,
LedsC;
MainC.SoftwareInit -> BlockingCollectionSenderImplP;
BlockingSend = BlockingCollectionSenderImplP.BlockingSend;
CollectionId = BlockingCollectionSenderImplP;
BlockingCollectionSenderImplP.Mutex -> MutexC;
BlockingCollectionSenderImplP.SystemCall -> SystemCallC;
BlockingCollectionSenderImplP.Send -> Collector;
BlockingCollectionSenderImplP.Packet -> Collector;
BlockingCollectionSenderImplP.Leds -> LedsC;
BlockingCollectionSenderImplP.CollectionPacket -> Collector;
}
Index: BlockingCollectionSenderC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net/lqi/BlockingCollectionSenderC.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** BlockingCollectionSenderC.nc 17 Jun 2008 19:19:14 -0000 1.1
--- BlockingCollectionSenderC.nc 22 Aug 2008 04:09:48 -0000 1.2
***************
*** 47,50 ****
Packet = Collector;
! Collector.CollectionId[CLIENT_ID] -> CollectionIdP;
}
--- 47,50 ----
Packet = Collector;
! BlockingCollectionSenderP.CollectionId[CLIENT_ID] -> CollectionIdP;
}
More information about the Tinyos-2-commits
mailing list