binman: Allow text directly in the node
At present text entries use an indirect method to specify the text to use, with a label pointing to the text itself. Allow the text to be directly written into the node. This is more convenient in cases where the text is constant. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
cf54904a99
commit
aa88b50d82
@ -312,6 +312,8 @@ Properties / Entry arguments:
|
||||
that contains the string to place in the entry
|
||||
<xxx> (actual name is the value of text-label): contains the string to
|
||||
place in the entry.
|
||||
<text>: The text to place in the entry (overrides the above mechanism).
|
||||
This is useful when the text is constant.
|
||||
|
||||
Example node:
|
||||
|
||||
@ -334,6 +336,13 @@ It is also possible to put the string directly in the node:
|
||||
message = "a message directly in the node"
|
||||
};
|
||||
|
||||
or just:
|
||||
|
||||
text {
|
||||
size = <8>;
|
||||
text = "some text directly in the node"
|
||||
};
|
||||
|
||||
The text is not itself nul-terminated. This can be achieved, if required,
|
||||
by setting the size of the entry to something larger than the text.
|
||||
|
||||
|
@ -22,6 +22,8 @@ class Entry_text(Entry):
|
||||
that contains the string to place in the entry
|
||||
<xxx> (actual name is the value of text-label): contains the string to
|
||||
place in the entry.
|
||||
<text>: The text to place in the entry (overrides the above mechanism).
|
||||
This is useful when the text is constant.
|
||||
|
||||
Example node:
|
||||
|
||||
@ -44,15 +46,28 @@ class Entry_text(Entry):
|
||||
message = "a message directly in the node"
|
||||
};
|
||||
|
||||
or just:
|
||||
|
||||
text {
|
||||
size = <8>;
|
||||
text = "some text directly in the node"
|
||||
};
|
||||
|
||||
The text is not itself nul-terminated. This can be achieved, if required,
|
||||
by setting the size of the entry to something larger than the text.
|
||||
"""
|
||||
def __init__(self, section, etype, node):
|
||||
Entry.__init__(self, section, etype, node)
|
||||
label, = self.GetEntryArgsOrProps([EntryArg('text-label', str)])
|
||||
self.text_label = tools.ToStr(label) if type(label) != str else label
|
||||
value, = self.GetEntryArgsOrProps([EntryArg(self.text_label, str)])
|
||||
value = tools.ToBytes(value) if value is not None else value
|
||||
value = fdt_util.GetString(self._node, 'text')
|
||||
if value:
|
||||
value = tools.ToBytes(value)
|
||||
else:
|
||||
label, = self.GetEntryArgsOrProps([EntryArg('text-label', str)])
|
||||
self.text_label = label
|
||||
if self.text_label:
|
||||
value, = self.GetEntryArgsOrProps([EntryArg(self.text_label,
|
||||
str)])
|
||||
value = tools.ToBytes(value) if value is not None else value
|
||||
self.value = value
|
||||
|
||||
def ObtainContents(self):
|
||||
|
@ -1286,7 +1286,7 @@ class TestFunctional(unittest.TestCase):
|
||||
expected = (tools.ToBytes(TEXT_DATA) +
|
||||
tools.GetBytes(0, 8 - len(TEXT_DATA)) +
|
||||
tools.ToBytes(TEXT_DATA2) + tools.ToBytes(TEXT_DATA3) +
|
||||
b'some text')
|
||||
b'some text' + b'more text')
|
||||
self.assertEqual(expected, data)
|
||||
|
||||
def testEntryDocs(self):
|
||||
|
@ -24,5 +24,10 @@
|
||||
text-label = "test-id4";
|
||||
test-id4 = "some text";
|
||||
};
|
||||
/* Put text directly in the node */
|
||||
text5 {
|
||||
type = "text";
|
||||
text = "more text";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user