使用从协处理器接收的信息,我需要能够在运行时设置在运行时的设备信息服务中的一些字符串。股票实施的股票实现在user_profiles_config中使用了硬编码字符串。我希望这不需要完全重新实施播放服务。您是否有建议(或参考代码)如何执行此操作?
嗨米克伍德,
如果检查vICS配置文件的特征,则它们具有PERM(RI,ENABLE)作为属性。此属性意味着vis visl配置文件的值未存储到数据库中,如自定义配置文件。当主站要读取特征时,将执行dist_value_req_ind_handler,代码将进入处理程序的“案例”之一,并且设备将发送其中一个值。为了在运行时设置一些字符串,使用从协处理器接收的信息,您可以使用要添加的值更改为app_diss_task.h中的“案例”的长度和数据。
谢谢,PM_DIALOG.
嗨pm_dialog,
谢谢你的答案。我希望避免对SDK的直接修改,以防我们升级到更新版本。相反,我试图修改user_profileS_config.h文件以使用宏的变量来运行时需要设置。例如,我对序列号特征进行了以下更改,对user_profiles_config.h:
/// 序列号//#define app_dis_serial_nb_str(“1.0.0.0-LE”)//#define app_dis_serial_nb_str_len(10)extern char * disserialnum;#define app_dis_serial_nb_str_len(32)#define app_dis_serial_nb_str disserialnum.
在其他地方(例如,在Main User_App.c文件中)定义SysSerialNum阵列。但是,此构建失败了链接器错误:
C:\ Users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6226e:缺少区域extern的基础地址。C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6292e:忽略为区域extern指定的未知属性'char'。C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6292e:忽略为区域extern指定的未知属性'* disserialnum'。C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(655):错误:l6292e:忽略为Extern指定的未知属性'LR_IROM1'。C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(655):错误:l6228e:预期'{',找到'0 ...'。C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3:错误:l6372e:图像需要至少一个负载区域。
由于某种原因,外部声明被解释为内存区域声明。如果我从user_profiles_config.h省略extern decl,那么app_diss_task.c无法构建未知符号。
我会继续致力于这一点,但任何建议都非常欢迎。
你好pm_dialog,
没关系 - 我解决了这个问题。user_profiles_config.h文件包含在da1458x_config_basic.h文件中,又包含在散点文件中。我只需要将以下内容添加到extern声明:
#ifndef arm_scatterfile.extern char disserialnum [];#endif / * arm_scatterfile * /
现在它建立了很好 - 我应该能够直接修改SDK文件,了解我想要的东西。谢谢你的帮助。
很高兴您发现您解决了您的问题,并谢谢您的表明。
嗨米克伍德,
如果检查vICS配置文件的特征,则它们具有PERM(RI,ENABLE)作为属性。此属性意味着vis visl配置文件的值未存储到数据库中,如自定义配置文件。当主站要读取特征时,将执行dist_value_req_ind_handler,代码将进入处理程序的“案例”之一,并且设备将发送其中一个值。为了在运行时设置一些字符串,使用从协处理器接收的信息,您可以使用要添加的值更改为app_diss_task.h中的“案例”的长度和数据。
谢谢,PM_DIALOG.
嗨pm_dialog,
谢谢你的答案。我希望避免对SDK的直接修改,以防我们升级到更新版本。相反,我试图修改user_profileS_config.h文件以使用宏的变量来运行时需要设置。例如,我对序列号特征进行了以下更改,对user_profiles_config.h:
/// 序列号
//#define app_dis_serial_nb_str(“1.0.0.0-LE”)
//#define app_dis_serial_nb_str_len(10)
extern char * disserialnum;
#define app_dis_serial_nb_str_len(32)
#define app_dis_serial_nb_str disserialnum.
在其他地方(例如,在Main User_App.c文件中)定义SysSerialNum阵列。但是,此构建失败了链接器错误:
C:\ Users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6226e:缺少区域extern的基础地址。
C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6292e:忽略为区域extern指定的未知属性'char'。
C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(178):错误:l6292e:忽略为区域extern指定的未知属性'* disserialnum'。
C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(655):错误:l6292e:忽略为Extern指定的未知属性'LR_IROM1'。
C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3(655):错误:l6228e:预期'{',找到'0 ...'。
C:\ users \ mkelwood \ appdata \ local \ temp \ p2bc8-3:错误:l6372e:图像需要至少一个负载区域。
由于某种原因,外部声明被解释为内存区域声明。如果我从user_profiles_config.h省略extern decl,那么app_diss_task.c无法构建未知符号。
我会继续致力于这一点,但任何建议都非常欢迎。
你好pm_dialog,
没关系 - 我解决了这个问题。user_profiles_config.h文件包含在da1458x_config_basic.h文件中,又包含在散点文件中。我只需要将以下内容添加到extern声明:
#ifndef arm_scatterfile.
extern char disserialnum [];
#endif / * arm_scatterfile * /
现在它建立了很好 - 我应该能够直接修改SDK文件,了解我想要的东西。谢谢你的帮助。
嗨米克伍德,
很高兴您发现您解决了您的问题,并谢谢您的表明。
谢谢,PM_DIALOG.