blob: f8f6adfc4feb560890182e6871e72ab3ef63ac35 [file] [log] [blame]
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "test_aio.h"
static int cb_cnt;
static void callback(void *param)
{
cb_cnt++;
}
static void set_aio_callback(int polarity, int disable)
{
struct device *aio_dev = device_get_binding(AIO_CMP_DEV_NAME);
struct device *gpio_dev = device_get_binding(GPIO_DEV_NAME);
gpio_pin_configure(gpio_dev, PIN_OUT, GPIO_DIR_OUT);
/* config AIN callback */
assert_true(aio_cmp_configure(aio_dev, PIN_IN,
polarity, AIO_CMP_REF_A,
callback, (void *)aio_dev) == 0,
"ERROR registering callback");
if (disable == 1) {
aio_cmp_disable(aio_dev, PIN_IN);
}
/* update the AIN input to trigger state */
gpio_pin_write(gpio_dev, PIN_OUT,
(polarity == AIO_CMP_POL_RISE) ? 0 : 1);
k_sleep(100);
cb_cnt = 0;
gpio_pin_write(gpio_dev, PIN_OUT,
(polarity == AIO_CMP_POL_RISE) ? 1 : 0);
k_sleep(1000);
TC_PRINT("... cb_cnt = %d\n", cb_cnt);
}
/* export test cases */
void test_aio_callback_rise(void)
{
set_aio_callback(AIO_CMP_POL_RISE, 0);
assert_true(cb_cnt == 1, "callback is not invoked correctly");
}
void test_aio_callback_rise_disable(void)
{
set_aio_callback(AIO_CMP_POL_RISE, 1);
assert_true(cb_cnt == 0, "callback is not invoked correctly");
}