|
@@ -175,6 +175,16 @@ class Prop:
|
|
|
self.type = TYPE_INT
|
|
|
self.dirty = True
|
|
|
|
|
|
+ def SetData(self, bytes):
|
|
|
+ """Set the value of a property as bytes
|
|
|
+
|
|
|
+ Args:
|
|
|
+ bytes: New property value to set
|
|
|
+ """
|
|
|
+ self.bytes = str(bytes)
|
|
|
+ self.type, self.value = self.BytesToValue(bytes)
|
|
|
+ self.dirty = True
|
|
|
+
|
|
|
def Sync(self, auto_resize=False):
|
|
|
"""Sync property changes back to the device tree
|
|
|
|
|
@@ -326,18 +336,78 @@ class Node:
|
|
|
"""
|
|
|
self.props[prop_name] = Prop(self, None, prop_name, '\0' * 4)
|
|
|
|
|
|
+ def AddEmptyProp(self, prop_name, len):
|
|
|
+ """Add a property with a fixed data size, for filling in later
|
|
|
+
|
|
|
+ The device tree is marked dirty so that the value will be written to
|
|
|
+ the blob on the next sync.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ prop_name: Name of property
|
|
|
+ len: Length of data in property
|
|
|
+ """
|
|
|
+ value = chr(0) * len
|
|
|
+ self.props[prop_name] = Prop(self, None, prop_name, value)
|
|
|
+
|
|
|
def SetInt(self, prop_name, val):
|
|
|
"""Update an integer property int the device tree.
|
|
|
|
|
|
This is not allowed to change the size of the FDT.
|
|
|
|
|
|
+ The device tree is marked dirty so that the value will be written to
|
|
|
+ the blob on the next sync.
|
|
|
+
|
|
|
Args:
|
|
|
prop_name: Name of property
|
|
|
val: Value to set
|
|
|
"""
|
|
|
self.props[prop_name].SetInt(val)
|
|
|
|
|
|
+ def SetData(self, prop_name, val):
|
|
|
+ """Set the data value of a property
|
|
|
+
|
|
|
+ The device tree is marked dirty so that the value will be written to
|
|
|
+ the blob on the next sync.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ prop_name: Name of property to set
|
|
|
+ val: Data value to set
|
|
|
+ """
|
|
|
+ self.props[prop_name].SetData(val)
|
|
|
+
|
|
|
+ def SetString(self, prop_name, val):
|
|
|
+ """Set the string value of a property
|
|
|
+
|
|
|
+ The device tree is marked dirty so that the value will be written to
|
|
|
+ the blob on the next sync.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ prop_name: Name of property to set
|
|
|
+ val: String value to set (will be \0-terminated in DT)
|
|
|
+ """
|
|
|
+ self.props[prop_name].SetData(val + chr(0))
|
|
|
+
|
|
|
+ def AddString(self, prop_name, val):
|
|
|
+ """Add a new string property to a node
|
|
|
+
|
|
|
+ The device tree is marked dirty so that the value will be written to
|
|
|
+ the blob on the next sync.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ prop_name: Name of property to add
|
|
|
+ val: String value of property
|
|
|
+ """
|
|
|
+ self.props[prop_name] = Prop(self, None, prop_name, val + chr(0))
|
|
|
+
|
|
|
def AddSubnode(self, name):
|
|
|
+ """Add a new subnode to the node
|
|
|
+
|
|
|
+ Args:
|
|
|
+ name: name of node to add
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ New subnode that was created
|
|
|
+ """
|
|
|
path = self.path + '/' + name
|
|
|
subnode = Node(self._fdt, self, None, name, path)
|
|
|
self.subnodes.append(subnode)
|