Example #1
0
        public void SetAllValue()
        {
            rfstatus = ucLoRa.RFStatus.Standby;
            if (ChipVer == ucLoRa.ChipSet.RF92)
                rfm92.ApplyValue();
            else
                rfm96.ApplyValue();

            try
            {
                double num1 = (double)
                    (
                        (ChipVer != ucLoRa.ChipSet.RF92
                        ? (((uint)rfm96.RegFrMsb.Value << 16) + ((uint)rfm96.RegFrMid.Value << 8)) + (uint)rfm96.RegFrLsb.Value
                        : (((uint)rfm92.RegFrMsb.Value << 16) + ((uint)rfm92.RegFrMid.Value << 8)) + (uint)rfm92.RegFrLsb.Value
                        )
                        + 1
                    ) * (15625.0 / 256.0);
                nudRadioFreq.Value = 434000000M;	// !!! (Decimal)(num1);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            if (((ChipVer != ucLoRa.ChipSet.RF92 ? rfm96.RegTcxo.Value : rfm92.RegTcxo.Value) & 16) == 16)
            {
                rbTCXO.Checked = true;
                rbXTAL.Checked = false;
            }
            else
            {
                rbTCXO.Checked = false;
                rbXTAL.Checked = true;
            }
            if (((ChipVer != ucLoRa.ChipSet.RF92 ? rfm96.RegPaConfig.Value : rfm92.RegPaConfig.Value) & 128) == 128)
                cbPaOutput.SelectedIndex = 1;
            else
                cbPaOutput.SelectedIndex = 0;

            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                cbPaRamp.SelectedIndex = (int)rfm92.RegPaRamp.Value & 15;
                if (cbPaOutput.SelectedIndex == 1)
                {
                    if ((int)rfm92.RegPaDac.Value == 135)
                        cbOutputPower.SelectedIndex = ((int)rfm92.RegPaConfig.Value & 15) + 3;
                    else
                        cbOutputPower.SelectedIndex = (int)rfm92.RegPaConfig.Value & 15;
                }
                else
                    cbOutputPower.SelectedIndex = (int)rfm92.RegPaConfig.Value & 15;
                cbPLLBW.SelectedIndex = ((int)rfm92.RegPllHf.Value & 192) >> 6;
            }
            else
            {
                cbPaRamp.SelectedIndex = (int)rfm96.RegPaRamp.Value & 15;
                if (cbPaOutput.SelectedIndex == 1)
                {
                    if (rfm96.RegPaDac.Value == 135)
                        cbOutputPower.SelectedIndex = ((int)rfm96.RegPaConfig.Value & 15) + 3;
                    else
                        cbOutputPower.SelectedIndex = (int)rfm96.RegPaConfig.Value & 15;
                }
                else
                {
                    cbMaxOutputPower.SelectedIndex = ((int)rfm96.RegPaConfig.Value & 112) >> 4;
                    cbOutputPower.SelectedIndex = (int)rfm96.RegPaConfig.Value & 15;
                }
                cbPLLBW.SelectedIndex = ((int)rfm96.RegPllHf.Value & 192) >> 6;
            }
            byte num3 = ChipVer != ucLoRa.ChipSet.RF92 ? rfm96.RegOcp.Value : rfm92.RegOcp.Value;
            if ((num3 & 32) == 32)
            {
                rbOCPOn.Checked = true;
                rbOCPOff.Checked = false;
            }
            else
            {
                rbOCPOn.Checked = false;
                rbOCPOff.Checked = true;
            }
            switch (num3 & 0x1F)
            {
                case 0:
                case 1:
                case 2:
                case 3:
                    cbOcpTrimming.SelectedIndex = 0;
                    break;
                case 4:
                case 5:
                case 6:
                case 7:
                    cbOcpTrimming.SelectedIndex = 1;
                    break;
                case 8:
                case 9:
                case 10:
                case 11:
                    cbOcpTrimming.SelectedIndex = 2;
                    break;
                case 12:
                case 13:
                case 14:
                case 15:
                    cbOcpTrimming.SelectedIndex = 3;
                    break;
                case 16:
                case 17:
                    cbOcpTrimming.SelectedIndex = 4;
                    break;
                case 18:
                case 19:
                    cbOcpTrimming.SelectedIndex = 5;
                    break;
                case 20:
                case 21:
                    cbOcpTrimming.SelectedIndex = 6;
                    break;
                case 22:
                case 23:
                    cbOcpTrimming.SelectedIndex = 7;
                    break;
                case 24:
                case 25:
                    cbOcpTrimming.SelectedIndex = 8;
                    break;
                case 26:
                case 27:
                case 28:
                case 29:
                case 30:
                case 31:
                    cbOcpTrimming.SelectedIndex = 9;
                    break;
            }
            if (((ChipVer != ucLoRa.ChipSet.RF92 ? (int)rfm96.RegModemConfig3.Value : (int)rfm92.RegModemConfig2.Value) & 4) == 4)
            {
                rbAGCOn.Checked = true;
                rbAGCOff.Checked = false;
                cbLnaGain.Enabled = false;
            }
            else
            {
                rbAGCOn.Checked = false;
                rbAGCOff.Checked = true;
                cbLnaGain.Enabled = true;
            }
            cbLnaGain.SelectedIndex = ((ChipVer != ucLoRa.ChipSet.RF92 ? (int)rfm96.RegLna.Value : (int)rfm92.RegLna.Value) & 224) >> 5;
            byte num4 = ChipVer != ucLoRa.ChipSet.RF92 ? rfm96.RegModemConfig2.Value : rfm92.RegModemConfig2.Value;
            cbImplicit.Enabled = true;
            switch (num4 & 0xF0)
            {
                case 176:
                    cbSF.SelectedIndex = 5;
                    break;
                case 144:
                    cbSF.SelectedIndex = 3;
                    break;
                case 160:
                    cbSF.SelectedIndex = 4;
                    break;
                case 96:
                    cbSF.SelectedIndex = 0;
                    cbImplicit.Enabled = false;
                    break;
                case 112:
                    cbSF.SelectedIndex = 1;
                    break;
                case 128:
                    cbSF.SelectedIndex = 2;
                    break;
                default:
                    cbSF.SelectedIndex = 6;
                    break;
            }
            switch ((ChipVer != ucLoRa.ChipSet.RF92 ? (int)(byte)((uint)rfm96.RegModemConfig1.Value >> 1) : (int)(byte)((uint)rfm92.RegModemConfig1.Value >> 3)) & 7)
            {
                case 2:
                    cbCR.SelectedIndex = 1;
                    break;
                case 3:
                    cbCR.SelectedIndex = 2;
                    break;
                case 4:
                    cbCR.SelectedIndex = 3;
                    break;
                default:
                    cbCR.SelectedIndex = 0;
                    break;
            }
            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                switch (rfm92.RegModemConfig1.Value & 0xC0)
                {
                    case 64:
                        cbBW.SelectedIndex = 1;
                        break;
                    case 128:
                        cbBW.SelectedIndex = 2;
                        break;
                    default:
                        cbBW.SelectedIndex = 0;
                        break;
                }
            }
            else if (rbTCXO.Checked)
            {
                switch (rfm96.RegModemConfig1.Value & 0xF0)
                {
                    case 128:
                        cbBW.SelectedIndex = 8;
                        break;
                    case 144:
                        cbBW.SelectedIndex = 9;
                        break;
                    case 80:
                        cbBW.SelectedIndex = 5;
                        break;
                    case 96:
                        cbBW.SelectedIndex = 6;
                        break;
                    case 32:
                        cbBW.SelectedIndex = 2;
                        break;
                    case 48:
                        cbBW.SelectedIndex = 3;
                        break;
                    case 64:
                        cbBW.SelectedIndex = 4;
                        break;
                    case 0:
                        cbBW.SelectedIndex = 0;
                        break;
                    case 16:
                        cbBW.SelectedIndex = 1;
                        break;
                    default:
                        cbBW.SelectedIndex = 7;
                        break;
                }
            }
            else
            {
                switch (rfm96.RegModemConfig1.Value & 0xF0)
                {
                    case 128:
                        cbBW.SelectedIndex = 2;
                        break;
                    case 144:
                        cbBW.SelectedIndex = 3;
                        break;
                    case 96:
                        cbBW.SelectedIndex = 0;
                        break;
                    default:
                        cbBW.SelectedIndex = 1;
                        break;
                }
            }
            nudRxTimeOut.Value = ChipVer != ucLoRa.ChipSet.RF92 ? (Decimal)(((int)rfm96.RegModemConfig2.Value & 3) * 256 + (int)rfm96.RegSymbTimeoutLsb.Value) : (Decimal)(((int)rfm92.RegModemConfig2.Value & 3) * 256 + (int)rfm92.RegSymbTimeoutLsb.Value);
            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                if ((rfm92.RegModemConfig1.Value & 4) == 4)
                {
                    cbImplicit.Checked = true;
                    nudImplicitRxLength.Value = (Decimal)rfm92.RegPayloadLength.Value;
                }
                else
                {
                    cbImplicit.Checked = false;
                    nudImplicitRxLength.Value = (Decimal)rfm96.RegPayloadLength.Value;
                }
            }
            else
                cbImplicit.Checked = ((int)rfm96.RegModemConfig1.Value & 1) == 1;
            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                if ((rfm92.RegModemConfig1.Value & 1) == 1)
                {
                    rbLROptimizeOn.Checked = true;
                    rbLROptimizeOff.Checked = false;
                }
                else
                {
                    rbLROptimizeOn.Checked = false;
                    rbLROptimizeOff.Checked = true;
                }
            }
            else if ((rfm96.RegModemConfig3.Value & 8) == 8)
            {
                rbLROptimizeOn.Checked = true;
                rbLROptimizeOff.Checked = false;
            }
            else
            {
                rbLROptimizeOn.Checked = false;
                rbLROptimizeOff.Checked = true;
            }
            nudPreambleLength.Value = ChipVer != ucLoRa.ChipSet.RF92 ? (Decimal)((int)rfm96.RegPreambleMsb.Value * 256 + (int)rfm96.RegPreambleLsb.Value) : (Decimal)((int)rfm92.RegPreambleMsb.Value * 256 + (int)rfm92.RegPreambleLsb.Value);
            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                if ((rfm92.RegModemConfig1.Value & 2) == 2)
                {
                    rbPayloadCRCOn.Checked = true;
                    rbPayloadCRCOff.Checked = false;
                }
                else
                {
                    rbPayloadCRCOn.Checked = false;
                    rbPayloadCRCOff.Checked = true;
                }
            }
            else if ((rfm96.RegModemConfig2.Value & 4) == 4)
            {
                rbPayloadCRCOn.Checked = true;
                rbPayloadCRCOff.Checked = false;
            }
            else
            {
                rbPayloadCRCOn.Checked = false;
                rbPayloadCRCOff.Checked = true;
            }
            byte num5 = ChipVer != ucLoRa.ChipSet.RF92 ? rfm96.RegIrqFlagsMask.Value : rfm92.RegIrqFlagsMask.Value;
            if ((num5 & 0x80) == 0x80)
            {
                cbRxTimeOut.Checked = true;
                RxTimeOutLed.LedColor = Color.Red;
            }
            else
            {
                cbRxTimeOut.Checked = false;
                RxTimeOutLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x40) == 0x40)
            {
                cbRxDone.Checked = true;
                RxDoneLed.LedColor = Color.Red;
            }
            else
            {
                cbRxDone.Checked = false;
                RxDoneLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x20) == 0x20)
            {
                cbCRCError.Checked = true;
                CRCErrorLed.LedColor = Color.Red;
            }
            else
            {
                cbCRCError.Checked = false;
                CRCErrorLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x10) == 0x10)
            {
                cbValidHeader.Checked = true;
                ValidHeaderLed.LedColor = Color.Red;
            }
            else
            {
                cbValidHeader.Checked = false;
                ValidHeaderLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x08) == 0x08)
            {
                cbTxDone.Checked = true;
                TxDoneLed.LedColor = Color.Red;
            }
            else
            {
                cbTxDone.Checked = false;
                TxDoneLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x04) == 0x04)
            {
                cbCADDone.Checked = true;
                CADDoneLed.LedColor = Color.Red;
            }
            else
            {
                cbCADDone.Checked = false;
                CADDoneLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x02) == 0x02)
            {
                cbFHSSChannel.Checked = true;
                FHSSChannelLed.LedColor = Color.Red;
            }
            else
            {
                cbFHSSChannel.Checked = false;
                FHSSChannelLed.LedColor = Color.Lime;
            }
            if ((num5 & 0x01) == 0x01)
            {
                cbCADDetect.Checked = true;
                CADDetectLed.LedColor = Color.Red;
            }
            else
            {
                cbCADDetect.Checked = false;
                CADDetectLed.LedColor = Color.Lime;
            }
        }
