[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/net/Deluge/extra
NetProg.h, NONE, 1.1 NetProg.nc, NONE, 1.1 NetProgC.nc, NONE,
1.1 NetProgM.nc, NONE, 1.1 TOSBoot.h, NONE, 1.1
Razvan Musaloiu-E.
razvanm at users.sourceforge.net
Tue May 22 13:34:26 PDT 2007
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/net/Deluge/extra
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv24715/tos/lib/net/Deluge/extra
Added Files:
NetProg.h NetProg.nc NetProgC.nc NetProgM.nc TOSBoot.h
Log Message:
Initial commit of the Deluge T2. Some notes:
- TOSBoot includes some code to allow the MicaZ version to compile but it's not support for it it's not done yet.
- tools/tinyos/misc/Makefile.am is not updated yet so the new tools will not be installed by default.
--- NEW FILE: NetProg.h ---
// $Id: NetProg.h,v 1.1 2007/05/22 20:34:24 razvanm Exp $
/* tab:2
*
*
* "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."
*
*/
/**
* @author Jonathan Hui <jwhui at cs.berkeley.edu>
*/
#ifndef __NETPROG_H__
#define __NETPROG_H__
#include "NetProg_platform.h"
#ifndef IDENT_UID_HASH
#define IDENT_UID_HASH 0
#endif
static const uint32_t DELUGE_IMAGE_UID = IDENT_UID_HASH;
typedef struct NetProg_TOSInfo {
uint16_t addr;
uint8_t groupId;
uint16_t crc;
} NetProg_TOSInfo;
#endif
--- NEW FILE: NetProg.nc ---
// $Id: NetProg.nc,v 1.1 2007/05/22 20:34:24 razvanm Exp $
/* tab:4
*
*
* "Copyright (c) 2000-2004 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."
*
*/
/**
* Top level interface for network programming integration with
* applications.
*
* @author Jonathan Hui <jwhui at cs.berkeley.edu>
*/
interface NetProg
{
/**
* Reboot the node.
*
* @return Does not return.
*/
command error_t reboot();
/**
* Reboot into the image specified by <code>imgNum</code>. This
* assumes that an image has been downloaded into slot <code>imgNum</code>
* using Deluge.
*
* @param imgNum Number of image to boot in to.
* @return <code>FAIL</code> if the reboot command fails to
* complete due to an invalid imgNum or incomplete
* image,
* does not return, otherwise.
*/
command error_t programImgAndReboot(uint8_t imgNum);
}
--- NEW FILE: NetProgC.nc ---
/*
* "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) 2007 Johns Hopkins University.
* All rights reserved.
*
*/
/**
* @author Jonathan Hui <jwhui at cs.berkeley.edu>
* @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
* @author Razvan Musaloiu-E. <razvanm at cs.jhu.edu>
*/
includes NetProg;
includes TOSBoot;
configuration NetProgC {
provides {
interface NetProg;
}
}
implementation {
components MainC, InternalFlashC as IFlash, CrcP,
DelugeStorageC, NetProgM;
NetProg = NetProgM;
MainC.SoftwareInit -> NetProgM.Init;
NetProgM.StorageMap[0] -> DelugeStorageC.StorageMap[0];
NetProgM.StorageMap[1] -> DelugeStorageC.StorageMap[1];
NetProgM.DelugeMetadata -> DelugeStorageC;
NetProgM.IFlash -> IFlash;
NetProgM.Crc -> CrcP;
}
--- NEW FILE: NetProgM.nc ---
/*
* "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) 2007 Johns Hopkins University.
* All rights reserved.
*
*/
/**
* @author Jonathan Hui <jwhui at cs.berkeley.edu>
* @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
* @author Razvan Musaloiu-E. <razvanm at cs.jhu.edu>
*/
#include "AM.h"
module NetProgM {
provides {
interface NetProg;
interface Init;
}
uses {
interface StorageMap[uint8_t img_num];
interface InternalFlash as IFlash;
interface Crc;
interface DelugeMetadata;
}
}
implementation {
uint16_t computeTosInfoCrc(NetProg_TOSInfo* tosInfo)
{
return call Crc.crc16(tosInfo, sizeof(NetProg_TOSInfo)-2);
}
void writeTOSinfo()
{
NetProg_TOSInfo tosInfo;
uint16_t crc;
call IFlash.read((uint8_t*)IFLASH_TOS_INFO_ADDR, &tosInfo, sizeof(tosInfo));
tosInfo.addr = TOS_NODE_ID;
tosInfo.groupId = TOS_AM_GROUP;
crc = computeTosInfoCrc(&tosInfo);
// don't write if data is already correct
if (tosInfo.crc == crc)
return;
tosInfo.crc = crc;
call IFlash.write((uint8_t*)IFLASH_TOS_INFO_ADDR, &tosInfo, sizeof(tosInfo));
}
command error_t Init.init()
{
NetProg_TOSInfo tosInfo;
call IFlash.read((uint8_t*)IFLASH_TOS_INFO_ADDR, &tosInfo, sizeof(tosInfo));
if (tosInfo.crc == computeTosInfoCrc(&tosInfo)) {
// TOS_AM_GROUP is not a variable in T2
// TOS_AM_GROUP = tosInfo.groupId;
atomic TOS_NODE_ID = tosInfo.addr;
}
else {
writeTOSinfo();
}
return SUCCESS;
}
command error_t NetProg.reboot()
{
atomic {
writeTOSinfo();
netprog_reboot();
}
return FAIL;
}
command error_t NetProg.programImgAndReboot(uint8_t img_num)
{
tosboot_args_t args;
DelugeNodeDesc nodeDesc;
DelugeImgDesc *imgDesc;
atomic {
writeTOSinfo();
args.imageAddr = call StorageMap.getPhysicalAddress[img_num](0);
args.gestureCount = 0xff;
args.noReprogram = FALSE;
call IFlash.write((uint8_t*)TOSBOOT_ARGS_ADDR, &args, sizeof(args));
// Write info about what img to disseminate after reboot
imgDesc = call DelugeMetadata.getImgDesc(img_num);
nodeDesc.uid = imgDesc->uid;
nodeDesc.imgNum = img_num;
call IFlash.write((uint8_t*)IFLASH_NODE_DESC_ADDR, &nodeDesc, sizeof(nodeDesc));
// reboot
netprog_reboot();
}
// couldn't reboot
return FAIL;
}
default command storage_addr_t StorageMap.getPhysicalAddress[uint8_t img_num](storage_addr_t addr) { return 0xFFFFFFFF; }
}
--- NEW FILE: TOSBoot.h ---
// $Id: TOSBoot.h,v 1.1 2007/05/22 20:34:24 razvanm Exp $
/* tab:2
* "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."
*/
/**
* @author Jonathan Hui <jwhui at cs.berkeley.edu>
*/
#ifndef __TOSBOOT_H__
#define __TOSBOOT_H__
#include "TOSBoot_platform.h"
typedef struct tosboot_args_t {
uint32_t imageAddr;
uint8_t gestureCount;
bool noReprogram;
} tosboot_args_t;
#endif
More information about the Tinyos-2-commits
mailing list