Как отключить фильтрацию адресов в радиомодуле Contiki-NG cc2420?

#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, чтобы устранить эту проблему.