obex_const.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:11k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /**
  2. file openobex/obex_const.h
  3. OpenOBEX library - Free implementation of the Object Exchange protocol.
  4. Copyright (C) 1999-2000  Dag Brattli <dagb@cs.uit.no>
  5. Copyright (C) 1999-2000  Pontus Fuchs <pontus.fuchs@tactel.se>
  6. Copyright (C) 2001-2002  Jean Tourrilhes <jt@hpl.hp.com>
  7. Copyright (C) 2002-2006  Marcel Holtmann <marcel@holtmann.org>
  8. Copyright (C) 2002-2008  Christian W. Zuckschwerdt <zany@triq.net>
  9. Copyright (C) 2002  Dmitry Kasatkin <dmitry.kasatkin@nokia.com>
  10. Copyright (C) 2005  Herton Ronaldo Krzesinski <herton@conectiva.com.br>
  11. Copyright (C) 2005-2008  Alex Kanavin <ak@sensi.org>
  12. Copyright (C) 2006  Johan Hedberg <johan.hedberg@nokia.com>
  13. Copyright (C) 2007-2008  Hendrik Sattler <post@hendrik-sattler.de>
  14. OpenOBEX is free software; you can redistribute it and/or modify
  15. it under the terms of the GNU Lesser General Public License as
  16. published by the Free Software Foundation; either version 2.1 of
  17. the License, or (at your option) any later version.
  18. This program is distributed in the hope that it will be useful,
  19. but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. GNU Lesser General Public License for more details.
  22. You should have received a copy of the GNU Lesser General Public
  23. License along with OpenOBEX. If not, see <http://www.gnu.org/>.
  24.  */
  25. #ifndef __OBEX_CONST_H
  26. #define __OBEX_CONST_H
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. #include <inttypes.h>
  31. typedef union {
  32. uint32_t bq4;
  33. uint8_t bq1;
  34. const uint8_t *bs;
  35. } obex_headerdata_t;
  36. typedef struct {
  37. int (*connect)(obex_t *handle, void * customdata);
  38. int (*disconnect)(obex_t *handle, void * customdata);
  39. int (*listen)(obex_t *handle, void * customdata);
  40. int (*write)(obex_t *handle, void * customdata, uint8_t *buf, int buflen);
  41. int (*handleinput)(obex_t *handle, void * customdata, int timeout);
  42. void * customdata;
  43. } obex_ctrans_t;
  44. /** USB-specific OBEX service information
  45.  * provided by optional Service Identification Functional Descriptor
  46.  * (CDC WMC specification section 6.5.2.5)
  47.  */
  48. typedef struct {
  49. /** Role bit mask: bit 0 is set if client, unset if server */
  50. uint8_t role;
  51. /** Service UUID */
  52. uint8_t uuid[16];
  53. /** Service version */
  54. uint16_t version;
  55. /** Set if the service provides/expects
  56.  *  an OBEX Default Server (spec section 6.5.2.5.2) */
  57. int is_default_uuid;
  58. } obex_usb_intf_service_t;
  59. /** USB-specific OBEX interface information */
  60. typedef struct {
  61. /** Manufacturer, e.g. Nokia */
  62. char *manufacturer;
  63. /** Product, e.g. Nokia 6680 */
  64. char *product;
  65. /** Product serial number */
  66. char *serial;
  67. /** USB device configuration description */
  68. char *configuration;
  69. /** Control interface description */
  70. char *control_interface;
  71. /** Idle data interface description, typically empty */
  72. char *data_interface_idle;
  73. /** Active data interface description, typically empty */
  74. char *data_interface_active;
  75. /** Service information descriptor, may be NULL if absent */
  76. obex_usb_intf_service_t *service;
  77. /** Internal information for the transport layer in the library */
  78. struct obex_usb_intf_transport_t *intf;
  79. } obex_usb_intf_t;
  80. /** Generic OBEX interface information */
  81. typedef union {
  82. /** USB-specific OBEX interface information */
  83. obex_usb_intf_t usb;
  84. //obex_bluetooth_intf_t bt; // to be added
  85. } obex_interface_t;
  86. #define OBEX_MODE_CLIENT 0
  87. #define OBEX_MODE_SERVER 1
  88. /* compatibility definitions */
  89. #define OBEX_CLIENT OBEX_MODE_CLIENT
  90. #define OBEX_SERVER OBEX_MODE_SERVER
  91. /* Possible events */
  92. #define OBEX_EV_PROGRESS 0 /* Progress has been made */
  93. #define OBEX_EV_REQHINT 1 /* An incoming request is about to come */
  94. #define OBEX_EV_REQ 2 /* An incoming request has arrived */
  95. #define OBEX_EV_REQDONE 3 /* Request has finished */
  96. #define OBEX_EV_LINKERR 4 /* Link has been disconnected */
  97. #define OBEX_EV_PARSEERR 5 /* Malformed data encountered */
  98. #define OBEX_EV_ACCEPTHINT 6 /* Connection accepted */
  99. #define OBEX_EV_ABORT 7 /* Request was aborted */
  100. #define OBEX_EV_STREAMEMPTY 8 /* Need to feed more data when sending a stream */
  101. #define OBEX_EV_STREAMAVAIL 9 /* Time to pick up data when receiving a stream */
  102. #define OBEX_EV_UNEXPECTED 10 /* Unexpected data, not fatal */
  103. #define OBEX_EV_REQCHECK 11 /* First packet of an incoming request has been parsed */
  104. /* For OBEX_Init() */
  105. #define OBEX_FL_KEEPSERVER 0x02 /* Keep the server alive */
  106. #define OBEX_FL_FILTERHINT 0x04 /* Filter devices based on hint bit */
  107. #define OBEX_FL_FILTERIAS 0x08 /* Filter devices based on IAS entry */
  108. /* For OBEX_ObjectAddHeader */
  109. #define OBEX_FL_FIT_ONE_PACKET 0x01 /* This header must fit in one packet */
  110. #define OBEX_FL_STREAM_START 0x02 /* Start of streaming body */
  111. #define OBEX_FL_STREAM_DATA 0x04 /* Body-stream data */
  112. #define OBEX_FL_STREAM_DATAEND 0x08 /* Body stream last data */
  113. #define OBEX_FL_SUSPEND 0x10 /* Suspend after sending this header */
  114. /* Transports */
  115. #define OBEX_TRANS_IRDA 1
  116. #define OBEX_TRANS_INET 2
  117. #define OBEX_TRANS_CUST 3 /* Fixme: This will go away in future */
  118. #define OBEX_TRANS_CUSTOM 3
  119. #define OBEX_TRANS_BLUETOOTH 4
  120. #define OBEX_TRANS_FD 5
  121. #define OBEX_TRANS_USB 6
  122. /* Standard headers */
  123. #define OBEX_HDR_TYPE_UNICODE (0 << 6)  /* zero terminated unicode string (network byte order) */
  124. #define OBEX_HDR_TYPE_BYTES (1 << 6)  /* byte array */
  125. #define OBEX_HDR_TYPE_UINT8 (2 << 6)  /* 8bit unsigned integer */
  126. #define OBEX_HDR_TYPE_UINT32 (3 << 6)  /* 32bit unsigned integer */
  127. #define OBEX_HDR_TYPE_MASK 0xc0
  128. #define OBEX_HDR_ID_COUNT  0x00 /* Number of objects (used by connect) */
  129. #define OBEX_HDR_ID_NAME  0x01 /* Name of the object */
  130. #define OBEX_HDR_ID_TYPE  0x02 /* Type of the object */
  131. #define OBEX_HDR_ID_LENGTH  0x03 /* Total length of object */
  132. #define OBEX_HDR_ID_TIME  0x04 /* Last modification time of (ISO8601) */
  133. #define OBEX_HDR_ID_DESCRIPTION  0x05 /* Description of object */
  134. #define OBEX_HDR_ID_TARGET  0x06 /* Identifies the target for the object */
  135. #define OBEX_HDR_ID_HTTP  0x07 /* An HTTP 1.x header */
  136. #define OBEX_HDR_ID_BODY  0x08 /* Data part of the object */
  137. #define OBEX_HDR_ID_BODY_END  0x09 /* Last data part of the object */
  138. #define OBEX_HDR_ID_WHO  0x0a /* Identifies the sender of the object */
  139. #define OBEX_HDR_ID_CONNECTION  0x0b /* Connection identifier */
  140. #define OBEX_HDR_ID_APPARAM  0x0c /* Application parameters */
  141. #define OBEX_HDR_ID_AUTHCHAL  0x0d /* Authentication challenge */
  142. #define OBEX_HDR_ID_AUTHRESP  0x0e /* Authentication response */
  143. #define OBEX_HDR_ID_CREATOR  0x0f /* indicates the creator of an object */
  144. #define OBEX_HDR_ID_WANUUID  0x10 /* uniquely identifies the network client (OBEX server) */
  145. #define OBEX_HDR_ID_OBJECTCLASS  0x11 /* OBEX Object class of object */
  146. #define OBEX_HDR_ID_SESSIONPARAM 0x12 /* Parameters used in session commands/responses */
  147. #define OBEX_HDR_ID_SESSIONSEQ  0x13 /* Sequence number used in each OBEX packet for reliability */
  148. #define OBEX_HDR_ID_MASK  0x3f
  149. #define OBEX_HDR_EMPTY 0x00 /* Empty header (buggy OBEX servers) */
  150. #define OBEX_HDR_COUNT (OBEX_HDR_ID_COUNT        | OBEX_HDR_TYPE_UINT32 )
  151. #define OBEX_HDR_NAME (OBEX_HDR_ID_NAME         | OBEX_HDR_TYPE_UNICODE)
  152. #define OBEX_HDR_TYPE (OBEX_HDR_ID_TYPE         | OBEX_HDR_TYPE_BYTES  )
  153. #define OBEX_HDR_LENGTH (OBEX_HDR_ID_LENGTH       | OBEX_HDR_TYPE_UINT32 )
  154. #define OBEX_HDR_TIME (OBEX_HDR_ID_TIME         | OBEX_HDR_TYPE_BYTES  ) /* Format: ISO 8601 */
  155. #define OBEX_HDR_TIME2 (OBEX_HDR_ID_TIME         | OBEX_HDR_TYPE_UINT32 ) /* Deprecated use HDR_TIME instead */
  156. #define OBEX_HDR_DESCRIPTION (OBEX_HDR_ID_DESCRIPTION  | OBEX_HDR_TYPE_UNICODE)
  157. #define OBEX_HDR_TARGET (OBEX_HDR_ID_TARGET       | OBEX_HDR_TYPE_BYTES  )
  158. #define OBEX_HDR_HTTP (OBEX_HDR_ID_HTTP         | OBEX_HDR_TYPE_BYTES  )
  159. #define OBEX_HDR_BODY (OBEX_HDR_ID_BODY         | OBEX_HDR_TYPE_BYTES  )
  160. #define OBEX_HDR_BODY_END (OBEX_HDR_ID_BODY_END     | OBEX_HDR_TYPE_BYTES  )
  161. #define OBEX_HDR_WHO (OBEX_HDR_ID_WHO          | OBEX_HDR_TYPE_BYTES  )
  162. #define OBEX_HDR_CONNECTION (OBEX_HDR_ID_CONNECTION   | OBEX_HDR_TYPE_UINT32 )
  163. #define OBEX_HDR_APPARAM (OBEX_HDR_ID_APPARAM      | OBEX_HDR_TYPE_BYTES  )
  164. #define OBEX_HDR_AUTHCHAL (OBEX_HDR_ID_AUTHCHAL     | OBEX_HDR_TYPE_BYTES  )
  165. #define OBEX_HDR_AUTHRESP (OBEX_HDR_ID_AUTHRESP     | OBEX_HDR_TYPE_BYTES  )
  166. #define OBEX_HDR_CREATOR (OBEX_HDR_ID_CREATOR      | OBEX_HDR_TYPE_BYTES  )
  167. #define OBEX_HDR_WANUUID (OBEX_HDR_ID_WANUUID      | OBEX_HDR_TYPE_BYTES  )
  168. #define OBEX_HDR_OBJECTCLASS (OBEX_HDR_ID_OBJECTCLASS  | OBEX_HDR_TYPE_BYTES  )
  169. #define OBEX_HDR_SESSIONPARAM (OBEX_HDR_ID_SESSIONPARAM | OBEX_HDR_TYPE_BYTES  )
  170. #define OBEX_HDR_SESSIONSEQ (OBEX_HDR_ID_SESSIONSEQ   | OBEX_HDR_TYPE_UINT8  )
  171. /* Commands */
  172. #define OBEX_CMD_CONNECT 0x00
  173. #define OBEX_CMD_DISCONNECT 0x01
  174. #define OBEX_CMD_PUT 0x02
  175. #define OBEX_CMD_GET 0x03
  176. #define OBEX_CMD_SETPATH 0x05
  177. #define OBEX_CMD_SESSION 0x07 /* used for reliable session support */
  178. #define OBEX_CMD_ABORT 0x7f
  179. #define OBEX_FINAL 0x80
  180. /* Responses */
  181. #define OBEX_RSP_CONTINUE 0x10
  182. #define OBEX_RSP_SWITCH_PRO 0x11
  183. #define OBEX_RSP_SUCCESS 0x20
  184. #define OBEX_RSP_CREATED 0x21
  185. #define OBEX_RSP_ACCEPTED 0x22
  186. #define OBEX_RSP_NON_AUTHORITATIVE 0x23
  187. #define OBEX_RSP_NO_CONTENT 0x24
  188. #define OBEX_RSP_RESET_CONTENT 0x25
  189. #define OBEX_RSP_PARTIAL_CONTENT        0x26
  190. #define OBEX_RSP_MULTIPLE_CHOICES 0x30
  191. #define OBEX_RSP_MOVED_PERMANENTLY 0x31
  192. #define OBEX_RSP_MOVED_TEMPORARILY 0x32
  193. #define OBEX_RSP_SEE_OTHER 0x33
  194. #define OBEX_RSP_NOT_MODIFIED 0x34
  195. #define OBEX_RSP_USE_PROXY 0x35
  196. #define OBEX_RSP_BAD_REQUEST 0x40
  197. #define OBEX_RSP_UNAUTHORIZED 0x41
  198. #define OBEX_RSP_PAYMENT_REQUIRED 0x42
  199. #define OBEX_RSP_FORBIDDEN 0x43
  200. #define OBEX_RSP_NOT_FOUND 0x44
  201. #define OBEX_RSP_METHOD_NOT_ALLOWED 0x45
  202. #define OBEX_RSP_NOT_ACCEPTABLE 0x46
  203. #define OBEX_RSP_PROXY_AUTH_REQUIRED 0x47
  204. #define OBEX_RSP_REQUEST_TIME_OUT 0x48
  205. #define OBEX_RSP_CONFLICT 0x49
  206. #define OBEX_RSP_GONE 0x4a
  207. #define OBEX_RSP_LENGTH_REQUIRED 0x4b
  208. #define OBEX_RSP_PRECONDITION_FAILED 0x4c
  209. #define OBEX_RSP_REQ_ENTITY_TOO_LARGE 0x4d
  210. #define OBEX_RSP_REQ_URL_TOO_LARGE 0x4e
  211. #define OBEX_RSP_UNSUPPORTED_MEDIA_TYPE 0x4f
  212. #define OBEX_RSP_INTERNAL_SERVER_ERROR 0x50
  213. #define OBEX_RSP_NOT_IMPLEMENTED 0x51
  214. #define OBEX_RSP_BAD_GATEWAY 0x52
  215. #define OBEX_RSP_SERVICE_UNAVAILABLE 0x53
  216. #define OBEX_RSP_GATEWAY_TIMEOUT 0x54
  217. #define OBEX_RSP_VERSION_NOT_SUPPORTED 0x55
  218. #define OBEX_RSP_DATABASE_FULL 0x60
  219. #define OBEX_RSP_DATABASE_LOCKED 0x61
  220. /* Min, Max and default transport MTU */
  221. #define OBEX_DEFAULT_MTU 1024
  222. #define OBEX_MINIMUM_MTU 255
  223. #define OBEX_MAXIMUM_MTU 65535
  224. /** Optimum MTU for various transport (optimum for throughput).
  225.  * The user/application has to set them via OBEX_SetTransportMTU().
  226.  * If you are worried about safety or latency, stick with the current
  227.  * default... - Jean II */
  228. #define OBEX_IRDA_OPT_MTU (7 * 2039) /* 7 IrLAP frames */
  229. #ifdef __cplusplus
  230. }
  231. #endif
  232. #endif /* __OBEX_CONST_H */