Esempio n. 1
0
/**
 * @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");
		}
	}
}
Esempio n. 2
0
/*
 * \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);
    }
}
Esempio n. 3
0
/**
 * @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 ");
}