CDC/ECM driver for mbed, based on USBDevice by mbed-official. Uses PicoTCP to access Ethernet USB device. License: GPLv2

Dependents:   USBEthernet_TEST

Fork of USB_Ethernet by Daniele Lacamera

Committer:
daniele
Date:
Sat Aug 03 13:16:14 2013 +0000
Revision:
2:540f6e142d59
Moved to single package

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniele 2:540f6e142d59 1 /*********************************************************************
daniele 2:540f6e142d59 2 PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved.
daniele 2:540f6e142d59 3 See LICENSE and COPYING for usage.
daniele 2:540f6e142d59 4
daniele 2:540f6e142d59 5 Author: Andrei Carp <andrei.carp@tass.be>
daniele 2:540f6e142d59 6 *********************************************************************/
daniele 2:540f6e142d59 7
daniele 2:540f6e142d59 8 #ifndef PICO_HTTP_UTIL_H_
daniele 2:540f6e142d59 9 #define PICO_HTTP_UTIL_H_
daniele 2:540f6e142d59 10
daniele 2:540f6e142d59 11 /* Informational reponses */
daniele 2:540f6e142d59 12 #define HTTP_CONTINUE 100u
daniele 2:540f6e142d59 13 #define HTTP_SWITCHING_PROTOCOLS 101u
daniele 2:540f6e142d59 14 #define HTTP_PROCESSING 102u
daniele 2:540f6e142d59 15
daniele 2:540f6e142d59 16 /* Success */
daniele 2:540f6e142d59 17 #define HTTP_OK 200u
daniele 2:540f6e142d59 18 #define HTTP_CREATED 201u
daniele 2:540f6e142d59 19 #define HTTP_ACCEPTED 202u
daniele 2:540f6e142d59 20 #define HTTP_NON_AUTH_INFO 203u
daniele 2:540f6e142d59 21 #define HTTP_NO_CONTENT 204u
daniele 2:540f6e142d59 22 #define HTTP_RESET_CONTENT 205u
daniele 2:540f6e142d59 23 #define HTTP_PARTIAL_CONTENT 206u
daniele 2:540f6e142d59 24 #define HTTP_MULTI_STATUS 207u
daniele 2:540f6e142d59 25 #define HTTP_ALREADY_REPORTED 208u
daniele 2:540f6e142d59 26 #define HTTP_LOW_SPACE 250u
daniele 2:540f6e142d59 27 #define HTTP_IM_SPACE 226u
daniele 2:540f6e142d59 28
daniele 2:540f6e142d59 29 /* Redirection */
daniele 2:540f6e142d59 30 #define HTTP_MULTI_CHOICE 300u
daniele 2:540f6e142d59 31 #define HTTP_MOVED_PERMANENT 301u
daniele 2:540f6e142d59 32 #define HTTP_FOUND 302u
daniele 2:540f6e142d59 33 #define HTTP_SEE_OTHER 303u
daniele 2:540f6e142d59 34 #define HTTP_NOT_MODIFIED 304u
daniele 2:540f6e142d59 35 #define HTTP_USE_PROXY 305u
daniele 2:540f6e142d59 36 #define HTTP_SWITCH_PROXY 306u
daniele 2:540f6e142d59 37 #define HTTP_TEMP_REDIRECT 307u
daniele 2:540f6e142d59 38 #define HTTP_PERM_REDIRECT 308u
daniele 2:540f6e142d59 39
daniele 2:540f6e142d59 40 /* Client error */
daniele 2:540f6e142d59 41 #define HTTP_BAD_REQUEST 400u
daniele 2:540f6e142d59 42 #define HTTP_UNAUTH 401u
daniele 2:540f6e142d59 43 #define HTTP_PAYMENT_REQ 402u
daniele 2:540f6e142d59 44 #define HTTP_FORBIDDEN 403u
daniele 2:540f6e142d59 45 #define HTTP_NOT_FOUND 404u
daniele 2:540f6e142d59 46 #define HTTP_METH_NOT_ALLOWED 405u
daniele 2:540f6e142d59 47 #define HTTP_NOT_ACCEPTABLE 406u
daniele 2:540f6e142d59 48 #define HTTP_PROXY_AUTH_REQ 407u
daniele 2:540f6e142d59 49 #define HTTP_REQ_TIMEOUT 408u
daniele 2:540f6e142d59 50 #define HTTP_CONFLICT 409u
daniele 2:540f6e142d59 51 #define HTTP_GONE 410u
daniele 2:540f6e142d59 52 #define HTTP_LEN_REQ 411u
daniele 2:540f6e142d59 53 #define HTTP_PRECONDITION_FAIL 412u
daniele 2:540f6e142d59 54 #define HTTP_REQ_ENT_LARGE 413u
daniele 2:540f6e142d59 55 #define HTTP_URI_TOO_LONG 414u
daniele 2:540f6e142d59 56 #define HTTP_UNSUPORTED_MEDIA 415u
daniele 2:540f6e142d59 57 #define HTTP_REQ_RANGE_NOK 416u
daniele 2:540f6e142d59 58 #define HTTP_EXPECT_FAILED 417u
daniele 2:540f6e142d59 59 #define HTTP_TEAPOT 418u
daniele 2:540f6e142d59 60 #define HTTP_UNPROC_ENTITY 422u
daniele 2:540f6e142d59 61 #define HTTP_LOCKED 423u
daniele 2:540f6e142d59 62 #define HTTP_METHOD_FAIL 424u
daniele 2:540f6e142d59 63 #define HTTP_UNORDERED 425u
daniele 2:540f6e142d59 64 #define HTTP_UPGRADE_REQ 426u
daniele 2:540f6e142d59 65 #define HTTP_PRECOND_REQ 428u
daniele 2:540f6e142d59 66 #define HTTP_TOO_MANY_REQ 429u
daniele 2:540f6e142d59 67 #define HTTP_HEDER_FIELD_LARGE 431u
daniele 2:540f6e142d59 68
daniele 2:540f6e142d59 69 /* Server error */
daniele 2:540f6e142d59 70 #define HTTP_INTERNAL_SERVER_ERR 500u
daniele 2:540f6e142d59 71 #define HTTP_NOT_IMPLEMENTED 501u
daniele 2:540f6e142d59 72 #define HTTP_BAD_GATEWAY 502u
daniele 2:540f6e142d59 73 #define HTTP_SERVICE_UNAVAILABLE 503u
daniele 2:540f6e142d59 74 #define HTTP_GATEWAY_TIMEOUT 504u
daniele 2:540f6e142d59 75 #define HTTP_NOT_SUPPORTED 505u
daniele 2:540f6e142d59 76 #define HTTP_SERV_LOW_STORAGE 507u
daniele 2:540f6e142d59 77 #define HTTP_LOOP_DETECTED 508u
daniele 2:540f6e142d59 78 #define HTTP_NOT_EXTENDED 510u
daniele 2:540f6e142d59 79 #define HTTP_NETWORK_AUTH 511u
daniele 2:540f6e142d59 80 #define HTTP_PERMISSION_DENIED 550u
daniele 2:540f6e142d59 81
daniele 2:540f6e142d59 82 /* Returns used */
daniele 2:540f6e142d59 83 #define HTTP_RETURN_ERROR -1
daniele 2:540f6e142d59 84 #define HTTP_RETURN_OK 0
daniele 2:540f6e142d59 85
daniele 2:540f6e142d59 86 /* List of events - shared between client and server */
daniele 2:540f6e142d59 87 #define EV_HTTP_CON 1u
daniele 2:540f6e142d59 88 #define EV_HTTP_REQ 2u
daniele 2:540f6e142d59 89 #define EV_HTTP_PROGRESS 4u
daniele 2:540f6e142d59 90 #define EV_HTTP_SENT 8u
daniele 2:540f6e142d59 91 #define EV_HTTP_CLOSE 16u
daniele 2:540f6e142d59 92 #define EV_HTTP_ERROR 32u
daniele 2:540f6e142d59 93 #define EV_HTTP_BODY 64u
daniele 2:540f6e142d59 94 #define EV_HTTP_DNS 128u
daniele 2:540f6e142d59 95
daniele 2:540f6e142d59 96 #ifndef TRUE
daniele 2:540f6e142d59 97 #define TRUE 1
daniele 2:540f6e142d59 98 #endif
daniele 2:540f6e142d59 99
daniele 2:540f6e142d59 100 #ifndef FALSE
daniele 2:540f6e142d59 101 #define FALSE 0
daniele 2:540f6e142d59 102 #endif
daniele 2:540f6e142d59 103
daniele 2:540f6e142d59 104 struct pico_http_uri
daniele 2:540f6e142d59 105 {
daniele 2:540f6e142d59 106 uint8_t protoHttp; // is the protocol Http ?
daniele 2:540f6e142d59 107 char * host; // hostname
daniele 2:540f6e142d59 108 uint16_t port; // port if specified
daniele 2:540f6e142d59 109 char * resource; // resource , ignoring the other possible parameters
daniele 2:540f6e142d59 110 };
daniele 2:540f6e142d59 111
daniele 2:540f6e142d59 112 // used for chunks
daniele 2:540f6e142d59 113 int pico_itoaHex(uint16_t port, char * ptr);
daniele 2:540f6e142d59 114 int pico_itoa(uint16_t port, char * ptr);
daniele 2:540f6e142d59 115 int pico_processURI(const char * uri, struct pico_http_uri * urikey);
daniele 2:540f6e142d59 116
daniele 2:540f6e142d59 117 #endif /* PICO_HTTP_UTIL_H_ */