diff options
author | Inga Stotland <inga.stotland@intel.com> | 2019-07-14 16:23:12 -0700 |
---|---|---|
committer | Brian Gix <brian.gix@intel.com> | 2019-07-15 14:44:38 -0700 |
commit | 0c698b33a7841961f1097907b346bc73fba1f3e8 (patch) | |
tree | 11008ac5baf53ae9bb187c973c09f70a427420d0 /mesh/mesh-config.h | |
parent | 76700ab92b6daccab999faf0460220bb97b7b4c5 (diff) | |
download | bluez-0c698b33a7841961f1097907b346bc73fba1f3e8.tar.gz |
mesh: Rename mesh-db.c to mesh-config-json.c
This moves mesh-db.h to mesh-config.h and mesh-db.c to mesh-config-json.c.
mesh-config.h declares common APIs for storing mesh node configuration.
mesh-config-json.c defines the APIs for JSOn specific storage.
This allows for future parallel implementation a different (not JSON-based)
mechanism of storing node configuration.
Diffstat (limited to 'mesh/mesh-config.h')
-rw-r--r-- | mesh/mesh-config.h | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/mesh/mesh-config.h b/mesh/mesh-config.h new file mode 100644 index 000000000..da5efa12a --- /dev/null +++ b/mesh/mesh-config.h @@ -0,0 +1,157 @@ +/* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2018-2019 Intel Corporation. All rights reserved. + * + * + * This library 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 2.1 of the License, or (at your option) any later version. + * + * This library 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. + * + */ + +struct mesh_db_sub { + bool virt; + union { + uint16_t addr; + uint8_t virt_addr[16]; + } src; +}; + +struct mesh_db_pub { + bool virt; + uint32_t period; + uint16_t addr; + uint16_t idx; + uint8_t ttl; + uint8_t credential; + uint8_t count; + uint8_t interval; + uint8_t virt_addr[16]; +}; + +struct mesh_db_model { + struct mesh_db_sub *subs; + struct mesh_db_pub *pub; + uint16_t *bindings; + uint32_t id; + bool vendor; + uint32_t num_bindings; + uint32_t num_subs; +}; + +struct mesh_db_element { + struct l_queue *models; + uint16_t location; + uint8_t index; +}; + +struct mesh_db_modes { + struct { + uint16_t interval; + uint8_t cnt; + uint8_t state; + } relay; + uint8_t lpn; + uint8_t friend; + uint8_t proxy; + uint8_t beacon; +}; + +struct mesh_db_node { + bool provisioner; + uint32_t seq_number; + struct mesh_db_modes modes; + uint16_t cid; + uint16_t pid; + uint16_t vid; + uint16_t crpl; + uint16_t unicast; + uint8_t ttl; + struct l_queue *elements; +}; + +struct mesh_db_prov { + uint16_t algorithm; + struct { + uint16_t actions; + uint8_t size; + } input_oob; + uint8_t pub_type; + struct { + uint16_t actions; + uint8_t size; + } output_oob; + uint8_t static_type; + uint8_t priv_key[32]; +}; + +typedef bool (*mesh_db_net_key_cb)(uint16_t idx, uint8_t key[16], + uint8_t new_key[16], int phase, void *user_data); +typedef bool (*mesh_db_app_key_cb)(uint16_t idx, uint16_t net_idx, + uint8_t key[16], uint8_t new_key[16], void *user_data); +typedef bool (*mesh_db_node_cb)(struct mesh_db_node *node, void *user_data); + +bool mesh_db_read_node(json_object *jobj, mesh_db_node_cb cb, void *user_data); +bool mesh_db_add_node(json_object *jnode, struct mesh_db_node *node); +bool mesh_db_read_iv_index(json_object *jobj, uint32_t *idx, bool *update); +bool mesh_db_read_device_key(json_object *jobj, uint8_t key_buf[16]); +bool mesh_db_read_token(json_object *jobj, uint8_t token[8]); +bool mesh_db_read_net_transmit(json_object *jobj, uint8_t *cnt, + uint16_t *interval); +bool mesh_db_write_net_transmit(json_object *jobj, uint8_t cnt, + uint16_t interval); +bool mesh_db_read_net_keys(json_object *jobj, mesh_db_net_key_cb cb, + void *user_data); +bool mesh_db_read_app_keys(json_object *jobj, mesh_db_app_key_cb cb, + void *user_data); +bool mesh_db_write_device_key(json_object *jobj, uint8_t *key); +bool mesh_db_write_token(json_object *jobj, uint8_t *token); +bool mesh_db_write_network_key(json_object *jobj, uint16_t idx, uint8_t *key, + uint8_t *new_key, int phase); +bool mesh_db_write_app_key(json_object *jobj, uint16_t net_idx, + uint16_t app_idx, uint8_t *key, uint8_t *new_key); +bool mesh_db_write_int(json_object *jobj, const char *keyword, int value); +bool mesh_db_write_uint16_hex(json_object *jobj, const char *desc, + uint16_t value); +bool mesh_db_write_uint32_hex(json_object *jobj, const char *desc, + uint32_t value); +bool mesh_db_write_bool(json_object *jobj, const char *keyword, bool value); +bool mesh_db_write_relay_mode(json_object *jnode, uint8_t mode, uint8_t count, + uint16_t interval); +bool mesh_db_write_mode(json_object *jobj, const char *keyword, int value); +bool mesh_db_model_binding_add(json_object *jnode, uint8_t ele_idx, bool vendor, + uint32_t mod_id, uint16_t app_idx); +bool mesh_db_model_binding_del(json_object *jnode, uint8_t ele_idx, bool vendor, + uint32_t mod_id, uint16_t app_idx); +bool mesh_db_model_pub_add(json_object *jnode, uint16_t ele_addr, + uint32_t mod_id, bool vendor, struct mesh_db_pub *pub); +bool mesh_db_model_pub_del(json_object *jnode, uint16_t ele_addr, + uint32_t mod_id, bool vendor); +bool mesh_db_model_sub_add(json_object *jnode, uint16_t addr, uint32_t mod_id, + bool vendor, struct mesh_db_sub *sub); +bool mesh_db_model_sub_del(json_object *jnode, uint16_t addr, uint32_t mod_id, + bool vendor, struct mesh_db_sub *sub); +bool mesh_db_model_sub_del_all(json_object *jnode, uint16_t addr, + uint32_t mod_id, bool vendor); +bool mesh_db_app_key_add(json_object *jnode, uint16_t net_idx, uint16_t app_idx, + const uint8_t key[16]); +bool mesh_db_app_key_update(json_object *jobj, uint16_t app_idx, + const uint8_t key[16]); +bool mesh_db_app_key_del(json_object *jobj, uint16_t net_idx, uint16_t idx); +bool mesh_db_net_key_add(json_object *jobj, uint16_t net_idx, + const uint8_t key[16]); +bool mesh_db_net_key_update(json_object *jobj, uint16_t idx, + const uint8_t key[16]); +bool mesh_db_net_key_del(json_object *jobj, uint16_t net_idx); +bool mesh_db_net_key_set_phase(json_object *jobj, uint16_t idx, uint8_t phase); +bool mesh_db_write_address(json_object *jobj, uint16_t address); +bool mesh_db_write_iv_index(json_object *jobj, uint32_t idx, bool update); +void mesh_db_remove_property(json_object *jobj, const char *desc); |