Do not include Posix header files inside network stack as we should
not depend on Posix symbols in net stack.
Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
Rename network symbols i.e., add net_, NET_ or ZSOCK_ prefixes
to those network symbols that can be found in Posix or libc.
This way we can avoid circular dependency issues.
Add also a compatibility header file that allows user to continue
use various network APIs without adding either net_, NET_ or ZSOCK_
prefixes.
Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
There is an issue that the SCO connect cannot be un-referenced by HFP
HF when the SCO connection is broken if the SCO connect is not created
by HFP HF.
Register SCO connect change callback. And un-reference the SCO connect
in SCO disconnected callback.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
In current implementation, the HF with old version cannot be
supported properly.
Such as, if the AG is version 0.96, the AT command `AT+BRSF` will not
be sent. It causes the AG cannot know the features of HF.
Compatible old version with the following changes,
Discover the HF SDP record to get the profile version and HF features.
If the SDP discovery is failed, break the RFCOMM DLC connection.
If the AG version is v0.96, update the HF features according to the
discovered HF features.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
In current implementation, the AG with old version cannot be
supported properly.
Such as, if the AG is version 0.96, the AT command `AT+BRSF` should
not be sent.
And if the AG is no newer than version 1.5, the `Codec Negotiation`
should be unsupported.
Compatible old version with the following changes,
Discover the AG SDP record to get the profile version and AG
features. If the SDP discovery is failed, break the RFCOMM DLC
connection.
If the AG version is v0.96, do not send AT command `AT+BRSF`.
Create SCO connection directly if the codec negotiation feature is
unsupported on both side in the function `bt_hfp_hf_audio_connect()`.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add Kconfig `BT_AVRCP_TG_COVER_ART` to enable the target cover art
feature.
Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_IMAGE_PROPERTIES` to enable
the controller cover art get image properties feature.
Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_IMAGE` to enable the
controller cover art get image feature.
Add Kconfig `BT_AVRCP_CT_COVER_ART_GET_LINKED_THUMBNAIL` to enable
the controller cover art get linked thumbnail feature.
Add functions `bt_avrcp_cover_art_ct_cb_register()` and
`bt_avrcp_cover_art_tg_cb_register()` to register the callback.
Add function `bt_avrcp_cover_art_ct_l2cap_connect()` to create the
L2CAP connection for OBEX transport.
Add functions `bt_avrcp_cover_art_ct_l2cap_disconnect()` and
`bt_avrcp_cover_art_tg_l2cap_disconnect()` to disconnect the L2CAP
connection.
Add functions to send OBEX request/response, including connect,
disconnect, abort, get_image_properties, get_image, and
get_linked_thumbnail.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add an option to preserve the EDK folder, instead of deleting it after
creating the archive. This can simplify test scripting which can now
avoid immediately uncompressing the archive when compiling an
extension.
If this option is enabled, default to the much faster `.tar.Z` archive
format, since the compression ratio of the archive is not important.
Signed-off-by: Jordan Yates <jordan@embeint.com>
DTR signal on UART extends the power saving by allowing host
to indicate the remote end that the UART is not in active state.
Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
In current implementation, the default indicator value cannot be set
when building the SLC. And it causes the incorrect indicator value is
notified by AG.
Add a callback `get_indicator_value` to get the default indicator
value from the application.
Add shell command `indicator_value` to set the default indicator
value. The set indicator value will be passed to HFP AG when callback
`get_indicator_value` is notified.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Set Log Level to Info when the HTTP socket reports ENETDOWN,
instead of logging an error each time the network is down.
Signed-off-by: Joel Schaller <joel.schaller16@gmail.com>
When clock accuracy is 1KHz or lower, udp_upload rate has
much lower accuracy. eg. 20M rate has 60M actual throughput.
It's because any packet_duration less than 1000us will be
treated as 1 tick. In this case rate cannot control throughput.
Add clock compensate when time clock is lower than 1KHz to fix it.
In every 10 ticks or longer delta time, calculate packets sent
actual number and expected number, and then compensate ticks.
And add compensate ticks to delay ticks count.
If we cannot compensate a minus ticks as delay cannot be negative,
add it to next compensate period.
If compensate sum ticks is lower than -1000, it means current rate
is higher than low level capability. So no need to compensate
in remaining traffic.
Signed-off-by: Fengming Ye <frank.ye@nxp.com>
Kconfig makes sure the NET_PKT_TIMESTAMP_STACK_SIZE with default value
1024 when NET_PKT_TIMESTAMP_THREAD is enabled.
Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
speed up mmc init, when sdmmc is also
used. as sdmmc has to fail for that and
can take some long time.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
subsys/bluetooth/host/classic/shell/avrcp.c:407:3: error: label followed
by a declaration is a C23 extension [-Werror,-Wc23-extensions]
407 | uint64_t identifier;
| ^
Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
For the uncompleted BIP request, the following BIP request function
should be same with the previous.
Keep the first request function type, and check it with the following
request function type.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
The response function should be consistent with the function of
request when server responses the request of client.
Check whether the BIP function in the server response function is
consistent with the client request.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add command `reg` to register the BIP responder SDP record.
Add command `set_caps`, `set_features`, and `set_functions` to set the
supported capabilities, features, and functions for BIP responder.
Add command `discover` to discovery the BIP responder SDP record. And
parse the response data to get the supported features and functions.
Add command `set_feats_funcs` to set the discovered supported features
and functions.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add function `bt_bip_set_supported_capabilities()` to set the
supported caps of responder.
Add function `bt_bip_set_supported_features()` to set the supported
features of responder.
Add function `bt_bip_set_supported_functions()` to set the supported
functions of responder.
Check the supported features of responder when sending OBEX connect
request on initiator side.
Check the supported functions of responder when sending OBEX get/put
request on initiator side.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add commands for transport over RFCOMM, including `register-rfcomm`,
`connect-rfcomm`, and `disconnect-rfcomm`.
Add commands for transport over L2CAP, including `register-l2cap`,
`connect-l2cap`, and `disconnect-l2cap`.
Add command `alloc-buf` and `release-buf` to allocate and release TX
buffer.
Add command set `add-header` to add the OBEX headers to allocated TX
buffer.
Add command set `client` to send BIP client requests with allocated
TX buffer.
Add command set `server` to send BIP responses with allocated TX
buffer.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add functions to manage BIP transport connect and disconnect both for
l2cap and rfcomm.
Add functions to register and unregister primary and secondary OBEX
servers.
Add functions to send OBEX connect/disconnect request and response.
Add functions to send OBEX get/put request and response with different
type defined by BT_BIP_HDR_TYPE_*.
Add functions to send abort request and response.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
The OBEX packet cannot be parsed properly if the action ID header is
included in the packet.
It is caused by the value type issue of the action ID. The action ID
type should be `uint8_t` instead of `uint32_t`.
Fix the issue by change action ID value type from `uint32_t` to
`uint8_t`.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
The function `bt_obex_has_header()` is used to check whether the
specific header is in the buffer.
It is required by upper layer to check the header from the receiving
buffer.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
The `bt_obex_string_is_valid()` is used to check whether the sending
or receiving UTF-16 string is valid or not.
Expose function "bt_obex_string_is_valid()" to support external
checking of UTF-16 strings.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
A new function bt_obex_add_header_body_or_end_body() is added to help
to add the body/end body header. When the tail room of the buffer is
more than the passed body room, and the total length of buffer is not
more than the mopl if the body has been added, the header end body
will be added. Or, the header body will be added.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
This commit adds a new Kconfig option NET_LINK_ADDR_CUSTOM_LENGTH
that allows to set custom link layer address length if your link layer
technology is not supported directly. If this option is set to a value
greater than 0, that value is used as link layer address length.
Signed-off-by: Jani Hirsimäki <jani.hirsimaki@nordicsemi.no>
The NET_MGMT_EVENT_INFO_DEFAULT_DATA_SIZE is used to set the default
size of the data field in the net_mgmt_event_info structure. This
change allows the user to configure the size of the data field
according to their needs.
Signed-off-by: Jani Hirsimäki <jani.hirsimaki@nordicsemi.no>
If the outgoing call is not alerted, support the case to terminate the
call when receiving the AT command `AT+CHUP`.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add kConfig `BT_HFP_AG_CODEC_MSBC` and `BT_HFP_AG_CODEC_LC3_SWB` for
AG to configure the optional Codec IDs.
If the kConfig `BT_HFP_AG_CODEC_MSBC` is enabled, set the feature
`WBS` bit in SDP record.
If the kConfig `BT_HFP_AG_CODEC_LC3_SWB` is enabled, set the feature
`Super WBS` bit in SDP record.
And check the selected Codec ID if it is supported when creating the
SCO connection.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
According to the HFP V1.9, the SDP feature bit `WBS` should be set if
the mBSC Codec is supported. And the SDP feature bit `Super WBS`
should be set if the LC3-SWB Codec is supported.
Set SDP feature bit `WBS` if the kConfig `BT_HFP_HF_CODEC_MSBC` is
enabled.
Set SDP feature bit `Super WBS` if the kConfig
`BT_HFP_AG_CODEC_LC3_SWB` is enabled.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
In current implementation, the values are fixed for the field
`Max_Latency` and `Retransmission_Effort` of HCI command
`HCI_Setup_Synchronous_Connection` and
`HCI_Accept_Synchronous_Connection_Request`
It cannot work properly with these fixed value. It is better to
set it with default value. And it is determined by the controller.
Set the field `Max_Latency` and `Retransmission_Effort` of HCI
command `HCI_Setup_Synchronous_Connection` and
`HCI_Accept_Synchronous_Connection_Request` with default value.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Add a filed `active_codec_id` to `struct bt_hfp_hf` to keep the
current codec ID. The default value is `BT_HFP_HF_CODEC_CVSD` when
creating the SLC.
Add a filed `neg_codec_id` to `struct bt_hfp_hf` to flag the
negotiated codec ID. When the AT+BCS command is executed without
error, update the `active_codec_id` with `neg_codec_id`.
Pass the properly voice setting with the `active_codec_id` in
function `bt_hfp_hf_sco_accept()`.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
In current implementation, the voice setting of SCO is fixed value
`BT_VOICE_CVSD_16BIT`. It is not aligned with the negotiated codec
id of the HFP.
Add a filed `voice_setting` to `struct bt_sco_chan` that the voice
setting can be configured by upper layer when providing the sco
channel `struct bt_sco_chan`.
Use the `voice_setting` to setup SCO or accept SCO.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
There is a corner case that the AT command `AT+BTRH?` is received
before processing the ongoing calls after the SLC established. In
this case the invalid response and hold status will be notified,
because the ongoing calls are not processed.
The ongoing calls should be processed as early as possible after the
SLC established.
Support the case by processing the ongoing calls in the context of
SLC established callback.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Rebinding of UDP sockets works just fine and there's really no reason to
disallow it. Keep the restriction for stream sockets only (as our TCP
implementation doesn't support rebinding).
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
The eSCO S4 settings feature should be enabled for CVSD Coding. It is
suggested by the HFP specification.
Set the eSCO S4 Settings Supported bit if the Secure connection is
supported by controller.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Replace direct conn->type comparisons with connection type helper
functions in SMP module. This includes:
- Update copyright headers to include Xiaomi Corporation
- Replace conn->type == BT_CONN_TYPE_LE with bt_conn_is_le(conn)
- Replace conn->type == BT_CONN_TYPE_BR with bt_conn_is_br(conn)
- Replace bt_conn_is_type(conn, BT_CONN_TYPE_LE | BT_CONN_TYPE_BR)
with !bt_conn_is_br(conn) && !bt_conn_is_le(conn) for clearer logic
- Replace IS_ENABLED(CONFIG_BT_CLASSIC) && (conn->type == BT_CONN_TYPE_BR)
with bt_conn_is_br(conn) for simplified condition
This change completes the connection type helper refactoring across
the Bluetooth host stack, improving code consistency and readability.
Signed-off-by: Kai Cheng <chengkai@xiaomi.com>
Replace direct conn->type comparisons with connection type helper
functions in L2CAP module. This includes:
- Update copyright headers to include Xiaomi Corporation
- Replace IS_ENABLED(CONFIG_BT_CLASSIC) && conn->type == BT_CONN_TYPE_BR
with bt_conn_is_br(conn) for cleaner code
- Replace conn->type != BT_CONN_TYPE_LE with !bt_conn_is_le(conn)
- Replace chan->conn->type == BT_CONN_TYPE_BR with
bt_conn_is_br(chan->conn)
This change improves code readability and maintains consistency
with the connection type helper refactoring across the Bluetooth
host stack.
Signed-off-by: Kai Cheng <chengkai@xiaomi.com>
Replace direct conn->type comparisons with connection type helper
functions in HCI core module. This includes:
- Update copyright headers to include Xiaomi Corporation
- Replace conn->type != BT_CONN_TYPE_LE with !bt_conn_is_le(conn)
- Replace conn->type == BT_CONN_TYPE_SCO with bt_conn_is_sco(conn)
- Replace conn->type == BT_CONN_TYPE_BR with bt_conn_is_br(conn)
- Replace conn->type == BT_CONN_TYPE_LE with bt_conn_is_le(conn)
This change improves code consistency and maintains the same
refactoring pattern applied across the Bluetooth host stack.
Signed-off-by: Kai Cheng <chengkai@xiaomi.com>
Check if the received AT command `ATD` is valid. When the semicolon is
missing, return the error.
Remove the semicolon from the received valid data and notify received
number or memory location value.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Only voice calls are supported by HFP specification. And the
semicolon character shall be added when the voice call is originated.
Add the semicolon character to force the ATD command to end with
semicolon character.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>