[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/lib/net/ctp BlockingCollectionSenderImplP.nc, NONE, 1.1 BlockingCollectionSenderP.nc, NONE, 1.1
Chieh-Jan Mike Liang
liang_mike at users.sourceforge.net
Thu Aug 21 21:09:50 PDT 2008
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/lib/net BlockingCollectionSenderImplP.nc, 1.1, NONE BlockingCollectionSenderP.nc, 1.3, NONE
- Next message: [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
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net/ctp
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv32247/ctp
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;
}
}
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;
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);
}
}
--- 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];
}
}
implementation {
components BlockingCollectionSenderImplP,
CollectionC as Collector,
MutexC,
SystemCallC,
MainC,
LedsC;
MainC.SoftwareInit -> BlockingCollectionSenderImplP;
BlockingSend = BlockingCollectionSenderImplP.BlockingSend;
BlockingCollectionSenderImplP.Mutex -> MutexC;
BlockingCollectionSenderImplP.SystemCall -> SystemCallC;
BlockingCollectionSenderImplP.Send -> Collector;
BlockingCollectionSenderImplP.Packet -> Collector;
BlockingCollectionSenderImplP.Leds -> LedsC;
}
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/lib/net BlockingCollectionSenderImplP.nc, 1.1, NONE BlockingCollectionSenderP.nc, 1.3, NONE
- Next message: [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
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Tinyos-2-commits
mailing list