/// A struct containing all parameters used for opening a mesh.
typedef struct meshlink_open_params meshlink_open_params_t;
+/// A handle for a MeshLink sub-mesh.
+typedef struct meshlink_submesh meshlink_submesh_t;
+
/// Code of most recent error encountered.
typedef enum {
MESHLINK_OK, ///< Everything is fine
MESHLINK_ENETWORK, ///< MeshLink encountered a network error
MESHLINK_EPEER, ///< A peer caused an error
MESHLINK_ENOTSUP, ///< The operation is not supported in the current configuration of MeshLink
- MESHLINK_EBUSY, ///< The MeshLink instance is already in use by another process
+ MESHLINK_EBUSY ///< The MeshLink instance is already in use by another process
} meshlink_errno_t;
/// Device class
void *priv; ///< Private pointer which may be set freely by the application, and is never used or modified by MeshLink.
};
+struct meshlink_submesh {
+ const char *const name; ///< Textual name of this Sub-Mesh. It is stored in a nul-terminated C string, which is allocated by MeshLink.
+ void *priv; ///< Private pointer which may be set freely by the application, and is never used or modified by MeshLink.
+};
+
struct meshlink_channel {
struct meshlink_node *const node; ///< Pointer to the peer of this channel.
void *priv; ///< Private pointer which may be set freely by the application, and is never used or modified by MeshLink.
*/
extern meshlink_handle_t *meshlink_open(const char *confbase, const char *name, const char *appname, dev_class_t devclass);
+/// Create Sub-Mesh.
+/** This function causes MeshLink to open a new Sub-Mesh network
+ * create a new thread, which will handle all network I/O.
+ *
+ * It is allowed to call this function even if MeshLink is already started, in which case it will return true.
+ *
+ * @param mesh A handle which represents an instance of MeshLink.
+ *
+ * @param submesh Name of the new Sub-Mesh to create.
+ *
+ * @return A pointer to a meshlink_submesh_t which represents this instance of SubMesh, or NULL in case of an error.
+ * The pointer is valid until meshlink_close() is called.
+ */
+meshlink_submesh_t *meshlink_submesh_open(meshlink_handle_t *mesh, const char *submesh);
+
/// Start MeshLink.
/** This function causes MeshLink to open network sockets, make outgoing connections, and
* create a new thread, which will handle all network I/O.
MESHLINK_INFO, ///< Informational messages.
MESHLINK_WARNING, ///< Warnings which might indicate problems, but which are not real errors.
MESHLINK_ERROR, ///< Errors which hamper correct functioning of MeshLink, without causing it to fail completely.
- MESHLINK_CRITICAL, ///< Critical errors which cause MeshLink to fail completely.
+ MESHLINK_CRITICAL ///< Critical errors which cause MeshLink to fail completely.
} meshlink_log_level_t;
/// A callback for receiving log messages generated by MeshLink.