|
@@ -199,6 +199,7 @@ func (a *Access) processDeviceUpgrade(deviceId string, message *gjson.Json) erro
|
|
err := a.chunkUpgrade(*args)
|
|
err := a.chunkUpgrade(*args)
|
|
if err != nil {
|
|
if err != nil {
|
|
server.Log.Errorf("分片下载发送失败:%v", err)
|
|
server.Log.Errorf("分片下载发送失败:%v", err)
|
|
|
|
+ return err
|
|
}
|
|
}
|
|
|
|
|
|
case "downProgress":
|
|
case "downProgress":
|
|
@@ -216,10 +217,11 @@ func (a *Access) processDeviceUpgrade(deviceId string, message *gjson.Json) erro
|
|
case "finish":
|
|
case "finish":
|
|
device := a.GetLockDevice(deviceId)
|
|
device := a.GetLockDevice(deviceId)
|
|
device.Mutex.Lock()
|
|
device.Mutex.Lock()
|
|
|
|
+ defer device.Mutex.Unlock()
|
|
if device != nil {
|
|
if device != nil {
|
|
device.Locked = false
|
|
device.Locked = false
|
|
}
|
|
}
|
|
- device.Mutex.Unlock()
|
|
|
|
|
|
+
|
|
server.Log.Infof("OTA升级完成;%s", deviceId)
|
|
server.Log.Infof("OTA升级完成;%s", deviceId)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -283,11 +285,10 @@ func (a *Access) SendCommand(args rpcs.ArgsSendCommand, reply *rpcs.ReplySendCom
|
|
// 查询设备信息
|
|
// 查询设备信息
|
|
lockDevice := a.GetLockDevice(args.DeviceId)
|
|
lockDevice := a.GetLockDevice(args.DeviceId)
|
|
lockDevice.Mutex.Lock()
|
|
lockDevice.Mutex.Lock()
|
|
-
|
|
|
|
|
|
+ defer lockDevice.Mutex.Unlock()
|
|
if lockDevice.Locked {
|
|
if lockDevice.Locked {
|
|
return errors.New("设备正在进行OTA升级,请稍后重试")
|
|
return errors.New("设备正在进行OTA升级,请稍后重试")
|
|
}
|
|
}
|
|
- lockDevice.Mutex.Unlock()
|
|
|
|
|
|
|
|
device := &models.Device{}
|
|
device := &models.Device{}
|
|
err := server.RPCCallByName(nil, rpcs.RegistryServerName, "Registry.FindDeviceByIdentifier", args.DeviceId, device)
|
|
err := server.RPCCallByName(nil, rpcs.RegistryServerName, "Registry.FindDeviceByIdentifier", args.DeviceId, device)
|
|
@@ -336,10 +337,9 @@ func (a *Access) GetStatus(args rpcs.ArgsGetStatus, reply *rpcs.ReplyGetStatus)
|
|
func (a *Access) chunkUpgrade(params rpcs.ChunkUpgrade) error {
|
|
func (a *Access) chunkUpgrade(params rpcs.ChunkUpgrade) error {
|
|
lockDevice := a.GetLockDevice(params.DeviceId)
|
|
lockDevice := a.GetLockDevice(params.DeviceId)
|
|
lockDevice.Mutex.Lock()
|
|
lockDevice.Mutex.Lock()
|
|
-
|
|
|
|
|
|
+ defer lockDevice.Mutex.Unlock()
|
|
lockDevice.Locked = true
|
|
lockDevice.Locked = true
|
|
lockDevice.LastSeen = time.Now()
|
|
lockDevice.LastSeen = time.Now()
|
|
- lockDevice.Mutex.Unlock()
|
|
|
|
|
|
|
|
server.Log.Infof("4G模组OTA升级:%s", params.DeviceId)
|
|
server.Log.Infof("4G模组OTA升级:%s", params.DeviceId)
|
|
|
|
|