TestDevice.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /************************************************************
  2. *
  3. * uEcho for C
  4. *
  5. * Copyright (C) Satoshi Konno 2015
  6. *
  7. * This is licensed under BSD-style license, see file COPYING.
  8. *
  9. ************************************************************/
  10. #include "TestDevice.h"
  11. #undef UECHO_TEST_VERBOSE
  12. void uecho_test_printrequest(uEchoMessage* msg)
  13. {
  14. uEchoProperty* prop;
  15. size_t opc, n;
  16. opc = uecho_message_getopc(msg);
  17. printf("%s %2X %2X %04X %06X %06X %02X %ld ",
  18. uecho_message_getsourceaddress(msg),
  19. uecho_message_getehd1(msg),
  20. uecho_message_getehd2(msg),
  21. uecho_message_gettid(msg),
  22. uecho_message_getsourceobjectcode(msg),
  23. uecho_message_getdestinationobjectcode(msg),
  24. uecho_message_getesv(msg),
  25. opc);
  26. for (n = 0; n < opc; n++) {
  27. prop = uecho_message_getproperty(msg, n);
  28. printf("%02X(%ld)", uecho_property_getcode(prop), uecho_property_getdatasize(prop));
  29. }
  30. printf("\n");
  31. }
  32. void uecho_test_object_messagelitener(uEchoObject* obj, uEchoMessage* msg)
  33. {
  34. #if defined(UECHO_TEST_VERBOSE)
  35. uecho_test_printrequest(msg);
  36. #endif
  37. }
  38. bool uecho_test_property_requesthandler(uEchoObject* obj, uEchoProperty* prop, uEchoEsv esv, size_t pdc, byte* edt)
  39. {
  40. #if defined(UECHO_TEST_VERBOSE)
  41. byte status;
  42. printf("%02X %02X (%d)\n",
  43. esv,
  44. uecho_property_getcode(prop),
  45. pdc);
  46. #endif
  47. if (pdc != 1)
  48. return false;
  49. #if defined(UECHO_TEST_VERBOSE)
  50. status = edt[0];
  51. switch (status) {
  52. case UECHO_TEST_PROPERTY_SWITCH_ON:
  53. printf("POWER = %02X\n", status);
  54. break;
  55. case UECHO_TEST_PROPERTY_SWITCH_OFF:
  56. printf("POWER = %02X\n", status);
  57. break;
  58. }
  59. #endif
  60. return true;
  61. }
  62. uEchoObject* uecho_test_createtestdevice()
  63. {
  64. uEchoObject* obj = uecho_device_new();
  65. uecho_object_setmanufacturercode(obj, UECHO_TEST_MANCODE);
  66. uecho_object_setcode(obj, UECHO_TEST_OBJECTCODE);
  67. byte prop[32];
  68. // Operation status property
  69. uecho_object_setproperty(obj, UECHO_TEST_PROPERTY_SWITCHCODE, uEchoPropertyAttrReadWrite);
  70. prop[0] = UECHO_TEST_PROPERTY_SWITCH_ON;
  71. uecho_object_setpropertydata(obj, UECHO_TEST_PROPERTY_SWITCHCODE, prop, 1);
  72. // Set object listner
  73. uecho_object_setmessagelistener(obj, uecho_test_object_messagelitener);
  74. // Set property observer
  75. uecho_object_setpropertywriterequesthandler(obj, UECHO_TEST_PROPERTY_SWITCHCODE, uecho_test_property_requesthandler);
  76. return obj;
  77. }
  78. uEchoNode* uecho_test_createtestnode()
  79. {
  80. uEchoNode* node = uecho_node_new();
  81. uEchoObject* dev = uecho_test_createtestdevice();
  82. uecho_node_addobject(node, dev);
  83. return node;
  84. }