您好,
工程在SDK包中ble_app_peripheral基础上修改,
struct custs1_val_ntf_ind_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_ntf_ind_req, DEF_SVC1_ADC_VAL_1_CHAR_LEN);
req->handle = SVC1_IDX_ADC_VAL_1_VAL; req->length = DEF_SVC1_ADC_VAL_1_CHAR_LEN; req->notification = true; memcpy(req->value, &sample[0], DEF_SVC1_ADC_VAL_1_CHAR_LEN);
ke_msg_send(req);
当DEF_SVC1_ADC_VAL_1_CHAR_LEN = 12时,收到数据正常。
当采样数据,DEF_SVC1_ADC_VAL_1_CHAR_LEN = 32时,
实际收到的数据只有20 Bytes。(struct custs1_val_ntf_ind_req是7个B,27-7=20 ??)
感觉与CFG_MAX_TX_PACKET_LENGTH有关,但
#define CFG_MAX_TX_PACKET_LENGTH (251)
#define CFG_MAX_RX_PACKET_LENGTH (251)
不知道哪里的问题?
关注到 .max_mtu 修改后,还是不行
又了解到,还要从central发一条
static void user_exchange_mtu(uint8_t connection_idx)
{ struct gattc_exc_mtu_cmd *pkt = KE_MSG_ALLOC(GATTC_EXC_MTU_CMD, KE_BUILD_ID(TASK_GATTC, app_env[connection_idx].conidx), TASK_APP, gattc_exc_mtu_cmd);
if (pkt) { pkt->operation = GATTC_MTU_EXCH;
ke_msg_send(pkt); } }
,
通过以上方式,是否就可以了?
Hi Clarke,
请问您是想通过服务发送数据吗?
Br
Martin
是的,想单次发送超过20bytes的数据
一般来说广播数据是31bytes。可以满足你的要求。
具体流程请查看:
http://lpccs-docs.dialog-semiconductor.com/tutorial-custom-profile-DA14…
谢谢,已解决。问题加回复1部分,可以解决此问题