你好,
当我创建enum类型ex时,我有一个关于每个服务的特征数量有限的问题:
枚举{
// 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
cust1_idx_svc_thermistor_control,//服务热敏电阻
// 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的limited是46。当我创建更多的特色构建程序ok,但当运行调试代码这停止在"void wrap_platform_reset(uint32_t error)"。我做错了什么?
我在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控制
枚举
{
cust1_idx_svc_adc1_control = 0,
// charetic 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_notif_type_uuid_128,att_uuid_128_len,perm(wr,启用),
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,启用),
sizeof(cust1_adc1_cont_notif_type_user_desc) - 1,sizeof(cust1_adc1_cont_notif_type_user_desc) - 1,cust1_adc1_cont_notif_type_user_desc},
}
{
static struct att_char128_desc custs1_adc1_control_char = {att_char_prop_wr_no_resp,
{0,0},
def_cust1_adc1_cont_notif_type_uuid_128};
}
当我从app“ble扫描仪”发送'1'到ble设备特征“char_adc1_cont_notif_type_val”接收='1'所以“char_adc1_cross_notif_thesh_val”发送返回电话是“index ++”但是特征“char_adc1_cont_notif_type”接收索引++它没有接收数据?因为特征有“att_char_prop_wr_no_rep”,为什么?????
嗨manhviking,
我不太明白这个问题,你能换个说法吗?你正在经历什么?请不要只是粘贴代码,描述你的设置和你想做什么,只要能理解你写命令发送给你的设备从BLE扫描仪应用程序特征值和你期望一些索引值(无论该值代表)发送回你的电话和这个值出现在你的电话但在错误的特点吗?
谢谢mt_dialog.
对不起MT_Dialog,
我的问题:例如:
当我创建第一个特征时属性是“WR”,第二个具有“RD + NTF”。从应用程序“BLE扫描仪”我将数据发送数据“1'到BLE设备,特征第二reieever'1'是真实的,在应用程序中显示了这个节目,但在App”BLE扫描仪“中的第一个特征展示中是十六进制:'0x31'=>错误为什么??因为第一个特征是“WR”而不是“RD或NTF”。我创建了30个Charectic和5服务,我定义文件“da1458x_config_advanced.h”:
#定义DB_HEAP_SZ 4096
#定义ENV_HEAP_SZ 2296
#define msg_heap_sz 6240.
#define non_ret_heap_sz 4096.
#define db_heap_size(4096 + 12)和ble_connection_max_user = 1 in file“da1458x_catter_config.h”。
嗨manhviking
我仍然无法理解您想要说的话,但如果您发送“1”,另一侧将其解释为0x31是因为您在十六进制中发送ASCII字符和“1”是0x31。检查BLE扫描仪如何解释接收的数据。
谢谢mt_dialog.
嗨对话框
示例:我将“1”从App“BLE扫描仪”发送到BLE设备使用特性1,在收到'1'时,在BLE设备上会增加索引++,因此“BLE扫描仪”特征2将收到'索引++:1,2,3,4......'好的,因为特征2有属性是“Rd + NTF”,但特征1只有“WR”甚至收到'索引++:1,2,3,4 ...''相同的特征2,并显示在“ble中”扫描仪“。
嗨manhaviking,
因此,您正在写入可写字符,当处理程序点击时,您在写处理程序中的变量中存储值并增加一个,以及更新可读的其他特征的值,并且您可以更新在手机上看到这一点。如果您希望在可写的特征中读取2(假设您先前发送1),则可以执行此操作,因为索引变量已经增加,但是如果索引变量也会更新可写特征,如果是特征只可写,你不会能够阅读它。
谢谢mt_dialog.
嗨对话框,
准确地说,问题只在可写特性,它已经显示索引增加的应用程序“BLE Scanner”。我不知道为什么?记住,我创造了30个以上特征
嗨manhviking,
所以你已经改变了一个索引,你可以从价值为2的可写特征读取?
谢谢mt_dialog.
嗨对话框,
当我发送'1'从可写特征在app后,它已经显示'index++'。应该显示为'0x31'
嗨manhviking,
仍然不能够理解,你在做什么,我的意思是我明白你正在增加的价值从580年,你已经写入characteritsic我不该得到的是当你读它你看到一个不同的数字(我的意思是它的一个可写的特点,即使580改变了数据库中的值,您也无法从BLE Scanner中读取它,BLE扫描仪上显示的值是应用程序发送到外设的最新值)。那么,您是否能够使用已经实现的特征复制外围示例中的内容呢?
谢谢mt_dialog.