Exemplo n.º 1
0
        public bool RadioCheck(RadioID toCheck, ref float rssi)
        {
            CSBKBurst     burst   = new RadioCheck(this.ID, toCheck);
            RadioCall     call    = DataCall.CSBKRadioCall(6, false, this.ID, toCheck, burst);
            float         myRSSI  = 0.0F;
            SemaphoreSlim signal  = new SemaphoreSlim(0, 1);
            CallHander    handler = new CallHander((sender, e) => {
                if (e.Call.IsAudio)
                {
                    return;
                }
                DataCall intcall = (DataCall)e.Call;
                if (intcall.From.Equals(toCheck) && intcall.To.Equals(this.myID) && intcall.DataType == CallDataType.RadioCheckAck)
                {
                    myRSSI    = intcall.RSSI;
                    e.Handled = true;
                    signal.Release();
                }
            });

            this.InternalCallHandler += handler;
            this.SendCall(call);
            if (signal.Wait(5000) == false)
            {
                this.InternalCallHandler -= handler;
                return(false);
            }
            this.InternalCallHandler -= handler;
            rssi = myRSSI;
            return(true);
        }
Exemplo n.º 2
0
 public void SendCall(RadioCall call)
 {
     UserPacket[] packets = call.ToPackets(this.myID);
     foreach (UserPacket p in packets)
     {
         this.SendPacketToRestChannel(p);
         Thread.Sleep(60); //This seems to be the minimum time to get this to work correctly
     }
 }
Exemplo n.º 3
0
 public CallEventArgs(RadioCall call) : base()
 {
     this.Call = call;
 }