# Can't easily add license to rat-excludes file.
.rat-excludes

# Temporary user files.
.gdb_history
.gdb_out
tags

# Non-source files
RELEASE_NOTES.md
repository.yml
.gitignore
00readme.txt
.clang-format
README.md
.mailmap
.style_ignored_dirs
Doxyfile

# unit tests executables
bin

# CRC16 - BSD License.
crc16.h
crc16.c


# Nordic nRF5 SDK - BSD License.
system_nrf51.c
system_nrf52.c
system_nrf9160.c
gcc_startup_cm0.s
gcc_startup_cm0_split.s
gcc_startup_cm4_split.s
gcc_startup_cm33.s
gcc_startup_cm33_split.s


# Linker scripts for Nordics nRF5X - TCL license
nrf51dk_no_boot.ld
nrf51dk-16kbram_no_boot.ld
boot-nrf51xxaa.ld
nrf51xxaa.ld
boot-nrf51xxac.ld
nrf51xxac.ld
split-nrf51dk.ld
boot-nrf51xxac.ld
nrf51xxac.ld
split-nrf51dk.ld
nrf51.ld
nrf52dk_no_boot.ld
bmd300eval_no_boot.ld
boot-nrf52xxaa.ld
nrf52xxaa.ld
primo_no_boot.ld
split-primo.ld
split-bmd300eval.ld
split-nrf52dk.ld
rb-nano2_no_boot.ld
split-rb-nano2.ld
nrf52.ld
nrf52_ram_resident.ld
ada_feather_nrf52_no_boot.ld
split_ada_feather_nrf52.ld
split-microbit.ld
ble400_no_boot.ld
split-ble400.ld
nordic_pca10028_no_boot.ld
split-nordic_pca10028.ld
nordic_pca10028-16k_no_boot.ld
split-nordic_pca10028-16k.ld
nordic_pca10040_no_boot.ld
split-nordic_pca10040.ld
nordic_pca10056_no_boot.ld
split-nordic_pca10056.ld
nordic_pca20020_no_boot.ld
split-nordic_pca20020.ld
nrf5340.ld
nrf5340_ram_resident.ld
nordic_pca10095_no_boot.ld
nrf5340_net.ld
nrf5340_net_ram_resident.ld
nordic_pca10095_net_no_boot.ld
rb-blend2_no_boot.ld
split-rb-blend2.ld
split-telee02.ld
telee02_no_boot.ld
split-vbluno51.ld
vbluno51_no_boot.ld
split-vbluno52.ld
vbluno52_no_boot.ld
boot-apollo2.ld
apollo2.ld
dwm1001-dev_no_boot.ld
split-dwm1001-dev.ld
fanstel-ev-bt840_no_boot.ld
split-fanstel-ev-bt840.ld
puckjs_no_boot.ld
split_puckjs.ld
nrf91.ld
split-nordic_pca10090.ld
nordic_pca10090_no_boot.ld
boot-nrf91xxaa.ld
nordic_pca10090_no_boot.ld
nrf91xxaa.ld
nrf91_ram_resident.ld
boot-pinetime.ld
boot-apollo3.ld
apollo3.ld
nordic_pca10059_no_boot.ld
split-nordic_pca10059.ld
split-ublox_bmd_345.ld
ublox_bmd_345_no_boot.ld
no_boot.ld

# STM32 HAL - BSD License
stm32_driver_mod_i2c_v1.c
stm32_driver_mod_i2c_v2.c
stm32_driver_mod_spi.c
stm32_driver_mod_timer.c

# STM32CubeF4  - BSD License.
stm32f4xx_hal_conf.h
system_stm32f4xx.c

# STM32F4x MCU/BSP clock customization
clock_stm32f4xx.c

# STM32F0xx HAL - BSD licence
clock_stm32f0xx.c
system_stm32f0xx.c

# baselibc - BSD License.
# tinyprintf - BSD License.
# klibc - MIT License.
baselibc

# CMSIS-CORE - BSD License.
cmsis_nvic.c
cmsis_nvic.h
HAL_CM0.s
HAL_CM3.s
HAL_CM4.s
HAL_CM33.s
HAL_CM7.s
SVC_Table.s

# microjson - BSD License.
MSJSON_COPYING
json_decode.c
json_encode.c

# queue.h - BSD License.
queue.h

# FreeBSD - BSD License.
os_mbuf.c
base64.c

# tinycrypt - BSD License.
tinycrypt

# frdm-k64f clock configuration - BSD License.
clock_config.c
clock_config.h

# NXP SDK - BSD License.
MK64FN1M0xxx12_flash.ld
boot-MK64FN1M0xxx12_flash.ld
startup_MK64F12.S
MK82FN256xxx15_flash.ld
boot-MK82FN256xxx15_flash.ld
startup_MK82F25615.S
fsl_ftfx_controller.c

# LWIP - BSD License.
lwip_base

# OIC - BSD License.
oic

# FATFS ChaN License
diskio.h
ff.h
ffconf.h
integer.h
ff.c
00history.txt

# Freescale Semiconductor License
boot-mkw41z512.ld
mkw41z512.ld
no-boot-mkw41z512.ld
gcc_startup_mkw41z.s
MKW41Z4.h
fsl_device_registers.h
system_MKW41Z4.h
MKW41Z4_features.h
system_MKW41Z4.c

# Imagination Technologies - BSD License
mips-hal
ctx.S
excpt_isr.S
uhi32.ld
abiflags.S

