[Tinyos-2-commits] CVS: tinyos-2.x/tools/tinyos/misc
tos-storage-at45db.1, 1.3, 1.4 tos-storage-stm25p.1, 1.2,
1.3 tos-storage-stm25p.in, 1.4, 1.5
David Gay
idgay at users.sourceforge.net
Wed Apr 11 14:29:31 PDT 2007
Update of /cvsroot/tinyos/tinyos-2.x/tools/tinyos/misc
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv4454
Modified Files:
tos-storage-at45db.1 tos-storage-stm25p.1
tos-storage-stm25p.in
Log Message:
add include support to stm25p volume files
fix multi-volume stm25p bug
Index: tos-storage-at45db.1
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tools/tinyos/misc/tos-storage-at45db.1,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** tos-storage-at45db.1 11 Apr 2007 21:06:58 -0000 1.3
--- tos-storage-at45db.1 11 Apr 2007 21:29:29 -0000 1.4
***************
*** 23,27 ****
.SH EXAMPLES
! tos-storage-at45db <volumes-at45db.xml >build/mica2/StorageVolumes.h
.SH SEE ALSO
--- 23,28 ----
.SH EXAMPLES
! tos-storage-at45db /opt/tinyos-2.x/tos/platforms/mica2 \\
! <volumes-at45db.xml >build/mica2/StorageVolumes.h
.SH SEE ALSO
Index: tos-storage-stm25p.1
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tools/tinyos/misc/tos-storage-stm25p.1,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tos-storage-stm25p.1 12 Jul 2006 17:00:52 -0000 1.2
--- tos-storage-stm25p.1 11 Apr 2007 21:29:29 -0000 1.3
***************
*** 6,10 ****
.SH SYNOPSIS
! \fBtos-storage-stm25p\fR
.SH DESCRIPTION
--- 6,10 ----
.SH SYNOPSIS
! \fBtos-storage-stm25p\fR \fIplatform-directory\fR
.SH DESCRIPTION
***************
*** 15,23 ****
written to standard output.
This program is normally invoked automatically by the TinyOS build system
when your application directory contains a \fBvolumes-stm25p.xml\fR file.
.SH EXAMPLES
! tos-storage-stm25p <volumes-stm25p.xml >build/telosb/StorageVolumes.h
.SH SEE ALSO
--- 15,28 ----
written to standard output.
+ The argument should specify the platform directory for the current
+ compilation target; this is necessary for the correct handling of
+ file include statements in the XML input.
+
This program is normally invoked automatically by the TinyOS build system
when your application directory contains a \fBvolumes-stm25p.xml\fR file.
.SH EXAMPLES
! tos-storage-stm25p /opt/tinyos-2.x/tos/platforms/telosb \\
! <volumes-stm25p.xml >build/telosb/StorageVolumes.h
.SH SEE ALSO
Index: tos-storage-stm25p.in
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tools/tinyos/misc/tos-storage-stm25p.in,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** tos-storage-stm25p.in 12 Dec 2006 18:23:02 -0000 1.4
--- tos-storage-stm25p.in 11 Apr 2007 21:29:29 -0000 1.5
***************
*** 30,34 ****
--- 30,43 ----
# OF THE POSSIBILITY OF SUCH DAMAGE
#
+ # Copyright (c) 2006-2007 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 Jonathan Hui <jhui at archedrock.com>
+ # @author David Gay
#
# $Revision$
***************
*** 38,42 ****
from re import match
from sys import *
! from xml.dom import minidom
NUM_SECTORS = 16
--- 47,87 ----
from re import match
from sys import *
! from xml.dom import *
! from xml.dom.minidom import *
! from subprocess import Popen, PIPE
!
! def error_exit( s ):
! stderr.write( "ERROR: " + s + "\n" )
! exit( 2 )
!
! def expand_path( path ):
! substrs = path.split( "%" )
! path = substrs[0]
! i = 1
! while i < len( substrs ):
! if substrs[i] == "":
! # There was a %%, leading to a blank substring, and the next string
! # should just be appended
! path += "%"
! i = i + 1
! if i < len( substrs ):
! path += substrs[i]
! else:
! # The first character of the string is the one that followed %
! c = substrs[i][0]
! if c == 'p':
! sub = platform
! elif c == 'P':
! sub = platformdir
! elif c == 'T':
! sub = Popen( ["ncc", "-print-tosdir"], stdout=PIPE ).communicate( )[0]
! sub = sub[:-1] # remove newline
! else:
! nfail( "unknown include-path substitution character " + c )
! path += sub
! path += substrs[i][1:]
! i = i + 1
! return path
!
NUM_SECTORS = 16
***************
*** 50,103 ****
freeSectors = NUM_SECTORS*[ True ]
! def error_exit( s ):
! stderr.write( "ERROR: " + s + "\n" )
! exit( 2 )
! try:
! dom = minidom.parse( stdin )
! except xml.parsers.expat.ExpatError:
! error_exit( "input invalid" )
! # extract information
! for volume in dom.documentElement.getElementsByTagName( "volume" ):
! name = volume.getAttribute( "name" )
! size = volume.getAttribute( "size" )
! base = volume.getAttribute( "base" )
! if name == "":
! error_exit( "volume has no name" )
! elif not match( "^[a-zA-Z0-9_]+$", name ):
! error_exit( "volume has invalid name '%s'" % name )
! elif volumes.has_key( name ):
! error_exit( "duplicate volume definition '%s'" % name )
! else:
! volumes[ name ] = "blah"
!
! if size == "":
! error_exit( "volume '%s' has no size" % name )
! try:
! size = int( size )
! except ValueError:
! error_exit( "volume '%s' has invalid size" % name )
! if base != "":
! try:
! base = int( base )
! except ValueError:
! error_exit( "volume '%s' has invalid base" % name )
! if ( size & ( SECTOR_SIZE - 1 ) ) != 0:
! error_exit( "size of volume '%s' is not a multiple of %d" % \
! ( name, SECTOR_SIZE ) )
! if base != "" and ( base & ( SECTOR_SIZE - 1 ) ) != 0:
! error_exit( "base of volume '%s' is not a multiple of %d" % \
! ( name, SECTOR_SIZE ) )
! volumeNames.append( "VOLUME_" + name )
! volumeSizes.append( size / SECTOR_SIZE )
! if base == "":
! volumeOffsets.append( -1 )
else:
! base = base / SECTOR_SIZE
! volumeOffsets.append( base )
! for i in range( size ):
! freeSectors[ i + base ] = False
# allocate with first fit policy
--- 95,171 ----
freeSectors = NUM_SECTORS*[ True ]
! if len( argv ) == 2:
! platformdir = argv[1]
! # This gives the whole string when there's no / in platformdir
! platform = platformdir[platformdir.rfind( "/" ) + 1:]
! elif len( argv ) == 1:
! platformdir = ""
! platform = ""
! else:
! error_exit( "Usage: tos-storage-stm25p <platform directory>" )
! def volumeparse( file, fname, depth ):
! if depth > 10:
! error_exit( "include nesting too deep - check for cycles" )
! try:
! dom = parse( file )
! except xml.parsers.expat.ExpatError:
! error_exit( fname + " is not a valid input file" )
! except IOError:
! error_exit( "couldn't open file " + fname )
! # extract information
! for volume in dom.documentElement.getElementsByTagName( "volume" ):
! name = volume.getAttribute( "name" )
! size = volume.getAttribute( "size" )
! base = volume.getAttribute( "base" )
! if name == "":
! error_exit( "volume has no name" )
! elif not match( "^[a-zA-Z0-9_]+$", name ):
! error_exit( "volume has invalid name '%s'" % name )
! elif volumes.has_key( name ):
! error_exit( "duplicate volume definition '%s'" % name )
! else:
! volumes[ name ] = "blah"
! if size == "":
! error_exit( "volume '%s' has no size" % name )
! try:
! size = int( size )
! except ValueError:
! error_exit( "volume '%s' has invalid size" % name )
! if base != "":
! try:
! base = int( base )
! except ValueError:
! error_exit( "volume '%s' has invalid base" % name )
! if ( size & ( SECTOR_SIZE - 1 ) ) != 0:
! error_exit( "size of volume '%s' is not a multiple of %d" % \
! ( name, SECTOR_SIZE ) )
! if base != "" and ( base & ( SECTOR_SIZE - 1 ) ) != 0:
! error_exit( "base of volume '%s' is not a multiple of %d" % \
! ( name, SECTOR_SIZE ) )
!
! volumeNames.append( "VOLUME_" + name )
! volumeSizes.append( size / SECTOR_SIZE )
! if base == "":
! volumeOffsets.append( -1 )
! else:
! base = base / SECTOR_SIZE
! size = size / SECTOR_SIZE
! volumeOffsets.append( base )
! for i in range( size ):
! freeSectors[ i + base ] = False
!
! for include in dom.documentElement.getElementsByTagName( "include" ):
! included = include.firstChild
! if included != None and included.nodeType == included.TEXT_NODE:
! included = expand_path( included.data )
! volumeparse( included, "(file %s)" % included, depth + 1 )
else:
! error_exit( "invalid include directive " + fname )
! dom.unlink( )
!
! volumeparse( stdin, "(standard input)", 0 )
# allocate with first fit policy
More information about the Tinyos-2-commits
mailing list