Example #2
0
        public bool EntryTx()
        {
            byte data = 0;

            ConfigRF();
            ClearIrq();
            byte txData = GetTxData(bbPayload.Text);
            if (txData != 0)
            {
                rfstatus = ucLoRa.RFStatus.Transmitter;
                if (ChipVer == ucLoRa.ChipSet.RF92)
                {
                    ftdi.SendByte(rfm92.RegIrqFlagsMask.Address, rfm92.RegIrqFlagsMask.Value);
                    rfm92.RegPayloadLength.Value = txData;
                    ftdi.SendByte(rfm92.RegPayloadLength.Address, rfm92.RegPayloadLength.Value);
                    ftdi.ReadByte(rfm92.RegFifoTxBaseAddr.Address, ref data);
                    rfm92.RegFifoAddrPtr.Value = data;
                    ftdi.SendByte(rfm92.RegFifoAddrPtr.Address, rfm92.RegFifoAddrPtr.Value);
                    if (ftdi.SendBytes(rfm92.RegFifo.Address, TxBuf, txData))
                    {
                        rfm92.RegOpMode.Value &= 248;
                        rfm92.RegOpMode.Value |= (byte)rfstatus;
                        ftdi.SendByte(rfm92.RegOpMode.Address, rfm92.RegOpMode.Value);
                    }
                    else
                    {
                        rfstatus = ucLoRa.RFStatus.Standby;
                        rfm92.RegOpMode.Value &= 248;
                        rfm92.RegOpMode.Value |= (byte)rfstatus;
                        ftdi.LedOff();
                        return false;
                    }
                }
                else
                {
                    ftdi.SendByte(rfm96.RegIrqFlagsMask.Address, rfm96.RegIrqFlagsMask.Value);
                    rfm96.RegPayloadLength.Value = txData;
                    ftdi.SendByte(rfm96.RegPayloadLength.Address, rfm96.RegPayloadLength.Value);
                    ftdi.ReadByte(rfm96.RegFifoTxBaseAddr.Address, ref data);
                    rfm96.RegFifoAddrPtr.Value = data;
                    ftdi.SendByte(rfm96.RegFifoAddrPtr.Address, rfm96.RegFifoAddrPtr.Value);
                    ftdi.ReadByte(rfm96.RegOpMode.Address, ref data);
                    rfm96.RegOpMode.Value = (byte)((data & 248) | (byte)rfstatus);
                    if (nudRadioFreq.Value < new Decimal(525000000))
                        rfm96.RegOpMode.Value |= 8;
                    else
                        rfm96.RegOpMode.Value &= 247;
                    if (ftdi.SendBytes(rfm96.RegFifo.Address, TxBuf, txData))
                    {
                        ftdi.SendByte(rfm96.RegOpMode.Address, rfm96.RegOpMode.Value);
                    }
                    else
                    {
                        rfstatus = ucLoRa.RFStatus.Standby;
                        rfm96.RegOpMode.Value &= 248;
                        rfm96.RegOpMode.Value |= (byte)rfstatus;
                        ftdi.LedOff();
                        return false;
                    }
                }
                return true;
            }
            MessageBox.Show("No data!");
            return false;
        }
