2024-03-20 02:00 AM
Hello,
We are trying to use MTU larger than 24X bytes.
The characteristic size set to 483 bytes (CFG_BLE_MAX_ATT_MTU).
We tried to use aci_gatt_update_char_value_ext to set the value (as the HCI layer is limited to 255 bytes transfer).
aci_gatt_update_char_value_ext called twice (for both MPSs) , first part with 0 offset, and 2nd with 240.
First, Update_Type=GATT_CHAR_UPDATE_LOCAL_ONLY; 2nd call with GATT_CHAR_UPDATE_SEND_NOTIFICATION.
What happens is that random? number of bytes is sent (80).
If we always use GATT_CHAR_UPDATE_SEND_NOTIFICATION proper 480 bytes are sent, but twice (for both offset updates) ...
Thanks in advance
Solved! Go to Solution.
2024-05-23 12:00 AM
Hello @APort
What I understand, you are looking to send more data. So, I suggest you refer to this description:
1. Modify CFG_BLE_MAX_ATT_MTU to 512 in app_conf.h
2. Call aci_gatt_exchange_config() after connecting in app_ble.c:
tBleStatus status = aci_gatt_exchange_config(BleApplicationContext.BleApplicationContext_legacy.connectionHandle);
3. Change Notify characteristic size in p2p_stm.c:
aci_gatt_add_char(aPeerToPeerContext.PeerToPeerSvcHdle, UUID_TYPE_128, &uuid16,
CFG_BLE_MAX_ATT_MTU - 3, // [STM]
CHAR_PROP_NOTIFY, ATTR_PERMISSION_NONE,
GATT_NOTIFY_ATTRIBUTE_WRITE, /* gattEvtMask */
10, /* encryKeySize */
1, /* isVariable: 1 */
&(aPeerToPeerContext.P2PNotifyServerToClientCharHdle));
4. Change P2PS_STM_App_Update_Char function in p2p_stm.c:
tBleStatus P2PS_STM_App_Update_Char(uint16_t UUID, uint8_t *pPayload)
{
tBleStatus result = BLE_STATUS_INVALID_PARAMS;
switch(UUID)
{
case P2P_NOTIFY_CHAR_UUID:
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x00,
509,
0,
243,
(uint8_t *) pPayload);
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x00,
509,
243,
243,
(uint8_t *) pPayload + 243);
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x01,
509,
486,
23,
(uint8_t *) pPayload + 486);
break;
default:
break;
}
return result;
}
5. Modify P2PS_STM_Data_t structure in p2p_stm.h:
typedef struct
{
uint8_t * pPayload;
uint16_t Length;
}P2PS_STM_Data_t;
Best Regards.
STTwo-32
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2024-05-23 12:00 AM
Hello @APort
What I understand, you are looking to send more data. So, I suggest you refer to this description:
1. Modify CFG_BLE_MAX_ATT_MTU to 512 in app_conf.h
2. Call aci_gatt_exchange_config() after connecting in app_ble.c:
tBleStatus status = aci_gatt_exchange_config(BleApplicationContext.BleApplicationContext_legacy.connectionHandle);
3. Change Notify characteristic size in p2p_stm.c:
aci_gatt_add_char(aPeerToPeerContext.PeerToPeerSvcHdle, UUID_TYPE_128, &uuid16,
CFG_BLE_MAX_ATT_MTU - 3, // [STM]
CHAR_PROP_NOTIFY, ATTR_PERMISSION_NONE,
GATT_NOTIFY_ATTRIBUTE_WRITE, /* gattEvtMask */
10, /* encryKeySize */
1, /* isVariable: 1 */
&(aPeerToPeerContext.P2PNotifyServerToClientCharHdle));
4. Change P2PS_STM_App_Update_Char function in p2p_stm.c:
tBleStatus P2PS_STM_App_Update_Char(uint16_t UUID, uint8_t *pPayload)
{
tBleStatus result = BLE_STATUS_INVALID_PARAMS;
switch(UUID)
{
case P2P_NOTIFY_CHAR_UUID:
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x00,
509,
0,
243,
(uint8_t *) pPayload);
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x00,
509,
243,
243,
(uint8_t *) pPayload + 243);
aci_gatt_update_char_value_ext(0x0000,
aPeerToPeerContext.PeerToPeerSvcHdle,
aPeerToPeerContext.P2PNotifyServerToClientCharHdle,
0x01,
509,
486,
23,
(uint8_t *) pPayload + 486);
break;
default:
break;
}
return result;
}
5. Modify P2PS_STM_Data_t structure in p2p_stm.h:
typedef struct
{
uint8_t * pPayload;
uint16_t Length;
}P2PS_STM_Data_t;
Best Regards.
STTwo-32
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.