/* This file is part of the ChipWhisperer Example Targets Copyright (C) 2012-2015 NewAE Technology Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef HAL_H_ #define HAL_H_ #include void platform_init(void); //PLATFORM Define Types #define CW301_AVR 1 #define CW301_XMEGA 2 #define CW303 3 #define CW304 4 #define CW308_MEGARF 8 #define CW308_PIC24FJ 10 #define CW308_SAM4L 11 #define CW308_SI4010 12 #define CW308_MPC5748G 13 #define CW308_STM32F0 14 #define CW308_STM32F1 15 #define CW308_STM32F2 16 #define CW308_STM32F3 17 #define CW308_STM32F4 18 #define CW308_CC2538 19 #define CW308_K24F 20 #define CW308_NRF52840 21 #define CW308_AURIX 22 #define CW308_SAML11 23 #define CW308_EFM32TG11B 24 #define CW308_K82F 25 #define CW308_LPC55S6X 26 #define CW308_PSOC62 27 #define CW308_IMXRT1062 28 #define CW308_FE310 29 #define CW308_EFR32MG21A 30 #define CW308_EFM32GG11 31 #define CW308_STM32L5 32 #define CW308_STM32L4 33 #define CW308_RX65N 34 #define CW308_MPC5676R 35 //HAL_TYPE Define Types #define HAL_avr 1 #define HAL_xmega 2 #define HAL_pic24f 3 #define HAL_sam4l 4 #define HAL_stm32f0 5 #define HAL_stm32f1 6 #define HAL_stm32f2 7 #define HAL_stm32f3 8 #define HAL_stm32f4 9 #define HAL_cc2538 10 #define HAL_k24f 11 #define HAL_nrf52840 12 #define HAL_stm32f0_nano 13 #define HAL_aurix 14 #define HAL_saml11 15 #define HAL_efm32tg11b 16 #define HAL_k82f 17 #define HAL_lpc55s6x 18 #define HAL_psoc62 19 #define HAL_imxrt1062 20 #define HAL_fe310 21 #define HAL_efr32mg21a 22 #define HAL_efm32gg11 23 #define HAL_stm32l5 24 #define HAL_stm32l4 25 #define HAL_rx65n 26 #define HAL_mpc5676r 27 #if HAL_TYPE == HAL_avr #include #include #include "avr/avr_hal.h" #elif HAL_TYPE == HAL_xmega #include #include #include "xmega/xmega_hal.h" #include "xmega/avr_compiler.h" #elif HAL_TYPE == HAL_pic24f #include #include "pic24f/pic24f_hal.h" #include "pic24f/uart.h" #elif HAL_TYPE == HAL_sam4l #include "sam4l/sam4l_hal.h" #elif HAL_TYPE == HAL_stm32f0 #include "stm32f0/stm32f0_hal.h" #elif HAL_TYPE == HAL_stm32f1 #include "stm32f1/stm32f1_hal.h" #elif HAL_TYPE == HAL_stm32f2 #include "stm32f2/stm32f2_hal.h" #elif HAL_TYPE == HAL_stm32f3 #include "stm32f3/stm32f3_hal.h" #ifdef SECCAN #include "stm32f3/stm32f3_hal_seccan.h" #endif #elif HAL_TYPE == HAL_stm32f4 #include "stm32f4/stm32f4_hal.h" #elif HAL_TYPE == HAL_cc2538 #include "cc2538/cc2538_hal.h" #elif HAL_TYPE == HAL_k24f #include "k24f/k24f_hal.h" #elif HAL_TYPE == HAL_k82f #include "k82f/k82f_hal.h" #elif HAL_TYPE == HAL_nrf52840 #include "nrf52840/nrf52840_hal.h" #elif HAL_TYPE == HAL_stm32f0_nano #include "stm32f0/stm32f0_hal.h" #elif HAL_TYPE == HAL_aurix #include "aurix/aurix_hal.h" #elif HAL_TYPE == HAL_saml11 #include "saml11/saml11_hal.h" #elif HAL_TYPE == HAL_efm32tg11b #include "efm32tg11b/efm32tg11b_hal.h" #elif HAL_TYPE == HAL_lpc55s6x #include "lpc55s6x/lpc55s6x_hal.h" #elif HAL_TYPE == HAL_psoc62 #include "psoc62/psoc62_hal.h" #elif HAL_TYPE == HAL_imxrt1062 #include "imxrt1062/imxrt1062_hal.h" #elif HAL_TYPE == HAL_fe310 #include "fe310/fe310_hal.h" #elif HAL_TYPE == HAL_efr32mg21a #include "efr32mg21a/efr32mg21a_hal.h" #elif HAL_TYPE == HAL_efm32gg11 #include "efm32gg11/efm32gg11_hal.h" #elif HAL_TYPE == HAL_stm32l5 #include "stm32l5/stm32l5_hal.h" #elif HAL_TYPE == HAL_stm32l4 #include "stm32l4/stm32l4_hal.h" #elif HAL_TYPE == HAL_rx65n #include "rx65n/rx65n_hal.h" #elif HAL_TYPE == HAL_mpc5676r #include "mpc5676r/MPC5676R_hal.h" #else #error "Unsupported HAL Type" #endif #if PLATFORM == CW308_MEGARF #undef trigger_setup #undef trigger_high #undef trigger_low #define trigger_setup() DDRD |= 0x02 #define trigger_high() PORTD |= 0x02 #define trigger_low() PORTD &= ~(0x02) #define HW_AES128_Init(); AES_CTRL = 0x00; #define HW_AES128_LoadKey(key); for (uint8_t i = 0; i < 16; i++){ \ AES_KEY = *(key+i); \ } #define HW_AES128_Enc(pt); for (uint8_t i = 0; i < 16; i++){ \ AES_STATE = *(pt+i); \ } \ \ AES_CTRL |= 1<