FreeCalypso > hg > freecalypso-sw
annotate rvinterf/localsock.h @ 253:475887e6b396
tiffs IVA: close the file descriptor after mmap
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Sat, 01 Feb 2014 22:22:07 +0000 | 
| parents | 7ab6b29e76bb | 
| children | 
| rev | line source | 
|---|---|
| 
176
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 * This header defines and describes (through comments) the local UNIX domain | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 * socket interface implemented between rvinterf and its clients like fc-tmsh. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 * | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 * The UNIX domain sockets used for this ad hoc interface are of the | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 * SOCK_STREAM kind, but the true nature of the communication is message-based. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 * We use the same trick that is used for DNS over TCP: every message in each | 
| 
178
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
8 * direction is preceded by a 2-byte length. This length is sent MSB first | 
| 
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
9 * just like in DNS over TCP. The limit on the size of these messages | 
| 
176
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 * (for sizing buffers etc) is: | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 */ | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 #define LOCALSOCK_MAX_MSG 1024 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 /* | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 * Each message in the client->rvinterf direction (can be seen as command) | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 * begins (after the length) with an opcode byte as follows: | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 */ | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 #define CLI2RVI_WANT_RVTRACE 0x00 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 #define CLI2RVI_WANT_MUXPROTO 0x01 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 #define CLI2RVI_PKT_TO_TARGET 0x02 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 #define CLI2RVI_RAWBYTES_TO_TARGET 0x03 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 /* | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 * The first two commands (CLI2RVI_WANT_RVTRACE and CLI2RVI_WANT_MUXPROTO) | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 * are the means by which client programs inform rvinterf that they are | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 * interested in receiving copies of certain packets coming from the target. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 * | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 * The CLI2RVI_WANT_RVTRACE opcode needs to be followed by a USEID mask value | 
| 
178
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
31 * and a USEID match value, both in the network byte order, i.e., MSB first, | 
| 
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
32 * for a total message length of 9 bytes. For every RV trace message received | 
| 
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
33 * from the target, rvinterf will iterate through all active clients to see who | 
| 
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
34 * is interested: if the received USEID ANDed with the mask equals the match | 
| 
 
7ab6b29e76bb
rvinterf: forwarding of Rx packets to clients implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
176 
diff
changeset
 | 
35 * value, the message will be forwarded to that client. | 
| 
176
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 * | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 * The CLI2RVI_WANT_MUXPROTO opcode needs to be followed by one byte | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 * identifying the RVTMUX protocol of interest, i.e., the first byte of the | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 * packets exchanged between the host and the target, e.g., 0x12 for L1 traces | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 * as defined in pktmux.h, for a total message length of 2 bytes. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 * | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 * The last two commands (CLI2RVI_PKT_TO_TARGET and CLI2RVI_RAWBYTES_TO_TARGET) | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 * cause data payload to be sent to the target serial port. Payload following | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 * CLI2RVI_PKT_TO_TARGET (must not exceed MAX_PKT_TO_TARGET) is sent with the | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 * proper packet encapsulation per TI; bytes following | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 * CLI2RVI_RAWBYTES_TO_TARGET are sent raw. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 */ | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 /* | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 * Each message in the rvinterf->client direction begins (after the length) | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 * with a message type byte as follows: | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 */ | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 #define RVI2CLI_PKT_FROM_TARGET 0x00 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 #define RVI2CLI_LOCAL_CMD_RESP 0x01 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
57 /* | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
58 * Messages beginning with RVI2CLI_PKT_FROM_TARGET are packets received | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
59 * from the target GSM device; the byte following this type code is the | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
60 * first byte of the packet from the target, e.g., 0x11 for RV traces or | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
61 * 0x12 for L1 traces. Rvinterf will only start sending these messages | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
62 * to a client after that client has expressed interest in receiving | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
63 * target->host packets of a particular type. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
64 * | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
65 * Messages beginning with RVI2CLI_LOCAL_CMD_RESP are generated locally | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
66 * by rvinterf itself as responses to commands, currently as responses to | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
67 * CLI2RVI_WANT_{RVTRACE,MUXPROTO}. The byte following the | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
68 * RVT2CLI_LOCAL_CMD_RESP type code is ASCII '+' or ASCII '-', indicating | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
69 * success or error, respectively. Any remaining bytes form a message | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
70 * for the user. | 
| 
 
7f727aaf5cd4
rvinterf: beginning of server implementation
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
71 */ | 
