summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Semjonovs <asemjonovs@google.com>2022-04-27 11:37:09 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-29 15:46:28 +0000
commitb4bb00f5cc0dc1d21f05ac5f0022208dac42d303 (patch)
treee0d2099b2dfc8ba554ef5947113020869bbaab40
parent320ab3ce3b8329bb1490865a1547ec2698666c89 (diff)
downloadchrome-ec-b4bb00f5cc0dc1d21f05ac5f0022208dac42d303.tar.gz
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 <asemjonovs@google.com> Change-Id: Ic71b71ef728469282966c8e00168b9a2d21a8621 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3612204 Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--zephyr/emul/tcpc/emul_tcpci_partner_snk.c6
-rw-r--r--zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h9
-rw-r--r--zephyr/test/drivers/src/integration/usbc/usb_5v_3a_pd_sink.c22
3 files changed, 37 insertions, 0 deletions
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 */
@@ -107,6 +109,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);
+}