object.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. #ifndef _UECHO_OBJECT_H_
  11. #define _UECHO_OBJECT_H_
  12. #include <uecho/manufacture.h>
  13. #include <uecho/message.h>
  14. #include <uecho/property.h>
  15. #include <uecho/typedef.h>
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. /****************************************
  20. * Constant
  21. ****************************************/
  22. enum {
  23. uEchoObjectCodeMin = 0x000000,
  24. uEchoObjectCodeMax = 0xFFFFFF,
  25. uEchoObjectCodeUnknown = uEchoObjectCodeMin,
  26. };
  27. enum {
  28. uEchoNodeProfileObject = 0x0EF001,
  29. uEchoNodeProfileObjectReadOnly = 0x0EF002,
  30. };
  31. /****************************************
  32. * Data Type
  33. ****************************************/
  34. typedef int uEchoObjectCode;
  35. #if !defined(_UECHO_OBJECT_INTERNAL_H_)
  36. typedef void uEchoObject;
  37. #endif
  38. typedef void (*uEchoObjectMessageListener)(uEchoObject*, uEchoMessage*);
  39. typedef bool (*uEchoPropertyRequestHandler)(uEchoObject*, uEchoProperty*, uEchoEsv, size_t, byte*);
  40. /****************************************
  41. * Function (Object)
  42. ****************************************/
  43. uEchoObject* uecho_object_new(void);
  44. bool uecho_object_delete(uEchoObject* obj);
  45. uEchoObject* uecho_object_next(uEchoObject* obj);
  46. void uecho_object_setname(uEchoObject* obj, const char* name);
  47. const char* uecho_object_getname(uEchoObject* obj);
  48. void uecho_object_setcode(uEchoObject* obj, uEchoObjectCode code);
  49. uEchoObjectCode uecho_object_getcode(uEchoObject* obj);
  50. bool uecho_object_iscode(uEchoObject* obj, uEchoObjectCode code);
  51. bool uecho_object_start(uEchoObject* obj);
  52. bool uecho_object_stop(uEchoObject* obj);
  53. bool uecho_object_isrunning(uEchoObject* obj);
  54. void uecho_object_setgroupcode(uEchoObject* obj, byte val);
  55. byte uecho_object_getgroupcode(uEchoObject* obj);
  56. void uecho_object_setclasscode(uEchoObject* obj, byte val);
  57. byte uecho_object_getclasscode(uEchoObject* obj);
  58. void uecho_object_setinstancecode(uEchoObject* obj, byte val);
  59. byte uecho_object_getinstancecode(uEchoObject* obj);
  60. bool uecho_object_isdevice(uEchoObject* obj);
  61. bool uecho_object_isprofile(uEchoObject* obj);
  62. bool uecho_object_addproperty(uEchoObject* obj, uEchoProperty* prop);
  63. bool uecho_object_setproperty(uEchoObject* obj, uEchoPropertyCode code, uEchoPropertyAttr attr);
  64. bool uecho_object_setpropertydata(uEchoObject* obj, uEchoPropertyCode code, byte* data, size_t data_len);
  65. bool uecho_object_setpropertyintegerdata(uEchoObject* obj, uEchoPropertyCode code, int data, size_t data_len);
  66. bool uecho_object_setpropertybytedata(uEchoObject* obj, uEchoPropertyCode code, byte data);
  67. bool uecho_object_setpropertyattribute(uEchoObject* obj, uEchoPropertyCode code, uEchoPropertyAttr attr);
  68. uEchoProperty* uecho_object_getproperties(uEchoObject* obj);
  69. uEchoProperty* uecho_object_getproperty(uEchoObject* obj, uEchoPropertyCode code);
  70. int uecho_object_getpropertydatasize(uEchoObject* obj, uEchoPropertyCode code);
  71. byte* uecho_object_getpropertydata(uEchoObject* obj, uEchoPropertyCode code);
  72. bool uecho_object_getpropertyintegerdata(uEchoObject* obj, uEchoPropertyCode code, int* data);
  73. bool uecho_object_getpropertybytedata(uEchoObject* obj, uEchoPropertyCode code, byte* data);
  74. bool uecho_object_hasproperty(uEchoObject* obj, uEchoPropertyCode code);
  75. size_t uecho_object_getpropertycount(uEchoObject* obj);
  76. void uecho_object_clearproperties(uEchoObject* obj);
  77. void uecho_object_setmessagelistener(uEchoObject* obj, uEchoObjectMessageListener listener);
  78. bool uecho_object_setpropertyrequesthandler(uEchoObject* obj, uEchoEsv esv, uEchoPropertyCode code, uEchoPropertyRequestHandler handler);
  79. bool uecho_object_setpropertywriterequesthandler(uEchoObject* obj, uEchoPropertyCode code, uEchoPropertyRequestHandler handler);
  80. bool uecho_object_setpropertyreadhandler(uEchoObject* obj, uEchoPropertyCode code, uEchoPropertyRequestHandler handler);
  81. bool uecho_object_announcemessage(uEchoObject* obj, uEchoMessage* msg);
  82. bool uecho_object_sendmessage(uEchoObject* obj, uEchoMessage* msg);
  83. /****************************************
  84. * Object Super Class
  85. ****************************************/
  86. typedef enum {
  87. uEchoObjectManufacturerCode = 0x8A,
  88. uEchoObjectAnnoPropertyMap = 0x9D,
  89. uEchoObjectSetPropertyMap = 0x9E,
  90. uEchoObjectGetPropertyMap = 0x9F,
  91. } uEchoObjectEPC;
  92. typedef enum {
  93. uEchoObjectManufacturerCodeLen = 3,
  94. uEchoObjectPropertyMapMaxLen = 16,
  95. uEchoObjectAnnoPropertyMapMaxLen = (uEchoObjectPropertyMapMaxLen + 1),
  96. uEchoObjectSetPropertyMapMaxLen = (uEchoObjectPropertyMapMaxLen + 1),
  97. uEchoObjectGetPropertyMapMaxLen = (uEchoObjectPropertyMapMaxLen + 1),
  98. } uEchoObjectEPCSize;
  99. enum {
  100. uEchoManufactureCodeDefault = uEchoManufactureCodeTestMin,
  101. };
  102. bool uecho_object_setmanufacturercode(uEchoObject* obj, uEchoManufactureCode code);
  103. uEchoManufactureCode uecho_object_getmanufacturercode(uEchoObject* obj);
  104. /****************************************
  105. * Function (Property)
  106. ****************************************/
  107. uEchoObject* uecho_property_getparentobject(uEchoProperty* prop);
  108. #ifdef __cplusplus
  109. } /* extern C */
  110. #endif
  111. #endif /* _UECHO_OBJECT_H_ */