diff --git a/circuit/mkrouter/eagle.epf b/circuit/mkrouter/eagle.epf
index 393fdf7a7c6b086a4310a8102dedf9d9fe4af02d..5b8087795e27b886c6430c4f5eb519593eef4866 100644
--- a/circuit/mkrouter/eagle.epf
+++ b/circuit/mkrouter/eagle.epf
@@ -8,8 +8,6 @@ Desktop="Desktop"
 AutoSaveProject=1
 UsedLibraryUrn="urn:adsk.eagle:library:371"
 UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/transistor-power.lbr"
-UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/BC832.lbr"
-UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/atsam.lbr"
 UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/fab.lbr"
 UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/motors.lbr"
 UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/power.lbr"
@@ -20,19 +18,19 @@ UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/sparkfun/SparkFu
 UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/marekr/borkedlabs-passives.lbr"
 
 [Win_1]
-Type="Schematic Editor"
+Type="Board Editor"
 Loc="0 0 1919 1016"
 State=1
-Number=1
-File="mkrouter.sch"
-View="-37.3431 65.3764 184.551 208.023"
-WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
+Number=2
+File="mkrouter.brd"
+View="2.78266 15.3697 62.859 48.8939"
+WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.254 0.3048 0.2032 0.1524"
 PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
-PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
+PadDrills=" 0.2 0.25 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6 0.3"
 ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
-ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
-HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
-TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
+ViaDrills=" 0.2 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.25 0.3"
+HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3"
+TextSizes=" 0.254 0.3048 0.4064 0.8128 1.27 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016 0.6096 1.4224 1.6764"
 PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
 PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
 MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
@@ -41,14 +39,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
 DimensionExtLengths=" 1.27 2.54 1 2 3 0"
 DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
 SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
-WireBend=0
-WireBendSet=31
+WireBend=4
+WireBendSet=0
 WireCap=1
 MiterStyle=0
 PadShape=0
 ViaShape=1
 PolygonPour=0
-PolygonRank=0
+PolygonRank=1
 PolygonThermals=1
 PolygonOrphans=0
 TextRatio=8
@@ -63,24 +61,22 @@ SwapLevel=0
 ArcDirection=0
 AddLevel=2
 PadsSameType=0
-Layer=91
-Views=" 1: -37.3431 65.3764 184.551 208.023"
-Sheet="1"
+Layer=48
 
 [Win_2]
-Type="Board Editor"
-Loc="0 0 1919 1016"
+Type="Schematic Editor"
+Loc="-8 -8 1911 1008"
 State=1
-Number=2
-File="mkrouter.brd"
-View="-17.6895 10.0557 68.8204 58.3304"
-WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.254 0.3048 0.2032 0.1524"
+Number=1
+File="mkrouter.sch"
+View="-38.8736 18.8994 146.038 137.772"
+WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
 PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
-PadDrills=" 0.2 0.25 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6 0.3"
+PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
 ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
-ViaDrills=" 0.2 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.25 0.3"
-HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3"
-TextSizes=" 0.254 0.3048 0.4064 0.8128 1.27 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016 0.6096 1.4224 1.6764"
+ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
+HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
+TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
 PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
 PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
 MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
@@ -89,14 +85,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
 DimensionExtLengths=" 1.27 2.54 1 2 3 0"
 DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
 SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
-WireBend=4
-WireBendSet=0
+WireBend=0
+WireBendSet=31
 WireCap=1
 MiterStyle=0
 PadShape=0
 ViaShape=1
 PolygonPour=0
-PolygonRank=1
+PolygonRank=0
 PolygonThermals=1
 PolygonOrphans=0
 TextRatio=8
@@ -111,7 +107,9 @@ SwapLevel=0
 ArcDirection=0
 AddLevel=2
 PadsSameType=0
-Layer=48
+Layer=91
+Views=" 1: -38.8736 18.8994 146.038 137.772"
+Sheet="1"
 
 [Win_3]
 Type="Control Panel"
@@ -120,7 +118,7 @@ State=1
 Number=0
 
 [Desktop]
-Screen="1920 1080"
+Screen="3840 1080"
 Window="Win_1"
 Window="Win_2"
 Window="Win_3"
diff --git a/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo b/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo
index dfcfd088ad4adb7233fe54d43453da49d15671a5..07adfb5871f44f430c24eb74dfa487801033f9c2 100644
Binary files a/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo and b/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo differ
diff --git a/embedded/mkrouter-v04/mkrouter-v04/Debug/Makefile b/embedded/mkrouter-v04/mkrouter-v04/Debug/Makefile
index 2164a291f1c4af6b1a794525c683d9246b700647..551e8aa5d5b90a9b5cae4750b1439ba27de4cdc8 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/Debug/Makefile
+++ b/embedded/mkrouter-v04/mkrouter-v04/Debug/Makefile
@@ -79,6 +79,8 @@ SUBDIRS :=  \
 # Add inputs and outputs from these tool invocations to the build variables 
 C_SRCS +=  \
 ../src/pin.c \
+../src/ringbuffer.c \
+../src/uartport.c \
 ../src/ASF/common/services/delay/sam/cycle_counter.c \
 ../src/ASF/common/services/clock/sams70/sysclk.c \
 ../src/ASF/sam/drivers/pmc/pmc.c \
