MESHLINK_EPEER, ///< A peer caused an error
} meshlink_errno_t;
-// Device class
+/// Device class
typedef enum {
- BACKBONE = 1,
- STATIONARY = 2,
- PORTABLE = 3
-} dclass_t;
+ DEV_CLASS_BACKBONE = 0,
+ DEV_CLASS_STATIONARY = 1,
+ DEV_CLASS_PORTABLE = 2,
+ DEV_CLASS_UNKNOWN = 3,
+ _DEV_CLASS_MAX = 3
+} dev_class_t;
/// A variable holding the last encountered error from MeshLink.
/** This is a thread local variable that contains the error code of the most recent error
#ifndef MESHLINK_INTERNAL_H
struct meshlink_handle {
- const char *name;
+ char *name;
+ char *appname;
+ dev_class_t devclass;
void *priv;
};
struct meshlink_node {
- const char *name; ///< Textual name of this node. It is stored in a nul-terminated C string, which is allocated by MeshLink.
+ char *name; ///< Textual name of this node. It is stored in a nul-terminated C string, which is allocated by MeshLink.
+ uint32_t options;
+ dev_class_t devclass;
void *priv; ///< Private pointer which may be set freely by the application, and is never used or modified by MeshLink.
};
// owned by meshlink and should not be
// deallocated. Node contents may be
// changed by meshlink.
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
struct sockaddr_storage address;///< The address information associated
-#endif
// with this edge.
uint32_t options; ///< Edge options. @TODO what are edge options?
int weight; ///< Weight assigned to this edge.
* After the function returns, the application is free to overwrite or free @a name @a.
* @param appname The application name which will be used in the mesh.
* After the function returns, the application is free to overwrite or free @a name @a.
- * @param dclass The device class which will be used in the mesh.
+ * @param devclass The device class which will be used in the mesh.
*
* @return A pointer to a meshlink_handle_t which represents this instance of MeshLink, or NULL in case of an error.
* The pointer is valid until meshlink_close() is called.
*/
-extern meshlink_handle_t *meshlink_open(const char *confbase, const char *name, const char* appname, dclass_t dclass);
+extern meshlink_handle_t *meshlink_open(const char *confbase, const char *name, const char* appname, dev_class_t devclass);
/// is used by the C++ wrapper to allocate more memory behind the handle
-extern meshlink_handle_t *meshlink_open_with_size(const char *confbase, const char *name, const char* appname, dclass_t dclass, size_t size);
+extern meshlink_handle_t *meshlink_open_with_size(const char *confbase, const char *name, const char* appname, dev_class_t devclass, size_t size);
/// Start MeshLink.
/** This function causes MeshLink to open network sockets, make outgoing connections, and
*
* @param mesh A handle which represents an instance of MeshLink.
* @param edges A pointer to a previously allocated array of pointers to
- * meshlink_edge_t, or NULL in which case MeshLink will
- * allocate a new array. The application CANNOT supply an
- * array it allocated itself with malloc, but CAN use
- * the return value from the previous call to this function
- * (which is the preferred way).
+ * meshlink_edge_t, or NULL in which case MeshLink will
+ * allocate a new array. The application CANNOT supply an
+ * array it allocated itself with malloc, but CAN use
+ * the return value from the previous call to this function
+ * (which is the preferred way).
* The pointers in the array are valid until meshlink_close() is called.
+ * ATTENTION: The pointers and values should never be modified
+ * by the application!!!
* @param nmemb A pointer to a variable holding the number of nodes that
- * are stored in the array. In case the @a nodes @a
- * argument is not NULL, MeshLink might call realloc()
- * on the array to change its size.
+ * are stored in the array. In case the @a nodes @a
+ * argument is not NULL, MeshLink might call realloc()
+ * on the array to change its size.
* The contents of this variable will be changed to reflect
* the new size of the array.
- *
* @return A pointer to an array containing pointers to all known
- * edges, or NULL in case of an error.
- * If the @a edges @a argument was not NULL, then the
- * retun value can be either the same value or a different
- * value. If the new values is NULL, then the old array
- * will have been freed by Meshlink.
- * The caller must call free() on each element of this
- * array (but not the contents of said elements),
- * as well as the array itself when it is finished.
+ * edges, or NULL in case of an error.
+ * If the @a edges @a argument was not NULL, then the
+ * retun value can be either the same value or a different
+ * value. If the new values is NULL, then the old array
+ * will have been freed by Meshlink.
+ * The caller must call free() on each element of this
+ * array (but not the contents of said elements),
+ * as well as the array itself when it is finished.
+ * ATTENTION: The pointers and values should never be modified
+ * by the application!!!
*/
extern meshlink_edge_t **meshlink_get_all_edges_state(meshlink_handle_t *mesh, meshlink_edge_t **edges, size_t *nmemb);