O7/rss/include/acc_rss_assembly_test.h

228 lines
6.6 KiB
C

// Copyright (c) Acconeer AB, 2019-2022
// All rights reserved
#ifndef ACC_RSS_ASSEMBLY_TEST_H_
#define ACC_RSS_ASSEMBLY_TEST_H_
#include "acc_definitions_common.h"
#include <stdbool.h>
#define ACC_RSS_ASSEMBLY_TEST_MAX_NUMBER_OF_TESTS (20U)
/**
* @defgroup Assembly_test Assembly test
* @ingroup RSS
*
* @brief RSS Assembly test
*
* @{
*/
/**
* @brief The result of an assembly test run
*/
typedef struct
{
const char *test_name;
bool test_passed;
} acc_rss_assembly_test_result_t;
/**
* @brief Assembly test configuration container
*/
struct acc_rss_assembly_test_configuration;
typedef struct acc_rss_assembly_test_configuration *acc_rss_assembly_test_configuration_t;
/**
* @brief Create a configuration for an assembly test run
*
* @return An assembly test configuration, NULL if creation was not possible
*/
acc_rss_assembly_test_configuration_t acc_rss_assembly_test_configuration_create(void);
/**
* @brief Destroy an assembly test configuration
*
* The assembly test configuration reference is set to NULL after destruction.
*
* @param[in] configuration The configuration to destroy, set to NULL
*/
void acc_rss_assembly_test_configuration_destroy(acc_rss_assembly_test_configuration_t *configuration);
/**
* @brief Set the sensor id
*
* @param[in] configuration An assembly test configuration
* @param[in] sensor_id The sensor id to set
*/
void acc_rss_assembly_test_configuration_sensor_set(acc_rss_assembly_test_configuration_t configuration, acc_sensor_id_t sensor_id);
/**
* @brief Get the sensor id that is configured
*
* @param[in] configuration An assembly test configuration
* @return Sensor id
*/
acc_sensor_id_t acc_rss_assembly_test_configuration_sensor_get(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the sensor communication read test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_read_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the sensor communication read test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_read_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the sensor communication write and read test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_write_read_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the sensor communication write and read test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_write_read_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enalbe the sensor communication interrupt test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_interrupt_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the sensor communication interrupt test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_interrupt_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the sensor communication hibernate test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_hibernate_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the sensor communication hibernate test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_communication_hibernate_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the supply test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_supply_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the supply test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_supply_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the clock test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_clock_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the clock test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_clock_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Enable the power cycle test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_power_cycle_test_enable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable the power cycle test
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_power_cycle_test_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Disable all tests
*
* @param[in] configuration An assembly test configuration
*/
void acc_rss_assembly_test_configuration_all_tests_disable(acc_rss_assembly_test_configuration_t configuration);
/**
* @brief Run assembly test
*
* This function executes a suite of tests suitable for PCB assembly testing.
*
* @details The caller need to allocate an array of assembly test results of at least the size
* of ACC_RSS_ASSEMBLY_TEST_MAX_NUMBER_OF_TESTS. The array size is to be provided in the
* nr_of_test_results parameter. If the size is not sufficiently large the test will
* fail.
*
* If a test fails to execute the return value will be set to false.
* If a test cannot pass its test limits the test_passed member of test_results will be
* set to false but the return value of this function will still be true.
*
* @param[in] test_configuration The test configuration
* @param[out] test_results Reference to struct where the test results will be stored
* @param[in,out] nr_of_test_results Input is the maximum number of items in the results array.
* Output is the actual number of test results available after
* the execution of the tests.
* @return True if successfully run, false otherwise
*/
bool acc_rss_assembly_test(acc_rss_assembly_test_configuration_t test_configuration, acc_rss_assembly_test_result_t *test_results,
uint16_t *nr_of_test_results);
/**
* @}
*/
#endif