* Add support MSG_DATA_READ_RESP/MSG_DATA_WRITE_RESP in adapter
for read/write data
* Add NEU_REQRESP_READ_RESP/NEU_REQRESP_WRITE_RESP in core manager
for read/write data
* Add return result of array in sample driver plugin for read/write data
* Add handle result of array in sample app plugin for read/write data
* Add subscribe/unsubscribe node in command and request interface.
* Add neuron request structure for subscribe/unsubscribe node.
* Add subscribe node before enter message loop.
* Add unsubscribe node after exit message loop.
* Add compare function for primitive value.
* Add vector_find_index/vector_find_item/vector_has_elem util function
for vector.
* Forward subscribe/unsubsribe message in manager, and make sure to
forward the subscribe/unsubsribe message only once.
* Add neu_int_val_t and neu_string_val_t structures and functions
* Add functions for set/get int-val and string-val in data value
* Add functions for supoort serial/deserial int-val and string-val
* Add commands for start/stop periodic read and support in manager
* Add commands for subscribe/unsubscribe driver and support in manager
* Add commands for group config changed and support in manager
The nng_dial function sometimes returned after call the callback
function manager_bind_adapter by nng_pipe_notify. This causes the
manager_bind_adapter function to be called with another missing adapter,
the bind_count of current bound adapter should not be changed, so it
will be stuck on waiting for the bind adapter.
add NEU_REQRESP_GET_SELF_NODE_ID cmd
add get_datatags_table func
define neu_addt_str_t
fix compile warning
add magic number and check function in neu_plugin_common_t
* Sometimes add subscription pipe to group config will be executed before
bind adapter, the wrong pipe will be subscribe in group config. So we
wait for complete binding adapter and then add subscription pipe.
* Fix issue of failed to build with gcc 10.3.0
* Support these sync command in adapter.c
* Add some interface functions in neu_manager.c to support these command
* Add enum type of error code for neuron
If we set manager to adapter in function neu_adapter_start, then the
source code "adapter->manager = manager" sometimes running after get
manager in function manager_bind_adapter.
So we set manager to adapter in function neu_adapter_create.