XCP (Universal Measurement and Calibration Protocol) is a strictly master/slave protocol. The calibration tool (INCA, CANape) is always the master and initiates every transaction. The ECU is the slave and responds — it never sends data unsolicited, except for pre-configured DAQ packets which the master has set up and armed.
CANape / INCA (Master) ECU (Slave)
──────────────────────────────────────────────
CMD: CONNECT (0xFE) ──────────► RESPONSE: 0xFF (positive)
CMD: GET_STATUS (0xFB) ────────► RESPONSE: session_status bytes
CMD: SET_MTA (0xF1) ───────────► RESPONSE: 0xFF
CMD: UPLOAD (0xF5) ────────────► RESPONSE: 0xFF + data bytes
CMD: DOWNLOAD (0xF6) ──────────► RESPONSE: 0xFF
CMD: SET_CAL_PAGE (0xEB) ──────► RESPONSE: 0xFF
CMD: START_STOP_DAQ (0xDE) ────► RESPONSE: 0xFF
(ECU begins streaming DAQ packets)
DAQ packet ◄──────────────────── ECU sends at configured rate
DAQ packet ◄──────────────────── (unsolicited after START_STOP)
CMD: DISCONNECT (0xFC) ────────► RESPONSE: 0xFF