Example program for EVAL-TempSense-ARDZ boards.
Dependencies: platform_drivers
Diff: main.cpp
- Revision:
- 7:3e5f6cca357e
- Parent:
- 6:0228e21af1f0
--- a/main.cpp Mon Dec 09 17:54:51 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,778 +0,0 @@ -/*************************************************************************//** - * @file main.cpp - * @brief Main application code for EVAL-TempSense-ARDZ mbed example program - * @author ssmith (sean.smith@analog.com) -****************************************************************************** -* Copyright (c) 2019 Analog Devices, Inc. -* -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* - Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright notice, -* this list of conditions and the following disclaimer in the documentation -* and/or other materials provided with the distribution. -* - Modified versions of the software must be conspicuously marked as such. -* - This software is licensed solely and exclusively for use with -* processors/products manufactured by or for Analog Devices, Inc. -* - This software may not be combined or merged with other code in any manner -* that would cause the software to become subject to terms and -* conditions which differ from those listed here. -* - Neither the name of Analog Devices, Inc. nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* - The use of this software may or may not infringe the patent rights -* of one or more patent holders. This license does not release you from -* the requirement that you obtain separate licenses from these patent -* holders to use this software. -* -* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -* NON-INFRINGEMENT, TITLE, MERCHANTABILITY AND FITNESS FOR A -* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, -* INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF CLAIMS OF -* INTELLECTUAL PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF SUBSTITUTE -* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -* 20180927-7CBSD SLA -*****************************************************************************/ -#include <cstdio> -#include <mbed.h> -#include "app_config.h" -#include <cmath> - -#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) - -#define TEMP_MIN -40 -#define TEMP_MAX 150 -#define MAX_HYST_TEMP 15 -#define MIN_HYST_TEMP 0 - -#define RESET_DELAY 500 -#define WAIT_MENU_TIME 1 -#define NOT_USED 0 - -static void print_title(void); -static void print_prompt(void); -static uint8_t select_device(); -static void print_active_device(int ext_int_value); -static int get_menu_select(uint8_t *menu_select); -static uint8_t read_temperature(); -static uint8_t set_resolution(); -static uint8_t set_op_mode(); -static uint8_t bunch_of_temps(); -static uint8_t readback_reg(); -static uint8_t reset_interface(); -static uint8_t write_to_setpoint_reg(); -static uint8_t set_fault_queue(); -static uint8_t set_ct_int_config(); -static void microcontroller_reset(); -static int input_check(int input_val, - int lowest_accepted_val, - int highest_accepted_val, - int invalid_check); - -#ifdef __cplusplus -extern "C" -{ -#endif -#include "adt7420.h" -#ifdef __cplusplus -} -#endif // __cplusplus - - -/******************************************************************************/ -/************************** Variables Declarations ****************************/ -/******************************************************************************/ - -/** - The following definitions are a requirement for the platform_driver - Pin are changed if required in the app_config.h file - ***/ -PinName slave_selects[MAX_SLAVE_SELECTS] = { SPI_CS, SPI_CSE }; -mbed::SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); -mbed::I2C i2c(I2C_SDA, I2C_SCL); - - -i2c_init_param i2c_params = { - GENERIC_I2C, // i2c type - NOT_USED, // i2c id - 100000, // i2c max speed (hz) - INTERNAL_I2C, // i2c slave address (defined in app_config.h) -}; - -spi_init_param spi_params = { - MBED, //For future ADI use - GENERIC_SPI, //For future ADI use - NOT_USED, //id - 1000000, //SPI frequency (Hz) - SPI_MODE_3, //CPOL/CPHA settings for your device - INTERNAL_SPI, //CS index for PinName (defined in app_config.h) -}; - -adt7420_init_param init_params = { - i2c_params, // I2C parameters - spi_params, // SPI parameters - NOT_USED, //Resolution setting - ACTIVE_DEVICE, //Set this in app_config.h -}; - -adt7420_dev *device; - -registers_e registers; - - -int32_t connected = -1; -uint8_t device_id = 0; - -//Configure and instantiate the UART - PB10/11 -Serial pc(USBTX, USBRX, 115200); - - - -int main() -{ - uint8_t menu_select = 0; - - print_title(); - - device_id = select_device(); - - connected = adt7420_init(&device, init_params); - - if (connected != SUCCESS) { - pc.printf(EOL EOL " Connection to device failed :(" EOL); - pc.printf(" ...Restarting application... " EOL); - wait(WAIT_MENU_TIME); - microcontroller_reset(); - } else { - pc.printf(EOL EOL " Connection to device succeeded!" EOL); - } - - while (connected == SUCCESS) { - menu_select = 0; - print_active_device(device_id); - print_prompt(); - - if (get_menu_select(&menu_select) == FAILURE) - pc.printf(EOL "***** Returning to main menu *****" EOL); - else { - switch (menu_select) { - case 1: - read_temperature(); - break; - case 2: - set_resolution(); - break; - case 3: - set_op_mode(); - break; - case 4: - bunch_of_temps(); - break; - case 5: - readback_reg(); - break; - case 6: - reset_interface(); - break; - case 7: - write_to_setpoint_reg(); - break; - case 8: - set_fault_queue(); - break; - case 9: - set_ct_int_config(); - break; - case 10: - /*Restore device registers to default values before restarting microcontroller*/ - reset_interface(); - microcontroller_reset(); - break; - default: - pc.printf("Invalid option" EOL); - break; - } - } - wait(WAIT_MENU_TIME); //wait 1 second - } -} - - -/***************************************************************************//** - * @brief Prints the title block. - *******************************************************************************/ -void print_title() -{ - pc.printf("*****************************************************************" EOL); - pc.printf("* EVAL-TempeSense-ARDZ Demonstration Program -- (mbed) *" EOL); - pc.printf("* *" EOL); - pc.printf("* This program demonstrates communication with the ADT7xx *" EOL); - pc.printf("* High-Accuracy digital temperature sensor family *" EOL); - pc.printf("* It will also work with both SPI & I2C versions *" EOL); - pc.printf("* *" EOL); - pc.printf("* Set the baud rate to 115200 select the newline terminator. *" EOL); - pc.printf("*****************************************************************" EOL); -} - -/***************************************************************************//** - * @brief Prints the "main menu" prompt to the console. - *******************************************************************************/ -void print_prompt() -{ - pc.printf(EOL EOL "Command Summary:" EOL); - pc.printf(" 1 -Read temperature" EOL); - pc.printf(" 2 -Set resolution" EOL); - pc.printf(" 3 -Set operation mode" EOL); - pc.printf(" 4 -Poll temperature" EOL); - pc.printf(" 5 -Read a register" EOL); - pc.printf(" 6 -Reset the interface" EOL); - pc.printf(" 7 -Write to a setpoint register" EOL); - pc.printf(" 8 -Set Fault Queue configuration" EOL); - pc.printf(" 9 -Set CT/INT polarity and mode" EOL); - pc.printf(" 10 -Full System Reset" EOL); - pc.printf(EOL); -} - -static int get_menu_select(uint8_t *menu_select) -{ - int invalid_check = pc.scanf("%d",(int *) menu_select); - return input_check(*menu_select, 1, 10, invalid_check); -} - -/***************************************************************************//** - * @brief - Select the serial interface (SPI/I2C) and device - * based on the part family. - * - Only one device and interface can be active. - * Example: ADT7320 - SPI (Internal or Remote device) - * ADT7420 - I2C (Internal or Remote device) - * - * @param None - * - * @return new_dev - Return device selected - * Example: 1 - Internal(Main PCB) - * 2 - Remote (External PCB) - *******************************************************************************/ -uint8_t select_device() -{ - pc.printf("Please select interface by choosing a device:" EOL); - pc.printf(" 1- ADT7320 (SPI)" EOL); - pc.printf(" 2- ADT7420 (I2C)" EOL); - pc.printf(" Select an option: "); - - int invalid_check, new_interface = 0; - invalid_check = pc.scanf("%d", &new_interface); - - //Prompts for user input while correct interface is not selected - while (input_check(new_interface, 1, 2, invalid_check) == FAILURE) { - pc.printf("Please select interface by choosing a device:" EOL); - pc.printf(" 1- ADT7320 (SPI)" EOL); - pc.printf(" 2- ADT7420 (I2C)" EOL); - pc.printf(" Select an option: "); - invalid_check = pc.scanf("%d", &new_interface); - } - pc.printf("%d", new_interface); - - switch (new_interface) { - case 1: - pc.printf(" ADT7320 sensor selected!" EOL EOL); - init_params.act_device = ID_ADT7320; - break; - case 2: - pc.printf(" ADT7420 sensor selected!" EOL EOL); - init_params.act_device = ID_ADT7420; - break; - } - - pc.printf("Available devices:" EOL); - pc.printf(" 1- Internal (Main PCB)" EOL); - pc.printf(" 2- Remote (External PCB)" EOL); - pc.printf(" Select an option: "); - - int new_dev = 0; - invalid_check = pc.scanf("%d", &new_dev); - - //Prompts for user input while correct device is not selected - while (input_check(new_dev, 1, 2, invalid_check) == FAILURE) { - pc.printf("Device select:" EOL); - pc.printf(" 1- Internal (Main PCB)" EOL); - pc.printf(" 2- Remote (External PCB)" EOL); - pc.printf(" Select an option: "); - invalid_check = pc.scanf("%d", &new_dev); - } - - pc.printf("%d", new_dev); - - switch (new_dev) { - case 1: - pc.printf(" Internal sensor selected!"); - init_params.mbed_i2c_init.slave_address = INTERNAL_I2C; - init_params.mbed_spi_init.chip_select = INTERNAL_SPI; - break; - case 2: - pc.printf(" External sensor selected!"); - init_params.mbed_i2c_init.slave_address = EXTERNAL_I2C; - init_params.mbed_spi_init.chip_select = EXTERNAL_SPI; - break; - } - - return new_dev; -} - -/***************************************************************************//** - * @brief - Reads and prints the temperature in Celsius Degree - * - * @param None - * - * @return - Return SUCCESS flag - currently unused. - *******************************************************************************/ -static uint8_t read_temperature() -{ - float temp = adt7420_get_temperature(device); - - pc.printf("Current temperature:%.3f C", temp); - return SUCCESS; -} - -/***************************************************************************//** - * @brief -Set the device resolution for 13 or 16 bits - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t set_resolution() -{ - pc.printf(" Available resolutions:" EOL); - pc.printf(" 1- 13-bit" EOL); - pc.printf(" 2- 16-bit" EOL); - pc.printf(" Select an option: "); - - int new_res, invalid_check = 0; - invalid_check = pc.scanf("%d", &new_res); - - if (input_check(new_res, 1, 2, invalid_check) == FAILURE) { - return FAILURE; - } else { - pc.printf("%d" EOL, new_res); - new_res = (new_res == 1) ? 0 : 1; - adt7420_set_resolution(device, new_res); - pc.printf("Set resolution to %d-bit", (13 + 3 * new_res)); - return SUCCESS; - } -} - -/***************************************************************************//** - * @brief - Set the device operation mode - * (Continuous conversion, One-shot, SPS, Shutdown). - * - Consult datasheet for more information. - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t set_op_mode() -{ - pc.printf(" Available operation modes:" EOL); - pc.printf(" 1- Continuous conversion mode (default)" EOL); - pc.printf(" 2- One-shot mode" EOL); - pc.printf(" 3- 1 SPS mode" EOL); - pc.printf(" 4- Shutdown" EOL); - pc.printf(" Select a mode: "); - - int new_mode, invalid_check = 0; - invalid_check = pc.scanf("%d", &new_mode); - if (input_check(new_mode, 1, 4, invalid_check) == FAILURE) { - return FAILURE; - } else { - pc.printf("%d" EOL, new_mode); - switch (new_mode) { - case 1: - adt7420_set_operation_mode(device, ADT7420_OP_MODE_CONT_CONV); - break; - case 2: - /*When One shot mode is set completes one conversion and immediately goes to shutdown mode*/ - adt7420_set_operation_mode(device, ADT7420_OP_MODE_ONE_SHOT); - pc.printf( EOL" One Shot mode enabled, device will enter shutdown mode once a conversion is complete." EOL); - pc.printf(" See page 10 in datasheet for details." EOL); - break; - case 3: - adt7420_set_operation_mode(device, ADT7420_OP_MODE_1_SPS); - break; - case 4: - adt7420_set_operation_mode(device, ADT7420_OP_MODE_SHUTDOWN); - break; - default: - pc.printf("Invalid option" EOL); - break; - } - return SUCCESS; - } -} - -/***************************************************************************//** - * @brief - Prints poll of temperature based on the frequency of readings and - * number of samples. - * - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t bunch_of_temps() -{ - pc.printf(" Enter number of desired samples: "); - int num_samples, invalid_check = 1; - - invalid_check = pc.scanf("%d", &num_samples); - if (input_check(num_samples, 1, 2000000, invalid_check) == FAILURE) { - return FAILURE; - } - pc.printf("%d" EOL, num_samples); - - pc.printf(" Enter a desired frequency in samples/sec (max 10): "); - int sample_freq = 1; - invalid_check = pc.scanf("%d", &sample_freq); - if (input_check(sample_freq, 1, 10, invalid_check) == FAILURE) { - return FAILURE; - } - sample_freq = constrain(sample_freq, 1, 10); - pc.printf("%d", sample_freq); - - uint32_t delay_sec = 1000000 / sample_freq; - - pc.printf(" Gathering %d seconds of samples" EOL, num_samples/sample_freq); - pc.printf("Press enter to continue and then press again to quit" EOL); - getchar(); - - for (int i = 0; i < num_samples; i++) { - if(pc.readable()) { - return SUCCESS; - } else { - pc.printf(" Sample:%d: Temperature:", i + 1); - float temp = adt7420_get_temperature(device); - pc.printf("%.4f" EOL, temp); - wait_us(delay_sec); - } - } - return SUCCESS; -} - -/***************************************************************************//** - * @brief - Reads back data store in device registers - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ - -static uint8_t readback_reg() -{ - pc.printf(" Available registers:" EOL); - pc.printf(" 1- Status" EOL); - pc.printf(" 2- Configuration" EOL); - pc.printf(" 3- Temperature" EOL); - pc.printf(" 4- ID" EOL); - pc.printf(" 5- Critical Temperature setpoint" EOL); - pc.printf(" 6- Hysteresis Temperature setpoint" EOL); - pc.printf(" 7- Temperature high setpoint" EOL); - pc.printf(" 8- Temperature low setpoint" EOL); - pc.printf(" Select a mode: "); - - uint16_t read_value = 0; - int new_mode, invalid_check = 0; - invalid_check = pc.scanf("%d", &new_mode); - if (input_check(new_mode, 1, 8, invalid_check) == FAILURE) { - return FAILURE; - } - pc.printf("%d" EOL, new_mode); - - switch (new_mode) { - case 1: - read_value = get_register_value(device, REG_STATUS); - break; - case 2: - read_value = get_register_value(device, REG_CONFIG); - break; - case 3: - read_value = get_register_value(device, REG_TEMP); - break; - case 4: - read_value = get_register_value(device, REG_ID); - break; - case 5: - read_value = get_register_value(device, REG_T_CRIT); - break; - case 6: - read_value = get_register_value(device, REG_HIST); - break; - case 7: - read_value = get_register_value(device, REG_T_HIGH); - break; - case 8: - read_value = get_register_value(device, REG_T_LOW); - break; - default: - break; - } - pc.printf("Read value: 0x%x" EOL, read_value); - - return SUCCESS; -} - -/***************************************************************************//** - * @brief - Resets device interface (SPI/I2C) (power-on reset) - * - * @param None - * - * @return - Return SUCCESS flag - currently unused. - *******************************************************************************/ -static uint8_t reset_interface() -{ - pc.printf(" Resetting interface..." EOL); - adt7420_reset_interface(device); - wait_us(RESET_DELAY); - return SUCCESS; -} - -/***************************************************************************//** - * @brief - Write to setpoint registers THIGH, TLOW, TCRIT and THYST. - - Values entered in Celsius and rounded to a near integer value. - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t write_to_setpoint_reg() -{ - pc.printf(" Available registers:" EOL); - pc.printf(" 1- Critical setpoint" EOL); - pc.printf(" 2- Hystersis setpoint" EOL); - pc.printf(" 3- Temperature high setpoint" EOL); - pc.printf(" 4- Temperature low setpoint" EOL); - pc.printf(" Select a mode: "); - - int new_mode, invalid_check = 0; - invalid_check = pc.scanf("%d", &new_mode); - if (input_check(new_mode, 1, 4, invalid_check) == FAILURE) { - return FAILURE; - } - pc.printf("%d" EOL, new_mode); - - float temp_c; - - if(new_mode == 2) { - pc.printf("Enter value to write (0 to 15) Celsius:"); - invalid_check = pc.scanf("%f", &temp_c); - if(input_check(temp_c, MIN_HYST_TEMP, MAX_HYST_TEMP, invalid_check) == FAILURE) { - return FAILURE; - } - } else { - pc.printf("Enter value to write (in Celsius):"); - invalid_check = pc.scanf("%f", &temp_c); - if(input_check(temp_c, TEMP_MIN, TEMP_MAX, invalid_check) == FAILURE){ - return FAILURE; - } - } - - pc.printf(" %.2f", temp_c); - - int16_t write_value; - - if(new_mode == 2) - write_value = round(temp_c); - else - write_value = round(128 * temp_c); - - switch (new_mode) { - case 1: - if (adt7420_wr_setpoint_reg(device, REG_T_CRIT, write_value) == SUCCESS) - pc.printf(EOL "0x%x successfuly written" EOL, write_value); - else - pc.printf(EOL "0x%x NOT successfuly written" EOL, write_value); - break; - case 2: - if (adt7420_wr_setpoint_reg(device, REG_HIST, write_value) == SUCCESS) - pc.printf(EOL "0x%x successfuly written (bits 7:4 are fixed at 0)" EOL, write_value); - else - pc.printf(EOL "0x%x NOT successfuly written" EOL, write_value); - break; - case 3: - if (adt7420_wr_setpoint_reg(device, REG_T_HIGH, write_value) == SUCCESS) - pc.printf(EOL "0x%x successfuly written" EOL, write_value); - else - pc.printf(EOL "0x%x NOT successfuly written" EOL, write_value); - break; - case 4: - if (adt7420_wr_setpoint_reg(device, REG_T_LOW, write_value) == SUCCESS) - pc.printf(EOL "0x%x successfuly written" EOL, write_value); - else - pc.printf(EOL "0x%x NOT successfuly written" EOL, write_value); - break; - default: - pc.printf("Invalid selection - try again." EOL); - wait(2); - break; - } - return SUCCESS; -} - -/***************************************************************************//** - * @brief - Set the number of undertemperature/overtemperature faults - * that can occur before setting the INT and CT output pins - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t set_fault_queue() -{ - pc.printf(" Available fault queue options:" EOL); - pc.printf(" 1- 1 fault (default) " EOL); - pc.printf(" 2- 2 faults" EOL); - pc.printf(" 3- 3 faults" EOL); - pc.printf(" 4- 4 faults" EOL); - pc.printf(" Select a mode: "); - - int new_fault, invalid_check = 0; - invalid_check = pc.scanf("%d", &new_fault); - if (input_check(new_fault, 1, 4, invalid_check) == FAILURE) { - return FAILURE; - } else { - pc.printf("%d" EOL, new_fault); - - switch (new_fault) - { - case 1: - adt7420_set_fault_queue(device, ADT7420_FAULT_QUEUE_1_FAULT); - break; - case 2: - adt7420_set_fault_queue(device, ADT7420_FAULT_QUEUE_2_FAULTS); - break; - case 3: - adt7420_set_fault_queue(device, ADT7420_FAULT_QUEUE_3_FAULTS); - break; - case 4: - adt7420_set_fault_queue(device, ADT7420_FAULT_QUEUE_4_FAULTS); - break; - default: - pc.printf("Invalid option" EOL); - break; - } return SUCCESS; - } -} - -/***************************************************************************//** - * @brief - Set INT/CT Outputs pins to Comparator or Interrupt mode - * - * @param None - * - * @return - Return SUCCESS/FAILURE flags - *******************************************************************************/ -static uint8_t set_ct_int_config() -{ - int new_polarity = 0; - int new_mode, invalid_check = 0; - - pc.printf(" Choose INT/CT mode:" EOL); - pc.printf(" 1- Interrupt (default) " EOL); - pc.printf(" 2- Comparator " EOL); - pc.printf(" Select a mode: "); - invalid_check = pc.scanf("%d", &new_mode); - if (input_check(new_mode, 1, 2, invalid_check) == FAILURE) { - return FAILURE; - } else { - pc.printf("%d" EOL, new_mode); - new_mode = (new_mode == 1) ? 0 : 1; - adt7420_set_ct_int_mode(device, new_mode); - } - - pc.printf(EOL " Set output polarity for Critical and Over/Under Temperature pin:" EOL); - pc.printf(" (Feature available only for internal sensors)." EOL); - - if(init_params.mbed_i2c_init.slave_address == INTERNAL_I2C || - init_params.mbed_spi_init.chip_select == INTERNAL_SPI) { - - pc.printf(" 1- Active Low (default) " EOL); - pc.printf(" 2- Active High" EOL); - pc.printf(" Select a mode: "); - - invalid_check = pc.scanf("%d", &new_polarity); - if (input_check(new_polarity, 1, 2, invalid_check) == FAILURE) { - return FAILURE; - } else { - pc.printf("%d" EOL, new_polarity); - new_polarity = (new_polarity == 1) ? 0 : 1; - adt7420_set_ct_int_polarity(device, new_polarity); - } - } - return SUCCESS; -} - -/***************************************************************************//** - * @brief Reset microcontroller - * - * @param None - * - * @return None. - *******************************************************************************/ -static void microcontroller_reset() -{ - NVIC_SystemReset(); -} - -/***************************************************************************//** - * @brief Prints the active device every time the main menu is redrawn - * - * @param external_internal_selection - External or Internal Chip Selected - * - * @return None. - *******************************************************************************/ -static void print_active_device(int external_internal_selection) -{ - const char* devices[7] = {EOL EOL " Active Device: ADT7410 I2C" , - EOL EOL " Active Device: ADT7420 I2C", - EOL EOL " Active Device: ADT7422 I2C", - EOL EOL " Active Device: ADT7310 SPI", - EOL EOL " Active Device: ADT7311 SPI", - EOL EOL " Active Device: ADT7312 SPI", - EOL EOL " Active Device: ADT7320 SPI"}; - - const char* external_internal_print[] = {" - Internal Chip " EOL, - " - External Chip " EOL }; - - pc.printf("%s %s", devices[init_params.act_device], external_internal_print[external_internal_selection - 1]); -} - -/***************************************************************************//** - * @brief Checks is an input is a digit and within valid range - * - * @param input_val - Value inputed by user - * @param lowest_accepted_val - Lowest acceptable value - * @param highest_accepted_val - Highest acceptable value - * @param invalid_check - Checks if unexpected type of data was entered in scanf - * - * @return SUCCESS/FAILURE Flags. - *******************************************************************************/ - static int input_check(int input_val, - int lowest_accepted_val, - int highest_accepted_val, - int invalid_check) - { - if(invalid_check == 0 || input_val < lowest_accepted_val || input_val > highest_accepted_val) { - pc.printf(EOL EOL "***** Invalid entry: No changes made *****" EOL ); - wait(WAIT_MENU_TIME); - return FAILURE; - } - return SUCCESS; -} \ No newline at end of file