Matter Data Types

This is the base type of the DataType classes. It is abstract and not instantiable itself, and contains no functionality but defines the interface.

class st.matter.data_types.DataType
Abstract

A generic class defining the interface shared across all Matter data types

NAME: str

pretty print class name

ID: number

the Matter data type ID for this data type

serialize()

Pack this DataType

Returns

the byte representation of this DataType length of byte_length

Return type

str

static deserialize(bytes, field_name)

Parse this DataType from a string of bytes

Parameters
  • bytes (str) – the bytes containing the st.matter.data_types.DataType only byte_length bytes will be consumed extra will be ignored

  • field_name (str) – optional name of this field (used when pretty_printing)

Returns

the parsed version of DataType

Return type

st.matter.data_types.DataType

get_length()

Get the length in bytes of this DataType

Returns

the byte length of this DataType

Return type

number

pretty_print()

Format this DataType in a human readable way

Returns

A human readable string of this DataType

Return type

str

Null

class st.matter.data_types.NullABC: st.matter.data_types.DataType

Classes being created using the NullABC class represent Matter data types whose lua “value” is stored as nil.

static new_mt(base)

This function will create a new metatable with the appropriate functionality for a Matter Null

Parameters

base (table) – the base meta table, this will include the ID and NAME of the type being represented

Returns

The meta table containing the functionality for this type class

Return type

table

class st.matter.data_types.Null: st.matter.data_types.NullABC
ID: number

0x00

NAME: str

“Null”

value: nil

this data type has no body

Data

class st.matter.data_types.DataABC: st.matter.data_types.DataType

Classes being created using the DataABC class represent Matter data types whose lua “value” is stored as a generic byte string as the direct structure is not known or not storable in another way. In general these are the Matter data types Data8-Data64 represented by IDs 0x08-0x0F. However, due to limitations of lua numbers, numeric types of 64 bit length use this base as well.

static new_mt(base, byte_length)

This function will create a new metatable with the appropriate functionality for a Matter Data field

Parameters
  • base (table) – the base meta table, this will include the ID and NAME of the type being represented

  • byte_length (number) – the length in bytes of this Data field

class st.matter.data_types.Int64: st.matter.data_types.IntABC
ID: number

0x03

NAME: str

“Int64”

byte_length: number

8

value: number

This is the actual value of the instance of the data type

class st.matter.data_types.Uint64: st.matter.data_types.UintABC

Note that very large numbers may require definition through hex or negative integers. This is because Lua

interprets all integers as signed, so numbers above (2 ^ 63) - 1 will be interpreted as negative. However, this is a two’s complement representation, and so we can still store those numbers losslessly.

ID: number

0x07

NAME: str

“Uint64”

byte_length: number

8

value: number

This is the actual value of the instance of the data type

Boolean

class st.matter.data_types.BooleanABC: st.matter.data_types.DataType

Classes being created using the BooleanABC class represent Matter data types whose lua “value” is stored as a boolean.

static new_mt(base)

This function will create a new metatable with the appropriate functionality for a Matter Boolean

Parameters

base (table) – the base meta table, this will include the ID and NAME of the type being represented

Returns

The meta table containing the functionality for this type class

Return type

table

class st.matter.data_types.Boolean: st.matter.data_types.BooleanABC
ID: number

0x08

ExtendedID: number

0x09 allows too element types to map to the same data type

NAME: str

“Boolean”

value: boolean

The value of this boolean data type

Bitmap and Enum

Bitmaps and Enum values are represented as unsigned integers

Uint

class st.matter.data_types.UintABC: st.matter.data_types.DataType

Classes being created using the UintABC class represent Matter data types whose lua “value” is stored as an unsigned number. In general these are the Matter data types Uint8-Uint56 represented by IDs 0x20-0x26. Uint64 has to be treated differently due to lua limitations. In addition there are several other ID types that derive their behavior from Uint as well.

static new_mt(base, byte_length)

This function will create a new metatable with the appropriate functionality for a Matter Uint

Parameters
  • base (table) – the base meta table, this will include the ID and NAME of the type being represented

  • byte_length (number) – the length in bytes of this Uint

class st.matter.data_types.Uint8: st.matter.data_types.UintABC
ID: number

0x04

NAME: str

“Uint8”

byte_length: number

1

value: number

This is the actual value of the instance of the data type

class st.matter.data_types.Uint16: st.matter.data_types.UintABC
ID: number

0x05

NAME: str

“Uint16”

byte_length: number

2

value: number

This is the actual value of the instance of the data type

class st.matter.data_types.Uint32: st.matter.data_types.UintABC
ID: number

0x06

NAME: str

“Uint32”

byte_length: number

4

value: number

This is the actual value of the instance of the data type

Int

class st.matter.data_types.IntABC: st.matter.data_types.DataType

Classes being created using the IntABC class represent Matter data types whose lua “value” is stored as a signed number. In general these are the Matter data types Int8-Int56 represented by IDs 0x28-0x2E. Int64 has to be treated differently due to lua limitations.

static new_mt(base, byte_length)

This function will create a new metatable with the appropriate functionality for a Matter Int

