Browse Source

fix beep bug

master
zhaohe 1 year ago
parent
commit
3c30f1158e
  1. 37
      README.md
  2. 23
      app/src/basic/device_version_info_mgr.c
  3. 6
      app/src/board/board.h
  4. 24
      app/src/board/board_beep_ctrl.c
  5. 5
      app/src/device_ctrl_service.c
  6. 2
      dynamic_electrocardiograph_ble_server

37
README.md

@ -3,24 +3,25 @@
```
# TODO:
1. 修改蓝牙测试Server程序,测试程序蓝牙名称过滤标志为 iflytop_ble_test_device OK
2. 修改蓝牙名称生成规则,规则为,当device_id为0或者全F,蓝牙名称为iflytop_ble_test_device,否则蓝牙名称为产品SN码 OK
3. 手机端可以看到设备的软件版本信息。OK
3. 心率采集改成由IO中断驱动。OK
8. 开机,蜂鸣器响一声,开始采集,蜂鸣器响一声,结束采集,蜂鸣器响一声。
7. 修正回执包错误码
8. 添加心跳检测,1分钟内没有收到心跳包,设备自动断开蓝牙连接。
9. 设备断开连接后,停止采集(临时代码)
10. 添加一条新的开始采集指令,支持定时参数。(或者使用旧的开始采集指令)
11. 导联断开检测触发后,上报事件(不停止采集),蜂鸣器响三声。
12. 低电量进入关机模式而非休眠模式
13. 添加指令上传最新一条记录
4. 修改电量检测,电量过低时,指示灯闪烁三下后进入低功耗。
5. 电量过低上报低电量事件。电量不足%1时,设备自动断开连接,并关机。
6. 设备充电时候,不允许采集。
修改蓝牙测试Server程序,测试程序蓝牙名称过滤标志为 iflytop_ble_test_device OK
修改蓝牙名称生成规则,规则为,当device_id为0或者全F,蓝牙名称为iflytop_ble_test_device,否则蓝牙名称为产品SN码 OK
手机端可以看到设备的软件版本信息。OK
心率采集改成由IO中断驱动。OK
开机,蜂鸣器响一声,开始采集,蜂鸣器响一声,结束采集,蜂鸣器响一声。
修正回执包错误码.
添加心跳检测,1分钟内没有收到心跳包,设备自动断开蓝牙连接。
设备断开连接后,停止采集(临时代码)
添加一条新的开始采集指令,支持定时参数。(或者使用旧的开始采集指令)
导联断开检测触发后,上报事件(不停止采集),蜂鸣器响三声。
低电量进入关机模式
添加指令上传最新一条记录
修改电量检测,电量过低时,指示灯闪烁三下后进入低功耗。
电量过低上报低电量事件。电量不足%1时,设备自动断开连接,并关机。
设备充电时候,不允许采集。
```

23
app/src/basic/device_version_info_mgr.c

