On 02/19/2013 06:19 PM, Alan Ott wrote:
> You have to change the compression type to IPV6 on the Contiki side, but
> that just handles sending. You have to also make a mod to make Contiki
> to _accept_ compressed packets (because changing the compression type to
> IPV6 on the contiki side removes the ability to _receive_ compressed
> packets, which Linux sends)[1].
>
> [1] I can send this when I get back to my other development machine, but
> it's easy enough to find in the source if you want to do it before then.
Attached. It's just some hackery to get it working. Clearly we want to
add the missing pieces on the Linux side.
Alan.
diff --git a/core/net/sicslowpan.c b/core/net/sicslowpan.c
index 7a5cdcc..1da908c 100644
--- a/core/net/sicslowpan.c
+++ b/core/net/sicslowpan.c
@@ -310,7 +310,7 @@ set_packet_attrs()
-#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06
+////#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06
/** \name HC06 specific variables
* @{
*/
@@ -1020,7 +1020,7 @@ uncompress_hdr_hc06(uint16_t ip_len)
return;
}
/** @} */
-#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06 */
+////#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06 */
#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC1
@@ -1663,19 +1663,19 @@ input(void)
#endif /* SICSLOWPAN_CONF_FRAG */
/* Process next dispatch and headers */
-#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06
+////#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06
if((RIME_HC1_PTR[RIME_HC1_DISPATCH] & 0xe0) == SICSLOWPAN_DISPATCH_IPHC) {
PRINTFI("sicslowpan input: IPHC\n");
uncompress_hdr_hc06(frag_size);
} else
-#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06 */
+////#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC06 */
switch(RIME_HC1_PTR[RIME_HC1_DISPATCH]) {
-#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC1
+////#if SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC1
case SICSLOWPAN_DISPATCH_HC1:
PRINTFI("sicslowpan input: HC1\n");
uncompress_hdr_hc1(frag_size);
break;
-#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC1 */
+////#endif /* SICSLOWPAN_COMPRESSION == SICSLOWPAN_COMPRESSION_HC1 */
case SICSLOWPAN_DISPATCH_IPV6:
PRINTFI("sicslowpan input: IPV6\n");
rime_hdr_len += SICSLOWPAN_IPV6_HDR_LEN;
diff --git a/examples/ping-ipv6/Makefile.target b/examples/ping-ipv6/Makefile.target
deleted file mode 100644
index 0d5d95e..0000000
--- a/examples/ping-ipv6/Makefile.target
+++ /dev/null
@@ -1 +0,0 @@
-TARGET = minimal-net
diff --git a/examples/udp-ipv6/Makefile.target b/examples/udp-ipv6/Makefile.target
index 0d5d95e..a248f89 100644
--- a/examples/udp-ipv6/Makefile.target
+++ b/examples/udp-ipv6/Makefile.target
@@ -1 +1,2 @@
-TARGET = minimal-net
+#TARGET = minimal-net
+TARGET = redbee-econotag
\ No newline at end of file
diff --git a/examples/udp-ipv6/udp-client.c b/examples/udp-ipv6/udp-client.c
index 96c06e0..db5fb52 100644
--- a/examples/udp-ipv6/udp-client.c
+++ b/examples/udp-ipv6/udp-client.c
@@ -52,7 +52,7 @@ tcpip_handler(void)
if(uip_newdata()) {
str = uip_appdata;
str[uip_datalen()] = '\0';
- printf("Response from the server: '%s'\n", str);
+ printf("Response from the server: '%s'\r\n", str);
}
}
/*---------------------------------------------------------------------------*/
@@ -65,7 +65,7 @@ timeout_handler(void)
printf("Client sending to: ");
PRINT6ADDR(&client_conn->ripaddr);
sprintf(buf, "Hello %d from the client", ++seq_id);
- printf(" (msg: %s)\n", buf);
+ printf(" (msg: %s)\r\n", buf);
#if SEND_TOO_LARGE_PACKET_TO_TEST_FRAGMENTATION
uip_udp_packet_send(client_conn, buf, UIP_APPDATA_SIZE);
#else /* SEND_TOO_LARGE_PACKET_TO_TEST_FRAGMENTATION */
@@ -85,7 +85,7 @@ print_local_addresses(void)
if(uip_ds6_if.addr_list[i].isused &&
(state == ADDR_TENTATIVE || state == ADDR_PREFERRED)) {
PRINT6ADDR(&uip_ds6_if.addr_list[i].ipaddr);
- PRINTF("\n");
+ PRINTF("\r\n");
}
}
}
@@ -107,9 +107,10 @@ set_connection_address(uip_ipaddr_t *ipaddr)
{
#define _QUOTEME(x) #x
#define QUOTEME(x) _QUOTEME(x)
+#define UDP_CONNECTION_ADDR fe80::a000:0:0:3
#ifdef UDP_CONNECTION_ADDR
if(uiplib_ipaddrconv(QUOTEME(UDP_CONNECTION_ADDR), ipaddr) == 0) {
- PRINTF("UDP client failed to parse address '%s'\n", QUOTEME(UDP_CONNECTION_ADDR));
+ PRINTF("UDP client failed to parse address '%s'\r\n", QUOTEME(UDP_CONNECTION_ADDR));
}
#elif UIP_CONF_ROUTER
uip_ip6addr(ipaddr,0xaaaa,0,0,0,0x0212,0x7404,0x0004,0x0404);
@@ -124,7 +125,7 @@ PROCESS_THREAD(udp_client_process, ev, data)
uip_ipaddr_t ipaddr;
PROCESS_BEGIN();
- PRINTF("UDP client process started\n");
+ PRINTF("UDP client process started\r\n");
#if UIP_CONF_ROUTER
set_global_address();
@@ -135,12 +136,12 @@ PROCESS_THREAD(udp_client_process, ev, data)
set_connection_address(&ipaddr);
/* new connection with remote host */
- client_conn = udp_new(&ipaddr, UIP_HTONS(3000), NULL);
- udp_bind(client_conn, UIP_HTONS(3001));
+ client_conn = udp_new(&ipaddr, UIP_HTONS(7), NULL);
+ udp_bind(client_conn, UIP_HTONS(99));
PRINTF("Created a connection with the server ");
PRINT6ADDR(&client_conn->ripaddr);
- PRINTF(" local/remote port %u/%u\n",
+ PRINTF(" local/remote port %u/%u\r\n",
UIP_HTONS(client_conn->lport), UIP_HTONS(client_conn->rport));
etimer_set(&et, SEND_INTERVAL);
diff --git a/platform/redbee-econotag/contiki-conf.h b/platform/redbee-econotag/contiki-conf.h
index 35290dd..9e52eac 100644
--- a/platform/redbee-econotag/contiki-conf.h
+++ b/platform/redbee-econotag/contiki-conf.h
@@ -51,6 +51,10 @@
#include <stdint.h>
+// Alan
+#define SICSLOWPAN_UDP_PORT_MIN 1
+#define SICSLOWPAN_UDP_PORT_MAX 255
+
#define PLATFORM_NAME "Econotag"
#define PLATFORM_TYPE MC1322X
/* mc1322x files */
@@ -165,12 +169,12 @@ typedef unsigned long rtimer_clock_t;
#define PACKETBUF_CONF_ATTRS_INLINE 1
#ifndef RF_CHANNEL
-#define RF_CHANNEL 26
+#define RF_CHANNEL 11
#endif /* RF_CHANNEL */
#define CONTIKIMAC_CONF_BROADCAST_RATE_LIMIT 0
-#define IEEE802154_CONF_PANID 0xABCD
+#define IEEE802154_CONF_PANID 0x0777
#define PROFILE_CONF_ON 0
#define ENERGEST_CONF_ON 0
@@ -216,7 +220,7 @@ typedef unsigned long rtimer_clock_t;
#define SICSLOWPAN_CONF_COMPRESSION_IPV6 0
#define SICSLOWPAN_CONF_COMPRESSION_HC1 1
#define SICSLOWPAN_CONF_COMPRESSION_HC01 2
-#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC06
+#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC1
#ifndef SICSLOWPAN_CONF_FRAG
#define SICSLOWPAN_CONF_FRAG 1
#define SICSLOWPAN_CONF_MAXAGE 8
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel