Browse Source

update

master
zhaohe 1 year ago
parent
commit
584adac44c
  1. 8
      app/config/sdk_config.h
  2. 73
      app/main.c
  3. 638
      app/main.hardtest.c
  4. 6
      app/src/device_state.h
  5. 43
      app/src/one_conduction_main.c

8
app/config/sdk_config.h

@ -7734,7 +7734,7 @@
// <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
//==========================================================
#ifndef NRF_LOG_BACKEND_RTT_ENABLED
#define NRF_LOG_BACKEND_RTT_ENABLED 0
#define NRF_LOG_BACKEND_RTT_ENABLED 1
#endif
// <o> NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings.
// <i> Size of the buffer is a trade-off between RAM usage and processing.
@ -7767,7 +7767,7 @@
// <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
//==========================================================
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#define NRF_LOG_BACKEND_UART_ENABLED 0
#endif
// <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin
#ifndef NRF_LOG_BACKEND_UART_TX_PIN
@ -11420,12 +11420,12 @@
// <i> or this value is actually used. It depends on which one is bigger.
#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP
#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512
#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 1024
#endif
// <o> SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers.
#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS
#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2
#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 3
#endif
// <o> SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer.

73
app/main.c

@ -25,77 +25,4 @@ int main() {
one_conduction_main();
return 0;
}
#endif
#if 0
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_report_timer); //
static void tmr_cb(void* p_context) { //
ZLOGI("%d", SingleLeadECG_ecg_plod_get_ecg_val());
}
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
g_nrf_log_tx_pin = 41;
znordic_init();
NRF_LOG_INFO("compile time :%s", __TIME__);
SingleLeadECG_adc_module_init();
ZERROR_CHECK(app_timer_create(&m_report_timer, APP_TIMER_MODE_REPEATED, tmr_cb));
ZERROR_CHECK(app_timer_start(m_report_timer, APP_TIMER_TICKS(5), NULL));
znordic_loop();
}
#endif
/*******************************************************************************
* 3-ADS1293- *
*******************************************************************************/
#if 0
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
ZDATACHANNEL_DEF(m_zhrs, 2 /*回调事件优先??*/, 1 /*client num*/);
static void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {}
static void zdatachanel_send_log(const char* fmt, ...) {
static char tx[256] = {0};
static uint16_t len = 0;
va_list args;
va_start(args, fmt);
len = vsprintf(tx, fmt, args);
zdatachannel_data_send((uint8_t*)tx, &len);
va_end(args);
}
static void test_tx_timer_cb(void* p_context) {
zdatachanel_send_log("%d\n", SingleLeadECG_ecg_plod_get_ecg_val());
}
static void on_service_init(void) {
/**
* @brief
*/
ZLOGI("init zdatachannel service");
zdatachannel_init_t zdatachannle_init;
memset(&zdatachannle_init, 0, sizeof(zdatachannle_init));
zdatachannle_init.data_handler = zdatachannel_data_handler;
ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
}
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init(0, 20);
NRF_LOG_INFO("compile time :%s", __TIME__);
static zble_module_cfg_t cfg = //
{
.deviceName = "ecg_test",
.on_service_init = on_service_init,
};
zble_module_init(&cfg);
SingleLeadECG_adc_module_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(5), NULL));
zble_module_start_adv();
znordic_loop();
}
#endif

638
app/main.hardtest.c

