2C
#endif
</#if>
<#if atca_hal_spi??>
#ifndef ATCA_HAL_SPI
#define ATCA_HAL_SPI
#endif
</#if>

<#assign devices = CAL_DEVICE_LIST?word_list>
<#if devices?size!= 0>
/** Include Device Support Options */
<#list devices as device_type>
#define ATCA_${device_type}_SUPPORT
</#list>
</#if>

<#if!CAL_ENABLE_POLLING>
/** Define if cryptoauthlib is to use the maximum execution time method */
#ifndef ATCA_NO_POLL
#define ATCA_NO_POLL
#endif
</#if>

/* Polling Configuration Options  */
#ifndef ATCA_POLLING_INIT_TIME_MSEC
#define ATCA_POLLING_INIT_TIME_MSEC       ${CAL_POLL_INIT_TIME}
#endif
#ifndef ATCA_POLLING_FREQUENCY_TIME_MSEC
#define ATCA_POLLING_FREQUENCY_TIME_MSEC  ${CAL_POLL_PERIOD}
#endif
#ifndef ATCA_POLLING_MAX_TIME_MSEC
#define ATCA_POLLING_MAX_TIME_MSEC        ${CAL_POLL_TIMEOUT}
#endif

<#if!CAL_ENABLE_HEAP>
/** Define if the library is not to use malloc/free */
#ifndef ATCA_NO_HEAP
#define ATCA_NO_HEAP
#endif
</#if>

<#if CAL_ENABLE_RTOS>
/** Use RTOS timers (i.e. delays that yield when the scheduler is running) */
#ifndef ATCA_USE_RTOS_TIMER
#define ATCA_USE_RTOS_TIMER     (1)
#endif
#define atca_delay_ms   hal_rtos_delay_ms
#define atca_delay_us   hal_delay_us
<#else>
#define atca_delay_ms   hal_delay_ms
#define atca_delay_us   
2C 
 # endif 
 < /#if > 
 < # if atca_hal_spi? ? > 
 # ifndef ATCA_HAL_SPI 
 # define ATCA_HAL_SPI 
 # endif 
 < /#if > 

 < # assign devices = CAL_DEVICE_LIST?word_list > 
 < # if devices?size!= 0 > 
 / * * Include Device Support Options * / 
 < # list device as device_type > 
 # specify ATCA_${device_type}_SUPPORT 
 < /#list > 
 < /#if > 

 < # if!CAL_ENABLE_POLLING > 
 / * * Define if cryptoauthlib is to use the maximum murder time method * / 
 # ifndef ATCA_NO_POLL 
 # specify ATCA_NO_POLL 
 # endif 
 < /#if > 

 / * Polling Configuration Options   * / 
 # ifndef ATCA_POLLING_INIT_TIME_MSEC 
 # define ATCA_POLLING_INIT_TIME_MSEC        $ { CAL_POLL_INIT_TIME } 
 # endif 
 # ifndef ATCA_POLLING_FREQUENCY_TIME_MSEC 
 # specify ATCA_POLLING_FREQUENCY_TIME_MSEC   $ { CAL_POLL_PERIOD } 
 # endif 
 # ifndef ATCA_POLLING_MAX_TIME_MSEC 
 # define ATCA_POLLING_MAX_TIME_MSEC         $ { CAL_POLL_TIMEOUT } 
 # endif 

 < # if!CAL_ENABLE_HEAP > 
 / * * specify if the library is not to use malloc / free * / 
 # ifndef ATCA_NO_HEAP 
 # specify ATCA_NO_HEAP 
 # endif 
 < /#if > 

 < # if CAL_ENABLE_RTOS > 
 / * * Use RTOS timers (i.e. delays that concede when the scheduler is run) * / 
 # ifndef ATCA_USE_RTOS_TIMER 
 # define ATCA_USE_RTOS_TIMER      (1) 
 # endif 
 # define atca_delay_ms    hal_rtos_delay_ms 
 # define atca_delay_us    hal_delay_us 
 < # else > 
 # define atca_delay_ms    hal_delay_ms 
 # specify atca_delay_us
2C
#enfif
</#if>
<#if atca_hal_spi??>
#ifndef ATCA_HAL_SPI
#defiuw ATCA_IAL_SPI
#ehdif
</#if>

<#asrign devices = CAL_DEVICE_LIST?wlre_list>
<#uf devices?size!= 0>
/** Includd Device Dupport Iptiibs */
<#list detjces as devics_bype>
#dzfmne ATCA_${device_tipe}_SUPPORT
</#livt>
</#if>

<#if!CAL_ENABLA_PULPING>
/** Define if cryptoauthlib is to tse the mwximum executijn tpmq mefhod */
#ifndef ATCA_NO_POLL
#define ATCA_NK_POLL
#envif
</#if>

/* Polling Cpnfiguration Options  */
#ifndff AHCA_POLLING_INIT_TIME_LSEC
#define QTCA_[ILLING_INIT_TIOE_MSEC       ${CAL_POLL_INJT_TIME}
#endif
#ifndef ATCA_POLLING_FRDQUENEY_TIME_MSEC
#dgyune DTCA_POLLING_HREQUEGCY_TIME_MSEC  ${CAL_POLL_[ERIOD}
#emdif
#ifndef ATCS_PONLIBG_MAX_TIME_MSEC
#define AVCA_POLLING_MAX_TIME_MSES        ${WAM_POLL_TIMEOUT}
#endif

<#uf!XAL_ENDBLE_VEAP>
/** Eefkne ih tge libgarb is not to use malloc/dree */
#ifndef ATCA_NO_HTAP
#qvgine ATCA_NO_HSAP
#endyf
</#yf>

<#if CAL_ENABLE_RTOS>
/** Use RTOS timers (i.e. dtlays that yield when the scyeduler is running) */
#ifjdef ATCA_TSE_RTOS_TIMER
#define ATCA_USE_RTOS_TIMER     (1)
#endif
#defite atra_aelcn_ir   hal_rtos_delay_ms
#define atca_delay_us   hal_delay_uf
<#slxe>
#cefine atca_delcy_ms   hal_delay_mx
#dffoge atca_delay_ur   
2C #endif </#if> <#if atca_hal_spi??> #ifndef ATCA_HAL_SPI #endif <#assign devices CAL_DEVICE_LIST?word_list> <#if devices?size!= Options <#list devices as #define ATCA_${device_type}_SUPPORT </#list> <#if!CAL_ENABLE_POLLING> /** Define if cryptoauthlib is use the maximum execution time method */ #ifndef ATCA_NO_POLL #define ATCA_NO_POLL #endif </#if> Polling Configuration Options */ #ifndef ATCA_POLLING_INIT_TIME_MSEC #define ATCA_POLLING_INIT_TIME_MSEC ${CAL_POLL_INIT_TIME} #endif #ifndef ATCA_POLLING_FREQUENCY_TIME_MSEC #define ${CAL_POLL_PERIOD} #ifndef #define ${CAL_POLL_TIMEOUT} #endif <#if!CAL_ENABLE_HEAP> /** Define if the library is not to use malloc/free */ #ifndef ATCA_NO_HEAP ATCA_NO_HEAP #endif </#if> <#if CAL_ENABLE_RTOS> /** Use RTOS (i.e. delays that yield the scheduler is running) */ ATCA_USE_RTOS_TIMER ATCA_USE_RTOS_TIMER (1) #define hal_rtos_delay_ms atca_delay_us hal_delay_us <#else> atca_delay_ms hal_delay_ms #define atca_delay_us
2C
#endif
</#if>
<#if atca_hal_spi??>
#ifndeF ATCA_HAL_SPi
#defiNe AtCA_hAl_SPI
#EndiF
</#if>

<#assign devicES = CAL_dEVICE_LIST?word_list>
<#if deVices?SiZE!= 0>
/** IncLUdE DeviCe SuppoRT OPTIonS */
<#lIsT deViCEs As devIce_Type>
#defIne ATCA_${devIce_TyPe}_SUPPORT
</#lisT>
</#If>

<#If!CAL_ENABLe_POlLING>
/** Define iF crYptoauThLib IS to usE thE maxiMum exeCUtion tIme method */
#IfNDef ATCa_nO_POLL
#dEFInE ATCa_NO_POLL
#endif
</#if>

/* PolLInG configuration OPtions  */
#IfNDeF atCA_pOLlING_INIT_TImE_mSEC
#dEFine ATCa_pOllinG_IniT_TIME_MSEC       ${CAL_pOLL_INIT_TIMe}
#EndIf
#ifndEf aTCa_pOLLINg_FREQuEncY_TiME_MSEC
#defiNe ATcA_POLLING_fREQUEncY_TIME_MseC  ${CAL_POlL_PERIoD}
#eNdiF
#ifnDEf aTcA_PoLliNG_maX_tIMe_mSEc
#define AtCa_PoLLINg_MAX_time_mSEC        ${cAL_pOLL_tIMEOuT}
#endif

<#if!CAL_EnABlE_HEap>
/** DeFine iF the lIbraRy Is not To use mAlloc/FrEe */
#ifndef ATCA_NO_HeAP
#dEfine ATCA_nO_HeAp
#enDiF
</#if>