Parameters
  • base (table) – the base meta table, this will include the ID and NAME of the type being represented

  • byte_length (number) – the length in bytes of this Int

class st.matter.data_types.Int8: st.matter.data_types.IntABC
ID: number

0x00

NAME: str

“Int8”

byte_length: number

1

value: number

This is the actual value of the instance of the data type

class st.matter.data_types.Int16: st.matter.data_types.IntABC
ID: number

0x01

NAME: str

“Int16”

byte_length: number

1

value: number

This is the actual value of the instance of the data type

class st.matter.data_types.Int32: st.matter.data_types.IntABC
ID: number

0x02

NAME: str

“Int32”

byte_length: number

4

value: number

This is the actual value of the instance of the data type

Floating Points

class st.matter.data_types.FloatABC: st.matter.data_types.DataType

This represents a number of the form (1 + mantissa) * 2 ^ exponent with some exceptions see the Matter spec for further details

mantissa: number

The fractional component of the number

exponent: number

The exponent for 2

sign: number

either 1 if the value is negative or 0 if positive

static new_mt(base, byte_length, mantissa_bit_length, exponent_bit_length)

This function will create a new metatable with the appropriate functionality for a Matter Float field

Parameters
  • base (table) – the base meta table, this will include the ID and NAME of the type being represented

  • byte_length (number) – the length in bytes of this Float field

  • mantissa_bit_length (number) – the number of bits to use for the mantissa field

  • exponent_bit_length (number) – the number of bits to use for the exponent field

class st.matter.data_types.SinglePrecisionFloat: st.matter.data_types.FloatABC
ID: number

0x0A

NAME: str

“SinglePrecision”

byte_length: number

4

mantissa_bit_length: number

23

exponent_bit_length: number

8

class st.matter.data_types.DoublePrecisionFloat: st.matter.data_types.FloatABC
ID: number

0x0B

NAME: str

“DoublePrecision”

byte_length: number

8

mantissa_bit_length: number

52

exponent_bit_length: number

11

Strings

class st.matter.data_types.StringABC: st.matter.data_types.DataType

Classes being created using the StringABC class represent Matter data types whose lua “value” is stored as a string. These are the Matter data types UTF-8 String, 1-octet length, UTF-8 String, 2-octet length, UTF-8 String, 4-octet length, and UTF-8 String, 8-octet length.

static new_mt(base, length_byte_length)

This function will create a new metatable with the appropriate functionality for a Matter String

Parameters
  • base (table) – the base meta table, this will include the ID and NAME of the type being represented

  • length_byte_length (number) – the length of the encoded byte_length of this String

class st.matter.data_types.OctetString1: st.matter.data_types.StringABC
ID: number

0x10

NAME: str

“OctetString1”

length_byte_length: number

1 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.OctetString2: st.matter.data_types.StringABC
ID: number

0x11

NAME: str

“OctetString2”

length_byte_length: number

1 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.OctetString4: st.matter.data_types.StringABC
ID: number

0x12

NAME: str

“OctetString4”

length_byte_length: number

1 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.OctetString8: st.matter.data_types.StringABC
ID: number

0x13

NAME: str

“OctetString8”

length_byte_length: number

1 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.UTF8String1: st.matter.data_types.StringABC
ID: number

0x0C

NAME: str

“UTF8String1”

length_byte_length: number

1 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.UTF8String2: st.matter.data_types.StringABC
ID: number

0x0D

NAME: str

“UTF8String2”

length_byte_length: number

2 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.UTF8String4: st.matter.data_types.StringABC
ID: number

0x0E

NAME: str

“UTF8String4”

length_byte_length: number

4 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

class st.matter.data_types.UTF8String8: st.matter.data_types.StringABC
ID: number

0x0F

NAME: str

“UTF8String8”

length_byte_length: number

8 (This is the number of bytes the length description takes)

byte_length: number

the length of this string (not including the length bytes)

value: str

The string representation of this field (note this does not include the length bytes)

Container Types

class st.matter.data_types.ArrayABC: st.matter.data_types.DataType

Classes being created using the ArrayABC class represent Matter data types whose lua “value” is stored as a Lua-native 1-indexed table of Matter data types all of the same type.

static new_mt(base)

This function will create a new metatable with the appropriate functionality for a Matter Array

Parameters

base (table) – the base meta table, this will include the ID and NAME of the type being represented

Returns

The meta table containing the functionality for this type class

Return type

table

class st.matter.data_types.Array: st.matter.data_types.ArrayABC
ID: number

0x16 (aka Matter Element Type)

NAME: str

“Array”

value: table

the list of elements in this array

class st.matter.data_types.StructureABC: st.matter.data_types.DataType

Classes being created using the StructureABC class represent matter data types whose lua “value” is stored as an array of matter data types each of which can be a separate type.

static new_mt(base)

This function will create a new metatable with the appropriate functionality for a matter Structure

Parameters

base (table) – the base meta table, this will include the ID and NAME of the type being represented

Returns

The meta table containing the functionality for this type class

Return type

table

class st.matter.data_types.Structure: st.matter.data_types.StructureABC
ID: number

0x15

NAME: str

“Structure”

elements: table

the list of elements in this structure