bool tl_isValidAckBitmap(TlMsgOutCtl tlMsgOutCtl, byte[] bitmask)
        {
            short var5 = 0;

            for (int index = 0; index < bitmask.Length; index++)
            {
                byte var7 = 1;
                byte var8 = 0;
                for (short var6 = 0; var6 < 8; var7 = var8)
                {
                    var8 = var7;
                    if ((bitmask[index] & var7) == var7)
                    {
                        if (tlMsgOutCtl.vTxBackLogCtr[var5] == 0)
                        {
                            return(false);
                        }

                        var8 = (byte)(var7 << 1);
                    }

                    ++var5;
                    if (var5 == tlMsgOutCtl.nTxFrameCnt)
                    {
                        return(true);
                    }

                    ++var6;
                }
            }
            return(true);
        }
        private short HandleControlFrame(TlMsgOutCtl tlMsgOutCtl, FlowControlFrame frame)
        {
            if (frame.ErrorCode != 0 || tlMsgOutCtl.nTxState != 0)
            {
                // Error
                return(0);
            }

            Array.Copy(frame.AckdFrameBitmask, 0, tlMsgOutCtl.vTxAckdFrameBitmask, 0, 8);
            frameValidator.MarkTransactionOkPackets(tlMsgOutCtl);

            short highestOkFrameCount = GetHighestOkFrameCnt(tlMsgOutCtl.nTxFrameCnt, tlMsgOutCtl.vTxBackLogCtr);

            Debug.WriteLine(String.Format("Highest OK Frame Count {0}", highestOkFrameCount));
            if (highestOkFrameCount == tlMsgOutCtl.nTxFrameCnt)
            {
                tlMsgOutCtl.nTxFrameCnt = 0;
                tlMsgOutCtl.nTxState    = 0;
                Debug.WriteLine(">>--------TX MSG SUCCESS----------<<");
                return(1);
            }
            else
            {
                tlMsgOutCtl.nTxLatencyMs        = (short)Math.Max(frame.TransactionLatency, 10);
                tlMsgOutCtl.nTxUnackdFrameLimit = frame.UnackdFrameLimit;
                tlMsgOutCtl.nTxState            = 2;
                Debug.WriteLine(String.Format("Waiting for {0} of {1}", highestOkFrameCount, tlMsgOutCtl.nTxFrameCnt));
                return(0);
            }
        }
        public void MarkTransactionOkPackets(TlMsgOutCtl tlMsgOutCtl)
        {
            short var4 = -1;
            byte  var2 = 1;

            for (short i = 0; i < tlMsgOutCtl.nTxFrameCnt; ++i)
            {
                if (i % 8 == 0)
                {
                    var2 = 1;
                    ++var4;
                }
                else
                {
                    var2 = (byte)(var2 << 1);
                }

                if ((tlMsgOutCtl.vTxAckdFrameBitmask[var4] & var2) == var2)
                {
                    tlMsgOutCtl.vTxBackLogCtr[i] = 255;
                }
            }
        }