Commit graph

144 commits

Author SHA1 Message Date
Island
feb7f9683c Merge branch 'bugfix/ble_mesh_add_missing_cpp' into 'master'
ble_mesh: Add missing #ifdef __cplusplus

Closes BLEMESH-194

See merge request espressif/esp-idf!8310
2020-04-27 11:47:44 +08:00
Island
1e12673b3c Merge branch 'feat/ble_mesh_sensor_model_example' into 'master'
ble_mesh: Add ble mesh sensor model examples

Closes BLEMESH-190

See merge request espressif/esp-idf!8253
2020-04-27 11:47:06 +08:00
Island
71dc5eb276 Merge branch 'doc/ble_mesh_fixes' into 'master'
doc: Fix some ble mesh description

Closes BLEMESH-189

See merge request espressif/esp-idf!8240
2020-04-27 11:43:48 +08:00
lly
91d70cd128 ble_mesh: Add missing #ifdef __cplusplus 2020-04-26 06:50:35 +00:00
lly
77bb7806a0 ble_mesh: Fix client local parameters not initialized 2020-04-26 06:25:08 +00:00
lly
713581ae87 ble_mesh: Continue node info restore even if failure happens
During BLE Mesh Provisioner initialization, the stack will restore
the nodes information if settings storage is enabled.
Previously when a failure happens (e.g. found the same uuid) during
the restore procedure, the information of the following nodes will
not be restored and error will be directly returned.
But this will introduce some problem with user experience, because
some newly provisioned nodes information will not be restored and
Provisioner will not be able to control those nodes.
So we change the operation here, when a failure happens during the
restore procedure, Provisioner will only ignore the information of
the current node and continue restoring other nodes information.
2020-04-26 06:25:08 +00:00
lly
73804ef4d3 ble_mesh: Remove some redundant functions 2020-04-26 06:25:08 +00:00
lly
f37bc1a515 ble_mesh: Notify unprovisioned device beacon to application layer
With this change, if a Provisioner has provisioned the maximum
number of nodes, it can still report the unprovisioned device
beacon from other nodes to the application layer. And this will
be more reasonable compared with the previous implementation.
Previously when the node array of Provisioner is full, no beacon
from unprovisioned devices will be reported, only some warning
logs will be given.
2020-04-26 06:25:08 +00:00
lly
88b0cd918a ble_mesh: Check if assigned node address is duplicated
Previously only check the node address when it is assigned by the
application layer. Here we also check the address when the address
is allocated internally. And this will be useful when some mesh
internal tests are performed.
2020-04-26 06:25:08 +00:00
lly
7486616382 ble_mesh: Update next alloc address when node info is added 2020-04-26 06:25:08 +00:00
lly
a4d9259912 ble_mesh: Fix Provisioner provisioning deadlock 2020-04-26 06:25:08 +00:00
lly
8d57ebf57d ble_mesh: Remove BLE_MESH_MAX_STORED_NODES option
Previously the BLE_MESH_MAX_STORED_NODES option is added for
internal mesh test, which will be a little confusing for the
users to understand.
Here we remove this option, instead the BLE_MESH_MAX_PROV_NODES
will be used for all the cases. For mesh internal test, when
the test function is called to add some nodes info, the info
will be stored in the array of provisioned nodes directly.
2020-04-26 06:25:08 +00:00
lly
ec2324edbe ble_mesh: Associate replay protection list size with nodes count
The replay protection list of Provisioner should be at least equal
to the number of nodes with the precondition that each node contains
only one element.
The help information of replay protection list is updated, and the
maximum number of nodes for Provisioner is adjusted based on the
replay protection list size.
2020-04-26 06:25:08 +00:00
lly
2f6a4140fa doc: Fix some ble mesh description 2020-04-26 06:22:33 +00:00
lly
e8c5f5dc03 ble_mesh: Add some common macros for sensor model 2020-04-26 06:08:44 +00:00
lly
361dd8b29c ble_mesh: Allow empty sensor series column value 2020-04-26 06:08:44 +00:00
lly
561191d50f ble_mesh: Check if same sensor (settings) property id exists 2020-04-26 06:08:44 +00:00
lly
3862f0e784 ble_mesh: Allow empty sensor settings exist 2020-04-26 06:08:44 +00:00
lly
a919e20c1a ble_mesh: Support BLE advertising simultaneously 2020-04-02 01:03:25 +00:00
lly
45d43f005a ble_mesh: Add ble mesh white list test function
Using the ble mesh white list test functions, a node can choose to
only receive mesh messages from a specific node and relay the
messages for it. Messages from other nodes will be ignored.
2020-03-25 11:30:08 +08:00
lly
ac2ef797fe ble_mesh: Fix ble mesh nimble host deinit 2020-03-16 12:45:58 +08:00
lly
2ed1724fc2 ble_mesh: Move dev_role to the end of model_pub 2020-03-12 17:48:09 +08:00
lly
5a90ea3048 ble_mesh: Use the right netkey during iv update 2020-03-12 17:43:19 +08:00
lly
37466d957d ble_mesh: Use the right net_idx & app_idx for publish 2020-03-12 17:43:19 +08:00
lly
1795107533 ble_mesh: Check buf->ref before unref the buffer 2020-03-12 17:43:19 +08:00
lly
2b80649a79 ble_mesh: Fix mesh memory use-after-free issue 2020-03-12 17:43:19 +08:00
lly
08080edb1b ble_mesh: Add ble mesh deinit in btc task 2020-03-12 17:43:19 +08:00
lly
9d3ad04667 ble_mesh: Free beacon timer when deinit mesh 2020-03-12 17:43:19 +08:00
lly
13ab2f4015 ble_mesh: Use lock for mesh timer operations 2020-03-12 17:43:19 +08:00
lly
134f57b8e0 ble_mesh: Calc incomplete timeout based on msg info 2020-02-26 17:42:04 +08:00
lly
087bafe5b9 ble_mesh: Start the timer when starting to send the client message 2020-02-26 17:41:46 +08:00
lly
90f8a54a71 ble_mesh: No timeout for client message to non-unicast address 2020-02-26 17:41:30 +08:00
lly
97eca35805 ble_mesh: Unify client application and lower transport layer timeout 2020-02-26 17:41:11 +08:00
lly
e24645c791 ble_mesh: Allow maximum 377 octets payload 2020-02-26 17:40:46 +08:00
lly
828bfeac88 ble_mesh: Reset transport info when node is removed 2020-02-26 17:40:23 +08:00
lly
48343a8a8f ble_mesh: Provisioner ignores msg from removed node 2020-02-26 17:39:55 +08:00
lly
7cd08b5824 ble_mesh: Miscellaneous modifications
1. Add an API to set Provisioner static oob value
2. Add an API to deinit BLE Mesh stack
3. Add an API to set Provisioner unicast address
4. Add an API to provision devices with fixed address
5. Add an API to store node composition data
6. Add an API to get node with device uuid
7. Add an API to get node with unicast address
8. Add an API to delete node with device uuid
9. Add an API to delete node with unicast address
10. Add an API for Provisioner to update local AppKey
11. Add an API for Provisioner to update local NetKey
12. Support Provisioner persistent functionality
13. Fix Provisioner entering IV Update procedure
14. Fix an issue which may cause client failing to send msg
15. Use bt_mesh.flags to indicate device role
16. Remove several useless macros
17. Callback RSSI of received mesh provisioning packets
18. Modify the Provisioner disable function
19. Change some log level from debug to info
20. Add parameters to Provisioner bind AppKey completion event
21. Fix node ignoring relay messages issue
22. Support using a specific partition for BLE Mesh
23. Fix compile warning when proxy related macros are disabled
24. Clean up BLE Mesh stack included header files
25. NULL can be input if client message needs no parameters
26. Fix compile warning when BT log is disabled
27. Initilize BLE Mesh stack local variables
28. Support using PSRAM for BLE Mesh mutex, queue and task
29. Add a menuconfig option to enable using memory from PSRAM
30. Clean up sdkconfig.defaults of BLE Mesh examples
2020-02-26 17:37:44 +08:00
Jiang Jiang Jian
6d03758ac4 Merge branch 'bugfix/ble_mesh_fix_compile_error_with_cpp' into 'master'
ble_mesh: Fix compile error with c++ files

