Skip to content

Commit f87e65d

Browse files
Added matter C3 service
1 parent 52d8e11 commit f87e65d

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

src/platform/silabs/BLEManagerImpl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class BLEManagerImpl final : public BLEManager, private BleLayer, private BlePla
7575

7676
#if CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
7777
#if (SLI_SI91X_ENABLE_BLE || RSI_BLE_ENABLE)
78-
static void HandleC3ReadRequest(SilabsBleWrapper::sl_wfx_msg_t * rsi_ble_read_req);
78+
static void HandleC3ReadRequest(const SilabsBleWrapper::sl_wfx_msg_t & rsi_ble_read_req);
7979
#else
8080
#if CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
8181
static void HandleC3ReadRequest(volatile sl_bt_msg_t * evt);

src/platform/silabs/rs911x/BLEManagerImpl.cpp

+20-3
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,23 @@ void rsi_ble_add_matter_service(void)
163163
RSI_BLE_ATT_PROPERTY_READ | RSI_BLE_ATT_PROPERTY_NOTIFY |
164164
RSI_BLE_ATT_PROPERTY_INDICATE, // Set read, write, write without response
165165
data, sizeof(data), ATT_REC_MAINTAIN_IN_HOST);
166+
#ifdef CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
167+
static const uuid_t custom_characteristic_C3 = {
168+
.size = RSI_BLE_CUSTOM_CHARACTERISTIC_C3_SIZE,
169+
.reserved = { RSI_BLE_CUSTOM_CHARACTERISTIC_C3_RESERVED },
170+
.val = { .val128 = { .data1 = RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_1,
171+
.data2 = RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_2,
172+
.data3 = RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_3,
173+
.data4 = { RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_4 } } }
174+
};
175+
176+
// Adding custom characteristic declaration to the custom service
177+
SilabsBleWrapper::rsi_ble_add_char_serv_att(
178+
new_serv_resp.serv_handler, new_serv_resp.start_handle + RSI_BLE_CHARACTERISTIC_C3_ATTRIBUTE_HANDLE_LOCATION,
179+
RSI_BLE_ATT_PROPERTY_WRITE_NO_RESPONSE | RSI_BLE_ATT_PROPERTY_WRITE | RSI_BLE_ATT_PROPERTY_READ |
180+
RSI_BLE_ATT_PROPERTY_NOTIFY | RSI_BLE_ATT_PROPERTY_INDICATE, // Set read, write, write without response
181+
new_serv_resp.start_handle + RSI_BLE_CHARACTERISTIC_C3_MEASUREMENT_HANDLE_LOCATION, custom_characteristic_C3);
182+
#endif // CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
166183
}
167184

168185
} // namespace
@@ -1028,9 +1045,9 @@ CHIP_ERROR BLEManagerImpl::EncodeAdditionalDataTlv()
10281045
additionalDataFields.Set(AdditionalDataFields::RotatingDeviceId);
10291046
#endif /* CHIP_ENABLE_ROTATING_DEVICE_ID && defined(CHIP_DEVICE_CONFIG_ROTATING_DEVICE_ID_UNIQUE_ID) */
10301047

1031-
err = AdditionalDataPayloadGenerator().generateAdditionalDataPayload(additionalDataPayloadParams, c3AdditionalDataBufferHandle,
1032-
additionalDataFields);
1033-
1048+
err = AdditionalDataPayloadGenerator().generateAdditionalDataPayload(
1049+
additionalDataPayloadParams, sInstance.c3AdditionalDataBufferHandle, additionalDataFields);
1050+
SuccessOrExit(err);
10341051
exit:
10351052
if (err != CHIP_NO_ERROR)
10361053
{

src/platform/silabs/rs911x/wfx_sl_ble_init.h

+11
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ extern "C" {
7171
#define RSI_BLE_CHARACTERISTIC_TX_MEASUREMENT_HANDLE_LOCATION (4)
7272
#define RSI_BLE_CHARACTERISTIC_TX_GATT_SERVER_CLIENT_HANDLE_LOCATION (5)
7373

74+
#if CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
75+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_SIZE (16)
76+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_RESERVED 0x00, 0x00, 0x00
77+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_1 0x64630238
78+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_2 0x8772
79+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_3 0x45f2
80+
#define RSI_BLE_CUSTOM_CHARACTERISTIC_C3_VALUE_128_DATA_4 0x7D, 0xB8, 0x8A, 0x74, 0x04, 0x8F, 0x21, 0x83
81+
#define RSI_BLE_CHARACTERISTIC_C3_ATTRIBUTE_HANDLE_LOCATION (6)
82+
#define RSI_BLE_CHARACTERISTIC_C3_MEASUREMENT_HANDLE_LOCATION (7)
83+
#define RSI_BLE_CHARACTERISTIC_C3_GATT_SERVER_CLIENT_HANDLE_LOCATION (8)
84+
#endif
7485
namespace chip {
7586
namespace DeviceLayer {
7687
namespace Internal {

0 commit comments

Comments
 (0)