@@ -99,6 +101,8 @@ ASM_SRCS +=
 
 OBJS +=  \
 src/pin.o \
+src/ringbuffer.o \
+src/uartport.o \
 src/ASF/common/services/delay/sam/cycle_counter.o \
 src/ASF/common/services/clock/sams70/sysclk.o \
 src/ASF/sam/drivers/pmc/pmc.o \
@@ -112,6 +116,8 @@ src/main.o
 
 OBJS_AS_ARGS +=  \
 src/pin.o \
+src/ringbuffer.o \
+src/uartport.o \
 src/ASF/common/services/delay/sam/cycle_counter.o \
 src/ASF/common/services/clock/sams70/sysclk.o \
 src/ASF/sam/drivers/pmc/pmc.o \
@@ -125,6 +131,8 @@ src/main.o
 
 C_DEPS +=  \
 src/pin.d \
+src/ringbuffer.d \
+src/uartport.d \
 src/ASF/common/services/delay/sam/cycle_counter.d \
 src/ASF/common/services/clock/sams70/sysclk.d \
 src/ASF/sam/drivers/pmc/pmc.d \
@@ -138,6 +146,8 @@ src/main.d
 
 C_DEPS_AS_ARGS +=  \
 src/pin.d \
+src/ringbuffer.d \
+src/uartport.d \
 src/ASF/common/services/delay/sam/cycle_counter.d \
 src/ASF/common/services/clock/sams70/sysclk.d \
 src/ASF/sam/drivers/pmc/pmc.d \
@@ -182,6 +192,10 @@ LINKER_SCRIPT_DEP+=  \
 
 
 
+
+
+
+
 
 
 
diff --git a/embedded/mkrouter-v04/mkrouter-v04/Debug/makedep.mk b/embedded/mkrouter-v04/mkrouter-v04/Debug/makedep.mk
index 5510f4941bcc59bb46c8b10c35383dd67f2377e9..036b3dcffcc7d01f1e2e3c1e81b8bc4a4f7e78c9 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/Debug/makedep.mk
+++ b/embedded/mkrouter-v04/mkrouter-v04/Debug/makedep.mk
@@ -4,6 +4,10 @@
 
 src\pin.c
 
+src\ringbuffer.c
+
+src\uartport.c
+
 src\ASF\common\services\delay\sam\cycle_counter.c
 
 src\ASF\common\services\clock\sams70\sysclk.c
diff --git a/embedded/mkrouter-v04/mkrouter-v04/mkrouter-v04.cproj b/embedded/mkrouter-v04/mkrouter-v04/mkrouter-v04.cproj
index d234417386804555576f952c38e83646996ebedc..c432f1957ed4154f0c62779ce3559c5e10d8364e 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/mkrouter-v04.cproj
+++ b/embedded/mkrouter-v04/mkrouter-v04/mkrouter-v04.cproj
@@ -30,187 +30,187 @@
     <EraseKey />
     <AsfFrameworkConfig>
       <framework-data>
