Browse Source

update

master
zhaohe 1 year ago
parent
commit
4eca5d36e3
  1. 1
      app/config/sdk_config.h
  2. 4
      app/src/aproject_config/config.h
  3. 2
      app/src/basic_service/app_event.h
  4. 16
      app/src/board/ads129x/ads129x.c
  5. 14
      app/src/board/app_board.c
  6. 19
      app/src/board/board_beep_ctrl.c
  7. 14
      app/src/one_conduction_main.c
  8. 41
      app/src/service/ble_cmd_processer/ble_cmd_process_service.c
  9. 2
      app/src/service/ble_cmd_processer/ble_cmd_process_service.h
  10. 2
      app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c
  11. 18
      app/src/service/heart_wave_sample_service/heart_wave_sample_service.c

1
app/config/sdk_config.h

@ -4,5 +4,6 @@
#define NRF_LOG_BACKEND_UART_ENABLED 1 #define NRF_LOG_BACKEND_UART_ENABLED 1
#define NRF_LOG_BACKEND_UART_TX_PIN 41 #define NRF_LOG_BACKEND_UART_TX_PIN 41
#define APP_TIMER_CONFIG_USE_SCHEDULER 1 #define APP_TIMER_CONFIG_USE_SCHEDULER 1
#define NRF_LOG_BACKEND_UART_BAUDRATE 268435456
#include "libznordic/zsdk_config/zsdk_ble_slave_config.h" #include "libznordic/zsdk_config/zsdk_ble_slave_config.h"

4
app/src/aproject_config/config.h

@ -20,12 +20,10 @@
#define BEEP_PIN 1 #define BEEP_PIN 1
#define BEEP_PWM_INSTANCE 0 #define BEEP_PWM_INSTANCE 0
#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 #define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3
#define BATTERY_ADC_CHANNEL 1 // 不重复即可 #define BATTERY_ADC_CHANNEL 1 // 不重复即可
#define BATTERY_CHARGE_DETECT_PIN 6 #define BATTERY_CHARGE_DETECT_PIN 6
/** /**
* @brief * @brief
*/ */
@ -37,7 +35,7 @@
#define SAMPLE_PRECISION 12 // 采样精度 #define SAMPLE_PRECISION 12 // 采样精度
#define AUTOMATIC_SLEEP_TIME 30000 // 开机后自动休眠时间 #define AUTOMATIC_SLEEP_TIME 30000 // 开机后自动休眠时间
#define SAMPLE_MIN_TIME_S (30.0) // 采样最小时间 #define SAMPLE_MIN_TIME_S (30.0) // 采样最小时间
#define LITTLE_DATA_BLOCK_FRAME_NUM 5 // 每次多少帧上报一次
#define LITTLE_DATA_BLOCK_FRAME_NUM 50 // 每次多少帧上报一次
#define KEEP_STILL_OVERTIME_MS_1P5 1500 // 保持静止超时时间的1/6 #define KEEP_STILL_OVERTIME_MS_1P5 1500 // 保持静止超时时间的1/6

2
app/src/basic_service/app_event.h

