/// A handle for an instance of MeshLink.
struct meshlink_handle {
char *name;
- char *appname;
- dclass_t dclass;
void *priv;
+ char *appname;
+ dev_class_t devclass;
+
char *confbase;
meshlink_receive_cb_t receive_cb;
meshlink_log_cb_t log_cb;
meshlink_log_level_t log_level;
+ meshlink_channel_accept_cb_t channel_accept_cb;
+
pthread_t thread;
bool threadstarted;
pthread_mutex_t outpacketqueue_mutex;
void *priv;
};
+/// A channel.
+struct meshlink_channel {
+ struct utcp_connection *c;
+ struct node_t *node;
+ meshlink_channel_receive_cb_t receive_cb;
+};
+
/// Header for data packets routed between nodes
typedef struct meshlink_packethdr {
uint8_t destination[16];
extern meshlink_log_level_t global_log_level;
extern meshlink_log_cb_t global_log_cb;
-extern int weight_from_dclass(dclass_t dclass);
+/// Device class traits
+typedef struct {
+ unsigned int min_connects;
+ unsigned int max_connects;
+ int edge_weight;
+} dev_class_traits_t;
+
+extern dev_class_traits_t dev_class_traits[];
#endif // MESHLINK_INTERNAL_H