Libraries are module specific? Xenon with TCPClient

I’ve been playing with a Xenon plugged into a Featherwing (obtained from the Spectra conference!).

It appears that some libraries - specifically TCPClient - won’t compile when I have the Xenon selected.

I’m using the WebIDE.

I suppose this makes sense, since the Xenon’s communications would normally be through a gateway (e.g., Argon or Boron) and that TCP communications may not be set up to tunnel through the gateway…

Or will IP (TCP and/or UDP) connections get carried over the mesh communications to the 'net?

Or. since I’m using a Featherwing, shouldn’t this work anyway?

I have a feeling that the explanation is that I need to understand the Particle OS architecture a little better!

If libraries are now module specific, it seems like the WebIDE library search function needs enhancement so that you only are offered libraries suitable for the device. (while we’re at it, a catalog browsing user interface would be nice!)…

ok, ok, but what about using TCPClient on a Xenon?

A similar question was asked before and here is the respons (found via search feature and search term tcp mesh )

Thank you for matching my question with that thread!

This appears to answer my question that Xenons will not have TCP capabilities, and, at least at this point, do not appear to have them even if they’re plugged into a Featherwing.

The general problem exists that libraries need better cataloging and attributes so that we know which libraries work on which devices.

Thank you!

update: I’m now able to compile to a Xenon with TCPClient included. Program not tested…

I tried and it works (xenon + ethernet featherwing though) :slight_smile:

Laptop

$ while :; do nc -l -p 5555 | tee  output.log; sleep 1; done
This is from a xenon!

Xenon firmware

TCPClient client;
byte server[] = { 192, 168, 1, 153 }; // Laptop IP address
void setup()
{
  if (client.connect(server, 5555))
  {
    Particle.publish("TCP working!", "", PRIVATE);
    client.println("This is from a xenon!");
    
  }
  else
  {
    Particle.publish("TCP failed!", "", PRIVATE);
  }

  client.stop();
}

void loop()
{
}

Awesome - thanks!