8 changed files with 451 additions and 7 deletions
-
1README.md
-
2iflytoplinuxsdk
-
234src/main_control_service.cpp
-
15src/main_control_service.hpp
-
0src/service/device_state_service.cpp
-
59src/service/device_state_service.hpp
-
84src/service/disinfection_ctl_service.cpp
-
63src/service/disinfection_ctl_service.hpp
@ -1 +1 @@ |
|||||
Subproject commit e248cbe39e9a9c4dc448c5e354b1f5ea352275cb |
|
||||
|
Subproject commit 7be7036d99eca24b6a5d4e9ae0361fcbc936b90f |
@ -0,0 +1,59 @@ |
|||||
|
//
|
||||
|
// Created by zwsd
|
||||
|
//
|
||||
|
|
||||
|
#pragma once
|
||||
|
#include <fstream>
|
||||
|
#include <iostream>
|
||||
|
#include <list>
|
||||
|
#include <map>
|
||||
|
#include <memory>
|
||||
|
#include <set>
|
||||
|
#include <sstream>
|
||||
|
#include <string>
|
||||
|
#include <vector>
|
||||
|
|
||||
|
#include "iflytop/core/core.hpp"
|
||||
|
|
||||
|
/**
|
||||
|
* @brief |
||||
|
* |
||||
|
* service: DeviceStateService |
||||
|
* |
||||
|
* 监听事件: |
||||
|
* 依赖状态: |
||||
|
* 依赖服务: |
||||
|
* 作用: |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
namespace iflytop { |
||||
|
using namespace std; |
||||
|
using namespace core; |
||||
|
class DeviceStateService : public enable_shared_from_this<DeviceStateService> { |
||||
|
ENABLE_LOGGER(DeviceStateService); |
||||
|
|
||||
|
bool loginFlag = false; |
||||
|
string login_uid; |
||||
|
int login_permission_level; |
||||
|
int login_visible; |
||||
|
|
||||
|
public: |
||||
|
DeviceStateService(){}; |
||||
|
|
||||
|
void setLoginState(string uid, int permission_level, int visible) { |
||||
|
loginFlag = true; |
||||
|
login_uid = uid; |
||||
|
login_permission_level = permission_level; |
||||
|
login_visible = visible; |
||||
|
} |
||||
|
|
||||
|
void unlogin() { loginFlag = false; } |
||||
|
bool isLogin() { return loginFlag; } |
||||
|
int getLoginPermissionLevel() { return login_permission_level; } |
||||
|
int getLoginVisible() { return login_visible; } |
||||
|
string getLoginUid() { return login_uid; } |
||||
|
|
||||
|
void initialize(){}; |
||||
|
}; |
||||
|
} // namespace iflytop
|
@ -0,0 +1,84 @@ |
|||||
|
#include "disinfection_ctl_service.hpp"
|
||||
|
using namespace iflytop; |
||||
|
using namespace std; |
||||
|
|
||||
|
DisinfectionCtrlService::DisinfectionCtrlService() {} |
||||
|
|
||||
|
string DisinfectionCtrlService::createDisinfectionID() { |
||||
|
struct tm tm = {0}; |
||||
|
|
||||
|
time_t t = time(nullptr); |
||||
|
if (t == -1) { |
||||
|
logger->error("time(nullptr) failed"); |
||||
|
exit(-1); |
||||
|
} |
||||
|
struct tm* tmp = localtime_r(&t, &tm); |
||||
|
if (!tmp) { |
||||
|
logger->error("localtime_r failed"); |
||||
|
exit(-1); |
||||
|
} |
||||
|
// tm = *utctime::tm_increment_hour(&tm, 8);
|
||||
|
// logger->info("trace sendmsg_startCapture {}:{}", __FILE__, __LINE__);
|
||||
|
return fmt::format("{:0>4}-{:0>2}{:0>2}-{:0>2}{:0>2}{:0>2}", tm.tm_year + 1900, //
|
||||
|
tm.tm_mon + 1, //
|
||||
|
tm.tm_mday, //
|
||||
|
tm.tm_hour, //
|
||||
|
tm.tm_min, tm.tm_sec); |
||||
|
} |
||||
|
|
||||
|
void DisinfectionCtrlService::initialize() {} |
||||
|
void DisinfectionCtrlService::startDisinfection(int loglevel,float roomVol) { |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
|
||||
|
if (m_disinfectionThread) { |
||||
|
stopDisinfection(); |
||||
|
} |
||||
|
|
||||
|
m_disinfectionID = createDisinfectionID(); |
||||
|
m_remaintime = 100; |
||||
|
m_isDisinfectionRunning = true; |
||||
|
m_disinfectionThread.reset(new Thread("m_disinfectionThread", [this, loglevel]() { |
||||
|
// do something
|
||||
|
// m_disinfectionThread->detach();
|
||||
|
ThisThread thisThread; |
||||
|
|
||||
|
// 发送开始拍照消息
|
||||
|
logger->info("start feeding {}", m_disinfectionID); |
||||
|
|
||||
|
while (!thisThread.getExitFlag()) { |
||||
|
m_remaintime--; |
||||
|
if (m_remaintime == 0) { |
||||
|
logger->info("feeding finished {}", m_disinfectionID); |
||||
|
break; |
||||
|
} |
||||
|
thisThread.sleepForMs(1000); |
||||
|
} |
||||
|
|
||||
|
{ |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
m_isDisinfectionRunning = false; |
||||
|
} |
||||
|
})); |
||||
|
} |
||||
|
void DisinfectionCtrlService::stopDisinfection() { |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
|
||||
|
if (m_disinfectionThread) { |
||||
|
m_disinfectionThread->join(); |
||||
|
m_disinfectionThread = nullptr; |
||||
|
} |
||||
|
logger->info("stop feeding {}", m_disinfectionID); |
||||
|
} |
||||
|
bool DisinfectionCtrlService::isDisinfectionRunning() { |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
return m_isDisinfectionRunning; |
||||
|
} |
||||
|
|
||||
|
int32_t DisinfectionCtrlService::getEstimatedRemainingTimeS() { |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
return m_remaintime; |
||||
|
} |
||||
|
string DisinfectionCtrlService::getDisinfectionID() { |
||||
|
lock_guard<recursive_mutex> lock(lock_); |
||||
|
return m_disinfectionID; |
||||
|
} |
@ -0,0 +1,63 @@ |
|||||
|
//
|
||||
|
// Created by zwsd
|
||||
|
//
|
||||
|
|
||||
|
#pragma once
|
||||
|
#include <fstream>
|
||||
|
#include <iostream>
|
||||
|
#include <list>
|
||||
|
#include <map>
|
||||
|
#include <memory>
|
||||
|
#include <mutex>
|
||||
|
#include <set>
|
||||
|
#include <sstream>
|
||||
|
#include <string>
|
||||
|
#include <vector>
|
||||
|
|
||||
|
#include "iflytop/core/core.hpp"
|
||||
|
|
||||
|
/**
|
||||
|
* @brief |
||||
|
* |
||||
|
* service: DisinfectionCtrlService |
||||
|
* |
||||
|
* 监听事件: |
||||
|
* 依赖状态: |
||||
|
* 依赖服务: |
||||
|
* 作用: |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
namespace iflytop { |
||||
|
using namespace std; |
||||
|
using namespace core; |
||||
|
class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlService> { |
||||
|
ENABLE_LOGGER(DisinfectionCtrlService); |
||||
|
|
||||
|
unique_ptr<Thread> m_disinfectionThread; |
||||
|
string m_disinfectionID; |
||||
|
|
||||
|
int m_remaintime = 0; |
||||
|
bool m_isDisinfectionRunning = false; |
||||
|
recursive_mutex lock_; |
||||
|
|
||||
|
public: |
||||
|
DisinfectionCtrlService(); |
||||
|
|
||||
|
public: |
||||
|
void initialize(); |
||||
|
/**
|
||||
|
* @brief 开始消毒 |
||||
|
* |
||||
|
* @param loglevel 消毒等级 |
||||
|
*/ |
||||
|
void startDisinfection(int loglevel,float roomVol); |
||||
|
void stopDisinfection(); |
||||
|
bool isDisinfectionRunning(); |
||||
|
int32_t getEstimatedRemainingTimeS(); |
||||
|
string getDisinfectionID(); |
||||
|
|
||||
|
private: |
||||
|
string createDisinfectionID(); |
||||
|
}; |
||||
|
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue