Mayank Gupta / Mbed OS pelion-example-frdm

Dependencies:   FXAS21002 FXOS8700Q

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pal_configuration.h Source File

pal_configuration.h

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 // Copyright 2016-2019 ARM Ltd.
00003 //
00004 // SPDX-License-Identifier: Apache-2.0
00005 //
00006 // Licensed under the Apache License, Version 2.0 (the "License");
00007 // you may not use this file except in compliance with the License.
00008 // You may obtain a copy of the License at
00009 //
00010 //     http://www.apache.org/licenses/LICENSE-2.0
00011 //
00012 // Unless required by applicable law or agreed to in writing, software
00013 // distributed under the License is distributed on an "AS IS" BASIS,
00014 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 // See the License for the specific language governing permissions and
00016 // limitations under the License.
00017 // ----------------------------------------------------------------------------
00018 
00019 #ifndef _PAL_COFIGURATION_H
00020 #define _PAL_COFIGURATION_H
00021 #include "limits.h"
00022 
00023 #if 0
00024 // This block is useful when building on new environment and one needs to find out,
00025 // how to pass the "include-file.h" macro value via multiple layers of scripts 
00026 // and different reserved char escaping conventions.
00027 #define XSTR(x) STR(x)
00028 #define STR(x) #x
00029 
00030 #pragma message "The value of PAL_USER_DEFINED_CONFIGURATION: " XSTR(PAL_USER_DEFINED_CONFIGURATION)
00031 #endif
00032 
00033 #ifdef PAL_USER_DEFINED_CONFIGURATION
00034     #include PAL_USER_DEFINED_CONFIGURATION
00035 #else
00036     #include "sotp_fs.h"
00037 #endif
00038 
00039 /*! \file pal_configuration.h
00040 *   \brief PAL Configuration.
00041 *   This file contains PAL configuration information.
00042 *
00043 *   Following are examples of configuration included:
00044 *       1. The flags to enable or disable features.
00045 *       2. The configuration of the number of objects provided by PAL (such as the number of threads supported) or their sizes.
00046 *       3. The configuration of supported cipher suites.
00047 *       4. The configuration for flash memory usage.
00048 *       5. The configuration for the root of trust.
00049 */
00050 
00051 
00052 
00053 /* If you need any board-specific configuration, please include this define
00054 */
00055 #ifdef PAL_BOARD_SPECIFIC_CONFIG
00056     #include PAL_BOARD_SPECIFIC_CONFIG
00057 #endif
00058 
00059 
00060 /* Lets the user choose the platform configuration file.
00061     \note If the user does not specify a platform configuration file,
00062     \note PAL uses a default configuration set that can be found at \c Configs/pal_config folder
00063   */
00064 
00065 #ifdef PAL_PLATFORM_DEFINED_CONFIGURATION
00066     #include PAL_PLATFORM_DEFINED_CONFIGURATION
00067 #elif defined(__LINUX__)
00068     #include "Linux_default.h"
00069 #elif defined(__FREERTOS__)
00070     #include "FreeRTOS_default.h"
00071 #elif defined(__MBED__)
00072     #include "mbedOS_default.h"
00073 #elif defined(__SXOS__)
00074     #include "sxos_default.h"
00075 #else
00076     #error "Please specify the platform PAL_PLATFORM_DEFINED_CONFIGURATION"
00077 #endif
00078 
00079 
00080 
00081 
00082 /*
00083  * Network configuration
00084  */
00085 // PAL configuration options
00086 #ifndef PAL_NET_TCP_AND_TLS_SUPPORT
00087     #define PAL_NET_TCP_AND_TLS_SUPPORT         true //!< Add PAL support for TCP.
00088 #endif
00089 
00090 #ifndef PAL_NET_ASYNCHRONOUS_SOCKET_API
00091     #define PAL_NET_ASYNCHRONOUS_SOCKET_API     true //!< Add PAL support for asynchronous sockets.
00092 #endif
00093 
00094 #ifndef PAL_NET_DNS_SUPPORT
00095     #define PAL_NET_DNS_SUPPORT                 true //!< Add PAL support for DNS lookup.
00096 #endif
00097 
00098 #if (PAL_NET_DNS_SUPPORT == true) && !(defined(PAL_DNS_API_VERSION))
00099 #define PAL_DNS_API_VERSION 0 //!< syncronous DNS API
00100 #endif
00101 
00102 #ifndef PAL_SUPPORT_IP_V4
00103     #define PAL_SUPPORT_IP_V4                 true //!< support IPV4 as default
00104 #endif
00105 #ifndef PAL_SUPPORT_IP_V6
00106     #define PAL_SUPPORT_IP_V6                 true //!< support IPV6 as default
00107 #endif
00108 
00109 //values for PAL_NET_DNS_IP_SUPPORT
00110 #define PAL_NET_DNS_ANY          0    //!< if PAL_NET_DNS_IP_SUPPORT is set to PAL_NET_DNS_ANY pal_getAddressInfo will return the first available IPV4 or IPV6 address
00111 #define PAL_NET_DNS_IPV4_ONLY    2    //!< if PAL_NET_DNS_IP_SUPPORT is set to PAL_NET_DNS_IPV4_ONLY pal_getAddressInfo will return the first available IPV4 address
00112 #define PAL_NET_DNS_IPV6_ONLY    4    //!< if PAL_NET_DNS_IP_SUPPORT is set to PAL_NET_DNS_IPV6_ONLY pal_getAddressInfo will return the first available IPV6 address
00113 
00114 
00115 #ifndef PAL_NET_DNS_IP_SUPPORT
00116 #if PAL_SUPPORT_IP_V6 == true && PAL_SUPPORT_IP_V4 == true
00117     #define PAL_NET_DNS_IP_SUPPORT  0 //!< sets the type of IP addresses returned by  pal_getAddressInfo
00118 #elif PAL_SUPPORT_IP_V6 == true
00119     #define PAL_NET_DNS_IP_SUPPORT  4 //!< sets the type of IP addresses returned by  pal_getAddressInfo
00120 #else
00121     #define PAL_NET_DNS_IP_SUPPORT  2 //!< sets the type of IP addresses returned by  pal_getAddressInfo
00122 #endif
00123 
00124 #endif
00125 
00126 //! The maximum number of interfaces that can be supported at a time.
00127 #ifndef PAL_MAX_SUPORTED_NET_INTERFACES
00128     #define PAL_MAX_SUPORTED_NET_INTERFACES 10
00129 #endif
00130 
00131 //! Stack size for thread created when calling pal_getAddressInfoAsync
00132 #ifndef PAL_NET_ASYNC_DNS_THREAD_STACK_SIZE
00133     #define PAL_NET_ASYNC_DNS_THREAD_STACK_SIZE (1024 * 2)
00134 #endif
00135 
00136 
00137 //! If you want PAL to not perform a rollback/cleanup when main PAL init fails, please set this flag to `false`
00138 #ifndef PAL_CLEANUP_ON_INIT_FAILURE
00139     #define PAL_CLEANUP_ON_INIT_FAILURE true
00140 #endif
00141 
00142 /*
00143  * RTOS configuration
00144  */
00145 
00146 /*! \brief Determines if PAL modules are thread safe.
00147  *
00148  *    1 - thread safety is enabled, \n
00149  *    0 - thread safety is disabled
00150  */
00151 #ifndef PAL_THREAD_SAFETY
00152     #define PAL_THREAD_SAFETY 1
00153 #endif
00154 
00155 /*! Initial time (in milliseconds) until thread stack cleanup (mbedOS only).
00156  *
00157  * This is the amount of time to wait before checking that a thread has completed in order to free its stack.
00158  */
00159 #ifndef PAL_RTOS_THREAD_CLEANUP_TIMER_MILISEC
00160     #define PAL_RTOS_THREAD_CLEANUP_TIMER_MILISEC 200
00161 #endif
00162 
00163 //! Determines the size of the initial random buffer (in bytes) held by PAL for random the algorithm.
00164 #ifndef PAL_INITIAL_RANDOM_SIZE
00165     #define PAL_INITIAL_RANDOM_SIZE 48
00166 #endif
00167 
00168 #ifndef PAL_RTOS_WAIT_FOREVER
00169     #define PAL_RTOS_WAIT_FOREVER UINT_MAX
00170 #endif
00171 
00172 /*
00173  * TLS configuration
00174  */
00175 
00176 //! The maximum number of supported cipher suites.
00177 #ifndef PAL_MAX_ALLOWED_CIPHER_SUITES
00178     #define PAL_MAX_ALLOWED_CIPHER_SUITES 1
00179 #endif
00180 
00181 //! This value is in milliseconds. 1000 = 1 second.
00182 #ifndef PAL_DTLS_PEER_MIN_TIMEOUT
00183     #define PAL_DTLS_PEER_MIN_TIMEOUT 1000
00184 #endif
00185 
00186 //! The debug threshold for TLS API.
00187 #ifndef PAL_TLS_DEBUG_THRESHOLD
00188     #define PAL_TLS_DEBUG_THRESHOLD 5
00189 #endif
00190 
00191 //! 32 or 48 (depends on the curve) bytes for the X,Y coordinates and 1 for the normalized/non-normalized
00192 #ifndef PAL_CERT_ID_SIZE
00193     #define PAL_CERT_ID_SIZE 33
00194 #endif
00195 
00196 
00197 #ifndef PAL_ENABLE_PSK
00198     #define PAL_ENABLE_PSK 0
00199 #endif
00200 
00201 #ifndef PAL_ENABLE_X509
00202     #define PAL_ENABLE_X509 1
00203 #endif
00204 
00205 // Defines the cipher suites for TLS. Only one cipher suite per device available.
00206 #define PAL_TLS_PSK_WITH_AES_128_CCM_8_SUITE                    0x01
00207 #define PAL_TLS_PSK_WITH_AES_256_CCM_8_SUITE                    0x02
00208 #define PAL_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8_SUITE            0x04
00209 #define PAL_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_SUITE       0x08
00210 #define PAL_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_SUITE       0x10
00211 #define PAL_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256_SUITE      0x20
00212 
00213 //! Use the default cipher suite for TLS/DTLS operations
00214 #if (PAL_ENABLE_X509 == 1)
00215     #ifndef PAL_TLS_CIPHER_SUITE
00216         #define PAL_TLS_CIPHER_SUITE PAL_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8_SUITE
00217     #endif
00218 #elif (PAL_ENABLE_PSK == 1)
00219     #ifndef PAL_TLS_CIPHER_SUITE
00220         #define PAL_TLS_CIPHER_SUITE PAL_TLS_PSK_WITH_AES_128_CCM_8_SUITE
00221     #endif
00222 #endif
00223 
00224 #ifndef PAL_CMAC_SUPPORT
00225     #define PAL_CMAC_SUPPORT true
00226 #endif
00227 
00228 //! Enable the CMAC functionality \note This flag lets the bootloader be compiled without CMAC.
00229 #ifndef PAL_CMAC_SUPPORT
00230     #define PAL_CMAC_SUPPORT 1
00231 #endif //PAL_CMAC_SUPPORT
00232 
00233 /*
00234  * UPDATE configuration
00235  */
00236 
00237 #define PAL_UPDATE_USE_FLASH 1
00238 #define PAL_UPDATE_USE_FS    2
00239 
00240 #ifndef PAL_UPDATE_IMAGE_LOCATION
00241     #define PAL_UPDATE_IMAGE_LOCATION PAL_UPDATE_USE_FS     //!< Determines the storage option to use, file System or flash
00242 #endif
00243 
00244 //! Certificate date validation in Unix time format.
00245 #ifndef PAL_CRYPTO_CERT_DATE_LENGTH
00246     #define PAL_CRYPTO_CERT_DATE_LENGTH sizeof(uint64_t)
00247 #endif
00248 
00249 /*
00250  * File system configuration
00251  */
00252 
00253 /*! \brief The number of file system partitions
00254  *
00255  * 1 - There is a single partition in which the ARM client applications create and remove files (but not format it). This is the default. \n
00256  * 2 - There are two partitions in which ARM client applications may format or create and remove files,
00257  *     depending on PAL_PRIMARY_PARTITION_PRIVATE and PAL_SECONDARY_PARTITION_PRIVATE
00258  */
00259 #ifndef PAL_NUMBER_OF_PARTITIONS
00260     #define PAL_NUMBER_OF_PARTITIONS 1 // Default partitions
00261 #endif
00262 
00263 #if (PAL_NUMBER_OF_PARTITIONS > 2)
00264     #error "PAL_NUMBER_OF_PARTITIONS cannot be more then 2"
00265 #endif
00266 
00267 /*! \brief Determines whether the primary partition is used only for the ARM client application.
00268  *
00269  * 1 - The primary partition is exclusively dedicated to the ARM client applications. \
00270  * 0 - The primary partition is used for storing other files as well.
00271  */
00272 #ifndef PAL_PRIMARY_PARTITION_PRIVATE
00273     #define PAL_PRIMARY_PARTITION_PRIVATE 0
00274 #endif
00275 
00276 /*! \brief Determines whether the secondary partition is used only for the ARM client application.
00277  *
00278  *  1 - The secondary partition is exclusively dedicated to the ARM client applications.
00279  *  0 - The secondary partition is used for storing other files as well.
00280  */
00281 #ifndef PAL_SECONDARY_PARTITION_PRIVATE
00282     #define PAL_SECONDARY_PARTITION_PRIVATE 0
00283 #endif
00284 
00285 //! The location of the primary mount point for the file system
00286 #ifndef PAL_FS_MOUNT_POINT_PRIMARY
00287     #define PAL_FS_MOUNT_POINT_PRIMARY  ""
00288 #endif
00289 
00290 //! The location of the secondary mount point for the file system
00291 #ifndef PAL_FS_MOUNT_POINT_SECONDARY
00292     #define PAL_FS_MOUNT_POINT_SECONDARY ""
00293 #endif
00294 
00295 // Update
00296 
00297 #ifndef PAL_UPDATE_FIRMWARE_MOUNT_POINT
00298     #define PAL_UPDATE_FIRMWARE_MOUNT_POINT PAL_FS_MOUNT_POINT_PRIMARY
00299 #endif
00300 
00301 //! The location of the firmware update folder
00302 #ifndef PAL_UPDATE_FIRMWARE_DIR
00303     #define PAL_UPDATE_FIRMWARE_DIR PAL_UPDATE_FIRMWARE_MOUNT_POINT "/firmware"
00304 #endif
00305 
00306 //! If flash existed set to 1 else 0, the flash is used for non-volatile backup
00307 #ifndef PAL_USE_INTERNAL_FLASH
00308     #define PAL_USE_INTERNAL_FLASH  0
00309 #endif
00310 
00311 #ifndef PAL_INT_FLASH_NUM_SECTIONS
00312     #define PAL_INT_FLASH_NUM_SECTIONS 0
00313 #endif
00314 
00315 #ifndef PAL_USE_HW_ROT
00316     #define PAL_USE_HW_ROT     1
00317 #endif
00318 
00319 #ifndef PAL_USE_HW_RTC
00320     #define PAL_USE_HW_RTC    1
00321 #endif
00322 
00323 #ifndef PAL_USE_HW_TRNG
00324     #define PAL_USE_HW_TRNG    1
00325 #endif
00326 
00327 //! The number of valid priorities limits the maximum number of concurrent running threads.
00328 #ifndef PAL_MAX_NUMBER_OF_THREADS
00329     #if PAL_USE_HW_TRNG
00330         #define PAL_MAX_NUMBER_OF_THREADS 9
00331     #else
00332         #define PAL_MAX_NUMBER_OF_THREADS 8
00333     #endif
00334 #endif
00335 
00336 #if PAL_USE_HW_TRNG
00337     //! Delay (in milliseconds) for TRNG noise collecting thread used between calls to TRNG
00338     #ifndef PAL_NOISE_TRNG_THREAD_DELAY_MILLI_SEC
00339         #define PAL_NOISE_TRNG_THREAD_DELAY_MILLI_SEC (1000 * 60) // one minute
00340     #endif
00341     //! Stack size for TRNG noise collecting thread
00342     #ifndef PAL_NOISE_TRNG_THREAD_STACK_SIZE
00343         #define PAL_NOISE_TRNG_THREAD_STACK_SIZE 1536 // 1.5K
00344     #endif
00345 #endif
00346 
00347 #ifndef PAL_USE_SECURE_TIME
00348     #define PAL_USE_SECURE_TIME 1
00349 #endif
00350 
00351 #ifndef PAL_DEVICE_KEY_DERIVATION_BACKWARD_COMPATIBILITY_CALC
00352     #define PAL_DEVICE_KEY_DERIVATION_BACKWARD_COMPATIBILITY_CALC 0
00353 #endif
00354 
00355 /*! \brief Starting Address for section 1
00356  *
00357  * Minimum required size is 1KB and section must be consecutive sectors
00358  */
00359 #ifndef PAL_INTERNAL_FLASH_SECTION_1_ADDRESS
00360     #define PAL_INTERNAL_FLASH_SECTION_1_ADDRESS    0
00361 #endif
00362 /*! \brief Starting Address for section 2
00363  *
00364  * Minimum required size is 1KB and section must be consecutive sectors*/
00365 #ifndef PAL_INTERNAL_FLASH_SECTION_2_ADDRESS
00366     #define PAL_INTERNAL_FLASH_SECTION_2_ADDRESS    0
00367 #endif
00368 //! Size for section 1
00369 #ifndef PAL_INTERNAL_FLASH_SECTION_1_SIZE
00370     #define PAL_INTERNAL_FLASH_SECTION_1_SIZE       0
00371 #endif
00372 //! Size for  section 2
00373 #ifndef PAL_INTERNAL_FLASH_SECTION_2_SIZE
00374     #define PAL_INTERNAL_FLASH_SECTION_2_SIZE       0
00375 #endif
00376 
00377 #ifndef PAL_SIMULATOR_TEST_ENABLE
00378     #define PAL_SIMULATOR_TEST_ENABLE    0
00379 #endif
00380 
00381 #if (PAL_SIMULATOR_TEST_ENABLE == 1)
00382 
00383     #undef PAL_SIMULATE_RTOS_REBOOT
00384     #define PAL_SIMULATE_RTOS_REBOOT 1
00385 
00386     #undef PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM
00387     #define PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM    1
00388 
00389 //! Overwrites the format command to remove all files and directories only for Linux*/
00390     #undef PAL_SIMULATOR_FS_RM_INSTEAD_OF_FORMAT
00391     #define PAL_SIMULATOR_FS_RM_INSTEAD_OF_FORMAT 1
00392 #endif //PAL_SIMULATOR_TEST_ENABLE
00393 
00394 #ifndef PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM
00395     #define PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM    0
00396 #endif
00397 
00398 #if PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM
00399 
00400     #undef PAL_USE_INTERNAL_FLASH
00401     #define PAL_USE_INTERNAL_FLASH  1
00402 
00403     #undef PAL_INT_FLASH_NUM_SECTIONS
00404     #define PAL_INT_FLASH_NUM_SECTIONS 2
00405 
00406     #ifndef PAL_SIMULATOR_SOTP_AREA_SIZE
00407         #define PAL_SIMULATOR_SOTP_AREA_SIZE    4096 //!< must be power of two the can be divded to page size without reminder and must be a multiple of sector size
00408     #endif
00409 
00410     #ifndef SIMULATE_FLASH_SECTOR_SIZE
00411         #define SIMULATE_FLASH_SECTOR_SIZE      4096 //!<  Flash sector size
00412     #endif
00413 
00414     #ifndef SIMULATE_FLASH_DIR
00415         #define SIMULATE_FLASH_DIR              "" //!< Directory that holds the flash simulator file
00416     #endif
00417 
00418     #ifndef SIMULATE_FLASH_FILE_NAME
00419         #define SIMULATE_FLASH_FILE_NAME        SIMULATE_FLASH_DIR"/flashSim" //!< File name and path to the flash simulator file
00420     #endif
00421 
00422     #ifndef SIMULATE_FLASH_PAGE_SIZE
00423         #define SIMULATE_FLASH_PAGE_SIZE        8 //!< Minumum writing uint to flash (2, 4, 8, 16)
00424     #endif
00425 
00426     #if PAL_SIMULATOR_SOTP_AREA_SIZE < 4096
00427         #error Minimum Size of 4K
00428     #endif
00429 
00430     /* Note - In simulator mode all flash areas are overrided with the simulation sizes and address*/
00431 
00432 /* \brief Size for section 1
00433  *
00434  * Minimum required size is 1KB and section must be consecutive sectors
00435  */
00436     #undef PAL_INTERNAL_FLASH_SECTION_1_SIZE
00437     #define PAL_INTERNAL_FLASH_SECTION_1_SIZE       PAL_SIMULATOR_SOTP_AREA_SIZE
00438 
00439     #undef PAL_INTERNAL_FLASH_SECTION_2_SIZE
00440 /*! \brief Size for section 2
00441  *
00442  * Minimum requirement size is 1KB and section must be consecutive sectors
00443  */
00444     #define PAL_INTERNAL_FLASH_SECTION_2_SIZE       PAL_SIMULATOR_SOTP_AREA_SIZE
00445 
00446     #undef PAL_INTERNAL_FLASH_SECTION_1_ADDRESS
00447     //! Starting Address for section 1 */
00448     #define PAL_INTERNAL_FLASH_SECTION_1_ADDRESS    0
00449 
00450     #undef PAL_INTERNAL_FLASH_SECTION_2_ADDRESS
00451     //! Starting Address for section 2 */
00452     #define PAL_INTERNAL_FLASH_SECTION_2_ADDRESS    PAL_INTERNAL_FLASH_SECTION_1_SIZE
00453 
00454 #endif //PAL_SIMULATOR_FLASH_OVER_FILE_SYSTEM
00455 
00456 #define VALUE_TO_STRING(x) #x
00457 #define VALUE(x) VALUE_TO_STRING(x)
00458 #define VAR_NAME_VALUE(var) #var " = "  VALUE(var)
00459 
00460 #if (((!PAL_USE_INTERNAL_FLASH && (!PAL_USE_HW_ROT || !PAL_USE_HW_RTC || !PAL_USE_HW_TRNG))  \
00461         || ((PAL_INT_FLASH_NUM_SECTIONS == 1) && PAL_USE_INTERNAL_FLASH && (!PAL_USE_HW_RTC || !PAL_USE_HW_TRNG)))  \
00462         && !defined MBED_CONF_MBED_CLOUD_CLIENT_EXTERNAL_SST_SUPPORT)
00463         #pragma message(VAR_NAME_VALUE(PAL_USE_INTERNAL_FLASH))
00464         #pragma message(VAR_NAME_VALUE(PAL_USE_HW_ROT))
00465         #pragma message(VAR_NAME_VALUE(PAL_USE_HW_RTC))
00466         #pragma message(VAR_NAME_VALUE(PAL_USE_HW_TRNG))
00467         #pragma message(VAR_NAME_VALUE(PAL_INT_FLASH_NUM_SECTIONS))
00468     #error Minimum configuration setting does not meet the requirements
00469 #endif
00470 
00471 #if (((PAL_ENABLE_PSK == 1) && (PAL_ENABLE_X509 == 1)) && !(defined(__LINUX__)))
00472     #error "Please select only one option: PSK or X509"
00473 #endif
00474 
00475 #if ((PAL_ENABLE_PSK == 0) && (PAL_ENABLE_X509 == 0))
00476     #error "Please select one option: PSK or X509"
00477 #endif
00478 
00479 
00480 
00481 #if ((PAL_ENABLE_PSK == 1) && (PAL_USE_SECURE_TIME == 1))
00482     #error "PSK feature cannot be configured when using secure time"
00483 #endif
00484 
00485 //! Delay (in milliseconds) between calls to TRNG random buffer in case only partial data (PAL_ERR_RTOS_TRNG_PARTIAL_DATA) was generated for the function call
00486 #ifndef PAL_TRNG_COLLECT_DELAY_MILLI_SEC
00487     #define PAL_TRNG_COLLECT_DELAY_MILLI_SEC 1000
00488 #endif // PAL_TRNG_COLLECT_DELAY_MILLI_SEC
00489 
00490 //! define the maximum number of images
00491 #ifndef IMAGE_COUNT_MAX
00492     #define IMAGE_COUNT_MAX             1
00493 #endif
00494 
00495 #define PAL_NOISE_SIZE_BYTES 48 //!< Maximum number of bytes for noise
00496 #define PAL_NOISE_SIZE_BITS (PAL_NOISE_SIZE_BYTES * CHAR_BIT) //!< Maximum number of bits for noise
00497 #define PAL_NOISE_BUFFER_LEN (PAL_NOISE_SIZE_BYTES / sizeof(int32_t)) //!< Length of the noise buffer
00498 
00499 #endif //_PAL_COFIGURATION_H