rfcomm: check state for rfcomm_disconnect

This commit is contained in:
Matthias Ringwald 2023-12-12 10:29:19 +01:00
parent bae152386e
commit dd2e590c4f

View File

@ -2550,10 +2550,12 @@ uint8_t rfcomm_create_channel(btstack_packet_handler_t packet_handler, bd_addr_t
}
uint8_t rfcomm_disconnect(uint16_t rfcomm_cid){
log_info("disconnect cid 0x%02x", rfcomm_cid);
rfcomm_channel_t * channel = rfcomm_channel_for_rfcomm_cid(rfcomm_cid);
if (!channel) return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER;
if (channel->state != RFCOMM_CHANNEL_OPEN) return ERROR_CODE_COMMAND_DISALLOWED;
log_info("disconnect cid 0x%02x", rfcomm_cid);
channel->state = RFCOMM_CHANNEL_SEND_DISC;
l2cap_request_can_send_now_event(channel->multiplexer->l2cap_cid);
return ERROR_CODE_SUCCESS;