diff options
author | Edward Hill <ecgh@chromium.org> | 2020-09-17 21:05:59 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-22 02:19:29 +0000 |
commit | d03abea4c36062f922182b95e046fc6817e98eec (patch) | |
tree | cb90c1fe95ca5660d4055e0663f58b1ead034c40 /common/mock | |
parent | 17838629321431d8248f3ade35993a9f21242477 (diff) | |
download | chrome-ec-d03abea4c36062f922182b95e046fc6817e98eec.tar.gz |
test: Add test_send_caps_error to usb_pe_drp
As requested in CL:2321869 review, make a new version of
test_send_caps_error that uses the external interface of the PE
layer.
BUG=b:161835483
BRANCH=none
TEST=make run-usb_pe_drp
Signed-off-by: Edward Hill <ecgh@chromium.org>
Change-Id: I983b145cd1e731e844363955896898a2374a0a30
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2419834
Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org>
Diffstat (limited to 'common/mock')
-rw-r--r-- | common/mock/usb_prl_mock.c | 75 | ||||
-rw-r--r-- | common/mock/usb_tc_sm_mock.c | 12 |
2 files changed, 66 insertions, 21 deletions
diff --git a/common/mock/usb_prl_mock.c b/common/mock/usb_prl_mock.c index 1e9c9c9576..b682e67f80 100644 --- a/common/mock/usb_prl_mock.c +++ b/common/mock/usb_prl_mock.c @@ -7,6 +7,7 @@ #include <string.h> #include "common.h" #include "usb_emsg.h" +#include "usb_pe_sm.h" #include "usb_prl_sm.h" #include "mock/usb_prl_mock.h" @@ -14,11 +15,28 @@ struct extended_msg rx_emsg[CONFIG_USB_PD_PORT_MAX_COUNT]; struct extended_msg tx_emsg[CONFIG_USB_PD_PORT_MAX_COUNT]; +struct mock_prl_port_t { + enum pd_ctrl_msg_type last_ctrl_msg; + enum pd_data_msg_type last_data_msg_type; + bool message_sent; + bool message_received; + int pe_error; +}; + +struct mock_prl_port_t mock_prl_port[CONFIG_USB_PD_PORT_MAX_COUNT]; + void mock_prl_reset(void) { + int port; + /* Reset all values to 0. */ memset(rx_emsg, 0, sizeof(rx_emsg)); memset(tx_emsg, 0, sizeof(tx_emsg)); + + memset(mock_prl_port, 0, sizeof(mock_prl_port)); + + for (port = 0 ; port < CONFIG_USB_PD_PORT_MAX_COUNT ; ++port) + mock_prl_port[port].pe_error = -1; } void prl_end_ams(int port) @@ -51,19 +69,16 @@ void prl_reset(int port) void prl_reset_soft(int port) {} -static enum pd_ctrl_msg_type last_ctrl_msg[CONFIG_USB_PD_PORT_MAX_COUNT]; -static enum pd_data_msg_type last_data_msg_type[CONFIG_USB_PD_PORT_MAX_COUNT]; - void prl_send_ctrl_msg(int port, enum tcpm_transmit_type type, enum pd_ctrl_msg_type msg) { - last_ctrl_msg[port] = msg; + mock_prl_port[port].last_ctrl_msg = msg; } void prl_send_data_msg(int port, enum tcpm_transmit_type type, enum pd_data_msg_type msg) { - last_data_msg_type[port] = msg; + mock_prl_port[port].last_data_msg_type = msg; } void prl_send_ext_data_msg(int port, enum tcpm_transmit_type type, @@ -77,20 +92,62 @@ void prl_set_rev(int port, enum tcpm_transmit_type partner, enum pd_ctrl_msg_type fake_prl_get_last_sent_ctrl_msg(int port) { - return last_ctrl_msg[port]; + enum pd_ctrl_msg_type last = mock_prl_port[port].last_ctrl_msg; + + fake_prl_clear_last_sent_ctrl_msg(port); + return last; } void fake_prl_clear_last_sent_ctrl_msg(int port) { - last_ctrl_msg[port] = 0; + mock_prl_port[port].last_ctrl_msg = 0; } enum pd_data_msg_type fake_prl_get_last_sent_data_msg_type(int port) { - return last_data_msg_type[port]; + enum pd_data_msg_type last = mock_prl_port[port].last_data_msg_type; + + fake_prl_clear_last_sent_data_msg(port); + return last; } void fake_prl_clear_last_sent_data_msg(int port) { - last_data_msg_type[port] = 0; + mock_prl_port[port].last_data_msg_type = 0; +} + +void fake_prl_message_sent(int port) +{ + mock_prl_port[port].message_sent = 1; +} + +void fake_prl_message_received(int port) +{ + mock_prl_port[port].message_received = 1; +} + +void fake_prl_report_error(int port, enum pe_error e) +{ + mock_prl_port[port].pe_error = e; +} + +void prl_run(int port, int evt, int en) +{ + if (mock_prl_port[port].message_sent) { + ccprints("message_sent"); + pe_message_sent(port); + mock_prl_port[port].message_sent = 0; + } + if (mock_prl_port[port].message_received) { + ccprints("message_received"); + pe_message_received(port); + mock_prl_port[port].message_received = 0; + } + if (mock_prl_port[port].pe_error >= 0) { + ccprints("pe_error %d", mock_prl_port[port].pe_error); + pe_report_error(port, + mock_prl_port[port].pe_error, + TCPC_TX_SOP); + mock_prl_port[port].pe_error = -1; + } } diff --git a/common/mock/usb_tc_sm_mock.c b/common/mock/usb_tc_sm_mock.c index aea8076f09..dfe8eeef48 100644 --- a/common/mock/usb_tc_sm_mock.c +++ b/common/mock/usb_tc_sm_mock.c @@ -24,8 +24,6 @@ void mock_tc_port_reset(void) for (port = 0 ; port < CONFIG_USB_PD_PORT_MAX_COUNT ; ++port) { mock_tc_port[port].rev = PD_REV30; mock_tc_port[port].pd_enable = 0; - mock_tc_port[port].power_role = PD_ROLE_SINK; - mock_tc_port[port].data_role = PD_ROLE_DISCONNECTED; mock_tc_port[port].msg_tx_id = 0; mock_tc_port[port].msg_rx_id = 0; mock_tc_port[port].sop = TCPC_TX_INVALID; @@ -77,16 +75,6 @@ int typec_update_cc(int port) return EC_SUCCESS; } -void tc_set_data_role(int port, enum pd_data_role role) -{ - mock_tc_port[port].data_role = role; -} - -void tc_set_power_role(int port, enum pd_power_role role) -{ - mock_tc_port[port].power_role = role; -} - int tc_check_vconn_swap(int port) { return 0; |