public.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // 全局定义
  2. // 秒寻科技
  3. // zt 2024-10-04
  4. package public
  5. import (
  6. "fmt"
  7. "sync"
  8. )
  9. // 定义网管模块编号
  10. const (
  11. BTS_MODULE_DEVICE = 1 //设备参数
  12. BTS_MODULE_REPORT = 2 //上报参数
  13. BTS_MODULE_NETWORK = 3 //网管参数
  14. BTS_MODULE_GAIN = 4 //增益参数
  15. BTS_MODULE_INSTALL = 5 //安装参数
  16. BTS_MODULE_SYNC = 6 //同步参数
  17. BTS_MODULE_BTS = 7 //基站参数
  18. BTS_MODULE_RTC = 8 //RTC参数
  19. )
  20. // 定义MCP层命令类型
  21. const (
  22. BTS_MCP_REPORT = 1 //基站参数上报
  23. BTS_MCP_QUERY = 2 //基站参数参数
  24. BTS_MCP_SET = 3 //基站参数配置
  25. )
  26. // 客户端地址
  27. type HeartMapValue struct {
  28. ProjectID int `json:"project_id"`
  29. BtsID int `json:"bts_id"`
  30. }
  31. // 升级状态管理结构
  32. type PublicUpgradeStatus struct {
  33. Flag uint8 `json:"flag"` //升级状态,1:失败,2:成功
  34. Percent uint8 `json:"percent"` //百分比
  35. }
  36. // 全局变量
  37. var (
  38. Gpub_mutex sync.Mutex
  39. Gpub_mapChan = make(map[string]chan interface{}) //保存每个http请求的chan
  40. //心跳包map
  41. Gpub_mapHeart = make(map[string]HeartMapValue)
  42. //web socket消息通道
  43. Gpub_chanWebSocketMsg = make(chan PublicUpgradeStatus)
  44. Gpub_sysWorkMode uint32 = 0 //系统工作模式,0:调试模式,1:生产模式
  45. )
  46. // 增加一个心跳map元素
  47. // projectId:项目编号
  48. // btsId:基站编号
  49. // 返回值:0:map中不存在该元素,1:map中已存在该元素
  50. func PublicHeartMapAddItem(projectId int, btsId int) int {
  51. var result int = 1 //返回值
  52. var modeHeart HeartMapValue
  53. modeHeart.ProjectID = projectId
  54. modeHeart.BtsID = btsId
  55. //组织mapKey字符
  56. mapKey := fmt.Sprintf("%08X", projectId) + "-" + fmt.Sprintf("%08X", btsId)
  57. _, exist := Gpub_mapHeart[mapKey]
  58. if !exist { //map中部存在该key
  59. Gpub_mutex.Lock()
  60. defer Gpub_mutex.Unlock()
  61. Gpub_mapHeart[mapKey] = modeHeart //增加一个map元素
  62. result = 0
  63. }
  64. return result
  65. }
  66. // 删除map中的一个元素
  67. func PublicHeartMapDeleteOneItem(mapKey string) {
  68. Gpub_mutex.Lock()
  69. defer Gpub_mutex.Unlock()
  70. delete(Gpub_mapHeart, mapKey)
  71. }
  72. // 删除map中的所有元素
  73. func PublicHeartMapDeleteAllItem() {
  74. Gpub_mutex.Lock()
  75. defer Gpub_mutex.Unlock()
  76. for key := range Gpub_mapHeart {
  77. delete(Gpub_mapHeart, key)
  78. }
  79. }
  80. // 设置系统工作模式
  81. func PublicSysWorkModeSet(sysWorkMode uint32) {
  82. Gpub_sysWorkMode = sysWorkMode
  83. }
  84. // 获得系统工作模式
  85. func PublicSysWorkModeGet() uint32 {
  86. return Gpub_sysWorkMode
  87. }