Closes BMCI-52

See merge request espressif/esp-idf!7579
2020-02-18 20:43:55 +08:00
lly
326ccfca88 ble_mesh: Fix compile error with c++ files 2020-02-12 21:24:32 +08:00
lly
bfb27addda ble_mesh: Kconfig included a UTF-8 comma 2020-02-12 18:21:09 +08:00
Angus Gratton
11fac8637a docs: Resolve doxygen & Sphinx warnings 2020-02-07 16:37:45 +11:00
Tian Hao
f351effdb2 fix Kconfig use mistake cause some config not effect
1. Fix bluedroid task pinned_to_core un-effected
2. other minor sdkconfig bugs
2020-01-20 17:43:36 +08:00
Jiang Jiang Jian
8ec233dfd0 Merge branch 'bugfix/sync_zephyr_v2.0_ble_mesh_fixes' into 'master'
ble_mesh: sync Zephyr v2.0 ble mesh fixes

Closes BLEMESH-56

See merge request espressif/esp-idf!6892
2020-01-12 20:23:57 +08:00
Jiang Jiang Jian
8cf4d02720 Merge branch 'bugfix/ble_mesh_update_lightness_last' into 'master'
ble_mesh: Update lightness last state when actual state is changed

See merge request espressif/esp-idf!7206
2020-01-10 14:47:29 +08:00
Jiang Jiang Jian
9ecc2c3309 Merge branch 'bugfix/fix_ble_mesh_memory_leak' into 'master'
ble_mesh: Fix memory leak when node is reset