-  <options>
-    <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />
-    <option id="common.services.basic.clock" value="Add" config="" content-id="Atmel.ASF" />
-    <option id="common.services.delay" value="Add" config="" content-id="Atmel.ASF" />
-    <option id="sam.utils.linker_scripts" value="Add" config="" content-id="Atmel.ASF" />
-  </options>
-  <configurations>
-    <configuration key="config.compiler.armgcc.fpu_used" value="yes" default="yes" content-id="Atmel.ASF" />
-    <configuration key="config.compiler.armgcc.printf" value="iprintf" default="iprintf" content-id="Atmel.ASF" />
-    <configuration key="config.compiler.armgcc.scanf" value="iscanf" default="iscanf" content-id="Atmel.ASF" />
-  </configurations>
-  <files>
-    <file path="src/main.c" framework="" version="" source="common/applications/user_application/main.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/config/conf_board.h" framework="" version="" source="common/applications/user_application/user_board/config/conf_board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/board.h" framework="" version="" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/user_board/init.c" framework="" version="" source="common/boards/user_board/init.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/boards/user_board/user_board.h" framework="" version="" source="common/boards/user_board/user_board.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/interrupt.h" framework="" version="" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/interrupt/interrupt_sam_nvic.c" framework="" version="" source="common/utils/interrupt/interrupt_sam_nvic.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/interrupt/interrupt_sam_nvic.h" framework="" version="" source="common/utils/interrupt/interrupt_sam_nvic.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/utils/parts.h" framework="" version="" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/acc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/acc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/aes.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/aes.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/afec.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/afec.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/chipid.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/chipid.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/dacc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/dacc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/efc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/efc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/gpbr.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/gpbr.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/hsmci.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/hsmci.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/i2sc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/i2sc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/icm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/icm.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/isi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/isi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/matrix.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/matrix.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pio.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pio.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pmc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pmc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pwm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pwm.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/qspi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/qspi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rstc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rstc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rswdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rswdt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rtc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rtc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rtt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rtt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/sdramc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/sdramc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/smc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/smc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/spi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/spi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/ssc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/ssc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/supc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/supc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/tc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/tc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/trng.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/trng.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/twihs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/twihs.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/uart.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/uart.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/usart.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/usart.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/usbhs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/usbhs.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/utmi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/utmi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/wdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/wdt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/component/xdmac.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/xdmac.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/acc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/acc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/aes.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/aes.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/afec0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/afec0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/afec1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/afec1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/chipid.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/chipid.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/dacc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/dacc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/efc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/efc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/gpbr.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/gpbr.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/hsmci.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/hsmci.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/i2sc0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/i2sc0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/i2sc1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/i2sc1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/icm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/icm.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/isi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/isi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/matrix.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/matrix.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioa.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioa.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/piob.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/piob.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/piod.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/piod.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioe.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioe.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pmc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pmc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pwm0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pwm0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pwm1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pwm1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/qspi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/qspi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rstc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rstc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rswdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rswdt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rtc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rtc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rtt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rtt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/sdramc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/sdramc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/smc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/smc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/spi0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/spi0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/spi1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/spi1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/ssc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/ssc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/supc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/supc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc2.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc3.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc3.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/trng.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/trng.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs2.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart2.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart3.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart3.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart4.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart4.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart0.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart1.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart2.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usbhs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usbhs.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/utmi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/utmi.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/wdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/wdt.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/xdmac.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/xdmac.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q19.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q20.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q21.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/gcc/startup_sams70.c" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/gcc/startup_sams70.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/system_sams70.c" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/system_sams70.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/system_sams70.h" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/system_sams70.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/compiler.h" framework="" version="" source="sam/utils/compiler.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/fpu/fpu.h" framework="" version="" source="sam/utils/fpu/fpu.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/header_files/io.h" framework="" version="" source="sam/utils/header_files/io.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/linker_scripts/sams70/sams70n20/gcc/flash.ld" framework="" version="" source="sam/utils/linker_scripts/sams70/sams70n20/gcc/flash.ld" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/make/Makefile.sam.in" framework="" version="" source="sam/utils/make/Makefile.sam.in" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/preprocessor/mrepeat.h" framework="" version="" source="sam/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/preprocessor/preprocessor.h" framework="" version="" source="sam/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/preprocessor/stringz.h" framework="" version="" source="sam/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/preprocessor/tpaste.h" framework="" version="" source="sam/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/status_codes.h" framework="" version="" source="sam/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/utils/syscalls/gcc/syscalls.c" framework="" version="" source="sam/utils/syscalls/gcc/syscalls.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt" framework="" version="" source="thirdparty/CMSIS/ATMEL-disclaimer.txt" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf" framework="" version="" source="thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_common_tables.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_const_structs.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/arm_math.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_math.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/core_cm7.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cm7.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmFunc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmInstr.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Include/core_cmSimd.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmSimd.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a" framework="" version="" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a" framework="" version="" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/Lib/license.txt" framework="" version="" source="thirdparty/CMSIS/Lib/license.txt" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/README.txt" framework="" version="" source="thirdparty/CMSIS/README.txt" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/thirdparty/CMSIS/license.txt" framework="" version="" source="thirdparty/CMSIS/license.txt" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/drivers/pmc/pmc.c" framework="" version="3.36.2" source="sam\drivers\pmc\pmc.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/drivers/pmc/sleep.c" framework="" version="3.36.2" source="sam\drivers\pmc\sleep.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/drivers/pmc/pmc.h" framework="" version="3.36.2" source="sam\drivers\pmc\pmc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/sam/drivers/pmc/sleep.h" framework="" version="3.36.2" source="sam\drivers\pmc\sleep.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sams70/sysclk.c" framework="" version="3.36.2" source="common\services\clock\sams70\sysclk.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sams70/pll.h" framework="" version="3.36.2" source="common\services\clock\sams70\pll.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/genclk.h" framework="" version="3.36.2" source="common\services\clock\genclk.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/osc.h" framework="" version="3.36.2" source="common\services\clock\osc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sams70/sysclk.h" framework="" version="3.36.2" source="common\services\clock\sams70\sysclk.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sams70/genclk.h" framework="" version="3.36.2" source="common\services\clock\sams70\genclk.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sams70/osc.h" framework="" version="3.36.2" source="common\services\clock\sams70\osc.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/sysclk.h" framework="" version="3.36.2" source="common\services\clock\sysclk.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/clock/pll.h" framework="" version="3.36.2" source="common\services\clock\pll.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/Config/conf_clock.h" framework="" version="3.36.2" source="common\services\clock\sams70\module_config\conf_clock.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/delay/sam/cycle_counter.c" framework="" version="3.36.2" source="common\services\delay\sam\cycle_counter.c" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/delay/sam/cycle_counter.h" framework="" version="3.36.2" source="common\services\delay\sam\cycle_counter.h" changed="False" content-id="Atmel.ASF" />
-    <file path="src/ASF/common/services/delay/delay.h" framework="" version="3.36.2" source="common\services\delay\delay.h" changed="False" content-id="Atmel.ASF" />
-  </files>
-  <documentation help="http://asf.atmel.com/docs/3.36.2/common.applications.user_application.user_board.sams70n20/html/index.html" />
-  <offline-documentation help="" />
-  <dependencies>
-    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.36.2" />
-  </dependencies>
-  <project id="common.applications.user_application.user_board.sams70n20" value="Add" config="" content-id="Atmel.ASF" />
-  <board id="board.user_board.sams70n20" value="Add" config="" content-id="Atmel.ASF" />
-</framework-data>
+        <options>
+          <option id="common.boards" value="Add" config="" content-id="Atmel.ASF" />
+          <option id="common.services.basic.clock" value="Add" config="" content-id="Atmel.ASF" />
+          <option id="common.services.delay" value="Add" config="" content-id="Atmel.ASF" />
+          <option id="sam.utils.linker_scripts" value="Add" config="" content-id="Atmel.ASF" />
+        </options>
+        <configurations>
+          <configuration key="config.compiler.armgcc.fpu_used" value="yes" default="yes" content-id="Atmel.ASF" />
+          <configuration key="config.compiler.armgcc.printf" value="iprintf" default="iprintf" content-id="Atmel.ASF" />
+          <configuration key="config.compiler.armgcc.scanf" value="iscanf" default="iscanf" content-id="Atmel.ASF" />
+        </configurations>
+        <files>
+          <file path="src/main.c" framework="" version="" source="common/applications/user_application/main.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/config/conf_board.h" framework="" version="" source="common/applications/user_application/user_board/config/conf_board.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/boards/board.h" framework="" version="" source="common/boards/board.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/boards/user_board/init.c" framework="" version="" source="common/boards/user_board/init.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/boards/user_board/user_board.h" framework="" version="" source="common/boards/user_board/user_board.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/utils/interrupt.h" framework="" version="" source="common/utils/interrupt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/utils/interrupt/interrupt_sam_nvic.c" framework="" version="" source="common/utils/interrupt/interrupt_sam_nvic.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/utils/interrupt/interrupt_sam_nvic.h" framework="" version="" source="common/utils/interrupt/interrupt_sam_nvic.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/utils/parts.h" framework="" version="" source="common/utils/parts.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/acc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/acc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/aes.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/aes.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/afec.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/afec.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/chipid.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/chipid.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/dacc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/dacc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/efc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/efc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/gpbr.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/gpbr.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/hsmci.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/hsmci.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/i2sc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/i2sc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/icm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/icm.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/isi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/isi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/matrix.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/matrix.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pio.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pio.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pmc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pmc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/pwm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/pwm.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/qspi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/qspi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rstc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rstc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rswdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rswdt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rtc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rtc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/rtt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/rtt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/sdramc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/sdramc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/smc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/smc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/spi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/spi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/ssc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/ssc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/supc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/supc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/tc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/tc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/trng.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/trng.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/twihs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/twihs.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/uart.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/uart.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/usart.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/usart.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/usbhs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/usbhs.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/utmi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/utmi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/wdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/wdt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/component/xdmac.h" framework="" version="" source="sam/utils/cmsis/sams70/include/component/xdmac.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/acc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/acc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/aes.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/aes.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/afec0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/afec0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/afec1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/afec1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/chipid.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/chipid.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/dacc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/dacc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/efc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/efc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/gpbr.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/gpbr.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/hsmci.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/hsmci.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/i2sc0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/i2sc0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/i2sc1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/i2sc1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/icm.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/icm.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/isi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/isi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/matrix.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/matrix.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioa.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioa.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/piob.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/piob.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/piod.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/piod.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pioe.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pioe.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pmc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pmc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pwm0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pwm0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/pwm1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/pwm1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/qspi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/qspi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rstc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rstc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rswdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rswdt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rtc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rtc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/rtt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/rtt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/sdramc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/sdramc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/smc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/smc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/spi0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/spi0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/spi1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/spi1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/ssc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/ssc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/supc.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/supc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc2.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/tc3.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/tc3.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/trng.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/trng.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/twihs2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/twihs2.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart2.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart3.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart3.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/uart4.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/uart4.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart0.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart0.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart1.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart1.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usart2.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usart2.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/usbhs.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/usbhs.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/utmi.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/utmi.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/wdt.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/wdt.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/instance/xdmac.h" framework="" version="" source="sam/utils/cmsis/sams70/include/instance/xdmac.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70j21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70j21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70n21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70n21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/pio/sams70q21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/pio/sams70q21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70j21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70j21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70n21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70n21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q19.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q19.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q20.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q20.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/include/sams70q21.h" framework="" version="" source="sam/utils/cmsis/sams70/include/sams70q21.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/gcc/startup_sams70.c" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/gcc/startup_sams70.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/system_sams70.c" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/system_sams70.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/cmsis/sams70/source/templates/system_sams70.h" framework="" version="" source="sam/utils/cmsis/sams70/source/templates/system_sams70.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/compiler.h" framework="" version="" source="sam/utils/compiler.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/fpu/fpu.h" framework="" version="" source="sam/utils/fpu/fpu.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/header_files/io.h" framework="" version="" source="sam/utils/header_files/io.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/linker_scripts/sams70/sams70n20/gcc/flash.ld" framework="" version="" source="sam/utils/linker_scripts/sams70/sams70n20/gcc/flash.ld" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/make/Makefile.sam.in" framework="" version="" source="sam/utils/make/Makefile.sam.in" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/preprocessor/mrepeat.h" framework="" version="" source="sam/utils/preprocessor/mrepeat.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/preprocessor/preprocessor.h" framework="" version="" source="sam/utils/preprocessor/preprocessor.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/preprocessor/stringz.h" framework="" version="" source="sam/utils/preprocessor/stringz.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/preprocessor/tpaste.h" framework="" version="" source="sam/utils/preprocessor/tpaste.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/status_codes.h" framework="" version="" source="sam/utils/status_codes.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/utils/syscalls/gcc/syscalls.c" framework="" version="" source="sam/utils/syscalls/gcc/syscalls.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/ATMEL-disclaimer.txt" framework="" version="" source="thirdparty/CMSIS/ATMEL-disclaimer.txt" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf" framework="" version="" source="thirdparty/CMSIS/CMSIS_END_USER_LICENCE_AGREEMENT.pdf" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/arm_common_tables.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_common_tables.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/arm_const_structs.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_const_structs.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/arm_math.h" framework="" version="" source="thirdparty/CMSIS/Include/arm_math.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/core_cm7.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cm7.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/core_cmFunc.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmFunc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/core_cmInstr.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmInstr.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Include/core_cmSimd.h" framework="" version="" source="thirdparty/CMSIS/Include/core_cmSimd.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a" framework="" version="" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a" framework="" version="" source="thirdparty/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math_softfp.a" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/Lib/license.txt" framework="" version="" source="thirdparty/CMSIS/Lib/license.txt" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/README.txt" framework="" version="" source="thirdparty/CMSIS/README.txt" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/thirdparty/CMSIS/license.txt" framework="" version="" source="thirdparty/CMSIS/license.txt" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/drivers/pmc/pmc.c" framework="" version="3.36.2" source="sam\drivers\pmc\pmc.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/drivers/pmc/sleep.c" framework="" version="3.36.2" source="sam\drivers\pmc\sleep.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/drivers/pmc/pmc.h" framework="" version="3.36.2" source="sam\drivers\pmc\pmc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/sam/drivers/pmc/sleep.h" framework="" version="3.36.2" source="sam\drivers\pmc\sleep.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sams70/sysclk.c" framework="" version="3.36.2" source="common\services\clock\sams70\sysclk.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sams70/pll.h" framework="" version="3.36.2" source="common\services\clock\sams70\pll.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/genclk.h" framework="" version="3.36.2" source="common\services\clock\genclk.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/osc.h" framework="" version="3.36.2" source="common\services\clock\osc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sams70/sysclk.h" framework="" version="3.36.2" source="common\services\clock\sams70\sysclk.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sams70/genclk.h" framework="" version="3.36.2" source="common\services\clock\sams70\genclk.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sams70/osc.h" framework="" version="3.36.2" source="common\services\clock\sams70\osc.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/sysclk.h" framework="" version="3.36.2" source="common\services\clock\sysclk.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/clock/pll.h" framework="" version="3.36.2" source="common\services\clock\pll.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/Config/conf_clock.h" framework="" version="3.36.2" source="common\services\clock\sams70\module_config\conf_clock.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/delay/sam/cycle_counter.c" framework="" version="3.36.2" source="common\services\delay\sam\cycle_counter.c" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/delay/sam/cycle_counter.h" framework="" version="3.36.2" source="common\services\delay\sam\cycle_counter.h" changed="False" content-id="Atmel.ASF" />
+          <file path="src/ASF/common/services/delay/delay.h" framework="" version="3.36.2" source="common\services\delay\delay.h" changed="False" content-id="Atmel.ASF" />
+        </files>
+        <documentation help="http://asf.atmel.com/docs/3.36.2/common.applications.user_application.user_board.sams70n20/html/index.html" />
+        <offline-documentation help="" />
+        <dependencies>
+          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.36.2" />
+        </dependencies>
+        <project id="common.applications.user_application.user_board.sams70n20" value="Add" config="" content-id="Atmel.ASF" />
+        <board id="board.user_board.sams70n20" value="Add" config="" content-id="Atmel.ASF" />
+      </framework-data>
     </AsfFrameworkConfig>
     <avrtool>com.atmel.avrdbg.tool.atmelice</avrtool>
     <avrtoolserialnumber>J41800087098</avrtoolserialnumber>
