diff --git a/Documentation/conf.py b/Documentation/conf.py index d5c08c5f4b769dea51941bc31451da0b19eee0df..b80d8dadd0485fdaee5a14577412eb6972d6b213 100644 --- a/Documentation/conf.py +++ b/Documentation/conf.py @@ -62,6 +62,8 @@ class ColorExample(rst.Directive): color = self.arguments[0] html_text = '<div style="width: 30px;height: 30px;background: {};border: black 1px solid;border-radius: 15px;"></div>' return [nodes.raw("", html_text.format(color), format="html")] + + # }}} # -- Options for HTML output ------------------------------------------------- {{{ @@ -112,6 +114,7 @@ autodoc_mock_imports = [ "sys_display", "sys_leds", "sys_max30001", + "sys_config", "ucollections", "urandom", "utime", diff --git a/Documentation/index.rst b/Documentation/index.rst index 6693f3c2637eb5f53ed908623723231bfd8a6559..f6ce6fcd564b08a7f01229a1a235334bb8d1c7c2 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -27,6 +27,7 @@ Last but not least, if you want to start hacking the lower-level firmware, the pycardium/max30001 pycardium/buttons pycardium/color + pycardium/config pycardium/display pycardium/gpio pycardium/leds diff --git a/Documentation/pycardium/config.rst b/Documentation/pycardium/config.rst new file mode 100644 index 0000000000000000000000000000000000000000..926098eb1daa66b553732648eb344634626cb621 --- /dev/null +++ b/Documentation/pycardium/config.rst @@ -0,0 +1,9 @@ +``config`` - Configuration +========================== +The ``config`` module provides functions to interact with card10's +configuration file (``card10.cfg``). + +.. automodule:: config + :members: + + diff --git a/pycardium/modules/py/config.py b/pycardium/modules/py/config.py index 1ac6552964417821664e271bdd89027785fd3f0d..8d70936ff2ba9c161712ad07a244f6ebe583a646 100644 --- a/pycardium/modules/py/config.py +++ b/pycardium/modules/py/config.py @@ -2,8 +2,47 @@ import sys_config def set_string(key, value): - sys_config.set_string(key, str(value)) + """ + Write a string to the configuration file ``card10.cfg``. + + Both ``key`` and ``value`` must be strings or must be + convertible to a string using the ``str()`` function. + + ``key`` must not contain spaces, control characters (including tabs), + number signs ans equal signs. + ``value` must not contain control characters (including tabs). + Neither is allowed to contain the sub-string ``execute_elf``. + + The key/value pair is immediately written to the configuration + file (``card10.cfg``). After the file is written, configuration + is read again and the new value is available via ``config.get_string``. + + :param str key: Name of the configuration option. + :param str value: Value to write. + :raises OSError: If writing to the configuration file failed. + :raises OSError: If key or value contain illegal characters. + :raises ValueError: If key or value contain the sub-string ``execute_elf``. + + .. versionadded:: 1.16 + """ + + sys_config.set_string(str(key), str(value)) def get_string(key): - return sys_config.get_string(key) + """ + Read a string from the configuration file ``card10.cfg``. + + ``key`` must be a string or must be convertible to a string using + the ``str()`` function. + + + :param str key: Name of the configuration option. + :rtype: str + :returns: Value of the configuration option. + :raises OSError: if the key is not present in the configuration. + + .. versionadded:: 1.16 + """ + + return sys_config.get_string(str(key))