| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // 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
- }
|