public async Task<Dictionary<int, Register>> GetRegistersAsync()
{
var result = new Dictionary<int, Register>();
List<string> registerNames = null;
List<Tuple<int, string>> registerValues = null;
await SafelyExecuteCommand(async () =>
{
registerNames = (await new DataListRegisterNamesCommand().Execute(this)).Value;
registerValues = (await new DataListRegisterValuesCommand().Execute(this)).Value;
});
if (registerNames != null && registerValues != null)
{
for (var i = 0; i < registerNames.Count; i++)
{
var name = registerNames[i];
if (name != string.Empty)
{
result.Add(i, new Register {Name = name, Index = i});
}
}
foreach (var regVal in registerValues)
{
if (regVal.Item1 != -1)
{
Register value;
if (result.TryGetValue(regVal.Item1, out value))
{
value.Value = regVal.Item2;
}
}
}
}
return result;
}