@ -17,7 +17,7 @@ typedef enum {
kevent_capture_little_data_block_event, // kevent_capture_little_data_block_event, //
} app_event_type_t; } app_event_type_t;
typedef uint16_t one_frame_t;
typedef int32_t one_frame_t;
typedef struct { typedef struct {
app_event_type_t eventType; app_event_type_t eventType;

16
app/src/board/ads129x/ads129x.c

@ -177,14 +177,14 @@ static bool ads129x_write_reg(ads129x_regs_t* writeval) {
* EXTERN * * EXTERN *
***********************************************************************************************************************/ ***********************************************************************************************************************/
void ads129x_read_data_loop() { void ads129x_read_data_loop() {
app_timer_pause();
app_sched_execute();
ads129x_capture_data_t capture_data;
while (true) {
ads129x_read_data(&capture_data);
ZLOGI("%d {%d} %x", ADS129X_DRDY_GET(), capture_data.ch1data, capture_data.loffstate);
}
// app_timer_pause();
// ads129x_capture_data_t capture_data;
// while (true) {
// ads129x_read_data(&capture_data);
// ZLOGI("%d {%d} %x", ADS129X_DRDY_GET(), capture_data.ch1data, capture_data.loffstate);
// znordic_force_flush_log();
// }
} }
uint8_t ads129x_init(ads129x_cfg_t* cfg) { uint8_t ads129x_init(ads129x_cfg_t* cfg) {

14
app/src/board/app_board.c

@ -6,6 +6,7 @@
/*********************************************************************************************************************** /***********************************************************************************************************************
* CFG * * CFG *
***********************************************************************************************************************/ ***********************************************************************************************************************/
APP_TIMER_DEF(m_module_timer);
#define ADS1291_SPI_INSTANCE 2 #define ADS1291_SPI_INSTANCE 2
@ -27,7 +28,7 @@
do { \ do { \
ret_code_t ecode = (exptr); \ ret_code_t ecode = (exptr); \
if (ecode != NRF_SUCCESS) { \ if (ecode != NRF_SUCCESS) { \
ZLOGE("%s:%d ZERROR_CHECK(%s) fail:%d", __FILE__, __LINE__, #exptr, ecode); \
ZLOGE("%s:%d ZERROR_CHECK(%s) fail:%x", __FILE__, __LINE__, #exptr, ecode); \
} \ } \
} while (0) } while (0)
@ -70,14 +71,16 @@ static void __ads1291_init() {
znrf_gpio_cfg_output(ADS1291_START_PIN, NRF_GPIO_PIN_NOPULL); znrf_gpio_cfg_output(ADS1291_START_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(ADS1291_SPI_CS0_PIN, NRF_GPIO_PIN_NOPULL); znrf_gpio_cfg_output(ADS1291_SPI_CS0_PIN, NRF_GPIO_PIN_NOPULL);
// ---------------------------------------------------------------------------
ZERROR_CHECK(nrfx_gpiote_init());
{ {
nrf_gpio_cfg_input(ADS1291_READY_PIN, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_input(ADS1291_READY_PIN, NRF_GPIO_PIN_PULLUP);
nrf_drv_gpiote_in_config_t inConfig = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false); // nrf_drv_gpiote_in_config_t inConfig = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false); //
inConfig.pull = NRF_GPIO_PIN_PULLUP; // ĬÈÏÉÏÀ­ inConfig.pull = NRF_GPIO_PIN_PULLUP; // ĬÈÏÉÏÀ­
inConfig.sense = NRF_GPIOTE_POLARITY_HITOLO; // ϽµÑØ´¥·¢ inConfig.sense = NRF_GPIOTE_POLARITY_HITOLO; // ϽµÑØ´¥·¢
nrfx_gpiote_in_init(ADS1291_READY_PIN, &inConfig, ads1291_ready_pin_irq);
ZERROR_CHECK(nrfx_gpiote_in_init(ADS1291_READY_PIN, &inConfig, ads1291_ready_pin_irq));
nrfx_gpiote_in_event_enable(ADS1291_READY_PIN, true);
} }
static ads129x_cfg_t ads129x_cfg = { static ads129x_cfg_t ads129x_cfg = {
.cspin = ADS1291_SPI_CS0_PIN, .cspin = ADS1291_SPI_CS0_PIN,
.drdypin = ADS1291_READY_PIN, .drdypin = ADS1291_READY_PIN,
@ -91,12 +94,15 @@ static void __ads1291_init() {
* EXTERN * * EXTERN *
***********************************************************************************************************************/ ***********************************************************************************************************************/
void app_board_init() { void app_board_init() {
nrfx_gpiote_init();
// nrfx_gpiote_init();
__ads1291_init(); __ads1291_init();
BoardBattery_init(); BoardBattery_init();
BoardBattery_load(); BoardBattery_load();
board_power_mgr_init(); board_power_mgr_init();
board_power_mgr_main_power_supply_set(true); board_power_mgr_main_power_supply_set(true);
// ZERROR_CHECK(app_timer_create(&m_module_timer, APP_TIMER_MODE_REPEATED, module_tmr_cb));
// ZERROR_CHECK(app_timer_start(m_module_timer, APP_TIMER_TICKS(100), NULL));
} }
void app_board_reg_irq_listener(app_board_irq_event_t event, on_irq_t listener) { void app_board_reg_irq_listener(app_board_irq_event_t event, on_irq_t listener) {

19
app/src/board/board_beep_ctrl.c

@ -1,6 +1,6 @@
#include "board_beep_ctrl.h" #include "board_beep_ctrl.h"
#define BEEP_TIMER_INTERVAL (150) #define BEEP_TIMER_INTERVAL (150)
#if 1
#if 0
APP_TIMER_DEF(m_beep_tmr); // APP_TIMER_DEF(m_beep_tmr); //
static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE); static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE);
@ -128,6 +128,23 @@ void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {
} }
#else #else
static void beep_tmr_handler(void *context) {}
void BoardBeepCtrl_init(void) {}
void BoardBeepCtrl_load() { //
}
void BoardBeepCtrl_unload() {
}
void BoardBeepCtrl_set(uint8_t state) {
}
void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) {
}
#endif #endif

14
app/src/one_conduction_main.c

@ -283,22 +283,16 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
* * * *
*******************************************************************************/ *******************************************************************************/
if (p_event->eventType == kevent_capture_256data_event) { if (p_event->eventType == kevent_capture_256data_event) {
if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) {
sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256);
}
// if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) {
// sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256);
// }
} }
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
if (p_event->eventType == kevent_capture_little_data_block_event) { if (p_event->eventType == kevent_capture_little_data_block_event) {
// //
ZASSERT(LITTLE_DATA_BLOCK_FRAME_NUM == 5);
ble_cmder_try_report_one_sample_data(p_event->val.little_data_block.frameIndex, //
p_event->val.little_data_block.data[0], //
p_event->val.little_data_block.data[1], //
p_event->val.little_data_block.data[2], //
p_event->val.little_data_block.data[3], //
p_event->val.little_data_block.data[4]);
ble_cmder_try_report_one_sample_data(p_event);
} }
/******************************************************************************* /*******************************************************************************

41
app/src/service/ble_cmd_processer/ble_cmd_process_service.c

@ -14,8 +14,8 @@
APP_TIMER_DEF(m_record_upload_tmr); // APP_TIMER_DEF(m_record_upload_tmr); //
APP_TIMER_DEF(m_record_upload_finish_packet_report_tmr); // APP_TIMER_DEF(m_record_upload_finish_packet_report_tmr); //
static uint8_t txbuf[128];
static uint8_t reportbuf[128];
static uint8_t txbuf[250];
static uint8_t reportbuf[250];
static bool m_realtime_report_state = false; static bool m_realtime_report_state = false;
static int m_upload_record_state = 0; static int m_upload_record_state = 0;
static uint32_t m_upload_data_state_enter_tp = 0; static uint32_t m_upload_data_state_enter_tp = 0;
@ -61,7 +61,7 @@ int ble_stop_realtime_report() {
m_realtime_report_state = false; m_realtime_report_state = false;
return 0; return 0;
} }
void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, uint16_t data1, uint16_t data2, uint16_t data3, uint16_t data4) {
void ble_cmder_try_report_one_sample_data(app_event_t* event) {
if (!m_realtime_report_state) { if (!m_realtime_report_state) {
return; return;
} }
@ -70,20 +70,27 @@ void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, u
reportpacket->cmd = ify_hrs_report_heartrate_data; reportpacket->cmd = ify_hrs_report_heartrate_data;
reportpacket->frame_index = 0; reportpacket->frame_index = 0;
reportpacket->frame_type = kifyhrs_pt_report; reportpacket->frame_type = kifyhrs_pt_report;
reportpacket->sample_data_index = frameIndex;
reportpacket->data[0] = (data0 >> 0) & 0xFF; //
reportpacket->data[1] = (data0 >> 8) & 0xFF; //
reportpacket->data[2] = (data1 >> 0) & 0xFF; //
reportpacket->data[3] = (data1 >> 8) & 0xFF; //
reportpacket->data[4] = (data2 >> 0) & 0xFF; //
reportpacket->data[5] = (data2 >> 8) & 0xFF; //
reportpacket->data[6] = (data3 >> 0) & 0xFF; //
reportpacket->data[7] = (data3 >> 8) & 0xFF; //
reportpacket->data[8] = (data4 >> 0) & 0xFF; //
reportpacket->data[9] = (data4 >> 8) & 0xFF; //
uint16_t sendlen = sizeof(heartrate_report_packet_t) + 10;
reportpacket->sample_data_index = event->val.little_data_block.frameIndex;
for (int i = 0; i < LITTLE_DATA_BLOCK_FRAME_NUM; i++) {
reportpacket->data[i * 4] = (event->val.little_data_block.data[i] >> 0) & 0xFF;
reportpacket->data[i * 4 + 1] = (event->val.little_data_block.data[i] >> 8) & 0xFF;
reportpacket->data[i * 4 + 2] = (event->val.little_data_block.data[i] >> 16) & 0xFF;
reportpacket->data[i * 4 + 3] = (event->val.little_data_block.data[i] >> 24) & 0xFF;
}
STATIC_ASSERT(sizeof(one_frame_t) == 4);
// reportpacket->data[2] = (data1 >> 0) & 0xFF; //
// reportpacket->data[3] = (data1 >> 8) & 0xFF; //
// reportpacket->data[4] = (data2 >> 0) & 0xFF; //
// reportpacket->data[5] = (data2 >> 8) & 0xFF; //
// reportpacket->data[6] = (data3 >> 0) & 0xFF; //
// reportpacket->data[7] = (data3 >> 8) & 0xFF; //
// reportpacket->data[8] = (data4 >> 0) & 0xFF; //
// reportpacket->data[9] = (data4 >> 8) & 0xFF; //
uint16_t sendlen = sizeof(heartrate_report_packet_t) + LITTLE_DATA_BLOCK_FRAME_NUM * 4;
zdatachannel_data_send2(reportbuf, sendlen); zdatachannel_data_send2(reportbuf, sendlen);
return; return;
} }

2
app/src/service/ble_cmd_processer/ble_cmd_process_service.h

@ -9,7 +9,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len);
void ble_cmder_start_adv(); void ble_cmder_start_adv();
void ble_cmder_stop_adv(); void ble_cmder_stop_adv();
void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, uint16_t data1, uint16_t data2, uint16_t data3, uint16_t data4);
void ble_cmder_try_report_one_sample_data(app_event_t* event);
void ble_cmder_try_report_sensor_drop_event(uint8_t dropstate0, uint8_t dropstate1); void ble_cmder_try_report_sensor_drop_event(uint8_t dropstate0, uint8_t dropstate1);
void ble_cmder_report_upload_finish_event(uint32_t sumcheckcode); void ble_cmder_report_upload_finish_event(uint32_t sumcheckcode);
void ble_cmder_report_sample_finish_event(); void ble_cmder_report_sample_finish_event();

2
app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c

@ -8,5 +8,5 @@ void hwsd_pre_processer_process(one_frame_t framdata) { //
m_displaydata = framdata; m_displaydata = framdata;
} }
uint16_t hwsd_pre_processer_get_display_data() { return m_displaydata; }
one_frame_t hwsd_pre_processer_get_display_data() { return m_displaydata; }
one_frame_t hwsd_pre_processer_get_storage_data() { return m_datacache; } one_frame_t hwsd_pre_processer_get_storage_data() { return m_datacache; }

18
app/src/service/heart_wave_sample_service/heart_wave_sample_service.c

@ -18,18 +18,18 @@ typedef enum {
static capture_state_t m_prepare_capture_state = kidle; static capture_state_t m_prepare_capture_state = kidle;
static uint32_t m_start_capture_tp; static uint32_t m_start_capture_tp;
static void on_ads129x_ready_irq(app_board_irq_event_t event) { static void on_ads129x_ready_irq(app_board_irq_event_t event) {
// static ads129x_capture_data_t capture_data;
// ads129x_read_data(&capture_data);
// ZLOGI("1");
// static uint16_t data;
// data += 100;
static ads129x_capture_data_t capture_data;
ads129x_read_data(&capture_data);
hwsd_mgr_push_one_frame(capture_data.ch1data);
// static int32_t data;
// data += 1000;
// if (data >= 60000) {
// data = -60000;
// }
// hwsd_mgr_push_one_frame(data); // hwsd_mgr_push_one_frame(data);
} }
void hwss_init(void) {
//
app_board_reg_irq_listener(kon_irq_ads1291_ready_pin, on_ads129x_ready_irq);
}
void hwss_init(void) { app_board_reg_irq_listener(kon_irq_ads1291_ready_pin, on_ads129x_ready_irq); }
void hwss_start_prepare_capture(void) { void hwss_start_prepare_capture(void) {
m_start_capture_tp = znordic_getpower_on_s(); m_start_capture_tp = znordic_getpower_on_s();

Loading…
Cancel
Save