Example #3
0
        public bool EntryTxTest()
        {
            byte data = 0;
            TestConfigRF();
            rfstatus = ucLoRa.RFStatus.TxTest;

            if (ChipVer == ucLoRa.ChipSet.RF92)
            {
                ftdi.ReadByte(rfm92.RegOpMode.Address, ref data);
                rfm92.RegOpMode.Value = (byte)((data & 152) | 32 | (byte)rfstatus);
                ftdi.SendByte(rfm92.RegOpMode.Address, rfm92.RegOpMode.Value);
                ftdi.RfDataOut();
                ftdi.RfDataHigh();
                Thread.Sleep(10);
                data = 0;
                ftdi.ReadByte(62, ref data);
                return ((data & 160) == 160);
            }

            ftdi.ReadByte(rfm96.RegOpMode.Address, ref data);
            rfm96.RegOpMode.Value = (byte)((data & 152) | 32 | (byte)rfstatus);
            if (nudRadioFreq.Value < new Decimal(525000000))
                rfm96.RegOpMode.Value |= 8;
            else
                rfm96.RegOpMode.Value &= 247;

            ftdi.SendByte(rfm96.RegOpMode.Address, rfm96.RegOpMode.Value);
            ftdi.RfDataOut();
            ftdi.RfDataHigh();

            Thread.Sleep(10);
            data = 0;
            ftdi.ReadByte(62, ref data);
            return ((data & 160) == 160);
        }
