public bool GetATT_FindInfoRsp(HCIReplies hciReplies, ref bool dataFound) { dataFound = false; bool success; if (success = rspHdlrsUtils.CheckValidResponse(hciReplies)) { HCIReplies.HCI_LE_ExtEvent hciLeExtEvent = hciReplies.HciLeExtEvent; HCIReplies.HCI_LE_ExtEvent.ATT_FindInfoRsp attFindInfoRsp = hciLeExtEvent.AttFindInfoRsp; HCIReplies.LE_ExtEventHeader leExtEventHeader = hciLeExtEvent.Header; if (attFindInfoRsp != null) { dataFound = true; switch (leExtEventHeader.EventStatus) { case (byte)0: if (attFindInfoRsp.HandleData != null) { Dictionary <string, DataAttr> tmpAttrDict = new Dictionary <string, DataAttr>(); foreach (HCIReplies.HandleData handleData in attFindInfoRsp.HandleData) { string attrKey = m_attrUuidUtils.GetAttrKey(attFindInfoRsp.AttMsgHdr.ConnHandle, handleData.Handle); DataAttr dataAttr = new DataAttr(); bool dataChanged = false; if (!m_attrDataUtils.GetDataAttr(ref dataAttr, ref dataChanged, attrKey, "AttFindInfoRsp")) { success = false; break; } else { dataAttr.Key = attrKey; dataAttr.ConnHandle = attFindInfoRsp.AttMsgHdr.ConnHandle; dataAttr.Handle = handleData.Handle; dataAttr.Uuid = m_deviceFormUtils.UnloadColonData(handleData.Data, false); dataAttr.UuidHex = m_dataUtils.GetStringFromBytes(handleData.Data, true); dataAttr.IndentLevel = m_attrUuidUtils.GetIndentLevel(dataAttr.UuidHex); dataAttr.UuidDesc = m_attrUuidUtils.GetUuidDesc(dataAttr.UuidHex); dataAttr.ValueDesc = m_attrUuidUtils.GetUuidValueDesc(dataAttr.UuidHex); dataAttr.ForeColor = m_attrUuidUtils.GetForegroundColor(dataAttr.UuidHex); dataAttr.BackColor = m_attrUuidUtils.GetBackgroundColor(dataAttr.UuidHex); dataAttr.ValueDisplay = m_attrUuidUtils.GetValueDsp(dataAttr.UuidHex); dataAttr.ValueEdit = m_attrUuidUtils.GetValueEdit(dataAttr.UuidHex); if (m_deviceForm.attrData.sendAutoCmds || hciReplies.CmdType == TxDataOut.CmdTypes.DiscUuidAndValues) { m_sendCmds.SendGATT(new HCICmds.GATTCmds.GATT_ReadLongCharValue() { connHandle = dataAttr.ConnHandle, handle = dataAttr.Handle }, TxDataOut.CmdTypes.DiscUuidAndValues, (SendCmds.SendCmdResult)null); } if (!m_attrDataUtils.UpdateTmpAttrDict(ref tmpAttrDict, dataAttr, dataChanged, attrKey)) { success = false; break; } } } if (!m_attrDataUtils.UpdateAttrDict(tmpAttrDict)) { success = false; break; } else { break; } } else { break; } case (byte)23: case (byte)26: SendRspCallback(hciReplies, true); break; default: success = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "AttFindInfoRsp"); break; } } } if (!success && dataFound) { SendRspCallback(hciReplies, false); } return(success); }