public bool SendGATT(HCICmds.GATTCmds.GATT_ReliableWrites cmd) { bool success = true; try { if (cmd.numRequests > 5) { m_msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, string.Format("Invalid Value Entry '{0}'\nValid Range Is 1 to {1}\n", cmd.numRequests, 5)); return false; } else { int num1 = 0; SendCmds.Element[] elementArray = new SendCmds.Element[5]; if ((int)cmd.numRequests > 0) { for (int index = 0; index < (int)cmd.numRequests; ++index) { int num2 = num1 + 1 + 2 + 2; elementArray[index].temp = m_deviceFormUtils.String2Bytes_LSBMSB(cmd.writeElement[index].value, 16); if (elementArray[index].temp == null) { DisplayInvalidValue(cmd.writeElement[index].value); return false; } else num1 = num2 + elementArray[index].temp.Length; } } byte dataLength = (byte)((uint)cmd.dataLength + (uint)num1); byte[] data = new byte[(int)dataLength + 4]; int index1 = 0; bool dataErr = false; if (m_deviceFormUtils.LoadMsgHeader(ref data, ref index1, 1, cmd.opCodeValue, dataLength) && !m_dataUtils.Load16Bits(ref data, ref index1, cmd.connHandle, ref dataErr, false) && !m_dataUtils.Load8Bits(ref data, ref index1, cmd.numRequests, ref dataErr)) { if (cmd.numRequests > 0) { for (int index2 = 0; index2 < (int)cmd.numRequests; ++index2) { cmd.writeElement[index2].valueLen = (byte)elementArray[index2].temp.Length; if (!m_dataUtils.Load8Bits(ref data, ref index1, cmd.writeElement[index2].valueLen, ref dataErr)) { if (!m_dataUtils.Load16Bits(ref data, ref index1, cmd.writeElement[index2].handle, ref dataErr, false)) { if (!m_dataUtils.Load16Bits(ref data, ref index1, cmd.writeElement[index2].offset, ref dataErr, false)) { if (cmd.writeElement[index2].valueLen > 0) { if (m_dataUtils.LoadDataBytes(ref data, ref index1, elementArray[index2].temp, ref dataErr)) break; } } else break; } else break; } else break; } } if (!dataErr) TransmitCmd(cmd.cmdName, cmd.opCodeValue, data); } if (dataErr) success = HandleDataError(cmd.cmdName); } } catch (Exception ex) { success = HandleException(cmd.cmdName, ex.Message); } return success; }