Browse Source

调整config_service依赖关系

board_v2_hardtest
zhaohe 9 months ago
parent
commit
9322f38a27
  1. 1
      uappbase/base.hpp
  2. 24
      usrc/apphardware/apphardware.cpp
  3. 16
      usrc/apphardware/apphardware.hpp
  4. 1
      usrc/config/config.hpp
  5. 17
      usrc/config/config_service.cpp
  6. 9
      usrc/config/config_service.hpp
  7. 14
      usrc/service/app_core.cpp

1
uappbase/base.hpp

@ -3,7 +3,6 @@
#include "bean/bean.hpp"
#include "appcfg/appcfg.hpp"
//
#include "service/app_core.hpp"
#include "service/app_event_bus.hpp"
#include "service/gstate_mgr.hpp"
//

24
usrc/apphardware/apphardware.cpp

@ -31,8 +31,6 @@ void AppHardware::initialize() {
BLE_CONNECTED_STATE_IO_PE6.initAsInput(PE6, kxs_gpio_nopull, kxs_gpio_no_irq, false);
osDelay(10);
MOTO_POWER_EN.setState(false);
@ -41,10 +39,10 @@ void AppHardware::initialize() {
TMC51X0Cfg tmc5130cfg3 = {&MOTOR_SPI_INS, MOTO3_CSN_IO, MOTO3_DRV_ENN_IO};
TMC51X0Cfg tmc5130cfg4 = {&MOTOR_SPI_INS, MOTO4_CSN_IO, MOTO4_DRV_ENN_IO};
MOTO1.initialize(0,tmc5130cfg1);
MOTO2.initialize(1,tmc5130cfg2);
MOTO3.initialize(2,tmc5130cfg3);
MOTO4.initialize(3,tmc5130cfg4);
MOTO1.initialize(0, tmc5130cfg1);
MOTO2.initialize(1, tmc5130cfg2);
MOTO3.initialize(2, tmc5130cfg3);
MOTO4.initialize(3, tmc5130cfg4);
ZLOGI(TAG, "motor1 initialize TMC51X0:%x", MOTO1.readICVersion());
ZLOGI(TAG, "motor2 initialize TMC51X0:%x", MOTO2.readICVersion());
@ -74,6 +72,14 @@ void AppHardware::initialize() {
IO_OUT1.setState(false);
IO_OUT2.setState(false);
// ZCAN1::ins()->init();
}
eeprom.initialize(&hi2c1);
if (!eeprom.isOnline()) {
ZLOGE(TAG, "eeprom is not online");
return;
}
hardwareInitedOK = true;
ZLOGI(TAG, "hardware initialize ok");
}
bool AppHardware::isHardInitOk() { return hardwareInitedOK; }

16
usrc/apphardware/apphardware.hpp

@ -1,14 +1,16 @@
#pragma once
#include "uappbase/base.hpp"
#include "ucomponents/eeprom/m24m02_i2c_eeprom.hpp"
namespace iflytop {
class AppHardware {
private:
/* data */
public:
TMC51X0 MOTO1;
TMC51X0 MOTO2;
TMC51X0 MOTO3;
TMC51X0 MOTO4;
TMC51X0 MOTO1;
TMC51X0 MOTO2;
TMC51X0 MOTO3;
TMC51X0 MOTO4;
ZGPIO MOTO_POWER_EN;
ZGPIO MOTO1_CSN;
@ -32,6 +34,10 @@ class AppHardware {
UART_HandleTypeDef* tjcUart;
UART_HandleTypeDef* remoteContolerUart;
M24M02_I2C_EEPROM eeprom;
bool hardwareInitedOK = false;;
static AppHardware* ins() {
static AppHardware instance;
return &instance;
@ -46,6 +52,8 @@ class AppHardware {
ZASSERT(false);
return nullptr;
}
bool isHardInitOk();
};
} // namespace iflytop

1
usrc/config/config.hpp

@ -1,4 +1,5 @@
#pragma once
#include "config_index.hpp"
#include "config_service.hpp"
//
#include "config_service_utils.hpp"

17
usrc/config/config_service.cpp

@ -55,12 +55,7 @@ static int32_t checksum(uint8_t *data, int32_t n) {
bool ConfigService::initialize() {
mutex.init();
AppHal::MX_I2C1_Init();
eeprom.initialize(&hi2c1);
if (!eeprom.isOnline()) {
return false;
}
static_assert(kcfg_max == CFG_MAX_INDEX, "");
if (!checkcfg()) {
@ -74,7 +69,7 @@ bool ConfigService::initialize() {
}
cfgcache.checksum = CHECKSUM();
eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache));
AppHardware::ins()->eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache));
flashall();
}
bool suc = checkcfg();
@ -182,7 +177,7 @@ const char *ConfigService::_getcfg(config_index_t index, CfgItermCache *cache) {
}
bool ConfigService::checkcfg() {
eeprom.read(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache));
AppHardware::ins()->eeprom.read(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache));
int32_t checksumval = CHECKSUM();
@ -195,10 +190,10 @@ bool ConfigService::checkcfg() {
bool ConfigService::flashIndex(int32_t index) {
// for (int i = 0; i < sizeof(cfg_content_t); i += 4) {
// uint32_t wdata = cfgcache.cfg[index].u32s[i / 4];
// eeprom.write32(TO_EEPROM_ADD(index) + i, wdata);
// AppHardware::ins()->eeprom.write32(TO_EEPROM_ADD(index) + i, wdata);
// }
eeprom.write(TO_EEPROM_ADD(index), (uint8_t *)&cfgcache.cfg[index], sizeof(cfg_content_t));
eeprom.write32(CONFIG_EEPROM_ADD + 4 * 1, (uint32_t)cfgcache.checksum);
AppHardware::ins()->eeprom.write(TO_EEPROM_ADD(index), (uint8_t *)&cfgcache.cfg[index], sizeof(cfg_content_t));
AppHardware::ins()->eeprom.write32(CONFIG_EEPROM_ADD + 4 * 1, (uint32_t)cfgcache.checksum);
return true;
}
bool ConfigService::flashall() { eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); }
bool ConfigService::flashall() { AppHardware::ins()->eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); }