@@ -483,6 +483,18 @@
     <Compile Include="src\pin.h">
       <SubType>compile</SubType>
     </Compile>
+    <Compile Include="src\ringbuffer.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="src\ringbuffer.h">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="src\uartport.c">
+      <SubType>compile</SubType>
+    </Compile>
+    <Compile Include="src\uartport.h">
+      <SubType>compile</SubType>
+    </Compile>
     <None Include="src\ASF\common\services\delay\delay.h">
       <SubType>compile</SubType>
     </None>
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/config/conf_clock.h b/embedded/mkrouter-v04/mkrouter-v04/src/config/conf_clock.h
index 36761cd93157b7d69412f653290c69df1ec812dd..fc7bc759d7d31e3568625fdd0207c1e01068f728 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/src/config/conf_clock.h
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/config/conf_clock.h
@@ -52,11 +52,11 @@
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_XTAL
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_BYPASS
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_4M_RC
-#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_8M_RC
+//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_8M_RC
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_12M_RC
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_XTAL
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_BYPASS
-//#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLLACK
+#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLLACK
 //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_UPLLCK
 
 // ===== Processor Clock (HCLK) Prescaler Options   (Fhclk = Fsys / (SYSCLK_PRES))
@@ -70,11 +70,11 @@
 //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_3
 
 // ===== System Clock (MCK) Division Options     (Fmck = Fhclk / (SYSCLK_DIV))