# Cygnus Support - MIT like License
gcc_startup_mips.S

# HiFive1 - Apache License 2.0
sifive

# MQTT - Eclipse Public License
mqtt

# CMSIS STM32f7 - BSD License.
clock_stm32f7xx.c
system_stm32f7xx.c

# CMSIS Cortex-H7, STM32h7 - BSD License.
clock_stm32h7xx.c

# LORA - BSD License
lora

# loraping - BSD License (main.c only)
loraping

# SEGGER Sysview - BSD License
sysview

# SEGGER RTT - BSD License
SEGGER_RTT.h
SEGGER_RTT.c
SEGGER_RTT_printf.c

# Adafruit TSL2561 Sensor - BSD License
tsl2561.h
tsl2561.c
tsl2561_priv.h
tsl2561_shell.c

# pic32mx470f512h - BSD License
p32mx470f512h.h
ppic32mx.h

# STM32F7 Discovery BSP, NUCLEO-F767 BSP, NUCLEO-F746 - BSD License
stm32f7xx_hal_conf.h

# STM32L152C BSP - BSD License
stm32l1xx_hal_conf.h
startup_stm32l152xc.s

# NUCLEO-H723ZG BSP - BSD License
stm32h7xx_hal_conf.h
system_stm32h7xx.c

# STM32U5 - BSD License
system_stm32u5xx.c
clock_stm32u5xx.c

# NUCLEO-U575ZI-Q BSP - BSD License
stm32u5xx_hal_conf.h

# NUCLEO-L467rg BSP - BSD License
stm32l4xx_hal_conf.h

# NUCLEO-F072RB BSP - BSD License
stm32f0xx_hal_conf.h

# NUCLEO-F103RB BSP - BSD License
stm32f1xx_hal_conf.h
system_stm32f1xx.c

# NUCLEO-G0B1RE BSP - BSD License
stm32g0xx_hal_conf.h
system_stm32g0xx.c
clock_stm32g0xx.c

# NUCLEO-G491RE BSP - BSD License
stm32g4xx_hal_conf.h
system_stm32g4xx.c
clock_stm32g4xx.c

# NUCLEO-WB55 BSP - BSD License
stm32wbxx_hal_conf.h

# Microchip PIC32 SDK - BSD License
pic32_init_cache.S
pic32_init_tlb_ebi_sqi.S
cache-err-exception.S
cp0defs.h
simple-tlb-refill-exception.S
crt0.S
p32mz_app.ld
p32mz_boot.ld

# Calliope SDK - BSD Licence
split-calliope_mini.ld

# pic32mx470_6lp_clicker BSP - one BSD licensed file (other are Apache):
# /hw/bsp/pic32mx470_6lp_clicker/src/sbrk.c
pic32mx470_6lp_clicker

# SDK for Apollo2 - MIT/BSD/Apache License
# hw/bsp/apollo2_evb/src/arch/cortex_m4/gcc_startup.s
apollo2_evb

# BSP for Ambiq Apollo2/Apollo3 - BSD License
AmbiqSuite
apollo2.h
system_apollo2.h
system_apollo2.c
apollo_nvic.h
system_apollo3.c
apollo3.h
system_apollo3.h

# CMSIS Cortex-M4, STM32f3 - BSD License.
clock_stm32f3xx.c
system_stm32f3xx.c

# Nucleo-F303K8, Nucleo-F303RE, STM32F3 Discovery - BSD License.
stm32f3xx_hal_conf.h

# Ignore documentation folder
docs

# nrfX - BSD License
nrfx_glue.h
nrfx_config.h

# stm32l1xx - BSD License
clock_stm32l1xx.c
system_stm32l1xx.c

# stm32f1xx - BSD License
clock_stm32f1xx.c

# ARC - BSD License
arc
embarc_emsk

# olimex-p103 - BSD and APL 2.0 License
stm32f1xx_hal_conf.h

# STM32L0xx SDK - BSD License
system_stm32l0xx.c
clock_stm32l0xx.c

# STM32L4xx SDK - BSD License
clock_stm32l4xx.c
system_stm32l4xx.c

# STM32WBxx SDK - BSD License
clock_stm32wbxx.c
system_stm32wbxx.c

# B-L072Z-LRWAN1 BSP - BSD License
stm32l0xx_hal_conf.h

# B-L475E-IOT01A BSP - BSD License
stm32l4xx_hal_conf.h

# bluepill BSP - BSD License
bluepill

# Ruuvitag BSP - BSD License
ruuvitag_rev_b_no_boot.ld
split-ruuvitag_rev_b.ld

# reel_board BSP - BSD License
reel_board_no_boot.ld
split-reel_board.ld

# Dialog DA1469x BSP - BSD and APL2 license
da1469x.ld
da1469x_ram_resident.ld
DA1469xAB.h
cmac.ld
CMAC.h
system_CMAC.h

# Bosch BMP388 driver - BSD License
bmp388.h
bmp388.c
bmp388_priv.h
bmp388_shell.c

# Bosch BMP5 driver - BSD License
bmp5.h
bmp5.c
bmp5_priv.h
bmp5_shell.c

# Nordic NRF5340 SDK - APL2 license
system_nrf5340.c
gcc_startup_nrf5340.s
system_nrf5340_net.c
gcc_startup_nrf5340_net.s

# nucleo-l073rz BSP - BSD License
stm32l0xx_hal_conf.h

# MK64F12 SDK - BSD License
MK64F12

# LVGL configuration file - MIT license
lv_conf.h
