Пример #1
0
/** @brief Function for main application entry.
 */
int main(void)
{ 
    radio_tests_t test     = RADIO_TEST_NOP;
    radio_tests_t cur_test = RADIO_TEST_NOP;

    init();
    uart_config(TX_PIN_NUMBER, RX_PIN_NUMBER);
    uart_putstring((const uint8_t *)"RF Test\r\n");
    
    NVIC_EnableIRQ(TIMER0_IRQn);
    __enable_irq();
    
    while (true)
    {
        __WFI();
        switch (uart_get())
        {
            case 'a':
                while (true)
                {
                    uart_putstring((const uint8_t *)"Enter start channel \
                                   (two decimal digits, 00 to 80):");
                    channel_start_ = get_dec2();
                    if (channel_start_ <= 80)
                    break;
                    uart_putstring((const uint8_t *)"Channel must be between 0 and 80\r\n");
                }
                test = cur_test;
                break;

            case 'b':
                while (true)
                {
                    uart_putstring((const uint8_t *)"Enter end channel \
                                   (two decimal digits, 00 to 80):");
                    channel_end_ = get_dec2();
                    if (channel_end_ <= 80)
                    {
                        break;
                    }
                uart_putstring((const uint8_t *)"Channel must be between 0 and 80\r\n");
                }
                test = cur_test;
                break;

            case 'c':
                test = RADIO_TEST_TXCC;
                break;

            case 'd':
                while (true)
                {
                    uart_putstring((const uint8_t *)"Enter delay in ms \
                                   (two decimal digits, 01 to 99):");
                    delayms_ = get_dec2();
                    if ((delayms_ > 0) && (delayms_ < 100))   
                    {
                        break;
                    }
                    uart_putstring((const uint8_t *)"Delay must be between 1 and 99\r\n");
                }
                test = cur_test;
                break;

            case 'e':
                radio_sweep_end();
                cur_test = RADIO_TEST_NOP;
                break;

            case 'm':
                get_datarate();
                test = cur_test;
                break;

            case 'o':
                test = RADIO_TEST_TXMC;
                uart_putstring((const uint8_t *)"TX modulated carrier\r\n");
                break;

            case 'p':
                get_power();
                test = cur_test;
                break;

            case 'r':
                test = RADIO_TEST_RXSWEEP;
                uart_putstring((const uint8_t *)"RX Sweep\r\n");
                break;

            case 's':
                print_parameters();
                break;

            case 't':
                test = RADIO_TEST_TXSWEEP;
                uart_putstring((const uint8_t *)"TX Sweep\r\n");
                break;

            case 'x':
                test = RADIO_TEST_RXC;
                uart_putstring((const uint8_t *)"RX constant carrier\r\n");
                break;

            case 'h':
                // Fall through.
        
            default:
                help();
                break;
        }
    
        switch (test)
        {
            case RADIO_TEST_TXCC:
                if (sweep)
                {
                    radio_sweep_end();
                    sweep = false;
                }
                radio_tx_carrier(txpower_, mode_, channel_start_);
                cur_test = test;
                test     = RADIO_TEST_NOP;
                break;

            case RADIO_TEST_TXMC:
                if (sweep)
                {
                    radio_sweep_end();
                    sweep = false;
                }
                radio_modulated_tx_carrier(txpower_, mode_, channel_start_);
                cur_test = test;
                test     = RADIO_TEST_NOP;
                break;

            case RADIO_TEST_TXSWEEP:
                radio_tx_sweep_start(txpower_, mode_, channel_start_, channel_end_, delayms_);
                sweep    = true;
                cur_test = test;
                test     = RADIO_TEST_NOP;
                break;

            case RADIO_TEST_RXC:
                if (sweep)
                {
                    radio_sweep_end();
                    sweep = false;
                }
                radio_rx_carrier(mode_, channel_start_);
                cur_test = test;
                test     = RADIO_TEST_NOP;
                break;  

            case RADIO_TEST_RXSWEEP:
                radio_rx_sweep_start(mode_, channel_start_, channel_end_, delayms_);
                sweep    = true;
                cur_test = test;
                test     = RADIO_TEST_NOP;
                break;

            case RADIO_TEST_NOP:
                // Fall through.
            default:
                // No implementation needed.
                break;
        }
    }
}
Пример #2
0
static void radio_test(void)
{
  radio_tests_t test_radio = RADIO_TEST_NOP;   /*!< continuous radio tests to run */
  radio_tests_t cur_test = RADIO_TEST_NOP;     /*!< current selection of test */

  // do not change test while browsing menu
  if(!in_menu)
  {
    switch(current_menu_pos)
    {
      case 0:  // Start Channel number

      case 1:  // End Channel number

      case 3:  // Delay in time in ms
        test_radio = cur_test;
        break;

      case 5:  // Data rate
        if (data_rate_ == 0)
        {
            mode_ = RADIO_MODE_MODE_Nrf_250Kbit;
        }
        else if (data_rate_ == 1)
        {
            mode_ = RADIO_MODE_MODE_Nrf_1Mbit;
        }
        else
        {
            mode_ = RADIO_MODE_MODE_Nrf_2Mbit;
        }
        test_radio = cur_test;
        break;

      case 7:  // Power
        switch(txpower_menu_)
        {
          case 0:
            txpower_ =  RADIO_TXPOWER_TXPOWER_Pos4dBm;
            break;
          case 1:
            txpower_ =  RADIO_TXPOWER_TXPOWER_0dBm;
            break;
          case 2:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg4dBm;
            break;
          case 3:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg8dBm;
            break;
          case 4:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg12dBm;
            break;
          case 5:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg16dBm;
            break;
          case 6:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg20dBm;
            break;
          case 7:
          default:
            txpower_ = RADIO_TXPOWER_TXPOWER_Neg30dBm;
            break;
        }
        test_radio = cur_test;
        break;

      // START TX Carrier
      case 2:
        test_radio = RADIO_TEST_TXCC;
        break;

      // Cancel Sweep/Carrier
      case 4:
        radio_sweep_end();
        cur_test = RADIO_TEST_NOP;
        break;

      // Start modulated TX carrier
      case 6:
        test_radio = RADIO_TEST_TXMC;
        break;

      // Start RX Sweep
      case 8:
        test_radio = RADIO_TEST_RXSWEEP;
        break;

      // Start RX Sweep
      case 9:
        test_radio = RADIO_TEST_TXSWEEP;
        break;

      // Start RX carrier
      case 10:
        test_radio = RADIO_TEST_RXC;
        break;

      default:
        break;
    }
  }

  switch(test_radio)
  {
    case RADIO_TEST_TXCC:
      if (sweep)
      {
        radio_sweep_end();
        sweep = false;
      }
      radio_tx_carrier(txpower_, mode_, channel_start_);
      cur_test = test_radio;
      test_radio = RADIO_TEST_NOP;
      break;

    case RADIO_TEST_TXMC:
      if (sweep)
      {
        radio_sweep_end();
        sweep = false;
      }
      radio_modulated_tx_carrier(txpower_, mode_, channel_start_);
      cur_test = test_radio;
      test_radio = RADIO_TEST_NOP;
      break;

    case RADIO_TEST_TXSWEEP:
      radio_tx_sweep_start(channel_start_, delayms_);
      sweep = true;
      cur_test = test_radio;
      test_radio = RADIO_TEST_NOP;
      break;

    case RADIO_TEST_RXC:
      if (sweep)
      {
        radio_sweep_end();
        sweep = false;
      }
      radio_rx_carrier(channel_start_);
      cur_test = test_radio;
      test_radio = RADIO_TEST_NOP;
      break;

    case RADIO_TEST_RXSWEEP:
      radio_rx_sweep_start(channel_start_, delayms_);
      sweep = true;
      cur_test = test_radio;
      test_radio = RADIO_TEST_NOP;
      break;

    case RADIO_TEST_NOP:
    default:
      break;
  }
}