9
usrc/config/config_service.hpp

@ -1,8 +1,10 @@
#pragma once
//
#include "apphardware/apphardware.hpp"
//
#include "uappbase/base.hpp"
//
#include "config_index.hpp"
#include "ucomponents/eeprom/m24m02_i2c_eeprom.hpp"
namespace iflytop {
using namespace std;
@ -18,8 +20,7 @@ struct CfgItermCache {
class ConfigService {
private:
/* data */
zmutex mutex = {"ConfigServiceMutex"};
M24M02_I2C_EEPROM eeprom;
zmutex mutex = {"ConfigServiceMutex"};
public:
static ConfigService* ins() {

14
usrc/service/app_core.cpp

@ -55,11 +55,18 @@ void AppCore::appsetup() {
/***********************************************************************************************************************
* INIT *
***********************************************************************************************************************/
// 硬件无关组件初始化
GStateMgr::ins()->initialize();
AppEventBus::ins()->initialize();
bool suc = ConfigService::ins()->initialize();
if (!suc) {
AppHardware::ins()->initialize(); // 基础硬件初始化
// 硬件初始化
ZCAN1::ins()->init();
AppHardware::ins()->initialize(); // 基础硬件初始化
// 配置初始化
ConfigService::ins()->initialize();
if (!AppHardware::ins()->isHardInitOk()) {
FrontEndControler::ins()->initialize(); // 前端控制器,对屏幕的消息进行解析,发送消息给屏幕
FrontEndControler::ins()->startSchedule();
FrontEndControler::ins()->alertNoConfirm("设备异常:\r\n 存储异常,请尝试重新上电");
@ -67,7 +74,6 @@ void AppCore::appsetup() {
osDelay(1);
}
}
ZCAN1::ins()->init();
// hardInit
AppHardware::ins()->initialize(); // 基础硬件初始化

Loading…
Cancel
Save