12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include <atomic>
- #include "kbf.h"
- #include "kbf/gpio.h"
- #include <unity.h>
- // TODO use Kconfig
- #define INPUT_PIN 27
- #define INPUT_PIN_2 34
- #define OUTPUT_PIN 13
- using namespace std;
- using namespace kbf;
- static atomic<int> counter = {0};
- TEST_CASE("GPIO", "[kbf_gpio]") {
- auto input = new gpio::Input(INPUT_PIN);
- auto notUsed = new gpio::Input(INPUT_PIN_2);
- TEST_ASSERT_TRUE(notUsed->isLow())
- auto output = gpio::Output(OUTPUT_PIN);
- TEST_ASSERT_EQUAL(OUTPUT_PIN, output.pin);
- kbf::sleep(100);
- TEST_ASSERT_EQUAL(0, counter);
- output.high();
- kbf::sleep(100);
- TEST_ASSERT_EQUAL(0, counter);
- output.low();
- kbf::sleep(100);
- TEST_ASSERT_EQUAL(0, counter);
- input->onLow = {[](gpio::Input &input) {
- TEST_ASSERT_EQUAL(INPUT_PIN, input.pin);
- counter += 1;
- }};
- input->onHigh = {[](gpio::Input &input) {
- TEST_ASSERT_EQUAL(INPUT_PIN, input.pin);
- counter += 100;
- }};
- output.high();
- kbf::sleep(20);
- TEST_ASSERT_EQUAL(100, counter);
- kbf::sleep(300);
- TEST_ASSERT_EQUAL(100, counter);
- output.low();
- kbf::sleep(20);
- TEST_ASSERT_EQUAL(101, counter);
- kbf::sleep(300);
- TEST_ASSERT_EQUAL(101, counter);
- delete input;
- output.high();
- kbf::sleep(20);
- TEST_ASSERT_EQUAL(101, counter);
- output.low();
- kbf::sleep(20);
- TEST_ASSERT_EQUAL(101, counter);
- }
|