scripts/python/sis2rom/sis/sisfields.py
author victorp@symbian.org
Wed, 03 Feb 2010 17:13:43 +0000
changeset 30 9372f863bb3a
parent 28 ab800b3e45ab
permissions -rw-r--r--
new integration plan update for week05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     1
"""
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     2
Copyright (c) 2006, Jari Sukanen
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     3
All rights reserved.
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     4
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     5
Redistribution and use in source and binary forms, with or 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     6
without modification, are permitted provided that the following 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     7
conditions are met:
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     8
	* Redistributions of source code must retain the above copyright 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
     9
	  notice, this list of conditions and the following disclaimer.
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    10
    * Redistributions in binary form must reproduce the above copyright 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    11
	  notice, this list of conditions and the following disclaimer in 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    12
	  the documentation and/or other materials provided with the 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    13
	  distribution.
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    14
    * Names of the contributors may not be used to endorse or promote 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    15
	  products derived from this software without specific prior written 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    16
	  permission.
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    17
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    18
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    19
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    20
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    21
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    22
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    23
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    24
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    25
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    26
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    27
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    28
THE POSSIBILITY OF SUCH DAMAGE.
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    29
"""
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    30
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    31
import sisreader 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    32
import zlib
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    33
import sys
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    34
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    35
class SISFileHeader :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    36
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    37
		self.uid1 = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    38
		self.uid2 = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    39
		self.uid3 = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    40
		self.uidChecksum = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    41
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    42
class SISField :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    43
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    44
		self.type = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    45
		self.length = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    46
		self.subFields = []
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    47
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    48
	def readFieldLength(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    49
		length = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    50
		if length & 0x80000000 > 0 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    51
			length = length << 32
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    52
			length |= fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    53
		return length
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    54
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    55
	def findField(self, fieldType, startIndex = 0) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    56
		result = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    57
		index = startIndex
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    58
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    59
		for field in self.subFields[startIndex:] :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    60
			if field.type == fieldType :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    61
				result = field
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    62
				break
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    63
			++index
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    64
		return (result, index)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    65
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    66
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    67
		return ""
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    68
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    69
	def traverse(self, handler, depth = 0) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    70
		handler.handleField(self, depth)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    71
		for field in self.subFields :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    72
			field.traverse(handler, depth + 1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    73
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    74
class SISUnsupportedField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    75
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    76
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    77
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    78
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    79
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    80
		fileReader.readPlainBytes(self.length)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    81
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    82
class SISStringField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    83
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    84
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    85
		self.data = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    86
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    87
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    88
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    89
		buf = fileReader.readPlainBytes(self.length)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    90
		self.data = u""
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    91
		while len(buf) > 0 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    92
			temp = buf[:2]
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    93
			buf = buf[2:]
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    94
			self.data += unichr(ord(temp[0]) | ord(temp[1]) << 8)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    95
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    96
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    97
		return self.data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    98
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
    99
class SISArrayField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   100
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   101
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   102
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   103
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   104
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   105
		type = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   106
		l = self.length - 4
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   107
		while l > 0 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   108
			field = SISFieldTypes[type]()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   109
			field.type = type
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   110
			field.initFromFile(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   111
			self.subFields.append(field)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   112
			
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   113
			l -= field.length + 4 # field length + the length field
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   114
			padding = fileReader.skipPadding()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   115
			l -= padding
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   116
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   117
class SISCompressedField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   118
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   119
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   120
		self.algorithm = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   121
		self.uncompressedDataSize = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   122
		self.data = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   123
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   124
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   125
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   126
		self.algorithm = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   127
		self.uncompressedDataSize = fileReader.readBytesAsUint(8)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   128
		data = fileReader.readPlainBytes(self.length - 4 - 8)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   129
		if self.algorithm == 0 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   130
			self.data = data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   131
		elif self.algorithm == 1 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   132
			self.data = zlib.decompress(data)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   133
			
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   134
class SISVersionField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   135
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   136
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   137
		self.version = (-1, -1, -1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   138
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   139
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   140
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   141
		major = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   142
		minor = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   143
		build = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   144
		self.version = (major, minor, build)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   145
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   146
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   147
		return str(self.version)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   148
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   149
class SISVersionRangeField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   150
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   151
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   152
		self.fromVersion = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   153
		self.toVersion = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   154
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   155
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   156
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   157
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   158
		self.fromVersion = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   159
		if self.length - fieldParser.lastReadBytes > 0  :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   160
			self.toVersion = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   161
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   162
class SISDateField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   163
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   164
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   165
		self.year = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   166
		self.month = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   167
		self.day = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   168
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   169
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   170
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   171
		self.year = fileReader.readBytesAsUint(2)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   172
		self.month = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   173
		self.day = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   174
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   175
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   176
		return str(self.year) + "." + str(self.month) + "." + str(self.day)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   177
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   178
class SISTimeField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   179
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   180
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   181
		self.hours = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   182
		self.minutes = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   183
		self.seconds = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   184
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   185
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   186
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   187
		self.hours = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   188
		self.minutes = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   189
		self.seconds = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   190
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   191
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   192
		return str(self.hours) + ":" + str(self.minutes) + ":" + str(self.seconds)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   193
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   194
class SISDateTimeField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   195
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   196
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   197
		self.date = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   198
		self.time = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   199
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   200
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   201
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   202
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   203
		self.date = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   204
		self.time = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   205
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   206
class SISUidField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   207
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   208
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   209
		self.uid = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   210
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   211
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   212
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   213
		self.uid = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   214
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   215
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   216
		return hex(self.uid)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   217
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   218
class SISLanguageField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   219
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   220
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   221
		self.language = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   222
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   223
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   224
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   225
		self.language = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   226
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   227
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   228
		return str(self.language)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   229
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   230
class SISContentsField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   231
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   232
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   233
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   234
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   235
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   236
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   237
		field = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   238
		while field :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   239
			if field.type == 3 : # compressed<conroller>
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   240
				bufferReader = sisreader.SISBufferReader(field.data)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   241
				field = fieldParser.parseField(bufferReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   242
			self.subFields.append(field)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   243
			field = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   244
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   245
class SISControllerField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   246
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   247
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   248
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   249
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   250
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   251
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   252
		bufferReader = sisreader.SISBufferReader(fileReader.readPlainBytes(self.length))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   253
		field = fieldParser.parseField(bufferReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   254
		while field :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   255
			self.subFields.append(field)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   256
			field = fieldParser.parseField(bufferReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   257
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   258
class SISInfoField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   259
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   260
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   261
		self.installType = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   262
		self.installFlags = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   263
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   264
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   265
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   266
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   267
		self.subFields.append(fieldParser.parseField(fileReader)) # UID
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   268
		self.subFields.append(fieldParser.parseField(fileReader)) # Vendor name unique
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   269
		self.subFields.append(fieldParser.parseField(fileReader)) # names
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   270
		self.subFields.append(fieldParser.parseField(fileReader)) # vendor names
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   271
		self.subFields.append(fieldParser.parseField(fileReader)) # version
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   272
		self.subFields.append(fieldParser.parseField(fileReader)) # creation time
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   273
		self.installType = fileReader.readBytesAsUint(1)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   274
		self.installFlags = fileReader.readBytesAsUint(1) 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   275
			
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   276
class SISSupportedLanguagesField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   277
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   278
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   279
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   280
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   281
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   282
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   283
		self.subFields.append(fieldParser.parseField(fileReader)) # languages
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   284
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   285
class SISSupportedOptionsField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   286
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   287
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   288
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   289
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   290
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   291
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   292
		self.subFields.append(fieldParser.parseField(fileReader)) # options
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   293
			
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   294
class SISPrerequisitiesField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   295
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   296
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   297
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   298
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   299
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   300
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   301
		self.subFields.append(fieldParser.parseField(fileReader)) # target devices
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   302
		self.subFields.append(fieldParser.parseField(fileReader)) # dependencies
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   303
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   304
import pdb
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   305
        
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   306
class SISDependencyField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   307
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   308
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   309
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   310
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   311
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   312
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   313
		self.subFields.append(fieldParser.parseField(fileReader)) # UID
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   314
		field = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   315
		# Version range field is optional
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   316
		if field.type == VersionRangeField :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   317
			self.subFields.append(field) # version range
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   318
			self.subFields.append(fieldParser.parseField(fileReader)) # dependency names
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   319
		else :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   320
			self.subFields.append(field) # dependency names
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   321
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   322
class SISPropertiesField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   323
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   324
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   325
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   326
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   327
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   328
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   329
		self.subFields.append(fieldParser.parseField(fileReader)) # properties
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   330
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   331
class SISPropertyField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   332
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   333
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   334
		self.key = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   335
		self.value = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   336
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   337
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   338
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   339
		self.key = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   340
		self.value = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   341
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   342
# There is a type for this field, but there is no definition of the field contents
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   343
class SISSignaturesField(SISUnsupportedField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   344
	pass
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   345
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   346
class SISCertificateChainField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   347
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   348
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   349
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   350
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   351
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   352
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   353
		self.subFields.append(fieldParser.parseField(fileReader)) # certificate data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   354
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   355
class SISLogoField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   356
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   357
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   358
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   359
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   360
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   361
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   362
		self.subFields.append(fieldParser.parseField(fileReader)) # logo file
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   363
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   364
class SISFileDescriptionField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   365
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   366
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   367
		self.operation = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   368
		self.operationOptions = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   369
		self.compressedLength = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   370
		self.uncompressedLength = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   371
		self.fileIndex = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   372
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   373
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   374
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   375
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   376
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   377
		self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   378
		self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   379
		field = fieldParser.parseField(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   380
		self.subFields.append(field)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   381
		if field.type == 41 : # read field was capabilities ==> there is one more field left
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   382
			self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   383
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   384
		self.operation = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   385
		self.operationOptions = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   386
		self.compressedLength = fileReader.readBytesAsUint(8)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   387
		self.uncompressedLength = fileReader.readBytesAsUint(8)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   388
		self.fileIndex = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   389
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   390
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   391
		return "index: " + str(self.fileIndex)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   392
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   393
class SISHashField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   394
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   395
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   396
		self.algorithm = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   397
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   398
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   399
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   400
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   401
		self.algorithm = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   402
		self.subFields.append(fieldParser.parseField(fileReader)) # logo file
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   403
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   404
class SISIfField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   405
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   406
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   407
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   408
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   409
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   410
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   411
		self.subFields.append(fieldParser.parseField(fileReader)) # expression
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   412
		self.subFields.append(fieldParser.parseField(fileReader)) # install block
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   413
		self.subFields.append(fieldParser.parseField(fileReader)) # else ifs
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   414
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   415
class SISElseIfField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   416
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   417
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   418
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   419
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   420
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   421
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   422
		self.subFields.append(fieldParser.parseField(fileReader)) # expression
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   423
		self.subFields.append(fieldParser.parseField(fileReader)) # install block
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   424
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   425
class SISInstallBlockField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   426
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   427
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   428
		self.files = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   429
		self.embeddedSISFiles = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   430
		self.ifBlocks = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   431
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   432
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   433
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   434
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   435
		self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   436
		self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   437
		self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   438
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   439
class SISExpressionField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   440
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   441
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   442
		self.operator = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   443
		self.integerValue = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   444
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   445
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   446
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   447
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   448
		self.operator = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   449
		self.integerValue = fileReader.readBytesAsInt(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   450
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   451
		if self.operator == 10 or self.operator == 13 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   452
			self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   453
		if self.operator == 1 or self.operator == 2 or self.operator == 3 or self.operator == 4 or self.operator == 5 or self.operator == 6 or self.operator == 7 or self.operator == 8 or self.operator == 11 or self.operator == 12 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   454
			self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   455
		if not (self.operator == 13 or self.operator == 14 or self.operator == 15 or self.operator == 16 or self.operator == 10) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   456
			self.subFields.append(fieldParser.parseField(fileReader))
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   457
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   458
class SISDataField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   459
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   460
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   461
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   462
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   463
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   464
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   465
		self.subFields.append(fieldParser.parseField(fileReader)) # data units
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   466
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   467
class SISDataUnitField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   468
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   469
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   470
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   471
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   472
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   473
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   474
		self.subFields.append(fieldParser.parseField(fileReader)) # file data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   475
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   476
class SISFileDataField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   477
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   478
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   479
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   480
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   481
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   482
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   483
		self.subFields.append(fieldParser.parseField(fileReader)) # raw file data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   484
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   485
class SISSupportedOptionField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   486
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   487
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   488
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   489
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   490
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   491
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   492
		self.subFields.append(fieldParser.parseField(fileReader)) # names
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   493
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   494
class SISControllerChecksumField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   495
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   496
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   497
		self.checksum = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   498
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   499
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   500
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   501
		self.checksum = fileReader.readBytesAsUint(2)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   502
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   503
class SISDataChecksumField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   504
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   505
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   506
		self.checksum = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   507
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   508
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   509
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   510
		self.checksum = fileReader.readBytesAsUint(2)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   511
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   512
class SISSignatureField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   513
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   514
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   515
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   516
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   517
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   518
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   519
		self.subFields.append(fieldParser.parseField(fileReader)) # signature algorithm
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   520
		self.subFields.append(fieldParser.parseField(fileReader)) # signature data
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   521
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   522
class SISBlobField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   523
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   524
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   525
		self.data = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   526
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   527
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   528
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   529
		self.data = fileReader.readPlainBytes(self.length)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   530
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   531
class SISSignatureAlgorithmField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   532
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   533
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   534
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   535
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   536
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   537
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   538
		self.subFields.append(fieldParser.parseField(fileReader)) # algorithm identifier
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   539
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   540
class SISSignatureCertificateChainField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   541
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   542
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   543
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   544
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   545
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   546
		fieldParser = sisreader.SISFieldParser()
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   547
		self.subFields.append(fieldParser.parseField(fileReader)) # signatures
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   548
		self.subFields.append(fieldParser.parseField(fileReader)) # certificate chain
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   549
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   550
class SISDataIndexField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   551
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   552
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   553
		self.dataIndex = None
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   554
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   555
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   556
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   557
		self.dataIndex = fileReader.readBytesAsUint(4)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   558
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   559
class SISCapabilitiesField(SISField) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   560
	def __init__(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   561
		SISField.__init__(self)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   562
		self.capabilities = 0
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   563
		self.readableCaps = []
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   564
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   565
	def initFromFile(self, fileReader) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   566
		self.length = self.readFieldLength(fileReader)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   567
		self.capabilities = fileReader.readBytesAsUint(self.length)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   568
		
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   569
		for i in range(20) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   570
			if (self.capabilities >> i) & 0x01 :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   571
				self.readableCaps.append(CapabilityNames[i])
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   572
				
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   573
	def readableStr(self) :
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   574
		return " ".join(self.readableCaps)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   575
	
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   576
SISFieldTypes = { 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   577
	1 : SISStringField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   578
	2 : SISArrayField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   579
	3 : SISCompressedField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   580
	4 : SISVersionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   581
	5 : SISVersionRangeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   582
	6 : SISDateField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   583
	7 : SISTimeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   584
	8 : SISDateTimeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   585
	9 : SISUidField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   586
	10 : SISUnsupportedField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   587
	11 : SISLanguageField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   588
	12 : SISContentsField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   589
	13 : SISControllerField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   590
	14 : SISInfoField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   591
	15 : SISSupportedLanguagesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   592
	16 : SISSupportedOptionsField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   593
	17 : SISPrerequisitiesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   594
	18 : SISDependencyField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   595
	19 : SISPropertiesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   596
	20 : SISPropertyField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   597
	21 : SISSignaturesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   598
	22 : SISCertificateChainField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   599
	23 : SISLogoField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   600
	24 : SISFileDescriptionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   601
	25 : SISHashField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   602
	26 : SISIfField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   603
	27 : SISElseIfField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   604
	28 : SISInstallBlockField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   605
	29 : SISExpressionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   606
	30 : SISDataField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   607
	31 : SISDataUnitField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   608
	32 : SISFileDataField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   609
	33 : SISSupportedOptionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   610
	34 : SISControllerChecksumField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   611
	35 : SISDataChecksumField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   612
	36 : SISSignatureField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   613
	37 : SISBlobField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   614
	38 : SISSignatureAlgorithmField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   615
	39 : SISSignatureCertificateChainField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   616
	40 : SISDataIndexField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   617
	41 : SISCapabilitiesField
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   618
	}
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   619
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   620
[StringField, 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   621
 ArrayField, 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   622
 CompressedField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   623
 VersionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   624
 VersionRangeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   625
 DateField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   626
 TimeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   627
 DateTimeField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   628
 UidField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   629
 UnusedField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   630
 LanguageField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   631
 ContentsField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   632
 ControllerField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   633
 InfoField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   634
 SupportedLanguagesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   635
 SupportedOptionsField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   636
 PrerequisitiesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   637
 DependencyField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   638
 PropertiesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   639
 PropertyField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   640
 SignaturesField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   641
 CertificateChainField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   642
 LogoField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   643
 FileDescriptionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   644
 HashField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   645
 IfField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   646
 ElseIfField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   647
 InstallBlockField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   648
 ExpressionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   649
 DataField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   650
 DataUnitField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   651
 FileDataField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   652
 SupportedOptionField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   653
 ControllerChecksumField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   654
 DataChecksumField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   655
 SignatureField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   656
 BlobField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   657
 SignatureAlgorithmField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   658
 SignatureCertificateChainField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   659
 DataIndexField,
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   660
 CapabilitiesField] = range(1, 42)
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   661
	 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   662
FieldNames = {
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   663
 0 : "ROOT",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   664
 StringField : "StringField", 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   665
 ArrayField : "ArrayField", 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   666
 CompressedField : "CompressedField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   667
 VersionField : "VersionField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   668
 VersionRangeField : "VersionRangeField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   669
 DateField : "DateField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   670
 TimeField : "TimeField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   671
 DateTimeField : "DateTimeField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   672
 UidField : "UidField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   673
 UnusedField : "UnusedField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   674
 LanguageField : "LanguageField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   675
 ContentsField : "ContentsField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   676
 ControllerField : "ControllerField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   677
 InfoField : "InfoField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   678
 SupportedLanguagesField : "SupportedLanguagesField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   679
 SupportedOptionsField : "SupportedOptionsField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   680
 PrerequisitiesField : "PrerequisitiesField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   681
 DependencyField : "DependencyField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   682
 PropertiesField : "PropertiesField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   683
 PropertyField : "PropertyField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   684
 SignaturesField : "SignaturesField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   685
 CertificateChainField : "CertificateChainField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   686
 LogoField : "LogoField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   687
 FileDescriptionField : "FileDescriptionField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   688
 HashField : "HashField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   689
 IfField : "IfField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   690
 ElseIfField : "ElseIfField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   691
 InstallBlockField : "InstallBlockField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   692
 ExpressionField : "ExpressionField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   693
 DataField : "DataField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   694
 DataUnitField : "DataUnitField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   695
 FileDataField : "FileDataField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   696
 SupportedOptionField : "SupportedOptionField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   697
 ControllerChecksumField : "ControllerChecksumField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   698
 DataChecksumField : "DataChecksumField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   699
 SignatureField : "SignatureField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   700
 BlobField : "BlobField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   701
 SignatureAlgorithmField : "SignatureAlgorithmField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   702
 SignatureCertificateChainField : "SignatureCertificateChainField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   703
 DataIndexField : "DataIndexField",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   704
 CapabilitiesField : "CapabilitiesField"
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   705
}
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   706
	 
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   707
CapabilityNames = {
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   708
	0 : "TCB",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   709
	1 : "CommDD",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   710
	2 : "PowerMgmt",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   711
	3 : "MultimediaDD",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   712
	4 : "ReadDeviceData",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   713
	5 : "WriteDeviceData",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   714
	6 : "DRM",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   715
	7 : "TrustedUI",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   716
	8 : "ProtServ",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   717
	9 : "DiskAdmin",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   718
	10 : "NetworkControl",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   719
	11 : "AllFiles",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   720
	12 : "SwEvent",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   721
	13 : "NetworkServices",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   722
	14 : "LocalServices",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   723
	15 : "ReadUserData",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   724
    16 : "WriteUserData",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   725
	17 : "Location",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   726
	18 : "SurroundingsDD",
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   727
	19 : "UserEnvironment"
ab800b3e45ab Added sis2rom for Wild Ducks
Sebastian Brannstrom <sebastianb@symbian.org>
parents:
diff changeset
   728
	}