13 ноября 2024 Hardware ESP32S3 ESP32 console_cmd_ping


В инфрастуктуре проекта esp32.com имеется регистр готовых компонентов. Мне потребовалось протестировать и посмотреть как устроены некоторые механизмы компонента espressif/console_cmd_ping, доступном по адресу https://components.espressif.com/components/espressif/console_cmd_ping/versions/1.1.0

Для сборки приложения с этим компонентом необходимо включить его с помощью команды idf.py add-dependency "espressif/console_cmd_ping^1.1.0" в директории текущего или нового проекта

Затем добавить код иницилизации из описания компонента. Но для того чтобы использовать его возможности необходимо включить возможность записи в терминале, а для этого необходимо изменить настройки сборки с помощью idf.py menuconfig

Там найти и включить Component config > ESP System Settings > Channel for console output > choose USB Serial/JTAG Controller, а затем пересобрать приложение.

После перепрошивки платы можно подключиться к терминалу платы и выполнять команды:

help  [<string>]
  Print the summary of all registered commands if no arguments are given,
  otherwise print summary of given command.
      <string>  Name of command

ping  [-W <t>] [-i <t>] [-s <n>] [-c <n>] [-Q <n>] [-T <n>] <host>
  send ICMP ECHO_REQUEST to network hosts
  -W, --timeout=<t>  Time to wait for a response, in seconds
  -i, --interval=<t>  Wait interval seconds between sending each packet
  -s, --size=<n>  Specify the number of data bytes to be sent
  -c, --count=<n>  Stop after sending count packets
  -Q, --tos=<n>  Set Type of Service related bits in IP datagrams
  -T, --ttl=<n>  Set Time to Live related bits in IP datagrams
        <host>  Host address

getaddrinfo  [-f <AF>] [-F <FLAGS>]... [-p <port>] <hostname>
  Usage: getaddrinfo [options] <hostname> [service]
  -f, --family=<AF>  Address family (AF_INET, AF_INET6, AF_UNSPEC).
  -F, --flags=<FLAGS>  Special flags (AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST, AI_V4MAPPED, AI_ALL).
  -p, --port=<port>  String containing a numeric port number.
    <hostname>  Host address

setdnsserver  <main> [backup] [fallback]
  Usage: setdnsserver <main> [backup] [fallback]
        <main>  The main DNS server IP address.
        backup  The secondary DNS server IP address (optional).
      fallback  The fallback DNS server IP address (optional).

getdnsserver 
  Usage: getdnsserver

По сути, это реализация микро sh и легко расширяется