Line No. | Rev | Author | Line |
---|---|---|---|
1 | 32 | kaklik | /********************************************************************* |
2 | * |
||
3 | * Berekely Socket Distribution API Header File |
||
4 | * |
||
5 | ********************************************************************* |
||
6 | * FileName: BerkeleyAPI.h |
||
7 | * Description: Berkeley socket Distribution(BSD) APIs for Microchip TCPIP Stack |
||
8 | * Processor: PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F, PIC32 |
||
9 | * Compiler: Microchip C32 v1.05 or higher |
||
10 | * Microchip C30 v3.12 or higher |
||
11 | * Microchip C18 v3.30 or higher |
||
12 | * HI-TECH PICC-18 PRO 9.63PL2 or higher |
||
13 | * Company: Microchip Technology, Inc. |
||
14 | * |
||
15 | * Software License Agreement |
||
16 | * |
||
17 | * Copyright (C) 2002-2009 Microchip Technology Inc. All rights |
||
18 | * reserved. |
||
19 | * |
||
20 | * Microchip licenses to you the right to use, modify, copy, and |
||
21 | * distribute: |
||
22 | * (i) the Software when embedded on a Microchip microcontroller or |
||
23 | * digital signal controller product ("Device") which is |
||
24 | * integrated into Licensee's product; or |
||
25 | * (ii) ONLY the Software driver source files ENC28J60.c, ENC28J60.h, |
||
26 | * ENCX24J600.c and ENCX24J600.h ported to a non-Microchip device |
||
27 | * used in conjunction with a Microchip ethernet controller for |
||
28 | * the sole purpose of interfacing with the ethernet controller. |
||
29 | * |
||
30 | * You should refer to the license agreement accompanying this |
||
31 | * Software for additional information regarding your rights and |
||
32 | * obligations. |
||
33 | * |
||
34 | * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT |
||
35 | * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT |
||
36 | * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A |
||
37 | * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
||
38 | * MICROCHIP BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR |
||
39 | * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF |
||
40 | * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS |
||
41 | * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE |
||
42 | * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER |
||
43 | * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT |
||
44 | * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE. |
||
45 | * |
||
46 | * Author Date Comment |
||
47 | *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
48 | * Aseem Swalah 4/3/08 Original |
||
49 | ********************************************************************/ |
||
50 | |||
51 | #ifndef _BERKELEY_API_HEADER_FILE |
||
52 | #define _BERKELEY_API_HEADER_FILE |
||
53 | |||
54 | typedef BYTE SOCKET; //Socket descriptor |
||
55 | |||
56 | #define AF_INET 2 // Internet Address Family - UDP, TCP, etc. |
||
57 | |||
58 | #define IP_ADDR_ANY 0u // IP Address for server binding |
||
59 | #define INADDR_ANY 0x00000000u // IP address for server binding. |
||
60 | |||
61 | |||
62 | #define SOCK_STREAM 100 //Connection based byte streams. Use TCP for the internet address family. |
||
63 | #define SOCK_DGRAM 110 //Connectionless datagram socket. Use UDP for the internet address family. |
||
64 | |||
65 | #define IPPROTO_TCP 6 // Indicates TCP for the internet address family. |
||
66 | #define IPPROTO_UDP 17 // Indicates UDP for the internet address family. |
||
67 | |||
68 | #define SOCKET_ERROR (-1) //Socket error |
||
69 | #define SOCKET_CNXN_IN_PROGRESS (-2) //Socket connection state. |
||
70 | #define SOCKET_DISCONNECTED (-3) //Socket disconnected |
||
71 | |||
72 | typedef enum |
||
73 | { |
||
74 | SKT_CLOSED, // Socket closed state indicating a free descriptor |
||
75 | SKT_CREATED, // Socket created state for TCP and UDP sockets |
||
76 | SKT_BOUND, // Socket bound state for TCP and UDP sockets |
||
77 | SKT_BSD_LISTEN, // Listening state for TCP BSD listener handle "socket" |
||
78 | SKT_LISTEN, // TCP server listen state |
||
79 | SKT_IN_PROGRESS, // TCP client connection in progress state |
||
80 | SKT_EST, // TCP client or server established state |
||
81 | SKT_DISCONNECTED // TCP client or server no longer connected to the remote host (but was historically) |
||
82 | } BSD_SCK_STATE; // Berkeley Socket (BSD) states |
||
83 | |||
84 | struct BSDSocket |
||
85 | { |
||
86 | int SocketType; // Socket type |
||
87 | BSD_SCK_STATE bsdState; //Socket state |
||
88 | WORD localPort; //local port |
||
89 | WORD remotePort; //remote port |
||
90 | DWORD remoteIP; //remote IP |
||
91 | int backlog; // maximum number or client connection |
||
92 | BOOL isServer; // server/client check |
||
93 | TCP_SOCKET SocketID; // Socket ID |
||
94 | }; // Berkeley Socket structure |
||
95 | |||
96 | #define INVALID_TCP_PORT (0L) //Invalide TCP port |
||
97 | |||
98 | struct in_addr |
||
99 | { |
||
100 | union |
||
101 | { |
||
102 | struct { BYTE s_b1,s_b2,s_b3,s_b4; } S_un_b; // IP address in Byte |
||
103 | struct { WORD s_w1,s_w2; } S_un_w; //IP address in Word |
||
104 | DWORD S_addr; //IP address |
||
105 | }S_un; //union of IP address |
||
106 | |||
107 | #define s_addr S_un.S_addr //can be used for most tcp & ip code |
||
108 | #define s_host S_un.S_un_b.s_b2 //host on imp |
||
109 | #define s_net S_un.S_un_b.s_b1 // network |
||
110 | #define s_imp S_un.S_un_w.s_w2 // imp |
||
111 | #define s_impno S_un.S_un_b.s_b4 // imp number |
||
112 | #define s_lh S_un.S_un_b.s_b3 // logical host |
||
113 | }; // in_addr structure |
||
114 | |||
115 | struct __attribute__((__packed__)) sockaddr |
||
116 | { |
||
117 | unsigned short sa_family; //address family |
||
118 | char sa_data[14]; //up to 14 bytes of direct address |
||
119 | }; //generic address structure for all address families |
||
120 | |||
121 | struct __attribute__((__packed__)) sockaddr_in |
||
122 | { |
||
123 | short sin_family; //Address family; must be AF_INET. |
||
124 | WORD sin_port; //Internet Protocol (IP) port. |
||
125 | struct in_addr sin_addr; //IP address in network byte order. |
||
126 | char sin_zero[8]; //Padding to make structure the same size as SOCKADDR. |
||
127 | }; //In the Internet address family |
||
128 | |||
129 | typedef struct sockaddr_in SOCKADDR_IN; //In the Internet address family |
||
130 | typedef struct sockaddr SOCKADDR; // generic address structure for all address families |
||
131 | |||
132 | void BerkeleySocketInit(void); |
||
133 | SOCKET socket( int af, int type, int protocol ); |
||
134 | int bind( SOCKET s, const struct sockaddr* name, int namelen ); |
||
135 | int listen( SOCKET s, int backlog ); |
||
136 | SOCKET accept( SOCKET s, struct sockaddr* addr, int* addrlen ); |
||
137 | int connect( SOCKET s, struct sockaddr* name, int namelen ); |
||
138 | int send( SOCKET s, const char* buf, int len, int flags ); |
||
139 | int sendto( SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen ); |
||
140 | int recv( SOCKET s, char* buf, int len, int flags ); |
||
141 | int recvfrom( SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen ); |
||
142 | int gethostname(char* name, int namelen); |
||
143 | int closesocket( SOCKET s ); |
||
144 | |||
145 | #endif |
||
146 |
Powered by WebSVN v2.8.3