#contiki #texas-instruments #contiki-ng
Вопрос:
При попытке отключить фильтрацию адресов, изменив RADIO_PARAM_RX_MODE, как показано ниже, автоматический ack cc2420 не работает, и частицы получают дублированные пакеты.
radio_value_t radio_rx_mode; NETSTACK_RADIO.get_value(RADIO_PARAM_RX_MODE, amp;radio_rx_mode); radio_rx_mode amp;= ~RADIO_RX_MODE_ADDRESS_FILTER; if(NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, radio_rx_mode) != RADIO_RESULT_OK) { LOG_WARN("radio does not support setting RADIO_PARAM_RX_MODEn"); }else{ LOG_INFO("turned of Address filtering.n"); }
Как отключить только фильтрацию адресов?
Ответ №1:
Ваш код-это правильный способ отключить распознавание / фильтрацию адресов.
Что касается автоматического подтверждения, в спецификации CC2420 говорится следующее:
Если
MDMCTRL0.AUTOACK
включено, кадр подтверждения передается для всех входящих кадров, принятых распознаванием адресов, с установленным флагом запроса подтверждения и действительным CRC. Поэтому автоматическая загрузка не имеет смысла, если такжеADR_DECODE
иAUTOCRC
не включена.
Это означает, что если у вас отключена фильтрация адресов, вам необходимо отправить программный ACK.
Комментарии:
1. включите программное обеспечение ack, определив CSMA_CONF_SEND_SOFT_ACK в project-conf.h contiki-ng, но когда я подсчитываю, что подтвержденный пакет получает 0? для подсчета пакета я определяю LINK_STATS_CONF_PACKET_COUNTERS в project-conf.
2. Проблема заключалась в коротком времени для получения подтвержденного пакета, и я изменил CSMA_ACK_WAIT_TIME в файле csma.h, чтобы устранить эту проблему.