joylink_thunder.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #ifndef _JOYLINK_THUNEDER_H_
  2. #define _JOYLINK_THUNEDER_H_
  3. #define THUNDER_SLAVE_SUPPORT 1
  4. #define THUNDER_MASTER_SUPPORT 1
  5. #include "joylink_syshdr.h"
  6. #define JOY_THUNDER_VERSION "JOYL_V1.0"
  7. #define JOY_MEGIC_HEADER "JOY"
  8. #define JOY_OUI_TYPE 0
  9. #define JOY_PACKET_HEADER_LEN 8
  10. #define JOY_MAC_ADDRESS_LEN 6
  11. #define JOY_CLA_ENCRYPT 1<<7 //
  12. #define JOY_CLA_DECRYPT 0
  13. #define JOY_CLA_UPLINK 0
  14. #define JOY_CLA_DOWNLINK 1<<6
  15. #define JOY_CLA_FIRSTPACKET 0
  16. #define JOY_CLA_RESENDPACKET 1<<5
  17. typedef enum
  18. {
  19. TLV_TAG_MSG = 0x00,
  20. TLV_TAG_THUNDERCONFIG_VERSION,
  21. TLV_TAG_CID,
  22. TLV_TAG_VENDOR,
  23. TLV_TAG_UUID,
  24. TLV_TAG_MAC,
  25. TLV_TAG_SN,
  26. TLV_TAG_WIFI_CHANNEL,
  27. TLV_TAG_RANDOM,
  28. TLV_TAG_SIGNATURE,
  29. TLV_TAG_PUBKEY,
  30. TLV_TAG_PRIKEY,
  31. TLV_TAG_SSID,
  32. TLV_TAG_PASSWD,
  33. TLV_TAG_FEEDID,
  34. TLV_TAG_ACKEY,
  35. TLV_TAG_DEVICE_TOKEN,
  36. TLV_TAG_DEVICE_ID,
  37. TLV_TAG_DEVICE_INFO,
  38. TLV_TAG_CLOUD_SERVER
  39. } tc_tlv_tag_t;
  40. typedef enum
  41. {
  42. INS_V1_BASE = 0x40,
  43. INS_CONFIG_REQ,//1.d2g.0
  44. INS_LOCK_CHANNEL,//1.g2d.1
  45. INS_LOCK_CHANNEL_ACK,//1.d2g.2
  46. INS_AUTH_ALLOWED,//1.g2d.7
  47. INS_CHALLENGE_CLOUD,//2.d2g.0
  48. INS_CHALLENGE_CLOUD_ACK,//2.g2d.5
  49. INS_CHALLENGE_DEVICE_ACK,//3.d2g.0
  50. INS_AUTH_INFO_A,//4.g2d.a.5
  51. INS_AUTH_INFO_B,//4.g2d.b.5
  52. INS_CONNECT_AP_ACK,//x.d2g.0
  53. INS_DEVICE_BIND_REQ,//5.d2g.0
  54. INS_DEVICE_BIND_ACK,//5.g2d.3
  55. } tc_ins_t;
  56. typedef enum
  57. {
  58. MSG_OK = 0x00,
  59. MSG_ERROR_REQ_DENIED, //헝헹앳없
  60. MSG_ERROR_TIMEOUT, //낚珂
  61. MSG_ERROR_VERIFY_FAILED, //훰聯呵겨
  62. MSG_ERROR_UNKNOWN = 0Xff//灌列댄轎
  63. } tc_msg_value_t;
  64. typedef enum{
  65. joy_cla_firstpacket,
  66. joy_cla_resendpacket
  67. }tc_cla_type_t;
  68. typedef enum{
  69. packet_init = 0,
  70. packet_resend
  71. }tc_packet_type_t;
  72. typedef struct tc_package {
  73. uint8_t oui_type;
  74. uint8_t magic[3];
  75. uint8_t cla;
  76. uint8_t ins;
  77. uint8_t p1;
  78. uint8_t p2;
  79. uint8_t lc;
  80. uint8_t *data;
  81. uint16_t crc;
  82. }tc_package_t;
  83. typedef struct{
  84. uint8_t *value;
  85. uint8_t length;
  86. }deviceid_t;
  87. typedef struct{
  88. uint8_t *value;
  89. uint8_t length;
  90. }deviceinfo_t;
  91. typedef struct{
  92. uint8_t *value;
  93. uint8_t length;
  94. }tc_vl_t;
  95. typedef struct{
  96. uint8_t *value;
  97. uint8_t length;
  98. }tc_random_t;
  99. typedef struct{
  100. uint8_t *value;
  101. uint8_t length;
  102. }tc_sig_t;
  103. typedef struct{
  104. uint8_t *value;
  105. uint8_t length;
  106. }tc_pubkey_t;
  107. #endif