| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Author: NiuJiuRu
- // Email: niujiuru@qq.com
- // Date: 2025-11-20
- package mcu_ctrl_board
- import "sync"
- // 定义_RTU_数据板的工作状态
- type WorkState uint32
- const (
- Idle WorkState = 0 // 空闲(默认)
- RtuAppUpgrading WorkState = 1 << 0 // 数据板的固件-升级中
- McuAppUpgrading WorkState = 1 << 1 // 控制板的固件-升级中
- PhotoCapturing WorkState = 1 << 2 // 当前相机图像-拍照中
- PhotoUploading WorkState = 1 << 3 // 相机图像文件-上传中
- SensorDataReceiving WorkState = 1 << 4 // 当前环境数据-收集中
- SensorDataUploading WorkState = 1 << 5 // 当前环境数据-上传中
- SensorHistUploading WorkState = 1 << 6 // 历史环境数据-上传中
- )
- // RTU数据板的工作状态管理器
- type WorkStateMgr struct {
- mu sync.RWMutex
- state WorkState
- }
- var GlobalWorkState = &WorkStateMgr{state: Idle}
- // 工作状态管理-添加一个状态
- func (mgr *WorkStateMgr) Add(s WorkState) {
- mgr.mu.Lock()
- defer mgr.mu.Unlock()
- mgr.state |= s
- }
- // 工作状态管理-清除一个状态
- func (mgr *WorkStateMgr) Remove(s WorkState) {
- mgr.mu.Lock()
- defer mgr.mu.Unlock()
- mgr.state &^= s
- }
- // 工作状态管理-获取当前状态
- // 判断某个状态是否存在
- func (mgr *WorkStateMgr) Get() WorkState {
- mgr.mu.RLock()
- defer mgr.mu.RUnlock()
- return mgr.state
- }
- // 工作状态管理-状态是否存在
- func (mgr *WorkStateMgr) Has(s WorkState) bool {
- mgr.mu.RLock()
- defer mgr.mu.RUnlock()
- return mgr.state&s != 0
- }
|