Module: E3DCMqtt::RSCP

Defined in:
lib/e3dc_mqtt/rscp/tags.rb,
lib/e3dc_mqtt/rscp/frame.rb,
lib/e3dc_mqtt/rscp/client.rb,
lib/e3dc_mqtt/rscp/errors.rb,
lib/e3dc_mqtt/rscp/message.rb,
lib/e3dc_mqtt/rscp/constants.rb,
lib/e3dc_mqtt/rscp/data_type.rb,
lib/e3dc_mqtt/rscp/rijndael256.rb

Defined Under Namespace

Modules: DataType, Frame, MessageCodec, Rijndael256, Tags Classes: AuthenticationFailed, Client, DataLimitExceeded, DataTypeMismatch, Error, InvalidControl, InvalidCrc, InvalidFrameLength, InvalidMagic, Message, ProtocolVersionMismatch, UnknownDataType

Constant Summary collapse

MAGIC =
0xDCE3
VERSION_1_0 =
0b0001
FRAME_MAGIC_SIZE =
2
FRAME_CTRL_SIZE =
2
FRAME_TIME_SIZE =
12
FRAME_LENGTH_SIZE =
2
FRAME_HEADER_SIZE =
FRAME_MAGIC_SIZE + FRAME_CTRL_SIZE + FRAME_TIME_SIZE + FRAME_LENGTH_SIZE
FRAME_CRC_SIZE =
4
FRAME_MAX_DATA_SIZE =
0xFFFF
DATA_TAG_SIZE =
4
DATA_DATATYPE_SIZE =
1
DATA_LENGTH_SIZE =
2
DATA_HEADER_SIZE =
DATA_TAG_SIZE + DATA_DATATYPE_SIZE + DATA_LENGTH_SIZE
DATA_MAX_DATA_SIZE =
FRAME_MAX_DATA_SIZE - DATA_HEADER_SIZE
CRYPT_BLOCK_SIZE =
32
CRYPT_KEY_SIZE =
32
CRYPT_KEY_PAD =
0xFF
CRYPT_IV_PAD =
0xFF
CRYPT_BLOCK_PAD =
0x00
CTRL_VERSION_SHIFT =

Control field layout (little-endian uint16):

bits 8..11  -> version (0b0001 = 1.0)
bit 12      -> CRC flag
8
CTRL_VERSION_MASK =
0b0000_1111_0000_0000
CTRL_CRC_SHIFT =
12
CTRL_CRC_MASK =
0b0001_0000_0000_0000
CTRL_ALLOWED_MASK =
CTRL_VERSION_MASK | CTRL_CRC_MASK