Skip to content

Commit 7680b18

Browse files
committed
tester: bas: Add support for testing Battery Service
Currently only support mandatory Battery Level and optional Level Status Characteristic. Signed-off-by: Michele Imbriani <[email protected]>
1 parent 44dfa8b commit 7680b18

File tree

6 files changed

+553
-1
lines changed

6 files changed

+553
-1
lines changed

tests/bluetooth/tester/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,9 @@ if(CONFIG_BT_OTS)
3333
target_sources(app PRIVATE src/btp_ots.c)
3434
endif()
3535

36+
if(CONFIG_BT_BAS)
37+
target_sources(app PRIVATE src/btp_bas.c)
38+
endif()
39+
3640
zephyr_library_include_directories(src src/btp src/audio/btp)
3741
add_subdirectory_ifdef(CONFIG_BT_AUDIO src/audio)

tests/bluetooth/tester/prj.conf

+6
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,9 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255
6666
CONFIG_BT_BUF_CMD_TX_SIZE=255
6767
CONFIG_BT_BUF_ACL_TX_SIZE=251
6868
CONFIG_BT_BUF_ACL_RX_SIZE=255
69+
70+
CONFIG_BT_BAS=y
71+
CONFIG_BT_BAS_BLS=y
72+
CONFIG_BT_BAS_BLS_IDENTIFIER_PRESENT=y
73+
CONFIG_BT_BAS_BLS_BATTERY_LEVEL_PRESENT=y
74+
CONFIG_BT_BAS_BLS_ADDITIONAL_STATUS_PRESENT=y

tests/bluetooth/tester/src/btp/btp.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include "btp_tmap.h"
4040
#include "btp_ots.h"
4141
#include "btp_pbp.h"
42+
#include "btp_bas.h"
4243

4344
#define BTP_MTU 1024
4445
#define BTP_DATA_MAX_SIZE (BTP_MTU - sizeof(struct btp_hdr))
@@ -77,8 +78,9 @@
7778
#define BTP_SERVICE_ID_TMAP 0x1c
7879
#define BTP_SERVICE_ID_OTS 0x1d
7980
#define BTP_SERVICE_ID_PBP 0x1e
81+
#define BTP_SERVICE_ID_BAS 0x1f
8082

81-
#define BTP_SERVICE_ID_MAX BTP_SERVICE_ID_PBP
83+
#define BTP_SERVICE_ID_MAX BTP_SERVICE_ID_BAS
8284

8385
#define BTP_STATUS_SUCCESS 0x00
8486
#define BTP_STATUS_FAILED 0x01
+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
/*
2+
* Copyright (c) 2024 Demant A/S
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#ifndef BTP_BAS_H_
8+
#define BTP_BAS_H_
9+
10+
#include <stdint.h>
11+
#include <stddef.h>
12+
13+
/* BTP BAS Service Opcodes */
14+
#define BTP_BAS_READ_SUPPORTED_COMMANDS 0x01
15+
#define BTP_BAS_SET_BATTERY_LEVEL 0x02
16+
#define BTP_BAS_BLS_SET_BATTERY_PRESENT 0x03
17+
#define BTP_BAS_BLS_SET_WIRED_POWER_SOURCE 0x04
18+
#define BTP_BAS_BLS_SET_WIRELESS_POWER_SOURCE 0x05
19+
#define BTP_BAS_BLS_SET_BATTERY_CHARGE_STATE 0x06
20+
#define BTP_BAS_BLS_SET_BATTERY_CHARGE_LEVEL 0x07
21+
#define BTP_BAS_BLS_SET_BATTERY_CHARGE_TYPE 0x08
22+
#define BTP_BAS_BLS_SET_CHARGING_FAULT_REASON 0x09
23+
#define BTP_BAS_BLS_SET_IDENTIFIER 0x0A
24+
#define BTP_BAS_BLS_SET_SERVICE_REQUIRED 0x0B
25+
#define BTP_BAS_BLS_SET_BATTERY_FAULT 0x0C
26+
27+
/* Command structures */
28+
struct btp_bas_read_supported_commands_rp {
29+
uint8_t data[0];
30+
} __packed;
31+
32+
struct btp_bas_set_battery_level_cmd {
33+
uint8_t level;
34+
} __packed;
35+
36+
struct btp_bas_bls_set_battery_present_cmd {
37+
uint8_t present;
38+
} __packed;
39+
40+
struct btp_bas_bls_set_wired_power_source_cmd {
41+
uint8_t source;
42+
} __packed;
43+
44+
struct btp_bas_bls_set_wireless_power_source_cmd {
45+
uint8_t source;
46+
} __packed;
47+
48+
struct btp_bas_bls_set_battery_charge_state_cmd {
49+
uint8_t state;
50+
} __packed;
51+
52+
struct btp_bas_bls_set_battery_charge_level_cmd {
53+
uint8_t level;
54+
} __packed;
55+
56+
struct btp_bas_bls_set_battery_charge_type_cmd {
57+
uint8_t type;
58+
} __packed;
59+
60+
struct btp_bas_bls_set_charging_fault_reason_cmd {
61+
uint8_t reason;
62+
} __packed;
63+
64+
struct btp_bas_bls_set_identifier_cmd {
65+
uint16_t identifier;
66+
} __packed;
67+
68+
struct btp_bas_bls_set_service_required_cmd {
69+
uint8_t service_required;
70+
} __packed;
71+
72+
struct btp_bas_bls_set_battery_fault_cmd {
73+
uint8_t battery_fault;
74+
} __packed;
75+
76+
/**
77+
* @brief Initialize the Battery Service (BAS) tester.
78+
*
79+
* @return Status of the initialization. Returns `BTP_STATUS_SUCCESS`
80+
* if the initialization is successful. Other values indicate failure.
81+
*/
82+
uint8_t tester_init_bas(void);
83+
84+
/**
85+
* @brief Unregister the Battery Service (BAS) tester.
86+
*
87+
* @return Status of the unregistration. Returns `BTP_STATUS_SUCCESS`
88+
* if the unregistration is successful. Other values indicate failure.
89+
*/
90+
uint8_t tester_unregister_bas(void);
91+
92+
#endif /* BTP_BAS_H_ */

0 commit comments

Comments
 (0)