Example #4
0
 public void EntryStandby()
 {
     byte data = 0;
     rfstatus = ucLoRa.RFStatus.Standby;
     if (ChipVer == ucLoRa.ChipSet.RF92)
     {
         ftdi.ReadByte(rfm92.RegOpMode.Address, ref data);
         rfm92.RegOpMode.Value = (byte)((data & 248) | (byte)rfstatus);
         ftdi.SendByte(rfm92.RegOpMode.Address, rfm92.RegOpMode.Value);
     }
     else
     {
         ftdi.ReadByte(rfm96.RegOpMode.Address, ref data);
         rfm96.RegOpMode.Value = (byte)((data & 248) | (byte)rfstatus);
         if (nudRadioFreq.Value < new Decimal(525000000))
             rfm96.RegOpMode.Value |= 8;
         else
             rfm96.RegOpMode.Value &= 247;
         ftdi.SendByte(rfm96.RegOpMode.Address, rfm96.RegOpMode.Value);
     }
 }
Example #5
0
        private void RxChkTimer_Tick(object sender, EventArgs e)
        {
            byte data = 0;
            if (rfstatus == ucLoRa.RFStatus.Receiver || rfstatus == ucLoRa.RFStatus.Transmitter || rfstatus == ucLoRa.RFStatus.CADdetect)
            {
                lock (syncThread)
                {
                    RxChkTimer.Enabled = false;
                    if (ChipVer == ucLoRa.ChipSet.RF92)
                        ftdi.ReadByte(rfm92.RegIrqFlags.Address, ref data);
                    else
                        ftdi.ReadByte(rfm96.RegIrqFlags.Address, ref data);

                    UpdataLedStatus(data);

                    if (ChipVer == ucLoRa.ChipSet.RF92)
                    {
                        if ((data & 0x40) == 0x40)
                        {
                            ++PktRxCnt;
                            RFM92_RxDone();
                            UpdataCnt();
                            if (rbGoCAD.Checked)
                                EntryCAD();
                        }
                        if ((data & 0x08) == 0x08)
                        {
                            ClearIrq();
                            EntryStandby();
                            ++PktTxCnt;
                            tbTxPktCnt.Text = PktTxCnt.ToString();
                            TxInterTimer.Interval = (int)nudTxDelay.Value;
                            TxInterTimer.Enabled = true;
                            UpdataCnt();
                        }
                        if ((data & 0x01) == 0x01)
                        {
                            rfstatus = ucLoRa.RFStatus.Receiver;
                            TxInterTimer.Enabled = false;
                            data &= 251;
                            ClearIrq();
                            EntryRx();
                            ChkPllLock();
                            ftdi.RxLedOn();
                        }
                        if ((data & 0x04) == 0x04)
                        {
                            ClearIrq();
                            EntrySleep();
                            ftdi.LedOff();
                            TxInterTimer.Interval = (int)nudTxDelay.Value;
                            TxInterTimer.Enabled = true;
                        }
                    }
                    else
                    {
                        if ((data & 0x40) == 0x40)
                        {
                            ++PktRxCnt;
                            RFM96_RxDone();
                            UpdataCnt();
                            if (rbGoCAD.Checked)
                                EntryCAD();
                        }
                        if ((data & 0x08) == 0x08)
                        {
                            ClearIrq();
                            EntryStandby();
                            ++PktTxCnt;
                            tbTxPktCnt.Text = PktTxCnt.ToString();
                            TxInterTimer.Interval = (int)nudTxDelay.Value;
                            TxInterTimer.Enabled = true;
                            UpdataCnt();
                        }
                        if ((data & 0x01) == 0x01)
                        {
                            rfstatus = ucLoRa.RFStatus.Receiver;
                            TxInterTimer.Enabled = false;
                            data &= 251;
                            ClearIrq();
                            EntryRx();
                            ChkPllLock();
                            ftdi.RxLedOn();
                        }
                        if ((data & 0x04) == 0x04)
                        {
                            ClearIrq();
                            EntrySleep();
                            ftdi.LedOff();
                            TxInterTimer.Interval = (int)nudTxDelay.Value;
                            TxInterTimer.Enabled = true;
                        }
                    }
                    RxChkTimer.Enabled = true;
                }
            }
            else
                UpdataLedStatus(0);
        }
