Browse Source

update

master
zhaohe 1 year ago
parent
commit
f3b20feba7
  1. 7
      .vscode/settings.json
  2. 20
      app/app.uvoptx
  3. 2
      app/app.uvprojx
  4. 9
      app/src/app_ble_service.c
  5. 3
      app/src/app_ble_service.h
  6. 10
      app/src/app_event.h
  7. 6
      app/src/app_event_distribute.c
  8. 2
      app/src/app_event_distribute.h
  9. 6
      app/src/board/board.h
  10. 23
      app/src/board/board_beep_ctrl.c
  11. 15
      app/src/board/board_light_ctrl.c
  12. 28
      app/src/board/board_sdcard_driver.c
  13. 282
      app/src/device_ctrl_service.c
  14. 12
      app/src/heart_wave_sample_service.c
  15. 7
      app/src/heart_wave_sample_service.h
  16. 15
      app/src/main.c
  17. 41
      app/src/sample_data_manager_service.c
  18. 28
      app/src/sample_data_manager_service.h
  19. 2
      libznordic

7
.vscode/settings.json

@ -101,7 +101,12 @@
"nrf_drv_gpiote.h": "c",
"device_ctrl_service.h": "c",
"board_battery_state.h": "c",
"board_sdcard_driver.h": "c"
"board_sdcard_driver.h": "c",
"board_button.h": "c",
"app_event_distribute.h": "c",
"board_beep_ctrl.h": "c",
"nrf_soc.h": "c",
"sample_data_manager_service.h": "c"
},
"files.encoding": "gbk"
}

20
app/app.uvoptx

@ -135,7 +135,6 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>d</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@ -148,7 +147,24 @@
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC4000 -FN2 -FF0nrf52xxx -FS00 -FL0200000 -FF1nrf52xxx_uicr -FS110001000 -FL11000 -FP0($$Device:nRF52833_xxAA$Flash\nrf52xxx.flm) -FP1($$Device:nRF52833_xxAA$Flash\nrf52xxx_uicr.flm))</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>116</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>163038</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\src\board\board_sdcard_driver.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\nrf52833_xxaa\src/board/board_sdcard_driver.c\116</Expression>
</Bp>
</Breakpoint>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>

2
app/app.uvprojx

@ -313,7 +313,7 @@
</ArmAdsMisc>
<Cads>
<interw>1</interw>
<Optim>4</Optim>
<Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>1</OneElfS>

9
app/src/app_ble_service.c

