oamrtc.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //同步参数查询响应
  2. // 秒寻科技
  3. // zt 2024-10-03
  4. package oam
  5. import (
  6. "fmt"
  7. "ipsomc/module/bparam/bparammodel"
  8. )
  9. type OamRtc struct {
  10. }
  11. const (
  12. ORDER_SYNC_TIMER_CURRENT_TIME = 0x0700
  13. ORDER_SYNC_TIMER_SWITCH = 0x0701
  14. ORDER_SYNC_TIMER_NUM = 0x0702
  15. ORDER_SYNC_TIMER1_START = 0x0703
  16. ORDER_SYNC_TIMER1_STOP = 0x0704
  17. ORDER_SYNC_TIMER2_START = 0x0705
  18. ORDER_SYNC_TIMER2_STOP = 0x0706
  19. )
  20. // RTC参数查询响应
  21. // dataModel:基站基本参数模型
  22. // wCommand:监控命令
  23. // datalist:数据队列
  24. // wLen:队列长度
  25. func (obj *OamRtc) OamRtcQueryResp(dataModel *bparammodel.BtsBaseParam, wCommand uint16, dataList []byte, wLen uint16) error {
  26. strTmp := ""
  27. switch wCommand {
  28. case ORDER_SYNC_TIMER_CURRENT_TIME:
  29. strTmp = obj.OamRtcParseDateTime(dataList)
  30. dataModel.RtcDateTime = strTmp
  31. case ORDER_SYNC_TIMER_SWITCH:
  32. dataModel.SyncTimerSwitch = uint8(dataList[0])
  33. case ORDER_SYNC_TIMER_NUM:
  34. dataModel.SyncTimerNum = uint8(dataList[0])
  35. case ORDER_SYNC_TIMER1_START:
  36. strTmp = obj.OamRtcParseTime(dataList)
  37. dataModel.SyncTimer1Start = strTmp
  38. case ORDER_SYNC_TIMER1_STOP:
  39. strTmp = obj.OamRtcParseTime(dataList)
  40. dataModel.SyncTimer1Stop = strTmp
  41. case ORDER_SYNC_TIMER2_START:
  42. strTmp = obj.OamRtcParseTime(dataList)
  43. dataModel.SyncTimer2Start = strTmp
  44. case ORDER_SYNC_TIMER2_STOP:
  45. strTmp = obj.OamRtcParseTime(dataList)
  46. dataModel.SyncTimer2Stop = strTmp
  47. default:
  48. break
  49. }
  50. return nil
  51. }
  52. // 将日期和时间转成字符串
  53. func (obj *OamRtc) OamRtcParseDateTime(dateTimeList []byte) string {
  54. year := int(dateTimeList[5])
  55. year += 2000
  56. month := dateTimeList[4]
  57. day := dateTimeList[3]
  58. hour := dateTimeList[2]
  59. minute := dateTimeList[1]
  60. second := dateTimeList[0]
  61. rtcDateTime := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second)
  62. return rtcDateTime
  63. }
  64. // 时间转成字符串
  65. func (obj *OamRtc) OamRtcParseTime(timeList []byte) string {
  66. hour := timeList[1]
  67. minute := timeList[0]
  68. rtcTime := fmt.Sprintf("%02d:%02d", hour, minute)
  69. return rtcTime
  70. }