2015-03-17 14:48:48 +03:00
/*
BlueZ - Bluetooth protocol stack for Linux
Copyright ( C ) 2015 Intel Coropration
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation ;
THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS
OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS .
IN NO EVENT SHALL THE COPYRIGHT HOLDER ( S ) AND AUTHOR ( S ) BE LIABLE FOR ANY
CLAIM , OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES , OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE , DATA OR PROFITS , WHETHER IN AN
ACTION OF CONTRACT , NEGLIGENCE OR OTHER TORTIOUS ACTION , ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE .
ALL LIABILITY , INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS ,
COPYRIGHTS , TRADEMARKS OR OTHER RIGHTS , RELATING TO USE OF THIS
SOFTWARE IS DISCLAIMED .
*/
2022-09-01 22:19:13 +03:00
struct mgmt_mesh_tx {
struct list_head list ;
int index ;
size_t param_len ;
struct sock * sk ;
u8 handle ;
u8 instance ;
u8 param [ sizeof ( struct mgmt_cp_mesh_send ) + 29 ] ;
} ;
2015-03-17 14:48:48 +03:00
struct mgmt_pending_cmd {
struct list_head list ;
u16 opcode ;
int index ;
void * param ;
size_t param_len ;
struct sock * sk ;
2021-10-28 02:58:52 +03:00
struct sk_buff * skb ;
2015-03-17 14:48:48 +03:00
void * user_data ;
int ( * cmd_complete ) ( struct mgmt_pending_cmd * cmd , u8 status ) ;
} ;
2021-12-04 03:15:40 +03:00
struct sk_buff * mgmt_alloc_skb ( struct hci_dev * hdev , u16 opcode ,
unsigned int size ) ;
int mgmt_send_event_skb ( unsigned short channel , struct sk_buff * skb , int flag ,
struct sock * skip_sk ) ;
2015-03-17 14:48:48 +03:00
int mgmt_send_event ( u16 event , struct hci_dev * hdev , unsigned short channel ,
void * data , u16 data_len , int flag , struct sock * skip_sk ) ;
int mgmt_cmd_status ( struct sock * sk , u16 index , u16 cmd , u8 status ) ;
int mgmt_cmd_complete ( struct sock * sk , u16 index , u16 cmd , u8 status ,
void * rp , size_t rp_len ) ;
struct mgmt_pending_cmd * mgmt_pending_find ( unsigned short channel , u16 opcode ,
struct hci_dev * hdev ) ;
struct mgmt_pending_cmd * mgmt_pending_find_data ( unsigned short channel ,
u16 opcode ,
struct hci_dev * hdev ,
const void * data ) ;
void mgmt_pending_foreach ( u16 opcode , struct hci_dev * hdev ,
void ( * cb ) ( struct mgmt_pending_cmd * cmd , void * data ) ,
void * data ) ;
struct mgmt_pending_cmd * mgmt_pending_add ( struct sock * sk , u16 opcode ,
struct hci_dev * hdev ,
void * data , u16 len ) ;
Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 1
This make use of hci_cmd_sync_queue for the following MGMT commands:
Set Device Class
Set Device ID
Add UUID
Remove UUID
tools/mgmt-tester -s "Set Device Class"
Test Summary
------------
Set Device Class - Success 1 Passed
Set Device Class - Success 2 Passed
Set Device Class - Invalid parameters 1 Passed
Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0599 seconds
tools/mgmt-tester -s "Set Device ID"
Test Summary
------------
Set Device ID - Success 1 Passed
Set Device ID - Success 2 Passed
Set Device ID - Disable Passed
Set Device ID - Power off and Power on Passed
Set Device ID - SSP off and Power on Passed
Set Device ID - Invalid Parameter Passed
Total: 6, Passed: 6 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.107 seconds
tools/mgmt-tester -s "Add UUID"
Test Summary
------------
Add UUID - UUID-16 1 Passed
Add UUID - UUID-16 multiple 1 Passed
Add UUID - UUID-16 partial 1 Passed
Add UUID - UUID-32 1 Passed
Add UUID - UUID-32 multiple 1 Passed
Add UUID - UUID-32 partial 1 Passed
Add UUID - UUID-128 1 Passed
Add UUID - UUID-128 multiple 1 Passed
Add UUID - UUID-128 partial 1 Passed
Add UUID - UUID mix Passed
Total: 10, Passed: 10 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.198 seconds
tools/mgmt-tester -s "Remove UUID"
Test Summary
------------
Remove UUID - Success 1 Passed
Remove UUID - All UUID - Success 2 Passed
Remove UUID - Power Off - Success 3 Passed
Remove UUID - Power Off and On - Success 4 Passed
Remove UUID - Not Exist - Invalid Params 1 Passed
Total: 5, Passed: 5 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0908 seconds
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2021-10-28 02:58:39 +03:00
struct mgmt_pending_cmd * mgmt_pending_new ( struct sock * sk , u16 opcode ,
struct hci_dev * hdev ,
void * data , u16 len ) ;
2015-03-17 14:48:48 +03:00
void mgmt_pending_free ( struct mgmt_pending_cmd * cmd ) ;
void mgmt_pending_remove ( struct mgmt_pending_cmd * cmd ) ;
2022-09-01 22:19:13 +03:00
void mgmt_mesh_foreach ( struct hci_dev * hdev ,
void ( * cb ) ( struct mgmt_mesh_tx * mesh_tx , void * data ) ,
void * data , struct sock * sk ) ;
struct mgmt_mesh_tx * mgmt_mesh_find ( struct hci_dev * hdev , u8 handle ) ;
struct mgmt_mesh_tx * mgmt_mesh_next ( struct hci_dev * hdev , struct sock * sk ) ;
struct mgmt_mesh_tx * mgmt_mesh_add ( struct sock * sk , struct hci_dev * hdev ,
void * data , u16 len ) ;
void mgmt_mesh_remove ( struct mgmt_mesh_tx * mesh_tx ) ;