Esempio n. 1
0
        public void DataRequest(
            UInt16 targetAddr,
            ref Frame sdu,
            Byte sduHandle,
            DataConfirmHandler handler)
        {
            if (targetAddr == _addrShort)
            {
                // deliver frame to ourself
                if (handler != null)
                    handler.Invoke(_net, sduHandle, Status.Success);

                _data.HandleDataIndication(targetAddr, targetAddr, ref sdu);
            }
            else
            {
                // encapsulate and sent as 6LoWPAN
                Message.Data data = new Message.Data();
                if (data.WriteToFrameHeader(sdu))
                {
                    DataRequest6LoWPAN(targetAddr, ref sdu, sduHandle, handler);
                }
                else
                {
                    if (handler != null)
                        handler.Invoke(_net, sduHandle, Status.InvalidFrame);
                }
            }

            Frame.Release(ref sdu);
        }