NRF51822之修改设备名(掉电不保存)

主要代码

/**@brief Function for handling the Application‘s BLE Stack events.
 *
 * @param[in]   p_ble_evt   Bluetooth stack event.
 */
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
    switch (p_ble_evt->header.evt_id)
    {
        case BLE_GAP_EVT_CONNECTED:
            m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
            break;

        case BLE_GAP_EVT_DISCONNECTED:

            m_conn_handle = BLE_CONN_HANDLE_INVALID; // Set connection handle to 0xFFFF
            advertising_init();//利用这个函数底层调用sd_ble_gap_device_name_get函数来获取设备名称
            advertising_start();
            break;

        case BLE_GAP_EVT_TIMEOUT:
            if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING)
            {
                advertising_start();
            }
            break;

        default:
            // No implementation needed.
            break;
    }
}
/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{
    uint32_t      err_code;
    ble_advdata_t advdata;

    memset(&advdata, 0, sizeof(advdata));

    advdata.name_type               = BLE_ADVDATA_FULL_NAME;
    advdata.include_appearance      = false;
    advdata.flags                   = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    advdata.uuids_complete.p_uuids  = m_adv_uuids;

    err_code = ble_advdata_set(&advdata,NULL);
    APP_ERROR_CHECK(err_code);
}

/**@brief Function for starting advertising.
 */
static void advertising_start(void)
{
    uint32_t             err_code;
    ble_gap_adv_params_t adv_params;

    // Start advertising
    memset(&adv_params, 0, sizeof(adv_params));

    adv_params.type        = BLE_GAP_ADV_TYPE_ADV_IND;
    adv_params.p_peer_addr = NULL;
    adv_params.fp          = BLE_GAP_ADV_FP_ANY;
    adv_params.interval    = APP_ADV_INTERVAL;
    adv_params.timeout     = APP_ADV_TIMEOUT_IN_SECONDS;

    err_code = sd_ble_gap_adv_start(&adv_params);
    APP_ERROR_CHECK(err_code);
}

/**@brief Function for stopping advertising.
 */
static void advertising_stop(void)
{
    uint32_t err_code;

    err_code = sd_ble_gap_adv_stop();
    APP_ERROR_CHECK(err_code);

}

需要注意的原来的广播中预留可以作为设备名的大小长度。

时间: 2024-10-20 06:16:52

NRF51822之修改设备名(掉电不保存)的相关文章

关于掉电数据保存的心得

在掉电保存数据时会有一定的风险,数据在保存时可能会有干扰,因此对于这一块处理一定要小心谨慎. 以下是我的方法: 1.每隔一段时间,保存数据,我们把这个保存数据的地方称位"数据区1". 2.当发生掉电的时候,我们不能把数据存放在"数据区1",而是另外的开一块内存,这个内存我们叫”数据区2“. 我们将设备上电时,应该最先去判断“数据区2”数据的准确性,如果数据正常,则从“数据区2”读出数据,如果不正常,则继续检查“数据区1”数据的准确性. 原文地址:https://ww

STM32 可编程电压监测器(PVD)实现数据掉电保存

STM32内部有一个完整的上电复位和掉电复位电路,当供电电压达到2v时系统即能正常工作. STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控.通过电源控制寄存器中的PLS[2:0]位可以用来设定监控电压的阀值,通过对外部电压进行比较来监控电源.当条件触发,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作. 操作流程:     1).系统启动后启动PVD,并开启相应的中断.     PWR_PVDLevelConfig(PWR_PVD

Mac Pro 2015休眠掉电解决办法

硬件:Mac Pro 2015 系统:MacOs Mojave 10.14.3 问题:合盖的时候,休眠1小时掉电10%,由于之前是128G原装盘不会有这个问题,后面购买了M.2转接卡,更换1T Intel 760P NVME,重装系统出现 分析:看了网上大部分说明,应该是休眠的时候,保存TCP连接,其实就是Find My MAC功能,及可能没有真正进入休眠导致的 处理:看了网上有三个地方更改,试了一下,效果明显 1.可能是待机时依然链接网络导致的.如果不需要待机时链接网络可以执行,主要是Find

Ubuntu修改设备名

最近看Ubuntu设备名看的不爽,就想换个舒服点的.在网上找到两个方法,记录一下. 方法一: sudo sed -i 's/当前设备名/新设备名/' /etc/hosts sudo sed -i 's/当前设备名/新设备名/' /etc/hostname 方法二: sudo vim /etc/hostname 修改保存 sudo vim /etc/hosts 修改保存 重启即可. Ubuntu修改设备名,布布扣,bubuko.com

由异常掉电问题---谈xfs文件系统

本文皆是作者自己的学习总结或感悟(linux环境),如有不对,欢迎提出一起探讨!! 目录结构 一.相关知识 二.问题提出 三.处理方法 四.最终结果 一.相关知识 1.xfs文件系统(概念性知识网上很多,自己去查喽) 文件系统的定义: 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法. xfs文件系统: 是一个日志型文件系统 日志文件系统?加一个日志来记录文件系统的更改,即使在断电或者是操作系统

增加AC-DC电源掉电保持时间的简单方法_金升阳模块电源

摘要:在一些特殊的应用场合,常规AC-DC开关电源的掉电保持时间无法满足要求,而超长掉电保持时间的开关电源在市场上十分少见.为满足这些特殊应用场合的需求,本文从理论上分析了决定掉电保持时间的因素,并提出了一种简单的通过外围电路来增加掉电保持时间的方法. 关键词:AC-DC:模块电源:掉电保持时间 0 引言 ACDC开关电源有一项重要的技术参数——掉电保持时间,指从AC掉电到输出电压下降到精度范围(通常是-2%)之外的时间差⊿t,如图1所示.通俗地讲,就是开关电源在没有输入后,输出还能撑多久. 很

Linux掉电处理

在嵌入式设备中,掉电处理一直是一项比较麻烦的工作,在具有Linux系统的设备中,系统的种种数据的处理更是增加掉电处理的难度.现在做以下几点总结,再遇到类似问题可以做个参考. 1,系统启动的处理 在系统上电启动时,会加载/etc/inittab,进行初始化处理,然后执行各个脚本.如S13ntp..类似,分区时将文件系统放在分区1的话,mount时最好read only的方式,否则上下几次,系统遇到阻塞的情况断电就很容易损坏该分区.初始化脚本也尽量优化,不要让系统阻塞. 2,检测掉电事件 加上一个线

STM32的FSMC总线驱动ili9341,掉电重启无法正常显示的问题

问题描述 通过STM32的FSMC总线驱动ili9341,程序调试和刚下载的时候,显示完全正常.可是就在我掉电关机,重新启动的时候就完全跑飞了.这令我非常疑惑.以下是我的FSMC总线配置程序, static void LCD_FSMC_Config(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; p.FSMC_AddressSetupTime = 0x02; p

SQL Server 修改表结构后无法保存的老问题

在修改表结构后无法保存,这是每次重装SQL Server后都会遇到的问题,好记性不如烂笔头,在这里记一下吧. 保存修改了的表结构时会提示“不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改"选项.” 截图如下: 解决办法也很简单,在Microsoft SQL Server Management Studio的菜单中选择“工具->选项->设计器”,把“阻止保存要求重新创建表的更改”这一项前面的对勾去掉就可以了.如