/** @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; } } }
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; } }