joylink_agent.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #ifndef __JD_AGENT_H_
  2. #define __JD_AGENT_H_
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #ifdef __cplusplus
  7. extern "C"{
  8. #endif /* __cplusplus */
  9. #include "joylink.h"
  10. #include <sys/ioctl.h>
  11. #include <sys/socket.h>
  12. #include <netinet/in.h>
  13. #include <net/if.h>
  14. #pragma pack(1)
  15. /************** APP -> AGENT GW ************/
  16. typedef struct {
  17. char feedid[JL_MAX_FEEDID_LEN];
  18. char accesskey[33];
  19. }AgentDevAdd_t;
  20. typedef struct {
  21. char feedid[JL_MAX_FEEDID_LEN];
  22. }AgentDevDel_t;
  23. /************** AGENT GW -> Cloud ************/
  24. typedef struct {
  25. int devs_len;
  26. unsigned int timestamp;
  27. char* devs;
  28. }AgentAuthReq_t;
  29. typedef struct {
  30. unsigned int timestamp;
  31. int code;
  32. char error_devs[];
  33. }AgentAuthRsp_t;
  34. typedef struct {
  35. int devs_len;
  36. unsigned int timestamp;
  37. char* devs;
  38. }AgentHBReq_t;
  39. typedef struct {
  40. unsigned int timestamp;
  41. int code;
  42. }AgentHBRsp_t;
  43. typedef struct {
  44. int snaps_len;
  45. unsigned int timestamp;
  46. char* snaps;
  47. }AgentSnapsReq_t;
  48. typedef struct {
  49. unsigned int timestamp;
  50. int code;
  51. }AgentSnapsRsp_t;
  52. /************** Cloud -> Agent GW ************/
  53. #pragma pack()
  54. typedef struct {
  55. int32_t fd;
  56. int32_t st;
  57. char accesskey[JL_MAX_ACKEY_LEN];
  58. char sessionkey[JL_MAX_SESSION_KEY_LEN];
  59. char feedid[JL_MAX_FEEDID_LEN];
  60. JLHearBeat_t hb;
  61. char *snap;
  62. int32_t snap_len;
  63. char auth[16];
  64. int32_t random;
  65. int agent_st;
  66. }AgentDev_t;
  67. #define JL_AGENT_GW_PORT (33000)
  68. #define JL_AGENT_GW_CLIENT_MAX (20)
  69. #define IS_AGENT_AUTH_SET(agent_st) (agent_st & 0x01)
  70. #define IS_AGENT_HB_SET(agent_st) (agent_st & 0x02)
  71. #define IS_AGENT_SNAP_SET(agent_st) (agent_st & 0x04)
  72. #define ST_AGENT_AUTH_SET(agent_st) (agent_st = agent_st | 0x00000001)
  73. #define ST_AGENT_HB_SET(agent_st) (agent_st = agent_st | 0x02)
  74. #define ST_AGENT_SNAP_SET(agent_st) (agent_st = agent_st | 0x04)
  75. #define ST_AGENT_AUTH_CLR(agent_st) (agent_st = agent_st & (~0x01))
  76. #define ST_AGENT_HB_CLR(agent_st) (agent_st = agent_st & (~0x02))
  77. #define ST_AGENT_SNAP_CLR(agent_st) (agent_st = agent_st & (~0x04))
  78. /********* funs ***********/
  79. /**
  80. * brief:
  81. *
  82. * @Param: fd
  83. * @Param: src
  84. * @Param: len
  85. *
  86. * @Returns:
  87. */
  88. E_JLRetCode_t
  89. joylink_agent_cloud_auth_hand(int32_t fd, uint8_t *src, int32_t len);
  90. /**
  91. * brief:
  92. *
  93. * @Param: src
  94. * @Param: sin_recv
  95. * @Param: addrlen
  96. *
  97. * @Returns:
  98. */
  99. E_JLRetCode_t
  100. joylink_agent_proc_dev_add(uint8_t *src, struct sockaddr_in *sin_recv, socklen_t addrlen);
  101. /**
  102. * brief:
  103. *
  104. * @Param: src
  105. * @Param: sin_recv
  106. * @Param: addrlen
  107. *
  108. * @Returns:
  109. */
  110. E_JLRetCode_t
  111. joylink_agent_proc_dev_del(uint8_t *src, struct sockaddr_in *sin_recv, socklen_t addrlen);
  112. /**
  113. * brief:
  114. *
  115. * @Param: src
  116. * @Param: sin_recv
  117. * @Param: addrlen
  118. *
  119. * @Returns:
  120. */
  121. E_JLRetCode_t
  122. joylink_agent_proc_get_dev_list(uint8_t *src, struct sockaddr_in *sin_recv, socklen_t addrlen);
  123. /**
  124. * brief:
  125. *
  126. * @Param: fd
  127. * @Param: payload
  128. * @Param: s_len
  129. *
  130. * @Returns:
  131. */
  132. E_JLRetCode_t
  133. joylink_agent_dev_cloud_ota_up_hand(int32_t fd,
  134. uint8_t *payload,
  135. int32_t s_len);
  136. #ifdef __cplusplus
  137. }
  138. #endif /* __cplusplus */
  139. #endif