Example #6
0
 public bool EntryRx()
 {
     byte data = 0;
     ConfigRF();
     ClearIrq();
     rfstatus = ucLoRa.RFStatus.Receiver;
     if (ChipVer == ucLoRa.ChipSet.RF92)
     {
         ftdi.SendByte(rfm92.RegIrqFlagsMask.Address, rfm92.RegIrqFlagsMask.Value);
         ftdi.ReadByte(rfm92.RegFifoRxBaseAddr.Address, ref data);
         rfm92.RegFifoAddrPtr.Value = data;
         ftdi.SendByte(rfm92.RegFifoAddrPtr.Address, rfm92.RegFifoAddrPtr.Value);
         if (cbImplicit.Checked)
         {
             rfm92.RegPayloadLength.Value = (byte)nudImplicitRxLength.Value;
             ftdi.SendByte(rfm92.RegPayloadLength.Address, rfm92.RegPayloadLength.Value);
         }
         if (cbSF.SelectedIndex == 0)
         {
             ftdi.ReadByte(49, ref data);
             ftdi.SendByte(49, (byte)((data & 248) | 5));
             ftdi.SendByte(55, 12);
         }
         ftdi.ReadByte(rfm92.RegOpMode.Address, ref data);
         rfm92.RegOpMode.Value = (byte)((data & 248) | (byte)rfstatus);
         ftdi.SendByte(rfm92.RegOpMode.Address, rfm92.RegOpMode.Value);
         Thread.Sleep(5);
         ftdi.ReadByte(rfm92.RegModemStat.Address, ref data);
         return ((data & 4) == 4);
     }
     ftdi.SendByte(rfm96.RegIrqFlagsMask.Address, rfm96.RegIrqFlagsMask.Value);
     ftdi.ReadByte(rfm96.RegFifoRxBaseAddr.Address, ref data);
     rfm96.RegFifoAddrPtr.Value = data;
     ftdi.SendByte(rfm96.RegFifoAddrPtr.Address, rfm96.RegFifoAddrPtr.Value);
     if (cbImplicit.Checked)
     {
         rfm96.RegPayloadLength.Value = (byte)nudImplicitRxLength.Value;
         ftdi.SendByte(rfm96.RegPayloadLength.Address, rfm96.RegPayloadLength.Value);
     }
     if (cbSF.SelectedIndex == 0)
     {
         byte data3 = 0;
         ftdi.ReadByte(49, ref data3);
         data3 &= 248;
         data3 |= 5;
         ftdi.SendByte(49, data3);
         ftdi.SendByte(55, 12);
     }
     ftdi.ReadByte(rfm96.RegOpMode.Address, ref data);
     rfm96.RegOpMode.Value = (byte)((data & 248) | (byte)rfstatus);
     if (nudRadioFreq.Value < new Decimal(525000000))
         rfm96.RegOpMode.Value |= 8;
     else
         rfm96.RegOpMode.Value &= 247;
     ftdi.SendByte(rfm96.RegOpMode.Address, rfm96.RegOpMode.Value);
     Thread.Sleep(5);
     ftdi.ReadByte(rfm96.RegModemStat.Address, ref data);
     return (data & 4) == 4;
 }
