From 360cd1e784ec441ffc2c82882185d3b6bdf3306f Mon Sep 17 00:00:00 2001 From: Joshua Jeyaraj <33477216+JoshuaJeyaraj@users.noreply.github.com> Date: Wed, 10 Oct 2018 15:53:48 +0530 Subject: [PATCH] UT for subsytem GPP --- firmware/ec/src/subsystem/gpp/ebmp.c | 13 +- firmware/ec/src/subsystem/gpp/gpp.c | 25 ++ firmware/ec/test/Makefile | 4 + firmware/ec/test/inc/test_subsys_gpp.h | 23 ++ firmware/ec/test/stub/stub_Clock.c | 18 ++ firmware/ec/test/stub/stub_Semaphore.c | 28 ++ firmware/ec/test/stub/stub_Task.c | 41 +++ .../test/suites/Doc/TestCaseList_subsys.xlsx | Bin 0 -> 11335 bytes firmware/ec/test/suites/Test_subsys_gpp.c | 257 ++++++++++++++++++ 9 files changed, 404 insertions(+), 5 deletions(-) create mode 100644 firmware/ec/test/inc/test_subsys_gpp.h create mode 100644 firmware/ec/test/stub/stub_Clock.c create mode 100644 firmware/ec/test/stub/stub_Semaphore.c create mode 100644 firmware/ec/test/stub/stub_Task.c create mode 100644 firmware/ec/test/suites/Doc/TestCaseList_subsys.xlsx create mode 100644 firmware/ec/test/suites/Test_subsys_gpp.c diff --git a/firmware/ec/src/subsystem/gpp/ebmp.c b/firmware/ec/src/subsystem/gpp/ebmp.c index 6622239ddd..e3afea4684 100644 --- a/firmware/ec/src/subsystem/gpp/ebmp.c +++ b/firmware/ec/src/subsystem/gpp/ebmp.c @@ -234,12 +234,15 @@ static void ebmp_handle_irq(void *context) { *****************************************************************************/ void ebmp_init(Gpp_gpioCfg *driver) { - pin_ap_boot_alert1 = &driver->pin_ap_boot_alert1; - pin_ap_boot_alert2 = &driver->pin_ap_boot_alert2; - pin_soc_pltrst_n = &driver->pin_soc_pltrst_n; - pin_soc_corepwr_ok = &driver->pin_soc_corepwr_ok; + pin_ap_boot_alert1 = &driver->pin_ap_boot_alert1; + pin_ap_boot_alert2 = &driver->pin_ap_boot_alert2; + pin_soc_pltrst_n = &driver->pin_soc_pltrst_n; + pin_soc_corepwr_ok = &driver->pin_soc_corepwr_ok; - if (pin_ap_boot_alert1->port) { + if (!driver) { + return; + } + if (pin_ap_boot_alert1->port) { const uint32_t pin_evt_cfg = OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES; if (OcGpio_configure(pin_ap_boot_alert1, pin_evt_cfg) < OCGPIO_SUCCESS) { return RETURN_NOTOK; diff --git a/firmware/ec/src/subsystem/gpp/gpp.c b/firmware/ec/src/subsystem/gpp/gpp.c index d493856d4c..6fc9facdcb 100644 --- a/firmware/ec/src/subsystem/gpp/gpp.c +++ b/firmware/ec/src/subsystem/gpp/gpp.c @@ -33,6 +33,9 @@ bool gpp_check_processor_reset(Gpp_gpioCfg *driver) { bool ret = false; + if (!driver) { + return ret; + } if (OcGpio_read(&driver->pin_soc_pltrst_n)) { ret = true; } @@ -42,6 +45,9 @@ bool gpp_check_processor_reset(Gpp_gpioCfg *driver) bool gpp_check_core_power(Gpp_gpioCfg *driver) { bool ret = false; + if (!driver) { + return ret; + } if (OcGpio_read(&driver->pin_soc_corepwr_ok)) { ret = true; } @@ -52,6 +58,9 @@ bool gpp_pmic_control(Gpp_gpioCfg *driver, uint8_t control) { bool ret = false; + if (!driver) { + return ret; + } if(control == OC_PMIC_ENABLE) { /*TODO:: Disabling for USB debugging*/ @@ -85,6 +94,9 @@ bool gpp_pmic_control(Gpp_gpioCfg *driver, uint8_t control) bool gpp_msata_das(Gpp_gpioCfg *driver) { bool ret = false; + if (!driver) { + return ret; + } if (!(OcGpio_read(&driver->pin_msata_ec_das))) { ret = true; LOGGER_DEBUG("GPP:INFO:: mSATA is active.\n"); @@ -95,6 +107,9 @@ bool gpp_msata_das(Gpp_gpioCfg *driver) bool gpp_pwrgd_protection(Gpp_gpioCfg *driver) { bool ret = false; + if (!driver) { + return ret; + } if (OcGpio_read(&driver->pin_lt4256_ec_pwrgd)) { ret = true; } @@ -106,6 +121,9 @@ bool gpp_pwrgd_protection(Gpp_gpioCfg *driver) *****************************************************************************/ bool gpp_pre_init(void* driver, void *returnValue) { + if(!driver) { + return false; + } Gpp_gpioCfg *gpioCfg = (Gpp_gpioCfg *)driver; OcGpio_configure(&gpioCfg->pin_soc_pltrst_n, OCGPIO_CFG_INPUT); OcGpio_configure(&gpioCfg->pin_soc_corepwr_ok, OCGPIO_CFG_INPUT); @@ -124,6 +142,10 @@ bool gpp_pre_init(void* driver, void *returnValue) bool gpp_post_init(void* driver, void *ssState) { bool ret = false; + + if(!(driver && ssState)) { + return ret; + } eSubSystemStates *newState = (eSubSystemStates*)ssState; if (!gpp_pwrgd_protection(driver)) { LOGGER_DEBUG("GPP:INFO:: LT4256 EC power good is for genration of 12V ok.\n"); @@ -151,6 +173,9 @@ bool gpp_post_init(void* driver, void *ssState) *****************************************************************************/ static bool gpp_ap_reset(Gpp_gpioCfg *driver) { + if(!driver) { + return false; + } const OcGpio_Pin *pin = &(driver->pin_ec_reset_to_proc); if (OcGpio_write(pin, OC_GBC_PROC_RESET) < OCGPIO_SUCCESS) { return false; diff --git a/firmware/ec/test/Makefile b/firmware/ec/test/Makefile index 177bc66e4a..a3d349b447 100644 --- a/firmware/ec/test/Makefile +++ b/firmware/ec/test/Makefile @@ -146,6 +146,10 @@ TEST_OCGPIO_SRC=$(OCWARE_ROOT)/src/drivers/OcGpio.c $(OCWARE_ROOT)/src/devices/i $(PATHB)Test_OcGpio$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCGPIO_SRC) $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@ +TEST_SUBSYS_GPP_SRC=$(OCWARE_ROOT)/src/subsystem/gpp/ebmp.c $(OCWARE_ROOT)/src/subsystem/gpp/gpp.c $(OCWARE_ROOT)/src/drivers/OcGpio.c fake/fake_GPIO.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/helpers/memory.c stub/stub_GateMutex.c stub/stub_Task.c stub/stub_Clock.c stub/stub_Semaphore.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_gbc.c +$(PATHB)Test_subsys_gpp$(TARGET_EXTENSION): $(STD_FILES) $(TEST_SUBSYS_GPP_SRC) + $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@ + # Dummy target to allow us to force rebuild of testresults every time FORCE: diff --git a/firmware/ec/test/inc/test_subsys_gpp.h b/firmware/ec/test/inc/test_subsys_gpp.h new file mode 100644 index 0000000000..f4b792d711 --- /dev/null +++ b/firmware/ec/test/inc/test_subsys_gpp.h @@ -0,0 +1,23 @@ +/** +* Copyright (c) 2017-present, Facebook, Inc. +* All rights reserved. +* +* This source code is licensed under the BSD-style license found in the +* LICENSE file in the root directory of this source tree. An additional grant +* of patent rights can be found in the PATENTS file in the same directory. +*/ + +static OcGpio_Port ec_io = { + .fn_table = &FakeGpio_fnTable, + .object_data = &(FakeGpio_Obj){}, +}; + +static bool gpp_GpioPins[] = { + [1] = 0x1, /* Pin = 1 */ + [115] = 0x1, +}; + +static uint32_t gpp_GpioConfig[] = { + [1] = OCGPIO_CFG_INPUT, + [115] = OCGPIO_CFG_INPUT, +}; \ No newline at end of file diff --git a/firmware/ec/test/stub/stub_Clock.c b/firmware/ec/test/stub/stub_Clock.c new file mode 100644 index 0000000000..e401de536c --- /dev/null +++ b/firmware/ec/test/stub/stub_Clock.c @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#include +#include "unity.h" + +xdc_Void ti_sysbios_knl_Clock_stop__E( ti_sysbios_knl_Clock_Handle __inst ) +{ + TEST_ASSERT(__inst); + return; +} + diff --git a/firmware/ec/test/stub/stub_Semaphore.c b/firmware/ec/test/stub/stub_Semaphore.c new file mode 100644 index 0000000000..dbb313ec4f --- /dev/null +++ b/firmware/ec/test/stub/stub_Semaphore.c @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#include +#include "unity.h" + +xdc_Void ti_sysbios_knl_Semaphore_post__E( ti_sysbios_knl_Semaphore_Handle __inst ) +{ + return; +} + +ti_sysbios_knl_Semaphore_Handle ti_sysbios_knl_Semaphore_create( xdc_Int count, + const ti_sysbios_knl_Semaphore_Params *__prms, + xdc_runtime_Error_Block *__eb ) +{ + return(ti_sysbios_knl_Semaphore_Handle)1; +} + +xdc_Bool ti_sysbios_knl_Semaphore_pend__E( ti_sysbios_knl_Semaphore_Handle __inst, xdc_UInt32 timeout ) +{ + return(1); +} diff --git a/firmware/ec/test/stub/stub_Task.c b/firmware/ec/test/stub/stub_Task.c new file mode 100644 index 0000000000..fece0422ba --- /dev/null +++ b/firmware/ec/test/stub/stub_Task.c @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#include +#include +#include "unity.h" +uint8_t taskCreated = false; +uint8_t taskInit = false; + +void ti_sysbios_knl_Task_construct( ti_sysbios_knl_Task_Struct *__obj, ti_sysbios_knl_Task_FuncPtr fxn, + const ti_sysbios_knl_Task_Params *__prms, xdc_runtime_Error_Block *__eb ) +{ + TEST_ASSERT(__obj); + TEST_ASSERT(fxn); + TEST_ASSERT(__prms); + TEST_ASSERT_TRUE((__prms->stackSize > 0)); + TEST_ASSERT_TRUE((__prms->priority > 0)); + TEST_ASSERT_TRUE((__prms->stack)); + TEST_ASSERT_TRUE(taskInit); + + /* check for this in the test suite to indicate task is created */ + taskCreated = true; + + /* Reset */ + taskInit = false; + return; +} + +xdc_Void ti_sysbios_knl_Task_Params__init__S( xdc_Ptr dst, const xdc_Void *src, xdc_SizeT psz, xdc_SizeT isz ) +{ + TEST_ASSERT(dst); + /* Init is done now task can be created */ + taskInit = true; + return; +} diff --git a/firmware/ec/test/suites/Doc/TestCaseList_subsys.xlsx b/firmware/ec/test/suites/Doc/TestCaseList_subsys.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f5df797e45bf16250d35f975d87406067e473436 GIT binary patch literal 11335 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 UZFB(un72>Bo7b+P{_WTQ0}6u!rT_o{ literal 0 HcmV?d00001 diff --git a/firmware/ec/test/suites/Test_subsys_gpp.c b/firmware/ec/test/suites/Test_subsys_gpp.c new file mode 100644 index 0000000000..304a2e7b14 --- /dev/null +++ b/firmware/ec/test/suites/Test_subsys_gpp.c @@ -0,0 +1,257 @@ +#include "inc/subsystem/gpp/gpp.h" +#include "inc/subsystem/gpp/ebmp.h" +#include "fake/fake_GPIO.h" +#include "fake/fake_I2C.h" +#include +#include "unity.h" +/* ======================== Constants & variables =========================== */ +uint8_t apUp = 1; +extern uint8_t taskCreated; + +#define OC_PMIC_ENABLE (1) +#define OC_PMIC_DISABLE (0) + +extern Gpp_gpioCfg gbc_gpp_gpioCfg; +OcGpio_Port ec_io = { + .fn_table = &FakeGpio_fnTable, + .object_data = &(FakeGpio_Obj){}, +}; + +static bool gpp_GpioPins[] = { + [1] = 0x1, /* Pin = 1 */ + [115] = 0x1, +}; + +static uint32_t gpp_GpioConfig[] = { + [1] = OCGPIO_CFG_INPUT, + [115] = OCGPIO_CFG_INPUT, +}; + +extern int apState; + +/* ============================= Boilerplate ================================ */ +#include +unsigned int s_task_sleep_ticks; +xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks ) +{ + s_task_sleep_ticks += nticks; +} +void SysCtlDelay(uint32_t ui32Count) +{ + +} + +void suite_setUp(void) +{ + FakeGpio_registerDevSimple(gpp_GpioPins, gpp_GpioConfig); +} + +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +void suite_tearDown(void) +{ +} + +/* ================================ Tests =================================== */ +void test_gpp_check_processor_reset(void) +{ + gpp_GpioPins[57] = 1; + TEST_ASSERT_TRUE(gpp_check_processor_reset(&gbc_gpp_gpioCfg)); + gpp_GpioPins[57] = 0; + TEST_ASSERT_FALSE(gpp_check_processor_reset(&gbc_gpp_gpioCfg)); +} + +void test_gpp_check_core_power(void) +{ + gpp_GpioPins[56] = 1; + TEST_ASSERT_TRUE(gpp_check_core_power(&gbc_gpp_gpioCfg)); + gpp_GpioPins[56] = 0; + TEST_ASSERT_FALSE(gpp_check_core_power(&gbc_gpp_gpioCfg)); +} + +void test_gpp_pmic_control(void) +{ + /* ENABLE */ + gpp_GpioPins[57] = 1; + gpp_GpioPins[56] = 1; + gpp_GpioPins[58] = 0; + TEST_ASSERT_TRUE(gpp_pmic_control(&gbc_gpp_gpioCfg, OC_PMIC_ENABLE)); + TEST_ASSERT_EQUAL(OC_PMIC_ENABLE, gpp_GpioPins[58]); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[35], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[83], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[57], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + + /* DISABLE */ + gpp_GpioPins[58] = 1; + TEST_ASSERT_TRUE(gpp_pmic_control(&gbc_gpp_gpioCfg, OC_PMIC_DISABLE)); + TEST_ASSERT_EQUAL(OC_PMIC_DISABLE, gpp_GpioPins[58]); + + /* Invalid pin cases */ + gpp_GpioPins[57] = 0; + gpp_GpioPins[56] = 1; + TEST_ASSERT_FALSE(gpp_pmic_control(&gbc_gpp_gpioCfg, OC_PMIC_ENABLE)); + + gpp_GpioPins[57] = 1; + gpp_GpioPins[56] = 0; + TEST_ASSERT_FALSE(gpp_pmic_control(&gbc_gpp_gpioCfg, OC_PMIC_ENABLE)); + + gpp_GpioPins[57] = 0; + gpp_GpioPins[56] = 0; + TEST_ASSERT_FALSE(gpp_pmic_control(&gbc_gpp_gpioCfg, OC_PMIC_ENABLE)); + + /* Invalid status cases */ + gpp_GpioPins[57] = 1; + gpp_GpioPins[56] = 1; + TEST_ASSERT_FALSE(gpp_pmic_control(&gbc_gpp_gpioCfg, -1)); + TEST_ASSERT_FALSE(gpp_pmic_control(&gbc_gpp_gpioCfg, 2)); + TEST_ASSERT_FALSE(gpp_pmic_control(NULL, OC_PMIC_ENABLE)); +} + +void test_gpp_msata_das(void) +{ + gpp_GpioPins[113] = 0; + TEST_ASSERT_TRUE(gpp_msata_das(&gbc_gpp_gpioCfg)); + gpp_GpioPins[113] = 1; + TEST_ASSERT_FALSE(gpp_msata_das(&gbc_gpp_gpioCfg)); + TEST_ASSERT_FALSE(gpp_msata_das(NULL)); +} + +void test_gpp_pwrgd_protection(void) +{ + gpp_GpioPins[107] = 1; + TEST_ASSERT_TRUE(gpp_pwrgd_protection(&gbc_gpp_gpioCfg)); + gpp_GpioPins[107] = 0; + TEST_ASSERT_FALSE(gpp_pwrgd_protection(&gbc_gpp_gpioCfg)); + TEST_ASSERT_FALSE(gpp_pwrgd_protection(NULL)); +} + +void test_gpp_pre_init(void) +{ + gpp_GpioConfig[57] = 0; + gpp_GpioConfig[56] = 0; + gpp_GpioConfig[113] = 0; + gpp_GpioConfig[107] = 0; + gpp_GpioConfig[58] = 0; + gpp_GpioConfig[115] = 0; + + TEST_ASSERT_TRUE(gpp_pre_init(&gbc_gpp_gpioCfg, NULL)); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[57], OCGPIO_CFG_INPUT); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[56], OCGPIO_CFG_INPUT); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[113], OCGPIO_CFG_INPUT); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[107], OCGPIO_CFG_INPUT); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[58], OCGPIO_CFG_OUTPUT | + OCGPIO_CFG_OUT_LOW); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[115], OCGPIO_CFG_OUTPUT | + OCGPIO_CFG_OUT_HIGH); +} + +void test_gpp_post_init(void) +{ + eSubSystemStates state; + gpp_GpioPins[57] = 1; + gpp_GpioPins[56] = 1; + gpp_GpioPins[58] = 0; + gpp_GpioPins[107] = 0; + TEST_ASSERT_TRUE(gpp_post_init(&gbc_gpp_gpioCfg, &state)); + TEST_ASSERT_EQUAL_HEX8(state, SS_STATE_CFG); + + gpp_GpioPins[107] = 1; + TEST_ASSERT_FALSE(gpp_post_init(&gbc_gpp_gpioCfg, &state)); + TEST_ASSERT_EQUAL_HEX8(state, SS_STATE_FAULTY); + + gpp_GpioPins[107] = 0; + gpp_GpioPins[57] = 0; + gpp_GpioPins[56] = 1; + TEST_ASSERT_FALSE(gpp_post_init(&gbc_gpp_gpioCfg, &state)); + TEST_ASSERT_EQUAL_HEX8(state, SS_STATE_FAULTY); + TEST_ASSERT_FALSE(gpp_post_init(NULL, &state)); + TEST_ASSERT_FALSE(gpp_post_init(&gbc_gpp_gpioCfg, NULL)); +} + +void test_GPP_ap_Reset() +{ + gpp_GpioPins[115] = 0; + + TEST_ASSERT_TRUE(GPP_ap_Reset(&gbc_gpp_gpioCfg, NULL)); + TEST_ASSERT_EQUAL_HEX8(1, gpp_GpioPins[115]); + TEST_ASSERT_FALSE(GPP_ap_Reset(NULL, NULL)); + + //TODO: #489 GpioNative_write is successful for Input pins +} + +void test_ebmp_create_task(void) +{ + /* + * Assertions checks are added in the create task RTOS system call + */ + taskCreated = false; + ebmp_create_task(); + TEST_ASSERT_TRUE(taskCreated); +} + +void test_ebmp_init(void) +{ + gpp_GpioConfig[35] = 0; + gpp_GpioConfig[83] = 0; + gpp_GpioConfig[57] = 0; + + ebmp_init(&gbc_gpp_gpioCfg); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[35], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[83], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + TEST_ASSERT_EQUAL_HEX8(gpp_GpioConfig[57], OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES); + ebmp_init(NULL); +} + +void test_ebmp_check_stages(void) +{ + ebmp_init(&gbc_gpp_gpioCfg); + gpp_GpioPins[35] = 0; + gpp_GpioPins[83] = 0; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T1, apState); + + gpp_GpioPins[35] = 1; + gpp_GpioPins[83] = 0; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T2, apState); + + gpp_GpioPins[35] = 1; + gpp_GpioPins[83] = 1; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T3, apState); + + gpp_GpioPins[35] = 0; + gpp_GpioPins[83] = 1; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T4, apState); + + gpp_GpioPins[35] = 0; + gpp_GpioPins[83] = 0; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T5, apState); + + gpp_GpioPins[35] = 1; + gpp_GpioPins[83] = 0; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T6, apState); + + gpp_GpioPins[35] = 1; + gpp_GpioPins[83] = 1; + ebmp_check_boot_pin_status(); + TEST_ASSERT_EQUAL_HEX8(STATE_T7, apState); + + gpp_GpioPins[57] = 1; + ebmp_check_soc_plt_reset(); + TEST_ASSERT_EQUAL_HEX8(STATE_T0, apState); + + gpp_GpioPins[56] = 0; + gpp_GpioPins[57] = 0; + ebmp_check_soc_plt_reset(); + TEST_ASSERT_EQUAL_HEX8(STATE_INVALID, apState); +} \ No newline at end of file