-
Notifications
You must be signed in to change notification settings - Fork 399
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
nimble/host: Add Initial ISO implementation
This commit provides initial implementation of ISO in host.
- Loading branch information
1 parent
61e724a
commit dd97201
Showing
13 changed files
with
1,713 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. The ASF licenses this file | ||
* to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
|
||
#ifndef H_BLE_ISO_ | ||
#define H_BLE_ISO_ | ||
#include "syscfg/syscfg.h" | ||
|
||
#if MYNEWT_VAL(BLE_ISO) | ||
|
||
#include <inttypes.h> | ||
|
||
enum { | ||
BLE_ISO_CONNECT_REQUEST_EVENT, | ||
BLE_ISO_CIS_ESTABLISHED_EVENT, | ||
BLE_ISO_CIS_DISCONNECTED_EVENT, | ||
BLE_ISO_BIG_CREATE_COMPLETE_EVENT, | ||
BLE_ISO_BIG_ESTABLISHED_EVENT, | ||
BLE_ISO_BIG_TERMINATE_EVENT, | ||
BLE_ISO_BIG_SYNC_LOST_EVENT, | ||
BLE_ISO_DATA_EVENT, | ||
}; | ||
|
||
struct ble_iso_event { | ||
|
||
uint8_t type; | ||
|
||
union { | ||
/* BLE ISO CONNECT REQUEST */ | ||
struct { | ||
uint16_t conn_handle; | ||
uint16_t cis_handle; | ||
} cis_connect_req; | ||
|
||
/* BLE_ISO_CIS_ESTABLISHED_EVENT */ | ||
struct { | ||
uint8_t status; | ||
uint16_t cis_handle; | ||
} cis_established; | ||
|
||
/* BLE_ISO_CIS_DISCONNECTED_EVENT */ | ||
struct { | ||
uint8_t status; | ||
uint16_t cis_handle; | ||
} cis_disconnected; | ||
|
||
/* BLE_ISO_BIG_CREATE_COMPLETE_EVENT, | ||
* BLE_ISO_BIG_ESTABLISHED_EVENT*/ | ||
struct { | ||
uint8_t status; | ||
uint8_t big_handle; | ||
uint8_t bis_cnt; | ||
uint16_t bis[0]; | ||
} big_complete; | ||
|
||
/*BLE_ISO_BIG_SYNC_LOST_EVENT */ | ||
struct { | ||
uint8_t big_handle; | ||
uint8_t reason; | ||
} big_terminate_lost; | ||
|
||
/* BLE_ISO_DATA_EVENT - for both cis/bis_handles */ | ||
struct { | ||
struct os_mbuf *om; | ||
uint16_t handle; | ||
} iso_data; | ||
}; | ||
}; | ||
|
||
typedef int ble_iso_event_fn(struct ble_iso_event *event, void *arg); | ||
int ble_iso_server_register_le_audio(ble_iso_event_fn *cb, void *cb_arg); | ||
|
||
struct ble_iso_cig_params { | ||
uint32_t sdu_m_to_s_itvl; | ||
uint32_t sdu_s_to_m_itvl; | ||
uint8_t sca; | ||
uint8_t packing; | ||
uint8_t framing; | ||
uint8_t max_m_to_s_latency; | ||
uint8_t max_s_to_m_latency; | ||
#if MYNEWT_VAL(BLE_ISO_TEST) | ||
uint8_t ft_m_to_s; | ||
uint8_t ft_s_to_m; | ||
uint16_t iso_itvl; | ||
#endif | ||
}; | ||
|
||
struct ble_iso_cis_params { | ||
uint16_t max_sdu_m_to_s; | ||
uint16_t max_sdu_s_to_m; | ||
uint8_t phy_m_to_s; | ||
uint8_t phy_s_to_m; | ||
uint8_t rnt_m_to_s; | ||
uint8_t rnt_s_to_m; | ||
}; | ||
|
||
int ble_iso_client_create_cig(struct ble_iso_cig_params *cig_params, | ||
uint8_t cis_cnt, | ||
struct ble_iso_cis_params *cis_params, | ||
uint8_t *cig, uint8_t *cis_handles); | ||
int ble_iso_client_remove_group(uint8_t cig_id); | ||
int ble_iso_client_create_cis(uint8_t cig, uint8_t cis_cnt, | ||
struct ble_hci_le_create_cis_params *params, | ||
ble_iso_event_fn *cb, void *cb_arg); | ||
|
||
int ble_iso_create_big_sync(uint8_t *out_big_handle, uint16_t sync_handle, | ||
bool encrypted, uint8_t *broadcast_code, | ||
uint8_t mse, uint16_t sync_timeout, | ||
uint8_t num_of_bis, uint8_t *bis, | ||
ble_iso_event_fn *cb, void *cb_arg); | ||
int ble_iso_terminate_big_sync(uint8_t big_handle); | ||
|
||
int ble_iso_init(void); | ||
int ble_iso_tx(uint8_t cig_id, struct os_mbuf *om); | ||
#endif | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.