@ -141,11 +141,11 @@ static void prvf_process_ble_rx_data(void* p_event_data, uint16_t len) {
receipt->device_state0.sampling_state = (DeviceCtrl_now_state() == kdevice_state_sampling);
receipt->device_state0.report_state = m_realtime_report_state;
receipt->device_state0.low_battery = (BoardBattery_get_battery_level() < 20);
receipt->device_state0.full_storge = (sample_data_mgr_storage_is_full());
receipt->device_state0.full_storge = (SampleDataMgr_storageIsFull());
receipt->device_state1 = 0;
receipt->powerlevel = BoardBattery_get_battery_level();
receipt->storage_item_num = sample_data_mgr_get_file_num();
receipt->storage_item_num = SampleDataMgr_getFileNum();
zdatachannel_data_send2(m_txbuf, sendlen);
}
@ -216,7 +216,7 @@ static void prvf_process_ble_rx_data(void* p_event_data, uint16_t len) {
return;
}
sample_data_fileinfo_list_t* recordlist = sample_data_mgr_get_fileinfo_list();
sample_data_fileinfo_list_t* recordlist = SampleDataMgr_getFileinfoList();
if (recordoff >= recordlist->count) {
send_error_receipt(rxheader, kifyhrs_ecode_no_record_find);
return;
@ -271,8 +271,7 @@ static void prvf_process_ble_rx_data(void* p_event_data, uint16_t len) {
}
}
void AppBleService_startAdv() { zble_module_start_adv(); }
void AppBleService_stopAdv() { zble_module_stop_adv(); }
void AppBleService_onServiceInitCB() {
ZLOGI("init zdatachannel service");

3
app/src/app_ble_service.h

@ -10,9 +10,6 @@ void AppBleService_onServiceInitCB();
void AppBleService_init();
void AppBleService_uninit();
void AppBleService_startAdv();
void AppBleService_stopAdv();
void AppBleService_try_report_one_sample_data(uint32_t frameIndex, uint16_t data);
void AppBleService_try_report_sensor_drop_event(uint8_t dropstate0, uint8_t dropstate1);
void AppBleService_report_sample_finish_event();

10
app/src/app_event.h

@ -9,6 +9,16 @@ typedef enum {
kevent_tmr_scheduler, //
kevent_capture_data_block_event, //
kevent_capture_little_data_block_event, //
kevent_button_push_event, //
kevent_button_release_event, //
kevent_start_sample_event, //
kevent_stop_sample_event, //
kevent_ble_connect_event, //
kevent_ble_disconnect_event, //
} app_event_type_t;
typedef struct {

6
app/src/app_event_distribute.c

@ -14,10 +14,10 @@ static void app_event_process_cb(void* p_event_data, uint16_t event_size) {
}
}
void AppEvent_regListener(AppEventListener* listener) { //
m_listener[m_listener_num] = *listener;
void AppEvent_regListener(app_event_listener_t listener) { //
m_listener[m_listener_num].cbfunc = listener;
}
void AppEvent_pushEvent(app_event_t* event) { //
app_sched_event_put(event, sizeof(app_event_t) , app_event_process_cb);
app_sched_event_put(event, sizeof(app_event_t), app_event_process_cb);
}

2
app/src/app_event_distribute.h

@ -11,5 +11,5 @@ typedef struct {
app_event_listener_t cbfunc;
} AppEventListener;
void AppEvent_regListener(AppEventListener* listener);
void AppEvent_regListener(app_event_listener_t listener);
void AppEvent_pushEvent(app_event_t* event);

6
app/src/board/board.h

@ -63,5 +63,7 @@
#define SAMPLE_RATE 800
#define SAMPLE_PRECISION 24
#define APP_MAX_EVEN_SIZE MAX(APP_TIMER_SCHED_EVENT_DATA_SIZE,sizeof(app_event_t))
#define APP_EVENT_QUEUE_SIZE 20
#define APP_MAX_EVEN_SIZE MAX(APP_TIMER_SCHED_EVENT_DATA_SIZE, sizeof(app_event_t))
#define APP_EVENT_QUEUE_SIZE 20
#define APP_AUTO_SLEEP_TIMEOUT_MS (10 * 1000)

23
app/src/board/board_beep_ctrl.c

@ -1,5 +1,5 @@
#include "board_beep_ctrl.h"
#define BEEP_TIMER_INTERVAL (200)
#define BEEP_TIMER_INTERVAL (150)
APP_TIMER_DEF(m_beep_tmr); //
static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE);
@ -20,7 +20,7 @@ static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = {
.step_mode = NRF_PWM_STEP_AUTO,
};
BoardBeepEffect_t m_beep_effect = kBoardBeepEffect_none;
static uint32_t m_beep_cnt = 0;
static uint32_t m_beep_cnt = 0;
static void beep_tmr_handler(void *context) {
if (m_beep_effect == kBoardBeepEffect_none) {
@ -34,27 +34,30 @@ static void beep_tmr_handler(void *context) {
m_beep_effect = kBoardBeepEffect_none;
}
} else if (m_beep_effect == kBoardBeepEffect_threeShortBeep) {
if (m_beep_cnt % 2 == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt % 2 == 1) {
BoardBeepCtrl_set(false);
} else if (m_beep_cnt >= 6) {
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt % 2 == 1) {
BoardBeepCtrl_set(false);
}
} else {
BoardBeepCtrl_set(false);
app_timer_stop(m_beep_tmr);
m_beep_effect = kBoardBeepEffect_none;
}
} else if (m_beep_effect == kBoardBeepEffect_continuousShortBeep) {
// ÿ¸ô1ÃëÏìÈýÉù
ZASSERT(BEEP_TIMER_INTERVAL == 200);
if (m_beep_cnt <= 6) {
if (m_beep_cnt < 6) {
if (m_beep_cnt % 2 == 0) {
BoardBeepCtrl_set(true);
} else if (m_beep_cnt % 2 == 1) {
BoardBeepCtrl_set(false);
}
} else {
if (BEEP_TIMER_INTERVAL * m_beep_cnt >= 1000) {
if (BEEP_TIMER_INTERVAL * m_beep_cnt >= 10000) {
m_beep_cnt = 0;
return;
}
}
}

15
app/src/board/board_light_ctrl.c

@ -4,7 +4,7 @@
#include "znordic.h"
#define BLINK_CNT 1
#define BLINK_PERIOD_MS (1000)
#define BLINK_PERIOD_MS (100)
static LightEffect m_light_effect;
static bool m_led_green_light_state;
@ -21,8 +21,17 @@ static void BoardLight_effect_tmr_handler(void *p_context) { //
BoardLight_setGreenLightState(true);
}
} else if (m_light_effect == kLightEffect_slowFlash) {
if (m_blink_cnt % 1 == 0) {
BoardLight_toggleGreenLightState();
if (m_blink_cnt < 2) {
if (m_blink_cnt % 2 == 0) {
BoardLight_setGreenLightState(true);
} else if (m_blink_cnt % 2 == 1) {
BoardLight_setGreenLightState(false);
}
} else {
if (BLINK_PERIOD_MS * m_blink_cnt >= 3000) {
m_blink_cnt = 0;
return;
}
}
}
m_blink_cnt++;

28
app/src/board/board_sdcard_driver.c

@ -6,9 +6,9 @@
* *
*******************************************************************************/
FATFS m_fs;
FATFS m_fs;
BoardSdcardConnectTo_t m_connectTo = kConnectToNone;
static bool m_sdcard_inited;
static bool m_sdcard_inited;
NRF_BLOCK_DEV_SDC_DEFINE( //
m_block_dev_sdc, //
@ -31,7 +31,7 @@ NRF_BLOCK_DEV_SDC_DEFINE( //
*
*/
void Board_sdcardInit() {
if (!m_sdcard_inited) return;
if (m_sdcard_inited) return;
/**
* @brief SDCARD SPI
*/
@ -43,19 +43,19 @@ void Board_sdcardInit() {
* @brief SD卡 USB读卡器IC复位引脚
*
*/
znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_RESET_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_RESET_PIN, NRF_GPIO_PIN_PULLUP);
nrf_gpio_pin_write(SDCARD_USBDRIVER_IC_RESET_PIN, 1);
/**
* @brief SD卡连接切换引脚
*/
znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN, NRF_GPIO_PIN_PULLUP);
nrf_gpio_pin_write(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN, 0); // OE = 0
/**
* @brief SDCARD电源控制引脚
*/
znrf_gpio_cfg_output(SDCARD_POWER_CTRL_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(SDCARD_POWER_CTRL_PIN, NRF_GPIO_PIN_PULLUP);
nrf_gpio_pin_write(SDCARD_POWER_CTRL_PIN, 0); // POWER = 0
m_connectTo = kConnectToExt;
m_connectTo = kConnectToNone;
static diskio_blkdev_t drives[] = //
{DISKIO_BLOCKDEV_CONFIG(NRF_BLOCKDEV_BASE_ADDR(m_block_dev_sdc, block_dev), NULL)};
@ -100,17 +100,17 @@ void Board_sdcardConnectToExt() {
* @brief SD卡电源
*/
nrf_gpio_pin_write(SDCARD_POWER_CTRL_PIN, 1);
nrf_delay_ms(100); // SD卡通过断电复位一会
nrf_gpio_pin_write(SDCARD_POWER_CTRL_PIN, 0); //
/**
* @brief
*/
nrf_gpio_pin_write(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN, 0);
/**
* @brief SD卡电源
*/
nrf_delay_ms(30); // SD卡通过断电复位一会
nrf_gpio_pin_write(SDCARD_POWER_CTRL_PIN, 0); //
nrf_gpio_pin_write(SDCARD_USBDRIVER_IC_RESET_PIN, 0);
nrf_delay_ms(30);
nrf_gpio_pin_write(SDCARD_USBDRIVER_IC_RESET_PIN, 1);
m_connectTo = kConnectToExt;
}
void Board_sdcardConnectToInternal() {
@ -166,7 +166,7 @@ void Board_sdcardConnectToInternal() {
ZLOGI("Mount success");
NRF_LOG_INFO("Capacity: %d MB", capacity);
m_connectTo == kConnectToInternal;
m_connectTo = kConnectToInternal;
}
BoardSdcardConnectTo_t Board_sdcardGetConnectTo() { return m_connectTo; }

282
app/src/device_ctrl_service.c

@ -1,8 +1,233 @@
#include "device_ctrl_service.h"
#include "app_event_distribute.h"
#include "board/board_battery_state.h"
#include "board/board_beep_ctrl.h"
#include "board/board_button.h"
#include "board/board_light_ctrl.h"
#include "board/board_sdcard_driver.h"
#include "heart_wave_sample_service.h"
#include "sample_data_manager_service.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
//
APP_TIMER_DEF(m_state_machine_driver_tmr); //
static device_state_t m_device_state = kdevice_state_standby; //
static uint32_t m_change_to_cur_state_tp = 0; //
static int m_sample_data_fd = -1; //
/*******************************************************************************
* *
*******************************************************************************/
void DeviceCtrl_change_to_state(device_state_t state);
uint32_t DeviceCtrl_cur_state_haspassed_ms();
device_state_t DeviceCtrl_now_state();
/*******************************************************************************
* *
*******************************************************************************/
static void state_machine_driver_tmr_cb(void* p_context) { //
static app_event_t appevent;
appevent.eventType = kevent_tmr_scheduler;
AppEvent_pushEvent(&appevent);
}
/**
* @brief
*/
static void board_button_cb(ButtonIndex_t pin_no, ButtonAction_t button_action) { //
static app_event_t event;
event.eventType = button_action == kButtonAction_push ? kevent_button_push_event : kevent_button_release_event;
AppEvent_pushEvent(&event);
}
static void zble_event_listener(zble_event_t* ble_event) { //
static app_event_t event;
if (ble_event->eventType == kzble_event_connected) {
event.eventType = kevent_ble_connect_event;
AppEvent_pushEvent(&event);
} else if (ble_event->eventType == kzble_event_disconnected) {
event.eventType = kevent_ble_disconnect_event;
AppEvent_pushEvent(&event);
}
}
/*******************************************************************************
* *
*******************************************************************************/
static bool m_ispoweron = false;
static void poweroff() {
if (!m_ispoweron) return;
BoardBeepCtrl_unload();
BoardLight_unload();
BoardBattery_unload();
BoardButton_unload();
SampleDataMgr_unloadDriver();
hwss_unload();
DeviceCtrl_change_to_state(kdevice_state_standby);
zble_module_stop_adv();
BoardLight_setGreenLightEffect(kLightEffect_close);
// 使
BoardButton_enable_sense();
//
sd_power_system_off();
m_ispoweron = false;
}
static void poweron() {
if (m_ispoweron) {
return;
}
BoardBeepCtrl_load();
BoardLight_load();
BoardBattery_load();
BoardButton_load();
SampleDataMgr_loadDriver();
hwss_load();
DeviceCtrl_change_to_state(kdevice_state_ready);
zble_module_start_adv();
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
m_ispoweron = true;
}
static sample_data_filename_t* cratefilename() {
static ztm_t tm;
static sample_data_filename_t sampledata_file_name;
memset(&sampledata_file_name, 0, sizeof(sampledata_file_name));
znordic_rtc_gettime(&tm);
sampledata_file_name.year = tm.tm_year + 1900 - 2000;
sampledata_file_name.month = tm.tm_mon + 1;
sampledata_file_name.day = tm.tm_mday;
sampledata_file_name.hour = tm.tm_hour;
sampledata_file_name.min = tm.tm_min;
sampledata_file_name.sec = tm.tm_sec;
}
static void prvf_change_to_standby_state() { poweroff(); }
static void prvf_change_to_ready_state() { poweron(); }
static void prvf_change_to_sample_state() { //
if (m_device_state == kdevice_state_sampling) {
return;
}
DeviceCtrl_change_to_state(kdevice_state_sampling);
}
static void app_event_listener(void* p_event_data, uint16_t event_size) { //
app_event_t* event = (app_event_t*)p_event_data;
/*******************************************************************************
* *
*******************************************************************************/
if (event->eventType == kevent_ble_connect_event) {
BoardLight_setGreenLightEffect(kLightEffect_open);
return;
} else if (event->eventType == kevent_ble_disconnect_event) {
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
return;
}
/*******************************************************************************
* *
*******************************************************************************/
if (m_device_state == kdevice_state_standby) {
//
}
//
else if (m_device_state == kdevice_state_ready) {
if (!zble_module_is_connected() && DeviceCtrl_cur_state_haspassed_ms() > APP_AUTO_SLEEP_TIMEOUT_MS) {
ZLOGI("auto sleep");
prvf_change_to_standby_state();
}
if (event->eventType == kevent_start_sample_event) {
// SD卡连接到单片机
SampleDataMgr_changeToLocalMode();
//
m_sample_data_fd = SampleDataMgr_open(cratefilename(), kwrflag_write_only);
ZASSERT(m_sample_data_fd > 0);
//
prvf_change_to_sample_state();
//
hwss_start_capture();
}
}
//
else if (m_device_state == kdevice_state_sampling) {
//
if (event->eventType == kevent_capture_data_block_event) {
SampleDataMgr_write(m_sample_data_fd, (uint8_t*)event->val.block_sensor_data.data, event->val.block_sensor_data.len);
}
bool stopcapture = false;
if (SampleDataMgr_getFileSizeByFd(m_sample_data_fd) > SDCARD_MAX_FILE_SIZE) {
ZLOGI("stop sample because file size is too large");
stopcapture = true;
} else if (event->eventType == kevent_stop_sample_event) {
ZLOGI("stop sample because stop sample event");
stopcapture = true;
}
if (stopcapture) {
//
SampleDataMgr_close(m_sample_data_fd);
// SD卡连接到外部typec
SampleDataMgr_changeToExtMode();
//
hwss_stop_capture();
//
prvf_change_to_ready_state();
}
}
}
void DeviceCtrl_startSample() {
ZLOGI("start sample");
static app_event_t event;
event.eventType = kevent_start_sample_event;
AppEvent_pushEvent(&event);
}
void DeviceCtrl_stopSample() {
ZLOGI("stop sample");
static app_event_t event;
event.eventType = kevent_stop_sample_event;
AppEvent_pushEvent(&event);
}
/*******************************************************************************
* EXTERN *
*******************************************************************************/
void DeviceCtrl_init() {
//
BoardBeepCtrl_init();
//
BoardLight_Init();
//
BoardButton_Init(board_button_cb);
//
BoardBattery_init();
// SD卡初始化
SampleDataMgr_init();
//
hwss_init();
//
AppEvent_regListener(app_event_listener);
//
zble_module_reglistener(zble_event_listener);
//
prvf_change_to_ready_state();
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采样
}
/*******************************************************************************
* UTILS *
*******************************************************************************/
void DeviceCtrl_change_to_state(device_state_t state) {
ZLOGI("change state from %s to %s", ds2str(m_device_state), ds2str(state));
m_device_state = state;
@ -11,8 +236,57 @@ void DeviceCtrl_change_to_state(device_state_t state) {
uint32_t DeviceCtrl_cur_state_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); }
device_state_t DeviceCtrl_now_state() { return m_device_state; }
void DeviceCtrl_startSample() {}
void DeviceCtrl_stopSample() {}
void DeviceCtrl_schdeule() {}
#if 0
static void DeviceCtrl_test() {
/**
* @brief
* 1.
* 2.
* 3. LED
* 4.
* . SD卡
* 5.
*/
#if 0
//
BoardBeepCtrl_init();
BoardBeepCtrl_load();
BoardBeepCtrl_setEffect(kBoardBeepEffect_continuousShortBeep);
#endif
#if 1
// BoardButton_Init(board_button_cb);
#endif
void DeviceCtrl_init() {}
#if 0
BoardLight_Init();
BoardLight_load();
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
#endif
#if 0
Board_sdcardInit();
Board_sdcardConnectToInternal();
Board_sdcardConnectToExt();
Board_sdcardConnectToInternal();
Board_sdcardConnectToExt();
#endif
#if 0
sample_data_mgr_init();
sample_data_mgr_loadDriver();
sample_data_mgr_change_to_local_mode();
sample_data_filename_t filename;
int fd = sample_data_mgr_open(&filename, kwrflag_write_only);
sample_data_mgr_write(fd, "123456", 6);
sample_data_mgr_close(fd);
sample_data_mgr_change_to_ext_mode();
#endif
#if 1
//
#endif
}
#endif

12
app/src/heart_wave_sample_service.c

@ -154,7 +154,7 @@ static void ads1293_spi_writereg_and_check(ads1293_t* ads, uint8_t addr, uint8_t
}
}
static void ads1293_init() {
static void ads1293_init() {
/*******************************************************************************
* SPI初始化 *
*******************************************************************************/
@ -273,15 +273,11 @@ void hwss_init(void) {
/**
* @brief ads1293硬件接口
*/
ads1293_init();
}
void hwss_uninit(void) {
/**
* @brief ads1293硬件接口
*/
ads1293_uninit();
}
void hwss_load(void) { ads1293_init(); }
void hwss_unload(void) { ads1293_uninit(); }
void hwss_start_capture(void) {
m_work_flag = true;
ads1293_start_conversion(&m_ads1293_0);

7
app/src/heart_wave_sample_service.h

@ -16,10 +16,9 @@
* @brief ³õʼ»¯
*/
void hwss_init(void);
/**
* @brief unint
*/
void hwss_uninit(void);
void hwss_load(void);
void hwss_unload(void);
/**
* @brief ¿ªÊ¼²É¼¯

15
app/src/main.c

@ -9,20 +9,31 @@
#include "app_event_distribute.h"
#include "basic/ads1293/ads1293.h"
#include "board/board.h"
#include "device_ctrl_service.h"
#include "zble_module.h"
#include "zdatachannel_service.h"
#include "znordic_device_info_mgr.h"
#include "device_ctrl_service.h"
//
int main() {
APP_SCHED_INIT(APP_MAX_EVEN_SIZE, APP_EVENT_QUEUE_SIZE);
znordic_init();
NRF_LOG_INFO("compile time :%s", __TIME__);
/*******************************************************************************
* *
*******************************************************************************/
static zble_module_cfg_t cfg;
cfg.deviceName = device_info_read_sn_str();
cfg.on_service_init = AppBleService_onServiceInitCB;
zble_module_init(&cfg);
NRF_LOG_INFO("compile time :%s", __TIME__);
AppBleService_init();
/*******************************************************************************
* *
*******************************************************************************/
DeviceCtrl_init();
/*******************************************************************************
* LOOP *
*******************************************************************************/
znordic_loop();
}

41
app/src/sample_data_manager_service.c

@ -48,6 +48,11 @@ static void read_file_info() {
memcpy(m_sample_fileinfo_list.fileinfo[0]->filename, &_filename, sizeof(sample_data_filename_t));
m_sample_fileinfo_list.fileinfo[0]->size = fno.fsize;
m_sample_fileinfo_list.count = 1;
ZLOGI("filelist:");
ZLOGI(" name:%s", "0.bin");
ZLOGI(" size:%d", fno.fsize);
} else {
m_sample_fileinfo_list.fileinfo[0]->size = 0;
m_sample_fileinfo_list.count = 0;
@ -57,17 +62,16 @@ static void read_file_info() {
/**
* @brief
*/
void sample_data_mgr_init() {
void SampleDataMgr_init() {
Board_sdcardInit();
//
sample_data_mgr_change_to_local_mode();
sample_data_mgr_change_to_ext_mode();
SampleDataMgr_changeToLocalMode();
SampleDataMgr_changeToExtMode();
}
void sample_data_mgr_loadDriver() {
void SampleDataMgr_loadDriver() {
// donothing
}
void sample_data_mgr_unloadDriver() {
void SampleDataMgr_unloadDriver() {
// donothin
}
typedef struct {
@ -79,17 +83,18 @@ typedef struct {
/**
* @brief
*/
void sample_data_mgr_change_to_local_mode() {
void SampleDataMgr_changeToLocalMode() {
ZLOGI("change to local mode");
Board_sdcardConnectToInternal();
read_file_info();
}
/**
* @brief typec
*/
void sample_data_mgr_change_to_ext_mode() {
void SampleDataMgr_changeToExtMode() {
ZLOGI("change to ext mode");
if (Board_sdcardGetConnectTo() == kConnectToInternal) {
read_file_info();
return;
}
Board_sdcardConnectToExt();
}
@ -104,39 +109,39 @@ void sample_data_mgr_change_to_ext_mode() {
static FIL m_default_file_handler;
static bool m_is_open;
int32_t sample_data_mgr_open(sample_data_filename_t* filename, wrflag_t flag) {
int32_t SampleDataMgr_open(sample_data_filename_t* filename, wrflag_t flag) {
FRESULT ff_result = f_open(&m_default_file_handler, (const TCHAR*)"0.bin", FA_CREATE_ALWAYS | FA_READ | FA_WRITE);
ZASSERT(ff_result == FR_OK);
m_is_open = true;
return 1;
}
int32_t sample_data_mgr_close(int32_t fd) {
int32_t SampleDataMgr_close(int32_t fd) {
ZASSERT(m_is_open);
FRESULT ff_result = f_close(&m_default_file_handler);
ZASSERT(ff_result == FR_OK);
m_is_open = false;
return 0;
}
int32_t sample_data_mgr_write(int32_t fd, const uint8_t* data, int32_t size) {
int32_t SampleDataMgr_write(int32_t fd, const uint8_t* data, int32_t size) {
ZASSERT(m_is_open);
UINT write_size;
FRESULT ff_result = f_write(&m_default_file_handler, data, size, &write_size);
ZASSERT(ff_result == FR_OK);
return write_size;
}
int32_t sample_data_mgr_read(int32_t fd, uint8_t* data, int32_t size) {
int32_t SampleDataMgr_read(int32_t fd, uint8_t* data, int32_t size) {
ZASSERT(m_is_open);
UINT read_size;
FRESULT ff_result = f_read(&m_default_file_handler, data, size, &read_size);
ZASSERT(ff_result == FR_OK);
return read_size;
}
int32_t sample_data_mgr_get_file_size_by_fd(int32_t fd) {
int32_t SampleDataMgr_getFileSizeByFd(int32_t fd) {
ZASSERT(m_is_open);
return f_size(&m_default_file_handler);
}
int32_t sample_data_mgr_delete_file(sample_data_filename_t* filename) {
int32_t SampleDataMgr_deleteFile(sample_data_filename_t* filename) {
if (Board_sdcardGetConnectTo() == kConnectToExt) {
/**
* @brief
@ -149,8 +154,8 @@ int32_t sample_data_mgr_delete_file(sample_data_filename_t* filename) {
return 0;
}
sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list() { //
sample_data_fileinfo_list_t* SampleDataMgr_getFileinfoList() { //
return &m_sample_fileinfo_list;
}
bool sample_data_mgr_storage_is_full() { return m_sample_fileinfo_list.count >= FILE_MAX_COUNT; }
int32_t sample_data_mgr_get_file_num() { return m_sample_fileinfo_list.count; }
bool SampleDataMgr_storageIsFull() { return m_sample_fileinfo_list.count >= FILE_MAX_COUNT; }
int32_t SampleDataMgr_getFileNum() { return m_sample_fileinfo_list.count; }

28
app/src/sample_data_manager_service.h

@ -44,9 +44,9 @@ typedef struct {
/**
* @brief
*/
void sample_data_mgr_init();
void sample_data_mgr_loadDriver();
void sample_data_mgr_unloadDriver();
void SampleDataMgr_init();
void SampleDataMgr_loadDriver();
void SampleDataMgr_unloadDriver();
/*******************************************************************************
* *
*******************************************************************************/
@ -54,25 +54,25 @@ void sample_data_mgr_unloadDriver();
/**
* @brief
*/
void sample_data_mgr_change_to_local_mode();
void SampleDataMgr_changeToLocalMode();
/**
* @brief typec
*/
void sample_data_mgr_change_to_ext_mode();
void SampleDataMgr_changeToExtMode();
/*******************************************************************************
* FILE_OPERATION *
*******************************************************************************/
int32_t sample_data_mgr_open(sample_data_filename_t* filename, wrflag_t flag);
int32_t sample_data_mgr_close(int32_t fd);
int32_t sample_data_mgr_write(int32_t fd, const uint8_t* data, int32_t size);
int32_t sample_data_mgr_read(int32_t fd, uint8_t* data, int32_t size);
int32_t sample_data_mgr_get_file_size_by_fd(int32_t fd);
int32_t SampleDataMgr_open(sample_data_filename_t* filename, wrflag_t flag);
int32_t SampleDataMgr_close(int32_t fd);
int32_t SampleDataMgr_write(int32_t fd, const uint8_t* data, int32_t size);
int32_t SampleDataMgr_read(int32_t fd, uint8_t* data, int32_t size);
int32_t SampleDataMgr_getFileSizeByFd(int32_t fd);
/*******************************************************************************
* *
*******************************************************************************/
int32_t sample_data_mgr_delete_file(sample_data_filename_t* filename);
sample_data_fileinfo_list_t* sample_data_mgr_get_fileinfo_list();
bool sample_data_mgr_storage_is_full();
int32_t sample_data_mgr_get_file_num();
int32_t SampleDataMgr_deleteFile(sample_data_filename_t* filename);
sample_data_fileinfo_list_t* SampleDataMgr_getFileinfoList();
bool SampleDataMgr_storageIsFull();
int32_t SampleDataMgr_getFileNum();

2
libznordic

@ -1 +1 @@
Subproject commit 7eee0f956b26dd0870837349b6ae9d237dabf031
Subproject commit 44e3c0469ba810f63f28577799e230c849c5c613
Loading…
Cancel
Save