@ -1,638 +0,0 @@
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "znordic.h"
//
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//
#include "app_uart.h"
#include "basic/ssd1306/driver_ssd1306_basic.h"
#include "basic\zdatachannel_service.h"
#include "one_conduction/one_conduction_board.h"
#include "three_lead\three_lead_board.h"
#if defined(UART_PRESENT)
#include "nrf_uart.h"
#endif
#if defined(UARTE_PRESENT)
#include "nrf_uarte.h"
#endif
#if 0
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
ZLOGI("tim cb %d", data);
// ThreeLeadECG_sdcard_connect2_ext_usb_sdcard_driver_ic_reset();
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
ThreeLeadECG_beep_init();
ThreeLeadECG_sdcard_base_init();
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(3000), NULL));
znordic_loop();
}
#endif
// EEPROM_TEST
#if 1
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
// ZLOGI("test_tx_timer_cb %d", data);
static uint8_t eepromw_test_data[256];
static uint8_t eepromw_rx_data[256];
for (size_t i = 0; i < 256; i++) {
eepromw_test_data[i] = i;
}
// SingleLeadECG_eeprom_write(0, eepromw_test_data, 256);
SingleLeadECG_eeprom_read(0, eepromw_rx_data, 256);
// for (size_t i = 0; i < 256; i++) {
// ZLOGI("eepromw_rx_data[%d] = %d", i, eepromw_rx_data[i]);
// NRF_LOG_INTERNAL_FLUSH();
// }
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
// SingleLeadECG_beep_init();
// SingleLeadECG_beep_set_state(false);
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
SingleLeadECG_eeprom_init();
// nrf_delay_ms(20);
// SingleLeadECG_eeprom_read(0, eepromw_rx_data, 256);
// for (size_t i = 0; i < 256; i++) {
// ZLOGI("eepromw_rx_data[%d] = %d", i, eepromw_rx_data[i]);
// NRF_LOG_INTERNAL_FLUSH();
// }
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
/*******************************************************************************
* +LED测试 *
*******************************************************************************/
#if 0
const unsigned char gImage_0[1024] = { /* 0X22,0X01,0X80,0X00,0X40,0X00, */
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,
0XF8,0XFC,0X1E,0X0E,0X0E,0X0E,0X1E,0XFC,0XF8,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,
0X03,0X07,0X0F,0X0E,0X0E,0X0E,0X0F,0X07,0X03,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
ZLOGI("test_tx_timer_cb %d", data);
SingleLeadECG_led_green_set_state(data % 2 == 0);
SingleLeadECG_led_blue_set_state(data % 3 == 0);
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
int main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
SingleLeadECG_screen_init();
ssd1306_basic_init(SSD1306_INTERFACE_SPI, SSD1306_ADDR_SA0_0);
ssd1306_basic_display_on();
// ssd1306_basic_string(0, 0, "123456789123456789123", 21, 0, SSD1306_FONT_12);
// ssd1306_basic_string(0, 16, "123456789123456789123", 21, 0, SSD1306_FONT_12);
// ssd1306_basic_string(0, 32, "123456789123456789123", 21, 0, SSD1306_FONT_12);
// ssd1306_basic_string(0, 48, "123456789123456789123", 21, 0, SSD1306_FONT_12);
// gImage_0
ssd1306_basic_draw_screen(gImage_0);
// for (size_t i = 0; i < 127; i++) {
// for (size_t j = 0; j < 64; j++)
// {
// ssd1306_basic_write_point(i, j, 1);
// }
// }
ssd1306_gram_update(ssd1306_handler());
SingleLeadECG_led_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
/*******************************************************************************
* ECG *
*******************************************************************************/
#if 0
#define UART_TX_BUF_SIZE 256 /**< UART TX buffer size. */
#define UART_RX_BUF_SIZE 256 /**< UART RX buffer size. */
uint32_t err_code;
app_uart_comm_params_t const comm_params = //
{
.rx_pin_no = UART_PIN_DISCONNECTED,
.tx_pin_no = 41,
.rts_pin_no = UART_PIN_DISCONNECTED,
.cts_pin_no = UART_PIN_DISCONNECTED,
.flow_control = APP_UART_FLOW_CONTROL_DISABLED,
.use_parity = false,
.baud_rate = NRF_UARTE_BAUDRATE_921600,
};
void uart_error_handle(app_uart_evt_t* p_event) {}
void uartinit() {
APP_UART_FIFO_INIT(&comm_params, UART_RX_BUF_SIZE, UART_TX_BUF_SIZE, uart_error_handle, APP_IRQ_PRIORITY_LOWEST, err_code);
APP_ERROR_CHECK(err_code);
}
void zchip_log(const char* fmt, ...) {
static char tx[256] = {0};
va_list args;
va_start(args, fmt);
vsprintf(tx, fmt, args);
for (size_t i = 0; i < strlen(tx); i++) {
app_uart_put(tx[i]);
}
va_end(args);
}
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
// SingleLeadECG_ecg_nlod_get_connected_state();
// SingleLeadECG_ecg_plod_get_connected_state();
// SingleLeadECG_ecg_plod_get_ecg_val();
// ZLOGI("%d nlod %d plod %d ecg:%d", data, SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
// ZLOGI("%d,%d,%d", SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
zchip_log("%d,%d,%d\n", SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// app_uart_put('c');
// NRF_LOG_INFO("......");
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
// g_nrf_log_tx_pin = 41;
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
SingleLeadECG_adc_module_init();
uartinit();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
SingleLeadECG_ecg_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(5), NULL));
znordic_loop();
}
#endif
/*******************************************************************************
* *
*******************************************************************************/
#if 0
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
ZDATACHANNEL_DEF(m_zhrs, 2 /*回调事件优先??*/, 1 /*client num*/);
static const char* hex2str(const uint8_t* data, int32_t len) {
static char rx[64] = {0};
memset(rx, 0, sizeof(rx));
for (int32_t i = 0; i < len; i++) {
sprintf(rx + i * 2, "%02X", data[i]);
}
return rx;
}
static void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {
/**
* @brief ??
*/
if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
ZLOGI("rx:%s", hex2str(p_evt->params.rx_data.p_data, p_evt->params.rx_data.length));
}
}
static void on_service_init(void) {
/**
* @brief ??
*/
ZLOGI("init zdatachannel service");
zdatachannel_init_t zdatachannle_init;
memset(&zdatachannle_init, 0, sizeof(zdatachannle_init));
zdatachannle_init.data_handler = zdatachannel_data_handler;
ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
}
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
ThreeLeadECG_sdcard_base_init();
znordic_init(0, 20);
NRF_LOG_INFO("compile time :%s", __TIME__);
NRF_LOG_INFO("Version :%d", VERSION);
NRF_LOG_INFO("Manufacturer :%s", MANUFACTURER_NAME);
static zble_module_cfg_t cfg = //
{
.deviceName = BLE_NAME,
.on_service_init = on_service_init,
};
zble_module_init(&cfg);
zble_module_start_adv();
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* ADCTEST *
*******************************************************************************/
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
// ZLOGI("test_tx_timer_cb %d", data);
static uint8_t eepromw_test_data[256];
static uint8_t eepromw_rx_data[256];
for (size_t i = 0; i < 256; i++) {
eepromw_test_data[i] = i;
}
int16_t adc = SingleLeadECG_battery_get_adc_val();
int16_t mv = adc * 1.0 / 4096 * 3.6 * 1000 / 2.0 * 3;
ZLOGI("battery:%d", mv);
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
SingleLeadECG_adc_module_init();
SingleLeadECG_battery_init();
// SingleLeadECG_beep_init();
// SingleLeadECG_beep_set_state(false);
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
// nrf_delay_ms(20);
// SingleLeadECG_eeprom_read(0, eepromw_rx_data, 256);
// for (size_t i = 0; i < 256; i++) {
// ZLOGI("eepromw_rx_data[%d] = %d", i, eepromw_rx_data[i]);
// NRF_LOG_INTERNAL_FLUSH();
// }
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* 3-ADS1293- *
*******************************************************************************/
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
static void zdatachanel_send_log(const char* fmt, ...) {
static char tx[256] = {0};
static uint16_t len = 0;
va_list args;
va_start(args, fmt);
len = vsprintf(tx, fmt, args);
zdatachannel_data_send((uint8_t*)tx, &len);
va_end(args);
}
static const char* dumplodstate(uint16_t lodstate) {
static char buf[64];
memset(buf, 0, sizeof(buf));
/**
* @brief
* 1111_0000_0000_0000
*/
sprintf(buf, "%d%d%d%d_%d%d%d%d_%d%d%d%d_%d%d%d%d", //
lodstate >> 15 & 0x1, lodstate >> 14 & 0x1, lodstate >> 13 & 0x1, lodstate >> 12 & 0x1, //
lodstate >> 11 & 0x1, lodstate >> 10 & 0x1, lodstate >> 9 & 0x1, lodstate >> 8 & 0x1, //
lodstate >> 7 & 0x1, lodstate >> 6 & 0x1, lodstate >> 5 & 0x1, lodstate >> 4 & 0x1, //
lodstate >> 3 & 0x1, lodstate >> 2 & 0x1, lodstate >> 1 & 0x1, lodstate >> 0 & 0x1);
return buf;
}
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
uint16_t val;
ThreeLeadECG_ads1293_get_lod_state(&val);
#if 0
uint32_t sample0;
uint32_t sample1;
uint32_t sample2;
ThreeLeadECG_ads1293_sample(&sample0, &sample1, &sample2);
zdatachanel_send_log("%d,%d,%d\n", sample0, sample1, sample2);
#endif
uint32_t sample0;
uint32_t sample1;
uint32_t sample2;
uint32_t sample10;
uint32_t sample11;
uint32_t sample12;
ThreeLeadECG_ads1293_sample_all(&sample0, &sample1, &sample2, &sample10, &sample11, &sample12);
zdatachanel_send_log("%d,%d,%d,%d,%d,%d\n", sample0, sample1, sample2, sample10, sample11, sample12);
// zdatachanel_send_log("%d,%d\n", sample0, sample1);
// zdatachanel_send_log("%d,%d,%d\n", data, data, data);
// zdatachanel_send_log("%d %d %s\n", ThreeLeadECG_ready_pin_state_get(), ThreeLeadECG_LineInputDet_get_state(), dumplodstate(val));
// zdatachannel_data_send(tx, &p_length);
}
ZDATACHANNEL_DEF(m_zhrs, 2 /*回调事件优先??*/, 1 /*client num*/);
static const char* hex2str(const uint8_t* data, int32_t len) {
static char rx[64] = {0};
memset(rx, 0, sizeof(rx));
for (int32_t i = 0; i < len; i++) {
sprintf(rx + i * 2, "%02X", data[i]);
}
return rx;
}
char cmdcache[256] = {0};
static void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {
/**
* @brief ??
*/
if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
}
}
static void on_service_init(void) {
/**
* @brief ??
*/
ZLOGI("init zdatachannel service");
zdatachannel_init_t zdatachannle_init;
memset(&zdatachannle_init, 0, sizeof(zdatachannle_init));
zdatachannle_init.data_handler = zdatachannel_data_handler;
ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
}
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
ThreeLeadECG_sdcard_base_init();
znordic_init(0, 20);
NRF_LOG_INFO("compile time :%s", __TIME__);
NRF_LOG_INFO("Version :%d", VERSION);
NRF_LOG_INFO("Manufacturer :%s", MANUFACTURER_NAME);
static zble_module_cfg_t cfg = //
{
.deviceName = BLE_NAME,
.on_service_init = on_service_init,
};
zble_module_init(&cfg);
ThreeLeadECG_ecg_init();
ThreeLeadECG_LineInputDet_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(5), NULL));
zble_module_start_adv();
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* 3-led测试 *
*******************************************************************************/
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
ZLOGI("test_tx_timer_cb %d", data);
ThreeLeadECG_led_green_set_state(data % 2 == 0);
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
ThreeLeadECG_led_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* 3- *
*******************************************************************************/
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
int16_t mv = ThreeLeadECG_battery_get_adc_val() * 1.0 / 4096 * 3.3 * 1000 / 2.0 * 3;
ZLOGI("battery:%d", mv);
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
ThreeLeadECG_adc_module_init();
ThreeLeadECG_battery_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* 3-flash测试 *
*******************************************************************************/
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
ThreeLeadECG_sdcard_base_init();
ThreeLeadECG_sdcard_mount();
ThreeLeadECG_sdcard_umount();
ThreeLeadECG_sdcard_mount();
ThreeLeadECG_sdcard_umount();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
#endif
#if 0
/*******************************************************************************
* 3-flash测试 *
*******************************************************************************/
static void test_tx_timer_cb(void* p_context) {
static uint32_t data;
data++;
ZLOGI("button %d", ThreeLeadECG_button_get_state());
}
extern uint32_t g_nrf_log_tx_pin;
APP_TIMER_DEF(m_test_tx_timer);
void main() {
APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
znordic_init();
NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
NRF_LOG_INTERNAL_FLUSH();
ThreeLeadECG_button_init();
ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(300), NULL));
znordic_loop();
}
#endif

