你好,
当我创建枚举类型ex时,我有一个关于每个服务的有限数量的特征的麻烦:
enum {
//服务ADC1控制
CUST1_IDX_SVC_ADC1_CONTROL = 0, //服务ADC1
CUST1_IDX_SVC_ADC2_CONTROL, //服务ADC2
CUST1_IDX_SVC_ADC3_CONTROL, //服务ADC3
CUST1_IDX_SVC_ADC4_CONTROL, //服务ADC4
//业务热敏电阻
// ADC1传感器的特性
/***************************/
CHAR_ADC1_CONT_NOTIF_TYPE_CHAR,
CHAR_ADC1_CONT_NOTIF_TYPE_VAL,
CHAR_ADC1_CONT_NOTIF_TYPE_USER_DESC,
.......................
.......................
CUST1_IDX_NB,
}
CUST1_IDX_NB的max是46,为什么CUST1_IDX_NB的limit是46。当我创建更多的特征构建程序,但当运行调试代码时,这个停止在“void wrap_platform_reset(uint32_t错误)”。我做错了什么?
我更改了ble_app_peripheral示例SDK 5.0.4版本中的代码。
设备:
嗨manhviking,
特征可以在服务的数量是有限的堆分配给数据库,该平台复位,是因为你不能分配任何更多的空间(看来你超过默认值为DB_HEAP_SZ定义特征是1024),你应该得到一个错误0xF2F2F2F2 RESET_MEM_ALLOC_FAIL。您可以尝试增加db_heap的大小,并尝试再次发布。为了增加数据库堆的大小,转到da1458x_config_advanced.h,并在#define USE_MEMORY_MAP下添加一个#define DB_HEAP_SZ,例如2048。
由于MT_dialog
嗨MT_dialog,
我有流程指示,但增加了另一个问题:
//服务cho ADC1 CONTROL
枚举
{
CUST1_IDX_SVC_ADC1_CONTROL = 0,
// chrectic cho ADC1传感器
/***************************/
CHAR_ADC1_CONT_NOTIF_TYPE_CHAR,
CHAR_ADC1_CONT_NOTIF_TYPE_VAL,
CHAR_ADC1_CONT_NOTIF_TYPE_USER_DESC,
/************************/
CHAR_ADC1_NOTIF_VALUE_CHAR,
CHAR_ADC1_NOTIF_VALUE_VAL,
CHAR_ADC1_NOTIF_VALUE_NTF_CFG,
CHAR_ADC1_NOTIF_VALUE_USER_DESC,
/****************************/
CHAR_ADC1_CONT_NOTIF_INTVL_CHAR,
CHAR_ADC1_CONT_NOTIF_INTVL_VAL,
/ / CHAR_ADC1_CONT_NOTIF_INTVL_CFG,
CHAR_ADC1_CONT_NOTIF_INTVL_DESC,
/****************************/
CHAR_ADC1_CHANGE_NOTIF_STEP_CHAR,
CHAR_ADC1_CHANGE_NOTIF_STEP_VAL,
CHAR_ADC1_CHANGE_NOTIF_STEP_CFG,
CHAR_ADC1_CHANGE_NOTIF_STEP_DESC,
/******************************/
CHAR_ADC1_CROSS_NOTIF_THESH_CHAR,
CHAR_ADC1_CROSS_NOTIF_THESH_VAL,
CHAR_ADC1_CROSS_NOTIF_THESH_CFG,
CHAR_ADC1_CROSS_NOTIF_THESH_DESC,
/*********************************/
CHAR_ADC1_NUM_CMDS_PROC_CHAR,
CHAR_ADC1_NUM_CMDS_PROC_VAL,
CHAR_ADC1_NUM_CMDS_PROC_CFG,
CHAR_ADC1_NUM_CMDS_PROC_DESC,
CUST1_IDX_NB
}
和
{
/ *
* CHAR_ADC1_CONT_NOTIF_TYPE W
* /
[CHAR_ADC1_CONT_NOTIF_TYPE_CHAR] = {(uint8_t*)&att_decl_char, ATT_UUID_16_LEN, PERM(RD, ENABLE),
sizeof (custs1_adc1_control_char), sizeof (custs1_adc1_control_char), (uint8_t *) &custs1_adc1_control_char},
//控制点特征值
[char_adc1_cont_notif_type_val] = {cust1_adc1_cont_type_uuid_128, att_uuid_128_len, perm (wr, enable),
DEF_CUST1_CTRLADC_POINT_CHAR_LEN 0零},
//控制点特征用户描述
[CHAR_ADC1_CONT_NOTIF_TYPE_USER_DESC] = {(uint8_t*)&att_decl_user_desc, ATT_UUID_16_LEN, PERM(RD, ENABLE),
1、CUST1_ADC1_CONT_NOTIF_TYPE_USER_DESC,
}
{
static struct att_char128_desc custs1_adc1_control_char = {ATT_CHAR_PROP_WR_NO_RESP,
{0},
DEF_CUST1_ADC1_CONT_NOTIF_TYPE_UUID_128};
}
当我从app "BLE scanner "发送'1'到BLE设备特征"CHAR_ADC1_CONT_NOTIF_TYPE_VAL " receive = '1'所以" char_adc1_cross_notif_sh_val "发送回电话是"index++"但特征" char_adc1_cont_notif_notif_type "接收索引++它不接收数据?因为feature有“ATT_CHAR_PROP_WR_NO_RESP”为什么?????
嗨manhviking,
我不太明白这个问题,你能重新表述一下这个问题吗?你正在经历什么?请不要只是粘贴代码,描述你的设置和你想做什么,只要能理解你写命令发送给你的设备从BLE扫描仪应用程序特征值和你期望一些索引值(无论该值代表)发送回你的电话和这个值出现在你的电话但在错误的特点吗?
由于MT_dialog
对不起MT_Dialog,
我的问题:例:
当我创建时,第一个特征具有属性是“WR”,第二个特征具有属性是“RD+NTF”。从应用程序"BLE scanner "我发送数据'1'到BLE设备,特征第二reicever '1'是真的,这显示在应用程序中,但在第一个特征显示在应用程序"BLE scanner "是十六进制:'0x31'=>错误为什么??因为第一个特征是“WR”,而不是“RD或NTF”。我创建30个特征和5个服务,我定义在文件“da1458x_config_advanced.h”:
#定义DB_HEAP_SZ 4096
#定义ENV_HEAP_SZ 2296
#定义MSG_HEAP_SZ 6240
#定义NON_RET_HEAP_SZ 4096
#define DB_HEAP_SIZE (4096 + 12) And BLE_CONNECTION_MAX_USER = 1 at file "da1458x_scatter_config.h"。
嗨manhviking
我还是不能理解你想说的是什么,但是如果你发送“1”,对方解释为0x31,是因为你发送了一个ascii字符,而十六进制的“1”是0x31。检查BLE扫描仪如何解释接收的数据。
由于MT_dialog
嗨对话框
例如:我从应用程序"BLE scanner "发送'1'到BLE设备使用特征1,在BLE设备接收'1'时将增加索引++,因此"BLE scanner "特征2将接收'index++: 1,2,3,4…'对,因为特征2的性质是' RD+NTF '但特征1只有' WR ',即使接收'index++: 1,2,3,4…'相同的特征2,并显示在“BLE扫描器”。
嗨manhaviking,
所以你写在一个可写的个性化和处理程序时打你的值存储在一个变量在编写处理程序和增加,和结果值更新其他的价值特征可读,你可以看到在你的手机上。后增加的值如果你希望读2可写的特点(假设您已经发送1之前)你不可以这样做,因为索引变量增加,但不会更新可写的特点和更多的如果一个特点是只可写你不会能够阅读它。
由于MT_dialog
嗨,对话框中,
准确地说,问题在只有可写的特征,它已经显示索引增加在应用程序“BLE Scanner”。我不知道为什么?记住,我创建的30个特点如上所述
嗨manhviking,
所以你改变了索引1你可以从一个可写特性中读取值是2 ?
由于MT_dialog
嗨,对话框中,
当我从可写特性发送'1'在应用程序后,它已经显示'index++'。它应该显示为'0x31'
嗨manhviking,
仍然不能够理解,你在做什么,我的意思是我明白你正在增加的价值从580年,你已经写入characteritsic我不该得到的是当你读它你看到一个不同的数字(我的意思是它的一个可写的特点,你不能从BLE Scanner读取它,即使580改变了数据库中的值,在BLE Scanner上显示的值是应用程序发送到外围设备的最新值)。那么,您是否能够用已经实现的特征复制您在外围示例中看到的内容?
由于MT_dialog