From b4bb00f5cc0dc1d21f05ac5f0022208dac42d303 Mon Sep 17 00:00:00 2001 From: Al Semjonovs Date: Wed, 27 Apr 2022 11:37:09 -0600 Subject: zephyr:test: Add ping message support/test Add ping message support to emulator and verify it via test case. BUG=b:23062456 BRANCH=NONE TEST=zmake test test-drivers Signed-off-by: Al Semjonovs Change-Id: Ic71b71ef728469282966c8e00168b9a2d21a8621 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3612204 Reviewed-by: Denis Brockus --- zephyr/emul/tcpc/emul_tcpci_partner_snk.c | 6 ++++++ zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h | 9 +++++++++ .../src/integration/usbc/usb_5v_3a_pd_sink.c | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/zephyr/emul/tcpc/emul_tcpci_partner_snk.c b/zephyr/emul/tcpc/emul_tcpci_partner_snk.c index 6071a006e3..1faa82a4a7 100644 --- a/zephyr/emul/tcpc/emul_tcpci_partner_snk.c +++ b/zephyr/emul/tcpc/emul_tcpci_partner_snk.c @@ -340,6 +340,11 @@ tcpci_snk_emul_handle_goto_min_req(struct tcpci_snk_emul_data *data, return TCPCI_PARTNER_COMMON_MSG_HANDLED; } +void tcpci_snk_emul_clear_ping_received(struct tcpci_snk_emul_data *data) +{ + data->ping_received = false; +} + /** Check description in emul_tcpci_snk.h */ enum tcpci_partner_handler_res tcpci_snk_emul_handle_sop_msg( struct tcpci_snk_emul_data *data, @@ -368,6 +373,7 @@ enum tcpci_partner_handler_res tcpci_snk_emul_handle_sop_msg( 0); return TCPCI_PARTNER_COMMON_MSG_HANDLED; case PD_CTRL_PING: + data->ping_received = true; return TCPCI_PARTNER_COMMON_MSG_HANDLED; case PD_CTRL_GOTO_MIN: return tcpci_snk_emul_handle_goto_min_req(data, diff --git a/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h b/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h index 0671fb7e2e..0c05768d31 100644 --- a/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h +++ b/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h @@ -35,6 +35,8 @@ struct tcpci_snk_emul_data { bool wait_for_ps_rdy; /** PS RDY was received and PD negotiation is completed */ bool pd_completed; + /** PD_CTRL_PING message received */ + bool ping_received; }; /** Structure describing standalone sink device emulator */ @@ -106,6 +108,13 @@ enum tcpci_partner_handler_res tcpci_snk_emul_handle_sop_msg( */ void tcpci_snk_emul_hard_reset(void *data); +/** + * @brief Clear the ping received flag. + * + * @param sink_data + */ +void tcpci_snk_emul_clear_ping_received(struct tcpci_snk_emul_data *sink_data); + /** * @} */ diff --git a/zephyr/test/drivers/src/integration/usbc/usb_5v_3a_pd_sink.c b/zephyr/test/drivers/src/integration/usbc/usb_5v_3a_pd_sink.c index 9d29f4bacb..3f6925be25 100644 --- a/zephyr/test/drivers/src/integration/usbc/usb_5v_3a_pd_sink.c +++ b/zephyr/test/drivers/src/integration/usbc/usb_5v_3a_pd_sink.c @@ -13,6 +13,7 @@ #include "tcpm/tcpci.h" #include "test/drivers/test_state.h" #include "test/drivers/utils.h" +#include "timer.h" #include "usb_pd.h" struct usb_attach_5v_3a_pd_sink_fixture { @@ -267,3 +268,24 @@ ZTEST_F(usb_attach_5v_3a_pd_sink, verify_goto_min) zassert_true(this->sink_5v_3a.data.pd_completed, NULL); } + +/** + * @brief TestPurpose: Verify Ping message. + * + * @details + * - TCPM is configured initially as Source + * - Initiate Ping request + * - Verify emulated sink received ping message + * + * Expected Results + * - Sink received ping message + */ +ZTEST_F(usb_attach_5v_3a_pd_sink, verify_ping_msg) +{ + tcpci_snk_emul_clear_ping_received(&this->sink_5v_3a.data); + + pd_dpm_request(0, DPM_REQUEST_SEND_PING); + k_sleep(K_USEC(PD_T_SOURCE_ACTIVITY)); + + zassert_true(this->sink_5v_3a.data.ping_received, NULL); +} -- cgit v1.2.1