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