@ -1,3 +1,5 @@
#include "device_version_info_mgr.h"
#include "app_ble_service.h"
#include "app_event_distribute.h"
#include "basic/ads1293/ads1293.h"
@ -5,30 +7,27 @@
#include "device_ctrl_service.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "device_version_info_mgr.h"
//
#include "znordic.h"
#include "version.h"
void device_info_read_sn(sn_t *sn)
{
#include "znordic.h"
void device_info_read_sn(sn_t *sn) {
uint32_t lot = NRF_UICR->CUSTOMER[0];
uint32_t id = NRF_UICR->CUSTOMER[1];
static char sn_str[15];
sprintf(sn_str, CATEGORY "%04d%05d", lot, id);
if (lot == 0 || id == 0 || lot == 0xffffffff || id == 0xffffffff)
{
if (lot == 0 || id == 0 || lot == 0xffffffff || id == 0xffffffff) {
sprintf(sn_str, "iflytop_test", 0, 0);
}
memcpy(sn->sn, sn_str, sizeof(sn->sn));
}
const char *device_info_read_sn_str()
{
const char *device_info_read_sn_str() {
static char sn_str[15];
device_info_read_sn((sn_t *)sn_str);
return sn_str;
}
uint16_t device_info_read_blestack_version(void) { return 1; }
uint16_t device_info_read_bootloader_version(void) { return 1; }
uint16_t device_info_read_firmware_version(void) { return 1; }
uint16_t device_info_read_hardware_version(void) { return 1; }
uint16_t device_info_read_blestack_version(void) { return BLESTACK_VERSION; }
uint16_t device_info_read_bootloader_version(void) { return BOOTLOADER_VERSION; }
uint16_t device_info_read_firmware_version(void) { return FIRMWARE_VERSION; }
uint16_t device_info_read_hardware_version(void) { return HARDWARE_VERSION; }

6
app/src/board/board.h

@ -40,14 +40,12 @@
/*******************************************************************************
* °´¼ü *
*******************************************************************************/
// #define BUTTON_PIN 18
#define BUTTON_PIN 0
#define BUTTON_PIN 18
/*******************************************************************************
* ·äÃùÆ÷ *
*******************************************************************************/
// #define BEEP_PIN 0
#define BEEP_PIN 18
#define BEEP_PIN 0
/*******************************************************************************
* µç³ØµçÁ¿ *

24
app/src/board/board_beep_ctrl.c

@ -1,5 +1,6 @@
#include "board_beep_ctrl.h"
#define BEEP_TIMER_INTERVAL (150)
#if 1
APP_TIMER_DEF(m_beep_tmr); //
static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE);
@ -70,17 +71,20 @@ static void beep_tmr_handler(void *context) {
m_beep_cnt++;
}
void BoardBeepCtrl_init(void) { app_timer_create(&m_beep_tmr, APP_TIMER_MODE_REPEATED, beep_tmr_handler); }
void BoardBeepCtrl_load() { APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL)); }
void BoardBeepCtrl_init(void) {
APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL));
app_timer_create(&m_beep_tmr, APP_TIMER_MODE_REPEATED, beep_tmr_handler);
}
void BoardBeepCtrl_load() {}
void BoardBeepCtrl_unload() {
BoardBeepCtrl_set(0);
nrfx_pwm_uninit(&m_beep_pwm0);
// nrfx_pwm_uninit(&m_beep_pwm0);
}
void BoardBeepCtrl_set(uint8_t state) {
if (state) {
m_beep_pwm0_seq_values.channel_0 = m_beep_pwm0_config0.top_value / 2; // top_value
m_beep_pwm0_seq_values.channel_0 = m_beep_pwm0_config0.top_value / 4; // top_value
nrfx_pwm_simple_playback(&m_beep_pwm0, &m_beep_pwm0_seq, 1, NRF_DRV_PWM_FLAG_LOOP);
} else {
nrfx_pwm_stop(&m_beep_pwm0, true);
@ -100,3 +104,15 @@ void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {
app_timer_start(m_beep_tmr, APP_TIMER_TICKS(BEEP_TIMER_INTERVAL), NULL);
}
}
#else
void BoardBeepCtrl_init(void) {}
void BoardBeepCtrl_load() {}
void BoardBeepCtrl_unload() {}
void BoardBeepCtrl_set(uint8_t state) {}
void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {}
#endif

5
app/src/device_ctrl_service.c

@ -281,11 +281,6 @@ void DeviceCtrl_init() {
//
prvf_change_to_ready_state();
// BoardBeepCtrl_init();
// BoardBeepCtrl_load();
// BoardBeepCtrl_setEffect(kBoardBeepEffect_continuousShortBeep);
ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb));
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ采样
}

2
dynamic_electrocardiograph_ble_server

@ -1 +1 @@
Subproject commit e777a461dddc3fc3756c9eaf9a1f27c473d3c7fb
Subproject commit 0f6adf0cac84c8f4f23eb7aca53fcc751bcb113b
Loading…
Cancel
Save