Esempio n. 1
0
 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;
 }