• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

mDNS example не линкуется

sharikov

Active member
Пытаюсь собрать mdns example из примеров без модификации.
Не линкуется :
RTL00MP3/RTL00_SDKV35a/component/common/example/mdns/example_mdns.c:21: undefined reference to `mDNSResponderInit'
(и так далее)

В исходниках эти функции не находятся.

---
Разобрался.
В RTL00MP3 нет библиотеки lib_mdns.a
Скопировал из rtl-дурины, заработало.
2pvvx добавьте ее в репу RTL00MP3 и в sdkset.mk
 
Последнее редактирование:

pvvx

Активный участник сообщества
В RTL00MP3 нет библиотеки lib_mdns.a
Скопировал из rtl-дурины, заработало.
2pvvx добавьте ее в репу RTL00MP3 и в sdkset.mk
Не хочу. Там ужасно неоптимальный mdns. Жрет много ресурсов, настроек по минимуму. Без исходников mdns не нужен. Я пока не успел найти достойный начальный вариант исходников mdns под LwIP.
 

pvvx

Активный участник сообщества
А для ардуинщиков такой сойдет сталобыть ?
Угу :) Для Дурины всё равно - там мигают светодиодом.
lib_mdns.a - из другого SDK.
Ameba Arduino имеет другие настройки трансляции SDK и сам SDK у них другой.

Взяли бы, да нашли исходники mdns для LwIP, да адаптировали к SDK.
А то пишите - "что-то там не линкуется"...
 

pvvx

Активный участник сообщества
@sharikov - какой ip адрес дает данный lib_mdns.a при выполнении mDNSRegisterService(..) на включенной AP на модуле и соединение к ней в качестве клиента? :)
Посмотрите и поймете, что lib_mdns.a использовать нельзя, даже в Arduino :p
-------
Уточняю ('реверс'):
Код:
uint8_t ip_str_14765[40];
uint8_t * mDNSPlatformIPString(int type)
{
  uint8_t *ip;

  if (type == 2)
  {
      ip = LwIP_GetIP(&xnetif[0]);

    DiagSPrintf(ip_str_14765, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
  }
  return ip_str_14765;
}

uint8_t mask_str_14770[40];
uint8_t * mDNSPlatformMaskString(int type)
{
  uint8_t *mask;

  if ( type == 2 )
  {
    mask = LwIP_GetMASK(&xnetif[0]);
    DiagSPrintf(mask_str_14770, "%d.%d.%d.%d", mask[0], mask[1], mask[2], mask[3]);
  }
  return mask_str_14770;
}

uint8_t mac_str_14775[18];
uint8_t *mDNSPlatformMACString()
{
  uint8_t *mac = LwIP_GetMAC(&xnetif[0]);
  DiagSPrintf(
    mac_str_14775,
    "%02x:%02x:%02x:%02x:%02x:%02x",
    mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  return mac_str_14775;
}
А у нас в системе до 3-х netif - st, ap, eth
 
Последнее редактирование:
Сверху Снизу