-#define CONFIG_SYSCLK_DIV            1
+#define CONFIG_SYSCLK_DIV            2
 
 // ===== PLL0 (A) Options   (Fpll = (Fclk * PLL_mul) / PLL_div)
 // Use mul and div effective values here.
-#define CONFIG_PLL0_SOURCE          PLL_SRC_MAINCK_XTAL
+#define CONFIG_PLL0_SOURCE          PLL_SRC_MAINCK_12M_RC
 #define CONFIG_PLL0_MUL             25
 #define CONFIG_PLL0_DIV             1
 
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h b/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h
index c1c4333db559d34726982579cae927662b1a722b..f35e5f0853ae794bac1efc284ca65f1db282c2cd 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h
@@ -10,10 +10,29 @@
 #define HARDWARE_H_
 
 #include "pin.h"
+#include "ringbuffer.h"
+#include "uartport.h"
 
+// status lights
 pin_t np1stlr;
-pin_t np1stlg;
 pin_t np1stlb;
+pin_t np2stlr;
+pin_t np2stlb;
+pin_t np3stlr;
+pin_t np3stlb;
+pin_t np4stlr;
+pin_t np4stlb;
+pin_t np5stlr;
+pin_t np5stlb;
+pin_t *lights[] = {&np1stlr, &np1stlb, &np2stlr, &np2stlb, &np3stlr, &np3stlb, &np4stlr, &np4stlb, &np5stlr, &np5stlb};
+
+// ringbuffers
+ringbuffer_t np1rbrx;
+ringbuffer_t np1rbtx;
+
+// uartports
+uartport_t up1;
+uartport_t up2;
 
 
 #endif /* HARDWARE_H_ */
