60 #define SICSLOWPAN_UDP_4_BIT_PORT_MIN 0xF0B0
61 #define SICSLOWPAN_UDP_4_BIT_PORT_MAX 0xF0BF
62 #define SICSLOWPAN_UDP_8_BIT_PORT_MIN 0xF000
63 #define SICSLOWPAN_UDP_8_BIT_PORT_MAX 0xF0FF
71 #define SICSLOWPAN_COMPRESSION_IPV6 0
72 #define SICSLOWPAN_COMPRESSION_HC1 1
73 #define SICSLOWPAN_COMPRESSION_HC06 2
80 #define SICSLOWPAN_DISPATCH_IPV6 0x41
81 #define SICSLOWPAN_DISPATCH_HC1 0x42
82 #define SICSLOWPAN_DISPATCH_IPHC 0x60
83 #define SICSLOWPAN_DISPATCH_FRAG1 0xc0
84 #define SICSLOWPAN_DISPATCH_FRAGN 0xe0
90 #define SICSLOWPAN_HC1_NH_UDP 0x02
91 #define SICSLOWPAN_HC1_NH_TCP 0x06
92 #define SICSLOWPAN_HC1_NH_ICMP6 0x04
98 #define SICSLOWPAN_HC_UDP_ALL_C 0xE0
109 #define SICSLOWPAN_IPHC_FL_C 0x10
110 #define SICSLOWPAN_IPHC_TC_C 0x08
111 #define SICSLOWPAN_IPHC_NH_C 0x04
112 #define SICSLOWPAN_IPHC_TTL_1 0x01
113 #define SICSLOWPAN_IPHC_TTL_64 0x02
114 #define SICSLOWPAN_IPHC_TTL_255 0x03
115 #define SICSLOWPAN_IPHC_TTL_I 0x00
119 #define SICSLOWPAN_IPHC_CID 0x80
121 #define SICSLOWPAN_IPHC_SAC 0x40
122 #define SICSLOWPAN_IPHC_SAM_00 0x00
123 #define SICSLOWPAN_IPHC_SAM_01 0x10
124 #define SICSLOWPAN_IPHC_SAM_10 0x20
125 #define SICSLOWPAN_IPHC_SAM_11 0x30
127 #define SICSLOWPAN_IPHC_SAM_BIT 4
129 #define SICSLOWPAN_IPHC_M 0x08
130 #define SICSLOWPAN_IPHC_DAC 0x04
131 #define SICSLOWPAN_IPHC_DAM_00 0x00
132 #define SICSLOWPAN_IPHC_DAM_01 0x01
133 #define SICSLOWPAN_IPHC_DAM_10 0x02
134 #define SICSLOWPAN_IPHC_DAM_11 0x03
136 #define SICSLOWPAN_IPHC_DAM_BIT 0
139 #define SICSLOWPAN_IPHC_ADDR_CONTEXT_LL 0
141 #define SICSLOWPAN_IPHC_MCAST_RANGE 0xA0
145 #define SICSLOWPAN_NHC_MASK 0xF0
146 #define SICSLOWPAN_NHC_EXT_HDR 0xE0
156 #define SICSLOWPAN_NHC_UDP_MASK 0xF8
157 #define SICSLOWPAN_NHC_UDP_ID 0xF0
158 #define SICSLOWPAN_NHC_UDP_CHECKSUMC 0x04
159 #define SICSLOWPAN_NHC_UDP_CHECKSUMI 0x00
161 #define SICSLOWPAN_NHC_UDP_CS_P_00 0xF0
162 #define SICSLOWPAN_NHC_UDP_CS_P_01 0xF1
163 #define SICSLOWPAN_NHC_UDP_CS_P_10 0xF2
164 #define SICSLOWPAN_NHC_UDP_CS_P_11 0xF3
173 #define SICSLOWPAN_IPV6_HDR_LEN 1
174 #define SICSLOWPAN_HC1_HDR_LEN 3
175 #define SICSLOWPAN_HC1_HC_UDP_HDR_LEN 7
176 #define SICSLOWPAN_FRAG1_HDR_LEN 4
177 #define SICSLOWPAN_FRAGN_HDR_LEN 5
240 #define sicslowpan_is_iid_16_bit_compressable(a) \
241 ((((a)->u16[4]) == 0) && \
242 (((a)->u8[10]) == 0)&& \
243 (((a)->u8[11]) == 0xff)&& \
244 (((a)->u8[12]) == 0xfe)&& \
245 (((a)->u8[13]) == 0))
254 #define sicslowpan_is_mcast_addr_decompressable(a) \
255 (((*a & 0x01) == 0) && \
256 ((*(a + 1) == 0x01) || (*(a + 1) == 0x02)))
264 #define sicslowpan_is_mcast_addr_compressable(a) \
265 ((((a)->u16[1]) == 0) && \
266 (((a)->u16[2]) == 0) && \
267 (((a)->u16[3]) == 0) && \
268 (((a)->u16[4]) == 0) && \
269 (((a)->u16[5]) == 0) && \
270 (((a)->u16[6]) == 0) && \
271 (((a)->u8[14]) == 0) && \
272 ((((a)->u8[15]) == 1) || (((a)->u8[15]) == 2)))
275 #define sicslowpan_is_mcast_addr_compressable48(a) \
276 ((((a)->u16[1]) == 0) && \
277 (((a)->u16[2]) == 0) && \
278 (((a)->u16[3]) == 0) && \
279 (((a)->u16[4]) == 0) && \
280 (((a)->u8[10]) == 0))
283 #define sicslowpan_is_mcast_addr_compressable32(a) \
284 ((((a)->u16[1]) == 0) && \
285 (((a)->u16[2]) == 0) && \
286 (((a)->u16[3]) == 0) && \
287 (((a)->u16[4]) == 0) && \
288 (((a)->u16[5]) == 0) && \
289 (((a)->u8[12]) == 0))
292 #define sicslowpan_is_mcast_addr_compressable8(a) \
293 ((((a)->u8[1]) == 2) && \
294 (((a)->u16[1]) == 0) && \
295 (((a)->u16[2]) == 0) && \
296 (((a)->u16[3]) == 0) && \
297 (((a)->u16[4]) == 0) && \
298 (((a)->u16[5]) == 0) && \
299 (((a)->u16[6]) == 0) && \
300 (((a)->u8[14]) == 0))
310 int (* is_compressable)(uint8_t next_header);
314 int (*
compress)(uint8_t *compressed, uint8_t *uncompressed_len);
318 int (*
uncompress)(uint8_t *compressed, uint8_t *lowpanbuf, uint8_t *uncompressed_len);
322 int sicslowpan_get_last_rssi(
void);
Header file for the uIP TCP/IP stack.
The header for fragments.
int(* compress)(uint8_t *compressed, uint8_t *uncompressed_len)
compress next header (TCP/UDP, etc) - ptr points to next header to compress
The structure of a network driver in Contiki.
int(* uncompress)(uint8_t *compressed, uint8_t *lowpanbuf, uint8_t *uncompressed_len)
uncompress next header (TCP/UDP, etc) - ptr points to next header to uncompress
The structure of a next header compressor.