Fixed bug in refreshObject caused by incorrectly finding device parameters that no longer exist.
This commit is contained in:
1 parent
a8ee773a39
commit
3c1f34b922
1 file changed
+23
-15
+23
-15
@@ -85,17 +85,29 @@ this.refreshObject = (task, methodResponse, callback) ->
|
|||||||
throw Error('Unexpected subtask name')
|
throw Error('Unexpected subtask name')
|
||||||
|
|
||||||
|
|
||||||
findMissingParameters = (device, parameters, pathPrefix, missingList) ->
|
findMissingParameters = (device, parameterList, prefix) ->
|
||||||
for k,v of device
|
missingParameters = []
|
||||||
continue if k[0] == '_'
|
paths = {}
|
||||||
p = pathPrefix + k
|
for param in parameterList
|
||||||
continue if parameters[p]
|
p = param[0]
|
||||||
|
paths[p] = true
|
||||||
|
i = p.indexOf('.')
|
||||||
|
while i != -1
|
||||||
|
paths[p[0...i]] = true
|
||||||
|
i = p.indexOf('.', i + 1)
|
||||||
|
|
||||||
p += '.'
|
recursive = (obj, prefix) ->
|
||||||
if parameters[p]
|
for k,v of obj
|
||||||
findMissingParameters(v, parameters, p, missingList)
|
continue if k[0] == '_'
|
||||||
else
|
p = prefix + k
|
||||||
missingList.push(p.slice(0, -1))
|
|
||||||
|
if paths[p]
|
||||||
|
recursive(v, "#{p}.")
|
||||||
|
else
|
||||||
|
missingParameters.push(p)
|
||||||
|
|
||||||
|
recursive(device, prefix)
|
||||||
|
return missingParameters
|
||||||
|
|
||||||
|
|
||||||
this.getParameterNames = (task, methodResponse, callback) ->
|
this.getParameterNames = (task, methodResponse, callback) ->
|
||||||
@@ -126,11 +138,7 @@ this.getParameterNames = (task, methodResponse, callback) ->
|
|||||||
rootPath = 'InternetGatewayDevice.'
|
rootPath = 'InternetGatewayDevice.'
|
||||||
|
|
||||||
if root
|
if root
|
||||||
deviceUpdates.deletedObjects = []
|
deviceUpdates.deletedObjects = findMissingParameters(root, methodResponse.parameterList, rootPath)
|
||||||
parameters = {}
|
|
||||||
# convert to object for better performance
|
|
||||||
parameters[p[0]] = 1 for p in methodResponse.parameterList
|
|
||||||
findMissingParameters(root, parameters, rootPath, deviceUpdates.deletedObjects)
|
|
||||||
else
|
else
|
||||||
# avoid adding and deleting the same param
|
# avoid adding and deleting the same param
|
||||||
if rootPath isnt task.parameterPath
|
if rootPath isnt task.parameterPath
|
||||||
|
|||||||
Reference in new issue
Block a user