1 /* 2 * Copyright (c) 2023, Texas Instruments Incorporated 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of Texas Instruments Incorporated nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef ti_drivers_RCL_commands_adc_noise_h__include 34 #define ti_drivers_RCL_commands_adc_noise_h__include 35 36 #include <ti/drivers/rcl/RCL_Command.h> 37 #include <ti/drivers/rcl/handlers/adc_noise.h> 38 39 typedef struct RCL_CMD_ADC_NOISE_GET RCL_CmdAdcNoiseGet; 40 41 /* Command IDs */ 42 #define RCL_CMDID_ADC_NOISE_GET 0x0001 43 44 /* Max number of samples that can be collected in one session */ 45 #define RCL_ADC_NOISE_MAX_NUM_WORDS (1024) 46 47 /** 48 * @brief ADC noise command 49 * 50 * Command to collect ADC samples from radio. 51 * 52 * This command is used to collect ADC samples from the radio. The samples represent noise (random data), 53 * and is intended only to be used as input for entropy generation. 54 * 55 * If the output buffer is set to NULL, the samples must be read out by the caller before submitting a new RCL command. 56 * The location of the samples can always be read from the output-pointer, which will be updated by the RCL-handler 57 * in the case where a NULL-pointer is passed. 58 * 59 * # Data format # 60 * 61 * The data format of the output is described below 62 * 63 * | Word | word[31] | word[30..26] | word[25..21] | word[20..16] | word[15] | word[14..10] | word[9..5] | word[4..0] | 64 * | --- | --- | --- | --- | --- | --- | --- | --- | --- | 65 * | 0 | ‘0’ | IAC2 | IAC1 | IAC0 | ‘0’ | QAC2 | QAC1 | QAC0 | 66 * | 1 | ‘0’ | IAC5 | IAC4 | IAC3 | ‘0’ | QAC5 | QAC4 | QAC3 | 67 * | ... | | | | | | | | | 68 * | i | ‘0’ | IAC(3i+2) | IAC(3i+1) | IAC(3i) | ‘0’ | QAC(3i+2) | QAC(3i+1) | QAC(3i) | 69 * 70 * 71 */ 72 struct RCL_CMD_ADC_NOISE_GET 73 { 74 RCL_Command common; 75 uint32_t numWords; /*!< Number of ADC sample words to collect. Range [1..1024] */ 76 uint32_t *output; /*!< Buffer for storing ADC samples. NULL: Do not copy samples, but leave them in the LRF RAM. 77 * This pointer will be updated by the RCL-handler to point to the location in RAM where 78 * the data is stored. 79 */ 80 }; 81 82 #define RCL_CmdAdcNoiseGet_Default() \ 83 (RCL_CmdAdcNoiseGet) \ 84 { \ 85 .common = RCL_Command_Default(RCL_CMDID_ADC_NOISE_GET, \ 86 RCL_Handler_ADC_Noise_getNoise), \ 87 .numWords = RCL_ADC_NOISE_MAX_NUM_WORDS, \ 88 .output = NULL, \ 89 } 90 91 #endif // ti_drivers_RCL_commands_adc_noise_h__include 92