@@ -1190,7 +1190,61 @@ int
1190
1190
ble_ll_cs_hci_set_proc_params (const uint8_t * cmdbuf , uint8_t cmdlen ,
1191
1191
uint8_t * rspbuf , uint8_t * rsplen )
1192
1192
{
1193
- return BLE_ERR_UNSUPPORTED ;
1193
+ const struct ble_hci_le_cs_set_proc_params_cp * cmd = (const void * )cmdbuf ;
1194
+ struct ble_hci_le_cs_set_proc_params_rp * rsp = (void * )rspbuf ;
1195
+ struct ble_ll_conn_sm * connsm ;
1196
+ struct ble_ll_cs_config * conf ;
1197
+ struct ble_ll_cs_pref_proc_params * params ;
1198
+
1199
+ if (cmdlen != sizeof (* cmd )) {
1200
+ return BLE_ERR_INV_HCI_CMD_PARMS ;
1201
+ }
1202
+
1203
+ /* If no connection handle exit with error */
1204
+ connsm = ble_ll_conn_find_by_handle (le16toh (cmd -> conn_handle ));
1205
+ if (!connsm ) {
1206
+ return BLE_ERR_UNK_CONN_ID ;
1207
+ }
1208
+
1209
+ if (cmd -> config_id >= ARRAY_SIZE (connsm -> cssm -> config )) {
1210
+ return BLE_ERR_INV_HCI_CMD_PARMS ;
1211
+ }
1212
+
1213
+ conf = & connsm -> cssm -> config [cmd -> config_id ];
1214
+
1215
+ /* If CS configuration with Config_ID does not exists */
1216
+ if (!conf -> config_enabled ) {
1217
+ return BLE_ERR_INV_HCI_CMD_PARMS ;
1218
+ }
1219
+
1220
+ /* If CS measurement is enabled exit with error */
1221
+ if (connsm -> cssm -> measurement_enabled ) {
1222
+ return BLE_ERR_CMD_DISALLOWED ;
1223
+ }
1224
+
1225
+ if (g_ble_ll_cs_chan_count < 15 ) {
1226
+ return BLE_ERR_INSUFFICIENT_CHAN ;
1227
+ }
1228
+
1229
+ params = & conf -> pref_proc_params ;
1230
+ params -> max_procedure_len = htole16 (cmd -> max_procedure_len );
1231
+ params -> min_procedure_interval = htole16 (cmd -> min_procedure_interval );
1232
+ params -> max_procedure_interval = htole16 (cmd -> max_procedure_interval );
1233
+ params -> max_procedure_count = htole16 (cmd -> max_procedure_count );
1234
+ params -> min_subevent_len = get_le24 (cmd -> min_subevent_len );
1235
+ params -> max_subevent_len = get_le24 (cmd -> max_subevent_len );
1236
+ params -> aci = cmd -> tone_antenna_config_selection ;
1237
+ params -> phy = cmd -> phy ;
1238
+ params -> tx_power_delta = cmd -> tx_power_delta ;
1239
+ params -> preferred_peer_antenna = cmd -> preferred_peer_antenna ;
1240
+ params -> snr_control_initiator = cmd -> snr_control_initiator & 0x0F ;
1241
+ params -> snr_control_reflector = cmd -> snr_control_reflector & 0x0F ;
1242
+ params -> params_ready = 1 ;
1243
+
1244
+ rsp -> conn_handle = cmd -> conn_handle ;
1245
+ * rsplen = sizeof (* rsp );
1246
+
1247
+ return BLE_ERR_SUCCESS ;
1194
1248
}
1195
1249
1196
1250
int
0 commit comments