12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package mcpb
- import (
- "encoding/binary"
- "errors"
- "ipsomc/module/ps/psmodel"
- "ipsomc/module/ps/pspublic"
- "ipsomc/module/upgrade"
- "time"
- )
- type McpB struct {
- upgradeApi upgrade.Upgrade
- }
- func (obj *McpB) McpUlRespB(stHeadModel *psmodel.PS_HEAD_T, dataList []byte, wLen int) error {
- var wCurrentLen uint16 = 0
- var wLtvLen uint16 = 0
- var wCommand uint16 = 0
-
- if stHeadModel.StMcpHead.Resp == psmodel.MCP_RESP_ERR {
- obj.upgradeApi.UpgradeDeinit()
- return errors.New("设备响应错误")
- }
-
- wLtvLen = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen : wCurrentLen+2]))
- wCommand = uint16(binary.LittleEndian.Uint16(dataList[wCurrentLen+2 : wCurrentLen+4]))
-
- if wLtvLen != uint16(wLen) {
- obj.upgradeApi.UpgradeDeinit()
- return errors.New("数据长度错误")
- }
-
- if wCommand == pspublic.OAM_UPGRADE_SWITCH_SOFT_WORK_MODE {
- err := obj.upgradeApi.UpgradeNoticeFileSize(stHeadModel.StVpHead.ProjectID, stHeadModel.StVpHead.DeviceID)
- if err != nil {
- obj.upgradeApi.UpgradeDeinit()
- return err
- }
- } else if wCommand == pspublic.OAM_UPGRADE_NOTICE_FILE_SIZE_ {
- err := obj.upgradeApi.UpgradeTransferFile(stHeadModel.StVpHead.ProjectID, stHeadModel.StVpHead.DeviceID)
- if err != nil {
- obj.upgradeApi.UpgradeDeinit()
- return err
- }
- } else if wCommand == pspublic.OAM_UPGRADE_SEND_UPGRADE_FILE {
-
- ch := time.After(100 * time.Millisecond)
- <-ch
- err := obj.upgradeApi.UpgradeTransferFile(stHeadModel.StVpHead.ProjectID, stHeadModel.StVpHead.DeviceID)
- if err != nil {
- obj.upgradeApi.UpgradeDeinit()
- return err
- }
- } else if wCommand == pspublic.OAM_UPGRADE_NOTICE_UPGRADE_OVER {
- obj.upgradeApi.UpgradeSuccess()
- }
- return nil
- }
|