private void UpdateData()
{
dataUpdating = true;
formDataAccess.WaitOne();
devForm.attrData.attrDictAccess.WaitOne();
lvAttributes.BeginUpdate();
try
{
if (devForm.attrData.attrDict != null && devForm.attrData.attrDict.Count > 0)
{
Dictionary<string, DataAttr> tmpAttrDict = new Dictionary<string, DataAttr>();
foreach (KeyValuePair<string, DataAttr> keyValuePair in devForm.attrData.attrDict)
{
DataAttr dataAttr1 = keyValuePair.Value;
if (dataAttr1.DataUpdate)
{
DataAttr dataAttr3 = dataAttr1;
dataAttr3.DataUpdate = false;
tmpAttrDict.Add(dataAttr1.Key, dataAttr3);
int nodeIndex = 0;
string str1 = string.Empty;
if (lvAttributes.Items.Count >= 1500)
{
string msg = string.Format("Attribute Data List At Maximum {0} Elements\nClear List Data\nAttributesForm\n", (object)1500);
msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Warning, msg);
break;
}
else
{
Color fore = AttrData.defaultForeground;
Color back = AttrData.defaultBackground;
if (dataAttr1.ForeColor != Color.Empty && dataAttr1.ForeColor.ToKnownColor() != (KnownColor)0)
fore = dataAttr1.ForeColor;
if (dataAttr1.BackColor != Color.Empty && dataAttr1.BackColor.ToKnownColor() != (KnownColor)0)
back = dataAttr1.BackColor;
if (FindAttr(dataAttr1.Key, ref nodeIndex))
{
try
{
AttributesForm.ListSubItem listSubItem2 = AttributesForm.ListSubItem.Key;
UpdateItemColor(nodeIndex, (int)listSubItem2, fore, back);
AttributesForm.ListSubItem listSubItem3 = AttributesForm.ListSubItem.ConnectionHandle;
if ((int)dataAttr1.ConnHandle != (int)ushort.MaxValue)
UpdateSubItem(nodeIndex, (int)listSubItem3, "0x" + dataAttr1.ConnHandle.ToString("X4"), fore, back);
UpdateItemColor(nodeIndex, (int)listSubItem3, fore, back);
AttributesForm.ListSubItem listSubItem4 = AttributesForm.ListSubItem.Handle;
if (dataAttr1.Handle != 0)
{
UpdateSubItem(nodeIndex, (int)listSubItem4, "0x" + dataAttr1.Handle.ToString("X4"), fore, back);
}
UpdateItemColor(nodeIndex, (int)listSubItem4, fore, back);
AttributesForm.ListSubItem listSubItem5 = AttributesForm.ListSubItem.Uuid;
if (CheckForStringData(dataAttr1.UuidHex))
{
UpdateSubItem(nodeIndex, (int)listSubItem5, "0x" + dataAttr1.UuidHex, fore, back);
}
UpdateItemColor(nodeIndex, (int)listSubItem5, fore, back);
AttributesForm.ListSubItem listSubItem6 = AttributesForm.ListSubItem.UuidDesc;
if (CheckForStringData(dataAttr1.UuidDesc))
{
int num = (int)dataAttr1.IndentLevel;
string str2 = "";
for (int index = 0; index < num; ++index)
str2 = str2 + " ";
UpdateSubItem(nodeIndex, (int)listSubItem6, str2 + dataAttr1.UuidDesc, fore, back);
}
UpdateItemColor(nodeIndex, (int)listSubItem6, fore, back);
AttributesForm.ListSubItem listSubItem7 = AttributesForm.ListSubItem.Value;
if (CheckForStringData(dataAttr1.Value))
{
string outStr = string.Empty;
devUtils.ConvertDisplayTypes(ValueDisplay.Hex, dataAttr1.Value, ref dataAttr1.ValueDisplay, ref outStr, false);
UpdateSubItem(nodeIndex, (int)listSubItem7, outStr, fore, back);
}
UpdateItemColor(nodeIndex, (int)listSubItem7, fore, back);
AttributesForm.ListSubItem listSubItem8 = AttributesForm.ListSubItem.ValueDesc;
if (CheckForStringData(dataAttr1.ValueDesc))
UpdateSubItem(nodeIndex, (int)listSubItem8, dataAttr1.ValueDesc, fore, back);
UpdateItemColor(nodeIndex, (int)listSubItem8, fore, back);
AttributesForm.ListSubItem listSubItem9 = AttributesForm.ListSubItem.Properties;
if (CheckForStringData(dataAttr1.PropertiesStr))
UpdateSubItem(nodeIndex, (int)listSubItem9, dataAttr1.PropertiesStr, fore, back);
UpdateItemColor(nodeIndex, (int)listSubItem9, fore, back);
}
catch (Exception ex)
{
msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Update BLE Attributes\n" + ex.Message + "\n");
break;
}
}
else
{
try
{
ListViewItem lvItem = new ListViewItem();
lvItem.UseItemStyleForSubItems = false;
lvItem.Text = dataAttr1.Key;
lvItem.Tag = (object)dataAttr1;
lvItem.ForeColor = fore;
lvItem.BackColor = back;
lvAttributes.Items.Insert(lvAttributes.Items.Count, lvItem);
str1 = string.Empty;
string data;
if ((int)dataAttr1.ConnHandle != (int)ushort.MaxValue)
data = "0x" + dataAttr1.ConnHandle.ToString("X4");
else
data = "";
InsertSubItem(lvItem, data, fore, back);
if ((int)dataAttr1.Handle != 0)
{
data = "0x" + dataAttr1.Handle.ToString("X4");
}
else
data = "";
InsertSubItem(lvItem, data, fore, back);
data = !CheckForStringData(dataAttr1.UuidHex) ? "" : "0x" + dataAttr1.UuidHex;
InsertSubItem(lvItem, data, fore, back);
int num = (int)dataAttr1.IndentLevel;
string str2 = "";
for (int index = 0; index < num; ++index)
str2 = str2 + " ";
data = !CheckForStringData(dataAttr1.UuidDesc) ? "" : str2 + dataAttr1.UuidDesc;
InsertSubItem(lvItem, data, fore, back);
string inStr = !CheckForStringData(dataAttr1.Value) ? "" : dataAttr1.Value;
string outStr = string.Empty;
devUtils.ConvertDisplayTypes(ValueDisplay.Hex, inStr, ref dataAttr1.ValueDisplay, ref outStr, false);
InsertSubItem(lvItem, outStr, fore, back);
data = !CheckForStringData(dataAttr1.ValueDesc) ? "" : dataAttr1.ValueDesc;
InsertSubItem(lvItem, data, fore, back);
data = !CheckForStringData(dataAttr1.PropertiesStr) ? "" : dataAttr1.PropertiesStr;
InsertSubItem(lvItem, data, fore, back);
}
catch (Exception ex)
{
msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Add BLE Attributes\n" + ex.Message + "\n");
break;
}
}
}
}
}
attrDataUtils.UpdateAttrDict(tmpAttrDict);
}
if (tsmiAutoScroll.Checked)
{
if (lvAttributes.Items.Count > 0)
lvAttributes.EnsureVisible(lvAttributes.Items.Count - 1);
}
}
catch (Exception ex)
{
msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Process BLE Attributes\n" + ex.Message + "\n");
}
lvAttributes.EndUpdate();
devForm.attrData.attrDictAccess.ReleaseMutex();
formDataAccess.ReleaseMutex();
dataUpdating = false;
}