public bool GetATT_ReadByGrpTypeRsp(HCIReplies hciReplies, ref bool dataFound) { dataFound = false; bool flag = rspHdlrsUtils.CheckValidResponse(hciReplies); if (flag) { HCIReplies.HCI_LE_ExtEvent hciLeExtEvent = hciReplies.HciLeExtEvent; HCIReplies.HCI_LE_ExtEvent.ATT_ReadByGrpTypeRsp readByGrpTypeRsp = hciLeExtEvent.AttReadByGrpTypeRsp; HCIReplies.LE_ExtEventHeader leExtEventHeader = hciLeExtEvent.Header; if (readByGrpTypeRsp != null) { dataFound = true; switch (leExtEventHeader.EventStatus) { case 0: if (readByGrpTypeRsp.HandleData != null) { Dictionary <string, DataAttr> tmpAttrDict = new Dictionary <string, DataAttr>(); foreach (HCIReplies.HandleHandleData handleHandleData in readByGrpTypeRsp.HandleData) { string attrKey1 = attrUuidUtils.GetAttrKey(readByGrpTypeRsp.AttMsgHdr.ConnHandle, handleHandleData.Handle1); DataAttr dataAttr1 = new DataAttr(); bool dataChanged1 = false; if (!attrDataUtils.GetDataAttr(ref dataAttr1, ref dataChanged1, attrKey1, "AttReadByGrpTypeRsp")) { flag = false; break; } dataAttr1.Key = attrKey1; dataAttr1.ConnHandle = readByGrpTypeRsp.AttMsgHdr.ConnHandle; dataAttr1.Handle = handleHandleData.Handle1; dataAttr1.Value = devUtils.UnloadColonData(handleHandleData.Data, false); if (!attrDataUtils.UpdateTmpAttrDict(ref tmpAttrDict, dataAttr1, dataChanged1, attrKey1)) { flag = false; break; } if (handleHandleData.Handle2 != ushort.MaxValue) { if ((int)handleHandleData.Handle2 - (int)handleHandleData.Handle1 <= 0) { flag = false; break; } for (int index = handleHandleData.Handle1 + 1; index <= handleHandleData.Handle2; ++index) { string attrKey2 = attrUuidUtils.GetAttrKey(readByGrpTypeRsp.AttMsgHdr.ConnHandle, (ushort)index); DataAttr dataAttr2 = new DataAttr(); bool dataChanged2 = false; if (!attrDataUtils.GetDataAttr(ref dataAttr2, ref dataChanged2, attrKey2, "AttReadByGrpTypeRsp")) { flag = false; break; } dataAttr2.Key = attrKey2; dataAttr2.ConnHandle = readByGrpTypeRsp.AttMsgHdr.ConnHandle; dataAttr2.Handle = (ushort)index; if (devForm.attrData.sendAutoCmds) { sendCmds.SendGATT(new HCICmds.GATTCmds.GATT_ReadLongCharValue() { connHandle = dataAttr2.ConnHandle, handle = dataAttr2.Handle }, TxDataOut.CmdTypes.DiscUuidAndValues, null); } if (!attrDataUtils.UpdateTmpAttrDict(ref tmpAttrDict, dataAttr2, dataChanged2, attrKey2)) { flag = false; break; } } } else { break; } } if (!attrDataUtils.UpdateAttrDict(tmpAttrDict)) { flag = false; } } break; case 23: case 26: SendRspCallback(hciReplies, true); break; default: flag = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "AttReadByGrpTypeRsp"); break; } } } if (!flag && dataFound) { SendRspCallback(hciReplies, false); } return(flag); }