summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJameson Thies <jthies@google.com>2022-05-09 23:35:34 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-05-10 17:57:15 +0000
commitaf8196b16d811831c4d4c3798a4e967739a8251e (patch)
tree429946f87c0fc79fe6c09f6e973f4dbdee4d6967
parent1bd59910f0f7649a3431a0401bbd549cb8d04df2 (diff)
downloadchrome-ec-af8196b16d811831c4d4c3798a4e967739a8251e.tar.gz
zephyr:test: Add test to check Alert sends from the EC
Updates the emulator to check for alert messages and adds a test case which uses pd_broadcast_alert_msg to check new functions for sending USB PD Alerts. BUG=b:230975527 BRANCH=NONE TEST=zmake test --coverage test-drivers --clobber Signed-off-by: Jameson Thies <jthies@google.com> Change-Id: I67164c2012a8d52d6d483365bca4209f0f59dc0b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3636760 Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
-rw-r--r--zephyr/emul/tcpc/emul_tcpci_partner_snk.c8
-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.c24
3 files changed, 41 insertions, 0 deletions
diff --git a/zephyr/emul/tcpc/emul_tcpci_partner_snk.c b/zephyr/emul/tcpc/emul_tcpci_partner_snk.c
index fb314b54f3..f9cab652c8 100644
--- a/zephyr/emul/tcpc/emul_tcpci_partner_snk.c
+++ b/zephyr/emul/tcpc/emul_tcpci_partner_snk.c
@@ -345,6 +345,11 @@ void tcpci_snk_emul_clear_ping_received(struct tcpci_snk_emul_data *data)
data->ping_received = false;
}
+void tcpci_snk_emul_clear_alert_received(struct tcpci_snk_emul_data *data)
+{
+ data->alert_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,
@@ -362,6 +367,9 @@ enum tcpci_partner_handler_res tcpci_snk_emul_handle_sop_msg(
tcpci_snk_emul_handle_source_cap(data, common_data,
msg);
return TCPCI_PARTNER_COMMON_MSG_HANDLED;
+ case PD_DATA_ALERT:
+ data->alert_received = true;
+ return TCPCI_PARTNER_COMMON_MSG_HANDLED;
default:
return TCPCI_PARTNER_COMMON_MSG_NOT_HANDLED;
}
diff --git a/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h b/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h
index a50f750a4a..35d9b4fda3 100644
--- a/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h
+++ b/zephyr/include/emul/tcpc/emul_tcpci_partner_snk.h
@@ -37,6 +37,8 @@ struct tcpci_snk_emul_data {
bool pd_completed;
/** PD_CTRL_PING message received */
bool ping_received;
+ /** PD_DATA_ALERT message received */
+ bool alert_received;
};
/** Structure describing standalone sink device emulator */
@@ -116,6 +118,13 @@ void tcpci_snk_emul_hard_reset(void *data);
void tcpci_snk_emul_clear_ping_received(struct tcpci_snk_emul_data *sink_data);
/**
+ * @brief Clear the alert received flag.
+ *
+ * @param sink_data
+ */
+void tcpci_snk_emul_clear_alert_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 3f6925be25..e0b27a1b6f 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
@@ -14,6 +14,7 @@
#include "test/drivers/test_state.h"
#include "test/drivers/utils.h"
#include "timer.h"
+#include "usb_common.h"
#include "usb_pd.h"
struct usb_attach_5v_3a_pd_sink_fixture {
@@ -289,3 +290,26 @@ ZTEST_F(usb_attach_5v_3a_pd_sink, verify_ping_msg)
zassert_true(this->sink_5v_3a.data.ping_received, NULL);
}
+
+/**
+ * @brief TestPurpose: Verify Alert message.
+ *
+ * @details
+ * - Clear alert_received in emulated partner
+ * - Broadcast PD Alert
+ * - Check pd_broadcast_alert_msg can set the ADO and run pd_dpm_request
+ * - Check that emulated partner received a PD_DATA_ALERT message
+ *
+ * Expected Results
+ * - EC_SUCCESS returned from pd_broadcast_alert_msg
+ * - sink_5v_3a.data.alert_received is true
+ */
+ZTEST_F(usb_attach_5v_3a_pd_sink, verify_alert_msg)
+{
+ tcpci_snk_emul_clear_alert_received(&this->sink_5v_3a.data);
+ zassert_false(this->sink_5v_3a.data.alert_received, NULL);
+ zassert_equal(pd_broadcast_alert_msg(ADO_OTP_EVENT), EC_SUCCESS, NULL);
+
+ k_sleep(K_SECONDS(2));
+ zassert_true(this->sink_5v_3a.data.alert_received, NULL);
+}