## Matter Glossary

This defines acronyms and terminology frequently mentioned and used throughout
the Matter project repository that are not otherwise well defined before their
use and introduction absent the Matter specification.

**BCM** :Basic Commissioning Method

**Check-In Protocol** :A specific protocol used by a Long Interval Time (LIT)
Intermittently Connected Device (ICD) to notify the client device that they are
temporarily available for communication.

**CIP** :Check-In Protocol

**ECM** :Enhanced Commissioning Method

**Electric Vehicle Supply Equipment** :The hardware and software that safely
delivers electricity from the grid to an electric vehicle's battery, essentially
the "charging station" with its connectors, cables, and communication systems
that manage power flow and ensure safety during the charging process.

**EVSE** :Electric Vehicle Supply Equipment

**ICD** :Intermittently Connected Device

**Intermittently Connected Device** :A device that enters a low-power sleep mode
for periods of time to conserve battery life, and thus is not always reachable
on the network.

**LIT** :Long Interval Time

**Long Interval Time** :A configuration for an Intermittently Connected Device
(ICD) where the device sleeps for much longer intervals (that is, minutes or
even hours).

**MEI** :Manufacturer Extensible Identifier

**PAF** :Public Action Frame

**PCC** :Pump Configuration and Control

**PDC** :Per-device Credentials

**Public Action Frames** :Wi-Fi Public Action Frames (PAFs) are IEEE 802.11
management frames (Category 4) used for unencrypted, public communication
between stations (STAs) and Access Points (APs) without requiring prior
association.

**RVC** :Robotic Vacuum Cleaner

**Short Interval Time** :A configuration for an Intermittently Connected Device
(ICD) where the device's polling interval is relatively short (that is, several
seconds).

**SIT** :Short Interval Time

**SMCO** :Smoke and Carbon Monoxide

**TCC** :Temperature-controlled Cabinet

**UAT** :User Active Mode Trigger

**User Active Mode Trigger** :A feature used by an Intermittently Connected
Device (ICD) that allows a user interaction (like pressing a button on a device)
to immediately switch the ICD from Idle mode to Active mode, making it instantly
responsive for a short period of time.