\ No newline at end of file
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/main.c b/embedded/mkrouter-v04/mkrouter-v04/src/main.c
index 08546a6b937e2fa69868c265e77c9a44d175bf0c..9bd05942d1e48f812cb5000916bfe403c9f21554 100644
--- a/embedded/mkrouter-v04/mkrouter-v04/src/main.c
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/main.c
@@ -32,13 +32,59 @@
 
 #include "hardware.h"
 
-void messysetup(void){
+void setupperipherals(void){
 	// kill the watchdog
 	WDT->WDT_MR = WDT_MR_WDDIS;
 	
 	// start relevant peripheral clocks
 	PMC->PMC_PCER0 = 1 << ID_PIOA;
 	PMC->PMC_PCER0 = 1 << ID_PIOD;
+	
+	// start uart clocks
+	PMC->PMC_PCER0 = 1 << ID_UART0;
+	//PMC->PMC_PCER0 = 1 << ID_UART1;
+	//PMC->PMC_PCER1 = 1 << (ID_UART2 - 32);
+}
+
+void setupinterrupts(void){
+	NVIC_DisableIRQ(UART0_IRQn);
+	NVIC_ClearPendingIRQ(UART0_IRQn);
+	NVIC_SetPriority(UART0_IRQn, 8);
+	NVIC_EnableIRQ(UART0_IRQn);
+}
+
+void lightsetup(void){
+	np1stlr = pin_new(PIOD, PIO_PER_P12);
+	pin_output(&np1stlr);
+	np1stlb = pin_new(PIOA, PIO_PER_P2);
+	pin_output(&np1stlb);
+	
+	np2stlr = pin_new(PIOA, PIO_PER_P11);
+	pin_output(&np2stlr);
+	np2stlb = pin_new(PIOD, PIO_PER_P20);
+	pin_output(&np2stlb);
+	
+	np3stlr = pin_new(PIOA, PIO_PER_P15);
+	pin_output(&np3stlr);
+	np3stlb = pin_new(PIOD, PIO_PER_P27);
+	pin_output(&np3stlb);
+	
+	np4stlr = pin_new(PIOA, PIO_PER_P22);
+	pin_output(&np4stlr);
+	np4stlb = pin_new(PIOA, PIO_PER_P8);
+	pin_output(&np4stlb);
+	
+	np5stlr = pin_new(PIOB, PIO_PER_P0);
+	pin_output(&np5stlr);
+	np5stlb = pin_new(PIOB, PIO_PER_P1);
+	pin_output(&np5stlb);
+}
+
+void lightstoggle(void){
+	for(int i = 0; i < 10; i++){
+		pin_toggle(lights[i]);
+	}
+	
 }
 
 int main (void)
@@ -47,28 +93,38 @@ int main (void)
 	// I think we can do 300, are at 150
 	board_init();
 	
-	//NP1 (0) 
-	// STLR PD12
-	// STLG PA3
-	// STLB PA2
+	setupperipherals();
+	setupinterrupts();
 	
-	messysetup();
+	lightsetup();
+	
+	rb_init(&np1rbrx);
+	rb_init(&np1rbtx);
+	
+	// UP1 on UART0, RX 9 TX 10 on PIOA
+	up1 = uart_new(UART0, PIOA, 9, 10, &np1rbrx, &np1rbtx);
+	uart_init(&up1, 81);
+	
+	/*
+	// UP2 on UART1, RX 5 TX 4 on PIOA
+	up2 = uart_new(UART1, PIOA, 5, 4, &np1rbrx, &np1rbtx);
+	uart_init(&up2, 81); // 81 for FTDI 115200 :|
+	*/
 	
-	np1stlr = pin_new(PIOA, PIO_PER_P11);
-	pin_output(&np1stlr);
-	np1stlg = pin_new(PIOD, PIO_PER_P21);
-	pin_output(&np1stlg);
-	np1stlb = pin_new(PIOD, PIO_PER_P20);
-	pin_output(&np1stlb);
-
 	while(1){
-		pin_set(&np1stlr);
-		pin_set(&np1stlg);
-		pin_set(&np1stlb);
-		delay_ms(100);
-		pin_clear(&np1stlr);
-		pin_clear(&np1stlg);
-		pin_clear(&np1stlb);
-		delay_ms(100);
+		lightstoggle();
+		/*
+		uint8_t hello[] = {'h', 'e', 'l', 'l', 'o'};
+		if(!rb_empty(up1.rbrx)){
+			uart_sendchars_buffered(&up1, hello, 5);
+			uart_sendchar_buffered(&up1, rb_get(up1.rbrx));
+		}
+		*/
+		delay_ms(75);
 	}
-}
\ No newline at end of file
+}
+
+void UART0_Handler(void){
+	uart_handler(&up1);
+}
+
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.c b/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.c
new file mode 100644
index 0000000000000000000000000000000000000000..8166854f1cf4f710b61dd4f0fc0f041857492635
--- /dev/null
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.c
@@ -0,0 +1,67 @@
+/*
+ * ringbuffer.c
+ *
+ * Created: 2/7/2018 11:39:44 AM
+ *  Author: Jake
+ */ 
+
+#include "ringbuffer.h"
+
+uint8_t rb_init(ringbuffer_t *rb){
+	rb->size = RINGBUFFER_SIZE; // stuck with this, due to not having malloc, wall of skill
+	//rb->buffer = malloc(size);
+	rb_reset(rb);
+	return 1;
+}
+
+uint8_t rb_reset(ringbuffer_t *rb){
+	if(rb){
+		rb->head = 0;
+		rb->tail = 0;
+		return 1;
+	} else {
+		return 0;
+	}
+}
+
+uint8_t rb_empty(ringbuffer_t *rb){
+	return (rb->head == rb->tail);
+}
+
+uint8_t rb_full(ringbuffer_t *rb){
+	return ((rb->head + 1) % rb->size) == rb->tail;
+}
+
+uint8_t rb_freespace(ringbuffer_t *rb){
+	if(rb->head >= rb->tail){
+		return rb->size - (rb->head - rb->tail);
+	} else {
+		return rb->tail - rb->head - 1;
+	}
+}
+
+uint8_t rb_putchar(ringbuffer_t *rb, uint8_t data){
+	rb->buffer[rb->head] = data;
+	rb->head = (rb->head + 1) % rb->size; // increment and loop about
+	return 1;
+}
+
+uint8_t rb_putdata(ringbuffer_t *rb, uint8_t *data, uint8_t size){
+	if(rb_freespace(rb) >= size){
+		return 0;
+	} else {
+		uint8_t i = 0;
+		while(i < size){
+			rb_putchar(rb, data[i]);
+			i ++;
+		}
+		return 1;
+	}
+}
+
+uint8_t rb_get(ringbuffer_t *rb){
+	uint8_t data = rb->buffer[rb->tail];
+	rb->tail = (rb->tail + 1) % rb->size;
+	return data;
+}
+
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.h b/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e27fd59543df219411ddda54b658c7b38c6e724
--- /dev/null
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/ringbuffer.h
@@ -0,0 +1,43 @@
+/*
+ * ringbuffer.h
+ *
+ * Created: 2/7/2018 11:39:54 AM
+ *  Author: Jake
+ */ 
+
+#ifndef RINGBUFFER_H_
+#define RINGBUFFER_H_
+
+/*
+a ringbuffer,
+s/o https://github.com/dhess/c-ringbuf
+s/o https://embeddedartistry.com/blog/2017/4/6/circular-buffers-in-cc
+s/o https://www.downtowndougbrown.com/2013/01/microcontrollers-interrupt-safe-ring-buffers/
+*/
+
+#include <stdlib.h> // for size_t
+#include <asf.h>
+
+#define RINGBUFFER_SIZE 256
+
+typedef struct{
+	uint8_t buffer[256]; // static! big enough
+	size_t head;
+	size_t tail;
+	size_t size;
+} ringbuffer_t;
+
+uint8_t rb_init(ringbuffer_t *rb);
+
+uint8_t rb_reset(ringbuffer_t *rb);
+
+uint8_t rb_empty(ringbuffer_t *rb);
+uint8_t rb_full(ringbuffer_t *rb);
+uint8_t rb_freespace(ringbuffer_t *rb);
+
+uint8_t rb_putchar(ringbuffer_t *rb, uint8_t data);
+uint8_t rb_putdata(ringbuffer_t *rb, uint8_t *data, uint8_t size);
+
+uint8_t rb_get(ringbuffer_t *rb);
+
+#endif /* RINGBUFFER_H_ */
\ No newline at end of file
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c
new file mode 100644
index 0000000000000000000000000000000000000000..25828915b60e22e26eebf75d897794a0f6cd2d8f
--- /dev/null
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c
@@ -0,0 +1,81 @@
+/*
+ * uartport.c
+ *
+ * Created: 2/22/2018 11:17:00 AM
+ *  Author: Jake
+ */ 
+
+#include "uartport.h"
+
+uartport_t uart_new(Uart *com, Pio *port, uint32_t pinrx, uint32_t pintx, ringbuffer_t *rbrx, ringbuffer_t *rbtx){
+	uartport_t uart;
+	
+	uart.com = com;
+	uart.port = port;
+	
+	uart.pinrx = pinrx;
+	uart.pinrx_bm = 1 << pinrx;
+	uart.pintx = pintx;
+	uart.pintx_bm = 1 << pintx;
+	
+	uart.rbrx = rbrx;
+	uart.rbtx = rbtx;
+	
+	return uart;
+}
+
+void uart_init(uartport_t *uart, uint32_t baud){
+	// PIO disable
+	uart->port->PIO_PDR = uart->pinrx_bm | uart->pintx_bm;
+	
+	// abcdsr (global, do later)
+	
+	// UART Registers
+	// mode register
+	uart->com->UART_MR = UART_MR_BRSRCCK_PERIPH_CLK | UART_MR_CHMODE_NORMAL | UART_MR_PAR_NO | UART_MR_FILTER_DISABLED;
+	// baud: freq ?
+	uart->com->UART_BRGR = baud;
+	// channel enable
+	uart->com->UART_CR = UART_CR_TXEN | UART_CR_RXEN;
+	// interrupt enable (rx only, tx on data)
+	uart->com->UART_IER = UART_IER_RXRDY;
+	
+	rb_reset(uart->rbrx);
+	rb_reset(uart->rbtx);
+}
+
+void uart_sendchar_polled(uartport_t *uart, uint8_t data){
+	while(!(uart->com->UART_SR & UART_SR_TXRDY));
+	uart->com->UART_THR = data;
+}
+
+void uart_sendchar_buffered(uartport_t *uart, uint8_t data){
+	rb_putchar(uart->rbtx, data);
+	uart->com->UART_IER = UART_IER_TXRDY;
+}
+
+void uart_sendchars_buffered(uartport_t *uart, uint8_t *data, uint8_t length){
+	rb_putdata(uart->rbtx, data, length);
+	uart->com->UART_IER = UART_IER_TXRDY;
+}
+
+void uart_handler(uartport_t *uart){
+	if(uart->com->UART_SR & UART_SR_RXRDY){
+		uart_rxhandler(uart);
+	}
+	if((uart->com->UART_SR & UART_SR_TXRDY) && (uart->com->UART_IMR & UART_IMR_TXRDY)){
+		uart_txhandler(uart);
+	}
+}
+
+void uart_rxhandler(uartport_t *uart){
+	rb_putchar(uart->rbrx, uart->com->UART_RHR);
+}
+
+void uart_txhandler(uartport_t *uart){
+	if(!rb_empty(uart->rbtx)){
+		uart->com->UART_THR = rb_get(uart->rbtx); // transmit if non-empty
+	} else {
+		uart->com->UART_IDR = UART_IDR_TXRDY; // or turn this interrupt off
+	}
+}
\ No newline at end of file
diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h
new file mode 100644
index 0000000000000000000000000000000000000000..d38ecd0cb12d622bd79aca2cb6fde7093434cd36
--- /dev/null
+++ b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h
@@ -0,0 +1,45 @@
+/*
+ * uartport.h
+ *
+ * Created: 2/22/2018 11:16:41 AM
+ *  Author: Jake
+ */ 
+
+
+#ifndef UARTPORT_H_
+#define UARTPORT_H_
+
+#include <asf.h>
+#include "ringbuffer.h"
+
+#define UART_IS_PERIPHERAL_A 0x01
+#define UART_IS_PERIPHERAL_B 0x02
+#define UART_IS_PERIPHERAL_C 0x03
+#define UART_IS_PERIPHERAL_D 0x04
+
+typedef struct{
+	Uart *com;
+	Pio *port;
+		
+	uint32_t pinrx;
+	uint32_t pinrx_bm;
+	uint32_t pintx;
+	uint32_t pintx_bm;
+	
+	ringbuffer_t *rbrx;
+	ringbuffer_t *rbtx;
+}uartport_t;
+
+uartport_t uart_new(Uart *uart, Pio *port, uint32_t pinrx, uint32_t pintx, ringbuffer_t *rbrx, ringbuffer_t *rbtx);
+
+void uart_init(uartport_t *uart, uint32_t baud);
+
+void uart_sendchar_polled(uartport_t *uart, uint8_t data);
+void uart_sendchar_buffered(uartport_t *uart, uint8_t data);
+void uart_sendchars_buffered(uartport_t *uart, uint8_t *data, uint8_t length);
+
+void uart_handler(uartport_t *uart);
+void uart_rxhandler(uartport_t *uart);
+void uart_txhandler(uartport_t *uart);
+
+#endif /* UARTPORT_H_ */
\ No newline at end of file