Closes BLEMESH-122

See merge request espressif/esp-idf!7076
2020-01-10 11:43:49 +08:00
Geng Yu Chao
090843fa17 component/bt: Fix the issue with pointer type conversion in gattc. Unified count pointer type in bta and btc, change pointer type in bta from int to uint16_t. 2020-01-09 16:30:55 +08:00
lly
8116a787cd ble_mesh: Fix PreviousAddress endianess in Friend Request
The upper transport layer is using big endian ordering. The
PreviousAddress field of a Friend Request message should therefore
be converted to native endianess using sys_cpu_to_be16().
2020-01-06 16:19:03 +08:00
lly
fc80d107ad ble_mesh: Fix next_period computation
If the duration to publish is roughly the same as the period, we might
end up with elapsed == period, which returns 0 and cancel the periodic
publication. Instead 1 should be returned, just like when the elapsed
time is greater than the period.
2020-01-06 16:17:36 +08:00
lly
7d7bbec5fe ble_mesh: Make model publication struct more compact
Previously the FastPeriodDivisor value was introduced to the model
publication struct. Based on the way it was grouped it seems the
intention was to fit it within the same octet as other bit fields,
but it actually makes the octet overflow by one bit. This ends up
creating another u8_t variable which in turn adds 24 bits of padding
after it.

To keep the size of the struct as compact as possible, group the flag
together with the key index, since that only requires 12 bits. Some
care is needed here, since the mesh stack does have special internal
key index values that require more than 12 bits such as
BLE_MESH_KEY_UNUSED and BLE_MESH_KEY_DEV. In this case restricting
ourselves to 12 bits is fine since the value in the model publication
struct follows 1:1 the value received in the Config Model Publication
Set message, and there the parameter is defined to be exactly 12 bits.
2020-01-06 16:17:36 +08:00
lly
82b4b89dea ble_mesh: Fix compile error when using release optimization level 2020-01-06 16:17:36 +08:00