Example #7
0
 public void EntryLoRa()
 {
     rfstatus = ucLoRa.RFStatus.Sleep;
     if (ChipVer == ucLoRa.ChipSet.RF92)
     {
         rfm92.RegOpMode.Value = (byte)(0x80 | (int)rfstatus);
         ftdi.SendByte(rfm92.RegOpMode.Address, rfm92.RegOpMode.Value);
     }
     else
     {
         rfm96.RegOpMode.Value |= (byte)(0x80 | (int)rfstatus);
         if (nudRadioFreq.Value < new Decimal(525000000))
             rfm96.RegOpMode.Value |= 8;
         else
             rfm96.RegOpMode.Value &= 0xF7;
         ftdi.SendByte(rfm96.RegOpMode.Address, rfm96.RegOpMode.Value);
     }
 }
Example #8
0
        private void bSwitch_Click(object sender, EventArgs e)
        {
            if (bSwitch.Text == "Start")
            {
                bSwitch.Text = "Stop";
                rbGoTx.Enabled = false;
                rbGoRx.Enabled = false;
                rbGoSleep.Enabled = false;
                rbGoCAD.Enabled = false;
                rbGoRxTest.Enabled = false;
                rbGoTxTest.Enabled = false;
                PktTxCnt = 0U;
                PktRxCnt = 0U;
                tbTxPktCnt.Text = "0";

                if (rbGoTx.Checked)
                {
                    ClearLedStatus();
                    if (EntryTx())
                    {
                        ChkPllLock();
                        rfstatus = ucLoRa.RFStatus.Transmitter;
                        RxChkTimer.Enabled = true;
                        ftdi.TxLedOn();
                    }
                    else
                    {
                        bSwitch.Text = "Start";
                        rfstatus = ucLoRa.RFStatus.Standby;
                        rbGoTx.Enabled = true;
                        rbGoRx.Enabled = true;
                        RxChkTimer.Enabled = false;
                        TxInterTimer.Enabled = false;
                        EntryStandby();
                        ftdi.LedOff();
                    }
                }
                else if (rbGoRx.Checked)
                {
                    bbPayload.Clear();
                    rfstatus = ucLoRa.RFStatus.Receiver;
                    ClearLedStatus();
                    EntryRx();
                    ChkPllLock();
                    RxChkTimer.Enabled = true;
                    ftdi.RxLedOn();
                }
                else if (rbGoCAD.Checked)
                {
                    bbPayload.Clear();
                    rfstatus = ucLoRa.RFStatus.CADdetect;
                    ClearLedStatus();
                    EntryCAD();
                    RxChkTimer.Enabled = true;
                    ftdi.RxLedOn();
                }
                else if (rbGoRxTest.Checked)
                {
                    bbPayload.Clear();
                    ClearLedStatus();
                    EntryRxTest();
                    RxChkTimer.Enabled = false;
                    ftdi.RxLedOn();
                }
                else if (rbGoTxTest.Checked)
                {
                    bbPayload.Clear();
                    ClearLedStatus();
                    EntryTxTest();
                    RxChkTimer.Enabled = false;
                    ftdi.TxLedOn();
                }
                else
                {
                    bbPayload.Clear();
                    RxChkTimer.Enabled = false;
                    rfstatus = ucLoRa.RFStatus.Sleep;
                    EntrySleep();
                    ClearLedStatus();
                }
            }
            else
            {
                bSwitch.Text = "Start";
                rfstatus = ucLoRa.RFStatus.Standby;
                rbGoTx.Enabled = true;
                rbGoRx.Enabled = true;
                rbGoSleep.Enabled = true;
                rbGoCAD.Enabled = true;
                rbGoRxTest.Enabled = true;
                rbGoTxTest.Enabled = true;
                RxChkTimer.Enabled = false;
                TxInterTimer.Enabled = false;
                EntryStandby();
                ftdi.LedOff();
                ClearLedStatus();
            }
        }