diff --git a/CMakeLists.txt b/CMakeLists.txt index dd23e4c7..17490f1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,7 @@ set(NEURON_SOURCES src/core/neu_datatag_manager.c src/adapter/adapter.c src/adapter/cache.c + src/adapter/driver.c plugins/restful/handle.c plugins/restful/license.c plugins/restful/license_handle.c diff --git a/include/neuron/adapter.h b/include/neuron/adapter.h index da917030..5aaee1ac 100644 --- a/include/neuron/adapter.h +++ b/include/neuron/adapter.h @@ -26,6 +26,8 @@ extern "C" { #include +#include "type.h" + typedef uint32_t neu_node_id_t; typedef enum neu_node_type { @@ -55,11 +57,40 @@ typedef struct neu_config { void * buf; } neu_config_t; +typedef enum { + NEU_NODE_LINK_STATUS_DISCONNECTED = 0, + NEU_NODE_LINK_STATUS_CONNECTING = 1, + NEU_NODE_LINK_STATUS_CONNECTED = 2, +} neu_node_link_status_e; + +typedef enum { + NEU_NODE_RUNNING_STATUS_IDLE = 0, + NEU_NODE_RUNNING_STATUS_INIT = 1, + NEU_NODE_RUNNING_STATUS_READY = 2, + NEU_NODE_RUNNING_STATUS_RUNNING = 3, + NEU_NODE_RUNNING_STATUS_STOPPED = 4, +} neu_node_running_status_e; + +typedef struct { + neu_node_running_status_e running; + neu_node_link_status_e link; +} neu_node_status_t; + typedef struct adapter_callbacks { int (*command)(neu_adapter_t *adapter, neu_request_t *cmd, neu_response_t **p_result); int (*response)(neu_adapter_t *adapter, neu_response_t *resp); int (*event_notify)(neu_adapter_t *adapter, neu_event_notify_t *event); + + void (*set_link_status)(neu_adapter_t * adapter, + neu_node_link_status_e link_status); + + union { + struct { + int (*update)(neu_adapter_t *adapter, const char *tag_name, + neu_value_u value); + } driver; + }; } adapter_callbacks_t; #ifdef __cplusplus diff --git a/include/neuron/neu_plugin.h b/include/neuron/neu_plugin.h deleted file mode 100644 index 253f5182..00000000 --- a/include/neuron/neu_plugin.h +++ /dev/null @@ -1,169 +0,0 @@ -/** - * NEURON IIoT System for Industry 4.0 - * Copyright (C) 2020-2021 EMQ Technologies Co., Ltd All rights reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - **/ - -#ifndef NEURON_PLUGIN_H -#define NEURON_PLUGIN_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "adapter.h" - -#define NEURON_PLUGIN_VER_1_0 100 -#define NEURON_PLUGIN_VER_2_0 200 - -typedef struct neu_plugin_common { - uint32_t magic; - neu_plugin_link_state_e link_state; - neu_adapter_t * adapter; - const adapter_callbacks_t *adapter_callbacks; - uint32_t event_id; -} neu_plugin_common_t; - -typedef struct neu_plugin neu_plugin_t; - -typedef struct neu_plugin_intf_funs { - neu_plugin_t *(*open)(neu_adapter_t * adapter, - const adapter_callbacks_t *callbacks); - int (*close)(neu_plugin_t *plugin); - int (*init)(neu_plugin_t *plugin); - int (*uninit)(neu_plugin_t *plugin); - int (*start)(neu_plugin_t *plugin); - int (*stop)(neu_plugin_t *plugin); - int (*config)(neu_plugin_t *plugin, neu_config_t *configs); - int (*request)(neu_plugin_t *plugin, neu_request_t *req); - int (*event_reply)(neu_plugin_t *plugin, neu_event_reply_t *reply); - int (*validate_tag)(neu_plugin_t *plugin, neu_datatag_t *tag); -} neu_plugin_intf_funs_t; - -typedef struct neu_plugin_module { - const uint32_t version; - const char * module_name; - const char * module_descr; - const neu_plugin_intf_funs_t *intf_funs; - neu_node_type_e type; - plugin_kind_e kind; -} neu_plugin_module_t; - -inline static neu_plugin_common_t * -neu_plugin_to_plugin_common(neu_plugin_t *plugin) -{ - return (neu_plugin_common_t *) plugin; -} - -void neu_plugin_common_init(neu_plugin_common_t *common); -bool neu_plugin_common_check(neu_plugin_t *plugin); - -uint32_t neu_plugin_get_event_id(neu_plugin_t *plugin); - -neu_datatag_table_t *neu_system_get_datatags_table(neu_plugin_t *plugin, - neu_node_id_t ndoe_id); -intptr_t neu_system_add_node(neu_plugin_t *plugin, neu_node_type_e node_type, - const char *adapter_name, const char *plugin_name); -intptr_t neu_system_del_node(neu_plugin_t *plugin, neu_node_id_t node_id); -intptr_t neu_system_update_node(neu_plugin_t *plugin, neu_node_id_t node_id, - const char *node_name); -// uninit vector -vector_t neu_system_get_nodes(neu_plugin_t *plugin, neu_node_type_e node_type); -intptr_t neu_system_add_group_config(neu_plugin_t * plugin, - neu_node_id_t node_id, - neu_taggrp_config_t *grp_config); -intptr_t neu_system_del_group_config(neu_plugin_t *plugin, - neu_node_id_t node_id, char *config_name); -intptr_t neu_system_update_group_config(neu_plugin_t * plugin, - neu_node_id_t node_id, - neu_taggrp_config_t *grp_config); -neu_taggrp_config_t *neu_system_find_group_config(neu_plugin_t *plugin, - neu_node_id_t node_id, - const char * name); -neu_taggrp_config_t *neu_system_ref_group_config(neu_plugin_t *plugin, - neu_node_id_t node_id, - const char * name); -// uninit vector -vector_t neu_system_get_group_configs(neu_plugin_t *plugin, - neu_node_id_t node_id); -uint32_t neu_plugin_send_unsubscribe_cmd(neu_plugin_t * plugin, - neu_node_id_t src_node_id, - neu_node_id_t dst_node_id, - neu_taggrp_config_t *grp_config); -uint32_t neu_plugin_send_subscribe_cmd(neu_plugin_t * plugin, - neu_node_id_t src_node_id, - neu_node_id_t dst_node_id, - neu_taggrp_config_t *grp_config); -void neu_plugin_send_read_cmd(neu_plugin_t *plugin, uint32_t event_id, - neu_node_id_t node_id, - neu_taggrp_config_t *grp_configs); -void neu_plugin_send_write_cmd(neu_plugin_t *plugin, uint32_t event_id, - neu_node_id_t node_id, - neu_taggrp_config_t *grp_configs, - neu_data_val_t * data); -void neu_plugin_response_trans_data(neu_plugin_t * plugin, - neu_taggrp_config_t *grp_config, - neu_data_val_t *data, uint32_t event_id); -neu_node_id_t neu_plugin_self_node_id(neu_plugin_t *plugin); -const char * neu_plugin_self_node_name(neu_plugin_t *plugin); -neu_node_id_t neu_plugin_get_node_id_by_node_name(neu_plugin_t *plugin, - const char * node_name); - -intptr_t neu_system_add_plugin(neu_plugin_t *plugin, - const char * plugin_lib_name); - -int neu_plugin_notify_event_add_tags(neu_plugin_t *plugin, uint32_t event_id, - neu_node_id_t node_id, - const char * grp_config_name); -int neu_plugin_notify_event_del_tags(neu_plugin_t *plugin, uint32_t event_id, - neu_node_id_t node_id, - const char * grp_config_name); -int neu_plugin_notify_event_update_tags(neu_plugin_t *plugin, uint32_t event_id, - neu_node_id_t node_id, - const char * grp_config_name); -int neu_plugin_notify_event_update_license(neu_plugin_t *plugin, - uint32_t event_id); - -intptr_t neu_system_del_plugin(neu_plugin_t *plugin, plugin_id_t plugin_id); -intptr_t neu_system_update_plugin(neu_plugin_t *plugin, plugin_kind_e kind, - neu_node_type_e node_type, - const char * plugin_name, - const char * plugin_lib_name); -// uninit vector -vector_t neu_system_get_plugin(neu_plugin_t *plugin); - -int neu_plugin_tag_count_by_attribute(neu_taggrp_config_t *grp_config, - neu_datatag_table_t *tag_table, - neu_attribute_e attribute); - -intptr_t neu_plugin_set_node_setting(neu_plugin_t *plugin, - neu_node_id_t node_id, - const char * setting); -int32_t neu_plugin_get_node_setting(neu_plugin_t *plugin, neu_node_id_t node_id, - char **setting); -int32_t neu_plugin_get_node_state(neu_plugin_t *plugin, neu_node_id_t node_id, - neu_plugin_state_t *state); -intptr_t neu_plugin_node_ctl(neu_plugin_t *plugin, neu_node_id_t node_id, - neu_adapter_ctl_e ctl); -vector_t *neu_system_get_sub_group_configs(neu_plugin_t *plugin, - neu_node_id_t node_id); -intptr_t neu_plugin_validate_tag(neu_plugin_t *plugin, neu_node_id_t node_id, - neu_datatag_t *tag); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/neuron/neuron.h b/include/neuron/neuron.h index f3b6f8c9..295343d8 100644 --- a/include/neuron/neuron.h +++ b/include/neuron/neuron.h @@ -27,7 +27,7 @@ extern "C" { #include "file.h" #include "list.h" #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #include "neu_vector.h" #include "neuron/adapter.h" #include "panic.h" diff --git a/include/neuron/node.h b/include/neuron/node.h deleted file mode 100644 index 6d4adece..00000000 --- a/include/neuron/node.h +++ /dev/null @@ -1,93 +0,0 @@ -/** - * NEURON IIoT System for Industry 4.0 - * Copyright (C) 2020-2021 EMQ Technologies Co., Ltd All rights reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - **/ - -#ifndef _NEU_NODE_H_ -#define _NEU_NODE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "type.h" - -typedef enum { - NEU_NODE_DRIVER = 10, - NEU_NODE_CONFIG_APP = 11, - NEU_NODE_DATA_APP = 12, -} neu_nodep_type_e; - -typedef struct neu_node neu_node_t; -typedef struct neu_node_driver neu_node_driver_t; -typedef struct neu_node_config_app neu_node_config_app_t; -typedef struct neu_node_data_app neu_node_data_app_t; - -typedef enum { - NEU_NODE_LINK_STATUS_DISCONNECTED = 0, - NEU_NODE_LINK_STATUS_CONNECTING = 1, - NEU_NODE_LINK_STATUS_CONNECTED = 2, -} neu_node_link_status_e; - -typedef enum { - NEU_NODE_RUNNING_STATUS_IDLE = 0, - NEU_NODE_RUNNING_STATUS_INIT = 1, - NEU_NODE_RUNNING_STATUS_READY = 2, - NEU_NODE_RUNNING_STATUS_RUNNING = 3, - NEU_NODE_RUNNING_STATUS_STOPPED = 4, -} neu_node_running_status_e; - -typedef struct { - neu_node_running_status_e running; - neu_node_link_status_e link; -} neu_node_status_t; - -typedef struct neu_node_callbacks { - void (*set_link_status)(neu_node_t * node, - neu_node_link_status_e link_status); - int64_t (*send)(neu_node_t *node, uint16_t n_byte, uint8_t *bytes, - int flag); - int64_t (*syn_recv)(neu_node_t *node, uint16_t max_byte, uint8_t *bytes, - int flag); - union { - struct { - int (*update)(neu_node_driver_t *node, const char *tag_name, - neu_value_u value); - } driver; - - struct { - int (*config)(neu_node_config_app_t *node); - int (*read)(neu_node_config_app_t *node, const char *node_name, - const char *tag_name, neu_value_u *value); - int (*write)(neu_node_config_app_t *node, const char *node_name, - const char *tag_name, neu_value_u value); - } config_app; - - struct { - int (*read)(neu_node_data_app_t *node, const char *node_name, - const char *tag_name, neu_value_u *value); - int (*write)(neu_node_data_app_t *node, const char *node_name, - const char *tag_name, neu_value_u value); - } data_app; - }; -} neu_node_callbacks_t; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/neuron/plugin.h b/include/neuron/plugin.h index b5fe59eb..dceeb4b5 100644 --- a/include/neuron/plugin.h +++ b/include/neuron/plugin.h @@ -17,73 +17,176 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ -#ifndef _NEU_PLUGIN_H_ -#define _NEU_PLUGIN_H_ +#ifndef NEURON_PLUGIN_H +#define NEURON_PLUGIN_H #ifdef __cplusplus extern "C" { #endif -#include +#include "adapter.h" +#include "tag_group_config.h" +#include "type.h" -#include "utils/utarray.h" +#define NEURON_PLUGIN_VER_1_0 100 +#define NEURON_PLUGIN_VER_2_0 200 -#include "node.h" -#include "tag.h" +typedef struct neu_plugin_common { + uint32_t magic; + neu_plugin_link_state_e link_state; + neu_adapter_t * adapter; + const adapter_callbacks_t *adapter_callbacks; + uint32_t event_id; +} neu_plugin_common_t; -typedef enum { - NEU_PLUGIN_SYSTEM = 1, - NEU_PLUGIN_CUSTOM = 2, -} neu_plugin_type_e; +typedef struct neu_plugin neu_plugin_t; -typedef struct neu_pluginp neu_pluginp_t; typedef struct neu_plugin_group { - char * group_name; - UT_array *tag_names; - void * ctx; + neu_taggrp_config_t *group; + void * ctx; } neu_plugin_group_t; -typedef struct neu_pluginp_funs { - neu_pluginp_t *(*open)(neu_node_t * node, - const neu_node_callbacks_t *callbacks); - void (*close)(neu_pluginp_t *plugin); - int (*init)(neu_pluginp_t *plugin); - int (*uninit)(neu_pluginp_t *plugin); - int (*start)(neu_pluginp_t *plugin); - int (*stop)(neu_pluginp_t *plugin); - int (*config)(neu_pluginp_t *plugin, const char *config); - int (*asyn_recv)(neu_pluginp_t *plugin, uint16_t n_byte, uint8_t *bytes); +typedef struct neu_plugin_intf_funs { + neu_plugin_t *(*open)(neu_adapter_t * adapter, + const adapter_callbacks_t *callbacks); + int (*close)(neu_plugin_t *plugin); + int (*init)(neu_plugin_t *plugin); + int (*uninit)(neu_plugin_t *plugin); + int (*start)(neu_plugin_t *plugin); + int (*stop)(neu_plugin_t *plugin); + int (*config)(neu_plugin_t *plugin, neu_config_t *configs); + + int (*request)(neu_plugin_t *plugin, neu_request_t *req); + int (*event_reply)(neu_plugin_t *plugin, neu_event_reply_t *reply); + int (*validate_tag)(neu_plugin_t *plugin, neu_datatag_t *tag); union { struct { - int (*validate_tag)(neu_pluginp_t *plugin, neu_tag_t *tag); - void (*add_group)(neu_pluginp_t *plugin, neu_plugin_group_t *new); - void (*del_group)(neu_pluginp_t *plugin, neu_plugin_group_t *old); - void (*group_group)(neu_pluginp_t *plugin, neu_plugin_group_t *old, - neu_plugin_group_t *new); - int (*group_timer)(neu_pluginp_t * plugin, - neu_plugin_group_t *group); - int (*write_tag)(neu_pluginp_t *plugin, neu_tag_t *tag, + int (*validate_tag)(neu_plugin_t *plugin, neu_datatag_t *tag); + void (*add_group)(neu_plugin_t * plugin, + neu_plugin_group_t *new_group); + void (*del_group)(neu_plugin_t * plugin, + neu_plugin_group_t *old_group); + void (*group_group)(neu_plugin_t * plugin, + neu_plugin_group_t *old_group, + neu_plugin_group_t *new_group); + int (*group_timer)(neu_plugin_t *plugin, neu_plugin_group_t *group); + int (*write_tag)(neu_plugin_t *plugin, neu_datatag_t *tag, neu_value_u value); } driver; - - struct { - } config_app; - - struct { - } data_app; }; -} neu_pluginp_funs_t; -typedef struct neu_pluginp_module { - const uint32_t version; - const char * module_name; - const char * module_description; - neu_nodep_type_e node_type; - const neu_pluginp_funs_t *funs; - neu_plugin_type_e plugin_type; -} neu_pluginp_module_t; +} neu_plugin_intf_funs_t; +typedef struct neu_plugin_module { + const uint32_t version; + const char * module_name; + const char * module_descr; + const neu_plugin_intf_funs_t *intf_funs; + neu_node_type_e type; + plugin_kind_e kind; +} neu_plugin_module_t; + +inline static neu_plugin_common_t * +neu_plugin_to_plugin_common(neu_plugin_t *plugin) +{ + return (neu_plugin_common_t *) plugin; +} + +void neu_plugin_common_init(neu_plugin_common_t *common); +bool neu_plugin_common_check(neu_plugin_t *plugin); + +uint32_t neu_plugin_get_event_id(neu_plugin_t *plugin); + +neu_datatag_table_t *neu_system_get_datatags_table(neu_plugin_t *plugin, + neu_node_id_t ndoe_id); +intptr_t neu_system_add_node(neu_plugin_t *plugin, neu_node_type_e node_type, + const char *adapter_name, const char *plugin_name); +intptr_t neu_system_del_node(neu_plugin_t *plugin, neu_node_id_t node_id); +intptr_t neu_system_update_node(neu_plugin_t *plugin, neu_node_id_t node_id, + const char *node_name); +// uninit vector +vector_t neu_system_get_nodes(neu_plugin_t *plugin, neu_node_type_e node_type); +intptr_t neu_system_add_group_config(neu_plugin_t * plugin, + neu_node_id_t node_id, + neu_taggrp_config_t *grp_config); +intptr_t neu_system_del_group_config(neu_plugin_t *plugin, + neu_node_id_t node_id, char *config_name); +intptr_t neu_system_update_group_config(neu_plugin_t * plugin, + neu_node_id_t node_id, + neu_taggrp_config_t *grp_config); +neu_taggrp_config_t *neu_system_find_group_config(neu_plugin_t *plugin, + neu_node_id_t node_id, + const char * name); +neu_taggrp_config_t *neu_system_ref_group_config(neu_plugin_t *plugin, + neu_node_id_t node_id, + const char * name); +// uninit vector +vector_t neu_system_get_group_configs(neu_plugin_t *plugin, + neu_node_id_t node_id); +uint32_t neu_plugin_send_unsubscribe_cmd(neu_plugin_t * plugin, + neu_node_id_t src_node_id, + neu_node_id_t dst_node_id, + neu_taggrp_config_t *grp_config); +uint32_t neu_plugin_send_subscribe_cmd(neu_plugin_t * plugin, + neu_node_id_t src_node_id, + neu_node_id_t dst_node_id, + neu_taggrp_config_t *grp_config); +void neu_plugin_send_read_cmd(neu_plugin_t *plugin, uint32_t event_id, + neu_node_id_t node_id, + neu_taggrp_config_t *grp_configs); +void neu_plugin_send_write_cmd(neu_plugin_t *plugin, uint32_t event_id, + neu_node_id_t node_id, + neu_taggrp_config_t *grp_configs, + neu_data_val_t * data); +void neu_plugin_response_trans_data(neu_plugin_t * plugin, + neu_taggrp_config_t *grp_config, + neu_data_val_t *data, uint32_t event_id); +neu_node_id_t neu_plugin_self_node_id(neu_plugin_t *plugin); +const char * neu_plugin_self_node_name(neu_plugin_t *plugin); +neu_node_id_t neu_plugin_get_node_id_by_node_name(neu_plugin_t *plugin, + const char * node_name); + +intptr_t neu_system_add_plugin(neu_plugin_t *plugin, + const char * plugin_lib_name); + +int neu_plugin_notify_event_add_tags(neu_plugin_t *plugin, uint32_t event_id, + neu_node_id_t node_id, + const char * grp_config_name); +int neu_plugin_notify_event_del_tags(neu_plugin_t *plugin, uint32_t event_id, + neu_node_id_t node_id, + const char * grp_config_name); +int neu_plugin_notify_event_update_tags(neu_plugin_t *plugin, uint32_t event_id, + neu_node_id_t node_id, + const char * grp_config_name); +int neu_plugin_notify_event_update_license(neu_plugin_t *plugin, + uint32_t event_id); + +intptr_t neu_system_del_plugin(neu_plugin_t *plugin, plugin_id_t plugin_id); +intptr_t neu_system_update_plugin(neu_plugin_t *plugin, plugin_kind_e kind, + neu_node_type_e node_type, + const char * plugin_name, + const char * plugin_lib_name); +// uninit vector +vector_t neu_system_get_plugin(neu_plugin_t *plugin); + +int neu_plugin_tag_count_by_attribute(neu_taggrp_config_t *grp_config, + neu_datatag_table_t *tag_table, + neu_attribute_e attribute); + +intptr_t neu_plugin_set_node_setting(neu_plugin_t *plugin, + neu_node_id_t node_id, + const char * setting); +int32_t neu_plugin_get_node_setting(neu_plugin_t *plugin, neu_node_id_t node_id, + char **setting); +int32_t neu_plugin_get_node_state(neu_plugin_t *plugin, neu_node_id_t node_id, + neu_plugin_state_t *state); +intptr_t neu_plugin_node_ctl(neu_plugin_t *plugin, neu_node_id_t node_id, + neu_adapter_ctl_e ctl); +vector_t *neu_system_get_sub_group_configs(neu_plugin_t *plugin, + neu_node_id_t node_id); +intptr_t neu_plugin_validate_tag(neu_plugin_t *plugin, neu_node_id_t node_id, + neu_datatag_t *tag); #ifdef __cplusplus } #endif diff --git a/package/create_neuron_sdk_deb.py b/package/create_neuron_sdk_deb.py index f6840656..41f67891 100755 --- a/package/create_neuron_sdk_deb.py +++ b/package/create_neuron_sdk_deb.py @@ -91,9 +91,9 @@ rules.append(mkdeb.FileMap("../include/neuron/tag_group_config.h", "/usr/local/include/neuron/")) rules.append(mkdeb.FileMap("../include/neuron/types.h", "/usr/local/include/neuron/")) - -rules.append(mkdeb.FileMap("../include/neuron/neu_plugin.h", +rules.append(mkdeb.FileMap("../include/neuron/plugin.h", "/usr/local/include/neuron/")) + rules.append(mkdeb.FileMap("../include/neuron/neu_tag.h", "/usr/local/include/neuron/")) rules.append(mkdeb.FileMap("../include/neuron/neu_vector.h", diff --git a/plugins/dummy/dummy.c b/plugins/dummy/dummy.c index 9aacb666..edf8ae13 100644 --- a/plugins/dummy/dummy.c +++ b/plugins/dummy/dummy.c @@ -27,7 +27,7 @@ #include "config.h" #include "dummy.h" #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #define neu_plugin_module default_dummy_plugin_module diff --git a/plugins/dummy/dummy.h b/plugins/dummy/dummy.h index e9cc4932..d68e627a 100644 --- a/plugins/dummy/dummy.h +++ b/plugins/dummy/dummy.h @@ -20,7 +20,7 @@ #ifndef _NEU_PLUGIN_DUMMY_H_ #define _NEU_PLUGIN_DUMMY_H_ -#include "neu_plugin.h" +#include "plugin.h" extern const neu_plugin_module_t default_dummy_plugin_module; diff --git a/plugins/restful/adapter_handle.c b/plugins/restful/adapter_handle.c index 2bf19914..a410158c 100644 --- a/plugins/restful/adapter_handle.c +++ b/plugins/restful/adapter_handle.c @@ -21,7 +21,7 @@ #include "vector.h" -#include "neu_plugin.h" +#include "plugin.h" #include "json/neu_json_error.h" #include "json/neu_json_fn.h" #include "json/neu_json_node.h" diff --git a/plugins/restful/datatag_handle.c b/plugins/restful/datatag_handle.c index 9123197f..1cda145b 100644 --- a/plugins/restful/datatag_handle.c +++ b/plugins/restful/datatag_handle.c @@ -22,7 +22,7 @@ #include "datatag_table.h" #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #include "json/neu_json_error.h" #include "json/neu_json_fn.h" #include "json/neu_json_tag.h" diff --git a/plugins/restful/group_config_handle.c b/plugins/restful/group_config_handle.c index b462d306..864c53fa 100644 --- a/plugins/restful/group_config_handle.c +++ b/plugins/restful/group_config_handle.c @@ -22,7 +22,7 @@ #include "vector.h" #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #include "subscribe.h" #include "json/neu_json_error.h" #include "json/neu_json_fn.h" diff --git a/plugins/restful/handle.c b/plugins/restful/handle.c index a8fa5830..7f08c3be 100644 --- a/plugins/restful/handle.c +++ b/plugins/restful/handle.c @@ -26,7 +26,7 @@ #include "datatag_table.h" #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #include "adapter_handle.h" #include "datatag_handle.h" diff --git a/plugins/restful/handle.h b/plugins/restful/handle.h index 3fc9db16..65e4f333 100644 --- a/plugins/restful/handle.h +++ b/plugins/restful/handle.h @@ -22,7 +22,7 @@ #include -#include "neu_plugin.h" +#include "plugin.h" #include "utils/neu_jwt.h" #include "json/neu_json_error.h" diff --git a/plugins/restful/license_handle.c b/plugins/restful/license_handle.c index 2c9392db..c29579bf 100644 --- a/plugins/restful/license_handle.c +++ b/plugins/restful/license_handle.c @@ -23,8 +23,8 @@ #include "errcodes.h" #include "file.h" -#include "neu_plugin.h" #include "neu_vector.h" +#include "plugin.h" #include "json/neu_json_error.h" #include "json/neu_json_fn.h" #include "json/neu_json_license.h" diff --git a/plugins/restful/plugin_handle.c b/plugins/restful/plugin_handle.c index 501d6695..3d800dd1 100644 --- a/plugins/restful/plugin_handle.c +++ b/plugins/restful/plugin_handle.c @@ -21,7 +21,7 @@ #include "vector.h" -#include "neu_plugin.h" +#include "plugin.h" #include "json/neu_json_fn.h" #include "json/neu_json_plugin.h" diff --git a/plugins/restful/rest.h b/plugins/restful/rest.h index 87fd86a4..5b3d1a44 100644 --- a/plugins/restful/rest.h +++ b/plugins/restful/rest.h @@ -20,7 +20,7 @@ #ifndef _NEU_PLUGIN_REST_H_ #define _NEU_PLUGIN_REST_H_ -#include "neu_plugin.h" +#include "plugin.h" extern const neu_plugin_module_t default_dashboard_plugin_module; diff --git a/plugins/restful/rw_handle.c b/plugins/restful/rw_handle.c index 50c04169..e4906ff6 100644 --- a/plugins/restful/rw_handle.c +++ b/plugins/restful/rw_handle.c @@ -3,7 +3,7 @@ #include #include "log.h" -#include "neu_plugin.h" +#include "plugin.h" #include "json/neu_json_fn.h" #include "json/neu_json_rw.h" diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c index 7169f019..df5aa701 100644 --- a/src/adapter/adapter.c +++ b/src/adapter/adapter.c @@ -35,10 +35,11 @@ #include "core/neu_manager.h" #include "core/neu_trans_buf.h" #include "core/plugin_manager.h" +#include "driver_internal.h" #include "log.h" -#include "neu_plugin.h" #include "panic.h" #include "persist/persist.h" +#include "plugin.h" #include "plugin_info.h" #include "subscribe.h" #include "tag_group_config.h" @@ -1869,6 +1870,10 @@ neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info, nng_setopt(adapter->sock, NNG_OPT_RECVTIMEO, &recv_timeout, sizeof(recv_timeout)); + if (adapter->type == ADAPTER_TYPE_DRIVERX) { + adapter = (neu_adapter_t *) neu_adapter_driver_create(adapter); + } + log_info("Success to create adapter: %s", adapter->name); return adapter; } @@ -1879,6 +1884,10 @@ void neu_adapter_destroy(neu_adapter_t *adapter) neu_panic("Destroied adapter is NULL"); } + if (adapter->type == ADAPTER_TYPE_DRIVERX) { + neu_adapter_driver_destroy((neu_adapter_driver_t *) adapter); + } + nng_close(adapter->sock); if (adapter->plugin_module != NULL) { adapter->plugin_module->intf_funs->close(adapter->plugin); diff --git a/src/adapter/adapter_internal.h b/src/adapter/adapter_internal.h index a9b029b2..fc45e46f 100644 --- a/src/adapter/adapter_internal.h +++ b/src/adapter/adapter_internal.h @@ -24,7 +24,7 @@ #include #include -#include "neu_plugin.h" +#include "plugin.h" #include "plugin_info.h" #include "adapter_info.h" @@ -72,6 +72,7 @@ int neu_adapter_start(neu_adapter_t *adapter); int neu_adapter_stop(neu_adapter_t *adapter); int neu_adapter_init(neu_adapter_t *adapter); int neu_adapter_uninit(neu_adapter_t *adapter); + const char * neu_adapter_get_name(neu_adapter_t *adapter); void neu_adapter_rename(neu_adapter_t *adapter, const char *name); neu_manager_t *neu_adapter_get_manager(neu_adapter_t *adapter); diff --git a/src/adapter/driver.c b/src/adapter/driver.c index 7524123c..aac2b7b7 100644 --- a/src/adapter/driver.c +++ b/src/adapter/driver.c @@ -20,12 +20,12 @@ #include "event/event.h" +#include "adapter.h" +#include "adapter_internal.h" #include "cache.h" -#include "node.h" -#include "node_internal.h" -struct neu_node_driver { - neu_node_t node; +struct neu_adapter_driver { + neu_adapter_t adapter; neu_driver_cache_t *cache; @@ -33,12 +33,12 @@ struct neu_node_driver { neu_event_ctx_t *driver_events; }; -neu_node_driver_t *neu_node_driver_create(neu_node_t *node) +neu_adapter_driver_t *neu_adapter_driver_create(neu_adapter_t *adapter) { - neu_node_driver_t *driver = calloc(1, sizeof(neu_node_driver_t)); + neu_adapter_driver_t *driver = calloc(1, sizeof(neu_adapter_driver_t)); - driver->node = *node; - free(node); + driver->adapter = *adapter; + free(adapter); driver->cache = neu_driver_cache_new(); driver->msg_events = neu_event_new(); @@ -47,38 +47,38 @@ neu_node_driver_t *neu_node_driver_create(neu_node_t *node) return driver; } -void neu_node_driver_destroy(neu_node_driver_t *driver) +void neu_adapter_driver_destroy(neu_adapter_driver_t *driver) { neu_event_close(driver->driver_events); neu_event_close(driver->msg_events); neu_driver_cache_destroy(driver->cache); } -int neu_node_driver_start(neu_node_driver_t *driver) +int neu_adapter_driver_start(neu_adapter_driver_t *driver) { (void) driver; return 0; } -int neu_node_driver_stop(neu_node_driver_t *driver) +int neu_adapter_driver_stop(neu_adapter_driver_t *driver) { (void) driver; return 0; } -int neu_node_driver_init(neu_node_driver_t *driver) +int neu_adapter_driver_init(neu_adapter_driver_t *driver) { (void) driver; return 0; } -int neu_node_driver_uninit(neu_node_driver_t *driver) +int neu_adapter_driver_uninit(neu_adapter_driver_t *driver) { (void) driver; return 0; } -void neu_node_driver_process_msg(neu_node_driver_t *driver) +void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver) { (void) driver; -} \ No newline at end of file +} diff --git a/src/adapter/driver_internal.h b/src/adapter/driver_internal.h index 8ac545c8..233b8ac2 100644 --- a/src/adapter/driver_internal.h +++ b/src/adapter/driver_internal.h @@ -17,19 +17,19 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ -#ifndef _NEU_NODE_DRIVER_INTERNAL_H_ -#define _NEU_NODE_DRIVER_INTERNAL_H_ +#ifndef _NEU_ADAPTER_DRIVER_INTERNAL_H_ +#define _NEU_ADAPTER_DRIVER_INTERNAL_H_ -#include "node.h" +#include "adapter.h" -neu_node_driver_t *neu_node_driver_create(neu_node_t *node); +neu_adapter_driver_t *neu_adapter_driver_create(neu_adapter_t *adapter); -void neu_node_driver_destroy(neu_node_driver_t *driver); -int neu_node_driver_start(neu_node_driver_t *driver); -int neu_node_driver_stop(neu_node_driver_t *driver); -int neu_node_driver_init(neu_node_driver_t *driver); -int neu_node_driver_uninit(neu_node_driver_t *driver); +void neu_adapter_driver_destroy(neu_adapter_driver_t *driver); +int neu_adapter_driver_start(neu_adapter_driver_t *driver); +int neu_adapter_driver_stop(neu_adapter_driver_t *driver); +int neu_adapter_driver_init(neu_adapter_driver_t *driver); +int neu_adapter_driver_uninit(neu_adapter_driver_t *driver); -void neu_node_driver_process_msg(neu_node_driver_t *driver); +void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver); #endif diff --git a/src/base/neu_plugin_common.c b/src/base/neu_plugin_common.c index 2411ae84..412ebdd2 100644 --- a/src/base/neu_plugin_common.c +++ b/src/base/neu_plugin_common.c @@ -22,7 +22,7 @@ #include #include "errcodes.h" -#include "neu_plugin.h" +#include "plugin.h" #define NEU_PLUGIN_MAGIC_NUMBER 0x43474d50 // a string "PMGC" diff --git a/src/core/plugin_manager.h b/src/core/plugin_manager.h index 75c57499..ebedf3c4 100644 --- a/src/core/plugin_manager.h +++ b/src/core/plugin_manager.h @@ -27,7 +27,7 @@ extern "C" { #include #include "adapter/adapter_internal.h" -#include "neu_plugin.h" +#include "plugin.h" #include "plugin_info.h" #define DEFAULT_DASHBOARD_PLUGIN_NAME "default-dashboard-plugin"