/** * @brief Application task */ static void app_task(void) { int8_t input_char; /* Check for incoming characters from terminal program. */ input_char = sio2host_getchar_nowait(); if (input_char != -1) { if (nwk_stack_idle()) { handle_input((uint8_t)toupper(input_char)); } else { printf("Network stack is busy \r\n"); } } }
/* * \brief Application task handling Range Measurement when the node is in * * RANGE_TEST_TX_OFF state, where no TX is enabled and only RX is ON */ void range_test_tx_off_task(void) { int char_received; uint8_t key_press; /* See if any character received on the UART */ char_received = sio2host_getchar_nowait(); /* Check for any key press */ key_press = app_debounce_button(); if (key_press != 0) { /* key press detected - so change to state RANGE_TEST_TX_OFF */ set_main_state(RANGE_TEST_TX_ON, 0); } else if (char_received != -1) { print_event(PRINT_RANGE_MEASURE_STATSTICS); } }
/** * @brief Prints the sub menu for the channel agility. */ static void print_sub_mode_ch_ag_setup(void) { int8_t input_char; uint8_t input; printf("\n"); printf( "Configuration of channel agility, select a configration parameter\r\n"); printf("(Scan interval > 4*scan duration)\r\n\r\n"); printf("(F) : Noise threshold, current value: %d\r\n", nwk_Private_ChAgEdThreshold); printf("(G) : Scan interval, current value: 0x%.8lX\r\n", nwk_Private_ChAgScanInterval); printf("(E) : Scan duration, current value: %d\r\n", nwk_ScanDuration); printf(">\r\n"); /* Check for incoming characters from terminal program. */ while (1) { input_char = sio2host_getchar_nowait(); if (input_char != -1) { break; } } switch (toupper(input_char)) { case 'F': /* Noise Threshold */ { char input_char2[3] = {0, 0, 0}; uint8_t threshold; printf( "Enter new noise threshold (Valid Range:0 = -91dBm to 84 = -35dBm).\r\n"); printf("Default: 10 = -80 dBm, new value: \r\n"); for (uint8_t i = 0; i < 2; i++) { input = (char)sio2host_getchar(); if (isdigit(input)) { input_char2[i] = input; } else if (input == 0x0D) { break; } else { printf("Invalid value. \r\n\r\n"); printf( "> Press Enter to return to main menu:\r\n "); return; } } threshold = atol(input_char2); if (threshold <= 84) { nlme_set_request(nwkPrivateChAgEdThreshold, 0, &threshold, (FUNC_PTR)nlme_set_confirm ); } else { printf("Invalid threshold value. \r\n\r\n"); printf("> Press Enter to return to main menu:\r\n "); return; } } break; case 'G': /* Scan interval */ { char input_char2[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; char input_char3[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; uint32_t threshold = 0; printf( "Enter new scan interval (0x00000000 ... 0xFFFFFFFF), enter 32-bit value \r\n"); printf( "Default: 0x00393870 symbols = 60 sec, new value: 0x \r\n"); for (uint8_t i = 0; i < 8; i++) { input = (char)sio2host_getchar(); input = (uint8_t)toupper(input); if (((input >= '0') && (input <= '9')) || ((input >= 'A') && (input <= 'F'))) { input_char2[i] = input; } else { if (input == 0x0D) { break; } else { printf("Invalid value. \r\n\r\n"); printf( "> Press Enter to return to main menu:\r\n "); return; } } } for (uint8_t i = 7; i > 0; i--) { if (input_char2[i] != 0x00) { memcpy(&input_char3[7 - i], input_char2, i + 1); break; } } for (uint8_t i = 0; i < 8; i++) { if (input_char3[i] != 0x00) { if ((input_char3[i] >= '0') && (input_char3[i] <= '9')) { input_char3[i] -= '0'; } else { input_char3[i] -= 55; } threshold += (uint32_t)input_char3[i] << ((7 - i) * 4); } } nlme_set_request(nwkPrivateChAgScanInterval, 0, (uint8_t *)&threshold, (FUNC_PTR)nlme_set_confirm ); } break; case 'E': { char input_char2[3] = {0, 0, 0}; uint8_t scan_dur; printf( "Enter new scan duration (0 = 30 msec, 6 = 1 sec, 14 = 14 min).\r\n"); printf("Default: 6 = 1 sec, new value: \r\n"); for (uint8_t i = 0; i < 2; i++) { input = (char)sio2host_getchar(); if (isdigit(input)) { input_char2[i] = input; } else if (input == 0x0D) { break; } else { printf("Invalid value. \r\n\r\n"); printf( "> Press Enter to return to main menu:\r\n "); return; } } scan_dur = atol(input_char2); if ((scan_dur >= 0) && (scan_dur <= 14)) { nlme_set_request(nwkScanDuration, 0, &scan_dur, (FUNC_PTR)nlme_set_confirm ); } else { printf("Invalid value. \r\n\r\n"); printf("> Press Enter to return to main menu:\r\n "); return; } } break; default: printf("Invalid input\r\n"); } printf("\r\n\r\n"); printf("> Press Enter to return to main menu:\r\n "); }