6
app/src/device_state.h

@ -8,9 +8,9 @@ typedef enum {
kplod_disconnected_event, //
kplod_connecting_event, //
kplod_start_charge_event, //
kplod_charging_event, //
kplod_end_charge_event, //
kbattery_start_charge_event, //
kbattery_charging_event, //
kbattery_end_charge_event, //
kevent_tmr_scheduler_event, //

43
app/src/one_conduction_main.c

@ -21,7 +21,6 @@ ZDATACHANNEL_DEF(m_zhrs, 2 /*
APP_TIMER_DEF(m_state_machine_driver_tmr); //
APP_TIMER_DEF(m_plod_state_event_detect_tmr); //
APP_TIMER_DEF(m_charge_event_detect_tmr); //
extern uint32_t g_nrf_log_tx_pin;
static int m_cur_fd;
static sample_data_filename_t sampledata_file_name;
@ -81,22 +80,22 @@ static void m_charge_event_detect_tmr_cb(void* p_context) { //
static app_event_t appevent;
memset(&appevent, 0, sizeof(appevent));
static bool ischarging = false;
if (!SingleLeadECG_battery_charge_get_state()) {
if (!ischarging) {
appevent.eventType = kplod_start_charge_event;
ischarging = true;
AppEvent_pushEvent(&appevent);
} else {
appevent.eventType = kplod_charging_event;
AppEvent_pushEvent(&appevent);
}
} else {
if (ischarging) {
ischarging = false;
appevent.eventType = kplod_end_charge_event;
AppEvent_pushEvent(&appevent);
}
}
// if (!SingleLeadECG_battery_charge_get_state()) {
// if (!ischarging) {
// appevent.eventType = kbattery_start_charge_event;
// ischarging = true;
// AppEvent_pushEvent(&appevent);
// } else {
// appevent.eventType = kbattery_charging_event;
// AppEvent_pushEvent(&appevent);
// }
// } else {
// if (ischarging) {
// ischarging = false;
// appevent.eventType = kbattery_end_charge_event;
// AppEvent_pushEvent(&appevent);
// }
// }
}
static void state_machine_driver_tmr_cb(void* p_context) { //
@ -203,11 +202,10 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) {
/*******************************************************************************
* *
*******************************************************************************/
if (SingleLeadECG_battery_charge_get_state()) {
//
state_machine__change_to_charging_state();
}
// if (!SingleLeadECG_battery_charge_get_state()) {
// //
// state_machine__change_to_charging_state();
// }
if (p_event->eventType == kplod_connected_event) {
//
state_machine__change_to_poweroning_state();
@ -426,7 +424,6 @@ void on_service_init(void) {
}
void one_conduction_main() {
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, 20);
g_nrf_log_tx_pin = 41;
znordic_init();
NRF_LOG_INFO("compile time :%s", __TIME__);

Loading…
Cancel
Save