// 全局定义 // 秒寻科技 // zt 2024-10-04 package public import ( "fmt" "sync" ) // 定义网管模块编号 const ( BTS_MODULE_DEVICE = 1 //设备参数 BTS_MODULE_REPORT = 2 //上报参数 BTS_MODULE_NETWORK = 3 //网管参数 BTS_MODULE_GAIN = 4 //增益参数 BTS_MODULE_INSTALL = 5 //安装参数 BTS_MODULE_SYNC = 6 //同步参数 BTS_MODULE_BTS = 7 //基站参数 BTS_MODULE_RTC = 8 //RTC参数 ) // 定义MCP层命令类型 const ( BTS_MCP_REPORT = 1 //基站参数上报 BTS_MCP_QUERY = 2 //基站参数参数 BTS_MCP_SET = 3 //基站参数配置 ) // 客户端地址 type HeartMapValue struct { ProjectID int `json:"project_id"` BtsID int `json:"bts_id"` } // 升级状态管理结构 type PublicUpgradeStatus struct { Flag uint8 `json:"flag"` //升级状态,1:失败,2:成功 Percent uint8 `json:"percent"` //百分比 } // 全局变量 var ( Gpub_mutex sync.Mutex Gpub_mapChan = make(map[string]chan interface{}) //保存每个http请求的chan //心跳包map Gpub_mapHeart = make(map[string]HeartMapValue) //web socket消息通道 Gpub_chanWebSocketMsg = make(chan PublicUpgradeStatus) Gpub_sysWorkMode uint32 = 0 //系统工作模式,0:调试模式,1:生产模式 ) // 增加一个心跳map元素 // projectId:项目编号 // btsId:基站编号 // 返回值:0:map中不存在该元素,1:map中已存在该元素 func PublicHeartMapAddItem(projectId int, btsId int) int { var result int = 1 //返回值 var modeHeart HeartMapValue modeHeart.ProjectID = projectId modeHeart.BtsID = btsId //组织mapKey字符 mapKey := fmt.Sprintf("%08X", projectId) + "-" + fmt.Sprintf("%08X", btsId) _, exist := Gpub_mapHeart[mapKey] if !exist { //map中部存在该key Gpub_mutex.Lock() defer Gpub_mutex.Unlock() Gpub_mapHeart[mapKey] = modeHeart //增加一个map元素 result = 0 } return result } // 删除map中的一个元素 func PublicHeartMapDeleteOneItem(mapKey string) { Gpub_mutex.Lock() defer Gpub_mutex.Unlock() delete(Gpub_mapHeart, mapKey) } // 删除map中的所有元素 func PublicHeartMapDeleteAllItem() { Gpub_mutex.Lock() defer Gpub_mutex.Unlock() for key := range Gpub_mapHeart { delete(Gpub_mapHeart, key) } } // 设置系统工作模式 func PublicSysWorkModeSet(sysWorkMode uint32) { Gpub_sysWorkMode = sysWorkMode } // 获得系统工作模式 func PublicSysWorkModeGet() uint32 { return Gpub_sysWorkMode }