Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

413 строки
7.0 KiB

  1. /**
  2. *
  3. * \file
  4. *
  5. * \brief BSD compatible socket interface internal types.
  6. *
  7. * Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.
  8. *
  9. * \asf_license_start
  10. *
  11. * \page License
  12. *
  13. * Subject to your compliance with these terms, you may use Microchip
  14. * software and any derivatives exclusively with Microchip products.
  15. * It is your responsibility to comply with third party license terms applicable
  16. * to your use of third party software (including open source software) that
  17. * may accompany Microchip software.
  18. *
  19. * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
  20. * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
  21. * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
  22. * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
  23. * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
  24. * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
  25. * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
  26. * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
  27. * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
  28. * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
  29. * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
  30. *
  31. * \asf_license_stop
  32. *
  33. */
  34. #ifndef __M2M_SOCKET_HOST_IF_H__
  35. #define __M2M_SOCKET_HOST_IF_H__
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39. /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  40. INCLUDES
  41. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
  42. #ifndef _BOOT_
  43. #ifndef _FIRMWARE_
  44. #include "socket/include/socket.h"
  45. #else
  46. #include "driver/include/m2m_types.h"
  47. #endif
  48. #endif
  49. /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  50. MACROS
  51. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
  52. #ifdef _FIRMWARE_
  53. #define HOSTNAME_MAX_SIZE (100)
  54. #endif
  55. #define SSL_MAX_OPT_LEN HOSTNAME_MAX_SIZE
  56. #define SOCKET_CMD_INVALID 0x00
  57. /*!<
  58. Invlaid Socket command value.
  59. */
  60. #define SOCKET_CMD_BIND 0x41
  61. /*!<
  62. Socket Binding command value.
  63. */
  64. #define SOCKET_CMD_LISTEN 0x42
  65. /*!<
  66. Socket Listening command value.
  67. */
  68. #define SOCKET_CMD_ACCEPT 0x43
  69. /*!<
  70. Socket Accepting command value.
  71. */
  72. #define SOCKET_CMD_CONNECT 0x44
  73. /*!<
  74. Socket Connecting command value.
  75. */
  76. #define SOCKET_CMD_SEND 0x45
  77. /*!<
  78. Socket send command value.
  79. */
  80. #define SOCKET_CMD_RECV 0x46
  81. /*!<
  82. Socket Recieve command value.
  83. */
  84. #define SOCKET_CMD_SENDTO 0x47
  85. /*!<
  86. Socket sendTo command value.
  87. */
  88. #define SOCKET_CMD_RECVFROM 0x48
  89. /*!<
  90. Socket RecieveFrom command value.
  91. */
  92. #define SOCKET_CMD_CLOSE 0x49
  93. /*!<
  94. Socket Close command value.
  95. */
  96. #define SOCKET_CMD_DNS_RESOLVE 0x4A
  97. /*!<
  98. Socket DNS Resolve command value.
  99. */
  100. #define SOCKET_CMD_SSL_CONNECT 0x4B
  101. /*!<
  102. SSL-Socket Connect command value.
  103. */
  104. #define SOCKET_CMD_SSL_SEND 0x4C
  105. /*!<
  106. SSL-Socket Send command value.
  107. */
  108. #define SOCKET_CMD_SSL_RECV 0x4D
  109. /*!<
  110. SSL-Socket Recieve command value.
  111. */
  112. #define SOCKET_CMD_SSL_CLOSE 0x4E
  113. /*!<
  114. SSL-Socket Close command value.
  115. */
  116. #define SOCKET_CMD_SET_SOCKET_OPTION 0x4F
  117. /*!<
  118. Set Socket Option command value.
  119. */
  120. #define SOCKET_CMD_SSL_CREATE 0x50
  121. /*!<
  122. */
  123. #define SOCKET_CMD_SSL_SET_SOCK_OPT 0x51
  124. #define SOCKET_CMD_PING 0x52
  125. #define PING_ERR_SUCCESS 0
  126. #define PING_ERR_DEST_UNREACH 1
  127. #define PING_ERR_TIMEOUT 2
  128. /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  129. DATA TYPES
  130. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
  131. /*!
  132. * @brief
  133. */
  134. typedef struct{
  135. uint16 u16Family;
  136. uint16 u16Port;
  137. uint32 u32IPAddr;
  138. }tstrSockAddr;
  139. //typedef sint8 SOCKET;
  140. typedef tstrSockAddr tstrUIPSockAddr;
  141. /*!
  142. @struct \
  143. tstrDnsReply
  144. @brief
  145. DNS Reply, contains hostName and HostIP.
  146. */
  147. typedef struct{
  148. char acHostName[HOSTNAME_MAX_SIZE];
  149. uint32 u32HostIP;
  150. }tstrDnsReply;
  151. /*!
  152. @brief
  153. */
  154. typedef struct{
  155. tstrSockAddr strAddr;
  156. SOCKET sock;
  157. uint8 u8Void;
  158. uint16 u16SessionID;
  159. }tstrBindCmd;
  160. /*!
  161. @brief
  162. */
  163. typedef struct{
  164. SOCKET sock;
  165. sint8 s8Status;
  166. uint16 u16SessionID;
  167. }tstrBindReply;
  168. /*!
  169. * @brief
  170. */
  171. typedef struct{
  172. SOCKET sock;
  173. uint8 u8BackLog;
  174. uint16 u16SessionID;
  175. }tstrListenCmd;
  176. /*!
  177. @struct \
  178. tstrSocketRecvMsg
  179. @brief Socket recv status.
  180. It is passed to the APPSocketEventHandler with SOCKET_MSG_RECV or SOCKET_MSG_RECVFROM message type
  181. in a response to a user call to the recv or recvfrom.
  182. If the received data from the remote peer is larger than the USER Buffer size (given at recv call), the data is
  183. delivered to the user in a number of consecutive chunks according to the USER Buffer size.
  184. */
  185. typedef struct{
  186. SOCKET sock;
  187. sint8 s8Status;
  188. uint16 u16SessionID;
  189. }tstrListenReply;
  190. /*!
  191. * @brief
  192. */
  193. typedef struct{
  194. tstrSockAddr strAddr;
  195. SOCKET sListenSock;
  196. SOCKET sConnectedSock;
  197. uint16 u16Void;
  198. }tstrAcceptReply;
  199. /*!
  200. * @brief
  201. */
  202. typedef struct{
  203. tstrSockAddr strAddr;
  204. SOCKET sock;
  205. uint8 u8SslFlags;
  206. uint16 u16SessionID;
  207. }tstrConnectCmd;
  208. /*!
  209. @struct \
  210. tstrConnectReply
  211. @brief
  212. Connect Reply, contains sock number and error value
  213. */
  214. typedef struct{
  215. SOCKET sock;
  216. sint8 s8Error;
  217. uint16 u16AppDataOffset;
  218. /*!<
  219. In further packet send requests the host interface should put the user application
  220. data at this offset in the allocated shared data packet.
  221. */
  222. }tstrConnectReply;
  223. /*!
  224. @brief
  225. */
  226. typedef struct{
  227. SOCKET sock;
  228. uint8 u8Void;
  229. uint16 u16DataSize;
  230. tstrSockAddr strAddr;
  231. uint16 u16SessionID;
  232. uint16 u16Void;
  233. }tstrSendCmd;
  234. /*!
  235. @struct \
  236. tstrSendReply
  237. @brief
  238. Send Reply, contains socket number and number of sent bytes.
  239. */
  240. typedef struct{
  241. SOCKET sock;
  242. uint8 u8Void;
  243. sint16 s16SentBytes;
  244. uint16 u16SessionID;
  245. uint16 u16Void;
  246. }tstrSendReply;
  247. /*!
  248. * @brief
  249. */
  250. typedef struct{
  251. uint32 u32Timeoutmsec;
  252. SOCKET sock;
  253. uint8 u8Void;
  254. uint16 u16SessionID;
  255. uint16 u16BufLen;
  256. }tstrRecvCmd;
  257. /*!
  258. @struct \
  259. tstrRecvReply
  260. @brief
  261. */
  262. typedef struct{
  263. tstrSockAddr strRemoteAddr;
  264. sint16 s16RecvStatus;
  265. uint16 u16DataOffset;
  266. SOCKET sock;
  267. uint8 u8Void;
  268. uint16 u16SessionID;
  269. }tstrRecvReply;
  270. /*!
  271. * @brief
  272. */
  273. typedef struct{
  274. uint32 u32OptionValue;
  275. SOCKET sock;
  276. uint8 u8Option;
  277. uint16 u16SessionID;
  278. }tstrSetSocketOptCmd;
  279. typedef struct{
  280. SOCKET sslSock;
  281. uint8 __PAD24__[3];
  282. }tstrSSLSocketCreateCmd;
  283. /*!
  284. * @brief
  285. */
  286. typedef struct{
  287. SOCKET sock;
  288. uint8 u8Option;
  289. uint16 u16SessionID;
  290. uint32 u32OptLen;
  291. uint8 au8OptVal[SSL_MAX_OPT_LEN];
  292. }tstrSSLSetSockOptCmd;
  293. /*!
  294. */
  295. typedef struct{
  296. uint32 u32DestIPAddr;
  297. uint32 u32CmdPrivate;
  298. uint16 u16PingCount;
  299. uint8 u8TTL;
  300. uint8 __PAD8__;
  301. }tstrPingCmd;
  302. typedef struct{
  303. uint32 u32IPAddr;
  304. uint32 u32CmdPrivate;
  305. uint32 u32RTT;
  306. uint16 u16Success;
  307. uint16 u16Fail;
  308. uint8 u8ErrorCode;
  309. uint8 __PAD24__[3];
  310. }tstrPingReply;
  311. #ifdef __cplusplus
  312. }
  313. #endif /* __cplusplus */
  314. #endif /* __M2M_SOCKET_HOST_IF_H__ */