profile.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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_PROFILE_H_
  11. #define _UECHO_PROFILE_H_
  12. #include <uecho/const.h>
  13. #include <uecho/object.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /****************************************
  18. * Profile
  19. ****************************************/
  20. uEchoObject* uecho_profile_new(void);
  21. /****************************************
  22. * Profile Object Super Class
  23. ****************************************/
  24. typedef enum {
  25. uEchoProfileFaultStatus = 0x88,
  26. uEchoProfileManufacturerCode = uEchoObjectManufacturerCode,
  27. uEchoProfilePlaceOfBusinessCode = 0x8B,
  28. uEchoProfileProductCode = 0x8C,
  29. uEchoProfileSerialNumber = 0x8D,
  30. uEchoProfileDateOfManufacture = 0x8E,
  31. uEchoProfileAnnoPropertyMap = uEchoObjectAnnoPropertyMap,
  32. uEchoProfileSetPropertyMap = uEchoObjectSetPropertyMap,
  33. uEchoProfileGetPropertyMap = uEchoObjectGetPropertyMap,
  34. } uEchoProfileEPC;
  35. enum {
  36. uEchoPropertyMapFormat1MaxSize = 15,
  37. uEchoPropertyMapFormat2MapSize = 16,
  38. uEchoPropertyMapFormat2Size = (uEchoPropertyMapFormat2MapSize + 1),
  39. uEchoPropertyMapFormatMaxSize = uEchoPropertyMapFormat2Size,
  40. };
  41. typedef enum {
  42. uEchoProfileFaultStatusLen = 1,
  43. uEchoProfileManufacturerCodeLen = uEchoObjectManufacturerCodeLen,
  44. uEchoProfilePlaceOfBusinessCodeLen = 3,
  45. uEchoProfileProductCodeLen = 12,
  46. uEchoProfileSerialNumberLen = 12,
  47. uEchoProfileDateOfManufactureLen = 4,
  48. uEchoProfileAnnoPropertyMapMaxLen = uEchoObjectAnnoPropertyMapMaxLen,
  49. uEchoProfileSetPropertyMapMaxLen = uEchoObjectSetPropertyMap,
  50. uEchoProfileGetPropertyMapMaxLen = uEchoObjectGetPropertyMap,
  51. } uEchoProfileEPCSize;
  52. enum {
  53. uEchoProfileFaultEncountered = 0x41,
  54. uEchoProfileNoFaultEncountered = 0x42
  55. };
  56. bool uecho_profile_addmandatoryproperties(uEchoObject* obj);
  57. bool uecho_profile_setmanufacturercode(uEchoObject* obj, uEchoObjectCode code);
  58. bool uecho_profile_getmanufacturercode(uEchoObject* obj);
  59. /****************************************
  60. * Node Profile Class
  61. ****************************************/
  62. enum {
  63. uEchoNodeProfileClassOperatingStatus = 0x80,
  64. uEchoNodeProfileClassVersionInformation = 0x82,
  65. uEchoNodeProfileClassIdentificationNumber = 0x83,
  66. uEchoNodeProfileClassFaultContent = 0x89,
  67. uEchoNodeProfileClassUniqueIdentifierData = 0xBF,
  68. uEchoNodeProfileClassNumberOfSelfNodeInstances = 0xD3,
  69. uEchoNodeProfileClassNumberOfSelfNodeClasses = 0xD4,
  70. uEchoNodeProfileClassInstanceListNotification = 0xD5,
  71. uEchoNodeProfileClassSelfNodeInstanceListS = 0xD6,
  72. uEchoNodeProfileClassSelfNodeClassListS = 0xD7,
  73. };
  74. enum {
  75. uEchoNodeProfileClassOperatingStatusLen = 1,
  76. uEchoNodeProfileClassVersionInformationLen = 4,
  77. uEchoNodeProfileClassIdentificationManufacturerCodeLen = 3,
  78. uEchoNodeProfileClassIdentificationUniqueIdLen = 13,
  79. uEchoNodeProfileClassIdentificationNumberLen = 1 + uEchoNodeProfileClassIdentificationManufacturerCodeLen + uEchoNodeProfileClassIdentificationUniqueIdLen,
  80. uEchoNodeProfileClassFaultContentLen = 2,
  81. uEchoNodeProfileClassUniqueIdentifierDataLen = 2,
  82. uEchoNodeProfileClassNumberOfSelfNodeInstancesLen = 3,
  83. uEchoNodeProfileClassNumberOfSelfNodeClassesLen = 2,
  84. uEchoNodeProfileClassSelfNodeInstanceListSMax = 0xFF,
  85. uEchoNodeProfileClassSelfNodeClassListSMax = 0xFF,
  86. uEchoNodeProfileClassInstanceListNotificationMax = uEchoNodeProfileClassSelfNodeInstanceListSMax,
  87. };
  88. enum {
  89. uEchoNodeProfileClassBooting = 0x30,
  90. uEchoNodeProfileClassNotBooting = 0x31,
  91. uEchoLowerCommunicationLayerProtocolType = 0xFE,
  92. };
  93. uEchoObject* uecho_nodeprofile_new(void);
  94. bool uecho_nodeprofile_addmandatoryproperties(uEchoObject* obj);
  95. bool uecho_nodeprofile_setoperatingstatus(uEchoObject* obj, bool stats);
  96. bool uecho_nodeprofile_setversion(uEchoObject* obj, int major_ver, int minor_ver);
  97. bool uecho_nodeprofile_setid(uEchoObject* obj, byte* man_code, byte* uniq_id);
  98. bool uecho_nodeprofile_setdefaultid(uEchoObject* obj);
  99. bool uecho_nodeprofile_setinstancecount(uEchoObject* obj, int count);
  100. bool uecho_nodeprofile_setclasscount(uEchoObject* obj, int count);
  101. bool uecho_nodeprofile_setinstancelist(uEchoObject* obj, int list_cnt, byte* list_bytes);
  102. bool uecho_nodeprofile_setclasslist(uEchoObject* obj, int list_cnt, byte* list_bytes);
  103. bool uecho_nodeprofile_isoperatingstatus(uEchoObject* obj);
  104. int uecho_nodeprofile_getinstancecount(uEchoObject* obj);
  105. int uecho_nodeprofile_getclasscount(uEchoObject* obj);
  106. byte* uecho_nodeprofile_getnotificationinstancelist(uEchoObject* obj);
  107. byte* uecho_nodeprofile_getinstancelist(uEchoObject* obj);
  108. byte* uecho_nodeprofile_getclasslist(uEchoObject* obj);
  109. bool uecho_nodeprofile_updateinstanceproperties(uEchoObject* obj);
  110. #ifdef __cplusplus
  111. } /* extern C */
  112. #endif
  113. #endif /* _UECHO_NODE_H_ */