123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package psdl
- import (
- "bytes"
- "encoding/binary"
- "ipsomc/module/ps/ap"
- "ipsomc/module/ps/psmodel"
- "ipsomc/module/socket/socketsend"
- )
- type PsDl struct {
- apApi ap.Ap
- socketSendApi socketsend.SocketSend
- }
- func (obj *PsDl) PsDlResp(stHeadModel *psmodel.PS_HEAD_T, dataList []byte) error {
-
- projectId := stHeadModel.StVpHead.ProjectID
- btsId := stHeadModel.StVpHead.DeviceID
- byVpFlag := psmodel.VP_RESP
- byMcpType := stHeadModel.StVpHead.McpType
- byMcpCmd := stHeadModel.StMcpHead.Comd
- byMcpResp := psmodel.MCP_RESP_SUCC
- dataFrame := obj.PsDlOrganizeDlFrame(projectId, btsId, uint8(byVpFlag), byMcpType, byMcpCmd, uint8(byMcpResp), dataList)
-
- apDataFrame, wLen, err := obj.apApi.ApDl(dataFrame, len(dataFrame))
- if err != nil {
- return err
- }
-
-
- if err := obj.socketSendApi.SendDataToBtsTcp(projectId, btsId, apDataFrame, uint16(wLen)); err != nil {
- return err
- }
- return nil
- }
- func (obj *PsDl) PsDlOrganizeDlFrame(projectId int, btsId int, byVpFlag uint8, byMcpType uint8, byMcpCmd uint8, byMcpResp uint8, dataList []byte) []byte {
- var frameData bytes.Buffer
- var wCrc uint16 = 0
-
- binary.Write(&frameData, binary.LittleEndian, uint8(psmodel.PS_AP_END_FLAG))
-
- binary.Write(&frameData, binary.LittleEndian, int32(projectId))
- binary.Write(&frameData, binary.LittleEndian, uint8(128))
- binary.Write(&frameData, binary.LittleEndian, int32(btsId))
- binary.Write(&frameData, binary.LittleEndian, byVpFlag)
- binary.Write(&frameData, binary.LittleEndian, byMcpType)
-
- binary.Write(&frameData, binary.LittleEndian, byMcpCmd)
- binary.Write(&frameData, binary.LittleEndian, byMcpResp)
-
- binary.Write(&frameData, binary.LittleEndian, dataList)
-
- tmpList := frameData.Bytes()
- wCrc = obj.apApi.ApGenCrc16(tmpList[1:], uint16(len(tmpList)-1), 0)
- binary.Write(&frameData, binary.LittleEndian, wCrc)
-
- binary.Write(&frameData, binary.LittleEndian, uint8(psmodel.PS_AP_END_FLAG))
- return frameData.Bytes()
- }
- func (obj *PsDl) PsDlSendOamDataToBts(projectId int, btsId int, byMcpType uint8, byMcpCmd uint8, payload []byte) error {
-
- frameData := obj.PsDlOrganizeDlFrame(projectId, btsId, psmodel.VP_CMMD, byMcpType, byMcpCmd, psmodel.MCP_CMD, payload)
-
- apDataFrame, wLen, err := obj.apApi.ApDl(frameData, len(frameData))
- if err != nil {
- return err
- }
-
-
- if err := obj.socketSendApi.SendDataToBtsTcp(projectId, btsId, apDataFrame, uint16(wLen)); err != nil {
- return err
- }
- return nil
- }
|