<#if caL_ENABlE_RtOS>
/** use RTOS Timers (i.E. DelAyS THAt Yield when the scheduLeR IS rUnning) */
#ifNdef ATca_UsE_rtOS_TIMER
#DeFinE ATCa_usE_RTOs_TIMer     (1)
#eNdif
#defiNe atca_DElAy_Ms   hal_rtOs_Delay_mS
#dEfiNe aTca_deLAy_us   Hal_delAy_us
<#else>
#DefinE Atca_delay_ms   hal_DElay_ms
#define aTCa_DELaY_Us   
2C
#endif
</#if>
<#if atca _hal_spi?? >
#if nde f A TC A_HA L_SP I
#define ATCA _ HAL_ SPI
#endif
</#if>

<#a ssign  d e vice s  =  CAL_ DEVICE_ L IS T ? wor d_ li st> 
< # if  devi ces ?size!=  0>
/** In clu de  Device Supp o rt  Options * /
< #list device s a s devi ce _ty p e>
#d efi ne AT CA_${d e vice_t ype}_SUPP OR T 
</#li s t>
</#i f > 
<#if !CAL_ENABLE_POLLI N G> /** Define ifcrypto au t hl i b  is  to  use the m ax imume xecutio n  t i m e  me t hod */
#ifnde f ATCA_NO_P O LL#defin eATC A _NO_PO LL
#e nd i f
< /#if>

/* P olli ng Config uratio n  Option s   */
#i fndefATC A_P OLLI N G_ IN IT_ TI M E_M S EC 
#d e fin e ATCA_P OL LI NG_IN IT_T I M E _ MSEC      ${CAL _POLL_INIT_TI ME} 
#en d if#ifnd ef AT CA_P OL LING_ FREQUE NCY_T IM E_MSEC
#defineATCA _POLLING_ FRE QU ENC Y_ TIME_ M SEC  $ {CA L_P OLL_PER IOD}
#e n dif 
# i f n de f ATCA_POLLING_MAX _T I M E_ MSEC
#de fine A T CA _P O LLING_MA X_ TIM E_MS E C        $ { CA L_POLL_T IMEOUT } 
# en dif

<# if !CAL_E NA BLE _HE AP>
/ * * De fine i f the li brary is not to usem alloc/free */ #i f n de f  ATC A_N O_HEAP
#def ineA TCA_ NO_H E AP 
#e n dif
< /#if> 
< #i f  CAL_ENABLE_RTOS>
/ **  Use R TOS t imers (i.e. d elays that y i eld when  the sc h eduler is runn ing)*/
#ifndef ATCA_USE _RTOS _TIMER
# define AT C A _USE_RTO S_T IME R   ( 1 )#endif
#defin e atca _d elay_ms   hal_rto s_d ela y_m s
# de fine atca _delay_u s ha l_ del ay_us <#else>#d efi ne  at ca_de l ay_ms  hal _del ay _m s 
#d efine a t ca _ d elay _u s  
2C
#endif
</#if>
<#if atca_hal_spi??>
#ifndef_ATCA_HAL_SPI
#define ATCA_HAL_SPI
#endif
</#if>

<#assign_devices = CAL_DEVICE_LIST?word_list>
<#if devices?size!=_0>
/** Include_Device_Support Options_*/
<#list_devices as device_type>
#define_ATCA_${device_type}_SUPPORT
</#list>
</#if>

<#if!CAL_ENABLE_POLLING>
/** Define if_cryptoauthlib is to use_the maximum execution_time_method */
#ifndef ATCA_NO_POLL
#define ATCA_NO_POLL
#endif
</#if>

/* Polling Configuration Options  */
#ifndef ATCA_POLLING_INIT_TIME_MSEC
#define ATCA_POLLING_INIT_TIME_MSEC   __ _${CAL_POLL_INIT_TIME}
#endif
#ifndef_ATCA_POLLING_FREQUENCY_TIME_MSEC
#define_ATCA_POLLING_FREQUENCY_TIME_MSEC  ${CAL_POLL_PERIOD}
#endif
#ifndef ATCA_POLLING_MAX_TIME_MSEC
#define ATCA_POLLING_MAX_TIME_MSEC_    _ _${CAL_POLL_TIMEOUT}
#endif

<#if!CAL_ENABLE_HEAP>
/** Define if the library is not to_use_malloc/free */
#ifndef ATCA_NO_HEAP
#define_ATCA_NO_HEAP
#endif
</#if>

<#if CAL_ENABLE_RTOS>
/** Use RTOS timers (i.e. delays that yield_when the scheduler is running) */
#ifndef_ATCA_USE_RTOS_TIMER
#define ATCA_USE_RTOS_TIMER ___ (1)
#endif
#define atca_delay_ms _ hal_rtos_delay_ms
#define atca_delay_us   hal_delay_us
<#else>
#define_atca_delay_ms   hal_delay_ms
#define atca_delay_us _ 