[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