event-test.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "test_common.h"
  2. TEST_START
  3. extern PikaEventListener* g_pika_device_event_listener;
  4. #if PIKA_EVENT_ENABLE
  5. TEST(event, gpio) {
  6. /* init */
  7. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  8. /* run */
  9. pikaVM_runSingleFile(pikaMain, "../../examples/TemplateDevice/gpio_cb.py");
  10. #define EVENT_SIGAL_IO_RISING_EDGE 0x01
  11. #define EVENT_SIGAL_IO_FALLING_EDGE 0x02
  12. #define GPIO_PA8_EVENT_ID 0x08
  13. /* simulate run in the call back */
  14. pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
  15. EVENT_SIGAL_IO_RISING_EDGE);
  16. pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
  17. EVENT_SIGAL_IO_FALLING_EDGE);
  18. /* assert */
  19. obj_run(pikaMain, "io1.eventTest()");
  20. EXPECT_STREQ(log_buff[3], "get rising edge!\r\n");
  21. EXPECT_STREQ(log_buff[2], "get falling edge!\r\n");
  22. EXPECT_STREQ(log_buff[1], "get rising edge!\r\n");
  23. EXPECT_STREQ(log_buff[0], "get falling edge!\r\n");
  24. for (int i = 0; i < 255; i++) {
  25. obj_run(pikaMain, "io1.eventTest()");
  26. }
  27. /* simulate run in the call back */
  28. Arg* res_123 = pks_eventLisener_sendSignalAwaitResult(
  29. g_pika_device_event_listener, GPIO_PA8_EVENT_ID, 123);
  30. Arg* res_456 = pks_eventLisener_sendSignalAwaitResult(
  31. g_pika_device_event_listener, GPIO_PA8_EVENT_ID, 456);
  32. EXPECT_EQ(arg_getInt(res_123), 123);
  33. EXPECT_EQ(arg_getInt(res_456), 456);
  34. /* deinit */
  35. obj_deinit(pikaMain);
  36. EXPECT_EQ(pikaMemNow(), 0);
  37. }
  38. TEST(event, remove_regist) {
  39. /* init */
  40. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  41. /* run */
  42. pks_eventLisener_init(&g_pika_device_event_listener);
  43. PikaObj* testobj = newNormalObj(New_TinyObj);
  44. pks_eventLicener_registEvent(g_pika_device_event_listener, 0, testobj);
  45. EXPECT_EQ(testobj->refcnt, 2);
  46. pks_eventLicener_removeEvent(g_pika_device_event_listener, 0);
  47. EXPECT_EQ(testobj->refcnt, 1);
  48. /* deinit */
  49. obj_deinit(pikaMain);
  50. obj_deinit(testobj);
  51. pks_eventLisener_deinit(&g_pika_device_event_listener);
  52. EXPECT_EQ(pikaMemNow(), 0);
  53. }
  54. #endif
  55. TEST_END