Гнездо Micropython Raw на уровне MAC - PullRequest
0 голосов
/ 14 марта 2019

Как именно можно создать необработанный сокет на уровне MAC в Micropython?

Эквивалент UNIX:

eth_p_all=3
netif='wlan0'
s=socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.htons(eth_p_all))
s.bind((netif,0))

С одной стороны, не ясно, как получить имя интерфейса, и нет socket.AF_PACKET или socket.htons.

Итак, если нет способа сделать это со стоковыми библиотеками или прошивкой, какие библиотеки мне выбрать, или если требуется модификация прошивки, как именно я должен модифицировать прошивку?

1 Ответ

0 голосов
/ 18 марта 2019

В текущей версии прошивки нет реализации необработанного сокета. Йо может проверить следующую строку. Необработанная отправка сокетов была удалена из modlwip.c

https://github.com/micropython/micropython/blob/68a5d6fe7746850ce049b8bf295bfce1382383f3/extmod/modlwip.c#L712

Если вы хотите изменить прошивку самостоятельно, вы можете выполнить следующие действия.

  • Проверьте исходный сокет поддержки SDK вашей платформы или нет. (например, cc3200 использует SDK cc3200 от TI и поддерживает необработанный сокет)
  • Изменить modlwip.c

Существует неофициальный порт (серия Realtek ameba), поддерживающий необработанный сокет. Вы можете начать с этого.

https://github.com/wylinks/micropython-ameba/blob/ameba/ports/ameba/mphelper/mods/modlwip.c

...