hilink_device.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
  3. * Description: HiLink产品适配头文件
  4. * Notes: 该文件中的接口需要对外提供给第三方厂商使用,为了前向兼容,部分老接口暂不按最新编码规范整改.
  5. */
  6. #ifndef HILINK_DEVICE_H
  7. #define HILINK_DEVICE_H
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /* 设备版本信息 */
  12. #define FIRMWARE_VER "1.0.0"
  13. #define SOFTWARE_VER "1.0.0"
  14. #define HARDWARE_VER "1.0.0"
  15. /* 设备产品信息 */
  16. #define PRODUCT_ID "1011"
  17. #define DEVICE_TYPE "01D"
  18. #define MANUAFACTURER "011"
  19. #define DEVICE_MODEL "SP mini3-HL"
  20. /* 请确保设备类型英文名和厂商英文名长度之和不超过17字节 */
  21. #define DEVICE_TYPE_NAME "Switch"
  22. #define MANUAFACTURER_NAME "Broadlink"
  23. /* 通信协议类型: WiFi */
  24. #define PROTOCOL_TYPE 1
  25. /* HiLink SDK 通知厂商模组重启原因 */
  26. #define HILINK_REBOOT_WATCHDOG 0
  27. #define HILINK_REBOOT_DEVDELETE 1
  28. /* 设备与云端连接断开(版本向前兼容) */
  29. #define HILINK_M2M_CLOUD_OFFLINE 0
  30. /* 设备连接云端成功,处于正常工作态(版本向前兼容) */
  31. #define HILINK_M2M_CLOUD_ONLINE 1
  32. /* 设备与云端连接长时间断开(版本向前兼容) */
  33. #define HILINK_M2M_LONG_OFFLINE 2
  34. /* 设备与云端连接长时间断开后进行重启(版本向前兼容) */
  35. #define HILINK_M2M_LONG_OFFLINE_REBOOT 3
  36. /* HiLink线程未启动 */
  37. #define HILINK_UNINITIALIZED 4
  38. /* 设备处于配网模式 */
  39. #define HILINK_LINK_UNDER_AUTO_CONFIG 5
  40. /* 设备处于10分钟超时状态 */
  41. #define HILINK_LINK_CONFIG_TIMEOUT 6
  42. /* 设备正在连接路由器 */
  43. #define HILINK_LINK_CONNECTTING_WIFI 7
  44. /* 设备已经连上路由器 */
  45. #define HILINK_LINK_CONNECTED_WIFI 8
  46. /* 设备正在连接云端 */
  47. #define HILINK_M2M_CONNECTTING_CLOUD 9
  48. /* 设备与路由器的连接断开 */
  49. #define HILINK_M2M_CLOUD_DISCONNECT 10
  50. /* 设备被注册 */
  51. #define HILINK_DEVICE_REGISTERED 11
  52. /* 设备被解绑 */
  53. #define HILINK_DEVICE_UNREGISTER 12
  54. /* 设备复位标记置位 */
  55. #define HILINK_REVOKE_FLAG_SET 13
  56. /* 设备协商注册信息失败 */
  57. #define HILINK_NEGO_REG_INFO_FAIL 14
  58. /* 设备序列号最大长度 */
  59. #define MAX_SN_LENGTH 40
  60. /* 获取BI 参数接口函数 */
  61. char *hilink_get_auto_bi_rsa_cipher(void);
  62. /* 获取AC 参数接口函数 */
  63. unsigned char *hilink_get_auto_ac(void);
  64. /*
  65. * 修改服务当前字段值
  66. * svcId为服务的ID,payload为接收到需要修改的Json格式的字段与其值,len为payload的长度
  67. * 返回0表示服务状态值修改成功,不需要底层设备主动上报,由HiLink SDK上报;
  68. * 返回-101表示获得报文不符合要求;
  69. * 返回-111表示服务状态值正在修改中,修改成功后底层设备必须主动上报;
  70. */
  71. int hilink_put_char_state(const char *svcId, const char *payload, unsigned int len);
  72. /*
  73. * 获取服务字段值
  74. * svcId表示服务ID。厂商实现该函数时,需要对svcId进行判断;
  75. * in表示接收到的Json格式的字段与其值;
  76. * inLen表示接收到的in的长度;
  77. * out表示保存服务字段值内容的指针,内存由厂商开辟,使用完成后,由Hilink Device SDK释放;
  78. * outLen表示读取到的payload的长度;
  79. * 返回0表示服务状态字段值获取成功,返回非0表示获取服务状态字段值不成功。
  80. */
  81. int hilink_get_char_state(const char *svcId, const char *in, unsigned int inLen, char **out, unsigned int *outLen);
  82. /*
  83. * 获取设备sn号
  84. * 参数len表示sn的最大长度,39字节
  85. * 参数sn表示设备sn
  86. * sn指向的字符串长度为0时将使用设备mac地址作为sn
  87. */
  88. void HilinkGetDeviceSn(unsigned int len, char *sn);
  89. /*
  90. * 获取设备相关版本号
  91. * 返回0表示版本号获取成功,返回其他表示版本号获取失败
  92. * 注意,此接口为HiLink内部调用函数
  93. */
  94. int getDeviceVersion(char **firmwareVer, char **softwareVer, char **hardwareVer);
  95. /*
  96. * 获取SoftAp配网PIN码
  97. * 返回值为8位数字PIN码, 返回-1表示使用HiLink SDK的默认PIN码
  98. * 该接口需设备开发者实现
  99. */
  100. int HiLinkGetPinCode(void);
  101. /*
  102. * 查询当前设备敏感性标识
  103. * 返回0为非敏感设备,返回1为敏感设备
  104. */
  105. int HILINK_IsSensitiveDevice(void);
  106. /*
  107. * 通知设备的状态
  108. * status表示设备当前的状态
  109. * 注意,此函数由设备厂商根据产品业务选择性实现
  110. */
  111. void hilink_notify_devstatus(int status);
  112. /*
  113. * 实现模组重启前的设备操作
  114. * flag为0表示HiLink SDK 线程看门狗触发模组重启; 为1表示APP删除设备触发模组重启
  115. * 返回0表示处理成功, 系统可以重启,使用硬重启; 返回1表示处理成功, 系统可以重启,使用软重启;
  116. * 返回负值表示处理失败, 系统不能重启
  117. * 注意,此函数由设备厂商实现;若APP删除设备触发模组重启时,设备操作完务必返回0,否则会导致删除设备异常
  118. */
  119. int hilink_process_before_restart(int flag);
  120. /*
  121. * 获取设备故障码,并通知APP
  122. * status表示是否发送故障,0表示不发送,1表示发送;code表示故障码
  123. * 返回0表示成功,返回非0失败
  124. */
  125. int get_faultDetection_state(int *status, int *code);
  126. #ifdef __cplusplus
  127. }
  128. #endif
  129. #endif