Использование Rime и 6LoWPAN в ОС Contiki
Я пытаюсь использовать реализацию 6LoWPAN, предоставленную ОС Contiki.
Моя проблема в том, что Rime просто работает без флага UIP_CONF_IPV6
задавать. Как только я установил флаг для активации поддержки IPv6, компилятор сообщает о "множественном определении" функций rime_sniffer_add()
а также rime_sniffer_remove()
которые расположены в rime.c
а также в sicslowpan.c
,
Кто-то сумел решить эту проблему или рабочий пример?
2 ответа
Если кто-то заинтересован в 6LoWPAN с использованием Contiki:
Правильный путь - использовать RPL, который в основном разработан для IPv6 и 6LoWPAN.
Обратитесь к Contiki's udp_rpl
пример для того, чтобы настроить связь сервер / клиент. Соответствующие флаги включат сжатие заголовка 6LoWPAN.
Я хотел бы добавить к этому, хотя это старый вопрос, но он мог бы использовать более четкое объяснение.
Вы не можете использовать Rime и 6LoWPAN одновременно в Contiki, потому что сетевой стек поддерживает один сетевой драйвер (если вы посмотрите в netstack.h).
Драйвер по умолчанию является иней. Если вы определяете флаг UIP_CONF_IPV6, он определяет флаг WITH_UIP6, который, в свою очередь, устанавливает сетевой драйвер на sicslowpan.
После получения сообщения драйвер MAC (в данном случае, llsec) напрямую вызывает функцию input(), определенную драйвером сети. Демультиплексирование заголовков пакетов отсутствует, поэтому, опять же, это либо время, либо sicslowpan, как определено во время компиляции.
Теперь - вы можете отправлять сообщения, используя время. Насколько я могу судить по коду, эти снифферы используются для побочной функциональности, например, для включения более детальной трассировки для Rime или 6lowpan. Это не обязательно, так что вы можете закомментировать снифферы. Но, опять же, даже если вы можете одновременно скомпилировать и Rime, и 6lowpan, и можете отправлять сообщения, вы ничего не получите (проверено и опробовано...).
Если вы хотите делать трансляцию с 6lowpan, используйте для трансляции групповой адрес, используйте icmp или udp.
Надеюсь это поможет. Misel