Socket.bind ignores IP

  • I would like to use LTE for transmitting MQTT messages to TTN.
    The WLAN is used in AP mode to locally serve HTML pages to a tablet for configuration and showing status of the device.

    The LTE class has no function to get the IP address.
    First I create LTE, attach, check and connect.
    To access TTN via MQTT a socket is opened.
    It's opened on the first NIC found.
    Works fine if only LTE is started.

    Now when I start WLAN in AP mode (mode does'nt matter), WLAN registers its NIC, that means it appends to the NIC list.
    From WLAN.ifconfig I get the IP 0:0:0:0 in AP mode.
    Opening a socket links to the LTE NIC, not the WLAN NIC, although providing the IP address to bind to.

    Having a look at the source code in modnetwork.c, function mod_network_find_nic I noticed, that IP address is ignored and just the first NIC with AF_INET is returned.

    If two NIC's with AF_INET are registered, it's not possible to open a socket on the second.
    For selecting the correct NIC the IP address of the LTE is necessary, please add such a function and enhance the code in mod_network_find_nic.

Pycom on Twitter