123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package mcp
- import (
- "encoding/binary"
- "errors"
- "fmt"
- "ipsomc/module/bparam/bparammodel"
- "ipsomc/module/oam"
- "ipsomc/module/ps/psmodel"
- "ipsomc/public"
- )
- type Mcp struct {
- oamDeviceApi oam.OamDevice
- oamNetworkApi oam.OamNetwork
- oamGainApi oam.OamGain
- oamSyncApi oam.OamSync
- oamBtsApi oam.OamBts
- oamInstallApi oam.OamInstall
- rtcApi oam.OamRtc
- }
- func (obj *Mcp) McpSendRespDataToHttp(stHeadModel *psmodel.PS_HEAD_T, dataModel *bparammodel.BtsBaseParam, byModuleId uint8, byMcpCmd uint8) {
-
- requestIdStr := fmt.Sprintf("%08X", int(stHeadModel.StVpHead.ProjectID)) + "-" + fmt.Sprintf("%08X", stHeadModel.StVpHead.DeviceID) + "-" + fmt.Sprintf("%d", byMcpCmd) + "-" + fmt.Sprintf("%d", byModuleId)
-
- chanRespData, exist := public.Gpub_mapChan[requestIdStr]
- if exist {
- chanRespData <- dataModel
- }
- }
- func (obj *Mcp) McpAUlRespQuery(stHeadModel *psmodel.PS_HEAD_T, dataList []byte, wLen int) error {
- btsBaseParamModel := new(bparammodel.BtsBaseParam)
- var wCurrentLen uint16 = 0
- var wLtvLen uint16 = 0
- var wCommand uint16 = 0
- ltvData := make([]byte, psmodel.PS_MCP_A_DATA_LEN)
- var byModuleId uint8 = 0
-
- for {
- if wCurrentLen >= uint16(wLen) {
- break
- }
-
- wLtvLen = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen : wCurrentLen+2]))
- wCommand = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen+2 : wCurrentLen+4]))
- copy(ltvData, dataList[wCurrentLen+4:wCurrentLen+wLtvLen])
-
- if wCommand <= 0x00FF {
- obj.oamDeviceApi.OamDeviceQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_DEVICE
- } else if wCommand >= 0x0100 && wCommand <= 0x01FF {
- obj.oamNetworkApi.OamNetrowkQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_NETWORK
- } else if wCommand >= 0x0200 && wCommand <= 0x02FF {
- byModuleId = public.BTS_MCP_REPORT
- } else if wCommand >= 0x0300 && wCommand <= 0x03FF {
- obj.oamGainApi.OamGainQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_GAIN
- } else if wCommand >= 0x0400 && wCommand <= 0x04FF {
- obj.oamInstallApi.OamInstallQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_INSTALL
- } else if wCommand >= 0x0500 && wCommand <= 0x05FF {
- obj.oamSyncApi.OamSyncQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_SYNC
- } else if wCommand >= 0x0600 && wCommand <= 0x06FF {
- obj.oamBtsApi.OamBtsQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_BTS
- } else if wCommand >= 0x0700 && wCommand <= 0x07FF {
- obj.rtcApi.OamRtcQueryResp(btsBaseParamModel, wCommand, ltvData, wLtvLen-4)
- byModuleId = public.BTS_MODULE_RTC
- } else {
- return errors.New("监控命令错误")
- }
-
- wCurrentLen += wLtvLen
- }
-
- btsBaseParamModel.ProjectID = stHeadModel.StVpHead.ProjectID
- btsBaseParamModel.BtsID = stHeadModel.StVpHead.DeviceID
- obj.McpSendRespDataToHttp(stHeadModel, btsBaseParamModel, byModuleId, psmodel.MCP_A_QUERY)
- return nil
- }
- func (obj *Mcp) McpAUlRespSet(stHeadModel *psmodel.PS_HEAD_T, dataList []byte, wLen int) error {
- btsBaseParamModel := new(bparammodel.BtsBaseParam)
- var wCurrentLen uint16 = 0
- var wLtvLen uint16 = 0
- var wCommand uint16 = 0
- ltvData := make([]byte, psmodel.PS_MCP_A_DATA_LEN)
- var byModuleId uint8 = 0
-
- for {
- if wCurrentLen >= uint16(wLen) {
- break
- }
-
- wLtvLen = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen : wCurrentLen+2]))
- wCommand = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen+2 : wCurrentLen+4]))
- copy(ltvData, dataList[wCurrentLen+4:wCurrentLen+wLtvLen])
-
- if wCommand <= 0x00FF {
- byModuleId = public.BTS_MODULE_DEVICE
- } else if wCommand >= 0x0100 && wCommand <= 0x01FF {
- byModuleId = public.BTS_MODULE_NETWORK
- } else if wCommand >= 0x0200 && wCommand <= 0x02FF {
- byModuleId = public.BTS_MCP_REPORT
- } else if wCommand >= 0x0300 && wCommand <= 0x03FF {
- byModuleId = public.BTS_MODULE_GAIN
- if wCommand == 0x03FF {
- btsBaseParamModel.SaveParam = ltvData[0]
- }
- } else if wCommand >= 0x0400 && wCommand <= 0x04FF {
- byModuleId = public.BTS_MODULE_INSTALL
- } else if wCommand >= 0x0500 && wCommand <= 0x05FF {
- byModuleId = public.BTS_MODULE_SYNC
- } else if wCommand >= 0x0600 && wCommand <= 0x06FF {
- byModuleId = public.BTS_MODULE_BTS
- } else if wCommand >= 0x0700 && wCommand <= 0x07FF {
- byModuleId = public.BTS_MODULE_RTC
- } else {
- return errors.New("监控命令错误")
- }
-
- wCurrentLen += wLtvLen
- }
-
- btsBaseParamModel.ProjectID = stHeadModel.StVpHead.ProjectID
- btsBaseParamModel.BtsID = stHeadModel.StVpHead.DeviceID
- obj.McpSendRespDataToHttp(stHeadModel, btsBaseParamModel, byModuleId, psmodel.MCP_A_CONFIGURE)
- return nil
- }
|