KNX defines legacy External Message Interfaces (EMI1, EMI2) that have frame formats specific to each individual media (twisted pair, powerline, radio frequency, etc.).
The goal of Common External Message Interface (Common EMI, or cEMI) is to define a single frame format that can be used across all media.
Common EMI frames are defined only for KNX Data Link Layer primitives in KNX 1.1.
Common EMI Frame Format
Common EMI frame has a variable size but does follow this generic structure:
Where:
| Msg Code |
Message code matching a data link layer primitive (see details below) |
| AI Len |
Additional Info Length, zero value can be used if no additional info is required |
| Add. Info |
Additional Info – optional if zero additional info length is set. |
| Service Info |
This structure changes depending on the data link layer primitive chosen with message code parameter.
See the sample Common EMI frames below. |
Each Common EMI frame contains a message code as its first byte. A message code is defined for each data link primitive as shown in the tables below.
Common EMI Message Codes for Data Link Layer Primitives
From Network Layer to Data Link Layer
| Data Link Layer Primitive |
Message Code |
Data Link Layer Service |
Service Description |
Common EMI Frame |
| L_Raw.req |
0x10 |
|
|
| L_Data.req |
0x11 |
Data Service |
Primitive used for transmitting a data frame |
Sample Common EMI frame |
| L_Poll_Data.req |
0x13 |
Poll Data Service |
|
From Data Link Layer to Network Layer
| Data Link Layer Primitive |
Message Code |
Data Link Layer Service |
Service Description |
| L_Poll_Data.con |
0x25 |
Poll Data Service |
|
| L_Data.ind |
0x29 |
Data Service |
Primitive used for receiving a data frame |
| L_Busmon.ind |
0x2B |
Bus Monitor Service |
|
| L_Raw.ind |
0x2D |
|
|
| L_Data.con |
0x2E |
Data Service |
Primitive used for local confirmation that
a frame was sent (does not indicate a
successful receive though) |
| L_Raw.con |
0x2F |
|
|
From Common EMI Management Client to Common EMI Management Server
| Data Link Layer Primitive |
| M_PropRead.req |
| M_PropWrite.req |
| M_Reset.req |
From Common EMI Management Server to Common EMI Management Client
| Data Link Layer Primitive |
| M_PropRead.con |
| M_PropWrite.con |
| M_PropInfo.ind |
| M_Reset.ind |