// Author: NiuJiuRu // Email: niujiuru@qq.com // Date: 2025-11-20 package mcu_ctrl_board import "sync" // 定义_RTU_数据板的工作状态 type WorkState uint32 const ( Idle WorkState = 0 // 空闲(默认) AppUpgrading WorkState = 1 << 0 // 应用程序固件-升级中 PhotoCapturing WorkState = 1 << 1 // 当前相机图像-拍照中 PhotoUploading WorkState = 1 << 2 // 相机图像文件-上传中 SensorDataReceiving WorkState = 1 << 3 // 当前环境数据-收集中 SensorDataUploading WorkState = 1 << 4 // 当前环境数据-上传中 SensorHistUploading WorkState = 1 << 5 // 历史环境数据-上传中 ) // 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 }