Other Parts Discussed in Thread: SYSCONFIG
SDK Version: Simplelink_cc13xx_cc26xx_sdk_7_10_00_98 (latest version)
Hardware: Homemade Minimum System Board :
Symptom:
Using TI's simple_central and simple_peripheral tests, the host scans to the slave, and once the connection is established, it invokes GATT_ExchangeMTU to update the MTU:
static void SimpleCentral_startSvcDiscovery(void)
{
bStatus_t status;
attExchangeMTUReq_t req;
// Initialize cached handles
svcStartHdl = svcEndHdl = 0;
discState = BLE_DISC_STATE_MTU;
// Discover GATT Server's Rx MTU size
req.clientRxMTU = scMaxPduSize - L2CAP_HDR_SIZE;
// ATT MTU size should be set to the minimum of the Client Rx MTU
// and Server Rx MTU values
//VOID GATT_ExchangeMTU(scConnHandle, &req, selfEntity);
status = GATT_ExchangeMTU(simpleBLEConnHandle, &req, selfEntity);
if(status == 0){
sprintf(printbuf,"Request was queued successfully.\r\n");
}else{
sprintf(printbuf,"Error:status=%d.\r\n",status);
}
PRINT_LOG;
}
The ATT_MTU_UPDATED_EVENT received in the SimpleCentral_processGATTmsg(gattMsgEvent_t *pMsg) function is very rare, mostly not received. In the event that ATT_MTU_UPDATED_EVENT is not received, the connection is automatically disconnected.
The return status of the GATT_ExchangeMTU() function is 0, that is, successful, and the value of the ATT MTU size I am trying to update is 65, which is the maximum value of the engineering default variable MTU.
Simple_peripheral Change MTU with a phone connection is normal every time. This issue should not be related to simple_peripheral.

