Browse Source

update

master
zhaohe 8 months ago
parent
commit
9e980803ee
  1. 6
      README.md
  2. 10
      appsrc/appsetting/project_port/project_port.cpp
  3. 6
      appsrc/appsetting/project_port/project_port.hpp
  4. 44
      appsrc/baseservice/db/user_behavior_record_dao.cpp
  5. 14
      appsrc/baseservice/db/user_behavior_record_dao.hpp
  6. 69
      appsrc/baseservice/db/user_dao.cpp
  7. 44
      appsrc/baseservice/db/user_dao.hpp
  8. 2
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp
  9. 85
      appsrc/service/hardware/device_io_ctrl_service.cpp

6
README.md

@ -105,8 +105,12 @@ VERSION 2.0.0
3. 修改默认管理员姓名为admin,密码为8888
4. 重构数据
VERSION 2.0.1
1. 修改当db文件损坏的时候,删除db文件
TODO:
1.添加用户增加用户查重检查
2.添加
2.测试如果数据库文件损坏,设备的执行逻辑
3.驱动器注释掉参数刷新的代码
```

10
appsrc/appsetting/project_port/project_port.cpp

@ -51,20 +51,26 @@ void ProjectPort::initialize() {
if (projectTypeName == PROJECT_LARGE_SPACE_DM) {
logger->info("initProjectSetting large_space_disinfection_machine");
initProjectSetting(klarge_space_disinfection_machine);
deviceTypeInited = true;
} else if (projectTypeName == PROJECT_SMALL_SPACE_DM) {
logger->info("initProjectSetting small_space_disinfectio_machine");
initProjectSetting(ksmall_space_disinfection_machine);
deviceTypeInited = true;
} else if (projectTypeName == PROJECT_PIPE_DM) {
logger->info("initProjectSetting pipe_disinfection_machine");
initProjectSetting(kpipe_disinfection_machine);
deviceTypeInited = true;
} else if (projectTypeName == PROJECT_DRAW_BAR_DM) {
logger->info("initProjectSetting draw_bar_disinfection_box");
initProjectSetting(kdraw_bar_disinfection_box);
deviceTypeInited = true;
} else {
// THROW_APP_EXCEPTION(err::kappe_code_error, "ProjectPort::initialize: projectType not found");
logger->error("project type not support:{}", projectTypeName);
exit(-1);
logger->error("project type not support:{},init as largeSpaceDM", projectTypeName);
initProjectSetting(klarge_space_disinfection_machine);
deviceTypeInited = false;
}
logger->info("=======================================================================");
}

6
appsrc/appsetting/project_port/project_port.hpp

@ -33,8 +33,9 @@ class ProjectPort {
/* data */
shared_ptr<GConfig> gConfig;
map<int, ComponentId> componentIdMap;
string projectType = PROJECT_LARGE_SPACE_DM;
int projectTypeInt = klarge_space_disinfection_machine;
string projectType = PROJECT_LARGE_SPACE_DM;
int projectTypeInt = klarge_space_disinfection_machine;
bool deviceTypeInited = false;
//
// some properties
@ -59,6 +60,7 @@ class ProjectPort {
bool isSmallSpaceDM() { return projectTypeInt == ksmall_space_disinfection_machine; }
bool isPipeDM() { return projectTypeInt == kpipe_disinfection_machine; }
bool isDrawBarDM() { return projectTypeInt == kdraw_bar_disinfection_box; }
bool isDeviceTypeInited() { return deviceTypeInited; }
bool isProjectType(int id) { return id == projectTypeInt; }
bool isProjectType(int id0, int id1) { return id0 == projectTypeInt || id1 == projectTypeInt; }

44
appsrc/baseservice/db/user_behavior_record_dao.cpp

@ -30,24 +30,30 @@ using namespace nlohmann;
UserBehaviorRecordDao::UserBehaviorRecordDao(/* args */) {}
void UserBehaviorRecordDao::initialize() {
mkdir("db", 0755);
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
mkdir("db", 0755);
bool suc = false;
do {
try {
logger->info("init user db");
storage.sync_schema();
suc = true;
} catch (const std::exception& e) {
logger->error("init {} db failed: {}", storage.filename(), e.what());
system(fmt::format("rm -rf {}", storage.filename()).c_str());
sleep(1);
}
} while (!suc);
}
int UserBehaviorRecordDao::getUserBehaviorRecordCount() {
lock_guard<recursive_mutex> lock(lock_);
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
return user_behavior_record_table.count<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0));
return storage.count<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0));
}
int UserBehaviorRecordDao::getUserBehaviorRecordTheFirstId() {
lock_guard<recursive_mutex> lock(lock_);
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
if (all.size() == 0) {
return -1;
}
@ -57,10 +63,7 @@ int UserBehaviorRecordDao::getUserBehaviorRecordTheFirstId() {
list<shared_ptr<db::UserBehaviorRecord>> UserBehaviorRecordDao::getAllUserBehaviorRecord() {
lock_guard<recursive_mutex> lock(lock_);
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc());
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc());
list<shared_ptr<db::UserBehaviorRecord>> user_behavior_records;
for (auto& u : all) {
@ -74,10 +77,7 @@ json UserBehaviorRecordDao::getUserBehaviorRecordDescJson(int page, int page_siz
json j_user_behavior_records;
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc());
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc());
int i = 0;
@ -121,23 +121,19 @@ static string getTime() {
void UserBehaviorRecordDao::addUserBehaviorRecord(string name, int behavior, string behaviorinfo) {
lock_guard<recursive_mutex> lock(lock_);
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
UserBehaviorRecord u;
u.usrName = name;
u.behavior = behavior;
u.behaviorinfo = behaviorinfo;
u.date = getTime();
user_behavior_record_table.insert(u);
user_behavior_record_table.sync_schema();
storage.insert(u);
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
/**
* @brief 5000
*/
if (all.size() > USER_BEHAVIOR_RECORD_DB_MAX_RECORDS) {
user_behavior_record_table.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) == all[0].id));
user_behavior_record_table.sync_schema();
storage.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) == all[0].id));
}
return;
}

14
appsrc/baseservice/db/user_behavior_record_dao.hpp

@ -38,6 +38,18 @@ struct UserBehaviorRecord {
string behaviorinfo;
};
#define USER_BEHAVIOR_RECORD_TABLE \
sqlite_orm::make_table("user_behavior_records", /**/ \
sqlite_orm::make_column("id", &UserBehaviorRecord::id, sqlite_orm::primary_key().autoincrement()), /**/ \
sqlite_orm::make_column("usrName", &UserBehaviorRecord::usrName), /**/ \
sqlite_orm::make_column("date", &UserBehaviorRecord::date), /**/ \
sqlite_orm::make_column("behavior", &UserBehaviorRecord::behavior), /**/ \
sqlite_orm::make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo))
#define USER_BEHAVIOR_RECORD_STORAGE_MAKE() sqlite_orm::make_storage("db/user_behavior_record.db", USER_BEHAVIOR_RECORD_TABLE)
using UserBehaviorRecordStorage = decltype(USER_BEHAVIOR_RECORD_STORAGE_MAKE());
} // namespace db
using namespace db;
class UserBehaviorRecordDao : public enable_shared_from_this<UserBehaviorRecordDao> {
@ -45,6 +57,8 @@ class UserBehaviorRecordDao : public enable_shared_from_this<UserBehaviorRecordD
recursive_mutex lock_;
bool inited = false;
UserBehaviorRecordStorage storage = USER_BEHAVIOR_RECORD_STORAGE_MAKE();
public:
UserBehaviorRecordDao();

69
appsrc/baseservice/db/user_dao.cpp

@ -12,15 +12,6 @@ using namespace iflytop;
using namespace iflytop::db;
using namespace sqlite_orm;
using namespace nlohmann;
#define USER_DB "db/user.db"
#define USER_DB_STRUCT \
USER_DB, /**/ \
make_table("users", /**/ \
make_column("id", &User::id, primary_key().autoincrement()), /**/ \
make_column("name", &User::name), /**/ \
make_column("passwd", &User::passwd), /**/ \
make_column("role", &User::roleType) /**/ \
)
/*******************************************************************************
* *
@ -29,7 +20,6 @@ using namespace nlohmann;
#define ZARRARY_SIZE(val) (sizeof(val) / sizeof(val[0]))
UserDao::UserDao(/* args */) {}
void UserDao::initialize() {
/**
* @brief
@ -44,7 +34,6 @@ void UserDao::init_usr_db() {
do {
try {
logger->info("init user db");
auto storage = make_storage(USER_DB_STRUCT);
storage.sync_schema();
auto allusr = storage.get_all<User>();
auto admin = storage.get_all<User>(where(c(&User::roleType) == USR_ROLE_ADMIN));
@ -54,7 +43,7 @@ void UserDao::init_usr_db() {
suc = true;
} catch (const std::exception& e) {
logger->error("init user db failed: {}", e.what());
system("rm -rf user.db");
system(fmt::format("rm -rf {}", storage.filename()).c_str());
sleep(1);
}
} while (!suc);
@ -62,11 +51,9 @@ void UserDao::init_usr_db() {
list<shared_ptr<User>> UserDao::getAllUser() {
lock_guard<recursive_mutex> lock(lock_);
list<shared_ptr<User>> users;
list<shared_ptr<User>> users;
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto all = usertable.get_all<User>();
auto all = storage.get_all<User>();
for (auto& u : all) {
users.push_back(make_shared<User>(u));
}
@ -75,63 +62,52 @@ list<shared_ptr<User>> UserDao::getAllUser() {
void UserDao::addUser(string name, string passwd, string roleType) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
logger->info("add user: {} {} {}", name, passwd, roleType);
usertable.insert(User{-1, name, passwd, roleType});
storage.insert(User{-1, name, passwd, roleType});
}
shared_ptr<db::User> UserDao::updateUserRoleType(int id, string roleType) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::id) == id));
auto user = storage.get_all<User>(where(c(&User::id) == id));
if (user.size() == 0) {
logger->error("change user role fail, user not found");
return nullptr;
}
logger->info("change user role: {} {} -> {}", id, user[0].roleType, roleType);
user[0].roleType = roleType;
usertable.update(user[0]);
storage.update(user[0]);
return make_shared<User>(user[0]);
}
shared_ptr<db::User> UserDao::delUser(int id) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto remove_user = usertable.get_all<User>(where(c(&User::id) == id));
auto remove_user = storage.get_all<User>(where(c(&User::id) == id));
if (remove_user.size() == 0) {
logger->error("remove user fail, user not found");
return nullptr;
}
logger->info("delete user: {}:{}", id, remove_user[0].name);
usertable.remove_all<User>(where(c(&User::id) == id));
storage.remove_all<User>(where(c(&User::id) == id));
return make_shared<User>(remove_user[0]);
}
shared_ptr<db::User> UserDao::changePasswd(int id, string passwd) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::id) == id));
auto user = storage.get_all<User>(where(c(&User::id) == id));
if (user.size() == 0) {
logger->error("change passwd fail, user not found");
return nullptr;
}
logger->info("change passwd: {} {} -> {}", id, user[0].passwd, passwd);
user[0].passwd = passwd;
usertable.update(user[0]);
storage.update(user[0]);
return make_shared<User>(user[0]);
}
shared_ptr<db::User> UserDao::updateUserUid(int id, string name, string& oldname) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::id) == id));
auto user = storage.get_all<User>(where(c(&User::id) == id));
if (user.size() == 0) {
logger->error("change user name fail, user not found");
return nullptr;
@ -139,7 +115,7 @@ shared_ptr<db::User> UserDao::updateUserUid(int id, string name, string& oldname
oldname = user[0].name;
logger->info("change user name: {} {} -> {}", id, user[0].name, name);
user[0].name = name;
usertable.update(user[0]);
storage.update(user[0]);
return make_shared<User>(user[0]);
}
@ -147,9 +123,8 @@ json UserDao::getAllUserJson() {
lock_guard<recursive_mutex> lock(lock_);
json j_users;
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto all = usertable.get_all<User>();
auto all = storage.get_all<User>();
for (auto& u : all) {
json j_user;
j_user["id"] = u.id;
@ -164,9 +139,7 @@ json UserDao::getAllUserJson() {
json UserDao::getUserJson(string name) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::name) == name));
auto user = storage.get_all<User>(where(c(&User::name) == name));
if (user.size() == 0) {
return json();
}
@ -181,9 +154,7 @@ json UserDao::getUserJson(string name) {
shared_ptr<User> UserDao::getUser(string name) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::name) == name));
auto user = storage.get_all<User>(where(c(&User::name) == name));
if (user.size() == 0) {
return nullptr;
}
@ -193,9 +164,7 @@ shared_ptr<User> UserDao::getUser(string name) {
bool UserDao::isUserExist(string name) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::name) == name));
auto user = storage.get_all<User>(where(c(&User::name) == name));
if (user.size() == 0) {
return false;
}
@ -204,9 +173,7 @@ bool UserDao::isUserExist(string name) {
bool UserDao::ispasswdCorrect(string name, string passwd) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::name) == name));
auto user = storage.get_all<User>(where(c(&User::name) == name));
if (user.size() == 0) {
return false;
}

44
appsrc/baseservice/db/user_dao.hpp

@ -22,38 +22,12 @@
#include "setting_db_dao.hpp"
#include "user_behavior_des.hpp"
#define USER_DB "user.db"
#define DISINFECTION_RECORD_DB "disinfection_record.db"
#define USER_BEHAVIOR_RECORD_DB "user_behavior_record.db"
/**
* @brief
*
* USER_DB
* table: user
* id uid passwd permission_level
*
*
* SETTING_DB
* table: setting
* id setting_name setting_name_ch val_upper_limit val_lower_limit permission_level val
*
* DISINFECTION_RECORD_DB
* table: disinfection_record
* id uuid uid date loglevel duration
*
*
* table: sensor_record
* id disinfection_id date heating_strip air_compressor sprinkler_pump disinfectant_volume h2o2_1 temp_1 humid_1 saturation_1 h2o2_2 temp_2 humid_2
* saturation_2 h2o2_3 temp_3 humid_3 saturation_3
*
*/
namespace iflytop {
using namespace std;
using namespace std;
using namespace core;
using namespace nlohmann;
namespace db {
#define USR_ROLE_ADMIN "admin"
@ -67,12 +41,25 @@ struct User {
string passwd;
string roleType; // "admin/maintainer/usr/"
};
#define USER_STORAGE_MAKE() \
sqlite_orm::make_storage("db/user.db", sqlite_orm::make_table("users", /**/ \
sqlite_orm::make_column("id", &User::id, sqlite_orm::primary_key().autoincrement()), /**/ \
sqlite_orm::make_column("name", &User::name), /**/ \
sqlite_orm::make_column("passwd", &User::passwd), /**/ \
sqlite_orm::make_column("role", &User::roleType) /**/ \
))
using UserStorage = decltype(USER_STORAGE_MAKE());
} // namespace db
using namespace db;
class UserDao : public enable_shared_from_this<UserDao> {
THISCLASS(UserDao);
recursive_mutex lock_;
bool inited = false;
bool inited = false;
UserStorage storage = USER_STORAGE_MAKE();
public:
UserDao();
@ -114,7 +101,6 @@ class UserDao : public enable_shared_from_this<UserDao> {
shared_ptr<db::User> updateUserRoleType(int id, string roleType);
public:
void init_usr_db();
};

2
appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp

@ -390,7 +390,7 @@ void DisinfectionCtrlService::processStateIdle(DisinfectionEvent* event) {}
string DisinfectionCtrlService::createDisinfectionID() {
struct tm tm = {0};
time_t t = time(nullptr);
time_t t = ::time(nullptr);
if (t == -1) {
logger->error("time(nullptr) failed");
exit(-1);

85
appsrc/service/hardware/device_io_ctrl_service.cpp

@ -30,9 +30,10 @@ static bool isInTestMode() {
// kdraw_bar_disinfection_box = 4, // 手持拉杆箱消毒机
// kh2o2_ext_sensor = 5, // 外部H2O2传感器
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
#define GET_BOARDID() (ProjectPort::ins().getId(COMPONENT).boardId)
#define GET_SUBID() (ProjectPort::ins().getId(COMPONENT).subId)
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
#define GET_BOARDID() (ProjectPort::ins().getId(COMPONENT).boardId)
#define GET_SUBID() (ProjectPort::ins().getId(COMPONENT).subId)
#define VIRTUAL_DEVICE() (isInTestMode() || !ProjectPort::ins().isDeviceTypeInited())
void DeviceIoControlService::initialize() {
GET_TO_SERVICE(m_config);
@ -74,7 +75,7 @@ void DeviceIoControlService::initialize() {
REG_FN_VOID(SprayPumpPostPS_readPa, void(void));
REG_FN_VOID(AddLiquidPumpPostPS_readPa, void(void));
if (isInTestMode()) {
if (VIRTUAL_DEVICE()) {
logger->warn("run in pc, skip initialize device io control service");
return;
} else {
@ -114,7 +115,7 @@ void DeviceIoControlService::initialize() {
heartThread.reset(new Thread("heartThread", [this]() {
while (true) {
if (isInTestMode()) {
if (VIRTUAL_DEVICE()) {
std::this_thread::sleep_for(std::chrono::seconds(60));
continue;
}
@ -228,25 +229,25 @@ int DeviceIoControlService::AddLiquidPump_addLiquid() {
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed);
logger->info(" AddLiquidPump_addLiquid, pumpspeed={}", pumpspeed);
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed);
return 0;
}
int DeviceIoControlService::AddLiquidPump_drainLiquid() {
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed);
logger->info(" AddLiquidPump_drainLiquid, pumpspeed={}", -pumpspeed);
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed);
return 0;
}
int DeviceIoControlService::AddLiquidPump_run(int rpm) {
logger->info(" AddLiquidPump_run, rpm={}", rpm);
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
return 0;
}
int DeviceIoControlService::AddLiquidPump_stop() {
logger->info(" AddLiquidPump_stop");
if (!isInTestMode()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
return 0;
}
#undef COMPONENT
@ -256,17 +257,17 @@ int DeviceIoControlService::AddLiquidPump_stop() {
int DeviceIoControlService::SprayPump_start(int32_t gpm) {
int pumpspeed_rpm = ProjectPort::ins().gpm2speed(gpm);
logger->info(" SprayPump_start, gpm={}, rpm={}", gpm, pumpspeed_rpm);
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm);
return 0;
}
int DeviceIoControlService::SprayPump_stop() {
logger->info(" SprayPump_stop");
if (!isInTestMode()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
return 0;
}
int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) {
logger->info(" SprayPump_startInRPM, rpm={}", rpm);
if (!isInTestMode()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
return 0;
}
#undef COMPONENT
@ -275,18 +276,18 @@ int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) {
#define COMPONENT HardwareComponent::Blower
int DeviceIoControlService::Blower_ctrl(int power) {
logger->info(" Blower_ctrl, power={}", power);
if (!isInTestMode()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::Blower_close() {
logger->info(" Blower_close");
if (!isInTestMode()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0);
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0);
return 0;
}
float DeviceIoControlService::Blower_readEI() {
logger->info(" Blower_readEI");
if (!isInTestMode()) return CAN_MASTER->blowerReadEI(GET_BOARDID()) / 1000.0;
if (!VIRTUAL_DEVICE()) return CAN_MASTER->blowerReadEI(GET_BOARDID()) / 1000.0;
return 0;
}
#undef COMPONENT
@ -295,24 +296,24 @@ float DeviceIoControlService::Blower_readEI() {
#define COMPONENT HardwareComponent::AirCompressor
int DeviceIoControlService::AC_ctrl(int power) {
logger->info(" AC_ctrl, power={}", power);
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::AC_ctrlNoDelay(int power) {
logger->info(" AC_ctrl, power={}", power);
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
return 0;
}
int DeviceIoControlService::AC_close() {
logger->info(" AC_close");
if (!isInTestMode()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0);
return 0;
}
float DeviceIoControlService::AC_readEI() {
// logger->info(" AC_readEI");
if (!isInTestMode()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0;
if (!VIRTUAL_DEVICE()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0;
return 0;
}
#undef COMPONENT
@ -321,23 +322,23 @@ float DeviceIoControlService::AC_readEI() {
#define COMPONENT HardwareComponent::Heater
int DeviceIoControlService::Heater_ctrl(int power) {
logger->info(" Heater_ctrl, power={}", power);
if (!isInTestMode()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::Heater_close() {
logger->info(" Heater_close");
if (!isInTestMode()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0);
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0);
return 0;
}
float DeviceIoControlService::Heater_readEI() {
// logger->info(" Heater_readEI");
if (!isInTestMode()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0;
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0;
return 0;
}
float DeviceIoControlService::Heater_readTemperature() {
// logger->info(" Heater_readTemperature");
if (!isInTestMode()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0;
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0;
return 0;
}
#undef COMPONENT
@ -346,7 +347,7 @@ float DeviceIoControlService::Heater_readTemperature() {
#define COMPONENT HardwareComponent::WarningLight
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) { //
logger->debug(" WarningLight_setState, r={}, g={}, b={}, warning={}", r, g, b, warning);
if (!isInTestMode()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning);
if (!VIRTUAL_DEVICE()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning);
return 0;
}
#undef COMPONENT
@ -360,11 +361,11 @@ int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warni
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) { //
valveValue = valveValue / 100.0 * 255;
logger->info(" PosiPressureProp_setValve, valveValue={}", valveValue);
if (!isInTestMode()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
return 0;
}
int DeviceIoControlService::PosiPressureProp_readPos() {
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID());
pos = pos / 255.0 * 100;
return pos;
@ -372,7 +373,7 @@ int DeviceIoControlService::PosiPressureProp_readPos() {
return 0;
}
bool DeviceIoControlService::PosiPressureProp_isBusy() {
if (!isInTestMode()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
return false;
}
#undef COMPONENT
@ -381,11 +382,11 @@ bool DeviceIoControlService::PosiPressureProp_isBusy() {
int DeviceIoControlService::NegaPressureProp_setValve(int valveValue) {
valveValue = valveValue / 100.0 * 255;
logger->info(" NegaPressureProp_setValve, valveValue={}", valveValue);
if (!isInTestMode()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
return 0;
}
int DeviceIoControlService::NegaPressureProp_readPos() {
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID());
pos = pos / 255.0 * 100;
return pos;
@ -393,7 +394,7 @@ int DeviceIoControlService::NegaPressureProp_readPos() {
return 0;
}
bool DeviceIoControlService::NegaPressureProp_isBusy() {
if (!isInTestMode()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
return false;
}
#undef COMPONENT
@ -402,11 +403,11 @@ bool DeviceIoControlService::NegaPressureProp_isBusy() {
int DeviceIoControlService::AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode mode) {
logger->info(" AirLeakDetectTestModeCtrl_setMode, mode={}", mode);
if (!isInTestMode()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId());
if (!VIRTUAL_DEVICE()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId());
return 0;
}
AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() {
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int val = CAN_MASTER->airLeakDetectTestGetMode(GET_BOARDID());
return AirLeakTestMode(val);
}
@ -419,12 +420,12 @@ AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() {
#define COMPONENT HardwareComponent::ExtChSelector
int DeviceIoControlService::ExtChSelector_selectCh(int ch) {
logger->info(" ExtChSelector_selectCh, ch={}", ch);
if (!isInTestMode()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch);
if (!VIRTUAL_DEVICE()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch);
return 0;
}
bool DeviceIoControlService::ExtChSelector_isOnline() {
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
try {
CAN_MASTER->extChSelectorGetCh(GET_BOARDID());
return true;
@ -436,7 +437,7 @@ bool DeviceIoControlService::ExtChSelector_isOnline() {
}
int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) {
logger->info(" ExtChSelector_trySelectCh, ch={}", ch);
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
try {
ExtChSelector_selectCh(GET_BOARDID());
} catch (const std::exception &e) {
@ -452,21 +453,21 @@ int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) {
// 蒸发仓水浸
#define COMPONENT HardwareComponent::EvaporationBinWS
bool DeviceIoControlService::WaterSensor_readEvaporationBin() {
if (!isInTestMode()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID());
if (!VIRTUAL_DEVICE()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID());
return false;
}
#undef COMPONENT
#define COMPONENT HardwareComponent::DeviceBottomWS
bool DeviceIoControlService::WaterSensor_readDeviceBottom() {
if (!isInTestMode()) return CAN_MASTER->bottomWSReadState(GET_BOARDID());
if (!VIRTUAL_DEVICE()) return CAN_MASTER->bottomWSReadState(GET_BOARDID());
return false;
} // 设备底部水浸
#undef COMPONENT
#define COMPONENT HardwareComponent::ACPostPS
int DeviceIoControlService::ACPostPS_readPa() { //
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().ACPostPS_To_Pa(val);
}
@ -476,7 +477,7 @@ int DeviceIoControlService::ACPostPS_readPa() { //
#define COMPONENT HardwareComponent::AirLeakDetectPS
int DeviceIoControlService::AirLeakDetectPS_readPa() { //
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().AirLeakDetectPS_To_Pa(val);
}
@ -486,7 +487,7 @@ int DeviceIoControlService::AirLeakDetectPS_readPa() { //
#define COMPONENT HardwareComponent::LiquidWeightPS
int DeviceIoControlService::LiquidWeightPS_readPa() { //
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().LiquidWeightPS_To_Pa(val);
}
@ -496,7 +497,7 @@ int DeviceIoControlService::LiquidWeightPS_readPa() { //
#define COMPONENT HardwareComponent::SprayPumpPostPS
int DeviceIoControlService::SprayPumpPostPS_readPa() { //
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().SprayPumpPostPS_To_Pa(val);
}
@ -506,7 +507,7 @@ int DeviceIoControlService::SprayPumpPostPS_readPa() { //
#define COMPONENT HardwareComponent::AddLiquidPumpPostPS
int DeviceIoControlService::AddLiquidPumpPostPS_readPa() { //
if (!isInTestMode()) {
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().AddLiquidPumpPostPS_To_Pa(val);
}

Loading…
Cancel
Save