diff --git a/docs/library/uctypes.rst b/docs/library/uctypes.rst index d7ebc7b7d5..e83c56b3e4 100644 --- a/docs/library/uctypes.rst +++ b/docs/library/uctypes.rst @@ -98,8 +98,8 @@ Module contents .. class:: struct(descriptor, layout_type) - Create a "foreign data structure" object based on its descriptor (encoded - as a dictionary) and layout type. + Create a "foreign data structure" class based on its descriptor (encoded + as a dictionary) and layout type (see below). .. data:: LITTLE_ENDIAN @@ -140,6 +140,22 @@ Module contents so it can be both written too, and you will access current value at the given memory address. +Structure classes and instantiating structure objects +----------------------------------------------------- + +Given structure descriptor and layout type, you can instantiate a +"structure class" using uctypes.struct() factory function. From it, +you can instantiate a specific structure instance at a given +memory address. Memory address usually comes from following sources: + +* Predefined address, when accessing hardware registers on a baremetal +port. Lookup these addresses in datasheet for a particular MCU/SoC. +* As return value from a call to some FFI (Foreign Function Interface) +function. +* From uctypes.addressof(), when you want to pass arguments to FFI +function, or alternatively, to access some data for I/O (for example, +data read from file or network socket). + Structure objects -----------------