| # SPDX-License-Identifier: GPL-2.0+ |
| # Copyright (c) 2018 Google, Inc |
| # Written by Simon Glass <sjg@chromium.org> |
| # |
| |
| from collections import OrderedDict |
| |
| from entry import Entry, EntryArg |
| import fdt_util |
| |
| |
| class Entry_text(Entry): |
| """An entry which contains text |
| |
| The text can be provided either in the node itself or by a command-line |
| argument. There is a level of indirection to allow multiple text strings |
| and sharing of text. |
| |
| Properties / Entry arguments: |
| text-label: The value of this string indicates the property / entry-arg |
| 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. |
| |
| Example node: |
| |
| text { |
| size = <50>; |
| text-label = "message"; |
| }; |
| |
| You can then use: |
| |
| binman -amessage="this is my message" |
| |
| and binman will insert that string into the entry. |
| |
| It is also possible to put the string directly in the node: |
| |
| text { |
| size = <8>; |
| text-label = "message"; |
| message = "a message 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) |
| self.text_label, = self.GetEntryArgsOrProps( |
| [EntryArg('text-label', str)]) |
| self.value, = self.GetEntryArgsOrProps([EntryArg(self.text_label, str)]) |
| if not self.value: |
| self.Raise("No value provided for text label '%s'" % |
| self.text_label) |
| |
| def ObtainContents(self): |
| self.SetContents(self.value) |
| return True |