User Guide
– –
– –
28 29
The header and data structures for explicit encrypted packets are shown
in Figure 25. The header and data blocks returned by the module are the
decrypted message contents.
The Tag, Header Length and Frame Type fields are the same as for
unencrypted packets.
The Hop Key field uses the first three low-order bits to indicate the Hop
Sequence number, which is the same as unencrypted packets. The upper
two bits indicate which key is being used. Either the factory-set key that is
used to securely transfer the network key or a network key that has been
written or created by the JOIN process. This is shown in Figure 26.
The Sequence bytes contain a counter that is incremented for each new
transmitted message. The initial value is randomized when the module
is reset. The extended sequence becomes part of an initialization vector
which is used to vary the encrypted contents of identical packets. A
received packet is discarded if the sequence byte matches the previously
received packet to prevent delivering duplicate copies of an automatically
retransmitted packet.
Tag
0x11
Frame
Type
1
Header
Length
1
Hop Key
1
Sequence
6
Dest DSN
4
Source
DSN
4
EBlock
Length
1
Encrypted DSN Address Packet Header
Encrypted Packet Data
Tag
0x12
Data
Data Length Bytes
Data
Length
1
Tag
0x11
Frame
Type
1
Header
Length
1
Hop Key
1
Sequence
6
Dest Addr
2 or 4
Source
Addr
2 or 4
Source
DSN
4
Encrypted User Address Packet Header
EBlock
Length
1
Payload
Type
1
Payload
Type
1
Figure 25: HumPRO
TM
Series Transceiver Encrypted Packet Header and Data Structure
HumPRO
TM
Series HopKey Byte Values
HopKey Bit Value
0 - 3 Hop Sequence Number, 1 to 5
4 - 5 = 0
6 - 7
Encryption key
0 = factory
1 = user network
Figure 26: HumPRO
TM
Series HopKey Byte Values
The Dest DSN, Source DSN, Dest Addr and Source Addr fields are the
source and destination addresses, the same as in unencrypted packets.
The EBlock length field is the total number of bytes of data in the encrypted
payload block. This length includes the Payload Type byte.
The Payload Type byte indicates what data is contained in the payload.
0x00 indicates that the payload is user data. 0x01 indicates that the
payload is the 16-byte AES key followed by any user data. This is used for
transferring the network encryption key during the JOIN process.
For the Encrypted Packet Data packet, the Data Length byte indicates the
number of bytes of data payload that follow. This value is one less than the
EBlock length in the header. The reason for this is that the Payload Type
byte is included in the encrypted block, but is reported with the header
since it is not user data.
Using the Buffer Empty (BE) Line
The BE line indicates the state of the module’s UART buffer. It is high to
indicate that the UART input buffer is empty, indicating that all data has
been transmitted. When the module receives data on the CMD_DATA_IN
line and the CMD line is high, the BE line is lowered until all data in the
buffer has been processed by the protocol engine. If acknowledgement
is not enabled, the BE line is raised as soon as the module transmits the
outgoing packets. If acknowledgement is enabled, the buffer is not updated
until either the data transmissions are acknowledged by the remote end or
delivery fails after the maximum number of retries. When the BE line returns
high, the EX line may be sampled, or the EXCEPT or EEXFLAG register
polled to determine if an error occurred during transmission.
The state of the BE line can be read in the LSTATUS register, reducing the
number of hardware connections that are needed.