-
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.
This adds BASE parser implementation along with unit tests.
- Loading branch information
1 parent
620064e
commit de40d41
Showing
8 changed files
with
944 additions
and
0 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,128 @@ | ||
/* | ||
* 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_AUDIO_ | ||
#define H_BLE_AUDIO_ | ||
|
||
#include <stdint.h> | ||
|
||
#include "host/ble_audio_common.h" | ||
|
||
/** | ||
* BASE iterator | ||
* | ||
* This should be used as an opaque structure and not modified manually. | ||
*/ | ||
struct ble_audio_base_iter { | ||
/** Data pointer */ | ||
const uint8_t *data; | ||
|
||
/** Base length */ | ||
uint8_t buf_len; | ||
|
||
/** Original BASE pointer */ | ||
const uint8_t *buf; | ||
|
||
/** Remaining number of elements */ | ||
uint8_t num_elements; | ||
}; | ||
|
||
/** @brief Broadcast Audio Source Endpoint Group structure */ | ||
struct ble_audio_base_group { | ||
/** Presentation Delay */ | ||
uint32_t presentation_delay; | ||
|
||
/** Number of subgroups */ | ||
uint8_t num_subgroups; | ||
}; | ||
|
||
/** | ||
* Parse the BASE received from Basic Audio Announcement data. | ||
* | ||
* @param[in] data Pointer to the BASE data buffer to parse. | ||
* @param[in] data_len Length of the BASE data buffer. | ||
* @param[out] group Group object. | ||
* @param[out] subgroup_iter Subgroup iterator object. | ||
* | ||
* @return 0 on success; nonzero on failure. | ||
*/ | ||
int ble_audio_base_parse(const uint8_t *data, uint8_t data_len, | ||
struct ble_audio_base_group *group, | ||
struct ble_audio_base_iter *subgroup_iter); | ||
|
||
/** @brief Broadcast Audio Source Endpoint Subgroup structure */ | ||
struct ble_audio_base_subgroup { | ||
/** Codec information for the subgroup */ | ||
struct ble_audio_codec_id codec_id; | ||
|
||
/** Length of the Codec Specific Configuration for the subgroup */ | ||
uint8_t codec_specific_config_len; | ||
|
||
/** Codec Specific Configuration for the subgroup */ | ||
const uint8_t *codec_specific_config; | ||
|
||
/** Length of the Metadata for the subgroup */ | ||
uint8_t metadata_len; | ||
|
||
/** Series of LTV structures containing Metadata */ | ||
const uint8_t *metadata; | ||
|
||
/** Number of BISes in the subgroup */ | ||
uint8_t num_bis; | ||
}; | ||
|
||
/** | ||
* @brief Basic Audio Announcement Subgroup information | ||
* | ||
* @param[in] subgroup_iter Subgroup iterator object. | ||
* @param[out] subgroup Subgroup object. | ||
* @param[out] bis_iter BIS iterator object. | ||
* | ||
* @return 0 on success; | ||
* A non-zero value on failure. | ||
*/ | ||
int ble_audio_base_subgroup_iter(struct ble_audio_base_iter *subgroup_iter, | ||
struct ble_audio_base_subgroup *subgroup, | ||
struct ble_audio_base_iter *bis_iter); | ||
|
||
/** @brief Broadcast Audio Source Endpoint BIS structure */ | ||
struct ble_audio_base_bis { | ||
/** BIS_index value for the BIS */ | ||
uint8_t index; | ||
|
||
/** Length of the Codec Specific Configuration for the BIS */ | ||
uint8_t codec_specific_config_len; | ||
|
||
/** Codec Specific Configuration for the BIS */ | ||
const uint8_t *codec_specific_config; | ||
}; | ||
|
||
/** | ||
* @brief Basic Audio Announcement Subgroup information | ||
* | ||
* @param[in] bis_iter BIS iterator object. | ||
* @param[out] bis BIS object. | ||
* | ||
* @return 0 on success; | ||
* A non-zero value on failure. | ||
*/ | ||
int ble_audio_base_bis_iter(struct ble_audio_base_iter *bis_iter, | ||
struct ble_audio_base_bis *bis); | ||
|
||
#endif /* H_BLE_AUDIO_ */ |
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,32 @@ | ||
# | ||
# 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. | ||
# | ||
|
||
pkg.name: nimble/host/audio | ||
pkg.description: Bluetooth LE Audio | ||
pkg.author: "Apache Mynewt <dev@mynewt.apache.org>" | ||
pkg.homepage: "http://mynewt.apache.org/" | ||
pkg.experimental: 1 | ||
pkg.keywords: | ||
- ble | ||
- bluetooth | ||
- audio | ||
|
||
pkg.deps: | ||
- nimble | ||
- nimble/host |
Oops, something went wrong.