Exemple #1
0
        public bool GetATT_WriteRsp(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_WriteRsp attWriteRsp      = hciLeExtEvent.AttWriteRsp;
                HCIReplies.LE_ExtEventHeader            leExtEventHeader = hciLeExtEvent.Header;
                if (attWriteRsp != null && hciReplies.ObjTag != null)
                {
                    dataFound = true;
                    switch (leExtEventHeader.EventStatus)
                    {
                    case 0:
                    case 23:
                        SendRspCallback(hciReplies, true);
                        break;

                    default:
                        flag = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "AttWriteRsp");
                        break;
                    }
                }
            }
            if (!flag && dataFound)
            {
                SendRspCallback(hciReplies, false);
            }
            return(flag);
        }
Exemple #2
0
        public bool GetATT_ErrorRsp(HCIReplies hciReplies, ref bool dataFound)
        {
            dataFound = false;
            bool flag;

            if (flag = rspHdlrsUtils.CheckValidResponse(hciReplies))
            {
                HCIReplies.HCI_LE_ExtEvent hciLeExtEvent                 = hciReplies.HciLeExtEvent;
                HCIReplies.HCI_LE_ExtEvent.ATT_ErrorRsp attErrorRsp      = hciLeExtEvent.AttErrorRsp;
                HCIReplies.LE_ExtEventHeader            leExtEventHeader = hciLeExtEvent.Header;
                if (attErrorRsp != null)
                {
                    dataFound = true;
                    if (leExtEventHeader.EventStatus != 0)
                    {
                        flag = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "AttErrorRsp");
                    }
                    else
                    {
                        SendRspCallback(hciReplies, true);
                    }
                }
            }
            if (!flag && dataFound)
            {
                SendRspCallback(hciReplies, false);
            }
            return(flag);
        }
Exemple #3
0
        public bool GetATT_PrepareWriteRsp(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_PrepareWriteRsp attPrepareWriteRsp = hciLeExtEvent.AttPrepareWriteRsp;
                HCIReplies.LE_ExtEventHeader leExtEventHeader = hciLeExtEvent.Header;
                if (attPrepareWriteRsp != null)
                {
                    dataFound = true;
                    switch (leExtEventHeader.EventStatus)
                    {
                    case (byte)0:
                    case (byte)26:
                        break;

                    case (byte)23:
                        SendRspCallback(hciReplies, true);
                        break;

                    default:
                        success = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "AttPrepareWriteRsp");
                        break;
                    }
                }
            }
            if (!success && dataFound)
            {
                SendRspCallback(hciReplies, false);
            }
            return(success);
        }
Exemple #4
0
        public bool GetExtensionCommandStatus(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.GAP_HCI_ExtentionCommandStatus extentionCommandStatus = hciLeExtEvent.GapHciCmdStat;
                HCIReplies.LE_ExtEventHeader leExtEventHeader = hciLeExtEvent.Header;
                if (extentionCommandStatus != null)
                {
                    dataFound = true;
                    if (leExtEventHeader.EventStatus == 0)
                    {
                        dataFound = true;
                        flag      = true;
                    }
                    else
                    {
                        ushort opCode = extentionCommandStatus.CmdOpCode;
                        if (opCode <= 64908U)
                        {
                            #region
                            switch (opCode)
                            {
                            case 64769:
                            case 64772:
                            case 64773:
                            case 64774:
                            case 64775:
                            case 64776:
                            case 64777:
                            case 64778:
                            case 64779:
                            case 64780:
                            case 64781:
                            case 64784:
                            case 64785:
                            case 64786:
                            case 64787:
                            case 64790:
                            case 64791:
                            case 64792:
                            case 64793:
                            case 64900:
                            case 64902:
                            case 64904:
                            case 64906:
                            case 64908:
                                break;

                            default:
                                goto label_8;
                            }
                            #endregion
                        }
                        else
                        {
                            #region
                            switch (opCode)
                            {
                            case 64912:
                            case 64914:
                            case 64918:
                            case 64946:
                                break;

                            default:
                                goto label_8;
                            }
                            #endregion
                        }
                        SendRspCallback(hciReplies, true);
                        goto label_9;

label_8:
                        flag = rspHdlrsUtils.UnexpectedRspEventStatus(hciReplies, "ExtCmdStatus");
                    }
                }
            }

label_9:
            if (!flag && dataFound)
            {
                SendRspCallback(hciReplies, false);
            }
            return(flag);
        }