diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..35a4b8ad6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +lst/ +obj/ +*.dep +*.uvgui.* +*.uvgui_*.bak +*.uvguix.* +*.uvguix_*.bak +*.uvoptx +*_uvopt.bak +*_uvoptx.bak +*_uvproj.bak +*_uvprojx.bak +*.ctx +*.dbi +*.xdb +*.svn \ No newline at end of file diff --git a/Doc/Bleeper-v2-schematic.pdf b/Doc/Bleeper-72-schematic.pdf similarity index 100% rename from Doc/Bleeper-v2-schematic.pdf rename to Doc/Bleeper-72-schematic.pdf diff --git a/Doc/Bleeper-76-schematic.pdf b/Doc/Bleeper-76-schematic.pdf new file mode 100644 index 000000000..0b0abfa71 Binary files /dev/null and b/Doc/Bleeper-76-schematic.pdf differ diff --git a/Doc/LoRa MAC Specification.pdf b/Doc/LoRa MAC Specification.pdf deleted file mode 100644 index e77cf582f..000000000 Binary files a/Doc/LoRa MAC Specification.pdf and /dev/null differ diff --git a/Doc/SensorNode-schematic.pdf b/Doc/SensorNode-schematic.pdf new file mode 100644 index 000000000..5efa981f6 Binary files /dev/null and b/Doc/SensorNode-schematic.pdf differ diff --git a/Keil/Bleeper/LoRaMac/classA/LoRaMac.uvopt b/Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvopt similarity index 95% rename from Keil/Bleeper/LoRaMac/classA/LoRaMac.uvopt rename to Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvopt index 0a0869442..29adc7989 100644 --- a/Keil/Bleeper/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvopt @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -198,12 +200,12 @@ 1 0 0 - 0 + 43 0 - 72 - 73 + 292 + 332 0 - ..\..\..\..\src\apps\LoRaMac\classA\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-72\main.c main.c 0 0 @@ -211,7 +213,7 @@ - boards\Bleeper + boards\Bleeper-72 1 0 0 @@ -227,7 +229,7 @@ 153 141 0 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c board.c 0 0 @@ -243,7 +245,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c gpio-board.c 0 0 @@ -259,7 +261,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c i2c-board.c 0 0 @@ -275,7 +277,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c rtc-board.c 0 0 @@ -291,7 +293,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c spi-board.c 0 0 @@ -307,7 +309,7 @@ 10 28 0 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c sx1272-board.c 0 0 @@ -323,7 +325,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c timer-board.c 0 0 @@ -331,7 +333,7 @@ - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis 0 0 0 @@ -347,7 +349,7 @@ 139 1 0 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s startup_stm32l1xx_hd.s 0 0 @@ -363,7 +365,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -371,7 +373,7 @@ - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver 0 0 0 diff --git a/Keil/Bleeper/LoRaMac/classA/LoRaMac.uvproj b/Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvproj similarity index 93% rename from Keil/Bleeper/LoRaMac/classA/LoRaMac.uvproj rename to Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvproj index 91568678b..c780a5d9d 100644 --- a/Keil/Bleeper/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/Bleeper-72/LoRaMac/classA/LoRaMac.uvproj @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE + + USE_DEBUGGER LOW_POWER_MODE_ENABLE - ..\..\..\..\src;..\..\..\..\src\boards\Bleeper;..\..\..\..\src\boards\Bleeper\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-72;..\..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,67 +407,67 @@ main.c 1 - ..\..\..\..\src\apps\LoRaMac\classA\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-72\main.c - boards\Bleeper + boards\Bleeper-72 board.c 1 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c gpio-board.c 1 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c i2c-board.c 1 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c rtc-board.c 1 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c spi-board.c 1 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c sx1272-board.c 1 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c timer-board.c 1 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis startup_stm32l1xx_hd.s 2 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s system_stm32l1xx.c 1 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver misc.c diff --git a/Keil/Bleeper/LoRaMac/classB/LoRaMac.uvopt b/Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvopt similarity index 95% rename from Keil/Bleeper/LoRaMac/classB/LoRaMac.uvopt rename to Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvopt index 2d7ecbc6f..ba3c95d36 100644 --- a/Keil/Bleeper/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvopt @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -198,12 +200,12 @@ 1 0 0 - 0 + 43 0 - 72 - 73 + 292 + 332 0 - ..\..\..\..\src\apps\LoRaMac\classB\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-72\main.c main.c 0 0 @@ -211,7 +213,7 @@ - boards\Bleeper + boards\Bleeper-72 1 0 0 @@ -227,7 +229,7 @@ 153 141 0 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c board.c 0 0 @@ -243,7 +245,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c gpio-board.c 0 0 @@ -259,7 +261,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c i2c-board.c 0 0 @@ -275,7 +277,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c rtc-board.c 0 0 @@ -291,7 +293,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c spi-board.c 0 0 @@ -307,7 +309,7 @@ 10 28 0 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c sx1272-board.c 0 0 @@ -323,7 +325,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c timer-board.c 0 0 @@ -331,7 +333,7 @@ - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis 0 0 0 @@ -347,7 +349,7 @@ 139 1 0 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s startup_stm32l1xx_hd.s 0 0 @@ -363,7 +365,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -371,7 +373,7 @@ - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver 0 0 0 diff --git a/Keil/Bleeper/LoRaMac/classB/LoRaMac.uvproj b/Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvproj similarity index 93% rename from Keil/Bleeper/LoRaMac/classB/LoRaMac.uvproj rename to Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvproj index 53c0c36db..ac03c2a2a 100644 --- a/Keil/Bleeper/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/Bleeper-72/LoRaMac/classB/LoRaMac.uvproj @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE + + USE_DEBUGGER LOW_POWER_MODE_ENABLE - ..\..\..\..\src;..\..\..\..\src\boards\Bleeper;..\..\..\..\src\boards\Bleeper\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-72;..\..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,67 +407,67 @@ main.c 1 - ..\..\..\..\src\apps\LoRaMac\classB\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-72\main.c - boards\Bleeper + boards\Bleeper-72 board.c 1 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c gpio-board.c 1 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c i2c-board.c 1 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c rtc-board.c 1 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c spi-board.c 1 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c sx1272-board.c 1 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c timer-board.c 1 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis startup_stm32l1xx_hd.s 2 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s system_stm32l1xx.c 1 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver misc.c diff --git a/Keil/Bleeper/LoRaMac/class1/LoRaMac.uvopt b/Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvopt similarity index 95% rename from Keil/Bleeper/LoRaMac/class1/LoRaMac.uvopt rename to Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvopt index 9d9372a39..748fe72b1 100644 --- a/Keil/Bleeper/LoRaMac/class1/LoRaMac.uvopt +++ b/Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvopt @@ -21,7 +21,7 @@ - LoRaMac + tstIndoor 0x4 ARM-ADS @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -200,10 +202,10 @@ 0 0 0 - 72 - 73 + 1 + 1 0 - ..\..\..\..\src\apps\LoRaMac\class1\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-72\main.c main.c 0 0 @@ -211,7 +213,7 @@ - boards\Bleeper + boards\Bleeper-72 1 0 0 @@ -227,7 +229,7 @@ 153 141 0 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c board.c 0 0 @@ -243,7 +245,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c gpio-board.c 0 0 @@ -259,7 +261,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c i2c-board.c 0 0 @@ -275,7 +277,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c rtc-board.c 0 0 @@ -291,7 +293,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c spi-board.c 0 0 @@ -307,7 +309,7 @@ 10 28 0 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c sx1272-board.c 0 0 @@ -323,7 +325,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c timer-board.c 0 0 @@ -331,7 +333,7 @@ - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis 0 0 0 @@ -347,7 +349,7 @@ 139 1 0 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s startup_stm32l1xx_hd.s 0 0 @@ -363,7 +365,7 @@ 0 0 0 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -371,7 +373,7 @@ - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver 0 0 0 diff --git a/Keil/Bleeper/LoRaMac/class1/LoRaMac.uvproj b/Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvproj similarity index 92% rename from Keil/Bleeper/LoRaMac/class1/LoRaMac.uvproj rename to Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvproj index fa586db0b..23c4b052d 100644 --- a/Keil/Bleeper/LoRaMac/class1/LoRaMac.uvproj +++ b/Keil/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.uvproj @@ -7,7 +7,7 @@ - LoRaMac + tstIndoor 0x4 ARM-ADS @@ -45,7 +45,7 @@ 1 .\obj\ - LoRaMac + tstIndoor 1 0 1 @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE + + USE_DEBUGGER LOW_POWER_MODE_ENABLE - ..\..\..\..\src;..\..\..\..\src\boards\Bleeper;..\..\..\..\src\boards\Bleeper\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-72;..\..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,67 +407,67 @@ main.c 1 - ..\..\..\..\src\apps\LoRaMac\class1\Bleeper\main.c + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-72\main.c - boards\Bleeper + boards\Bleeper-72 board.c 1 - ..\..\..\..\src\boards\Bleeper\board.c + ..\..\..\..\src\boards\Bleeper-72\board.c gpio-board.c 1 - ..\..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\..\src\boards\Bleeper-72\gpio-board.c i2c-board.c 1 - ..\..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\..\src\boards\Bleeper-72\i2c-board.c rtc-board.c 1 - ..\..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\..\src\boards\Bleeper-72\rtc-board.c spi-board.c 1 - ..\..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\..\src\boards\Bleeper-72\spi-board.c sx1272-board.c 1 - ..\..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\..\src\boards\Bleeper-72\sx1272-board.c timer-board.c 1 - ..\..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\..\src\boards\Bleeper-72\timer-board.c - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis startup_stm32l1xx_hd.s 2 - ..\..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s system_stm32l1xx.c 1 - ..\..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver misc.c diff --git a/Keil/Bleeper/ping-pong-lora/Ping-Pong.uvopt b/Keil/Bleeper-72/ping-pong/Ping-Pong.uvopt similarity index 77% rename from Keil/Bleeper/ping-pong-lora/Ping-Pong.uvopt rename to Keil/Bleeper-72/ping-pong/Ping-Pong.uvopt index 3c20498c4..84087f244 100644 --- a/Keil/Bleeper/ping-pong-lora/Ping-Pong.uvopt +++ b/Keil/Bleeper-72/ping-pong/Ping-Pong.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + Ping-Pong-lora 0x4 ARM-ADS @@ -104,6 +104,176 @@ 0 0 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O2255 -S8 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 0 0 11 @@ -200,10 +370,10 @@ 0 0 0 - 72 - 73 + 1 + 1 0 - ..\..\..\src\apps\ping-pong-lora\Bleeper\main.c + ..\..\..\src\apps\ping-pong\Bleeper-72\main.c main.c 0 0 @@ -211,7 +381,7 @@ - boards\Bleeper + boards\Bleeper-72 1 0 0 @@ -227,7 +397,7 @@ 153 141 0 - ..\..\..\src\boards\Bleeper\board.c + ..\..\..\src\boards\Bleeper-72\board.c board.c 0 0 @@ -243,7 +413,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\src\boards\Bleeper-72\gpio-board.c gpio-board.c 0 0 @@ -259,7 +429,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\src\boards\Bleeper-72\i2c-board.c i2c-board.c 0 0 @@ -275,7 +445,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\src\boards\Bleeper-72\rtc-board.c rtc-board.c 0 0 @@ -291,7 +461,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\src\boards\Bleeper-72\spi-board.c spi-board.c 0 0 @@ -307,7 +477,7 @@ 10 28 0 - ..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\src\boards\Bleeper-72\sx1272-board.c sx1272-board.c 0 0 @@ -323,7 +493,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\src\boards\Bleeper-72\timer-board.c timer-board.c 0 0 @@ -331,7 +501,7 @@ - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis 0 0 0 @@ -347,7 +517,7 @@ 139 1 0 - ..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s startup_stm32l1xx_hd.s 0 0 @@ -363,7 +533,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -371,7 +541,7 @@ - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver 0 0 0 @@ -627,7 +797,7 @@ - mac + peripherals 1 0 0 @@ -640,46 +810,6 @@ 0 0 0 - 921 - 961 - 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 27 - 1 - 0 - 0 - 0 - 0 - 1 - 17 - 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - peripherals - 1 - 0 - 0 - 0 - - 7 - 28 - 1 - 0 - 0 - 0 - 0 205 254 0 @@ -689,8 +819,8 @@ 0 - 7 - 29 + 6 + 27 1 0 0 @@ -713,8 +843,8 @@ 0 0 - 8 - 30 + 7 + 28 1 0 0 @@ -737,8 +867,8 @@ 0 0 - 9 - 31 + 8 + 29 1 0 0 @@ -753,8 +883,8 @@ 0 - 9 - 32 + 8 + 30 1 0 0 @@ -769,8 +899,8 @@ 0 - 9 - 33 + 8 + 31 1 0 0 @@ -785,8 +915,8 @@ 0 - 9 - 34 + 8 + 32 1 0 0 @@ -802,44 +932,4 @@ - - system\crypto - 1 - 0 - 0 - 0 - - 10 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 10 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - diff --git a/Keil/Bleeper-72/ping-pong/Ping-Pong.uvproj b/Keil/Bleeper-72/ping-pong/Ping-Pong.uvproj new file mode 100644 index 000000000..99733b22d --- /dev/null +++ b/Keil/Bleeper-72/ping-pong/Ping-Pong.uvproj @@ -0,0 +1,1205 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Ping-Pong-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4104 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-72;..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-72\main.c + + + + + boards\Bleeper-72 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-72\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-72\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\Bleeper-72\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-72\timer-board.c + + + + + boards\Bleeper-72\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4104 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-72;..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-72\main.c + + + + + boards\Bleeper-72 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-72\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-72\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\Bleeper-72\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-72\timer-board.c + + + + + boards\Bleeper-72\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + +
diff --git a/Keil/Bleeper-72/rx-sensi/rx-sensi.uvopt b/Keil/Bleeper-72/rx-sensi/rx-sensi.uvopt new file mode 100644 index 000000000..648184b45 --- /dev/null +++ b/Keil/Bleeper-72/rx-sensi/rx-sensi.uvopt @@ -0,0 +1,925 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rx-sensi-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\..\..\src\apps\rx-sensi\Bleeper-72\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-72 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\sx1272-board.c + sx1272-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-72\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 142 + 154 + 0 + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 23 + 0 + 253 + 32 + 0 + ..\..\..\src\radio\sx1272\sx1272.c + sx1272.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 6 + 0 + 362 + 388 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-72/rx-sensi/rx-sensi.uvproj b/Keil/Bleeper-72/rx-sensi/rx-sensi.uvproj new file mode 100644 index 000000000..f53b02041 --- /dev/null +++ b/Keil/Bleeper-72/rx-sensi/rx-sensi.uvproj @@ -0,0 +1,1205 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rx-sensi-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-72;..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-72\main.c + + + + + boards\Bleeper-72 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-72\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-72\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\Bleeper-72\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-72\timer-board.c + + + + + boards\Bleeper-72\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-72;..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-72\main.c + + + + + boards\Bleeper-72 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-72\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-72\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\Bleeper-72\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-72\timer-board.c + + + + + boards\Bleeper-72\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + +
diff --git a/Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvopt b/Keil/Bleeper-72/tx-cw/tx-cw.uvopt similarity index 83% rename from Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvopt rename to Keil/Bleeper-72/tx-cw/tx-cw.uvopt index d5ca80863..aaa7affc8 100644 --- a/Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvopt +++ b/Keil/Bleeper-72/tx-cw/tx-cw.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + tx-cw 0x4 ARM-ADS @@ -29,8 +29,8 @@ 1 1 - 1 - 0 + 0 + 1 1 @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -133,22 +135,17 @@ 0 DLGUARM - (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + (105=-1,-1,-1,-1,0) 0 ST-LINKIII-KEIL_SWO - -U-O2255 -O2255 -S8 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U-O2255 -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) 0 UL2CM3 - -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) @@ -157,7 +154,7 @@ 0 - 1 + 0 1 0 0 @@ -200,10 +197,10 @@ 0 0 0 - 72 - 73 + 1 + 1 0 - ..\..\..\src\apps\ping-pong-fsk\Bleeper\main.c + ..\..\..\src\apps\tx-cw\Bleeper-72\main.c main.c 0 0 @@ -211,7 +208,7 @@ - boards\Bleeper + boards\Bleeper-72 1 0 0 @@ -222,12 +219,12 @@ 1 0 0 - 4 + 0 0 - 153 - 141 + 0 + 0 0 - ..\..\..\src\boards\Bleeper\board.c + ..\..\..\src\boards\Bleeper-72\board.c board.c 0 0 @@ -238,12 +235,12 @@ 1 0 0 - 50 + 0 0 0 0 0 - ..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\src\boards\Bleeper-72\gpio-board.c gpio-board.c 0 0 @@ -259,7 +256,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\src\boards\Bleeper-72\i2c-board.c i2c-board.c 0 0 @@ -275,7 +272,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\src\boards\Bleeper-72\rtc-board.c rtc-board.c 0 0 @@ -291,7 +288,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\src\boards\Bleeper-72\spi-board.c spi-board.c 0 0 @@ -304,10 +301,10 @@ 0 0 0 - 10 - 28 + 0 + 0 0 - ..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\src\boards\Bleeper-72\sx1272-board.c sx1272-board.c 0 0 @@ -323,7 +320,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\src\boards\Bleeper-72\timer-board.c timer-board.c 0 0 @@ -331,7 +328,7 @@ - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis 0 0 0 @@ -344,10 +341,10 @@ 0 0 0 - 139 - 1 + 142 + 154 0 - ..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s startup_stm32l1xx_hd.s 0 0 @@ -363,7 +360,7 @@ 0 0 0 - ..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -371,7 +368,7 @@ - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver 0 0 0 @@ -480,8 +477,8 @@ 0 0 0 - 691 - 702 + 0 + 0 0 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c stm32l1xx_pwr.c @@ -598,10 +595,10 @@ 1 0 0 - 5 + 0 0 - 36 - 75 + 0 + 0 0 ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c sysIrqHandlers.c @@ -627,7 +624,7 @@ - mac + peripherals 1 0 0 @@ -640,48 +637,8 @@ 0 0 0 - 921 - 961 - 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 27 - 1 - 0 - 0 - 0 - 0 - 1 - 17 - 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - peripherals - 1 - 0 - 0 - 0 - - 7 - 28 - 1 - 0 - 0 - 0 - 0 - 205 - 254 + 0 + 0 0 ..\..\..\src\peripherals\mpl3115.c mpl3115.c @@ -689,8 +646,8 @@ 0 - 7 - 29 + 6 + 27 1 0 0 @@ -713,15 +670,15 @@ 0 0 - 8 - 30 + 7 + 28 1 0 0 - 0 + 23 0 - 0 - 0 + 253 + 32 0 ..\..\..\src\radio\sx1272\sx1272.c sx1272.c @@ -737,8 +694,8 @@ 0 0 - 9 - 31 + 8 + 29 1 0 0 @@ -753,8 +710,8 @@ 0 - 9 - 32 + 8 + 30 1 0 0 @@ -769,8 +726,8 @@ 0 - 9 - 33 + 8 + 31 1 0 0 @@ -785,15 +742,15 @@ 0 - 9 - 34 + 8 + 32 1 0 0 - 0 + 6 0 - 0 - 0 + 362 + 388 0 ..\..\..\src\system\timer.c timer.c @@ -802,44 +759,4 @@ - - system\crypto - 1 - 0 - 0 - 0 - - 10 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 10 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - diff --git a/Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvproj b/Keil/Bleeper-72/tx-cw/tx-cw.uvproj similarity index 89% rename from Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvproj rename to Keil/Bleeper-72/tx-cw/tx-cw.uvproj index 590532642..46fe4518d 100644 --- a/Keil/Bleeper/ping-pong-fsk/Ping-Pong.uvproj +++ b/Keil/Bleeper-72/tx-cw/tx-cw.uvproj @@ -7,7 +7,7 @@ - Ping-Pong + tx-cw 0x4 ARM-ADS @@ -45,7 +45,7 @@ 1 .\obj\ - Ping-Pong + tx-cw 1 0 1 @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -165,9 +167,9 @@ 0 1 1 - 4104 + 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll "" () @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS + + USE_DEBUGGER - ..\..\..\src;..\..\..\src\boards\Bleeper;..\..\..\src\boards\Bleeper\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + ..\..\..\src;..\..\..\src\boards\Bleeper-72;..\..\..\src\boards\Bleeper-72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,67 +407,67 @@ main.c 1 - ..\..\..\src\apps\ping-pong-fsk\Bleeper\main.c + ..\..\..\src\apps\tx-cw\Bleeper-72\main.c - boards\Bleeper + boards\Bleeper-72 board.c 1 - ..\..\..\src\boards\Bleeper\board.c + ..\..\..\src\boards\Bleeper-72\board.c gpio-board.c 1 - ..\..\..\src\boards\Bleeper\gpio-board.c + ..\..\..\src\boards\Bleeper-72\gpio-board.c i2c-board.c 1 - ..\..\..\src\boards\Bleeper\i2c-board.c + ..\..\..\src\boards\Bleeper-72\i2c-board.c rtc-board.c 1 - ..\..\..\src\boards\Bleeper\rtc-board.c + ..\..\..\src\boards\Bleeper-72\rtc-board.c spi-board.c 1 - ..\..\..\src\boards\Bleeper\spi-board.c + ..\..\..\src\boards\Bleeper-72\spi-board.c sx1272-board.c 1 - ..\..\..\src\boards\Bleeper\sx1272-board.c + ..\..\..\src\boards\Bleeper-72\sx1272-board.c timer-board.c 1 - ..\..\..\src\boards\Bleeper\timer-board.c + ..\..\..\src\boards\Bleeper-72\timer-board.c - boards\Bleeper\cmsis + boards\Bleeper-72\cmsis startup_stm32l1xx_hd.s 2 - ..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s + ..\..\..\src\boards\Bleeper-72\cmsis\arm-std\startup_stm32l1xx_hd.s system_stm32l1xx.c 1 - ..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\Bleeper-72\cmsis\system_stm32l1xx.c - boards\Bleeper\STM32L1xx_StdPeriph_Driver + boards\Bleeper-72\STM32L1xx_StdPeriph_Driver misc.c @@ -545,21 +551,6 @@ - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - - - peripherals @@ -610,21 +601,6 @@ - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c - - - diff --git a/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvopt b/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvopt new file mode 100644 index 000000000..5729fd483 --- /dev/null +++ b/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvopt @@ -0,0 +1,1289 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + LoRaMac-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S8 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 56 + 0 + 62 + 92 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-76\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-76 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 157 + 179 + 0 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 37 + 1 + 0 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-76\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 138 + 154 + 0 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 394 + 406 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 690 + 702 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + mac + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 41 + 0 + 1116 + 1144 + 0 + ..\..\..\..\src\mac\LoRaMac.c + LoRaMac.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMacCrypto.c + LoRaMacCrypto.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 9 + 32 + 1 + 0 + 0 + 0 + 0 + 51 + 76 + 0 + ..\..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 9 + 34 + 1 + 0 + 0 + 0 + 0 + 72 + 73 + 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + + + system\crypto + 1 + 0 + 0 + 0 + + 10 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\aes.c + aes.c + 0 + 0 + + + 10 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\cmac.c + cmac.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvproj b/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvproj new file mode 100644 index 000000000..d7f8159f6 --- /dev/null +++ b/Keil/Bleeper-76/LoRaMac/classA/LoRaMac.uvproj @@ -0,0 +1,2519 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-433 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvopt b/Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvopt similarity index 61% rename from Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvopt rename to Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvopt index e0b27da69..99e25ec58 100644 --- a/Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvopt +++ b/Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvopt @@ -21,11 +21,11 @@ - LoRaMac + LoRaMac-433 0x4 ARM-ADS - 16000000 + 12000000 1 1 @@ -70,6 +70,310 @@ 0 0 + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S8 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 0 @@ -78,11 +382,174 @@ 255 SARMCM3.DLL - -REMAP -MPU + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP DCM.DLL -pCM3 SARMCM3.DLL - -MPU + -MPU TCM.DLL -pCM3 @@ -104,6 +571,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -119,51 +588,19 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - - 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -200,10 +637,10 @@ 0 0 0 - 127 - 139 + 0 + 0 0 - ..\..\..\..\src\apps\LoRaMac\class1\LoRaMote\main.c + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-76\main.c main.c 0 0 @@ -211,7 +648,7 @@ - boards\LoRaMote-eu868 + boards\Bleeper-76 1 0 0 @@ -224,11 +661,11 @@ 0 0 0 - 105 - 1 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c - adc-board.c + ..\..\..\..\src\boards\Bleeper-76\board.c + board.c 0 0 @@ -240,33 +677,17 @@ 0 0 0 - 73 - 85 - 0 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c - board.c - 0 - 0 - - - 2 - 4 - 1 - 0 - 0 - 51 - 0 - 1 - 40 + 157 + 179 0 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c gpio-board.c 0 0 2 - 5 + 4 1 0 0 @@ -275,14 +696,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c i2c-board.c 0 0 2 - 6 + 5 1 0 0 @@ -291,14 +712,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c rtc-board.c 0 0 2 - 7 + 6 1 0 0 @@ -307,14 +728,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\..\src\boards\Bleeper-76\spi-board.c spi-board.c 0 0 2 - 8 + 7 1 0 0 @@ -323,14 +744,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c - sx1272-board.c + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c 0 0 2 - 9 + 8 1 0 0 @@ -339,54 +760,38 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\..\src\boards\Bleeper-76\timer-board.c timer-board.c 0 0 - - 2 - 10 - 1 - 0 - 0 - 39 - 0 - 141 - 172 - 0 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c - uart-board.c - 0 - 0 - - boards\LoRaMote-eu868\cmsis + boards\Bleeper-76\cmsis 0 0 0 0 3 - 11 + 9 2 0 0 0 0 - 125 - 141 + 142 + 154 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s - startup_stm32l1xx_md.s + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s 0 0 3 - 12 + 10 1 0 0 @@ -395,7 +800,7 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -403,14 +808,14 @@ - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver 0 0 0 0 4 - 13 + 11 1 0 0 @@ -426,23 +831,7 @@ 4 - 14 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - stm32l1xx_adc.c - 0 - 0 - - - 4 - 15 + 12 1 0 0 @@ -458,7 +847,7 @@ 4 - 16 + 13 1 0 0 @@ -474,7 +863,7 @@ 4 - 17 + 14 1 0 0 @@ -490,14 +879,14 @@ 4 - 18 + 15 1 0 0 0 0 - 0 - 0 + 394 + 406 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c stm32l1xx_gpio.c @@ -506,7 +895,7 @@ 4 - 19 + 16 1 0 0 @@ -522,13 +911,13 @@ 4 - 20 + 17 1 0 0 0 0 - 689 + 691 702 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c @@ -538,7 +927,7 @@ 4 - 21 + 18 1 0 0 @@ -554,14 +943,14 @@ 4 - 22 + 19 1 0 0 0 0 - 1267 - 1279 + 0 + 0 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c stm32l1xx_rtc.c @@ -570,7 +959,7 @@ 4 - 23 + 20 1 0 0 @@ -586,7 +975,7 @@ 4 - 24 + 21 1 0 0 @@ -602,7 +991,7 @@ 4 - 25 + 22 1 0 0 @@ -618,7 +1007,7 @@ 4 - 26 + 23 1 0 0 @@ -642,11 +1031,11 @@ 0 5 - 27 + 24 1 0 0 - 0 + 5 0 0 0 @@ -658,7 +1047,7 @@ 5 - 28 + 25 1 0 0 @@ -682,7 +1071,7 @@ 0 6 - 29 + 26 1 0 0 @@ -698,7 +1087,7 @@ 6 - 30 + 27 1 0 0 @@ -722,55 +1111,7 @@ 0 7 - 31 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c - 0 - 0 - - - 7 - 32 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c - 0 - 0 - - - 7 - 33 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c - 0 - 0 - - - 7 - 34 + 28 1 0 0 @@ -786,39 +1127,7 @@ 7 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c - 0 - 0 - - - 7 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\sx9500.c - sx9500.c - 0 - 0 - - - 7 - 37 + 29 1 0 0 @@ -827,8 +1136,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\up501.c - up501.c + ..\..\..\..\src\peripherals\selector.c + selector.c 0 0 @@ -842,7 +1151,7 @@ 0 8 - 38 + 30 1 0 0 @@ -851,8 +1160,8 @@ 0 0 0 - ..\..\..\..\src\radio\sx1272\sx1272.c - sx1272.c + ..\..\..\..\src\radio\sx1276\sx1276.c + sx1276.c 0 0 @@ -866,23 +1175,7 @@ 0 9 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\adc.c - adc.c - 0 - 0 - - - 9 - 40 + 31 1 0 0 @@ -898,30 +1191,14 @@ 9 - 41 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\fifo.c - fifo.c - 0 - 0 - - - 9 - 42 + 32 1 0 0 0 0 - 0 - 0 + 51 + 76 0 ..\..\..\..\src\system\gpio.c gpio.c @@ -930,7 +1207,7 @@ 9 - 43 + 33 1 0 0 @@ -946,36 +1223,20 @@ 9 - 44 + 34 1 0 0 0 0 - 0 - 0 + 72 + 73 0 ..\..\..\..\src\system\timer.c timer.c 0 0 - - 9 - 45 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\uart.c - uart.c - 0 - 0 - @@ -986,7 +1247,7 @@ 0 10 - 46 + 35 1 0 0 @@ -1002,7 +1263,7 @@ 10 - 47 + 36 1 0 0 diff --git a/Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvproj b/Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvproj new file mode 100644 index 000000000..2b5887079 --- /dev/null +++ b/Keil/Bleeper-76/LoRaMac/classB/LoRaMac.uvproj @@ -0,0 +1,2519 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-433 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvopt b/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvopt new file mode 100644 index 000000000..11a58a1de --- /dev/null +++ b/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvopt @@ -0,0 +1,1296 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + tstIndoor-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S8 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tstIndoor-470 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tstIndoor-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tstIndoor-915 + 0x4 + ARM-ADS + + 8000000 + + 0 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 293 + 283 + 0 + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-76\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-76 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 157 + 179 + 0 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-76\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 142 + 154 + 0 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 394 + 406 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 691 + 702 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 5 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + mac + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 168 + 185 + 0 + ..\..\..\..\src\mac\LoRaMac.c + LoRaMac.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMacCrypto.c + LoRaMacCrypto.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 9 + 32 + 1 + 0 + 0 + 0 + 0 + 51 + 76 + 0 + ..\..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 9 + 34 + 1 + 0 + 0 + 0 + 0 + 72 + 73 + 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + + + system\crypto + 1 + 0 + 0 + 0 + + 10 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\aes.c + aes.c + 0 + 0 + + + 10 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\cmac.c + cmac.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvproj b/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvproj new file mode 100644 index 000000000..04306349a --- /dev/null +++ b/Keil/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.uvproj @@ -0,0 +1,2519 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + tstIndoor-433 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + tstIndoor-470 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + tstIndoor-868 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + tstIndoor-915 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\Bleeper-76;..\..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\tstIndoor\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/Bleeper-76/ping-pong/Ping-Pong.uvopt b/Keil/Bleeper-76/ping-pong/Ping-Pong.uvopt new file mode 100644 index 000000000..8427ced3c --- /dev/null +++ b/Keil/Bleeper-76/ping-pong/Ping-Pong.uvopt @@ -0,0 +1,1843 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Ping-Pong-433-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-433-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 5 + 0 + 22 + 35 + 0 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-76 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 4 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 17 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-76\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 14 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 25 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-76/ping-pong/Ping-Pong.uvproj b/Keil/Bleeper-76/ping-pong/Ping-Pong.uvproj new file mode 100644 index 000000000..3a07ff085 --- /dev/null +++ b/Keil/Bleeper-76/ping-pong/Ping-Pong.uvproj @@ -0,0 +1,4787 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Ping-Pong-433-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-433-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-470-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-470-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + +
diff --git a/Keil/Bleeper-76/rx-sensi/rx-sensi.uvopt b/Keil/Bleeper-76/rx-sensi/rx-sensi.uvopt new file mode 100644 index 000000000..e7dbce3ba --- /dev/null +++ b/Keil/Bleeper-76/rx-sensi/rx-sensi.uvopt @@ -0,0 +1,1890 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rx-sensi-433-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-433-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC32000000 -TP21 -TDS800F -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + + 0 + 1 + TimerListHead + + + 1 + 1 + timeoutSync + + + 2 + 1 + SX1276.Settings.Fsk.PreambleLen + + + 3 + 1 + SX1276.Settings.Fsk.Datarate + + + 4 + 1 + Regs + + + 5 + 1 + irqFlags1 + + + 6 + 1 + irqFlags2 + + + 7 + 1 + SX1276.Settings.FskPacketHandler.AfcValue,0x0A + + + 8 + 1 + SX1276.Settings.FskPacketHandler.RxGain + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-76 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 4 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 110 + 179 + 0 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 94 + 141 + 0 + ..\..\..\src\boards\Bleeper-76\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 28 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 35 + 97 + 0 + ..\..\..\src\boards\Bleeper-76\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-76\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 145 + 154 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 395 + 406 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 917 + 927 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 2028 + 2029 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + 0 + 24 + 34 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 67 + 0 + 1046 + 938 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 52 + 76 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 36 + 0 + 373 + 398 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-76/rx-sensi/rx-sensi.uvproj b/Keil/Bleeper-76/rx-sensi/rx-sensi.uvproj new file mode 100644 index 000000000..487a66025 --- /dev/null +++ b/Keil/Bleeper-76/rx-sensi/rx-sensi.uvproj @@ -0,0 +1,4787 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rx-sensi-433-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-433-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-470-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-470-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + +
diff --git a/Keil/Bleeper-76/tx-cw/tx-cw.uvopt b/Keil/Bleeper-76/tx-cw/tx-cw.uvopt new file mode 100644 index 000000000..833c6ace7 --- /dev/null +++ b/Keil/Bleeper-76/tx-cw/tx-cw.uvopt @@ -0,0 +1,1221 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + tx-cw-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-470 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U -O2255 -S3 -C-1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384.FLM -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000 -FP0($$Device:STM32L151RD$Flash\STM32L1xx_384.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + ..\..\..\src\apps\tx-cw\Bleeper-76\main.c + main.c + 0 + 0 + + + + + boards\Bleeper-76 + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 4 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\board.c + board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 110 + 179 + 0 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 94 + 141 + 0 + ..\..\..\src\boards\Bleeper-76\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 28 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 35 + 97 + 0 + ..\..\..\src\boards\Bleeper-76\timer-board.c + timer-board.c + 0 + 0 + + + + + boards\Bleeper-76\cmsis + 0 + 0 + 0 + 0 + + 3 + 9 + 2 + 0 + 0 + 0 + 0 + 145 + 154 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + startup_stm32l1xx_hd.s + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 395 + 406 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 917 + 927 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 2028 + 2029 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + 0 + 24 + 34 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\selector.c + selector.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 28 + 1 + 0 + 0 + 67 + 0 + 1046 + 938 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 30 + 1 + 0 + 0 + 0 + 0 + 52 + 76 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 36 + 0 + 373 + 398 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + +
diff --git a/Keil/Bleeper-76/tx-cw/tx-cw.uvproj b/Keil/Bleeper-76/tx-cw/tx-cw.uvproj new file mode 100644 index 000000000..b7899834f --- /dev/null +++ b/Keil/Bleeper-76/tx-cw/tx-cw.uvproj @@ -0,0 +1,2399 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + tx-cw-433 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + tx-cw-470 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + tx-cw-868 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + + STM32L151RD + STMicroelectronics + IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) + 6516 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 1 + 0x8000000 + 0x60000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x60000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 + + ..\..\..\src;..\..\..\src\boards\Bleeper-76;..\..\..\src\boards\Bleeper-76\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\Bleeper-76\main.c + + + + + boards\Bleeper-76 + + + board.c + 1 + ..\..\..\src\boards\Bleeper-76\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\Bleeper-76\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\Bleeper-76\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\Bleeper-76\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\Bleeper-76\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\Bleeper-76\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\Bleeper-76\timer-board.c + + + + + boards\Bleeper-76\cmsis + + + startup_stm32l1xx_hd.s + 2 + ..\..\..\src\boards\Bleeper-76\cmsis\arm-std\startup_stm32l1xx_hd.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\Bleeper-76\cmsis\system_stm32l1xx.c + + + + + boards\Bleeper-76\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + selector.c + 1 + ..\..\..\src\peripherals\selector.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + + + + + +
diff --git a/Keil/Bleeper/ping-pong-lora/Ping-Pong.uvproj b/Keil/Bleeper/ping-pong-lora/Ping-Pong.uvproj deleted file mode 100644 index 9153126c0..000000000 --- a/Keil/Bleeper/ping-pong-lora/Ping-Pong.uvproj +++ /dev/null @@ -1,632 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - Ping-Pong - 0x4 - ARM-ADS - - - STM32L151RD - STMicroelectronics - IRAM(0x20000000-0x2000BFFF) IROM(0x8000000-0x805FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") - - "STARTUP\ST\STM32L1xx\startup_stm32l1xx_hd.s" ("STM32L1xx High density Startup Code") - ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_384 -FS08000000 -FL060000) - 6516 - stm32l1xx.h - - - - - - - - - - SFD\ST\STM32L1xx\STM32L15x.sfr - 0 - 0 - - - - ST\STM32L1xx\ - ST\STM32L1xx\ - - 0 - 0 - 0 - 0 - 1 - - .\obj\ - Ping-Pong - 1 - 0 - 1 - 1 - 1 - .\lst\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -MPU -REMAP - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - - 0 - 11 - - - - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4104 - - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 1 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0xc000 - - - 1 - 0x8000000 - 0x60000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x60000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0xc000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS - - ..\..\..\src;..\..\..\src\boards\Bleeper;..\..\..\src\boards\Bleeper\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - - - - - - - - - - - apps - - - main.c - 1 - ..\..\..\src\apps\ping-pong-lora\Bleeper\main.c - - - - - boards\Bleeper - - - board.c - 1 - ..\..\..\src\boards\Bleeper\board.c - - - gpio-board.c - 1 - ..\..\..\src\boards\Bleeper\gpio-board.c - - - i2c-board.c - 1 - ..\..\..\src\boards\Bleeper\i2c-board.c - - - rtc-board.c - 1 - ..\..\..\src\boards\Bleeper\rtc-board.c - - - spi-board.c - 1 - ..\..\..\src\boards\Bleeper\spi-board.c - - - sx1272-board.c - 1 - ..\..\..\src\boards\Bleeper\sx1272-board.c - - - timer-board.c - 1 - ..\..\..\src\boards\Bleeper\timer-board.c - - - - - boards\Bleeper\cmsis - - - startup_stm32l1xx_hd.s - 2 - ..\..\..\src\boards\Bleeper\cmsis\arm-std\startup_stm32l1xx_hd.s - - - system_stm32l1xx.c - 1 - ..\..\..\src\boards\Bleeper\cmsis\system_stm32l1xx.c - - - - - boards\Bleeper\STM32L1xx_StdPeriph_Driver - - - misc.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - - stm32l1xx_dbgmcu.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - - - stm32l1xx_dma.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - - - stm32l1xx_exti.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - - - stm32l1xx_gpio.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - - - stm32l1xx_i2c.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - - - stm32l1xx_pwr.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - - - stm32l1xx_rcc.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - - - stm32l1xx_rtc.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - - - stm32l1xx_spi.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - - - stm32l1xx_syscfg.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - - - stm32l1xx_tim.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - - - stm32l1xx_usart.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - - - - - boards\mcu\stm32 - - - sysIrqHandlers.c - 1 - ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - - utilities.c - 1 - ..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - - - - - peripherals - - - mpl3115.c - 1 - ..\..\..\src\peripherals\mpl3115.c - - - selector.c - 1 - ..\..\..\src\peripherals\selector.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\src\radio\sx1272\sx1272.c - - - - - system - - - delay.c - 1 - ..\..\..\src\system\delay.c - - - gpio.c - 1 - ..\..\..\src\system\gpio.c - - - i2c.c - 1 - ..\..\..\src\system\i2c.c - - - timer.c - 1 - ..\..\..\src\system\timer.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c - - - - - - - -
diff --git a/Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvproj b/Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvproj deleted file mode 100644 index f2f18b1fa..000000000 --- a/Keil/LoRaMote-eu868/LoRaMac/class1/LoRaMac.uvproj +++ /dev/null @@ -1,687 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - LoRaMac - 0x4 - ARM-ADS - - - STM32L151CB - STMicroelectronics - IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - 5244 - $$Device:STM32L151CB$Device\Include\STM32L1xx.h - - - - - - - - - - $$Device:STM32L151CB$SVD\STM32L15x.svd - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 1 - - .\obj\ - LoRaMac - 1 - 0 - 1 - 1 - 1 - .\lst\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - - 0 - 11 - - - - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4103 - - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 1 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 1 - 0x8000000 - 0x20000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x20000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE - - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote-eu868;..\..\..\..\src\boards\LoRaMote-eu868\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - - - - - - - - - - - apps - - - main.c - 1 - ..\..\..\..\src\apps\LoRaMac\class1\LoRaMote\main.c - - - - - boards\LoRaMote-eu868 - - - adc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c - - - board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c - - - gpio-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c - - - i2c-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c - - - rtc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c - - - spi-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c - - - sx1272-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c - - - timer-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c - - - uart-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c - - - - - boards\LoRaMote-eu868\cmsis - - - startup_stm32l1xx_md.s - 2 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s - - - system_stm32l1xx.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c - - - - - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver - - - misc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - - stm32l1xx_adc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - - - stm32l1xx_dbgmcu.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - - - stm32l1xx_dma.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - - - stm32l1xx_exti.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - - - stm32l1xx_gpio.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - - - stm32l1xx_i2c.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - - - stm32l1xx_pwr.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - - - stm32l1xx_rcc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - - - stm32l1xx_rtc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - - - stm32l1xx_spi.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - - - stm32l1xx_syscfg.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - - - stm32l1xx_tim.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - - - stm32l1xx_usart.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - - - - - boards\mcu\stm32 - - - sysIrqHandlers.c - 1 - ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - - utilities.c - 1 - ..\..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\..\src\mac\LoRaMacCrypto.c - - - - - peripherals - - - gpio-ioe.c - 1 - ..\..\..\..\src\peripherals\gpio-ioe.c - - - mag3110.c - 1 - ..\..\..\..\src\peripherals\mag3110.c - - - mma8451.c - 1 - ..\..\..\..\src\peripherals\mma8451.c - - - mpl3115.c - 1 - ..\..\..\..\src\peripherals\mpl3115.c - - - sx1509.c - 1 - ..\..\..\..\src\peripherals\sx1509.c - - - sx9500.c - 1 - ..\..\..\..\src\peripherals\sx9500.c - - - up501.c - 1 - ..\..\..\..\src\peripherals\up501.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\..\src\radio\sx1272\sx1272.c - - - - - system - - - adc.c - 1 - ..\..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\..\src\system\fifo.c - - - gpio.c - 1 - ..\..\..\..\src\system\gpio.c - - - i2c.c - 1 - ..\..\..\..\src\system\i2c.c - - - timer.c - 1 - ..\..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\..\src\system\crypto\cmac.c - - - - - - - -
diff --git a/Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvproj b/Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvproj deleted file mode 100644 index bf0c248e1..000000000 --- a/Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvproj +++ /dev/null @@ -1,687 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - LoRaMac - 0x4 - ARM-ADS - - - STM32L151CB - STMicroelectronics - IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - 5244 - $$Device:STM32L151CB$Device\Include\STM32L1xx.h - - - - - - - - - - $$Device:STM32L151CB$SVD\STM32L15x.svd - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 1 - - .\obj\ - LoRaMac - 1 - 0 - 1 - 1 - 1 - .\lst\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - - 0 - 11 - - - - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4103 - - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 1 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 1 - 0x8000000 - 0x20000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x20000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE - - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote-eu868;..\..\..\..\src\boards\LoRaMote-eu868\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - - - - - - - - - - - apps - - - main.c - 1 - ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c - - - - - boards\LoRaMote-eu868 - - - adc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c - - - board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c - - - gpio-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c - - - i2c-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c - - - rtc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c - - - spi-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c - - - sx1272-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c - - - timer-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c - - - uart-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c - - - - - boards\LoRaMote-eu868\cmsis - - - startup_stm32l1xx_md.s - 2 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s - - - system_stm32l1xx.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c - - - - - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver - - - misc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - - stm32l1xx_adc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - - - stm32l1xx_dbgmcu.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - - - stm32l1xx_dma.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - - - stm32l1xx_exti.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - - - stm32l1xx_gpio.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - - - stm32l1xx_i2c.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - - - stm32l1xx_pwr.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - - - stm32l1xx_rcc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - - - stm32l1xx_rtc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - - - stm32l1xx_spi.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - - - stm32l1xx_syscfg.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - - - stm32l1xx_tim.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - - - stm32l1xx_usart.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - - - - - boards\mcu\stm32 - - - sysIrqHandlers.c - 1 - ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - - utilities.c - 1 - ..\..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\..\src\mac\LoRaMacCrypto.c - - - - - peripherals - - - gpio-ioe.c - 1 - ..\..\..\..\src\peripherals\gpio-ioe.c - - - mag3110.c - 1 - ..\..\..\..\src\peripherals\mag3110.c - - - mma8451.c - 1 - ..\..\..\..\src\peripherals\mma8451.c - - - mpl3115.c - 1 - ..\..\..\..\src\peripherals\mpl3115.c - - - sx1509.c - 1 - ..\..\..\..\src\peripherals\sx1509.c - - - sx9500.c - 1 - ..\..\..\..\src\peripherals\sx9500.c - - - up501.c - 1 - ..\..\..\..\src\peripherals\up501.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\..\src\radio\sx1272\sx1272.c - - - - - system - - - adc.c - 1 - ..\..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\..\src\system\fifo.c - - - gpio.c - 1 - ..\..\..\..\src\system\gpio.c - - - i2c.c - 1 - ..\..\..\..\src\system\i2c.c - - - timer.c - 1 - ..\..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\..\src\system\crypto\cmac.c - - - - - - - -
diff --git a/Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvproj b/Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvproj deleted file mode 100644 index 9d54181a6..000000000 --- a/Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvproj +++ /dev/null @@ -1,687 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - LoRaMac - 0x4 - ARM-ADS - - - STM32L151CB - STMicroelectronics - IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - 5244 - $$Device:STM32L151CB$Device\Include\STM32L1xx.h - - - - - - - - - - $$Device:STM32L151CB$SVD\STM32L15x.svd - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 1 - - .\obj\ - LoRaMac - 1 - 0 - 1 - 1 - 1 - .\lst\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - - 0 - 11 - - - - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4103 - - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 1 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 1 - 0x8000000 - 0x20000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x20000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS LOW_POWER_MODE_ENABLE - - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote-eu868;..\..\..\..\src\boards\LoRaMote-eu868\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - - - - - - - - - - - apps - - - main.c - 1 - ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c - - - - - boards\LoRaMote-eu868 - - - adc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c - - - board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c - - - gpio-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c - - - i2c-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c - - - rtc-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c - - - spi-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c - - - sx1272-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c - - - timer-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c - - - uart-board.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c - - - - - boards\LoRaMote-eu868\cmsis - - - startup_stm32l1xx_md.s - 2 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s - - - system_stm32l1xx.c - 1 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c - - - - - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver - - - misc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - - stm32l1xx_adc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - - - stm32l1xx_dbgmcu.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - - - stm32l1xx_dma.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - - - stm32l1xx_exti.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - - - stm32l1xx_gpio.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - - - stm32l1xx_i2c.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - - - stm32l1xx_pwr.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - - - stm32l1xx_rcc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - - - stm32l1xx_rtc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - - - stm32l1xx_spi.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - - - stm32l1xx_syscfg.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - - - stm32l1xx_tim.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - - - stm32l1xx_usart.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - - - - - boards\mcu\stm32 - - - sysIrqHandlers.c - 1 - ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - - utilities.c - 1 - ..\..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\..\src\mac\LoRaMacCrypto.c - - - - - peripherals - - - gpio-ioe.c - 1 - ..\..\..\..\src\peripherals\gpio-ioe.c - - - mag3110.c - 1 - ..\..\..\..\src\peripherals\mag3110.c - - - mma8451.c - 1 - ..\..\..\..\src\peripherals\mma8451.c - - - mpl3115.c - 1 - ..\..\..\..\src\peripherals\mpl3115.c - - - sx1509.c - 1 - ..\..\..\..\src\peripherals\sx1509.c - - - sx9500.c - 1 - ..\..\..\..\src\peripherals\sx9500.c - - - up501.c - 1 - ..\..\..\..\src\peripherals\up501.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\..\src\radio\sx1272\sx1272.c - - - - - system - - - adc.c - 1 - ..\..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\..\src\system\fifo.c - - - gpio.c - 1 - ..\..\..\..\src\system\gpio.c - - - i2c.c - 1 - ..\..\..\..\src\system\i2c.c - - - timer.c - 1 - ..\..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\..\src\system\crypto\cmac.c - - - - - - - -
diff --git a/Keil/LoRaMote/Bootloader/BootLoader.uvopt b/Keil/LoRaMote/Bootloader/BootLoader.uvopt new file mode 100644 index 000000000..475b321f5 --- /dev/null +++ b/Keil/LoRaMote/Bootloader/BootLoader.uvopt @@ -0,0 +1,899 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + BootLoader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + + 0 + 1 + status + + + 1 + 1 + offset + + + 2 + 1 + regValue + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 37 + 49 + 0 + ..\..\..\src\apps\bootloader\LoRaMote\main.c + main.c + 0 + 0 + + + + + boards\LoRaMote + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 17 + 0 + 1 + 22 + 0 + ..\..\..\src\boards\LoRaMote\usb-dfu-board.c + usb-dfu-board.c + 0 + 0 + + + + + boards\LoRaMote\cmsis + 0 + 0 + 0 + 0 + + 3 + 5 + 2 + 0 + 0 + 0 + 0 + 125 + 141 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\LoRaMote\usb + 0 + 0 + 0 + 0 + + 4 + 7 + 1 + 0 + 0 + 17 + 0 + 1 + 30 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\dfu_mal.c + dfu_mal.c + 0 + 0 + + + 4 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\flash_if.c + flash_if.c + 0 + 0 + + + 4 + 9 + 1 + 0 + 0 + 17 + 0 + 1 + 31 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_desc.c + usb_desc.c + 0 + 0 + + + 4 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_istr.c + usb_istr.c + 0 + 0 + + + 4 + 11 + 1 + 0 + 0 + 17 + 0 + 1 + 31 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_prop.c + usb_prop.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 17 + 0 + 1 + 33 + 0 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_pwr.c + usb_pwr.c + 0 + 0 + + + + + boards\LoRaMote\STM32_USB-FS-Device_Driver + 0 + 0 + 0 + 0 + + 5 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_core.c + usb_core.c + 0 + 0 + + + 5 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_init.c + usb_init.c + 0 + 0 + + + 5 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_int.c + usb_int.c + 0 + 0 + + + 5 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_mem.c + usb_mem.c + 0 + 0 + + + 5 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_regs.c + usb_regs.c + 0 + 0 + + + 5 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_sil.c + usb_sil.c + 0 + 0 + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 6 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 6 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 6 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 6 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 6 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 6 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 6 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 6 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash.c + stm32l1xx_flash.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash_ramfunc.c + stm32l1xx_flash_ramfunc.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 7 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 8 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + +
diff --git a/Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvproj b/Keil/LoRaMote/Bootloader/BootLoader.uvproj similarity index 79% rename from Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvproj rename to Keil/LoRaMote/Bootloader/BootLoader.uvproj index 02d873294..85b897029 100644 --- a/Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvproj +++ b/Keil/LoRaMote/Bootloader/BootLoader.uvproj @@ -7,7 +7,7 @@ - Ping-Pong + BootLoader 0x4 ARM-ADS @@ -45,7 +45,7 @@ 1 .\obj\ - Ping-Pong + BootLoader 1 0 1 @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -167,7 +169,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll "" () @@ -304,7 +306,7 @@ 1 0x8000000 - 0x20000 + 0x3000 1 @@ -341,7 +343,7 @@ 1 - 2 + 3 0 0 1 @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS + + USE_DEBUGGER - ..\..\..\src;..\..\..\src\boards\LoRaMote-eu868;..\..\..\src\boards\LoRaMote-eu868\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\LoRaMote\usb\dfu\inc;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\inc;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,88 +407,123 @@ main.c 1 - ..\..\..\src\apps\ping-pong-fsk\LoRaMote\main.c + ..\..\..\src\apps\bootloader\LoRaMote\main.c
- boards\LoRaMote-eu868 + boards\LoRaMote - adc-board.c + gpio-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\src\boards\LoRaMote\gpio-board.c - board.c + i2c-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\src\boards\LoRaMote\i2c-board.c - gpio-board.c + usb-dfu-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\src\boards\LoRaMote\usb-dfu-board.c + + + + boards\LoRaMote\cmsis + - i2c-board.c + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c 1 - ..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\usb + + + dfu_mal.c + 1 + ..\..\..\src\boards\LoRaMote\usb\dfu\src\dfu_mal.c - rtc-board.c + flash_if.c 1 - ..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\src\boards\LoRaMote\usb\dfu\src\flash_if.c - spi-board.c + usb_desc.c 1 - ..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_desc.c - sx1272-board.c + usb_istr.c 1 - ..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_istr.c - timer-board.c + usb_prop.c 1 - ..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_prop.c - uart-board.c + usb_pwr.c 1 - ..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\src\boards\LoRaMote\usb\dfu\src\usb_pwr.c - boards\LoRaMote-eu868\cmsis + boards\LoRaMote\STM32_USB-FS-Device_Driver - startup_stm32l1xx_md.s - 2 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + usb_core.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_core.c - system_stm32l1xx.c + usb_init.c 1 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_init.c + + + usb_int.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_int.c + + + usb_mem.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_mem.c + + + usb_regs.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_regs.c + + + usb_sil.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_sil.c - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\LoRaMote\STM32L1xx_StdPeriph_Driver misc.c 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - stm32l1xx_adc.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - stm32l1xx_dbgmcu.c 1 @@ -543,6 +584,59 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + stm32l1xx_flash.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash.c + + + stm32l1xx_flash_ramfunc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash_ramfunc.c + + + 2 + 9 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + + + + + + + + + + @@ -553,26 +647,6 @@ 1 ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - utilities.c - 1 - ..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - @@ -583,21 +657,6 @@ 1 ..\..\..\src\peripherals\gpio-ioe.c - - mag3110.c - 1 - ..\..\..\src\peripherals\mag3110.c - - - mma8451.c - 1 - ..\..\..\src\peripherals\mma8451.c - - - mpl3115.c - 1 - ..\..\..\src\peripherals\mpl3115.c - sx1509.c 1 @@ -608,41 +667,11 @@ 1 ..\..\..\src\peripherals\sx9500.c - - up501.c - 1 - ..\..\..\src\peripherals\up501.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\src\radio\sx1272\sx1272.c - system - - adc.c - 1 - ..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\src\system\fifo.c - gpio.c 1 @@ -653,31 +682,6 @@ 1 ..\..\..\src\system\i2c.c - - timer.c - 1 - ..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c - diff --git a/Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt similarity index 62% rename from Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvopt rename to Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt index ebb23164f..50793c681 100644 --- a/Keil/LoRaMote-eu868/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt @@ -21,7 +21,7 @@ - LoRaMac + LoRaMac-868 0x4 ARM-ADS @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -186,6 +188,517 @@ + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + + 0 + 1 + DevAddr + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + apps 1 @@ -198,10 +711,10 @@ 1 0 0 - 0 + 17 0 - 127 - 139 + 55 + 78 0 ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c main.c @@ -211,7 +724,7 @@ - boards\LoRaMote-eu868 + boards\LoRaMote 1 0 0 @@ -224,10 +737,10 @@ 0 0 0 - 105 - 1 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\..\src\boards\LoRaMote\adc-board.c adc-board.c 0 0 @@ -240,10 +753,10 @@ 0 0 0 - 73 - 85 + 1 + 1 0 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\..\src\boards\LoRaMote\board.c board.c 0 0 @@ -256,10 +769,10 @@ 0 51 0 - 1 - 40 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\..\src\boards\LoRaMote\gpio-board.c gpio-board.c 0 0 @@ -272,17 +785,33 @@ 0 0 0 + 30 + 80 + 0 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\..\src\boards\LoRaMote\i2c-board.c i2c-board.c 0 0 2 - 6 + 7 1 0 0 @@ -291,14 +820,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\..\src\boards\LoRaMote\rtc-board.c rtc-board.c 0 0 2 - 7 + 8 1 0 0 @@ -307,14 +836,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\..\src\boards\LoRaMote\spi-board.c spi-board.c 0 0 2 - 8 + 9 1 0 0 @@ -323,14 +852,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c sx1272-board.c 0 0 2 - 9 + 10 1 0 0 @@ -339,23 +868,23 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\..\src\boards\LoRaMote\timer-board.c timer-board.c 0 0 2 - 10 + 11 1 0 0 39 0 - 141 - 172 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\..\src\boards\LoRaMote\uart-board.c uart-board.c 0 0 @@ -363,30 +892,30 @@ - boards\LoRaMote-eu868\cmsis - 0 + boards\LoRaMote\cmsis + 1 0 0 0 3 - 11 + 12 2 0 0 0 0 - 125 - 141 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s startup_stm32l1xx_md.s 0 0 3 - 12 + 13 1 0 0 @@ -395,7 +924,7 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -403,14 +932,14 @@ - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\LoRaMote\STM32L1xx_StdPeriph_Driver 0 0 0 0 4 - 13 + 14 1 0 0 @@ -426,7 +955,7 @@ 4 - 14 + 15 1 0 0 @@ -442,7 +971,7 @@ 4 - 15 + 16 1 0 0 @@ -458,7 +987,7 @@ 4 - 16 + 17 1 0 0 @@ -474,7 +1003,7 @@ 4 - 17 + 18 1 0 0 @@ -490,7 +1019,7 @@ 4 - 18 + 19 1 0 0 @@ -506,7 +1035,7 @@ 4 - 19 + 20 1 0 0 @@ -522,13 +1051,13 @@ 4 - 20 + 21 1 0 0 0 0 - 689 + 691 702 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c @@ -538,7 +1067,7 @@ 4 - 21 + 22 1 0 0 @@ -554,14 +1083,14 @@ 4 - 22 + 23 1 0 0 0 0 - 1267 - 1279 + 563 + 576 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c stm32l1xx_rtc.c @@ -570,7 +1099,7 @@ 4 - 23 + 24 1 0 0 @@ -586,7 +1115,7 @@ 4 - 24 + 25 1 0 0 @@ -602,7 +1131,7 @@ 4 - 25 + 26 1 0 0 @@ -618,7 +1147,7 @@ 4 - 26 + 27 1 0 0 @@ -642,7 +1171,7 @@ 0 5 - 27 + 28 1 0 0 @@ -658,7 +1187,7 @@ 5 - 28 + 29 1 0 0 @@ -682,14 +1211,14 @@ 0 6 - 29 + 30 1 0 0 - 0 + 21 0 - 0 - 0 + 149 + 182 0 ..\..\..\..\src\mac\LoRaMac.c LoRaMac.c @@ -698,7 +1227,7 @@ 6 - 30 + 31 1 0 0 @@ -722,7 +1251,7 @@ 0 7 - 31 + 32 1 0 0 @@ -738,7 +1267,7 @@ 7 - 32 + 33 1 0 0 @@ -754,7 +1283,7 @@ 7 - 33 + 34 1 0 0 @@ -770,7 +1299,7 @@ 7 - 34 + 35 1 0 0 @@ -786,7 +1315,7 @@ 7 - 35 + 36 1 0 0 @@ -802,7 +1331,7 @@ 7 - 36 + 37 1 0 0 @@ -816,22 +1345,6 @@ 0 0 - - 7 - 37 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\up501.c - up501.c - 0 - 0 - @@ -846,10 +1359,10 @@ 1 0 0 - 0 + 56 0 - 0 - 0 + 396 + 397 0 ..\..\..\..\src\radio\sx1272\sx1272.c sx1272.c @@ -870,7 +1383,7 @@ 1 0 0 - 0 + 22 0 0 0 @@ -939,8 +1452,8 @@ 0 0 0 - ..\..\..\..\src\system\i2c.c - i2c.c + ..\..\..\..\src\system\gps.c + gps.c 0 0 @@ -955,8 +1468,8 @@ 0 0 0 - ..\..\..\..\src\system\timer.c - timer.c + ..\..\..\..\src\system\i2c.c + i2c.c 0 0 @@ -971,6 +1484,22 @@ 0 0 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 ..\..\..\..\src\system\uart.c uart.c 0 @@ -986,7 +1515,7 @@ 0 10 - 46 + 47 1 0 0 @@ -1002,7 +1531,7 @@ 10 - 47 + 48 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj new file mode 100644 index 000000000..76ab2501b --- /dev/null +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj @@ -0,0 +1,2759 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt similarity index 62% rename from Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvopt rename to Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt index ad397461b..cfa4a4101 100644 --- a/Keil/LoRaMote-eu868/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt @@ -21,7 +21,7 @@ - LoRaMac + LoRaMac-868 0x4 ARM-ADS @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -186,6 +188,517 @@ + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O2255 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + + 0 + 1 + DevAddr + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + apps 1 @@ -198,10 +711,10 @@ 1 0 0 - 0 + 17 0 - 127 - 139 + 55 + 78 0 ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c main.c @@ -211,7 +724,7 @@ - boards\LoRaMote-eu868 + boards\LoRaMote 1 0 0 @@ -224,10 +737,10 @@ 0 0 0 - 105 - 1 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\..\src\boards\LoRaMote\adc-board.c adc-board.c 0 0 @@ -240,10 +753,10 @@ 0 0 0 - 73 - 85 + 1 + 1 0 - ..\..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\..\src\boards\LoRaMote\board.c board.c 0 0 @@ -256,10 +769,10 @@ 0 51 0 - 1 - 40 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\..\src\boards\LoRaMote\gpio-board.c gpio-board.c 0 0 @@ -272,17 +785,33 @@ 0 0 0 + 30 + 80 + 0 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + gps-board.c + 0 + 0 +
+ + 2 + 6 + 1 + 0 + 0 + 0 + 0 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\..\src\boards\LoRaMote\i2c-board.c i2c-board.c 0 0 2 - 6 + 7 1 0 0 @@ -291,14 +820,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\..\src\boards\LoRaMote\rtc-board.c rtc-board.c 0 0 2 - 7 + 8 1 0 0 @@ -307,14 +836,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\..\src\boards\LoRaMote\spi-board.c spi-board.c 0 0 2 - 8 + 9 1 0 0 @@ -323,14 +852,14 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c sx1272-board.c 0 0 2 - 9 + 10 1 0 0 @@ -339,23 +868,23 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\..\src\boards\LoRaMote\timer-board.c timer-board.c 0 0 2 - 10 + 11 1 0 0 39 0 - 141 - 172 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\..\src\boards\LoRaMote\uart-board.c uart-board.c 0 0 @@ -363,30 +892,30 @@
- boards\LoRaMote-eu868\cmsis - 0 + boards\LoRaMote\cmsis + 1 0 0 0 3 - 11 + 12 2 0 0 0 0 - 125 - 141 + 0 + 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s startup_stm32l1xx_md.s 0 0 3 - 12 + 13 1 0 0 @@ -395,7 +924,7 @@ 0 0 0 - ..\..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -403,14 +932,14 @@ - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\LoRaMote\STM32L1xx_StdPeriph_Driver 0 0 0 0 4 - 13 + 14 1 0 0 @@ -426,7 +955,7 @@ 4 - 14 + 15 1 0 0 @@ -442,7 +971,7 @@ 4 - 15 + 16 1 0 0 @@ -458,7 +987,7 @@ 4 - 16 + 17 1 0 0 @@ -474,7 +1003,7 @@ 4 - 17 + 18 1 0 0 @@ -490,7 +1019,7 @@ 4 - 18 + 19 1 0 0 @@ -506,7 +1035,7 @@ 4 - 19 + 20 1 0 0 @@ -522,13 +1051,13 @@ 4 - 20 + 21 1 0 0 0 0 - 689 + 691 702 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c @@ -538,7 +1067,7 @@ 4 - 21 + 22 1 0 0 @@ -554,14 +1083,14 @@ 4 - 22 + 23 1 0 0 0 0 - 1267 - 1279 + 563 + 576 0 ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c stm32l1xx_rtc.c @@ -570,7 +1099,7 @@ 4 - 23 + 24 1 0 0 @@ -586,7 +1115,7 @@ 4 - 24 + 25 1 0 0 @@ -602,7 +1131,7 @@ 4 - 25 + 26 1 0 0 @@ -618,7 +1147,7 @@ 4 - 26 + 27 1 0 0 @@ -642,7 +1171,7 @@ 0 5 - 27 + 28 1 0 0 @@ -658,7 +1187,7 @@ 5 - 28 + 29 1 0 0 @@ -682,14 +1211,14 @@ 0 6 - 29 + 30 1 0 0 - 0 + 21 0 - 0 - 0 + 149 + 182 0 ..\..\..\..\src\mac\LoRaMac.c LoRaMac.c @@ -698,7 +1227,7 @@ 6 - 30 + 31 1 0 0 @@ -722,7 +1251,7 @@ 0 7 - 31 + 32 1 0 0 @@ -738,7 +1267,7 @@ 7 - 32 + 33 1 0 0 @@ -754,7 +1283,7 @@ 7 - 33 + 34 1 0 0 @@ -770,7 +1299,7 @@ 7 - 34 + 35 1 0 0 @@ -786,7 +1315,7 @@ 7 - 35 + 36 1 0 0 @@ -802,7 +1331,7 @@ 7 - 36 + 37 1 0 0 @@ -816,22 +1345,6 @@ 0 0 - - 7 - 37 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\peripherals\up501.c - up501.c - 0 - 0 - @@ -846,10 +1359,10 @@ 1 0 0 - 0 + 56 0 - 0 - 0 + 396 + 397 0 ..\..\..\..\src\radio\sx1272\sx1272.c sx1272.c @@ -870,7 +1383,7 @@ 1 0 0 - 0 + 22 0 0 0 @@ -939,8 +1452,8 @@ 0 0 0 - ..\..\..\..\src\system\i2c.c - i2c.c + ..\..\..\..\src\system\gps.c + gps.c 0 0 @@ -955,8 +1468,8 @@ 0 0 0 - ..\..\..\..\src\system\timer.c - timer.c + ..\..\..\..\src\system\i2c.c + i2c.c 0 0 @@ -971,6 +1484,22 @@ 0 0 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 ..\..\..\..\src\system\uart.c uart.c 0 @@ -986,7 +1515,7 @@ 0 10 - 46 + 47 1 0 0 @@ -1002,7 +1531,7 @@ 10 - 47 + 48 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj new file mode 100644 index 000000000..455027d79 --- /dev/null +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj @@ -0,0 +1,2759 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt b/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt new file mode 100644 index 000000000..517400ec3 --- /dev/null +++ b/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt @@ -0,0 +1,2135 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-lora-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-fsk-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-lora-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-fsk-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 72 + 0 + 23 + 45 + 0 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + main.c + 0 + 0 + + + + + boards\LoRaMote + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 105 + 1 + 0 + ..\..\..\src\boards\LoRaMote\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 73 + 85 + 0 + ..\..\..\src\boards\LoRaMote\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 1 + 40 + 0 + ..\..\..\src\boards\LoRaMote\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + sx1272-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 41 + 0 + 168 + 214 + 0 + ..\..\..\src\boards\LoRaMote\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\LoRaMote\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 125 + 141 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 689 + 702 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 1267 + 1279 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1272\sx1272.c + sx1272.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + +
diff --git a/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj b/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj new file mode 100644 index 000000000..77c6183c9 --- /dev/null +++ b/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj @@ -0,0 +1,5267 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt b/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt new file mode 100644 index 000000000..9df3fe9e5 --- /dev/null +++ b/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt @@ -0,0 +1,2135 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-lora-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-fsk-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-lora-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-fsk-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 44 + 0 + 13 + 52 + 0 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + main.c + 0 + 0 + + + + + boards\LoRaMote + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 105 + 1 + 0 + ..\..\..\src\boards\LoRaMote\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 73 + 85 + 0 + ..\..\..\src\boards\LoRaMote\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 1 + 40 + 0 + ..\..\..\src\boards\LoRaMote\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + sx1272-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 41 + 0 + 168 + 214 + 0 + ..\..\..\src\boards\LoRaMote\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\LoRaMote\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 125 + 141 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 689 + 702 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 1267 + 1279 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1272\sx1272.c + sx1272.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + +
diff --git a/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj b/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj new file mode 100644 index 000000000..7eacbf913 --- /dev/null +++ b/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj @@ -0,0 +1,5267 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA USE_BAND_868 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA USE_BAND_868 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK USE_BAND_868 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK USE_BAND_868 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA USE_BAND_915 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA USE_BAND_915 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK USE_BAND_915 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK USE_BAND_915 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvopt b/Keil/LoRaMote/tx-cw/tx-cw.uvopt similarity index 61% rename from Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvopt rename to Keil/LoRaMote/tx-cw/tx-cw.uvopt index 0cdfdb76e..5b6047d0b 100644 --- a/Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvopt +++ b/Keil/LoRaMote/tx-cw/tx-cw.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + tx-cw-868 0x4 ARM-ADS @@ -104,6 +104,512 @@ 0 0 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-868-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 0 0 11 @@ -198,12 +704,12 @@ 1 0 0 - 4 + 0 0 - 2 - 21 + 1 + 1 0 - ..\..\..\src\apps\ping-pong-lora\LoRaMote\main.c + ..\..\..\src\apps\tx-cw\LoRaMote\main.c main.c 0 0 @@ -211,7 +717,7 @@
- boards\LoRaMote-eu868 + boards\LoRaMote 1 0 0 @@ -227,7 +733,7 @@ 105 1 0 - ..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\src\boards\LoRaMote\adc-board.c adc-board.c 0 0 @@ -243,7 +749,7 @@ 73 85 0 - ..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\src\boards\LoRaMote\board.c board.c 0 0 @@ -259,7 +765,7 @@ 1 40 0 - ..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\src\boards\LoRaMote\gpio-board.c gpio-board.c 0 0 @@ -275,8 +781,8 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\i2c-board.c - i2c-board.c + ..\..\..\src\boards\LoRaMote\gps-board.c + gps-board.c 0 0 @@ -291,8 +797,8 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\rtc-board.c - rtc-board.c + ..\..\..\src\boards\LoRaMote\i2c-board.c + i2c-board.c 0 0 @@ -307,8 +813,8 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\spi-board.c - spi-board.c + ..\..\..\src\boards\LoRaMote\rtc-board.c + rtc-board.c 0 0 @@ -323,8 +829,8 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c - sx1272-board.c + ..\..\..\src\boards\LoRaMote\spi-board.c + spi-board.c 0 0 @@ -339,8 +845,8 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\timer-board.c - timer-board.c + ..\..\..\src\boards\LoRaMote\sx1272-board.c + sx1272-board.c 0 0 @@ -350,12 +856,28 @@ 1 0 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\LoRaMote\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 41 0 168 214 0 - ..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\src\boards\LoRaMote\uart-board.c uart-board.c 0 0 @@ -363,14 +885,14 @@ - boards\LoRaMote-eu868\cmsis + boards\LoRaMote\cmsis 0 0 0 0 3 - 11 + 12 2 0 0 @@ -379,14 +901,14 @@ 125 141 0 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s startup_stm32l1xx_md.s 0 0 3 - 12 + 13 1 0 0 @@ -395,7 +917,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -403,14 +925,14 @@ - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\LoRaMote\STM32L1xx_StdPeriph_Driver 0 0 0 0 4 - 13 + 14 1 0 0 @@ -426,7 +948,7 @@ 4 - 14 + 15 1 0 0 @@ -442,7 +964,7 @@ 4 - 15 + 16 1 0 0 @@ -458,7 +980,7 @@ 4 - 16 + 17 1 0 0 @@ -474,7 +996,7 @@ 4 - 17 + 18 1 0 0 @@ -490,7 +1012,7 @@ 4 - 18 + 19 1 0 0 @@ -506,7 +1028,7 @@ 4 - 19 + 20 1 0 0 @@ -522,7 +1044,7 @@ 4 - 20 + 21 1 0 0 @@ -538,7 +1060,7 @@ 4 - 21 + 22 1 0 0 @@ -554,7 +1076,7 @@ 4 - 22 + 23 1 0 0 @@ -570,7 +1092,7 @@ 4 - 23 + 24 1 0 0 @@ -586,7 +1108,7 @@ 4 - 24 + 25 1 0 0 @@ -602,7 +1124,7 @@ 4 - 25 + 26 1 0 0 @@ -618,7 +1140,7 @@ 4 - 26 + 27 1 0 0 @@ -642,7 +1164,7 @@ 0 5 - 27 + 28 1 0 0 @@ -658,7 +1180,7 @@ 5 - 28 + 29 1 0 0 @@ -675,27 +1197,11 @@ - mac + peripherals 1 0 0 0 - - 6 - 29 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - 6 30 @@ -707,38 +1213,14 @@ 0 0 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - peripherals - 1 - 0 - 0 - 0 - - 7 - 31 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 ..\..\..\src\peripherals\gpio-ioe.c gpio-ioe.c 0 0 - 7 - 32 + 6 + 31 1 0 0 @@ -753,8 +1235,8 @@ 0 - 7 - 33 + 6 + 32 1 0 0 @@ -769,8 +1251,8 @@ 0 - 7 - 34 + 6 + 33 1 0 0 @@ -785,8 +1267,8 @@ 0 - 7 - 35 + 6 + 34 1 0 0 @@ -801,8 +1283,8 @@ 0 - 7 - 36 + 6 + 35 1 0 0 @@ -816,22 +1298,6 @@ 0 0 - - 7 - 37 - 1 - 0 - 0 - 26 - 0 - 47 - 69 - 0 - ..\..\..\src\peripherals\up501.c - up501.c - 0 - 0 - @@ -841,8 +1307,8 @@ 0 0 - 8 - 38 + 7 + 36 1 0 0 @@ -865,8 +1331,8 @@ 0 0 - 9 - 39 + 8 + 37 1 0 0 @@ -881,8 +1347,8 @@ 0 - 9 - 40 + 8 + 38 1 0 0 @@ -897,8 +1363,8 @@ 0 - 9 - 41 + 8 + 39 1 0 0 @@ -913,8 +1379,8 @@ 0 - 9 - 42 + 8 + 40 1 0 0 @@ -929,24 +1395,8 @@ 0 - 9 - 43 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\i2c.c - i2c.c - 0 - 0 - - - 9 - 44 + 8 + 41 1 0 0 @@ -955,14 +1405,14 @@ 0 0 0 - ..\..\..\src\system\timer.c - timer.c + ..\..\..\src\system\gps.c + gps.c 0 0 - 9 - 45 + 8 + 42 1 0 0 @@ -971,22 +1421,14 @@ 0 0 0 - ..\..\..\src\system\uart.c - uart.c + ..\..\..\src\system\i2c.c + i2c.c 0 0 - - - - system\crypto - 1 - 0 - 0 - 0 - 10 - 46 + 8 + 43 1 0 0 @@ -995,14 +1437,14 @@ 0 0 0 - ..\..\..\src\system\crypto\aes.c - aes.c + ..\..\..\src\system\timer.c + timer.c 0 0 - 10 - 47 + 8 + 44 1 0 0 @@ -1011,8 +1453,8 @@ 0 0 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c + ..\..\..\src\system\uart.c + uart.c 0 0 diff --git a/Keil/LoRaMote/tx-cw/tx-cw.uvproj b/Keil/LoRaMote/tx-cw/tx-cw.uvproj new file mode 100644 index 000000000..0576353ae --- /dev/null +++ b/Keil/LoRaMote/tx-cw/tx-cw.uvproj @@ -0,0 +1,2639 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + tx-cw-868 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\LoRaMote\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\LoRaMote\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvopt deleted file mode 100644 index 6923b13a2..000000000 --- a/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvopt +++ /dev/null @@ -1,901 +0,0 @@ - - - - 1.0 - -
### uVision Project, (C) Keil Software
- - - *.c - *.s*; *.src; *.a* - *.obj - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - - - - 0 - 0 - - - - LoRaMac - 0x4 - ARM-ADS - - 16000000 - - 1 - 1 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\lst\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 11 - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - - - - - 0 - - - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - apps - 1 - 0 - 0 - 0 - - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 207 - 219 - 0 - ..\..\..\..\src\apps\LoRaMac\class1\SK-iM880A\main.c - main.c - 0 - 0 - - - - - boards\SK-iM880A - 1 - 0 - 0 - 0 - - 2 - 2 - 1 - 0 - 0 - 0 - 0 - 137 - 163 - 0 - ..\..\..\..\src\boards\SK-iM880A\adc-board.c - adc-board.c - 0 - 0 - - - 2 - 3 - 1 - 0 - 0 - 19 - 0 - 72 - 198 - 0 - ..\..\..\..\src\boards\SK-iM880A\board.c - board.c - 0 - 0 - - - 2 - 4 - 1 - 0 - 0 - 0 - 0 - 158 - 170 - 0 - ..\..\..\..\src\boards\SK-iM880A\gpio-board.c - gpio-board.c - 0 - 0 - - - 2 - 5 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\SK-iM880A\i2c-board.c - i2c-board.c - 0 - 0 - - - 2 - 6 - 1 - 0 - 0 - 0 - 0 - 460 - 476 - 0 - ..\..\..\..\src\boards\SK-iM880A\rtc-board.c - rtc-board.c - 0 - 0 - - - 2 - 7 - 1 - 0 - 0 - 0 - 0 - 58 - 70 - 0 - ..\..\..\..\src\boards\SK-iM880A\spi-board.c - spi-board.c - 0 - 0 - - - 2 - 8 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c - sx1272-board.c - 0 - 0 - - - 2 - 9 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\SK-iM880A\timer-board.c - timer-board.c - 0 - 0 - - - 2 - 10 - 1 - 0 - 0 - 16 - 0 - 1 - 17 - 0 - ..\..\..\..\src\boards\SK-iM880A\uart-board.c - uart-board.c - 0 - 0 - - - - - boards\SK-iM880A\cmsis - 0 - 0 - 0 - 0 - - 3 - 11 - 2 - 0 - 0 - 0 - 0 - 130 - 141 - 0 - ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s - startup_stm32l1xx_md.s - 0 - 0 - - - 3 - 12 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c - system_stm32l1xx.c - 0 - 0 - - - - - boards\SK-iM880A\STM32L1xx_StdPeriph_Driver - 0 - 0 - 0 - 0 - - 4 - 13 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - misc.c - 0 - 0 - - - 4 - 14 - 1 - 0 - 0 - 0 - 0 - 821 - 822 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - stm32l1xx_adc.c - 0 - 0 - - - 4 - 15 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - stm32l1xx_dbgmcu.c - 0 - 0 - - - 4 - 16 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - stm32l1xx_dma.c - 0 - 0 - - - 4 - 17 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - stm32l1xx_exti.c - 0 - 0 - - - 4 - 18 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - stm32l1xx_gpio.c - 0 - 0 - - - 4 - 19 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - stm32l1xx_i2c.c - 0 - 0 - - - 4 - 20 - 1 - 0 - 0 - 0 - 0 - 691 - 702 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - stm32l1xx_pwr.c - 0 - 0 - - - 4 - 21 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - stm32l1xx_rcc.c - 0 - 0 - - - 4 - 22 - 1 - 0 - 0 - 0 - 0 - 1267 - 1279 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - stm32l1xx_rtc.c - 0 - 0 - - - 4 - 23 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - stm32l1xx_spi.c - 0 - 0 - - - 4 - 24 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - stm32l1xx_syscfg.c - 0 - 0 - - - 4 - 25 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - stm32l1xx_tim.c - 0 - 0 - - - 4 - 26 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - stm32l1xx_usart.c - 0 - 0 - - - - - boards\mcu\stm32 - 0 - 0 - 0 - 0 - - 5 - 27 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - sysIrqHandlers.c - 0 - 0 - - - 5 - 28 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\boards\mcu\stm32\utilities.c - utilities.c - 0 - 0 - - - - - mac - 1 - 0 - 0 - 0 - - 6 - 29 - 1 - 0 - 0 - 16 - 0 - 2 - 21 - 0 - ..\..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - radio - 1 - 0 - 0 - 0 - - 7 - 31 - 1 - 0 - 0 - 0 - 0 - 276 - 289 - 0 - ..\..\..\..\src\radio\sx1272\sx1272.c - sx1272.c - 0 - 0 - - - - - system - 1 - 0 - 0 - 0 - - 8 - 32 - 1 - 0 - 0 - 5 - 0 - 13 - 46 - 0 - ..\..\..\..\src\system\adc.c - adc.c - 0 - 0 - - - 8 - 33 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\delay.c - delay.c - 0 - 0 - - - 8 - 34 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\fifo.c - fifo.c - 0 - 0 - - - 8 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\gpio.c - gpio.c - 0 - 0 - - - 8 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\i2c.c - i2c.c - 0 - 0 - - - 8 - 37 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\timer.c - timer.c - 0 - 0 - - - 8 - 38 - 1 - 0 - 0 - 14 - 0 - 1 - 18 - 0 - ..\..\..\..\src\system\uart.c - uart.c - 0 - 0 - - - - - system\crypto - 1 - 0 - 0 - 0 - - 9 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 9 - 40 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - -
diff --git a/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvproj deleted file mode 100644 index 35685ecb7..000000000 --- a/Keil/SK-iM880A/LoRaMac/class1/LoRaMac.uvproj +++ /dev/null @@ -1,647 +0,0 @@ - - - - 1.1 - -
### uVision Project, (C) Keil Software
- - - - LoRaMac - 0x4 - ARM-ADS - - - STM32L151CB - STMicroelectronics - IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - 5244 - $$Device:STM32L151CB$Device\Include\STM32L1xx.h - - - - - - - - - - $$Device:STM32L151CB$SVD\STM32L15x.svd - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 1 - - .\obj\ - LoRaMac - 1 - 0 - 1 - 1 - 1 - .\lst\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM3 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM3 - - - - 1 - 0 - 0 - 0 - 16 - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - - 0 - 11 - - - - - - - - - - - - - - STLink\ST-LINKIII-KEIL_SWO.dll - - - - - 1 - 0 - 0 - 1 - 1 - 4103 - - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M3" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 8 - 1 - 0 - 0 - 3 - 3 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 1 - 0x8000000 - 0x20000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x20000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x4000 - - - 0 - 0x0 - 0x0 - - - - - - 1 - 2 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - --c99 --gnu - USE_DEBUGGER LOW_POWER_MODE_ENABLE - - ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - - - - - - - - - - - apps - - - main.c - 1 - ..\..\..\..\src\apps\LoRaMac\class1\SK-iM880A\main.c - - - - - boards\SK-iM880A - - - adc-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\adc-board.c - - - board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\board.c - - - gpio-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\gpio-board.c - - - i2c-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\i2c-board.c - - - rtc-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\rtc-board.c - - - spi-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\spi-board.c - - - sx1272-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c - - - timer-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\timer-board.c - - - uart-board.c - 1 - ..\..\..\..\src\boards\SK-iM880A\uart-board.c - - - - - boards\SK-iM880A\cmsis - - - startup_stm32l1xx_md.s - 2 - ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s - - - system_stm32l1xx.c - 1 - ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c - - - - - boards\SK-iM880A\STM32L1xx_StdPeriph_Driver - - - misc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - - stm32l1xx_adc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - - - stm32l1xx_dbgmcu.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c - - - stm32l1xx_dma.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c - - - stm32l1xx_exti.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c - - - stm32l1xx_gpio.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c - - - stm32l1xx_i2c.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c - - - stm32l1xx_pwr.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c - - - stm32l1xx_rcc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c - - - stm32l1xx_rtc.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c - - - stm32l1xx_spi.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c - - - stm32l1xx_syscfg.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c - - - stm32l1xx_tim.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c - - - stm32l1xx_usart.c - 1 - ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c - - - - - boards\mcu\stm32 - - - sysIrqHandlers.c - 1 - ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - - utilities.c - 1 - ..\..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\..\src\mac\LoRaMacCrypto.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\..\src\radio\sx1272\sx1272.c - - - - - system - - - adc.c - 1 - ..\..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\..\src\system\fifo.c - - - gpio.c - 1 - ..\..\..\..\src\system\gpio.c - - - i2c.c - 1 - ..\..\..\..\src\system\i2c.c - - - timer.c - 1 - ..\..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\..\src\system\crypto\cmac.c - - - - - - - -
diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt index bc3636011..99a610eec 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -846,10 +848,10 @@ 1 0 0 - 14 + 0 0 1 - 18 + 20 0 ..\..\..\..\src\system\uart.c uart.c diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj index 664be92ab..c36595a85 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1
0 11 @@ -353,8 +355,10 @@ 0 0 0 + 1 + 0 - --c99 --gnu + USE_DEBUGGER LOW_POWER_MODE_ENABLE ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt index 8edf25879..540e029b6 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -686,10 +688,10 @@ 1 0 0 - 16 + 20 0 - 2 - 21 + 844 + 865 0 ..\..\..\..\src\mac\LoRaMac.c LoRaMac.c diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj index 61f5d0d94..33daa1cbf 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,8 +355,10 @@ 0 0 0 + 1 + 0 - --c99 --gnu + USE_DEBUGGER LOW_POWER_MODE_ENABLE ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + diff --git a/Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvopt b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt similarity index 81% rename from Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvopt rename to Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt index fb730c882..0dadaa856 100644 --- a/Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvopt +++ b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + Ping-Pong-lora 0x4 ARM-ADS @@ -104,6 +104,176 @@ 0 0 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 0 0 11 @@ -203,7 +373,7 @@ 0 0 0 - ..\..\..\src\apps\ping-pong-lora\SK-iM880A\main.c + ..\..\..\src\apps\ping-pong\SK-iM880A\main.c main.c 0 0 @@ -675,7 +845,7 @@ - mac + radio 1 0 0 @@ -691,46 +861,6 @@ 0 0 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - radio - 1 - 0 - 0 - 0 - - 7 - 31 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 ..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -745,8 +875,8 @@ 0 0 - 8 - 32 + 7 + 30 1 0 0 @@ -761,8 +891,8 @@ 0 - 8 - 33 + 7 + 31 1 0 0 @@ -777,8 +907,8 @@ 0 - 8 - 34 + 7 + 32 1 0 0 @@ -793,8 +923,8 @@ 0 - 8 - 35 + 7 + 33 1 0 0 @@ -809,8 +939,8 @@ 0 - 8 - 36 + 7 + 34 1 0 0 @@ -825,8 +955,8 @@ 0 - 8 - 37 + 7 + 35 1 0 0 @@ -841,8 +971,8 @@ 0 - 8 - 38 + 7 + 36 1 0 0 @@ -858,44 +988,4 @@ - - system\crypto - 1 - 0 - 0 - 0 - - 9 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 9 - 40 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - diff --git a/Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvproj b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj similarity index 50% rename from Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvproj rename to Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj index 9a5748d09..3257de86f 100644 --- a/Keil/SK-iM880A/ping-pong-lora/Ping-Pong.uvproj +++ b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj @@ -7,7 +7,7 @@ - Ping-Pong + Ping-Pong-lora 0x4 ARM-ADS @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,9 +355,11 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER + + USE_DEBUGGER USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,7 +407,7 @@ main.c 1 - ..\..\..\src\apps\ping-pong-lora\SK-iM880A\main.c + ..\..\..\src\apps\ping-pong\SK-iM880A\main.c @@ -560,21 +566,6 @@ - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - - - radio @@ -625,18 +616,615 @@ - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c + + + + Ping-Pong-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SK-iM880A\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c diff --git a/Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvopt b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt similarity index 75% rename from Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvopt rename to Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt index 1017f38e9..d8474db2e 100644 --- a/Keil/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.uvopt +++ b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + rx-sensi-lora 0x4 ARM-ADS @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -143,7 +145,175 @@ 0 ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + -U -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-fsk + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) 0 @@ -198,12 +368,12 @@ 1 0 0 - 4 + 5 0 - 2 - 21 + 1 + 99 0 - ..\..\..\src\apps\ping-pong-fsk\LoRaMote\main.c + ..\..\..\src\apps\rx-sensi\SK-iM880A\main.c main.c 0 0 @@ -211,7 +381,7 @@ - boards\LoRaMote-eu868 + boards\SK-iM880A 1 0 0 @@ -224,10 +394,10 @@ 0 0 0 - 105 - 1 + 0 + 0 0 - ..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\src\boards\SK-iM880A\adc-board.c adc-board.c 0 0 @@ -238,12 +408,12 @@ 1 0 0 - 0 + 26 0 - 73 - 85 + 163 + 191 0 - ..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\src\boards\SK-iM880A\board.c board.c 0 0 @@ -256,10 +426,10 @@ 0 51 0 - 1 - 40 + 0 + 0 0 - ..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\src\boards\SK-iM880A\gpio-board.c gpio-board.c 0 0 @@ -275,7 +445,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\src\boards\SK-iM880A\i2c-board.c i2c-board.c 0 0 @@ -291,7 +461,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\src\boards\SK-iM880A\rtc-board.c rtc-board.c 0 0 @@ -307,7 +477,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\src\boards\SK-iM880A\spi-board.c spi-board.c 0 0 @@ -323,7 +493,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c + ..\..\..\src\boards\SK-iM880A\sx1272-board.c sx1272-board.c 0 0 @@ -339,7 +509,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\src\boards\SK-iM880A\timer-board.c timer-board.c 0 0 @@ -352,10 +522,10 @@ 0 41 0 - 168 - 214 + 0 + 0 0 - ..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\src\boards\SK-iM880A\uart-board.c uart-board.c 0 0 @@ -363,7 +533,7 @@ - boards\LoRaMote-eu868\cmsis + boards\SK-iM880A\cmsis 0 0 0 @@ -376,10 +546,10 @@ 0 0 0 - 125 - 141 + 0 + 0 0 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + ..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s startup_stm32l1xx_md.s 0 0 @@ -395,7 +565,7 @@ 0 0 0 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c system_stm32l1xx.c 0 0 @@ -403,7 +573,7 @@ - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\SK-iM880A\STM32L1xx_StdPeriph_Driver 0 0 0 @@ -528,8 +698,8 @@ 0 0 0 - 689 - 702 + 0 + 0 0 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c stm32l1xx_pwr.c @@ -560,8 +730,8 @@ 0 0 0 - 1267 - 1279 + 0 + 0 0 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c stm32l1xx_rtc.c @@ -675,7 +845,7 @@ - mac + radio 1 0 0 @@ -691,166 +861,6 @@ 0 0 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - peripherals - 1 - 0 - 0 - 0 - - 7 - 31 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c - 0 - 0 - - - 7 - 32 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\mag3110.c - mag3110.c - 0 - 0 - - - 7 - 33 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\mma8451.c - mma8451.c - 0 - 0 - - - 7 - 34 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\mpl3115.c - mpl3115.c - 0 - 0 - - - 7 - 35 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\sx1509.c - sx1509.c - 0 - 0 - - - 7 - 36 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\peripherals\sx9500.c - sx9500.c - 0 - 0 - - - 7 - 37 - 1 - 0 - 0 - 26 - 0 - 47 - 69 - 0 - ..\..\..\src\peripherals\up501.c - up501.c - 0 - 0 - - - - - radio - 1 - 0 - 0 - 0 - - 8 - 38 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 ..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -865,8 +875,8 @@ 0 0 - 9 - 39 + 7 + 30 1 0 0 @@ -881,8 +891,8 @@ 0 - 9 - 40 + 7 + 31 1 0 0 @@ -897,8 +907,8 @@ 0 - 9 - 41 + 7 + 32 1 0 0 @@ -913,8 +923,8 @@ 0 - 9 - 42 + 7 + 33 1 0 0 @@ -929,8 +939,8 @@ 0 - 9 - 43 + 7 + 34 1 0 0 @@ -945,8 +955,8 @@ 0 - 9 - 44 + 7 + 35 1 0 0 @@ -961,8 +971,8 @@ 0 - 9 - 45 + 7 + 36 1 0 0 @@ -978,44 +988,4 @@ - - system\crypto - 1 - 0 - 0 - 0 - - 10 - 46 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 10 - 47 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - diff --git a/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj new file mode 100644 index 000000000..167979a6e --- /dev/null +++ b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj @@ -0,0 +1,1235 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rx-sensi-lora + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SK-iM880A\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-fsk + 0x4 + ARM-ADS + + + STM32L151CB + STMicroelectronics + IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + 5244 + $$Device:STM32L151CB$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151CB$SVD\STM32L15x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + STLink\ST-LINKIII-KEIL_SWO.dll + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SK-iM880A\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvopt b/Keil/SK-iM880A/tx-cw/tx-cw.uvopt similarity index 90% rename from Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvopt rename to Keil/SK-iM880A/tx-cw/tx-cw.uvopt index 5e7e28bfc..716812622 100644 --- a/Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvopt +++ b/Keil/SK-iM880A/tx-cw/tx-cw.uvopt @@ -21,7 +21,7 @@ - Ping-Pong + tx-cw 0x4 ARM-ADS @@ -104,6 +104,8 @@ 0 0 1 + 1 + 1 0 0 11 @@ -198,12 +200,12 @@ 1 0 0 - 41 + 0 0 - 0 - 0 + 1 + 1 0 - ..\..\..\src\apps\ping-pong-fsk\SK-iM880A\main.c + ..\..\..\src\apps\tx-cw\SK-iM880A\main.c main.c 0 0 @@ -238,10 +240,10 @@ 1 0 0 - 0 + 26 0 - 0 - 0 + 163 + 191 0 ..\..\..\src\boards\SK-iM880A\board.c board.c @@ -675,7 +677,7 @@ - mac + radio 1 0 0 @@ -691,46 +693,6 @@ 0 0 0 - ..\..\..\src\mac\LoRaMac.c - LoRaMac.c - 0 - 0 - - - 6 - 30 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\mac\LoRaMacCrypto.c - LoRaMacCrypto.c - 0 - 0 - - - - - radio - 1 - 0 - 0 - 0 - - 7 - 31 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 ..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -745,8 +707,8 @@ 0 0 - 8 - 32 + 7 + 30 1 0 0 @@ -761,8 +723,8 @@ 0 - 8 - 33 + 7 + 31 1 0 0 @@ -777,8 +739,8 @@ 0 - 8 - 34 + 7 + 32 1 0 0 @@ -793,8 +755,8 @@ 0 - 8 - 35 + 7 + 33 1 0 0 @@ -809,8 +771,8 @@ 0 - 8 - 36 + 7 + 34 1 0 0 @@ -825,8 +787,8 @@ 0 - 8 - 37 + 7 + 35 1 0 0 @@ -841,8 +803,8 @@ 0 - 8 - 38 + 7 + 36 1 0 0 @@ -858,44 +820,4 @@ - - system\crypto - 1 - 0 - 0 - 0 - - 9 - 39 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\aes.c - aes.c - 0 - 0 - - - 9 - 40 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - ..\..\..\src\system\crypto\cmac.c - cmac.c - 0 - 0 - - - diff --git a/Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvproj b/Keil/SK-iM880A/tx-cw/tx-cw.uvproj similarity index 95% rename from Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvproj rename to Keil/SK-iM880A/tx-cw/tx-cw.uvproj index c84325083..4d845d6ad 100644 --- a/Keil/SK-iM880A/ping-pong-fsk/Ping-Pong.uvproj +++ b/Keil/SK-iM880A/tx-cw/tx-cw.uvproj @@ -7,7 +7,7 @@ - Ping-Pong + tx-cw 0x4 ARM-ADS @@ -45,7 +45,7 @@ 1 .\obj\ - Ping-Pong + tx-cw 1 0 1 @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -353,8 +355,10 @@ 0 0 0 + 1 + 0 - --c99 --gnu + USE_DEBUGGER ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,7 +407,7 @@ main.c 1 - ..\..\..\src\apps\ping-pong-fsk\SK-iM880A\main.c + ..\..\..\src\apps\tx-cw\SK-iM880A\main.c @@ -560,21 +566,6 @@ - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - - - radio @@ -625,21 +616,6 @@ - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c - - -
diff --git a/Keil/SensorNode/Bootloader/BootLoader.uvopt b/Keil/SensorNode/Bootloader/BootLoader.uvopt new file mode 100644 index 000000000..d14db4526 --- /dev/null +++ b/Keil/SensorNode/Bootloader/BootLoader.uvopt @@ -0,0 +1,899 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + BootLoader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL010000 -FS08000000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM) + + + + + + 0 + 1 + regValue + + + 1 + 1 + status + + + 2 + 1 + offset,0x0A + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 10 + 0 + 1 + 22 + 0 + ..\..\..\src\apps\bootloader\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 10 + 0 + 1 + 22 + 0 + ..\..\..\src\boards\SensorNode\usb-dfu-board.c + usb-dfu-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 5 + 2 + 0 + 0 + 0 + 0 + 130 + 141 + 0 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\usb + 0 + 0 + 0 + 0 + + 4 + 7 + 1 + 0 + 0 + 10 + 0 + 1 + 30 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\dfu_mal.c + dfu_mal.c + 0 + 0 + + + 4 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\flash_if.c + flash_if.c + 0 + 0 + + + 4 + 9 + 1 + 0 + 0 + 10 + 0 + 1 + 31 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_desc.c + usb_desc.c + 0 + 0 + + + 4 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_istr.c + usb_istr.c + 0 + 0 + + + 4 + 11 + 1 + 0 + 0 + 10 + 0 + 1 + 31 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_prop.c + usb_prop.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 10 + 0 + 1 + 33 + 0 + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_pwr.c + usb_pwr.c + 0 + 0 + + + + + boards\SensorNode\STM32_USB-FS-Device_Driver + 0 + 0 + 0 + 0 + + 5 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_core.c + usb_core.c + 0 + 0 + + + 5 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_init.c + usb_init.c + 0 + 0 + + + 5 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_int.c + usb_int.c + 0 + 0 + + + 5 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_mem.c + usb_mem.c + 0 + 0 + + + 5 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_regs.c + usb_regs.c + 0 + 0 + + + 5 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_sil.c + usb_sil.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 6 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 6 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 6 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 6 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 6 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 6 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 6 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 6 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 6 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash.c + stm32l1xx_flash.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash_ramfunc.c + stm32l1xx_flash_ramfunc.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 7 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 8 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + +
diff --git a/Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvproj b/Keil/SensorNode/Bootloader/BootLoader.uvproj similarity index 77% rename from Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvproj rename to Keil/SensorNode/Bootloader/BootLoader.uvproj index f9b8c735d..dce3e9ec8 100644 --- a/Keil/LoRaMote-eu868/ping-pong-lora/Ping-Pong.uvproj +++ b/Keil/SensorNode/Bootloader/BootLoader.uvproj @@ -7,19 +7,19 @@ - Ping-Pong + BootLoader 0x4 ARM-ADS - STM32L151CB + STM32L151C8 STMicroelectronics - IROM(0x08000000,0x20000) IRAM(0x20000000,0x4000) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) - 5244 - $$Device:STM32L151CB$Device\Include\STM32L1xx.h + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h @@ -29,7 +29,7 @@ - $$Device:STM32L151CB$SVD\STM32L15x.svd + $$Device:STM32L151C8$SVD\STM32L1xx.svd 0 0 @@ -45,7 +45,7 @@ 1 .\obj\ - Ping-Pong + BootLoader 1 0 1 @@ -139,6 +139,8 @@ 0 0 1 + 1 + 1 0 11 @@ -167,9 +169,9 @@ 1 4103 - 0 - STLink\ST-LINKIII-KEIL_SWO.dll - "" () + 1 + BIN\UL2CM3.DLL + @@ -274,12 +276,12 @@ 0 0x20000000 - 0x4000 + 0x2800 1 0x8000000 - 0x20000 + 0x10000 0 @@ -304,7 +306,7 @@ 1 0x8000000 - 0x20000 + 0x3000 1 @@ -329,7 +331,7 @@ 0 0x20000000 - 0x4000 + 0x2800 0 @@ -341,7 +343,7 @@ 1 - 2 + 3 0 0 1 @@ -353,11 +355,13 @@ 0 0 0 + 1 + 0 - --c99 --gnu - USE_DEBUGGER USE_DEBUG_PINS + + USE_DEBUGGER - ..\..\..\src;..\..\..\src\boards\LoRaMote-eu868;..\..\..\src\boards\LoRaMote-eu868\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\SensorNode\usb\dfu\inc;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\inc;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system @@ -369,6 +373,7 @@ 0 0 0 + 0 @@ -385,6 +390,7 @@ 0 0x08000000 0x20000000 + @@ -401,88 +407,123 @@ main.c 1 - ..\..\..\src\apps\ping-pong-lora\LoRaMote\main.c + ..\..\..\src\apps\bootloader\SensorNode\main.c - boards\LoRaMote-eu868 + boards\SensorNode - adc-board.c + gpio-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\adc-board.c + ..\..\..\src\boards\SensorNode\gpio-board.c - board.c + i2c-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\board.c + ..\..\..\src\boards\SensorNode\i2c-board.c - gpio-board.c + usb-dfu-board.c 1 - ..\..\..\src\boards\LoRaMote-eu868\gpio-board.c + ..\..\..\src\boards\SensorNode\usb-dfu-board.c + + + + boards\SensorNode\cmsis + - i2c-board.c + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c 1 - ..\..\..\src\boards\LoRaMote-eu868\i2c-board.c + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + boards\SensorNode\usb + - rtc-board.c + dfu_mal.c 1 - ..\..\..\src\boards\LoRaMote-eu868\rtc-board.c + ..\..\..\src\boards\SensorNode\usb\dfu\src\dfu_mal.c - spi-board.c + flash_if.c 1 - ..\..\..\src\boards\LoRaMote-eu868\spi-board.c + ..\..\..\src\boards\SensorNode\usb\dfu\src\flash_if.c - sx1272-board.c + usb_desc.c 1 - ..\..\..\src\boards\LoRaMote-eu868\sx1272-board.c + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_desc.c - timer-board.c + usb_istr.c 1 - ..\..\..\src\boards\LoRaMote-eu868\timer-board.c + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_istr.c - uart-board.c + usb_prop.c 1 - ..\..\..\src\boards\LoRaMote-eu868\uart-board.c + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_prop.c + + + usb_pwr.c + 1 + ..\..\..\src\boards\SensorNode\usb\dfu\src\usb_pwr.c - boards\LoRaMote-eu868\cmsis + boards\SensorNode\STM32_USB-FS-Device_Driver - startup_stm32l1xx_md.s - 2 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\arm-std\startup_stm32l1xx_md.s + usb_core.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_core.c - system_stm32l1xx.c + usb_init.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_init.c + + + usb_int.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_int.c + + + usb_mem.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_mem.c + + + usb_regs.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_regs.c + + + usb_sil.c 1 - ..\..\..\src\boards\LoRaMote-eu868\cmsis\system_stm32l1xx.c + ..\..\..\src\boards\mcu\stm32\STM32_USB-FS-Device_Driver\src\usb_sil.c - boards\LoRaMote-eu868\STM32L1xx_StdPeriph_Driver + boards\SensorNode\STM32L1xx_StdPeriph_Driver misc.c 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c - - stm32l1xx_adc.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c - stm32l1xx_dbgmcu.c 1 @@ -543,6 +584,59 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + stm32l1xx_flash.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash.c + + + stm32l1xx_flash_ramfunc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_flash_ramfunc.c + + + 2 + 9 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + + + + + + + + + + @@ -553,26 +647,6 @@ 1 ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c - - utilities.c - 1 - ..\..\..\src\boards\mcu\stm32\utilities.c - - - - - mac - - - LoRaMac.c - 1 - ..\..\..\src\mac\LoRaMac.c - - - LoRaMacCrypto.c - 1 - ..\..\..\src\mac\LoRaMacCrypto.c - @@ -583,21 +657,6 @@ 1 ..\..\..\src\peripherals\gpio-ioe.c - - mag3110.c - 1 - ..\..\..\src\peripherals\mag3110.c - - - mma8451.c - 1 - ..\..\..\src\peripherals\mma8451.c - - - mpl3115.c - 1 - ..\..\..\src\peripherals\mpl3115.c - sx1509.c 1 @@ -608,41 +667,11 @@ 1 ..\..\..\src\peripherals\sx9500.c - - up501.c - 1 - ..\..\..\src\peripherals\up501.c - - - - - radio - - - sx1272.c - 1 - ..\..\..\src\radio\sx1272\sx1272.c - system - - adc.c - 1 - ..\..\..\src\system\adc.c - - - delay.c - 1 - ..\..\..\src\system\delay.c - - - fifo.c - 1 - ..\..\..\src\system\fifo.c - gpio.c 1 @@ -653,31 +682,6 @@ 1 ..\..\..\src\system\i2c.c - - timer.c - 1 - ..\..\..\src\system\timer.c - - - uart.c - 1 - ..\..\..\src\system\uart.c - - - - - system\crypto - - - aes.c - 1 - ..\..\..\src\system\crypto\aes.c - - - cmac.c - 1 - ..\..\..\src\system\crypto\cmac.c - diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt new file mode 100644 index 000000000..54886beb4 --- /dev/null +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt @@ -0,0 +1,2215 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + LoRaMac-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-433-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 214 + 226 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 39 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 125 + 141 + 0 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 690 + 702 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + mac + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMac.c + LoRaMac.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMacCrypto.c + LoRaMacCrypto.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 7 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 39 + 1 + 0 + 0 + 22 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 9 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 9 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 9 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 9 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 9 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + + + system\crypto + 1 + 0 + 0 + 0 + + 10 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\aes.c + aes.c + 0 + 0 + + + 10 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\cmac.c + cmac.c + 0 + 0 + + + +
diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj new file mode 100644 index 000000000..8c5ec31ad --- /dev/null +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj @@ -0,0 +1,5507 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-433 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-433-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt new file mode 100644 index 000000000..408bdf27c --- /dev/null +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt @@ -0,0 +1,2215 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + LoRaMac-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-433-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-470-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 214 + 226 + 0 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 39 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 125 + 141 + 0 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 690 + 702 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + mac + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMac.c + LoRaMac.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMacCrypto.c + LoRaMacCrypto.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 7 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 9 + 39 + 1 + 0 + 0 + 22 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 9 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 9 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 9 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 9 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 9 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 9 + 45 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + + + system\crypto + 1 + 0 + 0 + 0 + + 10 + 47 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\aes.c + aes.c + 0 + 0 + + + 10 + 48 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\system\crypto\cmac.c + cmac.c + 0 + 0 + + + +
diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj new file mode 100644 index 000000000..48d4677bb --- /dev/null +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj @@ -0,0 +1,5507 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + LoRaMac-433 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-433-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_433 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-470-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_470 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + LoRaMac + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER LOW_POWER_MODE_ENABLE USE_BAND_915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + +
diff --git a/Keil/SensorNode/ping-pong/Ping-Pong.uvopt b/Keil/SensorNode/ping-pong/Ping-Pong.uvopt new file mode 100644 index 000000000..a3d589233 --- /dev/null +++ b/Keil/SensorNode/ping-pong/Ping-Pong.uvopt @@ -0,0 +1,3479 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Ping-Pong-433-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-433-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-433-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-433-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-470-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-868-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Ping-Pong-915-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 214 + 226 + 0 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + +
diff --git a/Keil/SensorNode/ping-pong/Ping-Pong.uvproj b/Keil/SensorNode/ping-pong/Ping-Pong.uvproj new file mode 100644 index 000000000..5c33eca8c --- /dev/null +++ b/Keil/SensorNode/ping-pong/Ping-Pong.uvproj @@ -0,0 +1,10523 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + Ping-Pong-433-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-433-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-433-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-433-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-470-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-470-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-470-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-470-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-868-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + Ping-Pong-915-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + Ping-Pong + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\ping-pong\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/SensorNode/rx-sensi/rx-sensi.uvopt b/Keil/SensorNode/rx-sensi/rx-sensi.uvopt new file mode 100644 index 000000000..e6b17d579 --- /dev/null +++ b/Keil/SensorNode/rx-sensi/rx-sensi.uvopt @@ -0,0 +1,3479 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + rx-sensi-433-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-433-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-433-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-433-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-470-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-868-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-lora-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + rx-sensi-915-fsk-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 214 + 226 + 0 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + +
diff --git a/Keil/SensorNode/rx-sensi/rx-sensi.uvproj b/Keil/SensorNode/rx-sensi/rx-sensi.uvproj new file mode 100644 index 000000000..e2e0e70ac --- /dev/null +++ b/Keil/SensorNode/rx-sensi/rx-sensi.uvproj @@ -0,0 +1,10523 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + rx-sensi-433-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-433-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-433-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-433-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-470-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-470-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-470-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-470-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-868-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-lora + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-lora-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-fsk + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + rx-sensi-915-fsk-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + rx-sensi + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\rx-sensi\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Keil/SensorNode/tx-cw/tx-cw.uvopt b/Keil/SensorNode/tx-cw/tx-cw.uvopt new file mode 100644 index 000000000..72e13e546 --- /dev/null +++ b/Keil/SensorNode/tx-cw/tx-cw.uvopt @@ -0,0 +1,2135 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + tx-cw-433 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10959 -O10959 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-433-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-470 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-470-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + tx-cw-915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + apps + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 214 + 226 + 0 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + main.c + 0 + 0 + + + + + boards\SensorNode + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\adc-board.c + adc-board.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\board.c + board.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 51 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gpio-board.c + gpio-board.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\gps-board.c + gps-board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\i2c-board.c + i2c-board.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\rtc-board.c + rtc-board.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\spi-board.c + spi-board.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\sx1276-board.c + sx1276-board.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\timer-board.c + timer-board.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\uart-board.c + uart-board.c + 0 + 0 + + + + + boards\SensorNode\cmsis + 0 + 0 + 0 + 0 + + 3 + 12 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + startup_stm32l1xx_md.s + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + system_stm32l1xx.c + 0 + 0 + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + 0 + 0 + 0 + 0 + + 4 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + misc.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + stm32l1xx_adc.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + stm32l1xx_dbgmcu.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + stm32l1xx_dma.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + stm32l1xx_exti.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + stm32l1xx_gpio.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + stm32l1xx_i2c.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + stm32l1xx_pwr.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + stm32l1xx_rcc.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + stm32l1xx_rtc.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + stm32l1xx_spi.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + stm32l1xx_syscfg.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + stm32l1xx_tim.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + stm32l1xx_usart.c + 0 + 0 + + + + + boards\mcu\stm32 + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + sysIrqHandlers.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\boards\mcu\stm32\utilities.c + utilities.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 6 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\peripherals\sx9500.c + sx9500.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 7 + 36 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\radio\sx1276\sx1276.c + sx1276.c + 0 + 0 + + + + + system + 1 + 0 + 0 + 0 + + 8 + 37 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\adc.c + adc.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\delay.c + delay.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\fifo.c + fifo.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gpio.c + gpio.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\gps.c + gps.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\i2c.c + i2c.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\timer.c + timer.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\src\system\uart.c + uart.c + 0 + 0 + + + +
diff --git a/Keil/SensorNode/tx-cw/tx-cw.uvproj b/Keil/SensorNode/tx-cw/tx-cw.uvproj new file mode 100644 index 000000000..41d638431 --- /dev/null +++ b/Keil/SensorNode/tx-cw/tx-cw.uvproj @@ -0,0 +1,5267 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + tx-cw-433 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-433-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_433 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-470 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-470-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_470 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-868 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-868-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-915 + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + tx-cw-915-Bootloader + 0x4 + ARM-ADS + + + STM32L151C8 + STMicroelectronics + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2800) CPUTYPE("Cortex-M3") CLOCK(32000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + 5238 + $$Device:STM32L151C8$Device\Include\STM32L1xx.h + + + + + + + + + + $$Device:STM32L151C8$SVD\STM32L1xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + tx-cw + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 0 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0xd000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2800 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + + + USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + + ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\src\apps\tx-cw\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\src\boards\SensorNode\sx1276-board.c + + + timer-board.c + 1 + ..\..\..\src\boards\SensorNode\timer-board.c + + + uart-board.c + 1 + ..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l1xx_md.s + 2 + ..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l1xx_md.s + + + system_stm32l1xx.c + 1 + ..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_StdPeriph_Driver + + + misc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\misc.c + + + stm32l1xx_adc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_adc.c + + + stm32l1xx_dbgmcu.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dbgmcu.c + + + stm32l1xx_dma.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_dma.c + + + stm32l1xx_exti.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_exti.c + + + stm32l1xx_gpio.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_gpio.c + + + stm32l1xx_i2c.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_i2c.c + + + stm32l1xx_pwr.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_pwr.c + + + stm32l1xx_rcc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rcc.c + + + stm32l1xx_rtc.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_rtc.c + + + stm32l1xx_spi.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_spi.c + + + stm32l1xx_syscfg.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_syscfg.c + + + stm32l1xx_tim.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_tim.c + + + stm32l1xx_usart.c + 1 + ..\..\..\src\boards\mcu\stm32\STM32L1xx_StdPeriph_Driver\src\stm32l1xx_usart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\src\boards\mcu\stm32\utilities.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\src\system\uart.c + + + + + + + +
diff --git a/Ride/Bleeper/LoRaMac/classA/LoRaMac.rapp b/Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rapp similarity index 69% rename from Ride/Bleeper/LoRaMac/classA/LoRaMac.rapp rename to Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rapp index c64410da5..96326b58a 100644 --- a/Ride/Bleeper/LoRaMac/classA/LoRaMac.rapp +++ b/Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rapp @@ -1,12 +1,19 @@ - - + + - + + + + + + + + - - - + + + @@ -22,174 +29,168 @@ - + - - - - - - - - + - + - + - + - + - + - + - - - - - - + + + + + + - - + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
-
- +
- - + +
- +
- +
- - + +
- +
- +
- - + + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
diff --git a/Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rprj b/Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rprj similarity index 91% rename from Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rprj rename to Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rprj index d561e06ab..55423f815 100644 --- a/Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rprj +++ b/Ride/Bleeper-72/LoRaMac/classA/LoRaMac.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/Bleeper/LoRaMac/classB/LoRaMac.rapp b/Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rapp similarity index 69% rename from Ride/Bleeper/LoRaMac/classB/LoRaMac.rapp rename to Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rapp index e4e5c1395..ed7c835dc 100644 --- a/Ride/Bleeper/LoRaMac/classB/LoRaMac.rapp +++ b/Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rapp @@ -1,12 +1,19 @@ - - + + - + + + + + + + + - - - + + + @@ -22,174 +29,168 @@ - + - - - - - - - - + - + - + - + - + - + - + - - - - - - + + + + + + - - + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
-
- +
- - + +
- +
- +
- - + +
- +
- +
- - + + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
diff --git a/Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rprj b/Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rprj similarity index 91% rename from Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rprj rename to Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rprj index 574c4e884..97cd3f673 100644 --- a/Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rprj +++ b/Ride/Bleeper-72/LoRaMac/classB/LoRaMac.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/Bleeper/LoRaMac/class1/LoRaMac.rapp b/Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rapp similarity index 69% rename from Ride/Bleeper/LoRaMac/class1/LoRaMac.rapp rename to Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rapp index b14751cf1..be2e7f510 100644 --- a/Ride/Bleeper/LoRaMac/class1/LoRaMac.rapp +++ b/Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rapp @@ -1,12 +1,19 @@ - - + + - + + + + + + + + - - - + + + @@ -22,174 +29,168 @@ - + - - - - - - - - + - + - + - + - + - + - + - - - - - - + + + + + + - - + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
-
- +
- - + +
- +
- +
- - + +
- +
- +
- - + + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
diff --git a/Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rprj b/Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rprj new file mode 100644 index 000000000..cdd07e7a8 --- /dev/null +++ b/Ride/Bleeper-72/LoRaMac/tstIndoor/tstIndoor.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper/ping-pong-fsk/Ping-Pong.rapp b/Ride/Bleeper-72/ping-pong/Ping-Pong.rapp similarity index 73% rename from Ride/Bleeper/ping-pong-fsk/Ping-Pong.rapp rename to Ride/Bleeper-72/ping-pong/Ping-Pong.rapp index cfed72444..75ed17b30 100644 --- a/Ride/Bleeper/ping-pong-fsk/Ping-Pong.rapp +++ b/Ride/Bleeper-72/ping-pong/Ping-Pong.rapp @@ -1,12 +1,19 @@ - - + + - + + + + + + + + - - - + + + @@ -22,175 +29,239 @@ - + - - - - - - - - + - + - + - - - - - - + - + - + - - - - - - + - - + + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- - + +
- +
- +
- - + +
- +
- +
- - + + + +
- +
- +
- +
- +
- - + +
- +
+ +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ +
- +
- +
- +
- +
+
+
\ No newline at end of file diff --git a/Ride/Bleeper/ping-pong-lora/Ping-Pong.rprj b/Ride/Bleeper-72/ping-pong/Ping-Pong.rprj similarity index 89% rename from Ride/Bleeper/ping-pong-lora/Ping-Pong.rprj rename to Ride/Bleeper-72/ping-pong/Ping-Pong.rprj index 2a68a7cdb..d8b8aede8 100644 --- a/Ride/Bleeper/ping-pong-lora/Ping-Pong.rprj +++ b/Ride/Bleeper-72/ping-pong/Ping-Pong.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/Bleeper/ping-pong-lora/Ping-Pong.rapp b/Ride/Bleeper-72/rx-sensi/rx-sensi.rapp similarity index 73% rename from Ride/Bleeper/ping-pong-lora/Ping-Pong.rapp rename to Ride/Bleeper-72/rx-sensi/rx-sensi.rapp index 3e1368828..91ea260e2 100644 --- a/Ride/Bleeper/ping-pong-lora/Ping-Pong.rapp +++ b/Ride/Bleeper-72/rx-sensi/rx-sensi.rapp @@ -1,12 +1,19 @@ - - + + - + + + + + + + + - - - + + + @@ -22,175 +29,239 @@ - + - - - - - - - - + - + - + - - - - - - + - + - + - - - - - - + - - + + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- - + +
- +
- +
- - + +
- +
- +
- - + + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
+ +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+
+
\ No newline at end of file diff --git a/Ride/Bleeper-72/rx-sensi/rx-sensi.rprj b/Ride/Bleeper-72/rx-sensi/rx-sensi.rprj new file mode 100644 index 000000000..c78744811 --- /dev/null +++ b/Ride/Bleeper-72/rx-sensi/rx-sensi.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-72/tx-cw/tx-cw.rapp b/Ride/Bleeper-72/tx-cw/tx-cw.rapp new file mode 100644 index 000000000..537a6d137 --- /dev/null +++ b/Ride/Bleeper-72/tx-cw/tx-cw.rapp @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-72/tx-cw/tx-cw.rprj b/Ride/Bleeper-72/tx-cw/tx-cw.rprj new file mode 100644 index 000000000..3163e8e72 --- /dev/null +++ b/Ride/Bleeper-72/tx-cw/tx-cw.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rapp b/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rapp new file mode 100644 index 000000000..f880519d9 --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rapp @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rprj b/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rprj new file mode 100644 index 000000000..8af5762d5 --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/classA/LoRaMac.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rapp b/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rapp new file mode 100644 index 000000000..941ca03f6 --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rapp @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rprj b/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rprj new file mode 100644 index 000000000..53f614df6 --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/classB/LoRaMac.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rapp b/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rapp new file mode 100644 index 000000000..70d201664 --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rapp @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rprj b/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rprj new file mode 100644 index 000000000..b038c7e5e --- /dev/null +++ b/Ride/Bleeper-76/LoRaMac/tstIndoor/tstIndoor.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-76/ping-pong/Ping-Pong.rapp b/Ride/Bleeper-76/ping-pong/Ping-Pong.rapp new file mode 100644 index 000000000..dac9a1190 --- /dev/null +++ b/Ride/Bleeper-76/ping-pong/Ping-Pong.rapp @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rprj b/Ride/Bleeper-76/ping-pong/Ping-Pong.rprj similarity index 88% rename from Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rprj rename to Ride/Bleeper-76/ping-pong/Ping-Pong.rprj index a2e68fee9..be551979c 100644 --- a/Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rprj +++ b/Ride/Bleeper-76/ping-pong/Ping-Pong.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/Bleeper-76/rx-sensi/rx-sensi.rapp b/Ride/Bleeper-76/rx-sensi/rx-sensi.rapp new file mode 100644 index 000000000..11c8425cd --- /dev/null +++ b/Ride/Bleeper-76/rx-sensi/rx-sensi.rapp @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-76/rx-sensi/rx-sensi.rprj b/Ride/Bleeper-76/rx-sensi/rx-sensi.rprj new file mode 100644 index 000000000..ade0dc466 --- /dev/null +++ b/Ride/Bleeper-76/rx-sensi/rx-sensi.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper-76/tx-cw/tx-cw.rapp b/Ride/Bleeper-76/tx-cw/tx-cw.rapp new file mode 100644 index 000000000..42865817d --- /dev/null +++ b/Ride/Bleeper-76/tx-cw/tx-cw.rapp @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper-76/tx-cw/tx-cw.rprj b/Ride/Bleeper-76/tx-cw/tx-cw.rprj new file mode 100644 index 000000000..9d0b4b295 --- /dev/null +++ b/Ride/Bleeper-76/tx-cw/tx-cw.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/Bleeper/LoRaMac/class1/LoRaMac.rprj b/Ride/Bleeper/LoRaMac/class1/LoRaMac.rprj deleted file mode 100644 index 76ca979f9..000000000 --- a/Ride/Bleeper/LoRaMac/class1/LoRaMac.rprj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rapp b/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rapp deleted file mode 100644 index 73f9883c5..000000000 --- a/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rapp +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rprj b/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rprj deleted file mode 100644 index 33b18e8ca..000000000 --- a/Ride/LoRaMote-eu868/LoRaMac/class1/LoRaMac.rprj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rapp b/Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rapp deleted file mode 100644 index c9277ec78..000000000 --- a/Ride/LoRaMote-eu868/LoRaMac/classA/LoRaMac.rapp +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rapp b/Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rapp deleted file mode 100644 index 771da1061..000000000 --- a/Ride/LoRaMote-eu868/LoRaMac/classB/LoRaMac.rapp +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rapp b/Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rapp deleted file mode 100644 index a96b8e974..000000000 --- a/Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rapp +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rapp b/Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rapp deleted file mode 100644 index d800e0afe..000000000 --- a/Ride/LoRaMote-eu868/ping-pong-lora/Ping-Pong.rapp +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/LoRaMote/Bootloader/Bootloader.rapp b/Ride/LoRaMote/Bootloader/Bootloader.rapp new file mode 100644 index 000000000..e8cefa1dd --- /dev/null +++ b/Ride/LoRaMote/Bootloader/Bootloader.rapp @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+
+
+
\ No newline at end of file diff --git a/Ride/LoRaMote/Bootloader/Bootloader.rprj b/Ride/LoRaMote/Bootloader/Bootloader.rprj new file mode 100644 index 000000000..1c706d165 --- /dev/null +++ b/Ride/LoRaMote/Bootloader/Bootloader.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/LoRaMote/LoRaMac/classA/LoRaMac.rapp b/Ride/LoRaMote/LoRaMac/classA/LoRaMac.rapp new file mode 100644 index 000000000..ba9604151 --- /dev/null +++ b/Ride/LoRaMote/LoRaMac/classA/LoRaMac.rapp @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper/LoRaMac/classA/LoRaMac.rprj b/Ride/LoRaMote/LoRaMac/classA/LoRaMac.rprj similarity index 90% rename from Ride/Bleeper/LoRaMac/classA/LoRaMac.rprj rename to Ride/LoRaMote/LoRaMac/classA/LoRaMac.rprj index 06a37c4e2..ed1e9a8bf 100644 --- a/Ride/Bleeper/LoRaMac/classA/LoRaMac.rprj +++ b/Ride/LoRaMote/LoRaMac/classA/LoRaMac.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/LoRaMote/LoRaMac/classB/LoRaMac.rapp b/Ride/LoRaMote/LoRaMac/classB/LoRaMac.rapp new file mode 100644 index 000000000..4358ff3f0 --- /dev/null +++ b/Ride/LoRaMote/LoRaMac/classB/LoRaMac.rapp @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper/LoRaMac/classB/LoRaMac.rprj b/Ride/LoRaMote/LoRaMac/classB/LoRaMac.rprj similarity index 90% rename from Ride/Bleeper/LoRaMac/classB/LoRaMac.rprj rename to Ride/LoRaMote/LoRaMac/classB/LoRaMac.rprj index 040ec94fe..4cf14999e 100644 --- a/Ride/Bleeper/LoRaMac/classB/LoRaMac.rprj +++ b/Ride/LoRaMote/LoRaMac/classB/LoRaMac.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/LoRaMote/ping-pong/Ping-Pong.rapp b/Ride/LoRaMote/ping-pong/Ping-Pong.rapp new file mode 100644 index 000000000..7ccd057d5 --- /dev/null +++ b/Ride/LoRaMote/ping-pong/Ping-Pong.rapp @@ -0,0 +1,741 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/Bleeper/ping-pong-fsk/Ping-Pong.rprj b/Ride/LoRaMote/ping-pong/Ping-Pong.rprj similarity index 88% rename from Ride/Bleeper/ping-pong-fsk/Ping-Pong.rprj rename to Ride/LoRaMote/ping-pong/Ping-Pong.rprj index 2a68a7cdb..be551979c 100644 --- a/Ride/Bleeper/ping-pong-fsk/Ping-Pong.rprj +++ b/Ride/LoRaMote/ping-pong/Ping-Pong.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/LoRaMote/rx-sensi/rx-sensi.rapp b/Ride/LoRaMote/rx-sensi/rx-sensi.rapp new file mode 100644 index 000000000..9670c1a12 --- /dev/null +++ b/Ride/LoRaMote/rx-sensi/rx-sensi.rapp @@ -0,0 +1,741 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/LoRaMote/rx-sensi/rx-sensi.rprj b/Ride/LoRaMote/rx-sensi/rx-sensi.rprj new file mode 100644 index 000000000..ade0dc466 --- /dev/null +++ b/Ride/LoRaMote/rx-sensi/rx-sensi.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/LoRaMote/tx-cw/tx-cw.rapp b/Ride/LoRaMote/tx-cw/tx-cw.rapp new file mode 100644 index 000000000..ae5f3ec06 --- /dev/null +++ b/Ride/LoRaMote/tx-cw/tx-cw.rapp @@ -0,0 +1,433 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/LoRaMote/tx-cw/tx-cw.rprj b/Ride/LoRaMote/tx-cw/tx-cw.rprj new file mode 100644 index 000000000..9d0b4b295 --- /dev/null +++ b/Ride/LoRaMote/tx-cw/tx-cw.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rapp b/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rapp deleted file mode 100644 index b0398423c..000000000 --- a/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rapp +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - -
- -
- -
- - -
-
- - -
- -
- -
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
- - -
-
- - - -
- -
- -
- - -
- -
- -
- - - -
-
- - -
-
- - -
- -
- -
- - -
- -
- -
- - -
-
- - -
-
- - -
-
- - - - - -
- -
- -
- - -
- -
-
-
-
\ No newline at end of file diff --git a/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rprj b/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rprj deleted file mode 100644 index 9abdf24fd..000000000 --- a/Ride/SK-iM880A/LoRaMac/class1/LoRaMac.rprj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Ride/SK-iM880A/LoRaMac/classA/LoRaMac.rapp b/Ride/SK-iM880A/LoRaMac/classA/LoRaMac.rapp index 41ec892f2..ca9140f55 100644 --- a/Ride/SK-iM880A/LoRaMac/classA/LoRaMac.rapp +++ b/Ride/SK-iM880A/LoRaMac/classA/LoRaMac.rapp @@ -3,10 +3,19 @@ + + + + + + + + + - + @@ -23,44 +32,30 @@ - + - - - - - - - - - - + - + - + - + - + - + - - - - - @@ -68,7 +63,12 @@ - + + + + + + @@ -84,114 +84,116 @@
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- - + +
- +
-
- +
- +
- +
- +
- +
- +
- - + + + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
+
\ No newline at end of file diff --git a/Ride/SK-iM880A/LoRaMac/classB/LoRaMac.rapp b/Ride/SK-iM880A/LoRaMac/classB/LoRaMac.rapp index 6bcfbe36a..c65e2fea4 100644 --- a/Ride/SK-iM880A/LoRaMac/classB/LoRaMac.rapp +++ b/Ride/SK-iM880A/LoRaMac/classB/LoRaMac.rapp @@ -3,10 +3,19 @@ + + + + + + + + + - + @@ -23,44 +32,30 @@ - + - - - - - - - - - - + - + - + - + - + - + - - - - - @@ -68,7 +63,12 @@ - + + + + + + @@ -84,114 +84,116 @@
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- - + +
- +
-
- +
- +
- +
- +
- +
- +
- - + + + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
+
\ No newline at end of file diff --git a/Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rprj b/Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rprj deleted file mode 100644 index 0b9b92109..000000000 --- a/Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rprj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rprj b/Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rprj deleted file mode 100644 index 0b9b92109..000000000 --- a/Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rprj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rapp b/Ride/SK-iM880A/ping-pong/Ping-Pong.rapp similarity index 77% rename from Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rapp rename to Ride/SK-iM880A/ping-pong/Ping-Pong.rapp index 6226e32b8..b52a5d832 100644 --- a/Ride/SK-iM880A/ping-pong-fsk/Ping-Pong.rapp +++ b/Ride/SK-iM880A/ping-pong/Ping-Pong.rapp @@ -1,12 +1,21 @@ - - + + + + + + + + + + + - + @@ -23,44 +32,25 @@ - + - - - - - - - - - - + - + - + - - - - - - + - + - - - - - @@ -68,130 +58,211 @@ - + - - + + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ - + +
+
+ + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
+
+
\ No newline at end of file diff --git a/Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rprj b/Ride/SK-iM880A/ping-pong/Ping-Pong.rprj similarity index 89% rename from Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rprj rename to Ride/SK-iM880A/ping-pong/Ping-Pong.rprj index a2e68fee9..d8b8aede8 100644 --- a/Ride/LoRaMote-eu868/ping-pong-fsk/Ping-Pong.rprj +++ b/Ride/SK-iM880A/ping-pong/Ping-Pong.rprj @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rapp b/Ride/SK-iM880A/rx-sensi/rx-sensi.rapp similarity index 77% rename from Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rapp rename to Ride/SK-iM880A/rx-sensi/rx-sensi.rapp index 7fe8482c3..d030a819d 100644 --- a/Ride/SK-iM880A/ping-pong-lora/Ping-Pong.rapp +++ b/Ride/SK-iM880A/rx-sensi/rx-sensi.rapp @@ -1,12 +1,21 @@ - - + + + + + + + + + + + - + @@ -23,44 +32,25 @@ - + - - - - - - - - - - + - + - - - - - - - + +
- + - - - - - @@ -68,130 +58,211 @@ - + - - + + +
- +
- - + +
- +
- - + +
- +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
- +
- +
- +
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ - + +
+
+ + + +
- +
- +
- +
- +
- - + +
- +
- +
- +
- +
- +
- +
+
+
\ No newline at end of file diff --git a/Ride/SK-iM880A/rx-sensi/rx-sensi.rprj b/Ride/SK-iM880A/rx-sensi/rx-sensi.rprj new file mode 100644 index 000000000..c78744811 --- /dev/null +++ b/Ride/SK-iM880A/rx-sensi/rx-sensi.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SK-iM880A/tx-cw/tx-cw.rapp b/Ride/SK-iM880A/tx-cw/tx-cw.rapp new file mode 100644 index 000000000..558633549 --- /dev/null +++ b/Ride/SK-iM880A/tx-cw/tx-cw.rapp @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SK-iM880A/tx-cw/tx-cw.rprj b/Ride/SK-iM880A/tx-cw/tx-cw.rprj new file mode 100644 index 000000000..3163e8e72 --- /dev/null +++ b/Ride/SK-iM880A/tx-cw/tx-cw.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/Bootloader/Bootloader.rapp b/Ride/SensorNode/Bootloader/Bootloader.rapp new file mode 100644 index 000000000..2456de00a --- /dev/null +++ b/Ride/SensorNode/Bootloader/Bootloader.rapp @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+ +
+ +
+ + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+
+
+
\ No newline at end of file diff --git a/Ride/SensorNode/Bootloader/Bootloader.rprj b/Ride/SensorNode/Bootloader/Bootloader.rprj new file mode 100644 index 000000000..abbc8f812 --- /dev/null +++ b/Ride/SensorNode/Bootloader/Bootloader.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/LoRaMac/classA/LoRaMac.rapp b/Ride/SensorNode/LoRaMac/classA/LoRaMac.rapp new file mode 100644 index 000000000..309955061 --- /dev/null +++ b/Ride/SensorNode/LoRaMac/classA/LoRaMac.rapp @@ -0,0 +1,751 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SensorNode/LoRaMac/classA/LoRaMac.rprj b/Ride/SensorNode/LoRaMac/classA/LoRaMac.rprj new file mode 100644 index 000000000..67dcb2e97 --- /dev/null +++ b/Ride/SensorNode/LoRaMac/classA/LoRaMac.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/LoRaMac/classB/LoRaMac.rapp b/Ride/SensorNode/LoRaMac/classB/LoRaMac.rapp new file mode 100644 index 000000000..f395e93f1 --- /dev/null +++ b/Ride/SensorNode/LoRaMac/classB/LoRaMac.rapp @@ -0,0 +1,751 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SensorNode/LoRaMac/classB/LoRaMac.rprj b/Ride/SensorNode/LoRaMac/classB/LoRaMac.rprj new file mode 100644 index 000000000..a0df8c52e --- /dev/null +++ b/Ride/SensorNode/LoRaMac/classB/LoRaMac.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/ping-pong/Ping-Pong.rapp b/Ride/SensorNode/ping-pong/Ping-Pong.rapp new file mode 100644 index 000000000..c441842c0 --- /dev/null +++ b/Ride/SensorNode/ping-pong/Ping-Pong.rapp @@ -0,0 +1,1357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SensorNode/ping-pong/Ping-Pong.rprj b/Ride/SensorNode/ping-pong/Ping-Pong.rprj new file mode 100644 index 000000000..aa91488db --- /dev/null +++ b/Ride/SensorNode/ping-pong/Ping-Pong.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/rx-sensi/rx-sensi.rapp b/Ride/SensorNode/rx-sensi/rx-sensi.rapp new file mode 100644 index 000000000..37ac1038e --- /dev/null +++ b/Ride/SensorNode/rx-sensi/rx-sensi.rapp @@ -0,0 +1,1357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SensorNode/rx-sensi/rx-sensi.rprj b/Ride/SensorNode/rx-sensi/rx-sensi.rprj new file mode 100644 index 000000000..6220fd37a --- /dev/null +++ b/Ride/SensorNode/rx-sensi/rx-sensi.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ride/SensorNode/tx-cw/tx-cw.rapp b/Ride/SensorNode/tx-cw/tx-cw.rapp new file mode 100644 index 000000000..0f2d5d38e --- /dev/null +++ b/Ride/SensorNode/tx-cw/tx-cw.rapp @@ -0,0 +1,741 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+
+ + + +
+ +
+ +
+ + +
+ +
+ +
+ + + +
+
+ + + + +
+
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + + + + +
+ +
+ +
+ + +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/Ride/SensorNode/tx-cw/tx-cw.rprj b/Ride/SensorNode/tx-cw/tx-cw.rprj new file mode 100644 index 000000000..0d2b2b101 --- /dev/null +++ b/Ride/SensorNode/tx-cw/tx-cw.rprj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/readme.md b/readme.md index 186f3ec36..bd729f25a 100644 --- a/readme.md +++ b/readme.md @@ -13,9 +13,7 @@ SX1272/76 radio drivers plus Ping-Pong firmware and LoRa MAC node firmware imple The aim of this project is to show an example of the LoRaMac endpoint firmware implementation. -**REMARK 1:** Currently only devices of Class A are supported. - -**REMARK 2:** The SX1276 device is not yet supported. +**REMARK:** This is a Class A endpoint. 2. System schematic and definitions ------------------------------------ @@ -27,8 +25,6 @@ can be found in the Doc directory. The mbed (https://mbed.org/) project was used at the beginning as source of inspiration. -4. Dependencies ----------------- This program uses the AES algorithm implementation (http://www.gladman.me.uk/) by Brian Gladman. @@ -36,10 +32,12 @@ This program uses the CMAC algorithm implementation (http://www.cse.chalmers.se/research/group/dcs/masters/contikisec/) by Lander Casado, Philippas Tsigas. +4. Dependencies +---------------- This program depends on specific hardware platforms. Currently the supported platforms are: - - Bleeper + - Bleeper-72 MCU : STM32L151RD - 384K FLASH, 48K RAM, Timers, SPI, I2C, USART, USB 2.0 full-speed device/host/OTG controller, @@ -54,7 +52,22 @@ platforms are: EXTENSION HEADER : Yes, 12 pins REMARK : None. - - LoRaMote-eu868 + - Bleeper-76 + MCU : STM32L151RD - 384K FLASH, 48K RAM, Timers, SPI, I2C, + USART, + USB 2.0 full-speed device/host/OTG controller, + DAC, ADC, DMA + RADIO : SX1276 + ANTENNA : Connector for external antennas (LF+HF) + BUTTONS : 1 Reset, 16 position encoder + LEDS : 3 + SENSORS : Temperature + GPS : Possible through pin header GPS module connection + SDCARD : No + EXTENSION HEADER : Yes, 12 pins + REMARK : None. + + - LoRaMote MCU : STM32L151CB - 128K FLASH, 10K RAM, Timers, SPI, I2C, USART, USB 2.0 full-speed device/host/OTG controller, @@ -70,6 +83,22 @@ platforms are: EXTENSION HEADER : Yes, 20 pins REMARK : The MCU and Radio are on an IMST iM880A module + - SensorNode + MCU : STM32L151C8 - 64K FLASH, 10K RAM, Timers, SPI, I2C, + USART, + USB 2.0 full-speed device/host/OTG controller, + DAC, ADC, DMA + RADIO : SX1276 + ANTENNA : Printed circuit antenna + BUTTONS : Power ON/OFF, General purpose button + LEDS : 3 + SENSORS : Proximity, Magnetic, 3 axis Accelerometer, Pressure, + Temperature + GPS : Yes, SIM39EA module + SDCARD : No + EXTENSION No + REMARK : The MCU and Radio are on an NYMTEK Cherry-LCC module + - SK-iM880A ( IMST starter kit ) MCU : STM32L151CB - 128K FLASH, 10K RAM, Timers, SPI, I2C, USART, @@ -89,8 +118,98 @@ platforms are: --------- Projects for Ride7 and Keil Integrated Development Environments are available. +One project is available per application and for each hardware platform in each +development environment. Different targets/configurations have been created in +the different projects in order to select different options such as the usage or +not of a bootloader and the radio frequency band to be used. + 6. Changelog ------------- +2014-06-06, v2.3.RC1 +* General + 1. Added the support for SX1276 radio. + 2. Radio continuous reception mode correction. + 3. Radio driver RxDone callback function API has changed ( size parameter is no more a pointer). + Previous function prototype: + + void ( *RxDone )( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); + + New function prototype: + + void ( *RxDone )( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + + 4. Added Bleeper-76 and SensorNode platforms support. + 5. Added to the radio drivers a function that generates a random value from + RSSI readings. + 6. Added a project to transmit a continuous wave and a project to measure the + the radio sensitivity. + 7. Added a bootloader project for the LoRaMote and SensorNode platforms. + 8. The LoRaMac application for Bleeper platforms now sends the Selector and LED status plus the sensors values. + * The application payload for the Bleeper platforms is as follows: + + LoRaMac port 1: + + { 0xX0/0xX1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } + ---------- ---------- ---------- ---------- ---- + | | | | | + SELECTOR/LED PRESSURE TEMPERATURE ALTITUDE BATTERY + MSB nibble = SELECTOR (barometric) + LSB bit = LED + 9. Redefined rand() and srand() standard C functions. These functions are + redefined in order to get the same behaviour across different compiler + tool chains implementations. + 10. GPS driver improvements. Made independent of the board platform. + 11. Simplified the RTC management. + 12. Added a function to the timer driver that checks if a timer is already in + the list or not. + 13. Added the UART Overrun bit exception handling to the UART driver. + 14. Removed dependency of spi-board files to the "__builtin_ffs" function. + This function is only available on GNU compiler tool suite. Removed --gnu + compiler option from Keil projects. Added own __ffs function + implementation to utilities.h file. + 15. Removed obsolete class1 devices support. + 16. Known bugs correction. + +* LoRaMac + 1. MAC commands implemented + * LinkCheckReq **YES** + * LinkCheckAns **YES** + * LinkADRReq **YES** + * LinkADRAns **YES** + * DutyCycleReq **YES** (LoRaMac specification R2.1.3) + * DutyCycleAns **YES** (LoRaMac specification R2.1.3) + * Rx2SetupReq **YES** (LoRaMac specification R2.1.3) + * Rx2SetupAns **YES** (LoRaMac specification R2.1.3) + * DevStatusReq **YES** + * DevStatusAns **YES** + * JoinReq **YES** + * JoinAccept **YES** (LoRaMac specification R2.1.3) + * NewChannelReq **YES** (LoRaMac specification R2.1.3) + * NewChannelAns **YES** (LoRaMac specification R2.1.3) + 2. Features implemented + * Possibility to shut-down the device **YES** + + Possible by issuing DutyCycleReq MAC command. + * Duty cycle management enforcement **NO** + * Acknowledgements retries **WORK IN PROGRESS** + + Not fully debugged. Disabled by default. + * Unconfirmed messages retries **WORK IN PROGRESS** (LoRaMac specification R2.1.3) + 3. Implemented LoRaMac specification R2.1.3 changes. + 4. Due to new specification the LoRaMacInitNwkIds LoRaMac API function had + to be modified. + + Previous function prototype: + + void LoRaMacInitNwkIds( uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ); + + New function prototype: + + void LoRaMacInitNwkIds( uint32_t netID, uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ); + 5. Changed the LoRaMac channels management. + 6. LoRaMac channels definition has been moved to LoRaMac-board.h file + located in each specific board directory. + 2014-04-07, v2.2 * General 1. Added IMST SK-iM880A starter kit board support to the project. diff --git a/src/apps/BootLoader/LoRaMote/main.c b/src/apps/BootLoader/LoRaMote/main.c new file mode 100644 index 000000000..c1cd2678f --- /dev/null +++ b/src/apps/BootLoader/LoRaMote/main.c @@ -0,0 +1,109 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRaMote board USB DFU bootloader + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "dfu_mal.h" + +#include "usb-dfu-board.h" + +typedef void ( *pFunction )( void ); + +uint8_t DeviceState; +uint8_t DeviceStatus[6]; +pFunction Jump_To_Application; +uint32_t JumpAddress; + +/* + * Board peripherals objects + */ +Gpio_t Led1; +Gpio_t Led2; +Gpio_t Led3; + +I2c_t I2c; + +static void DelayLoop( __IO uint32_t nCount ) +{ + __IO uint32_t index = 0; + for( index = ( 5000 * nCount ); index != 0; index-- ) + { + } +} + +int main(void) +{ + uint8_t regValue = 0; + uint8_t status = 0; + uint16_t offset = 0; + + I2cInit( &I2c, I2C_SCL, I2C_SDA ); + + GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + // Init SAR + SX9500Init( ); + + SX9500Write( SX9500_REG_IRQMSK, 0x10 ); + SX9500Write( SX9500_REG_IRQSRC, 0x10 ); + + do + { + SX9500Read( SX9500_REG_IRQSRC, &status ); + }while( ( status & 0x10 ) == 0x00 ); // While compensation for CS0 is pending + + // Read 1st sensor offset + SX9500Read( SX9500_REG_OFFSETMSB, ( uint8_t* )®Value ); + offset = regValue << 8; + SX9500Read( SX9500_REG_OFFSETLSB, ( uint8_t* )®Value ); + offset |= regValue; + + if( offset < 2000 ) + { /* Test if user code is programmed starting from address 0x8003000 */ + if( ( ( *( __IO uint32_t* )ApplicationAddress ) & 0x2FFE0000 ) == 0x20000000 ) + { /* Jump to user application */ + + JumpAddress = *( __IO uint32_t* )( ApplicationAddress + 4 ); + Jump_To_Application = ( pFunction ) JumpAddress; + /* Initialize user application's Stack Pointer */ + __set_MSP( *( __IO uint32_t* ) ApplicationAddress ); + Jump_To_Application( ); + } + } /* Otherwise enters DFU mode to allow user to program his application */ + + /* Enter DFU mode */ + DeviceState = STATE_dfuERROR; + DeviceStatus[0] = STATUS_ERRFIRMWARE; + DeviceStatus[4] = DeviceState; + + UsbMcuInit( ); + + /* Main loop */ + while (1) + { + GpioWrite( &Led1, 0 ); + GpioWrite( &Led2, 0 ); + GpioWrite( &Led3, 0 ); + DelayLoop( 500 ); + GpioWrite( &Led1, 1 ); + GpioWrite( &Led2, 1 ); + GpioWrite( &Led3, 1 ); + DelayLoop( 500 ); + } +} diff --git a/src/apps/BootLoader/SensorNode/main.c b/src/apps/BootLoader/SensorNode/main.c new file mode 100644 index 000000000..fbe66096a --- /dev/null +++ b/src/apps/BootLoader/SensorNode/main.c @@ -0,0 +1,102 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: SensorNode board USB DFU bootloader + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "dfu_mal.h" + +#include "usb-dfu-board.h" + +typedef void ( *pFunction )( void ); + +uint8_t DeviceState; +uint8_t DeviceStatus[6]; +pFunction Jump_To_Application; +uint32_t JumpAddress; + +/* + * Board peripherals objects + */ +Gpio_t RadioPushButton; + +Gpio_t Led1; +Gpio_t Led2; +Gpio_t Led3; +Gpio_t Led4; + +Gpio_t UsbDetect; +Gpio_t DcDcEnable; + +I2c_t I2c; + +static void DelayLoop( __IO uint32_t nCount ) +{ + __IO uint32_t index = 0; + for( index = ( 5000 * nCount ); index != 0; index-- ) + { + } +} + +int main(void) +{ + I2cInit( &I2c, I2C_SCL, I2C_SDA ); + + GpioInit( &UsbDetect, USB_ON, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DcDcEnable, DC_DC_EN, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + GpioInit( &RadioPushButton, RADIO_PUSH_BUTTON, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led4, LED_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + if( GpioRead( &RadioPushButton ) == 0 ) + { /* Test if user code is programmed starting from address 0x8003000 */ + if( ( ( *( __IO uint32_t* )ApplicationAddress ) & 0x2FFE0000 ) == 0x20000000 ) + { /* Jump to user application */ + + JumpAddress = *( __IO uint32_t* )( ApplicationAddress + 4 ); + Jump_To_Application = ( pFunction ) JumpAddress; + /* Initialize user application's Stack Pointer */ + __set_MSP( *( __IO uint32_t* ) ApplicationAddress ); + Jump_To_Application( ); + } + } /* Otherwise enters DFU mode to allow user to program his application */ + + /* Enter DFU mode */ + DeviceState = STATE_dfuERROR; + DeviceStatus[0] = STATUS_ERRFIRMWARE; + DeviceStatus[4] = DeviceState; + + UsbMcuInit( ); + + /* Main loop */ + while (1) + { + GpioWrite( &Led1, 0 ); + GpioWrite( &Led2, 0 ); + GpioWrite( &Led3, 0 ); + GpioWrite( &Led4, 0 ); + DelayLoop( 500 ); + GpioWrite( &Led1, 1 ); + GpioWrite( &Led2, 1 ); + GpioWrite( &Led3, 1 ); + GpioWrite( &Led4, 1 ); + DelayLoop( 500 ); + } +} diff --git a/src/apps/LoRaMac/class1/SK-iM880A/main.c b/src/apps/LoRaMac/class1/SK-iM880A/main.c deleted file mode 100644 index 33d6bcf5d..000000000 --- a/src/apps/LoRaMac/class1/SK-iM880A/main.c +++ /dev/null @@ -1,285 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - (C)2013 Semtech - -Description: LoRaMac class1 device implementation - -License: Revised BSD License, see LICENSE.TXT file include in the project - -Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian -*/ -#include -#include -#include "board.h" -#include "radio.h" - -#include "LoRaMac.h" - -/*! - * When set to 1 the application uses the Over-the-Air activation procedure - * When set to 0 the application uses the Personalization activation procedure - */ -#define OVER_THE_AIR_ACTIVATION 0 - -/*! - * Mote device IEEE EUI - */ -static uint8_t DevEui[] = -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -#if( OVER_THE_AIR_ACTIVATION != 0 ) - -#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 10000000 // 10 [s] value in us - -/*! - * Application IEEE EUI - */ -static uint8_t AppEui[] = -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -/*! - * AES encryption/decryption cipher application key - */ -static uint8_t AppKey[] = -{ - 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, - 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C -}; - -#else - -/*! - * AES encryption/decryption cipher network session key - */ -static uint8_t NwkSKey[] = -{ - 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, - 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C -}; - -/*! - * AES encryption/decryption cipher application session key - */ -static uint8_t AppSKey[] = -{ - 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, - 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C -}; - -/*! - * Device address - */ -static uint32_t DevAddr; - -#endif - -/*! - * Indicates if the MAC layer has already joined a network. - */ -static bool IsNetworkJoined = false; - -/*! - * Defines the application data transmission duty cycle - */ -#define APP_TX_DUTYCYCLE 5000000 // 5 [s] value in us -#define APP_TX_DUTYCYCLE_RND 1000000 // 1 [s] value in us - -/*! - * User application data buffer size - */ -#define APP_DATA_SIZE 4 - -/*! - * User application data - */ -static uint8_t AppData[APP_DATA_SIZE]; - -/*! - * Defines the application data transmission duty cycle - */ -static uint32_t TxDutyCycleTime; - -static TimerEvent_t TxNextPacketTimer; - -#if( OVER_THE_AIR_ACTIVATION != 0 ) - -/*! - * Defines the join request timer - */ -static TimerEvent_t JoinReqTimer; - -#endif - -/*! - * Indicates if a new packet can be sent - */ -static bool TxNextPacket = true; -static bool TxDone = false; - -static LoRaMacEvent_t LoRaMacEvents; - -static TimerEvent_t Led4Timer; -volatile bool Led4TimerEvent = false; - -#if( OVER_THE_AIR_ACTIVATION != 0 ) - -/*! - * \brief Function executed on Led 4 Timeout event - */ -void OnJoinReqTimerEvent( void ) -{ - TxNextPacket = true; -} - -#endif - -/*! - * \brief Function executed on Led 4 Timeout event - */ -void OnTxNextPacketTimerEvent( void ) -{ - TxNextPacket = true; -} - -/*! - * \brief Function executed on Led 4 Timeout event - */ -void OnLed4TimerEvent( void ) -{ - Led4TimerEvent = true; -} - -/*! - * \brief Function to be executed on MAC layer event - */ -void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) -{ - if( info->Status == LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ) - { - TxDone = true; - } - if( flags->Bits.JoinAccept == 1 ) - { -#if( OVER_THE_AIR_ACTIVATION != 0 ) - TimerStop( &JoinReqTimer ); -#endif - IsNetworkJoined = true; - } - - if( flags->Bits.Tx == 1 ) - { - TxDone = true; - } -} - -/** - * Main application entry point. - */ -int main( void ) -{ - uint8_t potiPercentage = 0; - uint16_t vdd = 0; - - BoardInitMcu( ); - BoardInitPeriph( ); - - // Initialize LoRaMac device unique ID - BoardGetUniqueId( DevEui ); - - LoRaMacEvents.MacEvent = OnMacEvent; - LoRaMacInit( &LoRaMacEvents ); - - IsNetworkJoined = false; - -#if( OVER_THE_AIR_ACTIVATION == 0 ) - // Random seed initialization - srand( RAND_SEED ); - // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); - - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - - IsNetworkJoined = true; -#else - // Sends a JoinReq Command every 5 seconds until the network is joined - TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); - TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); -#endif - - TxNextPacket = true; - TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); - - TimerInit( &Led4Timer, OnLed4TimerEvent ); - TimerSetValue( &Led4Timer, 25000 ); - - while( 1 ) - { - while( IsNetworkJoined == false ) - { -#if( OVER_THE_AIR_ACTIVATION != 0 ) - if( TxNextPacket == true ) - { - TxNextPacket = false; - - LoRaMacJoinReq( DevEui, AppEui, AppKey ); - - // Relaunch timer for next trial - TimerStart( &JoinReqTimer ); - } - TimerLowPowerHandler( ); -#endif - } - if( Led4TimerEvent == true ) - { - Led4TimerEvent = false; - - // Switch LED 4 OFF - GpioWrite( &Led4, 0 ); - } - - if( TxDone == true ) - { - TxDone = false; - - // Schedule next packet transmission - TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND ); - TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime ); - TimerStart( &TxNextPacketTimer ); - } - - if( TxNextPacket == true ) - { - TxNextPacket = false; - - // Read the current potentiometer setting in percent - potiPercentage = BoardMeasurePotiLevel( ); - - // Read the current voltage level - vdd = BoardMeasureVdd( ); - - // Switch LED 4 ON - GpioWrite( &Led4, 1 ); - TimerStart( &Led4Timer ); - - AppData[0] = 0x00; - AppData[1] = potiPercentage; - AppData[2] = ( vdd >> 8 ) & 0xFF; - AppData[3] = vdd & 0xFF; - - // Send the created frame - LoRaMacSendFrame( 3, AppData, APP_DATA_SIZE ); - } - - TimerLowPowerHandler( ); - } -} - diff --git a/src/apps/LoRaMac/classA/Bleeper/main.c b/src/apps/LoRaMac/classA/Bleeper-72/main.c similarity index 95% rename from src/apps/LoRaMac/classA/Bleeper/main.c rename to src/apps/LoRaMac/classA/Bleeper-72/main.c index f40f51380..321dd1d50 100644 --- a/src/apps/LoRaMac/classA/Bleeper/main.c +++ b/src/apps/LoRaMac/classA/Bleeper-72/main.c @@ -233,16 +233,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -327,16 +327,16 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) // Switch LED 1 ON GpioWrite( &Led1, 0 ); TimerStart( &Led1Timer ); - AppData[0] = AppLedStateOn; + AppData[0] = ( SelectorGetValue( ) << 4 ) | AppLedStateOn; AppData[1] = ( pressure >> 8 ) & 0xFF; AppData[2] = pressure & 0xFF; AppData[3] = ( temperature >> 8 ) & 0xFF; diff --git a/src/apps/LoRaMac/class1/Bleeper/main.c b/src/apps/LoRaMac/classA/Bleeper-76/main.c similarity index 76% rename from src/apps/LoRaMac/class1/Bleeper/main.c rename to src/apps/LoRaMac/classA/Bleeper-76/main.c index 407404587..321dd1d50 100644 --- a/src/apps/LoRaMac/class1/Bleeper/main.c +++ b/src/apps/LoRaMac/classA/Bleeper-76/main.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: LoRaMac class1 device implementation +Description: LoRaMac classA device implementation License: Revised BSD License, see LICENSE.TXT file include in the project @@ -123,12 +123,19 @@ static TimerEvent_t JoinReqTimer; */ static bool TxNextPacket = true; static bool TxDone = false; +static bool RxDone = false; +static bool TxAckReceived = false; + +static bool AppLedStateOn = false; static LoRaMacEvent_t LoRaMacEvents; static TimerEvent_t Led1Timer; volatile bool Led1TimerEvent = false; +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + #if( OVER_THE_AIR_ACTIVATION != 0 ) /*! @@ -157,6 +164,14 @@ void OnLed1TimerEvent( void ) Led1TimerEvent = true; } +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + /*! * \brief Function to be executed on MAC layer event */ @@ -176,8 +191,21 @@ void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) if( flags->Bits.Tx == 1 ) { + if( info->TxAckReceived == true ) + { + TxAckReceived = true; + } TxDone = true; } + + if( flags->Bits.Rx == 1 ) + { + if( ( ( info->RxPort == 1 ) || ( info->RxPort == 2 ) ) && ( info->RxBufferSize > 0 ) ) + { + AppLedStateOn = info->RxBuffer[0]; + } + RxDone = true; + } } /** @@ -205,16 +233,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -223,6 +251,11 @@ int main( void ) TimerInit( &Led1Timer, OnLed1TimerEvent ); TimerSetValue( &Led1Timer, 25000 ); + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 25000 ); + + LoRaMacSetAdrOn( true ); + while( 1 ) { while( IsNetworkJoined == false ) @@ -248,6 +281,38 @@ int main( void ) GpioWrite( &Led1, 1 ); } + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + } + + if( TxAckReceived == true ) + { + TxAckReceived = false; + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( RxDone == true ) + { + RxDone = false; + + if( AppLedStateOn == true ) + { + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + } + else + { + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + } + } + if( TxDone == true ) { TxDone = false; @@ -262,16 +327,16 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) // Switch LED 1 ON GpioWrite( &Led1, 0 ); TimerStart( &Led1Timer ); - AppData[0] = 0x00; + AppData[0] = ( SelectorGetValue( ) << 4 ) | AppLedStateOn; AppData[1] = ( pressure >> 8 ) & 0xFF; AppData[2] = pressure & 0xFF; AppData[3] = ( temperature >> 8 ) & 0xFF; @@ -281,6 +346,7 @@ int main( void ) AppData[7] = batteryLevel; LoRaMacSendFrame( 1, AppData, APP_DATA_SIZE ); + //LoRaMacSendConfirmedFrame( 1, AppData, APP_DATA_SIZE, 1 ); } TimerLowPowerHandler( ); diff --git a/src/apps/LoRaMac/classA/LoRaMote/main.c b/src/apps/LoRaMac/classA/LoRaMote/main.c index 87e7b6323..492c674c2 100644 --- a/src/apps/LoRaMac/classA/LoRaMote/main.c +++ b/src/apps/LoRaMac/classA/LoRaMote/main.c @@ -235,16 +235,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -329,12 +329,12 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) - UP501GetLatestGpsPositionBinary( &latitude, &longitude ); - altitudeGps = UP501GetLatestGpsAltitude( ); // in m + GpsGetLatestGpsPositionBinary( &latitude, &longitude ); + altitudeGps = GpsGetLatestGpsAltitude( ); // in m // Switch LED 1 ON GpioWrite( &Led1, 0 ); diff --git a/src/apps/LoRaMac/classA/SK-iM880A/main.c b/src/apps/LoRaMac/classA/SK-iM880A/main.c index 83482c91d..20a50b14c 100644 --- a/src/apps/LoRaMac/classA/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classA/SK-iM880A/main.c @@ -231,16 +231,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; diff --git a/src/apps/LoRaMac/classA/SensorNode/main.c b/src/apps/LoRaMac/classA/SensorNode/main.c new file mode 100644 index 000000000..b5347d8d7 --- /dev/null +++ b/src/apps/LoRaMac/classA/SensorNode/main.c @@ -0,0 +1,396 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRaMac classA device implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "radio.h" + +#include "LoRaMac.h" + +/*! + * When set to 1 the application uses the Over-the-Air activation procedure + * When set to 0 the application uses the Personalization activation procedure + */ +#define OVER_THE_AIR_ACTIVATION 0 + +/*! + * Mote device IEEE EUI + */ +static uint8_t DevEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 10000000 // 10 [s] value in us + +/*! + * Application IEEE EUI + */ +static uint8_t AppEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/*! + * AES encryption/decryption cipher application key + */ +static uint8_t AppKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +#else + +/*! + * AES encryption/decryption cipher network session key + */ +static uint8_t NwkSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * AES encryption/decryption cipher application session key + */ +static uint8_t AppSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * Device address + */ +static uint32_t DevAddr; + +#endif + +/*! + * Indicates if the MAC layer has already joined a network. + */ +static bool IsNetworkJoined = false; + +/*! + * Defines the application data transmission duty cycle + */ +#define APP_TX_DUTYCYCLE 5000000 // 5 [s] value in us +#define APP_TX_DUTYCYCLE_RND 1000000 // 1 [s] value in us + +/*! + * User application data buffer size + */ +#define APP_DATA_SIZE 16 + +/*! + * User application data + */ +static uint8_t AppData[APP_DATA_SIZE]; + +/*! + * Defines the application data transmission duty cycle + */ +static uint32_t TxDutyCycleTime; + +static TimerEvent_t TxNextPacketTimer; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * Defines the join request timer + */ +static TimerEvent_t JoinReqTimer; + +#endif + +/*! + * Indicates if a new packet can be sent + */ +static bool TxNextPacket = true; +static bool TxDone = false; +static bool RxDone = false; +static bool TxAckReceived = false; + +static bool AppLedStateOn = false; + +static LoRaMacEvent_t LoRaMacEvents; + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led4Timer; +volatile bool Led4TimerEvent = false; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnJoinReqTimerEvent( void ) +{ + TxNextPacket = true; +} + +#endif + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnTxNextPacketTimerEvent( void ) +{ + TxNextPacket = true; +} + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 4 Timeout event + */ +void OnLed4TimerEvent( void ) +{ + Led4TimerEvent = true; +} + +/*! + * \brief Function to be executed on MAC layer event + */ +void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) +{ + if( info->Status == LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ) + { + TxDone = true; + } + if( flags->Bits.JoinAccept == 1 ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + TimerStop( &JoinReqTimer ); +#endif + IsNetworkJoined = true; + } + + if( flags->Bits.Tx == 1 ) + { + if( info->TxAckReceived == true ) + { + TxAckReceived = true; + } + TxDone = true; + } + + if( flags->Bits.Rx == 1 ) + { + if( ( ( info->RxPort == 1 ) || ( info->RxPort == 2 ) ) && ( info->RxBufferSize > 0 ) ) + { + AppLedStateOn = info->RxBuffer[0]; + } + RxDone = true; + } +} + +/** + * Main application entry point. + */ +int main( void ) +{ + uint16_t pressure = 0; + uint16_t altitudeBar = 0; + int16_t temperature = 0; + int32_t latitude, longitude = 0; + uint16_t altitudeGps = 0xFFFF; + uint8_t batteryLevel = 0; + + BoardInitMcu( ); + BoardInitPeriph( ); + + // Initialize LoRaMac device unique ID + BoardGetUniqueId( DevEui ); + + LoRaMacEvents.MacEvent = OnMacEvent; + LoRaMacInit( &LoRaMacEvents ); + + IsNetworkJoined = false; + +#if( OVER_THE_AIR_ACTIVATION == 0 ) + // Random seed initialization + srand( RAND_SEED ); + // Choose a random device address + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); + + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); + IsNetworkJoined = true; +#else + // Sends a JoinReq Command every 5 seconds until the network is joined + TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); + TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); +#endif + + TxNextPacket = true; + TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 25000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 25000 ); + + TimerInit( &Led4Timer, OnLed4TimerEvent ); + TimerSetValue( &Led4Timer, 25000 ); + + LoRaMacSetAdrOn( true ); + + while( 1 ) + { + while( IsNetworkJoined == false ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + if( TxNextPacket == true ) + { + TxNextPacket = false; + + LoRaMacJoinReq( DevEui, AppEui, AppKey ); + + // Relaunch timer for next trial + TimerStart( &JoinReqTimer ); + } + TimerLowPowerHandler( ); +#endif + } + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + } + + if( Led4TimerEvent == true ) + { + Led4TimerEvent = false; + + // Switch LED 4 OFF + GpioWrite( &Led4, 1 ); + } + + if( GpsGetPpsDetectedState( ) == true ) + { + // Switch LED 4 ON + GpioWrite( &Led4, 0 ); + TimerStart( &Led4Timer ); + } + + if( TxAckReceived == true ) + { + TxAckReceived = false; + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( RxDone == true ) + { + RxDone = false; + + if( AppLedStateOn == true ) + { + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + } + else + { + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + } + } + + if( TxDone == true ) + { + TxDone = false; + + // Schedule next packet transmission + TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND ); + TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime ); + TimerStart( &TxNextPacketTimer ); + } + + if( TxNextPacket == true ) + { + TxNextPacket = false; + + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 + batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) + GpsGetLatestGpsPositionBinary( &latitude, &longitude ); + altitudeGps = GpsGetLatestGpsAltitude( ); // in m + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + AppData[0] = AppLedStateOn; + AppData[1] = ( pressure >> 8 ) & 0xFF; + AppData[2] = pressure & 0xFF; + AppData[3] = ( temperature >> 8 ) & 0xFF; + AppData[4] = temperature & 0xFF; + AppData[5] = ( altitudeBar >> 8 ) & 0xFF; + AppData[6] = altitudeBar & 0xFF; + AppData[7] = batteryLevel; + AppData[8] = ( latitude >> 16 ) & 0xFF; + AppData[9] = ( latitude >> 8 ) & 0xFF; + AppData[10] = latitude & 0xFF; + AppData[11] = ( longitude >> 16 ) & 0xFF; + AppData[12] = ( longitude >> 8 ) & 0xFF; + AppData[13] = longitude & 0xFF; + AppData[14] = ( altitudeGps >> 8 ) & 0xFF; + AppData[15] = altitudeGps & 0xFF; + + LoRaMacSendFrame( 2, AppData, APP_DATA_SIZE ); + //LoRaMacSendConfirmedFrame( 2, AppData, APP_DATA_SIZE, 1 ); + } + + TimerLowPowerHandler( ); + } +} + diff --git a/src/apps/LoRaMac/classB/Bleeper/main.c b/src/apps/LoRaMac/classB/Bleeper-72/main.c similarity index 95% rename from src/apps/LoRaMac/classB/Bleeper/main.c rename to src/apps/LoRaMac/classB/Bleeper-72/main.c index 61dc866a5..fc3c128a2 100644 --- a/src/apps/LoRaMac/classB/Bleeper/main.c +++ b/src/apps/LoRaMac/classB/Bleeper-72/main.c @@ -233,16 +233,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -327,16 +327,16 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) // Switch LED 1 ON GpioWrite( &Led1, 0 ); TimerStart( &Led1Timer ); - AppData[0] = AppLedStateOn; + AppData[0] = ( SelectorGetValue( ) << 4 ) | AppLedStateOn; AppData[1] = ( pressure >> 8 ) & 0xFF; AppData[2] = pressure & 0xFF; AppData[3] = ( temperature >> 8 ) & 0xFF; diff --git a/src/apps/LoRaMac/class1/LoRaMote/main.c b/src/apps/LoRaMac/classB/Bleeper-76/main.c similarity index 74% rename from src/apps/LoRaMac/class1/LoRaMote/main.c rename to src/apps/LoRaMac/classB/Bleeper-76/main.c index 53a22174c..fc3c128a2 100644 --- a/src/apps/LoRaMac/class1/LoRaMote/main.c +++ b/src/apps/LoRaMac/classB/Bleeper-76/main.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: LoRaMac class1 device implementation +Description: LoRaMac classB device implementation License: Revised BSD License, see LICENSE.TXT file include in the project @@ -95,7 +95,7 @@ static bool IsNetworkJoined = false; /*! * User application data buffer size */ -#define APP_DATA_SIZE 16 +#define APP_DATA_SIZE 8 /*! * User application data @@ -123,12 +123,19 @@ static TimerEvent_t JoinReqTimer; */ static bool TxNextPacket = true; static bool TxDone = false; +static bool RxDone = false; +static bool TxAckReceived = false; + +static bool AppLedStateOn = false; static LoRaMacEvent_t LoRaMacEvents; static TimerEvent_t Led1Timer; volatile bool Led1TimerEvent = false; +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + #if( OVER_THE_AIR_ACTIVATION != 0 ) /*! @@ -157,6 +164,14 @@ void OnLed1TimerEvent( void ) Led1TimerEvent = true; } +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + /*! * \brief Function to be executed on MAC layer event */ @@ -176,8 +191,21 @@ void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) if( flags->Bits.Tx == 1 ) { + if( info->TxAckReceived == true ) + { + TxAckReceived = true; + } TxDone = true; } + + if( flags->Bits.Rx == 1 ) + { + if( ( ( info->RxPort == 1 ) || ( info->RxPort == 2 ) ) && ( info->RxBufferSize > 0 ) ) + { + AppLedStateOn = info->RxBuffer[0]; + } + RxDone = true; + } } /** @@ -188,8 +216,6 @@ int main( void ) uint16_t pressure = 0; uint16_t altitudeBar = 0; int16_t temperature = 0; - int32_t latitude, longitude = 0; - uint16_t altitudeGps = 0xFFFF; uint8_t batteryLevel = 0; BoardInitMcu( ); @@ -207,16 +233,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -225,6 +251,11 @@ int main( void ) TimerInit( &Led1Timer, OnLed1TimerEvent ); TimerSetValue( &Led1Timer, 25000 ); + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 25000 ); + + LoRaMacSetAdrOn( true ); + while( 1 ) { while( IsNetworkJoined == false ) @@ -250,6 +281,38 @@ int main( void ) GpioWrite( &Led1, 1 ); } + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + } + + if( TxAckReceived == true ) + { + TxAckReceived = false; + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( RxDone == true ) + { + RxDone = false; + + if( AppLedStateOn == true ) + { + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + } + else + { + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + } + } + if( TxDone == true ) { TxDone = false; @@ -264,18 +327,16 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) - UP501GetLatestGpsPositionBinary( &latitude, &longitude ); - altitudeGps = UP501GetLatestGpsAltitude( ); // in m // Switch LED 1 ON GpioWrite( &Led1, 0 ); TimerStart( &Led1Timer ); - AppData[0] = 0x00; + AppData[0] = ( SelectorGetValue( ) << 4 ) | AppLedStateOn; AppData[1] = ( pressure >> 8 ) & 0xFF; AppData[2] = pressure & 0xFF; AppData[3] = ( temperature >> 8 ) & 0xFF; @@ -283,16 +344,9 @@ int main( void ) AppData[5] = ( altitudeBar >> 8 ) & 0xFF; AppData[6] = altitudeBar & 0xFF; AppData[7] = batteryLevel; - AppData[8] = ( latitude >> 16 ) & 0xFF; - AppData[9] = ( latitude >> 8 ) & 0xFF; - AppData[10] = latitude & 0xFF; - AppData[11] = ( longitude >> 16 ) & 0xFF; - AppData[12] = ( longitude >> 8 ) & 0xFF; - AppData[13] = longitude & 0xFF; - AppData[14] = ( altitudeGps >> 8 ) & 0xFF; - AppData[15] = altitudeGps & 0xFF; - LoRaMacSendFrame( 2, AppData, APP_DATA_SIZE ); + LoRaMacSendFrame( 1, AppData, APP_DATA_SIZE ); + //LoRaMacSendConfirmedFrame( 1, AppData, APP_DATA_SIZE, 1 ); } TimerLowPowerHandler( ); diff --git a/src/apps/LoRaMac/classB/LoRaMote/main.c b/src/apps/LoRaMac/classB/LoRaMote/main.c index aec621f1d..659102b31 100644 --- a/src/apps/LoRaMac/classB/LoRaMote/main.c +++ b/src/apps/LoRaMac/classB/LoRaMote/main.c @@ -235,16 +235,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; @@ -329,12 +329,12 @@ int main( void ) { TxNextPacket = false; - pressure = ( uint16_t )( mpl3115ReadPressure( ) / 10 ); // in hPa / 10 - temperature = ( int16_t )( mpl3115ReadTemperature( ) * 100 ); // in °C * 100 - altitudeBar = ( uint16_t )( mpl3115ReadAltitude( ) * 10 ); // in m * 10 + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) - UP501GetLatestGpsPositionBinary( &latitude, &longitude ); - altitudeGps = UP501GetLatestGpsAltitude( ); // in m + GpsGetLatestGpsPositionBinary( &latitude, &longitude ); + altitudeGps = GpsGetLatestGpsAltitude( ); // in m // Switch LED 1 ON GpioWrite( &Led1, 0 ); diff --git a/src/apps/LoRaMac/classB/SK-iM880A/main.c b/src/apps/LoRaMac/classB/SK-iM880A/main.c index 76c27bb5d..f58273f5b 100644 --- a/src/apps/LoRaMac/classB/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classB/SK-iM880A/main.c @@ -231,16 +231,16 @@ int main( void ) // Random seed initialization srand( RAND_SEED ); // Choose a random device address - DevAddr = randr( 0, 0x0FFFFFFF ); + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); - LoRaMacInitNwkIds( DevAddr, NwkSKey, AppSKey ); - + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); IsNetworkJoined = true; #else // Sends a JoinReq Command every 5 seconds until the network is joined TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); - TimerStart( &JoinReqTimer ); #endif TxNextPacket = true; diff --git a/src/apps/LoRaMac/classB/SensorNode/main.c b/src/apps/LoRaMac/classB/SensorNode/main.c new file mode 100644 index 000000000..f34a108f6 --- /dev/null +++ b/src/apps/LoRaMac/classB/SensorNode/main.c @@ -0,0 +1,396 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRaMac classB device implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "radio.h" + +#include "LoRaMac.h" + +/*! + * When set to 1 the application uses the Over-the-Air activation procedure + * When set to 0 the application uses the Personalization activation procedure + */ +#define OVER_THE_AIR_ACTIVATION 0 + +/*! + * Mote device IEEE EUI + */ +static uint8_t DevEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 10000000 // 10 [s] value in us + +/*! + * Application IEEE EUI + */ +static uint8_t AppEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/*! + * AES encryption/decryption cipher application key + */ +static uint8_t AppKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +#else + +/*! + * AES encryption/decryption cipher network session key + */ +static uint8_t NwkSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * AES encryption/decryption cipher application session key + */ +static uint8_t AppSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * Device address + */ +static uint32_t DevAddr; + +#endif + +/*! + * Indicates if the MAC layer has already joined a network. + */ +static bool IsNetworkJoined = false; + +/*! + * Defines the application data transmission duty cycle + */ +#define APP_TX_DUTYCYCLE 5000000 // 5 [s] value in us +#define APP_TX_DUTYCYCLE_RND 1000000 // 1 [s] value in us + +/*! + * User application data buffer size + */ +#define APP_DATA_SIZE 16 + +/*! + * User application data + */ +static uint8_t AppData[APP_DATA_SIZE]; + +/*! + * Defines the application data transmission duty cycle + */ +static uint32_t TxDutyCycleTime; + +static TimerEvent_t TxNextPacketTimer; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * Defines the join request timer + */ +static TimerEvent_t JoinReqTimer; + +#endif + +/*! + * Indicates if a new packet can be sent + */ +static bool TxNextPacket = true; +static bool TxDone = false; +static bool RxDone = false; +static bool TxAckReceived = false; + +static bool AppLedStateOn = false; + +static LoRaMacEvent_t LoRaMacEvents; + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led4Timer; +volatile bool Led4TimerEvent = false; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnJoinReqTimerEvent( void ) +{ + TxNextPacket = true; +} + +#endif + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnTxNextPacketTimerEvent( void ) +{ + TxNextPacket = true; +} + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 4 Timeout event + */ +void OnLed4TimerEvent( void ) +{ + Led4TimerEvent = true; +} + +/*! + * \brief Function to be executed on MAC layer event + */ +void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) +{ + if( info->Status == LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ) + { + TxDone = true; + } + if( flags->Bits.JoinAccept == 1 ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + TimerStop( &JoinReqTimer ); +#endif + IsNetworkJoined = true; + } + + if( flags->Bits.Tx == 1 ) + { + if( info->TxAckReceived == true ) + { + TxAckReceived = true; + } + TxDone = true; + } + + if( flags->Bits.Rx == 1 ) + { + if( ( ( info->RxPort == 1 ) || ( info->RxPort == 2 ) ) && ( info->RxBufferSize > 0 ) ) + { + AppLedStateOn = info->RxBuffer[0]; + } + RxDone = true; + } +} + +/** + * Main application entry point. + */ +int main( void ) +{ + uint16_t pressure = 0; + uint16_t altitudeBar = 0; + int16_t temperature = 0; + int32_t latitude, longitude = 0; + uint16_t altitudeGps = 0xFFFF; + uint8_t batteryLevel = 0; + + BoardInitMcu( ); + BoardInitPeriph( ); + + // Initialize LoRaMac device unique ID + BoardGetUniqueId( DevEui ); + + LoRaMacEvents.MacEvent = OnMacEvent; + LoRaMacInit( &LoRaMacEvents ); + + IsNetworkJoined = false; + +#if( OVER_THE_AIR_ACTIVATION == 0 ) + // Random seed initialization + srand( RAND_SEED ); + // Choose a random device address + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); + + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); + IsNetworkJoined = true; +#else + // Sends a JoinReq Command every 5 seconds until the network is joined + TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); + TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); +#endif + + TxNextPacket = true; + TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 25000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 25000 ); + + TimerInit( &Led4Timer, OnLed4TimerEvent ); + TimerSetValue( &Led4Timer, 25000 ); + + LoRaMacSetAdrOn( true ); + + while( 1 ) + { + while( IsNetworkJoined == false ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + if( TxNextPacket == true ) + { + TxNextPacket = false; + + LoRaMacJoinReq( DevEui, AppEui, AppKey ); + + // Relaunch timer for next trial + TimerStart( &JoinReqTimer ); + } + TimerLowPowerHandler( ); +#endif + } + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + } + + if( Led4TimerEvent == true ) + { + Led4TimerEvent = false; + + // Switch LED 4 OFF + GpioWrite( &Led4, 1 ); + } + + if( GpsGetPpsDetectedState( ) == true ) + { + // Switch LED 4 ON + GpioWrite( &Led4, 0 ); + TimerStart( &Led4Timer ); + } + + if( TxAckReceived == true ) + { + TxAckReceived = false; + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( RxDone == true ) + { + RxDone = false; + + if( AppLedStateOn == true ) + { + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + } + else + { + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + } + } + + if( TxDone == true ) + { + TxDone = false; + + // Schedule next packet transmission + TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND ); + TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime ); + TimerStart( &TxNextPacketTimer ); + } + + if( TxNextPacket == true ) + { + TxNextPacket = false; + + pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 + temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 + altitudeBar = ( uint16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 + batteryLevel = BoardMeasureBatterieLevel( ); // 1 (very low) to 254 (fully charged) + GpsGetLatestGpsPositionBinary( &latitude, &longitude ); + altitudeGps = GpsGetLatestGpsAltitude( ); // in m + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + AppData[0] = AppLedStateOn; + AppData[1] = ( pressure >> 8 ) & 0xFF; + AppData[2] = pressure & 0xFF; + AppData[3] = ( temperature >> 8 ) & 0xFF; + AppData[4] = temperature & 0xFF; + AppData[5] = ( altitudeBar >> 8 ) & 0xFF; + AppData[6] = altitudeBar & 0xFF; + AppData[7] = batteryLevel; + AppData[8] = ( latitude >> 16 ) & 0xFF; + AppData[9] = ( latitude >> 8 ) & 0xFF; + AppData[10] = latitude & 0xFF; + AppData[11] = ( longitude >> 16 ) & 0xFF; + AppData[12] = ( longitude >> 8 ) & 0xFF; + AppData[13] = longitude & 0xFF; + AppData[14] = ( altitudeGps >> 8 ) & 0xFF; + AppData[15] = altitudeGps & 0xFF; + + LoRaMacSendFrame( 2, AppData, APP_DATA_SIZE ); + //LoRaMacSendConfirmedFrame( 2, AppData, APP_DATA_SIZE, 1 ); + } + + TimerLowPowerHandler( ); + } +} + diff --git a/src/apps/LoRaMac/tstIndoor/Bleeper-72/main.c b/src/apps/LoRaMac/tstIndoor/Bleeper-72/main.c new file mode 100644 index 000000000..0dcaf7b00 --- /dev/null +++ b/src/apps/LoRaMac/tstIndoor/Bleeper-72/main.c @@ -0,0 +1,341 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRaMac indoor test implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "radio.h" + +#include "LoRaMac.h" + +/*! + * When set to 1 the application uses the Over-the-Air activation procedure + * When set to 0 the application uses the Personalization activation procedure + */ +#define OVER_THE_AIR_ACTIVATION 0 + +/*! + * Mote device IEEE EUI + */ +static uint8_t DevEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 10000000 // 10 [s] value in us + +/*! + * Application IEEE EUI + */ +static uint8_t AppEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/*! + * AES encryption/decryption cipher application key + */ +static uint8_t AppKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +#else + +/*! + * AES encryption/decryption cipher network session key + */ +static uint8_t NwkSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * AES encryption/decryption cipher application session key + */ +static uint8_t AppSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * Device address + */ +static uint32_t DevAddr; + +#endif + +/*! + * Indicates if the MAC layer has already joined a network. + */ +static bool IsNetworkJoined = false; + +/*! + * User application data buffer size + */ +#define APP_DATA_SIZE 1 + +/*! + * User application data + */ +static uint8_t AppData[APP_DATA_SIZE]; + +static TimerEvent_t TxNextPacketTimer; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * Defines the join request timer + */ +static TimerEvent_t JoinReqTimer; + +#endif + +/*! + * Indicates if a new packet can be sent + */ +static bool TxNextPacket = true; +static bool TxDone = false; + +static LoRaMacEvent_t LoRaMacEvents; + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t StopTimer; +volatile bool StopTimerEvent = false; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnJoinReqTimerEvent( void ) +{ + TxNextPacket = true; +} + +#endif + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnTxNextPacketTimerEvent( void ) +{ + TxNextPacket = true; +} + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Stop Timeout event + */ +void OnStopTimerEvent( void ) +{ + StopTimerEvent = true; +} + +/*! + * \brief Function to be executed on MAC layer event + */ +void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) +{ + if( info->Status == LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ) + { + TxDone = true; + } + if( flags->Bits.JoinAccept == 1 ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + TimerStop( &JoinReqTimer ); +#endif + IsNetworkJoined = true; + } + + if( flags->Bits.Tx == 1 ) + { + TxDone = true; + } +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // LC1 LC2 LC3 LC4 LC5 LC6 + const uint32_t channelsFreq[] = { 868100000, 868300000, 868500000, 868200000, 868600000, 869300000 }; + const uint8_t channelsDatarate[] = { DR_SF7, DR_SF10, DR_SF12 }; + uint8_t tstState = 0; + int16_t pktCnt = 15; + ChannelParams_t channel; + LoRaMacHeader_t macHdr; + LoRaMacFrameCtrl_t fCtrl; + uint8_t channelsIndex = 0; + uint8_t datarateIndex = 0; + + BoardInitMcu( ); + BoardInitPeriph( ); + + // Initialize LoRaMac device unique ID + BoardGetUniqueId( DevEui ); + + LoRaMacEvents.MacEvent = OnMacEvent; + LoRaMacInit( &LoRaMacEvents ); + + IsNetworkJoined = false; + +#if( OVER_THE_AIR_ACTIVATION == 0 ) + // Random seed initialization + srand( RAND_SEED ); + // Choose a random device address + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); + + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); + IsNetworkJoined = true; +#else + // Sends a JoinReq Command every 5 seconds until the network is joined + TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); + TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); +#endif + + TxNextPacket = true; + TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 25000 ); + + // Low power timer to be run when tests are finished. + TimerInit( &StopTimer, OnStopTimerEvent ); + TimerSetValue( &StopTimer, 3.6e9 ); // wakes up the microcontroller every hour + + // Initialize MAC frame + macHdr.Value = 0; + macHdr.Bits.MType = FRAME_TYPE_DATA_UNCONFIRMED; + + fCtrl.Value = 0; + fCtrl.Bits.OptionsLength = 0; + fCtrl.Bits.FPending = 0; + fCtrl.Bits.Ack = false; + fCtrl.Bits.AdrAckReq = false; + fCtrl.Bits.Adr = false; + + // Initialize channel + channel.DrRange.Fields.Min = DR_SF12; + channel.DrRange.Fields.Min = DR_SF7; + channel.DutyCycle = 0; + LoRaMacSetChannelsTxPower( TX_POWER_14_DBM ); + + // Disable reception windows opening + LoRaMacTestRxWindowsOn( false ); + + while( 1 ) + { + while( IsNetworkJoined == false ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + if( TxNextPacket == true ) + { + TxNextPacket = false; + + LoRaMacJoinReq( DevEui, AppEui, AppKey ); + + // Relaunch timer for next trial + TimerStart( &JoinReqTimer ); + } + TimerLowPowerHandler( ); +#endif + } + + for( datarateIndex = 0; datarateIndex < 3; datarateIndex++ ) + { + //for( channelsIndex = 0; channelsIndex < 3; channelsIndex++ ) + { + pktCnt = 15 * ( sizeof( channelsFreq ) / sizeof( uint32_t ) ); + while( pktCnt > 0 ) + { + switch( tstState ) + { + case 0: // Init + AppData[0] = SelectorGetValue( ); + + channel.Frequency = channelsFreq[channelsIndex]; + LoRaMacSetChannelsDatarate( channelsDatarate[datarateIndex] ); + LoRaMacSendOnChannel( channel, &macHdr, &fCtrl, NULL, 15, AppData, 1 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + channelsIndex = ( channelsIndex + 1 ) % 6; + tstState = 1; + break; + case 1: // Wait for end of transmission + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + } + if( TxDone == true ) + { + TxDone = false; + pktCnt--; + // Schedule next packet transmission after 100 ms + TimerSetValue( &TxNextPacketTimer, 100000 ); + TimerStart( &TxNextPacketTimer ); + tstState = 2; + } + break; + case 2: // Wait for next packet timer to expire + if( TxNextPacket == true ) + { + TxNextPacket = false; + tstState = 0; + } + break; + } + + TimerLowPowerHandler( ); + } + } + } + + TimerStart( &StopTimer ); + while( 1 ) // Reset device to restart + { + if( StopTimerEvent == true ) + { + StopTimerEvent = false; + TimerStart( &StopTimer ); + } + TimerLowPowerHandler( ); + } + } +} + diff --git a/src/apps/LoRaMac/tstIndoor/Bleeper-76/main.c b/src/apps/LoRaMac/tstIndoor/Bleeper-76/main.c new file mode 100644 index 000000000..946d474d4 --- /dev/null +++ b/src/apps/LoRaMac/tstIndoor/Bleeper-76/main.c @@ -0,0 +1,351 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRaMac indoor test implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "radio.h" + +#include "LoRaMac.h" + +/*! + * When set to 1 the application uses the Over-the-Air activation procedure + * When set to 0 the application uses the Personalization activation procedure + */ +#define OVER_THE_AIR_ACTIVATION 0 + +/*! + * Mote device IEEE EUI + */ +static uint8_t DevEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +#define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 10000000 // 10 [s] value in us + +/*! + * Application IEEE EUI + */ +static uint8_t AppEui[] = +{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/*! + * AES encryption/decryption cipher application key + */ +static uint8_t AppKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +#else + +/*! + * AES encryption/decryption cipher network session key + */ +static uint8_t NwkSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * AES encryption/decryption cipher application session key + */ +static uint8_t AppSKey[] = +{ + 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C +}; + +/*! + * Device address + */ +static uint32_t DevAddr; + +#endif + +/*! + * Indicates if the MAC layer has already joined a network. + */ +static bool IsNetworkJoined = false; + +/*! + * User application data buffer size + */ +#define APP_DATA_SIZE 1 + +/*! + * User application data + */ +static uint8_t AppData[APP_DATA_SIZE]; + +static TimerEvent_t TxNextPacketTimer; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * Defines the join request timer + */ +static TimerEvent_t JoinReqTimer; + +#endif + +/*! + * Indicates if a new packet can be sent + */ +static bool TxNextPacket = true; +static bool TxDone = false; + +static LoRaMacEvent_t LoRaMacEvents; + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t StopTimer; +volatile bool StopTimerEvent = false; + +#if( OVER_THE_AIR_ACTIVATION != 0 ) + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnJoinReqTimerEvent( void ) +{ + TxNextPacket = true; +} + +#endif + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnTxNextPacketTimerEvent( void ) +{ + TxNextPacket = true; +} + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Stop Timeout event + */ +void OnStopTimerEvent( void ) +{ + StopTimerEvent = true; +} + +/*! + * \brief Function to be executed on MAC layer event + */ +void OnMacEvent( LoRaMacEventFlags_t *flags, LoRaMacEventInfo_t *info ) +{ + if( info->Status == LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ) + { + TxDone = true; + } + if( flags->Bits.JoinAccept == 1 ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + TimerStop( &JoinReqTimer ); +#endif + IsNetworkJoined = true; + } + + if( flags->Bits.Tx == 1 ) + { + TxDone = true; + } +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // LC1 LC2 LC3 LC4 LC5 LC6 +#if defined( USE_BAND_433 ) + const uint32_t channelsFreq[] = { 433100000, 433300000, 433500000, 434100000, 434300000, 434500000 }; +#elif defined( USE_BAND_470 ) + const uint32_t channelsFreq[] = { 471300000, 471500000, 471700000, 471900000, 473200000, 473400000 }; +#elif defined( USE_BAND_868 ) + const uint32_t channelsFreq[] = { 868100000, 868300000, 868500000, 868200000, 868600000, 869300000 }; +#elif defined( USE_BAND_915 ) + const uint32_t channelsFreq[] = { 902700000, 902900000, 903100000, 903300000, 903500000, 903700000 }; +#else + #error "Please define a frequency band in the compiler options." +#endif + const uint8_t channelsDatarate[] = { DR_SF7, DR_SF10, DR_SF12 }; + uint8_t tstState = 0; + int16_t pktCnt = 15; + ChannelParams_t channel; + LoRaMacHeader_t macHdr; + LoRaMacFrameCtrl_t fCtrl; + uint8_t channelsIndex = 0; + uint8_t datarateIndex = 0; + + BoardInitMcu( ); + BoardInitPeriph( ); + + // Initialize LoRaMac device unique ID + BoardGetUniqueId( DevEui ); + + LoRaMacEvents.MacEvent = OnMacEvent; + LoRaMacInit( &LoRaMacEvents ); + + IsNetworkJoined = false; + +#if( OVER_THE_AIR_ACTIVATION == 0 ) + // Random seed initialization + srand( RAND_SEED ); + // Choose a random device address + // NwkID = 0 + // NwkAddr rand [0, 33554431] + DevAddr = randr( 0, 0x01FFFFFF ); + + LoRaMacInitNwkIds( 0x000000, DevAddr, NwkSKey, AppSKey ); + IsNetworkJoined = true; +#else + // Sends a JoinReq Command every 5 seconds until the network is joined + TimerInit( &JoinReqTimer, OnJoinReqTimerEvent ); + TimerSetValue( &JoinReqTimer, OVER_THE_AIR_ACTIVATION_DUTYCYCLE ); +#endif + + TxNextPacket = true; + TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 25000 ); + + // Low power timer to be run when tests are finished. + TimerInit( &StopTimer, OnStopTimerEvent ); + TimerSetValue( &StopTimer, 3.6e9 ); // wakes up the microcontroller every hour + + // Initialize MAC frame + macHdr.Value = 0; + macHdr.Bits.MType = FRAME_TYPE_DATA_UNCONFIRMED; + + fCtrl.Value = 0; + fCtrl.Bits.OptionsLength = 0; + fCtrl.Bits.FPending = 0; + fCtrl.Bits.Ack = false; + fCtrl.Bits.AdrAckReq = false; + fCtrl.Bits.Adr = false; + + // Initialize channel + channel.DrRange.Fields.Min = DR_SF12; + channel.DrRange.Fields.Min = DR_SF7; + channel.DutyCycle = 0; + LoRaMacSetChannelsTxPower( TX_POWER_14_DBM ); + + // Disable reception windows opening + LoRaMacTestRxWindowsOn( false ); + + while( 1 ) + { + while( IsNetworkJoined == false ) + { +#if( OVER_THE_AIR_ACTIVATION != 0 ) + if( TxNextPacket == true ) + { + TxNextPacket = false; + + LoRaMacJoinReq( DevEui, AppEui, AppKey ); + + // Relaunch timer for next trial + TimerStart( &JoinReqTimer ); + } + TimerLowPowerHandler( ); +#endif + } + + for( datarateIndex = 0; datarateIndex < 3; datarateIndex++ ) + { + //for( channelsIndex = 0; channelsIndex < 3; channelsIndex++ ) + { + pktCnt = 15 * ( sizeof( channelsFreq ) / sizeof( uint32_t ) ); + while( pktCnt > 0 ) + { + switch( tstState ) + { + case 0: // Init + AppData[0] = SelectorGetValue( ); + + channel.Frequency = channelsFreq[channelsIndex]; + LoRaMacSetChannelsDatarate( channelsDatarate[datarateIndex] ); + LoRaMacSendOnChannel( channel, &macHdr, &fCtrl, NULL, 15, AppData, 1 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + channelsIndex = ( channelsIndex + 1 ) % 6; + tstState = 1; + break; + case 1: // Wait for end of transmission + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + } + if( TxDone == true ) + { + TxDone = false; + pktCnt--; + // Schedule next packet transmission after 100 ms + TimerSetValue( &TxNextPacketTimer, 100000 ); + TimerStart( &TxNextPacketTimer ); + tstState = 2; + } + break; + case 2: // Wait for next packet timer to expire + if( TxNextPacket == true ) + { + TxNextPacket = false; + tstState = 0; + } + break; + } + + TimerLowPowerHandler( ); + } + } + } + + TimerStart( &StopTimer ); + while( 1 ) // Reset device to restart + { + if( StopTimerEvent == true ) + { + StopTimerEvent = false; + TimerStart( &StopTimer ); + } + TimerLowPowerHandler( ); + } + } +} + diff --git a/src/apps/ping-pong-fsk/SK-iM880A/main.c b/src/apps/ping-pong-fsk/SK-iM880A/main.c deleted file mode 100644 index 9e100a8b6..000000000 --- a/src/apps/ping-pong-fsk/SK-iM880A/main.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - (C)2013 Semtech - -Description: Ping-Pong implementation - -License: Revised BSD License, see LICENSE.TXT file include in the project - -Maintainer: Miguel Luis and Gregory Cristian -*/ -#include -#include "board.h" -#include "radio.h" - -typedef enum -{ - LOWPOWER, - RX, - RX_TIMEOUT, - RX_ERROR, - TX, - TX_TIMEOUT, -}States_t; - -#define RX_TIMEOUT_VALUE 1000000 -#define BUFFER_SIZE 9 // Define the payload size here - -const uint8_t PingMsg[] = "PING"; -const uint8_t PongMsg[] = "PONG"; - -uint16_t BufferSize = BUFFER_SIZE; -uint8_t Buffer[BUFFER_SIZE]; - -States_t State = LOWPOWER; - -double RssiValue = 0.0; -double SnrValue = 0.0; - -/*! - * Radio events function pointer - */ -static RadioEvents_t RadioEvents; - -/*! - * \brief Function to be executed on Radio Tx Done event - */ -void OnTxDone( void ); - -/*! - * \brief Function to be executed on Radio Rx Done event - */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); - -/*! - * \brief Function executed on Radio Tx Timeout event - */ -void OnTxTimeout( void ); - -/*! - * \brief Function executed on Radio Rx Timeout event - */ -void OnRxTimeout( void ); - -/*! - * \brief Function executed on Radio Rx Error event - */ -void OnRxError( void ); - -/** - * Main application entry point. - */ -int main( void ) -{ - bool isMaster = true; - uint8_t i; - - // Target board initialisation - BoardInitMcu( ); - BoardInitPeriph( ); - - // Radio initialization - RadioEvents.TxDone = OnTxDone; - RadioEvents.RxDone = OnRxDone; - RadioEvents.TxTimeout = OnTxTimeout; - RadioEvents.RxTimeout = OnRxTimeout; - RadioEvents.RxError = OnRxError; - - Radio.Init( &RadioEvents ); - - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_FSK, 14, 50000, 0, 9600, 0, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_FSK, 100000, 9600, 0, 150000, 0, 0, false, true, false, true ); - - Radio.Rx( RX_TIMEOUT_VALUE ); - - while( 1 ) - { - switch( State ) - { - case RX: - if( isMaster == true ) - { - if( BufferSize > 0 ) - { - if( strncmp( ( const char* )Buffer, ( const char* )PongMsg, 4 ) == 0 ) - { - // Indicates on a LED that the received frame is a PONG - GpioWrite( &Led4, GpioRead( &Led4 ) ^ 1 ); - - // Send the next PING frame - Buffer[0] = 'P'; - Buffer[1] = 'I'; - Buffer[2] = 'N'; - Buffer[3] = 'G'; - // We fill the buffer with numbers for the payload - for( i = 4; i < BufferSize; i++ ) - { - Buffer[i] = i - 4; - } - DelayMs( 1 ); - Radio.Send( Buffer, BufferSize ); - } - else if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 ) - { // A master already exists then become a slave - isMaster = false; - GpioWrite( &Led3, 1 ); // Set LED off - Radio.Rx( RX_TIMEOUT_VALUE ); - } - } - } - else - { - if( BufferSize > 0 ) - { - if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 ) - { - // Indicates on a LED that the received frame is a PING - GpioWrite( &Led4, GpioRead( &Led4 ) ^ 1 ); - - // Send the reply to the PONG string - Buffer[0] = 'P'; - Buffer[1] = 'O'; - Buffer[2] = 'N'; - Buffer[3] = 'G'; - // We fill the buffer with numbers for the payload - for( i = 4; i < BufferSize; i++ ) - { - Buffer[i] = i - 4; - } - DelayMs( 1 ); - Radio.Send( Buffer, BufferSize ); - } - } - } - State = LOWPOWER; - break; - case TX: - // Indicates on a LED that we have sent a PING [Master] - // Indicates on a LED that we have sent a PONG [Slave] - GpioWrite( &Led3, GpioRead( &Led3 ) ^ 1 ); - Radio.Rx( RX_TIMEOUT_VALUE ); - State = LOWPOWER; - break; - case RX_TIMEOUT: - case RX_ERROR: - if( isMaster == true ) - { - // Send the next PING frame - Buffer[0] = 'P'; - Buffer[1] = 'I'; - Buffer[2] = 'N'; - Buffer[3] = 'G'; - for( i = 4; i < BufferSize; i++ ) - { - Buffer[i] = i - 4; - } - DelayMs( 1 ); - Radio.Send( Buffer, BufferSize ); - } - else - { - Radio.Rx( RX_TIMEOUT_VALUE ); - } - State = LOWPOWER; - break; - case TX_TIMEOUT: - Radio.Rx( RX_TIMEOUT_VALUE ); - State = LOWPOWER; - break; - case LOWPOWER: - default: - // Set low power - break; - } - - TimerLowPowerHandler( ); - - } -} - -void OnTxDone( void ) -{ - State = TX; -} - -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) -{ - Radio.Sleep( ); - BufferSize = *size; - memcpy( Buffer, payload, BufferSize ); - RssiValue = rssi; - SnrValue = snr; - State = RX; -} - -void OnTxTimeout( void ) -{ - Radio.Sleep( ); - State = TX_TIMEOUT; -} - -void OnRxTimeout( void ) -{ - Radio.Sleep( ); - State = RX_TIMEOUT; -} - -void OnRxError( void ) -{ - Radio.Sleep( ); - State = RX_ERROR; -} diff --git a/src/apps/ping-pong-fsk/LoRaMote/main.c b/src/apps/ping-pong/Bleeper-72/main.c similarity index 64% rename from src/apps/ping-pong-fsk/LoRaMote/main.c rename to src/apps/ping-pong/Bleeper-72/main.c index f27711764..1cc1e6cf4 100644 --- a/src/apps/ping-pong-fsk/LoRaMote/main.c +++ b/src/apps/ping-pong/Bleeper-72/main.c @@ -16,6 +16,38 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 14 // dBm + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_FDEV 25e3 // Hz +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + typedef enum { LOWPOWER, @@ -53,7 +85,7 @@ void OnTxDone( void ); /*! * \brief Function to be executed on Radio Rx Done event */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Function executed on Radio Tx Timeout event @@ -89,11 +121,38 @@ int main( void ) RadioEvents.RxTimeout = OnRxTimeout; RadioEvents.RxError = OnRxError; + // Radio initialization Radio.Init( &RadioEvents ); - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_FSK, 14, 50000, 0, 9600, 0, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_FSK, 100000, 9600, 0, 150000, 0, 0, false, true, false, true ); + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, FSK_FDEV, 0, + FSK_DATARATE, 0, + FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, + true, 0, 3000000 ); + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif Radio.Rx( RX_TIMEOUT_VALUE ); @@ -207,10 +266,10 @@ void OnTxDone( void ) State = TX; } -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { Radio.Sleep( ); - BufferSize = *size; + BufferSize = size; memcpy( Buffer, payload, BufferSize ); RssiValue = rssi; SnrValue = snr; diff --git a/src/apps/ping-pong-lora/Bleeper/main.c b/src/apps/ping-pong/Bleeper-76/main.c similarity index 61% rename from src/apps/ping-pong-lora/Bleeper/main.c rename to src/apps/ping-pong/Bleeper-76/main.c index d04509b23..b3880d794 100644 --- a/src/apps/ping-pong-lora/Bleeper/main.c +++ b/src/apps/ping-pong/Bleeper-76/main.c @@ -16,6 +16,57 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#define TX_OUTPUT_POWER 14 // 14 dBm + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_FDEV 25e3 // Hz +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + typedef enum { LOWPOWER, @@ -53,7 +104,7 @@ void OnTxDone( void ); /*! * \brief Function to be executed on Radio Rx Done event */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Function executed on Radio Tx Timeout event @@ -91,9 +142,35 @@ int main( void ) Radio.Init( &RadioEvents ); - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_LORA, 14, 0, 0, 9, 1, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_LORA, 0, 9, 1, 0, 8, 5, false, true, false, true ); + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, FSK_FDEV, 0, + FSK_DATARATE, 0, + FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, + true, 0, 3000000 ); + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif Radio.Rx( RX_TIMEOUT_VALUE ); @@ -207,10 +284,10 @@ void OnTxDone( void ) State = TX; } -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { Radio.Sleep( ); - BufferSize = *size; + BufferSize = size; memcpy( Buffer, payload, BufferSize ); RssiValue = rssi; SnrValue = snr; diff --git a/src/apps/ping-pong-fsk/Bleeper/main.c b/src/apps/ping-pong/LoRaMote/main.c similarity index 63% rename from src/apps/ping-pong-fsk/Bleeper/main.c rename to src/apps/ping-pong/LoRaMote/main.c index f27711764..d25a397a8 100644 --- a/src/apps/ping-pong-fsk/Bleeper/main.c +++ b/src/apps/ping-pong/LoRaMote/main.c @@ -16,6 +16,49 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#define TX_OUTPUT_POWER 14 // dBm + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_FDEV 25e3 // Hz +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + typedef enum { LOWPOWER, @@ -53,7 +96,7 @@ void OnTxDone( void ); /*! * \brief Function to be executed on Radio Rx Done event */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Function executed on Radio Tx Timeout event @@ -91,9 +134,35 @@ int main( void ) Radio.Init( &RadioEvents ); - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_FSK, 14, 50000, 0, 9600, 0, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_FSK, 100000, 9600, 0, 150000, 0, 0, false, true, false, true ); + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, FSK_FDEV, 0, + FSK_DATARATE, 0, + FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, + true, 0, 3000000 ); + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif Radio.Rx( RX_TIMEOUT_VALUE ); @@ -207,10 +276,10 @@ void OnTxDone( void ) State = TX; } -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { Radio.Sleep( ); - BufferSize = *size; + BufferSize = size; memcpy( Buffer, payload, BufferSize ); RssiValue = rssi; SnrValue = snr; diff --git a/src/apps/ping-pong-lora/SK-iM880A/main.c b/src/apps/ping-pong/SK-iM880A/main.c similarity index 64% rename from src/apps/ping-pong-lora/SK-iM880A/main.c rename to src/apps/ping-pong/SK-iM880A/main.c index bccc1fcc9..31e189f75 100644 --- a/src/apps/ping-pong-lora/SK-iM880A/main.c +++ b/src/apps/ping-pong/SK-iM880A/main.c @@ -16,6 +16,38 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 14 // dBm + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_FDEV 25e3 // Hz +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + typedef enum { LOWPOWER, @@ -53,7 +85,7 @@ void OnTxDone( void ); /*! * \brief Function to be executed on Radio Rx Done event */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Function executed on Radio Tx Timeout event @@ -91,9 +123,35 @@ int main( void ) Radio.Init( &RadioEvents ); - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_LORA, 14, 0, 0, 9, 1, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_LORA, 0, 9, 1, 0, 8, 5, false, true, false, true ); + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, FSK_FDEV, 0, + FSK_DATARATE, 0, + FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, + true, 0, 3000000 ); + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif Radio.Rx( RX_TIMEOUT_VALUE ); @@ -207,10 +265,10 @@ void OnTxDone( void ) State = TX; } -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { Radio.Sleep( ); - BufferSize = *size; + BufferSize = size; memcpy( Buffer, payload, BufferSize ); RssiValue = rssi; SnrValue = snr; diff --git a/src/apps/ping-pong-lora/LoRaMote/main.c b/src/apps/ping-pong/SensorNode/main.c similarity index 61% rename from src/apps/ping-pong-lora/LoRaMote/main.c rename to src/apps/ping-pong/SensorNode/main.c index d04509b23..02c49f46b 100644 --- a/src/apps/ping-pong-lora/LoRaMote/main.c +++ b/src/apps/ping-pong/SensorNode/main.c @@ -16,6 +16,57 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#define TX_OUTPUT_POWER 14 // dBm + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_FDEV 25e3 // Hz +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + typedef enum { LOWPOWER, @@ -53,7 +104,7 @@ void OnTxDone( void ); /*! * \brief Function to be executed on Radio Rx Done event */ -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Function executed on Radio Tx Timeout event @@ -91,9 +142,35 @@ int main( void ) Radio.Init( &RadioEvents ); - Radio.SetChannel( 870000000 ); - Radio.SetTxConfig( MODEM_LORA, 14, 0, 0, 9, 1, 8, false, true, false, 3000000 ); - Radio.SetRxConfig( MODEM_LORA, 0, 9, 1, 0, 8, 5, false, true, false, true ); + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, FSK_FDEV, 0, + FSK_DATARATE, 0, + FSK_PREAMBLE_LENGTH, FSK_FIX_LENGTH_PAYLOAD_ON, + true, 0, 3000000 ); + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif Radio.Rx( RX_TIMEOUT_VALUE ); @@ -207,10 +284,10 @@ void OnTxDone( void ) State = TX; } -void OnRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { Radio.Sleep( ); - BufferSize = *size; + BufferSize = size; memcpy( Buffer, payload, BufferSize ); RssiValue = rssi; SnrValue = snr; diff --git a/src/apps/rx-sensi/Bleeper-72/main.c b/src/apps/rx-sensi/Bleeper-72/main.c new file mode 100644 index 000000000..1890209b6 --- /dev/null +++ b/src/apps/rx-sensi/Bleeper-72/main.c @@ -0,0 +1,111 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Radio sensitivity test. + When LED1 stops blinking LoRa packets aren't received any more and + the sensitivity level has been reached. + By reading the RF generator output power we can estimate the board + sensitivity. + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#define RF_FREQUENCY 868000000 // Hz + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 10 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + +/*! + * Radio events function pointer + */ +static RadioEvents_t RadioEvents; + +/*! + * \brief Function to be executed on Radio Rx Done event + */ +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + +/*! + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + RadioEvents.RxDone = OnRxDone; + + Radio.Init( &RadioEvents ); + + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif + + Radio.Rx( 0 ); // Continuous Rx + + while( 1 ) + { + TimerLowPowerHandler( ); + } +} + +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) +{ + static uint8_t ledState = 1; + // Toggle LED 1 + ledState ^= 1; + GpioWrite( &Led1, ledState ); +} diff --git a/src/apps/rx-sensi/Bleeper-76/main.c b/src/apps/rx-sensi/Bleeper-76/main.c new file mode 100644 index 000000000..dca0e0fc2 --- /dev/null +++ b/src/apps/rx-sensi/Bleeper-76/main.c @@ -0,0 +1,129 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Radio sensitivity test. + When LED1 stops blinking LoRa packets aren't received any more and + the sensitivity level has been reached. + By reading the RF generator output power we can estimate the board + sensitivity. + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 10 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + +/*! + * Radio events function pointer + */ +static RadioEvents_t RadioEvents; + +/*! + * \brief Function to be executed on Radio Rx Done event + */ +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + +/*! + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + RadioEvents.RxDone = OnRxDone; + + Radio.Init( &RadioEvents ); + + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif + + Radio.Rx( 0 ); // Continuous Rx + + while( 1 ) + { + TimerLowPowerHandler( ); + } +} + +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) +{ + static uint8_t ledState = 1; + // Toggle LED 1 + ledState ^= 1; + GpioWrite( &Led1, ledState ); +} diff --git a/src/apps/rx-sensi/LoRaMote/main.c b/src/apps/rx-sensi/LoRaMote/main.c new file mode 100644 index 000000000..aca9e5662 --- /dev/null +++ b/src/apps/rx-sensi/LoRaMote/main.c @@ -0,0 +1,121 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Radio sensitivity test. + When LED1 stops blinking LoRa packets aren't received any more and + the sensitivity level has been reached. + By reading the RF generator output power we can estimate the board + sensitivity. + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 10 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + +/*! + * Radio events function pointer + */ +static RadioEvents_t RadioEvents; + +/*! + * \brief Function to be executed on Radio Rx Done event + */ +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + +/*! + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + RadioEvents.RxDone = OnRxDone; + + Radio.Init( &RadioEvents ); + + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif + + Radio.Rx( 0 ); // Continuous Rx + + while( 1 ) + { + TimerLowPowerHandler( ); + } +} + +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) +{ + static uint8_t ledState = 1; + // Toggle LED 1 + ledState ^= 1; + GpioWrite( &Led1, ledState ); +} diff --git a/src/apps/rx-sensi/SK-iM880A/main.c b/src/apps/rx-sensi/SK-iM880A/main.c new file mode 100644 index 000000000..266979cb0 --- /dev/null +++ b/src/apps/rx-sensi/SK-iM880A/main.c @@ -0,0 +1,111 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Radio sensitivity test. + When LED1 stops blinking LoRa packets aren't received any more and + the sensitivity level has been reached. + By reading the RF generator output power we can estimate the board + sensitivity. + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#define RF_FREQUENCY 868000000 // Hz + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 10 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + +/*! + * Radio events function pointer + */ +static RadioEvents_t RadioEvents; + +/*! + * \brief Function to be executed on Radio Rx Done event + */ +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + +/*! + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + RadioEvents.RxDone = OnRxDone; + + Radio.Init( &RadioEvents ); + + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif + + Radio.Rx( 0 ); // Continuous Rx + + while( 1 ) + { + TimerLowPowerHandler( ); + } +} + +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) +{ + static uint8_t ledState = 1; + // Toggle LED 4 + ledState ^= 1; + GpioWrite( &Led4, ledState ); +} diff --git a/src/apps/rx-sensi/SensorNode/main.c b/src/apps/rx-sensi/SensorNode/main.c new file mode 100644 index 000000000..dca0e0fc2 --- /dev/null +++ b/src/apps/rx-sensi/SensorNode/main.c @@ -0,0 +1,129 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Radio sensitivity test. + When LED1 stops blinking LoRa packets aren't received any more and + the sensitivity level has been reached. + By reading the RF generator output power we can estimate the board + sensitivity. + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#if defined( USE_MODEM_LORA ) + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 10 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_SYMBOL_TIMEOUT 5 // Symbols +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +#elif defined( USE_MODEM_FSK ) + +#define FSK_DATARATE 50e3 // bps +#define FSK_BANDWIDTH 50e3 // Hz +#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx +#define FSK_FIX_LENGTH_PAYLOAD_ON false + +#else + #error "Please define a modem in the compiler options." +#endif + +/*! + * Radio events function pointer + */ +static RadioEvents_t RadioEvents; + +/*! + * \brief Function to be executed on Radio Rx Done event + */ +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); + +/*! + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + RadioEvents.RxDone = OnRxDone; + + Radio.Init( &RadioEvents ); + + Radio.SetChannel( RF_FREQUENCY ); + +#if defined( USE_MODEM_LORA ) + + Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, + LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, + LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, true ); + +#elif defined( USE_MODEM_FSK ) + + Radio.SetRxConfig( MODEM_FSK, FSK_BANDWIDTH, FSK_DATARATE, + 0, FSK_AFC_BANDWIDTH, FSK_PREAMBLE_LENGTH, + 0, FSK_FIX_LENGTH_PAYLOAD_ON, true, + false, true ); + +#else + #error "Please define a frequency band in the compiler options." +#endif + + Radio.Rx( 0 ); // Continuous Rx + + while( 1 ) + { + TimerLowPowerHandler( ); + } +} + +void OnRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) +{ + static uint8_t ledState = 1; + // Toggle LED 1 + ledState ^= 1; + GpioWrite( &Led1, ledState ); +} diff --git a/src/apps/tx-cw/Bleeper-72/main.c b/src/apps/tx-cw/Bleeper-72/main.c new file mode 100644 index 000000000..25b8175e8 --- /dev/null +++ b/src/apps/tx-cw/Bleeper-72/main.c @@ -0,0 +1,149 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Tx Continuous Wave implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led3Timer; +volatile bool Led3TimerEvent = false; + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 3 Timeout event + */ +void OnLed3TimerEvent( void ) +{ + Led3TimerEvent = true; +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + Radio.Init( NULL ); + + Radio.SetChannel( RF_FREQUENCY ); + /**********************************************/ + /* WARNING */ + /* The below settings can damage the chipset */ + /* if wrongly used. DO NOT CHANGE THE VALUES! */ + /* */ + /**********************************************/ + + Radio.Write( 0x3D, 0xAF ); + Radio.Write( 0x1e, 0x08 ); + Radio.Write( 0x01, 0x83 ); + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 90000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 90000 ); + + TimerInit( &Led3Timer, OnLed3TimerEvent ); + TimerSetValue( &Led3Timer, 90000 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + // Sets the radio in Tx mode + Radio.Send( NULL, 0 ); + + // Blink LEDs just to show some activity + while( 1 ) + { + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + TimerStart( &Led3Timer ); + } + + if( Led3TimerEvent == true ) + { + Led3TimerEvent = false; + + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + } + } +} diff --git a/src/apps/tx-cw/Bleeper-76/main.c b/src/apps/tx-cw/Bleeper-76/main.c new file mode 100644 index 000000000..0e3c8a548 --- /dev/null +++ b/src/apps/tx-cw/Bleeper-76/main.c @@ -0,0 +1,187 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Tx Continuous Wave implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#else + #error "Please define a frequency band in the compiler options." +#endif + + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led3Timer; +volatile bool Led3TimerEvent = false; + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 3 Timeout event + */ +void OnLed3TimerEvent( void ) +{ + Led3TimerEvent = true; +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + Radio.Init( NULL ); + + Radio.SetChannel( RF_FREQUENCY ); + /**********************************************/ + /* WARNING */ + /* The below settings can damage the chipset */ + /* if wrongly used. DO NOT CHANGE THE VALUES! */ + /* */ + /**********************************************/ +#if ( defined( USE_BAND_433 ) || defined( USE_BAND_470 ) ) + + Radio.Write( 0x01, 0x88 ); + Radio.Write( 0x3D, 0xA1 ); + Radio.Write( 0x36, 0x01 ); + Radio.Write( 0x1e, 0x08 ); + +#elif ( defined( USE_BAND_868 ) || defined( USE_BAND_915 ) ) + + Radio.Write( 0x01, 0x80 ); + Radio.Write( 0x44, 0x7B ); + Radio.Write( 0x3D, 0xA1 ); + Radio.Write( 0x36, 0x01 ); + Radio.Write( 0x1e, 0x08 ); + Radio.Write( 0x45, 0xDF ); + Radio.Write( 0x46, 0x03 ); + Radio.Write( 0x4D, 0x87 ); + Radio.Write( 0x52, 0x60 ); + +#endif + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 90000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 90000 ); + + TimerInit( &Led3Timer, OnLed3TimerEvent ); + TimerSetValue( &Led3Timer, 90000 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + // Sets the radio in Tx mode + Radio.Send( NULL, 0 ); + + // Blink LEDs just to show some activity + while( 1 ) + { + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + TimerStart( &Led3Timer ); + } + + if( Led3TimerEvent == true ) + { + Led3TimerEvent = false; + + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + } + } +} diff --git a/src/apps/tx-cw/LoRaMote/main.c b/src/apps/tx-cw/LoRaMote/main.c new file mode 100644 index 000000000..89e18a046 --- /dev/null +++ b/src/apps/tx-cw/LoRaMote/main.c @@ -0,0 +1,167 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Tx Continuous Wave implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + + #error "Please define a frequency band in the compiler options." + +#endif + +#define TX_OUTPUT_POWER 20 // 20 dBm + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led3Timer; +volatile bool Led3TimerEvent = false; + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 3 Timeout event + */ +void OnLed3TimerEvent( void ) +{ + Led3TimerEvent = true; +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + Radio.Init( NULL ); + + Radio.SetChannel( RF_FREQUENCY ); + /**********************************************/ + /* WARNING */ + /* The below settings can damage the chipset */ + /* if wrongly used. DO NOT CHANGE THE VALUES! */ + /* */ + /**********************************************/ + + Radio.Write( 0x4B, 0x7B ); + Radio.Write( 0x3D, 0xAF ); + Radio.Write( 0x1e, 0x08 ); + Radio.Write( 0x4C, 0xC0 ); + Radio.Write( 0x4D, 0x03 ); + Radio.Write( 0x5A, 0x87 ); + Radio.Write( 0x63, 0x60 ); + Radio.Write( 0x01, 0x83 ); + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 90000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 90000 ); + + TimerInit( &Led3Timer, OnLed3TimerEvent ); + TimerSetValue( &Led3Timer, 90000 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + // Sets the radio in Tx mode + Radio.Send( NULL, 0 ); + + // Blink LEDs just to show some activity + while( 1 ) + { + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + TimerStart( &Led3Timer ); + } + + if( Led3TimerEvent == true ) + { + Led3TimerEvent = false; + + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + } + } +} diff --git a/src/apps/tx-cw/SK-iM880A/main.c b/src/apps/tx-cw/SK-iM880A/main.c new file mode 100644 index 000000000..312b77036 --- /dev/null +++ b/src/apps/tx-cw/SK-iM880A/main.c @@ -0,0 +1,154 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Tx Continuous Wave implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +static TimerEvent_t Led4Timer; +volatile bool Led4TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led3Timer; +volatile bool Led3TimerEvent = false; + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed4TimerEvent( void ) +{ + Led4TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 3 Timeout event + */ +void OnLed3TimerEvent( void ) +{ + Led3TimerEvent = true; +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + Radio.Init( NULL ); + + Radio.SetChannel( RF_FREQUENCY ); + /**********************************************/ + /* WARNING */ + /* The below settings can damage the chipset */ + /* if wrongly used. DO NOT CHANGE THE VALUES! */ + /* */ + /**********************************************/ + + Radio.Write( 0x4B, 0x7B ); + Radio.Write( 0x3D, 0xAF ); + Radio.Write( 0x1e, 0x08 ); + Radio.Write( 0x4C, 0xC0 ); + Radio.Write( 0x4D, 0x03 ); + Radio.Write( 0x5A, 0x87 ); + Radio.Write( 0x63, 0x60 ); + Radio.Write( 0x01, 0x83 ); + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + TimerInit( &Led4Timer, OnLed4TimerEvent ); + TimerSetValue( &Led4Timer, 90000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 90000 ); + + TimerInit( &Led3Timer, OnLed3TimerEvent ); + TimerSetValue( &Led3Timer, 90000 ); + + // Switch LED 1 ON + GpioWrite( &Led4, 0 ); + TimerStart( &Led4Timer ); + + // Sets the radio in Tx mode + Radio.Send( NULL, 0 ); + + // Blink LEDs just to show some activity + while( 1 ) + { + if( Led4TimerEvent == true ) + { + Led4TimerEvent = false; + + // Switch LED 4 OFF + GpioWrite( &Led4, 4 ); + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + TimerStart( &Led3Timer ); + } + + if( Led3TimerEvent == true ) + { + Led3TimerEvent = false; + + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + // Switch LED 1 ON + GpioWrite( &Led4, 0 ); + TimerStart( &Led4Timer ); + } + } +} diff --git a/src/apps/tx-cw/SensorNode/main.c b/src/apps/tx-cw/SensorNode/main.c new file mode 100644 index 000000000..a1b85640c --- /dev/null +++ b/src/apps/tx-cw/SensorNode/main.c @@ -0,0 +1,187 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Tx Continuous Wave implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "radio.h" + +#if defined( USE_BAND_433 ) + +#define RF_FREQUENCY 434000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#elif defined( USE_BAND_470 ) + +#define RF_FREQUENCY 470000000 // Hz +#define TX_OUTPUT_POWER 20 // 20 dBm + +#elif defined( USE_BAND_868 ) + +#define RF_FREQUENCY 868000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( USE_BAND_915 ) + +#define RF_FREQUENCY 915000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#else + #error "Please define a frequency band in the compiler options." +#endif + + +#define LORA_BANDWIDTH 0 // [0: 125 kHz, + // 1: 250 kHz, + // 2: 500 kHz, + // 3: Reserved] +#define LORA_SPREADING_FACTOR 9 // [SF7..SF12] +#define LORA_CODINGRATE 1 // [1: 4/5, + // 2: 4/6, + // 3: 4/7, + // 4: 4/8] +#define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx +#define LORA_FIX_LENGTH_PAYLOAD_ON false +#define LORA_IQ_INVERSION_ON false + +static TimerEvent_t Led1Timer; +volatile bool Led1TimerEvent = false; + +static TimerEvent_t Led2Timer; +volatile bool Led2TimerEvent = false; + +static TimerEvent_t Led3Timer; +volatile bool Led3TimerEvent = false; + +/*! + * \brief Function executed on Led 1 Timeout event + */ +void OnLed1TimerEvent( void ) +{ + Led1TimerEvent = true; +} + +/*! + * \brief Function executed on Led 2 Timeout event + */ +void OnLed2TimerEvent( void ) +{ + Led2TimerEvent = true; +} + +/*! + * \brief Function executed on Led 3 Timeout event + */ +void OnLed3TimerEvent( void ) +{ + Led3TimerEvent = true; +} + +/** + * Main application entry point. + */ +int main( void ) +{ + // Target board initialisation + BoardInitMcu( ); + BoardInitPeriph( ); + + // Radio initialization + Radio.Init( NULL ); + + Radio.SetChannel( RF_FREQUENCY ); + /**********************************************/ + /* WARNING */ + /* The below settings can damage the chipset */ + /* if wrongly used. DO NOT CHANGE THE VALUES! */ + /* */ + /**********************************************/ +#if ( defined( USE_BAND_433 ) || defined( USE_BAND_470 ) ) + + Radio.Write( 0x01, 0x80 ); + Radio.Write( 0x44, 0x7B ); + Radio.Write( 0x3D, 0xA1 ); + Radio.Write( 0x36, 0x01 ); + Radio.Write( 0x1e, 0x08 ); + Radio.Write( 0x45, 0xDF ); + Radio.Write( 0x46, 0x03 ); + Radio.Write( 0x4D, 0x87 ); + Radio.Write( 0x52, 0x60 ); + +#elif ( defined( USE_BAND_868 ) || defined( USE_BAND_915 ) ) + + Radio.Write( 0x01, 0x88 ); + Radio.Write( 0x3D, 0xA1 ); + Radio.Write( 0x36, 0x01 ); + Radio.Write( 0x1e, 0x08 ); + +#endif + + Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH, + LORA_SPREADING_FACTOR, LORA_CODINGRATE, + LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON, + true, LORA_IQ_INVERSION_ON, 3000000 ); + + TimerInit( &Led1Timer, OnLed1TimerEvent ); + TimerSetValue( &Led1Timer, 90000 ); + + TimerInit( &Led2Timer, OnLed2TimerEvent ); + TimerSetValue( &Led2Timer, 90000 ); + + TimerInit( &Led3Timer, OnLed3TimerEvent ); + TimerSetValue( &Led3Timer, 90000 ); + + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + + // Sets the radio in Tx mode + Radio.Send( NULL, 0 ); + + // Blink LEDs just to show some activity + while( 1 ) + { + if( Led1TimerEvent == true ) + { + Led1TimerEvent = false; + + // Switch LED 1 OFF + GpioWrite( &Led1, 1 ); + // Switch LED 2 ON + GpioWrite( &Led2, 0 ); + TimerStart( &Led2Timer ); + } + + if( Led2TimerEvent == true ) + { + Led2TimerEvent = false; + + // Switch LED 2 OFF + GpioWrite( &Led2, 1 ); + // Switch LED 3 ON + GpioWrite( &Led3, 0 ); + TimerStart( &Led3Timer ); + } + + if( Led3TimerEvent == true ) + { + Led3TimerEvent = false; + + // Switch LED 3 OFF + GpioWrite( &Led3, 1 ); + // Switch LED 1 ON + GpioWrite( &Led1, 0 ); + TimerStart( &Led1Timer ); + } + } +} diff --git a/src/boards/Bleeper-72/LoRaMac-board.h b/src/boards/Bleeper-72/LoRaMac-board.h new file mode 100644 index 000000000..0d4ca9a75 --- /dev/null +++ b/src/boards/Bleeper-72/LoRaMac-board.h @@ -0,0 +1,102 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRa MAC layer board dependent definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __LORAMAC_BOARD_H__ +#define __LORAMAC_BOARD_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define LORA_MAX_NB_CHANNELS 16 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MIN_DATARATE DR_SF12 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MAX_DATARATE DR_FSK + +/*! + * Default datarate used by the node + */ +#define LORAMAC_DEFAULT_DATARATE DR_SF12 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM + +/*! + * Default Tx output power used by the node + */ +#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM + +/*! + * Returns individual channel mask + * + * \param[IN] channelIndex Channel index 1 based + * \retval channelMask + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * LoRaMac TxPower definition + */ +#define TX_POWER_20_DBM 0 +#define TX_POWER_14_DBM 1 +#define TX_POWER_11_DBM 2 +#define TX_POWER_08_DBM 3 +#define TX_POWER_05_DBM 4 +#define TX_POWER_02_DBM 5 + +/*! + * LoRaMac datarates definition + */ +#define DR_SF12 0 +#define DR_SF11 1 +#define DR_SF10 2 +#define DR_SF9 3 +#define DR_SF8 4 +#define DR_SF7 5 +#define DR_SF7H 6 +#define DR_FSK 7 + +/*! + * LoRaMac default channels definition + */ + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 865525000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 868100000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 868300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 868500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#endif // __LORAMAC_BOARD_H__ diff --git a/src/boards/Bleeper/board.c b/src/boards/Bleeper-72/board.c similarity index 64% rename from src/boards/Bleeper/board.c rename to src/boards/Bleeper-72/board.c index 990eba98c..2473c8913 100644 --- a/src/boards/Bleeper/board.c +++ b/src/boards/Bleeper-72/board.c @@ -38,17 +38,32 @@ Gpio_t DbgPin4; I2c_t I2c; -volatile uint8_t Led3Status = 1; +/*! + * Initializes the unused GPIO to a know status + */ +static void BoardUnusedIoInit( void ); /*! * Flag to indicate if the MCU is Initialized */ static bool McuInitialized = false; -/*! - * Initializes the unused GPIO to a know status - */ -static void BoardUnusedIoInit( void ); +volatile uint8_t Led3Status = 1; + +void BoardInitPeriph( void ) +{ + GpioInit( &Sel1, SEL_1, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel2, SEL_2, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel3, SEL_3, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel4, SEL_4, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, Led3Status ); + + // Init temperature, pressure and altitude sensor + MPL3115Init( ); +} void BoardInitMcu( void ) { @@ -63,17 +78,9 @@ void BoardInitMcu( void ) SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; // Clear SysTick Exception pending flag I2cInit( &I2c, I2C_SCL, I2C_SDA ); - SX1272IoInit( ); - SpiInit( &SX1272.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); - - GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); - GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); - GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, Led3Status ); - GpioInit( &Sel1, SEL_1, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &Sel2, SEL_2, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &Sel3, SEL_3, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &Sel4, SEL_4, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + SpiInit( &SX1272.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); + SX1272IoInit( ); #if defined( USE_DEBUG_PINS ) GpioInit( &DbgPin1, J5_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); @@ -81,7 +88,7 @@ void BoardInitMcu( void ) GpioInit( &DbgPin3, J5_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &DbgPin4, J5_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); #endif - + BoardInitPeriph( ); BoardUnusedIoInit( ); #ifdef LOW_POWER_MODE_ENABLE @@ -95,10 +102,7 @@ void BoardInitMcu( void ) void BoardDeInitMcu( void ) { - Gpio_t oscHseIn; - Gpio_t oscHseOut; - Gpio_t oscLseIn; - Gpio_t oscLseOut; + Gpio_t ioPin; I2cDeInit( &I2c ); SpiDeInit( &SX1272.Spi ); @@ -124,20 +128,14 @@ void BoardDeInitMcu( void ) GpioInit( &DbgPin4, J5_4, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); #endif - GpioInit( &oscHseIn, OSC_HSE_IN, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); - GpioInit( &oscHseOut, OSC_HSE_OUT, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); - GpioInit( &oscLseIn, OSC_LSE_IN, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); - GpioInit( &oscLseOut, OSC_LSE_OUT, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); + GpioInit( &ioPin, OSC_HSE_IN, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &ioPin, OSC_HSE_OUT, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &ioPin, OSC_LSE_IN, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); + GpioInit( &ioPin, OSC_LSE_OUT, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); McuInitialized = false; } -void BoardInitPeriph( void ) -{ - // init Temperature, pressure and altitude sensor - mpl3115Init( ); -} - void BoardGetUniqueId( uint8_t *id ) { id[0] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 24; @@ -208,75 +206,41 @@ uint8_t BoardMeasureBatterieLevel( void ) static void BoardUnusedIoInit( void ) { - Gpio_t nc1; - Gpio_t nc2; - Gpio_t nc3; - Gpio_t nc4; - -#if !defined( USE_DEBUG_PINS ) - Gpio_t j51; - Gpio_t j52; - Gpio_t j53; - Gpio_t j54; -#endif - - Gpio_t j22; - Gpio_t j23; - - Gpio_t sdDet; - Gpio_t sdDat0; - Gpio_t sdDat1; - Gpio_t sdDat2; - Gpio_t sdDat3; - Gpio_t sdClk; - Gpio_t sdCmd; - - Gpio_t usbDM; - Gpio_t usbDP; - - Gpio_t boot1; - -#if !defined( USE_DEBUGGER ) - Gpio_t jtagTms; - Gpio_t jtagTck; - Gpio_t jtagTdi; - Gpio_t jtagTdo; - Gpio_t jtagNrst; -#endif + Gpio_t ioPin; /* Non Connected pin */ - GpioInit( &nc1, NC_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &nc2, NC_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &nc3, NC_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &nc4, NC_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); /* External Connector J5 */ #if !defined( USE_DEBUG_PINS ) - GpioInit( &j51, J5_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &j52, J5_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &j53, J5_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &j54, J5_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J5_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J5_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J5_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J5_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); #endif /* External Connector J2 */ - GpioInit( &j22, J2_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &j23, J2_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J2_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J2_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); /* SD Card */ - GpioInit( &sdDet, SD_DET, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdDat0, SD_DAT0, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdDat1, SD_DAT1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdDat2, SD_DAT2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdDat3, SD_DAT3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdClk, SD_CLK, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &sdCmd, SD_CMD, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_DET, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_DAT0, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_DAT1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_DAT2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_DAT3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_CLK, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SD_CMD, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); /* USB */ - GpioInit( &usbDM, USB_DM, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &usbDP, USB_DP, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, USB_DM, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, USB_DP, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); /* BOOT1 pin */ - GpioInit( &boot1, BOOT_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, BOOT_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); #if defined( USE_DEBUGGER ) DBGMCU_Config( DBGMCU_SLEEP, ENABLE ); @@ -287,10 +251,10 @@ static void BoardUnusedIoInit( void ) DBGMCU_Config( DBGMCU_STOP, DISABLE ); DBGMCU_Config( DBGMCU_STANDBY, DISABLE ); - GpioInit( &jtagTms, JTAG_TMS, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &jtagTck, JTAG_TCK, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &jtagTdi, JTAG_TDI, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &jtagTdo, JTAG_TDO, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); - GpioInit( &jtagNrst, JTAG_NRST, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TMS, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TCK, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDI, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDO, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_NRST, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); #endif } diff --git a/src/boards/Bleeper/board.h b/src/boards/Bleeper-72/board.h similarity index 99% rename from src/boards/Bleeper/board.h rename to src/boards/Bleeper-72/board.h index 5ba3233d5..9b097e296 100644 --- a/src/boards/Bleeper/board.h +++ b/src/boards/Bleeper-72/board.h @@ -17,7 +17,9 @@ Maintainer: Miguel Luis and Gregory Cristian #include #include +#include #include +#include #include "stm32l1xx.h" #include "utilities.h" #include "timer.h" @@ -150,10 +152,10 @@ extern Gpio_t Sel2; extern Gpio_t Sel3; extern Gpio_t Sel4; -#if defined( USE_DEBUG_PINS ) /*! * Debug GPIO pins objects */ +#if defined( USE_DEBUG_PINS ) extern Gpio_t DbgPin1; extern Gpio_t DbgPin2; extern Gpio_t DbgPin3; diff --git a/src/boards/Bleeper/cmsis/arm-gcc/startup_stm32l1xx_hd.s b/src/boards/Bleeper-72/cmsis/arm-gcc/startup_stm32l1xx_hd.s similarity index 100% rename from src/boards/Bleeper/cmsis/arm-gcc/startup_stm32l1xx_hd.s rename to src/boards/Bleeper-72/cmsis/arm-gcc/startup_stm32l1xx_hd.s diff --git a/src/boards/Bleeper-72/cmsis/arm-gcc/stm32l1xx_hd_flash.ld b/src/boards/Bleeper-72/cmsis/arm-gcc/stm32l1xx_hd_flash.ld new file mode 100644 index 000000000..228fc0598 --- /dev/null +++ b/src/boards/Bleeper-72/cmsis/arm-gcc/stm32l1xx_hd_flash.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_hd Device with +** 384KByte FLASH, 48KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x2000C000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 384K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/Bleeper/cmsis/arm-std/startup_stm32l1xx_hd.s b/src/boards/Bleeper-72/cmsis/arm-std/startup_stm32l1xx_hd.s similarity index 100% rename from src/boards/Bleeper/cmsis/arm-std/startup_stm32l1xx_hd.s rename to src/boards/Bleeper-72/cmsis/arm-std/startup_stm32l1xx_hd.s diff --git a/src/boards/Bleeper/cmsis/stm32l1xx.h b/src/boards/Bleeper-72/cmsis/stm32l1xx.h similarity index 100% rename from src/boards/Bleeper/cmsis/stm32l1xx.h rename to src/boards/Bleeper-72/cmsis/stm32l1xx.h diff --git a/src/boards/Bleeper/cmsis/stm32l1xx_conf.h b/src/boards/Bleeper-72/cmsis/stm32l1xx_conf.h similarity index 100% rename from src/boards/Bleeper/cmsis/stm32l1xx_conf.h rename to src/boards/Bleeper-72/cmsis/stm32l1xx_conf.h diff --git a/src/boards/Bleeper/cmsis/system_stm32l1xx.c b/src/boards/Bleeper-72/cmsis/system_stm32l1xx.c similarity index 100% rename from src/boards/Bleeper/cmsis/system_stm32l1xx.c rename to src/boards/Bleeper-72/cmsis/system_stm32l1xx.c diff --git a/src/boards/Bleeper/cmsis/system_stm32l1xx.h b/src/boards/Bleeper-72/cmsis/system_stm32l1xx.h similarity index 100% rename from src/boards/Bleeper/cmsis/system_stm32l1xx.h rename to src/boards/Bleeper-72/cmsis/system_stm32l1xx.h diff --git a/src/boards/Bleeper/gpio-board.c b/src/boards/Bleeper-72/gpio-board.c similarity index 97% rename from src/boards/Bleeper/gpio-board.c rename to src/boards/Bleeper-72/gpio-board.c index a387bf5e9..72802a517 100644 --- a/src/boards/Bleeper/gpio-board.c +++ b/src/boards/Bleeper-72/gpio-board.c @@ -200,7 +200,9 @@ uint32_t GpioMcuRead( Gpio_t *obj ) void EXTI0_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line0 ) != RESET ) { if( GpioIrq[0] != NULL ) @@ -213,7 +215,9 @@ void EXTI0_IRQHandler( void ) void EXTI1_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line1 ) != RESET ) { if( GpioIrq[1] != NULL ) @@ -226,7 +230,9 @@ void EXTI1_IRQHandler( void ) void EXTI2_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line2 ) != RESET ) { if( GpioIrq[2] != NULL ) @@ -239,7 +245,9 @@ void EXTI2_IRQHandler( void ) void EXTI3_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line3 ) != RESET ) { if( GpioIrq[3] != NULL ) @@ -252,7 +260,9 @@ void EXTI3_IRQHandler( void ) void EXTI4_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line4 ) != RESET ) { if( GpioIrq[4] != NULL ) @@ -265,7 +275,9 @@ void EXTI4_IRQHandler( void ) void EXTI9_5_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line5 ) != RESET ) { if( GpioIrq[5] != NULL ) @@ -314,7 +326,9 @@ void EXTI9_5_IRQHandler( void ) void EXTI15_10_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line10 ) != RESET ) { if( GpioIrq[10] != NULL ) diff --git a/src/boards/Bleeper/gpio-board.h b/src/boards/Bleeper-72/gpio-board.h similarity index 100% rename from src/boards/Bleeper/gpio-board.h rename to src/boards/Bleeper-72/gpio-board.h diff --git a/src/boards/Bleeper/i2c-board.c b/src/boards/Bleeper-72/i2c-board.c similarity index 94% rename from src/boards/Bleeper/i2c-board.c rename to src/boards/Bleeper-72/i2c-board.c index a00e3c7a6..678db7dec 100644 --- a/src/boards/Bleeper/i2c-board.c +++ b/src/boards/Bleeper-72/i2c-board.c @@ -114,6 +114,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY) ) @@ -121,6 +123,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -135,6 +139,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -149,6 +155,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -165,6 +173,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -180,6 +190,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -196,6 +208,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -211,6 +225,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -219,6 +235,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ buffer++; size--; } + + __enable_irq( ); return( SUCCESS ); } @@ -226,6 +244,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY ) ) @@ -233,6 +253,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -247,6 +269,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -261,6 +285,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -277,6 +303,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -292,6 +320,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -303,6 +333,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -317,6 +349,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -333,6 +367,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -353,6 +389,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -374,6 +412,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -404,11 +444,15 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } /*!< Re-Enable Acknowledgement to be ready for another reception */ I2C_AcknowledgeConfig( obj->I2c, ENABLE ); } + + __enable_irq( ); return( SUCCESS ); } diff --git a/src/boards/Bleeper/i2c-board.h b/src/boards/Bleeper-72/i2c-board.h similarity index 100% rename from src/boards/Bleeper/i2c-board.h rename to src/boards/Bleeper-72/i2c-board.h diff --git a/src/boards/Bleeper/pinName-board.h b/src/boards/Bleeper-72/pinName-board.h similarity index 100% rename from src/boards/Bleeper/pinName-board.h rename to src/boards/Bleeper-72/pinName-board.h diff --git a/src/boards/Bleeper/pinName-ioe.h b/src/boards/Bleeper-72/pinName-ioe.h similarity index 100% rename from src/boards/Bleeper/pinName-ioe.h rename to src/boards/Bleeper-72/pinName-ioe.h diff --git a/src/boards/Bleeper/rtc-board.c b/src/boards/Bleeper-72/rtc-board.c similarity index 85% rename from src/boards/Bleeper/rtc-board.c rename to src/boards/Bleeper-72/rtc-board.c index 4a8440ebd..938f507f5 100644 --- a/src/boards/Bleeper/rtc-board.c +++ b/src/boards/Bleeper-72/rtc-board.c @@ -109,7 +109,7 @@ static const uint16_t DaysInLeapYear = 366; /*! * Number of days in a century */ -static const uint16_t DaysInCentury = 36524; +static const double DaysInCentury = 36524.219; /*! * Number of days in each month on a normal year @@ -172,7 +172,7 @@ static void RtcSetConfig( void ) RTC_TimeStructInit( &RTC_TimeStruct ); RTC_DateStructInit( &RTC_DateStruct ); - + RTC_SetDate( RTC_Format_BIN, &RTC_DateStruct ); RTC_SetTime( RTC_Format_BIN, &RTC_TimeStruct ); @@ -293,9 +293,10 @@ static void RtcClearStatus( void ) static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) { - uint8_t rtcSeconds = 0; - uint8_t rtcMinutes = 0; - uint8_t rtcHours = 0; + uint16_t rtcSeconds = 0; + uint16_t rtcMinutes = 0; + uint16_t rtcHours = 0; + uint16_t rtcDays = 0; uint8_t rtcAlarmSeconds = 0; uint8_t rtcAlarmMinutes = 0; @@ -308,32 +309,23 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) RtcClearStatus( ); + RtcTimerContext = RtcGetCalendarValue( ); RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); - - if( ( PreviousYear == 99 ) && ( RTC_DateStruct.RTC_Year == 0 ) ) - { - Century++; - } - PreviousYear = RTC_DateStruct.RTC_Year; - - RtcTimerContext = RtcGetCalendarValue( ); timeoutValue = timeoutValue / RTC_ALARM_TIME_BASE; - rtcSeconds = timeoutValue % SecondsInMinute; - rtcMinutes = ( timeoutValue / SecondsInMinute ) % SecondsInMinute; - rtcHours = ( timeoutValue / SecondsInHour ) % HoursInDay; + rtcSeconds = ( timeoutValue % SecondsInMinute ) + RTC_TimeStruct.RTC_Seconds; + rtcMinutes = ( ( timeoutValue / SecondsInMinute ) % SecondsInMinute ) + RTC_TimeStruct.RTC_Minutes; + rtcHours = ( ( timeoutValue / SecondsInHour ) % HoursInDay ) + RTC_TimeStruct.RTC_Hours; + rtcDays = ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date; - rtcAlarmSeconds = ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) % 60; - rtcAlarmMinutes = ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) % 60; - rtcAlarmHours = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmHours = ( rtcAlarmHours + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) % 24; - rtcAlarmDays = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmDays = ( rtcAlarmDays + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) / 24; - rtcAlarmDays = ( rtcAlarmDays + ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date ); + rtcAlarmSeconds = ( rtcSeconds ) % 60; + rtcAlarmMinutes = ( ( rtcSeconds / 60 ) + rtcMinutes ) % 60; + rtcAlarmHours = ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) % 24; + rtcAlarmDays = ( ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) / 24 ) + rtcDays; - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ] ) { @@ -347,11 +339,11 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ]; } } - + RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = rtcAlarmSeconds; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = rtcAlarmMinutes; RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = rtcAlarmHours; - RTC_AlarmStructure.RTC_AlarmDateWeekDay = rtcAlarmDays; + RTC_AlarmStructure.RTC_AlarmDateWeekDay = ( uint8_t )rtcAlarmDays; RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_TimeStruct.RTC_H12; RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; @@ -451,7 +443,7 @@ void RTC_Alarm_IRQHandler( void ) } } -void BlockLowPowerDuringTask ( bool status ) +void BlockLowPowerDuringTask( bool status ) { if( status == true ) { @@ -460,7 +452,7 @@ void BlockLowPowerDuringTask ( bool status ) LowPowerDisableDuringTask = status; } -void RtcDelayMs ( uint32_t delay ) +void RtcDelayMs( uint32_t delay ) { uint64_t delayValue = 0; uint64_t timeout = 0; @@ -497,43 +489,43 @@ uint64_t RtcGetCalendarValue( void ) // century for( i = 0; i < Century; i++ ) { - calendarValue += DaysInCentury * SecondsInDay; + calendarValue += ( uint64_t )( DaysInCentury * SecondsInDay ); } // years for( i = 0; i < RTC_DateStruct.RTC_Year; i++ ) { - if( ( i != 0 ) && ( i % 4 == 0 ) ) + if( ( i == 0 ) || ( i % 4 == 0 ) ) { - calendarValue += DaysInLeapYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInLeapYear * SecondsInDay; } else { - calendarValue += DaysInYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInYear * SecondsInDay; } } // months - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonthLeapYear[ i - 1] * SecondsInDay; + calendarValue += DaysInMonthLeapYear[i] * SecondsInDay; } } else { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonth[ i ] * SecondsInDay; + calendarValue += DaysInMonth[i] * SecondsInDay; } } // days calendarValue += ( ( uint32_t )RTC_TimeStruct.RTC_Seconds + - ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * 60 ) + + ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * SecondsInMinute ) + ( ( uint32_t )RTC_TimeStruct.RTC_Hours * SecondsInHour ) + - ( ( uint32_t )RTC_DateStruct.RTC_Date * SecondsInDay ) ); + ( ( uint32_t )( RTC_DateStruct.RTC_Date * SecondsInDay ) ) ); return( calendarValue ); } diff --git a/src/boards/Bleeper/rtc-board.h b/src/boards/Bleeper-72/rtc-board.h similarity index 100% rename from src/boards/Bleeper/rtc-board.h rename to src/boards/Bleeper-72/rtc-board.h diff --git a/src/boards/Bleeper/spi-board.c b/src/boards/Bleeper-72/spi-board.c similarity index 95% rename from src/boards/Bleeper/spi-board.c rename to src/boards/Bleeper-72/spi-board.c index 47f2728d4..7497cd1e2 100644 --- a/src/boards/Bleeper/spi-board.c +++ b/src/boards/Bleeper-72/spi-board.c @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian @@ -122,7 +119,7 @@ void SpiFrequency( Spi_t *obj, uint32_t hz ) divisor |= divisor >> 16; divisor++; - divisor = __builtin_ffs( divisor ) - 1; + divisor = __ffs( divisor ) - 1; divisor = ( divisor > 0x07 ) ? 0x07 : divisor; diff --git a/src/boards/Bleeper/spi-board.h b/src/boards/Bleeper-72/spi-board.h similarity index 81% rename from src/boards/Bleeper/spi-board.h rename to src/boards/Bleeper-72/spi-board.h index 8e9d9caf0..0dfbc8408 100644 --- a/src/boards/Bleeper/spi-board.h +++ b/src/boards/Bleeper-72/spi-board.h @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian diff --git a/src/boards/LoRaMote-eu868/sx1272-board.c b/src/boards/Bleeper-72/sx1272-board.c similarity index 93% rename from src/boards/LoRaMote-eu868/sx1272-board.c rename to src/boards/Bleeper-72/sx1272-board.c index ffc03aad7..9e03173b0 100644 --- a/src/boards/LoRaMote-eu868/sx1272-board.c +++ b/src/boards/Bleeper-72/sx1272-board.c @@ -29,20 +29,18 @@ const struct Radio_s Radio = { SX1272Init, SX1272GetStatus, - SX1272SetChannel, SX1272IsChannelFree, + SX1272Random, SX1272SetRxConfig, SX1272SetTxConfig, + SX1272CheckRfFrequency, SX1272GetTimeOnAir, SX1272Send, - SX1272SetSleep, SX1272SetStby, SX1272SetRx, - SX1272ReadRssi, - SX1272Write, SX1272Read, SX1272WriteBuffer, @@ -91,6 +89,11 @@ void SX1272IoDeInit( void ) GpioInit( &SX1272.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); } +uint8_t SX1272GetPaSelect( uint32_t channel ) +{ + return RF_PACONFIG_PASELECT_RFO; +} + void SX1272SetAntSwLowPower( bool status ) { if( RadioIsActive != status ) @@ -140,3 +143,9 @@ void SX1272SetAntSw( uint8_t rxTx ) GpioWrite( &AntTx, 0 ); } } + +bool SX1272CheckRfFrequency( uint32_t frequency ) +{ + // Implement check. Currently all frequencies are supportted + return true; +} diff --git a/src/boards/LoRaMote-eu868/sx1272-board.h b/src/boards/Bleeper-72/sx1272-board.h similarity index 75% rename from src/boards/LoRaMote-eu868/sx1272-board.h rename to src/boards/Bleeper-72/sx1272-board.h index 8ad79a8c1..cf5856443 100644 --- a/src/boards/LoRaMote-eu868/sx1272-board.h +++ b/src/boards/Bleeper-72/sx1272-board.h @@ -22,23 +22,21 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define RADIO_INIT_REGISTERS_VALUE \ { \ - { MODEM_FSK , REG_PACONFIG , 0x8F },\ { MODEM_FSK , REG_LNA , 0x23 },\ - { MODEM_FSK , REG_RXCONFIG , 0x0E },\ + { MODEM_FSK , REG_RXCONFIG , 0x1E },\ { MODEM_FSK , REG_RSSICONFIG , 0xD2 },\ - { MODEM_FSK , REG_OSC , 0x07 },\ { MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\ - { MODEM_FSK , REG_PREAMBLELSB , 0x08 },\ - { MODEM_FSK , REG_SYNCVALUE1 , 0x69 },\ - { MODEM_FSK , REG_SYNCVALUE2 , 0x81 },\ - { MODEM_FSK , REG_SYNCVALUE3 , 0x7E },\ - { MODEM_FSK , REG_SYNCVALUE4 , 0x96 },\ + { MODEM_FSK , REG_OSC , 0x07 },\ + { MODEM_FSK , REG_SYNCCONFIG , 0x12 },\ + { MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\ + { MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\ + { MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\ + { MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\ { MODEM_FSK , REG_FIFOTHRESH , 0x8F },\ { MODEM_FSK , REG_IMAGECAL , 0x02 },\ { MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\ { MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\ { MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\ - { MODEM_LORA, 0x31 , 0x43 },\ } \ /*! @@ -60,6 +58,14 @@ void SX1272IoIrqInit( DioIrqHandler **irqHandlers ); */ void SX1272IoDeInit( void ); +/*! + * \brief Gets the board PA selection configuration + * + * \param [IN] channel Channel frequency in Hz + * \retval PaSelect RegPaConfig PaSelect value + */ +uint8_t SX1272GetPaSelect( uint32_t channel ); + /*! * \brief Set the RF Switch I/Os pins in Low Power mode * @@ -88,6 +94,14 @@ void SX1272AntSwDeInit( void ); */ void SX1272SetAntSw( uint8_t rxTx ); +/*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ +bool SX1272CheckRfFrequency( uint32_t frequency ); + /*! * Radio hardware and global parameters */ diff --git a/src/boards/Bleeper/timer-board.c b/src/boards/Bleeper-72/timer-board.c similarity index 100% rename from src/boards/Bleeper/timer-board.c rename to src/boards/Bleeper-72/timer-board.c diff --git a/src/boards/Bleeper/timer-board.h b/src/boards/Bleeper-72/timer-board.h similarity index 100% rename from src/boards/Bleeper/timer-board.h rename to src/boards/Bleeper-72/timer-board.h diff --git a/src/boards/Bleeper-76/LoRaMac-board.h b/src/boards/Bleeper-76/LoRaMac-board.h new file mode 100644 index 000000000..e259337d7 --- /dev/null +++ b/src/boards/Bleeper-76/LoRaMac-board.h @@ -0,0 +1,158 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRa MAC layer board dependent definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __LORAMAC_BOARD_H__ +#define __LORAMAC_BOARD_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define LORA_MAX_NB_CHANNELS 16 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MIN_DATARATE DR_SF12 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MAX_DATARATE DR_FSK + +/*! + * Default datarate used by the node + */ +#define LORAMAC_DEFAULT_DATARATE DR_SF12 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM + +/*! + * Default Tx output power used by the node + */ +#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM + +/*! + * Returns individual channel mask + * + * \param[IN] channelIndex Channel index 1 based + * \retval channelMask + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * LoRaMac TxPower definition + */ +#define TX_POWER_20_DBM 0 +#define TX_POWER_14_DBM 1 +#define TX_POWER_11_DBM 2 +#define TX_POWER_08_DBM 3 +#define TX_POWER_05_DBM 4 +#define TX_POWER_02_DBM 5 + +/*! + * LoRaMac datarates definition + */ +#define DR_SF12 0 +#define DR_SF11 1 +#define DR_SF10 2 +#define DR_SF9 3 +#define DR_SF8 4 +#define DR_SF7 5 +#define DR_SF7H 6 +#define DR_FSK 7 + +/*! + * LoRaMac default channels definition + */ +#if defined( USE_BAND_433 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 434200000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 433300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 433500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 433700000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_470 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 473400000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 471300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 471500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 471700000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_868 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 865525000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 868100000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 868300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 868500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_915 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 903700000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 902700000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 902900000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 903100000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#endif // __LORAMAC_BOARD_H__ diff --git a/src/boards/Bleeper-76/board.c b/src/boards/Bleeper-76/board.c new file mode 100644 index 000000000..f8b1085bc --- /dev/null +++ b/src/boards/Bleeper-76/board.c @@ -0,0 +1,260 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Target board general functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" + +/*! + * LED GPIO pins objects + */ +Gpio_t Led1; +Gpio_t Led2; +Gpio_t Led3; + +/*! + * Hex coder selector GPIO pins objects + */ +Gpio_t Sel1; +Gpio_t Sel2; +Gpio_t Sel3; +Gpio_t Sel4; + +#if defined( USE_DEBUG_PINS ) +Gpio_t DbgPin1; +Gpio_t DbgPin2; +Gpio_t DbgPin3; +Gpio_t DbgPin4; +#endif + +I2c_t I2c; + +/*! + * Initializes the unused GPIO to a know status + */ +static void BoardUnusedIoInit( void ); + +/*! + * Flag to indicate if the MCU is Initialized + */ +static bool McuInitialized = false; + +volatile uint8_t Led3Status = 1; + +void BoardInitPeriph( void ) +{ + GpioInit( &Sel1, SEL_1, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel2, SEL_2, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel3, SEL_3, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel4, SEL_4, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, Led3Status ); + + // Init temperature, pressure and altitude sensor + MPL3115Init( ); +} + +void BoardInitMcu( void ) +{ + if( McuInitialized == false ) + { + // We use IRQ priority group 4 for the entire project + // When setting the IRQ, only the preemption priority is used + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); + + // Disable Systick + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; // Systick IRQ off + SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; // Clear SysTick Exception pending flag + + I2cInit( &I2c, I2C_SCL, I2C_SDA ); + + SpiInit( &SX1276.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); + SX1276IoInit( ); + +#if defined( USE_DEBUG_PINS ) + GpioInit( &DbgPin1, J1_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin2, J1_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin3, J1_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin4, J1_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#endif + BoardInitPeriph( ); + BoardUnusedIoInit( ); + +#ifdef LOW_POWER_MODE_ENABLE + RtcInit( ); +#else + TimerHwInit( ); +#endif + McuInitialized = true; + } +} + +void BoardDeInitMcu( void ) +{ + Gpio_t ioPin; + + I2cDeInit( &I2c ); + SpiDeInit( &SX1276.Spi ); + SX1276IoDeInit( ); + + GpioInit( &Led1, LED_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led2, LED_2, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + Led3Status = GpioRead( &Led3 ); + if( Led3Status == 1 ) + { + GpioInit( &Led3, LED_3, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + } + + GpioInit( &Sel1, SEL_1, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel2, SEL_2, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel3, SEL_3, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &Sel4, SEL_4, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + +#if ( defined( USE_DEBUG_PINS ) && !defined( LOW_POWER_MODE_ENABLE ) ) + GpioInit( &DbgPin1, J1_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin2, J1_2, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin3, J1_3, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &DbgPin4, J1_4, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#endif + + GpioInit( &ioPin, OSC_HSE_IN, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &ioPin, OSC_HSE_OUT, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &ioPin, OSC_LSE_IN, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); + GpioInit( &ioPin, OSC_LSE_OUT, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 1 ); + + McuInitialized = false; +} + +void BoardGetUniqueId( uint8_t *id ) +{ + id[0] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 24; + id[1] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 16; + id[2] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 8; + id[3] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ); + id[4] = ( ( *( uint32_t* )ID2 ) ) >> 24; + id[5] = ( ( *( uint32_t* )ID2 ) ) >> 16; + id[6] = ( ( *( uint32_t* )ID2 ) ) >> 8; + id[7] = ( ( *( uint32_t* )ID2 ) ); +} + +uint8_t BoardMeasureBatterieLevel( void ) +{ + uint8_t batteryLevel = 0; + uint8_t i, result = 0; + uint32_t tmpreg = 0; + + RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE ); + + PWR_PVDCmd( ENABLE ); // activate the voltage reference + DelayMs( 1 ); + + tmpreg = PWR->CR; // get the CR register for a read-modify-write + + for( i = 0; i <= 6; i++ ) + { + PWR->CR = ( ( tmpreg & 0xFFFFFF1F ) | ( i << 5 ) ); // set PVD level from 0 to 6 + DelayMs( 1 ); + if( PWR_GetFlagStatus( PWR_FLAG_PVDO ) == 1 ) + { + result |= 0x01 << i; // use 'result' as a bit array + } + } + PWR_PVDCmd( DISABLE ); // shut down voltage reference + + switch( result ) { // transcribe result and detect invalid codes + case 0x7F: + batteryLevel = 0x1F; // Vbat < 1.9V + break; + case 0x7E: + batteryLevel = 0x3F; // 1.9 < Vbat < 2.1 + break; + case 0x7C: + batteryLevel = 0x5F; // 2.1 < Vbat < 2.3 + break; + case 0x78: + batteryLevel = 0x7F; // 2.3 < Vbat < 2.5 + break; + case 0x70: + batteryLevel = 0x9F; // 2.5 < Vbat < 2.7 + break; + case 0x60: + batteryLevel = 0xBF; // 2.7 < Vbat < 2.9 + break; + case 0x40: + batteryLevel = 0xDF; // 2.9 < Vbat < 3.1 + break; + case 0x00: + batteryLevel = 0xFE; // Vbat > 3.1V + break; + default: + batteryLevel = 0xFF; // Fail + break; + } + return batteryLevel; +} + +static void BoardUnusedIoInit( void ) +{ + Gpio_t ioPin; + + /* Non Connected pin */ + GpioInit( &ioPin, NC_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + /* External Connector J5 */ +#if !defined( USE_DEBUG_PINS ) + GpioInit( &ioPin, J1_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J1_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J1_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J1_4, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); +#endif + + /* External Connector J2 */ + GpioInit( &ioPin, J2_2, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, J2_3, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + /* SD Card */ + GpioInit( &ioPin, NC_7, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_8, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_9, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_10, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_11, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_12, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, NC_13, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + /* USB */ + GpioInit( &ioPin, USB_DM, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, USB_DP, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + /* BOOT1 pin */ + GpioInit( &ioPin, BOOT_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + +#if defined( USE_DEBUGGER ) + DBGMCU_Config( DBGMCU_SLEEP, ENABLE ); + DBGMCU_Config( DBGMCU_STOP, ENABLE); + DBGMCU_Config( DBGMCU_STANDBY, ENABLE); +#else + DBGMCU_Config( DBGMCU_SLEEP, DISABLE ); + DBGMCU_Config( DBGMCU_STOP, DISABLE ); + DBGMCU_Config( DBGMCU_STANDBY, DISABLE ); + + GpioInit( &ioPin, JTAG_TMS, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TCK, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDI, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDO, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_NRST, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); +#endif +} diff --git a/src/boards/Bleeper-76/board.h b/src/boards/Bleeper-76/board.h new file mode 100644 index 000000000..51926f7c3 --- /dev/null +++ b/src/boards/Bleeper-76/board.h @@ -0,0 +1,200 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Target board general functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include +#include +#include +#include +#include "stm32l1xx.h" +#include "utilities.h" +#include "timer.h" +#include "delay.h" +#include "gpio.h" +#include "spi.h" +#include "i2c.h" +#include "radio.h" +#include "sx1276/sx1276.h" +#include "mpl3115.h" +#include "rtc-board.h" +#include "timer-board.h" +#include "sx1276-board.h" +#include "selector.h" + +/*! + * NULL definition + */ +#ifndef NULL + #define NULL ( ( void * )0 ) +#endif + +/*! + * Generic definition + */ +#ifndef SUCCESS +#define SUCCESS 1 +#endif + +#ifndef FAIL +#define FAIL 0 +#endif + +/*! + * Unique Devices IDs register set ( STM32L1xxx ) + */ +#define ID1 ( 0x1FF80050 ) +#define ID2 ( 0x1FF80054 ) +#define ID3 ( 0x1FF80064 ) + +/*! + * Random seed generated using the MCU Unique ID + */ +#define RAND_SEED ( ( *( uint32_t* )ID1 ) ^ \ + ( *( uint32_t* )ID2 ) ^ \ + ( *( uint32_t* )ID3 ) ) + +/*! + * Board MCU pins definitions + */ +#define LED_1 PB_9 +#define LED_2 PB_8 +#define LED_3 PB_5 + +#define RADIO_RESET PC_2 + +#define RADIO_MOSI PA_7 +#define RADIO_MISO PA_6 +#define RADIO_SCLK PA_5 +#define RADIO_NSS PA_4 + +#define RADIO_DIO_0 PA_0 +#define RADIO_DIO_1 PA_1 +#define RADIO_DIO_2 PA_2 +#define RADIO_DIO_3 PA_3 +#define RADIO_DIO_4 PC_4 +#define RADIO_DIO_5 PC_5 + +#define RADIO_ANT_SWITCH_LF PC_0 +#define RADIO_ANT_SWITCH_HF PC_1 + +#define OSC_LSE_IN PC_14 +#define OSC_LSE_OUT PC_15 + +#define OSC_HSE_IN PH_0 +#define OSC_HSE_OUT PH_1 + +#define NC_1 PC_13 +#define NC_2 PC_3 +#define NC_3 PB_1 +#define NC_4 PA_10 + +#define J1_1 PB_12 +#define J1_2 PB_15 +#define J1_3 PB_14 +#define J1_4 PB_13 + +#define J2_2 PB_7 +#define J2_3 PB_6 + +#define SEL_1 PA_8 +#define SEL_2 PA_9 +#define SEL_3 PC_6 +#define SEL_4 PC_7 + +#define USB_DM PA_11 +#define USB_DP PA_12 + +#define BOOT_1 PB_2 + +#define JTAG_TMS PA_13 +#define JTAG_TCK PA_14 +#define JTAG_TDI PA_15 +#define JTAG_TDO PB_3 +#define JTAG_NRST PB_4 + +#define NC_7 PB_0 +#define NC_8 PC_8 +#define NC_9 PC_9 +#define NC_10 PC_10 +#define NC_11 PC_11 +#define NC_12 PC_12 +#define NC_13 PD_2 + +#define I2C_SCL PB_10 +#define I2C_SDA PB_11 + +/*! + * LED GPIO pins objects + */ +extern Gpio_t Led1; +extern Gpio_t Led2; +extern Gpio_t Led3; + +/*! + * Hex coder selector GPIO pins objects + */ +extern Gpio_t Sel1; +extern Gpio_t Sel2; +extern Gpio_t Sel3; +extern Gpio_t Sel4; + +/*! + * Debug GPIO pins objects + */ +#if defined( USE_DEBUG_PINS ) +extern Gpio_t DbgPin1; +extern Gpio_t DbgPin2; +extern Gpio_t DbgPin3; +extern Gpio_t DbgPin4; +#endif + +/*! + * MCU objects + */ +extern I2c_t I2c; + +/*! + * \brief Initializes the target board peripherals. + */ +void BoardInitMcu( void ); + +/*! + * \brief Initializes the boards peripherals. + */ +void BoardInitPeriph( void ); + +/*! + * \brief De-initializes the target board peripherals to decrease power + * consumption. + */ +void BoardDeInitMcu( void ); + +/*! + * \brief Measure the Battery level + * + * \retval value battery level ( 0: very low, 254: fully charged ) + */ +uint8_t BoardMeasureBatterieLevel( void ); + +/*! + * \brief Gets the board 64 bits unique ID + * + * \param [IN] id Pointer to an array that will contain the Unique ID + */ +void BoardGetUniqueId( uint8_t *id ); + +#endif // __BOARD_H__ diff --git a/src/boards/Bleeper-76/cmsis/arm-gcc/startup_stm32l1xx_hd.s b/src/boards/Bleeper-76/cmsis/arm-gcc/startup_stm32l1xx_hd.s new file mode 100644 index 000000000..926aad7e1 --- /dev/null +++ b/src/boards/Bleeper-76/cmsis/arm-gcc/startup_stm32l1xx_hd.s @@ -0,0 +1,419 @@ +/** + ****************************************************************************** + * @file startup_stm32l1xx_hd.s + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief STM32L1xx Ultra Low Power High-density Devices vector table for + * RIDE7 toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M3 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m3 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +.equ BootRAM, 0xF108F85F +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r3, =_sidata + ldr r3, [r3, r1] + str r3, [r0, r1] + adds r1, r1, #4 + +LoopCopyDataInit: + ldr r0, =_sdata + ldr r3, =_edata + adds r2, r0, r1 + cmp r2, r3 + bcc CopyDataInit + ldr r2, =_sbss + b LoopFillZerobss +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + str r3, [r2], #4 + +LoopFillZerobss: + ldr r3, = _ebss + cmp r2, r3 + bcc FillZerobss +/* Call the clock system intitialization function.*/ + bl SystemInit +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/******************************************************************************* +* +* The minimal vector table for a Cortex M3. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +*******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word PVD_IRQHandler + .word TAMPER_STAMP_IRQHandler + .word RTC_WKUP_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word DMA1_Channel5_IRQHandler + .word DMA1_Channel6_IRQHandler + .word DMA1_Channel7_IRQHandler + .word ADC1_IRQHandler + .word USB_HP_IRQHandler + .word USB_LP_IRQHandler + .word DAC_IRQHandler + .word COMP_IRQHandler + .word EXTI9_5_IRQHandler + .word LCD_IRQHandler + .word TIM9_IRQHandler + .word TIM10_IRQHandler + .word TIM11_IRQHandler + .word TIM2_IRQHandler + .word TIM3_IRQHandler + .word TIM4_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word I2C2_EV_IRQHandler + .word I2C2_ER_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word USART3_IRQHandler + .word EXTI15_10_IRQHandler + .word RTC_Alarm_IRQHandler + .word USB_FS_WKUP_IRQHandler + .word TIM6_IRQHandler + .word TIM7_IRQHandler + .word SDIO_IRQHandler + .word TIM5_IRQHandler + .word SPI3_IRQHandler + .word UART4_IRQHandler + .word UART5_IRQHandler + .word DMA2_Channel1_IRQHandler + .word DMA2_Channel2_IRQHandler + .word DMA2_Channel3_IRQHandler + .word DMA2_Channel4_IRQHandler + .word DMA2_Channel5_IRQHandler + .word AES_IRQHandler + .word COMP_ACQ_IRQHandler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word BootRAM /* @0x108. This is for boot in RAM mode for + STM32L15x ULtra Low Power High-density devices. */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMPER_STAMP_IRQHandler + .thumb_set TAMPER_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_IRQHandler + .thumb_set DMA1_Channel2_IRQHandler,Default_Handler + + .weak DMA1_Channel3_IRQHandler + .thumb_set DMA1_Channel3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_IRQHandler + .thumb_set DMA1_Channel4_IRQHandler,Default_Handler + + .weak DMA1_Channel5_IRQHandler + .thumb_set DMA1_Channel5_IRQHandler,Default_Handler + + .weak DMA1_Channel6_IRQHandler + .thumb_set DMA1_Channel6_IRQHandler,Default_Handler + + .weak DMA1_Channel7_IRQHandler + .thumb_set DMA1_Channel7_IRQHandler,Default_Handler + + .weak ADC1_IRQHandler + .thumb_set ADC1_IRQHandler,Default_Handler + + .weak USB_HP_IRQHandler + .thumb_set USB_HP_IRQHandler,Default_Handler + + .weak USB_LP_IRQHandler + .thumb_set USB_LP_IRQHandler,Default_Handler + + .weak DAC_IRQHandler + .thumb_set DAC_IRQHandler,Default_Handler + + .weak COMP_IRQHandler + .thumb_set COMP_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak LCD_IRQHandler + .thumb_set LCD_IRQHandler,Default_Handler + + .weak TIM9_IRQHandler + .thumb_set TIM9_IRQHandler,Default_Handler + + .weak TIM10_IRQHandler + .thumb_set TIM10_IRQHandler,Default_Handler + + .weak TIM11_IRQHandler + .thumb_set TIM11_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak USB_FS_WKUP_IRQHandler + .thumb_set USB_FS_WKUP_IRQHandler,Default_Handler + + .weak TIM6_IRQHandler + .thumb_set TIM6_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak SDIO_IRQHandler + .thumb_set SDIO_IRQHandler,Default_Handler + + .weak TIM5_IRQHandler + .thumb_set TIM5_IRQHandler,Default_Handler + + .weak SPI3_IRQHandler + .thumb_set SPI3_IRQHandler,Default_Handler + + .weak UART4_IRQHandler + .thumb_set UART4_IRQHandler,Default_Handler + + .weak UART5_IRQHandler + .thumb_set UART5_IRQHandler,Default_Handler + + .weak DMA2_Channel1_IRQHandler + .thumb_set DMA2_Channel1_IRQHandler,Default_Handler + + .weak DMA2_Channel2_IRQHandler + .thumb_set DMA2_Channel2_IRQHandler,Default_Handler + + .weak DMA2_Channel3_IRQHandler + .thumb_set DMA2_Channel3_IRQHandler,Default_Handler + + .weak DMA2_Channel4_IRQHandler + .thumb_set DMA2_Channel4_IRQHandler,Default_Handler + + .weak DMA2_Channel5_IRQHandler + .thumb_set DMA2_Channel5_IRQHandler,Default_Handler + + .weak AES_IRQHandler + .thumb_set AES_IRQHandler,Default_Handler + + .weak COMP_ACQ_IRQHandler + .thumb_set COMP_ACQ_IRQHandler,Default_Handler + +/************************* (C) COPYRIGHT STMicroelectronics *****END OF FILE***/ + diff --git a/src/boards/Bleeper-76/cmsis/arm-gcc/stm32l1xx_hd_flash.ld b/src/boards/Bleeper-76/cmsis/arm-gcc/stm32l1xx_hd_flash.ld new file mode 100644 index 000000000..228fc0598 --- /dev/null +++ b/src/boards/Bleeper-76/cmsis/arm-gcc/stm32l1xx_hd_flash.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_hd Device with +** 384KByte FLASH, 48KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x2000C000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 384K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/Bleeper-76/cmsis/arm-std/startup_stm32l1xx_hd.s b/src/boards/Bleeper-76/cmsis/arm-std/startup_stm32l1xx_hd.s new file mode 100644 index 000000000..c7d1e5e4a --- /dev/null +++ b/src/boards/Bleeper-76/cmsis/arm-std/startup_stm32l1xx_hd.s @@ -0,0 +1,356 @@ +;******************** (C) COPYRIGHT 2012 STMicroelectronics ******************** +;* File Name : startup_stm32l1xx_hd.s +;* Author : MCD Application Team +;* Version : V1.1.1 +;* Date : 09-March-2012 +;* Description : STM32L1xx Ultra Low Power High-density Devices vector +;* table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_STAMP_IRQHandler ; Tamper and Time Stamp + DCD RTC_WKUP_IRQHandler ; RTC Wakeup + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_IRQHandler ; ADC1 + DCD USB_HP_IRQHandler ; USB High Priority + DCD USB_LP_IRQHandler ; USB Low Priority + DCD DAC_IRQHandler ; DAC + DCD COMP_IRQHandler ; COMP through EXTI Line + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD LCD_IRQHandler ; LCD + DCD TIM9_IRQHandler ; TIM9 + DCD TIM10_IRQHandler ; TIM10 + DCD TIM11_IRQHandler ; TIM11 + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTC_Alarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USB_FS_WKUP_IRQHandler ; USB FS Wakeup from suspend + DCD TIM6_IRQHandler ; TIM6 + DCD TIM7_IRQHandler ; TIM7 + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 + DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 + DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 + DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 + DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 + DCD AES_IRQHandler ; AES + DCD COMP_ACQ_IRQHandler ; Comparator Channel Acquisition + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler routine +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + IMPORT SystemInit + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_IRQHandler [WEAK] + EXPORT USB_HP_IRQHandler [WEAK] + EXPORT USB_LP_IRQHandler [WEAK] + EXPORT DAC_IRQHandler [WEAK] + EXPORT COMP_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT LCD_IRQHandler [WEAK] + EXPORT TIM9_IRQHandler [WEAK] + EXPORT TIM10_IRQHandler [WEAK] + EXPORT TIM11_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT USB_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM6_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT DMA2_Channel1_IRQHandler [WEAK] + EXPORT DMA2_Channel2_IRQHandler [WEAK] + EXPORT DMA2_Channel3_IRQHandler [WEAK] + EXPORT DMA2_Channel4_IRQHandler [WEAK] + EXPORT DMA2_Channel5_IRQHandler [WEAK] + EXPORT AES_IRQHandler [WEAK] + EXPORT COMP_ACQ_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_IRQHandler +USB_HP_IRQHandler +USB_LP_IRQHandler +DAC_IRQHandler +COMP_IRQHandler +EXTI9_5_IRQHandler +LCD_IRQHandler +TIM9_IRQHandler +TIM10_IRQHandler +TIM11_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +USB_FS_WKUP_IRQHandler +TIM6_IRQHandler +TIM7_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +DMA2_Channel1_IRQHandler +DMA2_Channel2_IRQHandler +DMA2_Channel3_IRQHandler +DMA2_Channel4_IRQHandler +DMA2_Channel5_IRQHandler +AES_IRQHandler +COMP_ACQ_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/src/boards/Bleeper-76/cmsis/stm32l1xx.h b/src/boards/Bleeper-76/cmsis/stm32l1xx.h new file mode 100644 index 000000000..053b6935b --- /dev/null +++ b/src/boards/Bleeper-76/cmsis/stm32l1xx.h @@ -0,0 +1,6355 @@ +/** + ****************************************************************************** + * @file stm32l1xx.h + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32L1xx High-density, Medium-density + * and Medium-density Plus devices. + * + * The file is the unique include file that the application programmer + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application + * - To use or not the peripheral’s drivers in application code(i.e. + * code will be based on direct access to peripheral’s registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral’s registers hardware + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx + * @{ + */ + +#ifndef __STM32L1XX_H +#define __STM32L1XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup Library_configuration_section + * @{ + */ + +/* Uncomment the line below according to the target STM32L device used in your + application + */ + +#if !defined (STM32L1XX_MD) && !defined (STM32L1XX_MDP) && !defined (STM32L1XX_HD) + +/* #define STM32L1XX_MD */ /*!< - Ultra Low Power Medium-density devices: STM32L151x6xx, STM32L151x8xx, + STM32L151xBxx, STM32L152x6xx, STM32L152x8xx and STM32L152xBxx. + - Ultra Low Power Medium-density Value Line devices: STM32L100x6xx, + STM32L100x8xx and STM32L100xBxx. */ + +/* #define STM32L1XX_MDP */ /*!< - Ultra Low Power Medium-density Plus devices: STM32L151xCxx, STM32L152xCxx and STM32L162xCxx + - Ultra Low Power Medium-density Plus Value Line devices: STM32L100xCxx */ + + #define STM32L1XX_HD /*!< Ultra Low Power High-density devices: STM32L151xDxx, STM32L152xDxx and STM32L162xDxx */ +#endif +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ + +#if !defined (STM32L1XX_MD) && !defined (STM32L1XX_MDP) && !defined (STM32L1XX_HD) + #error "Please select first the target STM32L1xx device used in your application (in stm32l1xx.h file)" +#endif + +#if !defined USE_STDPERIPH_DRIVER +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + #define USE_STDPERIPH_DRIVER +#endif + +/** + * @brief In the following line adjust the value of External High Speed oscillator (HSE) + used in your application + + Tip: To avoid modifying this file each time you need to use different HSE, you + can define the HSE value in your toolchain compiler preprocessor. + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */ +#endif + +/** + * @brief In the following line adjust the External High Speed oscillator (HSE) Startup + Timeout value + */ +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */ +#endif + +/** + * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup + Timeout value + */ +#if !defined (HSI_STARTUP_TIMEOUT) +#define HSI_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSI start up */ +#endif + +#if !defined (HSI_VALUE) +#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal High Speed oscillator in Hz. + The real value may vary depending on the variations + in voltage and temperature. */ +#endif + +#if !defined (LSI_VALUE) +#define LSI_VALUE ((uint32_t)37000) /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ +#endif + +#if !defined (LSE_VALUE) +#define LSE_VALUE ((uint32_t)32768) /*!< Value of the External Low Speed oscillator in Hz */ +#endif + +/** + * @brief STM32L1xx Standard Peripheral Library version number V1.2.0 + */ +#define __STM32L1XX_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L1XX_STDPERIPH_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */ +#define __STM32L1XX_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32L1XX_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L1XX_STDPERIPH_VERSION ( (__STM32L1XX_STDPERIPH_VERSION_MAIN << 24)\ + |(__STM32L1XX_STDPERIPH_VERSION_SUB1 << 16)\ + |(__STM32L1XX_STDPERIPH_VERSION_SUB2 << 8)\ + |(__STM32L1XX_STDPERIPH_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief STM32L1xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +#define __CM3_REV 0x200 /*!< Cortex-M3 Revision r2p0 */ +#define __MPU_PRESENT 1 /*!< STM32L1 provides MPU */ +#define __NVIC_PRIO_BITS 4 /*!< STM32L1 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/*!< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32L specific Interrupt Numbers ***********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and Time Stamp through EXTI Line Interrupts */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup Timer through EXTI Line Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB High Priority Interrupt */ + USB_LP_IRQn = 20, /*!< USB Low Priority Interrupt */ + DAC_IRQn = 21, /*!< DAC Interrupt */ + COMP_IRQn = 22, /*!< Comparator through EXTI Line Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + LCD_IRQn = 24, /*!< LCD Interrupt */ + TIM9_IRQn = 25, /*!< TIM9 global Interrupt */ + TIM10_IRQn = 26, /*!< TIM10 global Interrupt */ + TIM11_IRQn = 27, /*!< TIM11 global Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USB_FS_WKUP_IRQn = 42, /*!< USB FS WakeUp from suspend through EXTI Line Interrupt */ + TIM6_IRQn = 43, /*!< TIM6 global Interrupt */ +#ifdef STM32L1XX_MD + TIM7_IRQn = 44 /*!< TIM7 global Interrupt */ +#endif /* STM32L1XX_MD */ + +#ifdef STM32L1XX_MDP + TIM7_IRQn = 44, /*!< TIM7 global Interrupt */ + TIM5_IRQn = 46, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 47, /*!< SPI3 global Interrupt */ + DMA2_Channel1_IRQn = 50, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 51, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 52, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 53, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 54, /*!< DMA2 Channel 5 global Interrupt */ + AES_IRQn = 55, /*!< AES global Interrupt */ + COMP_ACQ_IRQn = 56 /*!< Comparator Channel Acquisition global Interrupt */ +#endif /* STM32L1XX_MDP */ + +#ifdef STM32L1XX_HD + TIM7_IRQn = 44, /*!< TIM7 global Interrupt */ + SDIO_IRQn = 45, /*!< SDIO global Interrupt */ + TIM5_IRQn = 46, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 47, /*!< SPI3 global Interrupt */ + UART4_IRQn = 48, /*!< UART4 global Interrupt */ + UART5_IRQn = 49, /*!< UART5 global Interrupt */ + DMA2_Channel1_IRQn = 50, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 51, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 52, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 53, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 54, /*!< DMA2 Channel 5 global Interrupt */ + AES_IRQn = 55, /*!< AES global Interrupt */ + COMP_ACQ_IRQn = 56 /*!< Comparator Channel Acquisition global Interrupt */ +#endif /* STM32L1XX_HD */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32l1xx.h" +#include + +/** @addtogroup Exported_types + * @{ + */ + +typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; + +typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/** + * @brief __RAM_FUNC definition + */ +#if defined ( __CC_ARM ) +/* ARM Compiler + ------------ + RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the 'Options for Target' + dialog. +*/ + #define __RAM_FUNC FLASH_Status + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ + #define __RAM_FUNC __ramfunc FLASH_Status + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".data")))". +*/ + #define __RAM_FUNC FLASH_Status __attribute__((section(".data"))) + +#elif defined ( __TASKING__ ) +/* TASKING Compiler + ---------------- + RAM functions are defined using a specific toolchain pragma. This pragma is + defined in the stm32l1xx_flash_ramfunc.c +*/ + #define __RAM_FUNC FLASH_Status + +#endif + +/** + * @} + */ + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */ + __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */ + __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */ + __IO uint32_t SMPR3; /*!< ADC sample time register 3, Address offset: 0x14 */ + __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x18 */ + __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x1C */ + __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x20 */ + __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x24 */ + __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x28 */ + __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x2C */ + __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC regular sequence register 4, Address offset: 0x3C */ + __IO uint32_t SQR5; /*!< ADC regular sequence register 5, Address offset: 0x40 */ + __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x44 */ + __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x48 */ + __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x4C */ + __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x50 */ + __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x54 */ + __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x58 */ + __IO uint32_t SMPR0; /*!< ADC sample time register 0, Address offset: 0x5C */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: ADC1 base address + 0x300 */ + __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ +} ADC_Common_TypeDef; + + +/** + * @brief AES hardware accelerator + */ + +typedef struct +{ + __IO uint32_t CR; /*!< AES control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< AES status register, Address offset: 0x04 */ + __IO uint32_t DINR; /*!< AES data input register, Address offset: 0x08 */ + __IO uint32_t DOUTR; /*!< AES data output register, Address offset: 0x0C */ + __IO uint32_t KEYR0; /*!< AES key register 0, Address offset: 0x10 */ + __IO uint32_t KEYR1; /*!< AES key register 1, Address offset: 0x14 */ + __IO uint32_t KEYR2; /*!< AES key register 2, Address offset: 0x18 */ + __IO uint32_t KEYR3; /*!< AES key register 3, Address offset: 0x1C */ + __IO uint32_t IVR0; /*!< AES initialization vector register 0, Address offset: 0x20 */ + __IO uint32_t IVR1; /*!< AES initialization vector register 1, Address offset: 0x24 */ + __IO uint32_t IVR2; /*!< AES initialization vector register 2, Address offset: 0x28 */ + __IO uint32_t IVR3; /*!< AES initialization vector register 3, Address offset: 0x2C */ +} AES_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP comparator control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*!< EXTI interrupt mask register, Address offset: 0x00 */ + __IO uint32_t EMR; /*!< EXTI event mask register, Address offset: 0x04 */ + __IO uint32_t RTSR; /*!< EXTI rising edge trigger selection register, Address offset: 0x08 */ + __IO uint32_t FTSR; /*!< EXTI Falling edge trigger selection register, Address offset: 0x0C */ + __IO uint32_t SWIER; /*!< EXTI software interrupt event register, Address offset: 0x10 */ + __IO uint32_t PR; /*!< EXTI pending register, Address offset: 0x14 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< Access control register, Address offset: 0x00 */ + __IO uint32_t PECR; /*!< Program/erase control register, Address offset: 0x04 */ + __IO uint32_t PDKEYR; /*!< Power down key register, Address offset: 0x08 */ + __IO uint32_t PEKEYR; /*!< Program/erase key register, Address offset: 0x0c */ + __IO uint32_t PRGKEYR; /*!< Program memory key register, Address offset: 0x10 */ + __IO uint32_t OPTKEYR; /*!< Option byte key register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x18 */ + __IO uint32_t OBR; /*!< Option byte register, Address offset: 0x1c */ + __IO uint32_t WRPR; /*!< Write protection register, Address offset: 0x20 */ + uint32_t RESERVED[23]; /*!< Reserved, 0x24 */ + __IO uint32_t WRPR1; /*!< Write protection register 1, Address offset: 0x28 */ + __IO uint32_t WRPR2; /*!< Write protection register 2, Address offset: 0x2C */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ + +typedef struct +{ + __IO uint32_t RDP; /*!< Read protection register, Address offset: 0x00 */ + __IO uint32_t USER; /*!< user register, Address offset: 0x04 */ + __IO uint32_t WRP01; /*!< write protection register 0 1, Address offset: 0x08 */ + __IO uint32_t WRP23; /*!< write protection register 2 3, Address offset: 0x0C */ + __IO uint32_t WRP45; /*!< write protection register 4 5, Address offset: 0x10 */ + __IO uint32_t WRP67; /*!< write protection register 6 7, Address offset: 0x14 */ + __IO uint32_t WRP89; /*!< write protection register 8 9, Address offset: 0x18 */ + __IO uint32_t WRP1011; /*!< write protection register 10 11, Address offset: 0x1C */ +} OB_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t LPOTR; /*!< OPAMP offset trimming register for low power mode, Address offset: 0x08 */ +} OPAMP_TypeDef; + +/** + * @brief Flexible Static Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */ +} FSMC_Bank1_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */ +} FSMC_Bank1E_TypeDef; + +/** + * @brief General Purpose IO + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint16_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + uint16_t RESERVED0; /*!< Reserved, 0x06 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint16_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + uint16_t RESERVED1; /*!< Reserved, 0x12 */ + __IO uint16_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + uint16_t RESERVED2; /*!< Reserved, 0x16 */ + __IO uint16_t BSRRL; /*!< GPIO port bit set/reset low registerBSRR, Address offset: 0x18 */ + __IO uint16_t BSRRH; /*!< GPIO port bit set/reset high registerBSRR, Address offset: 0x1A */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function low register, Address offset: 0x20-0x24 */ + __IO uint16_t BRR; /*!< GPIO bit reset register, Address offset: 0x28 */ + uint16_t RESERVED3; /*!< Reserved, 0x2A */ +} GPIO_TypeDef; + +/** + * @brief SysTem Configuration + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ +} SYSCFG_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t OAR1; /*!< I2C Own address register 1, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t OAR2; /*!< I2C Own address register 2, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t DR; /*!< I2C Data register, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t SR1; /*!< I2C Status register 1, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t SR2; /*!< I2C Status register 2, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t CCR; /*!< I2C Clock control register, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t TRISE; /*!< I2C TRISE register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + + +/** + * @brief LCD + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LCD control register, Address offset: 0x00 */ + __IO uint32_t FCR; /*!< LCD frame control register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< LCD status register, Address offset: 0x08 */ + __IO uint32_t CLR; /*!< LCD clear register, Address offset: 0x0C */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD display memory, Address offset: 0x14-0x50 */ +} LCD_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< PWR power control register, Address offset: 0x00 */ + __IO uint32_t CSR; /*!< PWR power control/status register, Address offset: 0x04 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Clock configuration register, Address offset: 0x08 */ + __IO uint32_t CIR; /*!< RCC Clock interrupt register, Address offset: 0x0C */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripheral reset register, Address offset: 0x10 */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x14 */ + __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x18 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripheral clock enable register, Address offset: 0x1C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x20 */ + __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x24 */ + __IO uint32_t AHBLPENR; /*!< RCC AHB peripheral clock enable in low power mode register, Address offset: 0x28 */ + __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x2C */ + __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x30 */ + __IO uint32_t CSR; /*!< RCC Control/status register, Address offset: 0x34 */ +} RCC_TypeDef; + +/** + * @brief Routing Interface + */ + +typedef struct +{ + __IO uint32_t ICR; /*!< RI input capture register, Address offset: 0x00 */ + __IO uint32_t ASCR1; /*!< RI analog switches control register, Address offset: 0x04 */ + __IO uint32_t ASCR2; /*!< RI analog switch control register 2, Address offset: 0x08 */ + __IO uint32_t HYSCR1; /*!< RI hysteresis control register, Address offset: 0x0C */ + __IO uint32_t HYSCR2; /*!< RI Hysteresis control register, Address offset: 0x10 */ + __IO uint32_t HYSCR3; /*!< RI Hysteresis control register, Address offset: 0x14 */ + __IO uint32_t HYSCR4; /*!< RI Hysteresis control register, Address offset: 0x18 */ +} RI_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CALIBR; /*!< RTC calibration register, Address offset: 0x18 */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RRTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAFCR; /*!< RTC tamper and alternate function configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + uint32_t RESERVED7; /*!< Reserved, 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + +/** + * @brief SD host Interface + */ + +typedef struct +{ + __IO uint32_t POWER; /*!< SDIO power control register, Address offset: 0x00 */ + __IO uint32_t CLKCR; /*!< SDI clock control register, Address offset: 0x04 */ + __IO uint32_t ARG; /*!< SDIO argument register, Address offset: 0x08 */ + __IO uint32_t CMD; /*!< SDIO command register, Address offset: 0x0C */ + __I uint32_t RESPCMD; /*!< SDIO command response register, Address offset: 0x10 */ + __I uint32_t RESP1; /*!< SDIO response 1 register, Address offset: 0x14 */ + __I uint32_t RESP2; /*!< SDIO response 2 register, Address offset: 0x18 */ + __I uint32_t RESP3; /*!< SDIO response 3 register, Address offset: 0x1C */ + __I uint32_t RESP4; /*!< SDIO response 4 register, Address offset: 0x20 */ + __IO uint32_t DTIMER; /*!< SDIO data timer register, Address offset: 0x24 */ + __IO uint32_t DLEN; /*!< SDIO data length register, Address offset: 0x28 */ + __IO uint32_t DCTRL; /*!< SDIO data control register, Address offset: 0x2C */ + __I uint32_t DCOUNT; /*!< SDIO data counter register, Address offset: 0x30 */ + __I uint32_t STA; /*!< SDIO status register, Address offset: 0x34 */ + __IO uint32_t ICR; /*!< SDIO interrupt clear register, Address offset: 0x38 */ + __IO uint32_t MASK; /*!< SDIO mask register, Address offset: 0x3C */ + uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ + __I uint32_t FIFOCNT; /*!< SDIO FIFO counter register, Address offset: 0x48 */ + uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ + __IO uint32_t FIFO; /*!< SDIO data FIFO register, Address offset: 0x80 */ +} SDIO_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< SPI control register 1 (not used in I2S mode), Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< SPI control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t SR; /*!< SPI status register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t DR; /*!< SPI data register, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t RXCRCR; /*!< SPI RX CRC register (not used in I2S mode), Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t TXCRCR; /*!< SPI TX CRC register (not used in I2S mode), Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ +} SPI_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t SR; /*!< TIM status register, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint16_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + uint16_t RESERVED10; /*!< Reserved, 0x2A */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + uint32_t RESERVED12; /*!< Reserved, 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + uint32_t RESERVED17; /*!< Reserved, 0x44 */ + __IO uint16_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + uint16_t RESERVED18; /*!< Reserved, 0x4A */ + __IO uint16_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + uint16_t RESERVED19; /*!< Reserved, 0x4E */ + __IO uint16_t OR; /*!< TIM option register, Address offset: 0x50 */ + uint16_t RESERVED20; /*!< Reserved, 0x52 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint16_t SR; /*!< USART Status register, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t DR; /*!< USART Data register, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ +} USART_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */ + +#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) +#define LCD_BASE (APB1PERIPH_BASE + 0x2400) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400) +#define COMP_BASE (APB1PERIPH_BASE + 0x7C00) +#define RI_BASE (APB1PERIPH_BASE + 0x7C04) +#define OPAMP_BASE (APB1PERIPH_BASE + 0x7C5C) + +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) +#define TIM9_BASE (APB2PERIPH_BASE + 0x0800) +#define TIM10_BASE (APB2PERIPH_BASE + 0x0C00) +#define TIM11_BASE (APB2PERIPH_BASE + 0x1000) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) +#define ADC_BASE (APB2PERIPH_BASE + 0x2700) +#define SDIO_BASE (APB2PERIPH_BASE + 0x2C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800) + +#define GPIOA_BASE (AHBPERIPH_BASE + 0x0000) +#define GPIOB_BASE (AHBPERIPH_BASE + 0x0400) +#define GPIOC_BASE (AHBPERIPH_BASE + 0x0800) +#define GPIOD_BASE (AHBPERIPH_BASE + 0x0C00) +#define GPIOE_BASE (AHBPERIPH_BASE + 0x1000) +#define GPIOH_BASE (AHBPERIPH_BASE + 0x1400) +#define GPIOF_BASE (AHBPERIPH_BASE + 0x1800) +#define GPIOG_BASE (AHBPERIPH_BASE + 0x1C00) +#define CRC_BASE (AHBPERIPH_BASE + 0x3000) +#define RCC_BASE (AHBPERIPH_BASE + 0x3800) + + +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x3C00) /*!< FLASH registers base address */ +#define OB_BASE ((uint32_t)0x1FF80000) /*!< FLASH Option Bytes base address */ + +#define DMA1_BASE (AHBPERIPH_BASE + 0x6000) +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001C) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006C) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x0080) + +#define DMA2_BASE (AHBPERIPH_BASE + 0x6400) +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001C) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058) + +#define AES_BASE ((uint32_t)0x50060000) + +#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ +#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ + +#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define LCD ((LCD_TypeDef *) LCD_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define COMP ((COMP_TypeDef *) COMP_BASE) +#define RI ((RI_TypeDef *) RI_BASE) +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) + +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC ((ADC_Common_TypeDef *) ADC_BASE) +#define SDIO ((SDIO_TypeDef *) SDIO_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) + +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) + +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) + +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) + +#define AES ((AES_TypeDef *) AES_BASE) + +#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) +#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for ADC_SR register ********************/ +#define ADC_SR_AWD ((uint32_t)0x00000001) /*!< Analog watchdog flag */ +#define ADC_SR_EOC ((uint32_t)0x00000002) /*!< End of conversion */ +#define ADC_SR_JEOC ((uint32_t)0x00000004) /*!< Injected channel end of conversion */ +#define ADC_SR_JSTRT ((uint32_t)0x00000008) /*!< Injected channel Start flag */ +#define ADC_SR_STRT ((uint32_t)0x00000010) /*!< Regular channel Start flag */ +#define ADC_SR_OVR ((uint32_t)0x00000020) /*!< Overrun flag */ +#define ADC_SR_ADONS ((uint32_t)0x00000040) /*!< ADC ON status */ +#define ADC_SR_RCNR ((uint32_t)0x00000100) /*!< Regular channel not ready flag */ +#define ADC_SR_JCNR ((uint32_t)0x00000200) /*!< Injected channel not ready flag */ + +/******************* Bit definition for ADC_CR1 register ********************/ +#define ADC_CR1_AWDCH ((uint32_t)0x0000001F) /*!< AWDCH[4:0] bits (Analog watchdog channel select bits) */ +#define ADC_CR1_AWDCH_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_CR1_AWDCH_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_CR1_AWDCH_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_CR1_AWDCH_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_CR1_AWDCH_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_CR1_EOCIE ((uint32_t)0x00000020) /*!< Interrupt enable for EOC */ +#define ADC_CR1_AWDIE ((uint32_t)0x00000040) /*!< Analog Watchdog interrupt enable */ +#define ADC_CR1_JEOCIE ((uint32_t)0x00000080) /*!< Interrupt enable for injected channels */ +#define ADC_CR1_SCAN ((uint32_t)0x00000100) /*!< Scan mode */ +#define ADC_CR1_AWDSGL ((uint32_t)0x00000200) /*!< Enable the watchdog on a single channel in scan mode */ +#define ADC_CR1_JAUTO ((uint32_t)0x00000400) /*!< Automatic injected group conversion */ +#define ADC_CR1_DISCEN ((uint32_t)0x00000800) /*!< Discontinuous mode on regular channels */ +#define ADC_CR1_JDISCEN ((uint32_t)0x00001000) /*!< Discontinuous mode on injected channels */ + +#define ADC_CR1_DISCNUM ((uint32_t)0x0000E000) /*!< DISCNUM[2:0] bits (Discontinuous mode channel count) */ +#define ADC_CR1_DISCNUM_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define ADC_CR1_DISCNUM_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define ADC_CR1_DISCNUM_2 ((uint32_t)0x00008000) /*!< Bit 2 */ + +#define ADC_CR1_PDD ((uint32_t)0x00010000) /*!< Power Down during Delay phase */ +#define ADC_CR1_PDI ((uint32_t)0x00020000) /*!< Power Down during Idle phase */ + +#define ADC_CR1_JAWDEN ((uint32_t)0x00400000) /*!< Analog watchdog enable on injected channels */ +#define ADC_CR1_AWDEN ((uint32_t)0x00800000) /*!< Analog watchdog enable on regular channels */ + +#define ADC_CR1_RES ((uint32_t)0x03000000) /*!< RES[1:0] bits (Resolution) */ +#define ADC_CR1_RES_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_CR1_RES_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define ADC_CR1_OVRIE ((uint32_t)0x04000000) /*!< Overrun interrupt enable */ + +/******************* Bit definition for ADC_CR2 register ********************/ +#define ADC_CR2_ADON ((uint32_t)0x00000001) /*!< A/D Converter ON / OFF */ +#define ADC_CR2_CONT ((uint32_t)0x00000002) /*!< Continuous Conversion */ +#define ADC_CR2_CFG ((uint32_t)0x00000004) /*!< ADC Configuration */ + +#define ADC_CR2_DELS ((uint32_t)0x00000070) /*!< DELS[2:0] bits (Delay selection) */ +#define ADC_CR2_DELS_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define ADC_CR2_DELS_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define ADC_CR2_DELS_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + +#define ADC_CR2_DMA ((uint32_t)0x00000100) /*!< Direct Memory access mode */ +#define ADC_CR2_DDS ((uint32_t)0x00000200) /*!< DMA disable selection (Single ADC) */ +#define ADC_CR2_EOCS ((uint32_t)0x00000400) /*!< End of conversion selection */ +#define ADC_CR2_ALIGN ((uint32_t)0x00000800) /*!< Data Alignment */ + +#define ADC_CR2_JEXTSEL ((uint32_t)0x000F0000) /*!< JEXTSEL[3:0] bits (External event select for injected group) */ +#define ADC_CR2_JEXTSEL_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CR2_JEXTSEL_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CR2_JEXTSEL_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define ADC_CR2_JEXTSEL_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define ADC_CR2_JEXTEN ((uint32_t)0x00300000) /*!< JEXTEN[1:0] bits (External Trigger Conversion mode for injected channels) */ +#define ADC_CR2_JEXTEN_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_CR2_JEXTEN_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define ADC_CR2_JSWSTART ((uint32_t)0x00400000) /*!< Start Conversion of injected channels */ + +#define ADC_CR2_EXTSEL ((uint32_t)0x0F000000) /*!< EXTSEL[3:0] bits (External Event Select for regular group) */ +#define ADC_CR2_EXTSEL_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_CR2_EXTSEL_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_CR2_EXTSEL_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define ADC_CR2_EXTSEL_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define ADC_CR2_EXTEN ((uint32_t)0x30000000) /*!< EXTEN[1:0] bits (External Trigger Conversion mode for regular channels) */ +#define ADC_CR2_EXTEN_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define ADC_CR2_EXTEN_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define ADC_CR2_SWSTART ((uint32_t)0x40000000) /*!< Start Conversion of regular channels */ + +/****************** Bit definition for ADC_SMPR1 register *******************/ +#define ADC_SMPR1_SMP20 ((uint32_t)0x00000007) /*!< SMP20[2:0] bits (Channel 20 Sample time selection) */ +#define ADC_SMPR1_SMP20_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR1_SMP20_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR1_SMP20_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP21 ((uint32_t)0x00000038) /*!< SMP21[2:0] bits (Channel 21 Sample time selection) */ +#define ADC_SMPR1_SMP21_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR1_SMP21_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR1_SMP21_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP22 ((uint32_t)0x000001C0) /*!< SMP22[2:0] bits (Channel 22 Sample time selection) */ +#define ADC_SMPR1_SMP22_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR1_SMP22_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR1_SMP22_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP23 ((uint32_t)0x00000E00) /*!< SMP23[2:0] bits (Channel 23 Sample time selection) */ +#define ADC_SMPR1_SMP23_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR1_SMP23_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR1_SMP23_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP24 ((uint32_t)0x00007000) /*!< SMP24[2:0] bits (Channel 24 Sample time selection) */ +#define ADC_SMPR1_SMP24_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP24_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP24_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP25 ((uint32_t)0x00038000) /*!< SMP25[2:0] bits (Channel 25 Sample time selection) */ +#define ADC_SMPR1_SMP25_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP25_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP25_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP26 ((uint32_t)0x001C0000) /*!< SMP26[2:0] bits (Channel 26 Sample time selection) */ +#define ADC_SMPR1_SMP26_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP26_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP26_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP27 ((uint32_t)0x00E00000) /*!< SMP27[2:0] bits (Channel 27 Sample time selection) */ +#define ADC_SMPR1_SMP27_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP27_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP27_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP28 ((uint32_t)0x07000000) /*!< SMP28[2:0] bits (Channel 28 Sample time selection) */ +#define ADC_SMPR1_SMP28_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP28_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP28_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP29 ((uint32_t)0x38000000) /*!< SMP29[2:0] bits (Channel 29 Sample time selection) */ +#define ADC_SMPR1_SMP29_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP29_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP29_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR2 register *******************/ +#define ADC_SMPR2_SMP10 ((uint32_t)0x00000007) /*!< SMP10[2:0] bits (Channel 10 Sample time selection) */ +#define ADC_SMPR2_SMP10_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR2_SMP10_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR2_SMP10_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP11 ((uint32_t)0x00000038) /*!< SMP11[2:0] bits (Channel 11 Sample time selection) */ +#define ADC_SMPR2_SMP11_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR2_SMP11_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR2_SMP11_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP12 ((uint32_t)0x000001C0) /*!< SMP12[2:0] bits (Channel 12 Sample time selection) */ +#define ADC_SMPR2_SMP12_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR2_SMP12_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR2_SMP12_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP13 ((uint32_t)0x00000E00) /*!< SMP13[2:0] bits (Channel 13 Sample time selection) */ +#define ADC_SMPR2_SMP13_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR2_SMP13_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR2_SMP13_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP14 ((uint32_t)0x00007000) /*!< SMP14[2:0] bits (Channel 14 Sample time selection) */ +#define ADC_SMPR2_SMP14_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP14_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP14_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP15 ((uint32_t)0x00038000) /*!< SMP15[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR2_SMP15_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP15_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP15_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP16 ((uint32_t)0x001C0000) /*!< SMP16[2:0] bits (Channel 16 Sample time selection) */ +#define ADC_SMPR2_SMP16_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP16_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP16_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP17 ((uint32_t)0x00E00000) /*!< SMP17[2:0] bits (Channel 17 Sample time selection) */ +#define ADC_SMPR2_SMP17_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP17_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP17_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP18 ((uint32_t)0x07000000) /*!< SMP18[2:0] bits (Channel 18 Sample time selection) */ +#define ADC_SMPR2_SMP18_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP18_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP18_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP19 ((uint32_t)0x38000000) /*!< SMP19[2:0] bits (Channel 19 Sample time selection) */ +#define ADC_SMPR2_SMP19_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP19_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP19_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR3 register *******************/ +#define ADC_SMPR3_SMP0 ((uint32_t)0x00000007) /*!< SMP0[2:0] bits (Channel 0 Sample time selection) */ +#define ADC_SMPR3_SMP0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR3_SMP0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR3_SMP0_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP1 ((uint32_t)0x00000038) /*!< SMP1[2:0] bits (Channel 1 Sample time selection) */ +#define ADC_SMPR3_SMP1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR3_SMP1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR3_SMP1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP2 ((uint32_t)0x000001C0) /*!< SMP2[2:0] bits (Channel 2 Sample time selection) */ +#define ADC_SMPR3_SMP2_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR3_SMP2_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR3_SMP2_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP3 ((uint32_t)0x00000E00) /*!< SMP3[2:0] bits (Channel 3 Sample time selection) */ +#define ADC_SMPR3_SMP3_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR3_SMP3_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR3_SMP3_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP4 ((uint32_t)0x00007000) /*!< SMP4[2:0] bits (Channel 4 Sample time selection) */ +#define ADC_SMPR3_SMP4_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP4_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP4_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP5 ((uint32_t)0x00038000) /*!< SMP5[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR3_SMP5_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP5_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP5_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP6 ((uint32_t)0x001C0000) /*!< SMP6[2:0] bits (Channel 6 Sample time selection) */ +#define ADC_SMPR3_SMP6_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP6_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP6_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP7 ((uint32_t)0x00E00000) /*!< SMP7[2:0] bits (Channel 7 Sample time selection) */ +#define ADC_SMPR3_SMP7_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP7_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP7_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP8 ((uint32_t)0x07000000) /*!< SMP8[2:0] bits (Channel 8 Sample time selection) */ +#define ADC_SMPR3_SMP8_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP8_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP8_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP9 ((uint32_t)0x38000000) /*!< SMP9[2:0] bits (Channel 9 Sample time selection) */ +#define ADC_SMPR3_SMP9_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP9_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP9_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_JOFR1 register *******************/ +#define ADC_JOFR1_JOFFSET1 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 1 */ + +/****************** Bit definition for ADC_JOFR2 register *******************/ +#define ADC_JOFR2_JOFFSET2 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 2 */ + +/****************** Bit definition for ADC_JOFR3 register *******************/ +#define ADC_JOFR3_JOFFSET3 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 3 */ + +/****************** Bit definition for ADC_JOFR4 register *******************/ +#define ADC_JOFR4_JOFFSET4 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 4 */ + +/******************* Bit definition for ADC_HTR register ********************/ +#define ADC_HTR_HT ((uint32_t)0x00000FFF) /*!< Analog watchdog high threshold */ + +/******************* Bit definition for ADC_LTR register ********************/ +#define ADC_LTR_LT ((uint32_t)0x00000FFF) /*!< Analog watchdog low threshold */ + +/******************* Bit definition for ADC_SQR1 register *******************/ +#define ADC_SQR1_L ((uint32_t)0x00F00000) /*!< L[3:0] bits (Regular channel sequence length) */ +#define ADC_SQR1_L_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR1_L_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR1_L_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR1_L_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define ADC_SQR1_SQ28 ((uint32_t)0x000F8000) /*!< SQ28[4:0] bits (25th conversion in regular sequence) */ +#define ADC_SQR1_SQ28_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR1_SQ28_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR1_SQ28_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR1_SQ28_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR1_SQ28_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ27 ((uint32_t)0x00007C00) /*!< SQ27[4:0] bits (27th conversion in regular sequence) */ +#define ADC_SQR1_SQ27_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR1_SQ27_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR1_SQ27_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR1_SQ27_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR1_SQ27_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ26 ((uint32_t)0x000003E0) /*!< SQ26[4:0] bits (26th conversion in regular sequence) */ +#define ADC_SQR1_SQ26_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR1_SQ26_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR1_SQ26_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR1_SQ26_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR1_SQ26_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR1_SQ25 ((uint32_t)0x0000001F) /*!< SQ25[4:0] bits (25th conversion in regular sequence) */ +#define ADC_SQR1_SQ25_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR1_SQ25_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR1_SQ25_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR1_SQ25_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR1_SQ25_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR2 register *******************/ +#define ADC_SQR2_SQ19 ((uint32_t)0x0000001F) /*!< SQ19[4:0] bits (19th conversion in regular sequence) */ +#define ADC_SQR2_SQ19_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR2_SQ19_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR2_SQ19_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR2_SQ19_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR2_SQ19_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR2_SQ20 ((uint32_t)0x000003E0) /*!< SQ20[4:0] bits (20th conversion in regular sequence) */ +#define ADC_SQR2_SQ20_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR2_SQ20_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR2_SQ20_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR2_SQ20_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR2_SQ20_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR2_SQ21 ((uint32_t)0x00007C00) /*!< SQ21[4:0] bits (21th conversion in regular sequence) */ +#define ADC_SQR2_SQ21_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR2_SQ21_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR2_SQ21_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR2_SQ21_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR2_SQ21_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ22 ((uint32_t)0x000F8000) /*!< SQ22[4:0] bits (22th conversion in regular sequence) */ +#define ADC_SQR2_SQ22_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR2_SQ22_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR2_SQ22_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR2_SQ22_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR2_SQ22_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ23 ((uint32_t)0x01F00000) /*!< SQ23[4:0] bits (23th conversion in regular sequence) */ +#define ADC_SQR2_SQ23_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR2_SQ23_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR2_SQ23_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR2_SQ23_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR2_SQ23_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ24 ((uint32_t)0x3E000000) /*!< SQ24[4:0] bits (24th conversion in regular sequence) */ +#define ADC_SQR2_SQ24_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR2_SQ24_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR2_SQ24_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR2_SQ24_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR2_SQ24_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR3 register *******************/ +#define ADC_SQR3_SQ13 ((uint32_t)0x0000001F) /*!< SQ13[4:0] bits (13th conversion in regular sequence) */ +#define ADC_SQR3_SQ13_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR3_SQ13_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR3_SQ13_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR3_SQ13_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR3_SQ13_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR3_SQ14 ((uint32_t)0x000003E0) /*!< SQ14[4:0] bits (14th conversion in regular sequence) */ +#define ADC_SQR3_SQ14_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR3_SQ14_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR3_SQ14_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR3_SQ14_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR3_SQ14_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR3_SQ15 ((uint32_t)0x00007C00) /*!< SQ15[4:0] bits (15th conversion in regular sequence) */ +#define ADC_SQR3_SQ15_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR3_SQ15_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR3_SQ15_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR3_SQ15_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR3_SQ15_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ16 ((uint32_t)0x000F8000) /*!< SQ16[4:0] bits (16th conversion in regular sequence) */ +#define ADC_SQR3_SQ16_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR3_SQ16_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR3_SQ16_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR3_SQ16_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR3_SQ16_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ17 ((uint32_t)0x01F00000) /*!< SQ17[4:0] bits (17th conversion in regular sequence) */ +#define ADC_SQR3_SQ17_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR3_SQ17_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR3_SQ17_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR3_SQ17_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR3_SQ17_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ18 ((uint32_t)0x3E000000) /*!< SQ18[4:0] bits (18th conversion in regular sequence) */ +#define ADC_SQR3_SQ18_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR3_SQ18_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR3_SQ18_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR3_SQ18_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR3_SQ18_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR4 register *******************/ +#define ADC_SQR4_SQ7 ((uint32_t)0x0000001F) /*!< SQ7[4:0] bits (7th conversion in regular sequence) */ +#define ADC_SQR4_SQ7_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR4_SQ7_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR4_SQ7_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR4_SQ7_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR4_SQ7_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR4_SQ8 ((uint32_t)0x000003E0) /*!< SQ8[4:0] bits (8th conversion in regular sequence) */ +#define ADC_SQR4_SQ8_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR4_SQ8_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR4_SQ8_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR4_SQ8_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR4_SQ8_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR4_SQ9 ((uint32_t)0x00007C00) /*!< SQ9[4:0] bits (9th conversion in regular sequence) */ +#define ADC_SQR4_SQ9_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR4_SQ9_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR4_SQ9_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR4_SQ9_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR4_SQ9_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ10 ((uint32_t)0x000F8000) /*!< SQ10[4:0] bits (10th conversion in regular sequence) */ +#define ADC_SQR4_SQ10_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR4_SQ10_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR4_SQ10_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR4_SQ10_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR4_SQ10_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ11 ((uint32_t)0x01F00000) /*!< SQ11[4:0] bits (11th conversion in regular sequence) */ +#define ADC_SQR4_SQ11_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR4_SQ11_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR4_SQ11_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR4_SQ11_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR4_SQ11_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ12 ((uint32_t)0x3E000000) /*!< SQ12[4:0] bits (12th conversion in regular sequence) */ +#define ADC_SQR4_SQ12_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR4_SQ12_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR4_SQ12_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR4_SQ12_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR4_SQ12_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR5 register *******************/ +#define ADC_SQR5_SQ1 ((uint32_t)0x0000001F) /*!< SQ1[4:0] bits (1st conversion in regular sequence) */ +#define ADC_SQR5_SQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR5_SQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR5_SQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR5_SQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR5_SQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR5_SQ2 ((uint32_t)0x000003E0) /*!< SQ2[4:0] bits (2nd conversion in regular sequence) */ +#define ADC_SQR5_SQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR5_SQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR5_SQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR5_SQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR5_SQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR5_SQ3 ((uint32_t)0x00007C00) /*!< SQ3[4:0] bits (3rd conversion in regular sequence) */ +#define ADC_SQR5_SQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR5_SQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR5_SQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR5_SQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR5_SQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ4 ((uint32_t)0x000F8000) /*!< SQ4[4:0] bits (4th conversion in regular sequence) */ +#define ADC_SQR5_SQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR5_SQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR5_SQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR5_SQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR5_SQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ5 ((uint32_t)0x01F00000) /*!< SQ5[4:0] bits (5th conversion in regular sequence) */ +#define ADC_SQR5_SQ5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR5_SQ5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR5_SQ5_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR5_SQ5_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR5_SQ5_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ6 ((uint32_t)0x3E000000) /*!< SQ6[4:0] bits (6th conversion in regular sequence) */ +#define ADC_SQR5_SQ6_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR5_SQ6_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR5_SQ6_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR5_SQ6_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR5_SQ6_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + + +/******************* Bit definition for ADC_JSQR register *******************/ +#define ADC_JSQR_JSQ1 ((uint32_t)0x0000001F) /*!< JSQ1[4:0] bits (1st conversion in injected sequence) */ +#define ADC_JSQR_JSQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_JSQR_JSQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_JSQR_JSQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_JSQR_JSQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_JSQR_JSQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ2 ((uint32_t)0x000003E0) /*!< JSQ2[4:0] bits (2nd conversion in injected sequence) */ +#define ADC_JSQR_JSQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_JSQR_JSQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_JSQR_JSQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_JSQR_JSQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_JSQR_JSQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ3 ((uint32_t)0x00007C00) /*!< JSQ3[4:0] bits (3rd conversion in injected sequence) */ +#define ADC_JSQR_JSQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_JSQR_JSQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_JSQR_JSQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ4 ((uint32_t)0x000F8000) /*!< JSQ4[4:0] bits (4th conversion in injected sequence) */ +#define ADC_JSQR_JSQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_JSQR_JSQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_JSQR_JSQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_JSQR_JL ((uint32_t)0x00300000) /*!< JL[1:0] bits (Injected Sequence length) */ +#define ADC_JSQR_JL_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_JSQR_JL_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +/******************* Bit definition for ADC_JDR1 register *******************/ +#define ADC_JDR1_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR2 register *******************/ +#define ADC_JDR2_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR3 register *******************/ +#define ADC_JDR3_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR4 register *******************/ +#define ADC_JDR4_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA ((uint32_t)0x0000FFFF) /*!< Regular data */ + +/****************** Bit definition for ADC_SMPR0 register *******************/ +#define ADC_SMPR3_SMP30 ((uint32_t)0x00000007) /*!< SMP30[2:0] bits (Channel 30 Sample time selection) */ +#define ADC_SMPR3_SMP30_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR3_SMP30_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR3_SMP30_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP31 ((uint32_t)0x00000038) /*!< SMP31[2:0] bits (Channel 31 Sample time selection) */ +#define ADC_SMPR3_SMP31_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR3_SMP31_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR3_SMP31_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +/******************* Bit definition for ADC_CSR register ********************/ +#define ADC_CSR_AWD1 ((uint32_t)0x00000001) /*!< ADC1 Analog watchdog flag */ +#define ADC_CSR_EOC1 ((uint32_t)0x00000002) /*!< ADC1 End of conversion */ +#define ADC_CSR_JEOC1 ((uint32_t)0x00000004) /*!< ADC1 Injected channel end of conversion */ +#define ADC_CSR_JSTRT1 ((uint32_t)0x00000008) /*!< ADC1 Injected channel Start flag */ +#define ADC_CSR_STRT1 ((uint32_t)0x00000010) /*!< ADC1 Regular channel Start flag */ +#define ADC_CSR_OVR1 ((uint32_t)0x00000020) /*!< ADC1 overrun flag */ +#define ADC_CSR_ADONS1 ((uint32_t)0x00000040) /*!< ADON status of ADC1 */ + +/******************* Bit definition for ADC_CCR register ********************/ +#define ADC_CCR_ADCPRE ((uint32_t)0x00030000) /*!< ADC prescaler*/ +#define ADC_CCR_ADCPRE_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CCR_ADCPRE_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CCR_TSVREFE ((uint32_t)0x00800000) /*!< Temperature Sensor and VREFINT Enable */ + +/******************************************************************************/ +/* */ +/* Advanced Encryption Standard (AES) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for AES_CR register *********************/ +#define AES_CR_EN ((uint32_t)0x00000001) /*!< AES Enable */ +#define AES_CR_DATATYPE ((uint32_t)0x00000006) /*!< Data type selection */ +#define AES_CR_DATATYPE_0 ((uint32_t)0x00000002) /*!< Bit 0 */ +#define AES_CR_DATATYPE_1 ((uint32_t)0x00000004) /*!< Bit 1 */ + +#define AES_CR_MODE ((uint32_t)0x00000018) /*!< AES Mode Of Operation */ +#define AES_CR_MODE_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define AES_CR_MODE_1 ((uint32_t)0x00000010) /*!< Bit 1 */ + +#define AES_CR_CHMOD ((uint32_t)0x00000060) /*!< AES Chaining Mode */ +#define AES_CR_CHMOD_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define AES_CR_CHMOD_1 ((uint32_t)0x00000040) /*!< Bit 1 */ + +#define AES_CR_CCFC ((uint32_t)0x00000080) /*!< Computation Complete Flag Clear */ +#define AES_CR_ERRC ((uint32_t)0x00000100) /*!< Error Clear */ +#define AES_CR_CCIE ((uint32_t)0x00000200) /*!< Computation Complete Interrupt Enable */ +#define AES_CR_ERRIE ((uint32_t)0x00000400) /*!< Error Interrupt Enable */ +#define AES_CR_DMAINEN ((uint32_t)0x00000800) /*!< DMA ENable managing the data input phase */ +#define AES_CR_DMAOUTEN ((uint32_t)0x00001000) /*!< DMA Enable managing the data output phase */ + +/******************* Bit definition for AES_SR register *********************/ +#define AES_SR_CCF ((uint32_t)0x00000001) /*!< Computation Complete Flag */ +#define AES_SR_RDERR ((uint32_t)0x00000002) /*!< Read Error Flag */ +#define AES_SR_WRERR ((uint32_t)0x00000004) /*!< Write Error Flag */ + +/******************* Bit definition for AES_DINR register *******************/ +#define AES_DINR ((uint32_t)0x0000FFFF) /*!< AES Data Input Register */ + +/******************* Bit definition for AES_DOUTR register ******************/ +#define AES_DOUTR ((uint32_t)0x0000FFFF) /*!< AES Data Output Register */ + +/******************* Bit definition for AES_KEYR0 register ******************/ +#define AES_KEYR0 ((uint32_t)0x0000FFFF) /*!< AES Key Register 0 */ + +/******************* Bit definition for AES_KEYR1 register ******************/ +#define AES_KEYR1 ((uint32_t)0x0000FFFF) /*!< AES Key Register 1 */ + +/******************* Bit definition for AES_KEYR2 register ******************/ +#define AES_KEYR2 ((uint32_t)0x0000FFFF) /*!< AES Key Register 2 */ + +/******************* Bit definition for AES_KEYR3 register ******************/ +#define AES_KEYR3 ((uint32_t)0x0000FFFF) /*!< AES Key Register 3 */ + +/******************* Bit definition for AES_IVR0 register *******************/ +#define AES_IVR0 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 0 */ + +/******************* Bit definition for AES_IVR1 register *******************/ +#define AES_IVR1 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 1 */ + +/******************* Bit definition for AES_IVR2 register *******************/ +#define AES_IVR2 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 2 */ + +/******************* Bit definition for AES_IVR3 register *******************/ +#define AES_IVR3 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 3 */ + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for COMP_CSR register ********************/ +#define COMP_CSR_10KPU ((uint32_t)0x00000001) /*!< 10K pull-up resistor */ +#define COMP_CSR_400KPU ((uint32_t)0x00000002) /*!< 400K pull-up resistor */ +#define COMP_CSR_10KPD ((uint32_t)0x00000004) /*!< 10K pull-down resistor */ +#define COMP_CSR_400KPD ((uint32_t)0x00000008) /*!< 400K pull-down resistor */ + +#define COMP_CSR_CMP1EN ((uint32_t)0x00000010) /*!< Comparator 1 enable */ +#define COMP_CSR_SW1 ((uint32_t)0x00000020) /*!< SW1 analog switch enable */ +#define COMP_CSR_CMP1OUT ((uint32_t)0x00000080) /*!< Comparator 1 output */ + +#define COMP_CSR_SPEED ((uint32_t)0x00001000) /*!< Comparator 2 speed */ +#define COMP_CSR_CMP2OUT ((uint32_t)0x00002000) /*!< Comparator 2 ouput */ + +#define COMP_CSR_VREFOUTEN ((uint32_t)0x00010000) /*!< Comparator Vref Enable */ +#define COMP_CSR_WNDWE ((uint32_t)0x00020000) /*!< Window mode enable */ + +#define COMP_CSR_INSEL ((uint32_t)0x001C0000) /*!< INSEL[2:0] Inversion input Selection */ +#define COMP_CSR_INSEL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define COMP_CSR_INSEL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define COMP_CSR_INSEL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define COMP_CSR_OUTSEL ((uint32_t)0x00E00000) /*!< OUTSEL[2:0] comparator 2 output redirection */ +#define COMP_CSR_OUTSEL_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define COMP_CSR_OUTSEL_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define COMP_CSR_OUTSEL_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define COMP_CSR_FCH3 ((uint32_t)0x04000000) /*!< Bit 26 */ +#define COMP_CSR_FCH8 ((uint32_t)0x08000000) /*!< Bit 27 */ +#define COMP_CSR_RCH13 ((uint32_t)0x10000000) /*!< Bit 28 */ + +#define COMP_CSR_CAIE ((uint32_t)0x20000000) /*!< Bit 29 */ +#define COMP_CSR_CAIF ((uint32_t)0x40000000) /*!< Bit 30 */ +#define COMP_CSR_TSUSP ((uint32_t)0x80000000) /*!< Bit 31 */ + +/******************************************************************************/ +/* */ +/* Operational Amplifier (OPAMP) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for OPAMP_CSR register ******************/ +#define OPAMP_CSR_OPA1PD ((uint32_t)0x00000001) /*!< OPAMP1 disable */ +#define OPAMP_CSR_S3SEL1 ((uint32_t)0x00000002) /*!< Switch 3 for OPAMP1 Enable */ +#define OPAMP_CSR_S4SEL1 ((uint32_t)0x00000004) /*!< Switch 4 for OPAMP1 Enable */ +#define OPAMP_CSR_S5SEL1 ((uint32_t)0x00000008) /*!< Switch 5 for OPAMP1 Enable */ +#define OPAMP_CSR_S6SEL1 ((uint32_t)0x00000010) /*!< Switch 6 for OPAMP1 Enable */ +#define OPAMP_CSR_OPA1CAL_L ((uint32_t)0x00000020) /*!< OPAMP1 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA1CAL_H ((uint32_t)0x00000040) /*!< OPAMP1 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA1LPM ((uint32_t)0x00000080) /*!< OPAMP1 Low power enable */ +#define OPAMP_CSR_OPA2PD ((uint32_t)0x00000100) /*!< OPAMP2 disable */ +#define OPAMP_CSR_S3SEL2 ((uint32_t)0x00000200) /*!< Switch 3 for OPAMP2 Enable */ +#define OPAMP_CSR_S4SEL2 ((uint32_t)0x00000400) /*!< Switch 4 for OPAMP2 Enable */ +#define OPAMP_CSR_S5SEL2 ((uint32_t)0x00000800) /*!< Switch 5 for OPAMP2 Enable */ +#define OPAMP_CSR_S6SEL2 ((uint32_t)0x00001000) /*!< Switch 6 for OPAMP2 Enable */ +#define OPAMP_CSR_OPA2CAL_L ((uint32_t)0x00002000) /*!< OPAMP2 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA2CAL_H ((uint32_t)0x00004000) /*!< OPAMP2 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA2LPM ((uint32_t)0x00008000) /*!< OPAMP2 Low power enable */ +#define OPAMP_CSR_OPA3PD ((uint32_t)0x00010000) /*!< OPAMP3 disable */ +#define OPAMP_CSR_S3SEL3 ((uint32_t)0x00020000) /*!< Switch 3 for OPAMP3 Enable */ +#define OPAMP_CSR_S4SEL3 ((uint32_t)0x00040000) /*!< Switch 4 for OPAMP3 Enable */ +#define OPAMP_CSR_S5SEL3 ((uint32_t)0x00080000) /*!< Switch 5 for OPAMP3 Enable */ +#define OPAMP_CSR_S6SEL3 ((uint32_t)0x00100000) /*!< Switch 6 for OPAMP3 Enable */ +#define OPAMP_CSR_OPA3CAL_L ((uint32_t)0x00200000) /*!< OPAMP3 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA3CAL_H ((uint32_t)0x00400000) /*!< OPAMP3 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA3LPM ((uint32_t)0x00800000) /*!< OPAMP3 Low power enable */ +#define OPAMP_CSR_ANAWSEL1 ((uint32_t)0x01000000) /*!< Switch ANA Enable for OPAMP1 */ +#define OPAMP_CSR_ANAWSEL2 ((uint32_t)0x02000000) /*!< Switch ANA Enable for OPAMP2 */ +#define OPAMP_CSR_ANAWSEL3 ((uint32_t)0x04000000) /*!< Switch ANA Enable for OPAMP3 */ +#define OPAMP_CSR_S7SEL2 ((uint32_t)0x08000000) /*!< Switch 7 for OPAMP2 Enable */ +#define OPAMP_CSR_AOP_RANGE ((uint32_t)0x10000000) /*!< Power range selection */ +#define OPAMP_CSR_OPA1CALOUT ((uint32_t)0x20000000) /*!< OPAMP1 calibration output */ +#define OPAMP_CSR_OPA2CALOUT ((uint32_t)0x40000000) /*!< OPAMP2 calibration output */ +#define OPAMP_CSR_OPA3CALOUT ((uint32_t)0x80000000) /*!< OPAMP3 calibration output */ + +/******************* Bit definition for OPAMP_OTR register ******************/ +#define OPAMP_OTR_AO1_OPT_OFFSET_TRIM ((uint32_t)0x000003FF) /*!< Offset trim for OPAMP1 */ +#define OPAMP_OTR_AO2_OPT_OFFSET_TRIM ((uint32_t)0x000FFC00) /*!< Offset trim for OPAMP2 */ +#define OPAMP_OTR_AO3_OPT_OFFSET_TRIM ((uint32_t)0x3FF00000) /*!< Offset trim for OPAMP2 */ +#define OPAMP_OTR_OT_USER ((uint32_t)0x80000000) /*!< Switch to OPAMP offset user trimmed values */ + +/******************* Bit definition for OPAMP_LPOTR register ****************/ +#define OPAMP_LP_OTR_AO1_OPT_OFFSET_TRIM_LP ((uint32_t)0x000003FF) /*!< Offset trim in low power for OPAMP1 */ +#define OPAMP_LP_OTR_AO2_OPT_OFFSET_TRIM_LP ((uint32_t)0x000FFC00) /*!< Offset trim in low power for OPAMP2 */ +#define OPAMP_LP_OTR_AO3_OPT_OFFSET_TRIM_LP ((uint32_t)0x3FF00000) /*!< Offset trim in low power for OPAMP3 */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET ((uint32_t)0x00000001) /*!< RESET bit */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter (DAC) */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1 ((uint32_t)0x00000001) /*!
© COPYRIGHT 2013 STMicroelectronics
+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx_system + * @{ + */ + +/** @addtogroup STM32L1xx_System_Private_Includes + * @{ + */ + +#include "stm32l1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Defines + * @{ + */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Variables + * @{ + */ +uint32_t SystemCoreClock = 32000000; +__I uint8_t PLLMulTable[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48}; +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /*!< Set MSION bit */ + RCC->CR |= (uint32_t)0x00000100; + + /*!< Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], MCOSEL[2:0] and MCOPRE[2:0] bits */ + RCC->CFGR &= (uint32_t)0x88FFC00C; + + /*!< Reset HSION, HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xEEFEFFFE; + + /*!< Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /*!< Reset PLLSRC, PLLMUL[3:0] and PLLDIV[1:0] bits */ + RCC->CFGR &= (uint32_t)0xFF02FFFF; + + /*!< Disable all interrupts */ + RCC->CIR = 0x00000000; + + /* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock according to Clock Register Values + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI + * value as defined by the MSI range. + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32l1xx.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32l1xx.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmul = 0, plldiv = 0, pllsource = 0, msirange = 0; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + case 0x04: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x08: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x0C: /* PLL used as system clock */ + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmul = RCC->CFGR & RCC_CFGR_PLLMUL; + plldiv = RCC->CFGR & RCC_CFGR_PLLDIV; + pllmul = PLLMulTable[(pllmul >> 18)]; + plldiv = (plldiv >> 22) + 1; + + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + + if (pllsource == 0x00) + { + /* HSI oscillator clock selected as PLL clock entry */ + SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv); + } + else + { + /* HSE selected as PLL clock entry */ + SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv); + } + break; + default: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, AHB/APBx prescalers and Flash + * settings. + * @note This function should be called only once the RCC clock configuration + * is reset to the default reset state (done in SystemInit() function). + * @param None + * @retval None + */ +static void SetSysClock(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable 64-bit access */ + FLASH->ACR |= FLASH_ACR_ACC64; + + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTEN; + + /* Flash 1 wait state */ + FLASH->ACR |= FLASH_ACR_LATENCY; + + /* Power enable */ + RCC->APB1ENR |= RCC_APB1ENR_PWREN; + + /* Select the Voltage Range 1 (1.8 V) */ + PWR->CR = PWR_CR_VOS_0; + + /* Wait Until the Voltage Regulator is ready */ + while((PWR->CSR & PWR_CSR_VOSF) != RESET) + { + } + + /* HCLK = SYSCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* PLL configuration */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | + RCC_CFGR_PLLDIV)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV3); + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote-eu868/cmsis/system_stm32l1xx.h b/src/boards/Bleeper-76/cmsis/system_stm32l1xx.h similarity index 100% rename from src/boards/LoRaMote-eu868/cmsis/system_stm32l1xx.h rename to src/boards/Bleeper-76/cmsis/system_stm32l1xx.h diff --git a/src/boards/LoRaMote-eu868/gpio-board.c b/src/boards/Bleeper-76/gpio-board.c similarity index 97% rename from src/boards/LoRaMote-eu868/gpio-board.c rename to src/boards/Bleeper-76/gpio-board.c index a387bf5e9..72802a517 100644 --- a/src/boards/LoRaMote-eu868/gpio-board.c +++ b/src/boards/Bleeper-76/gpio-board.c @@ -200,7 +200,9 @@ uint32_t GpioMcuRead( Gpio_t *obj ) void EXTI0_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line0 ) != RESET ) { if( GpioIrq[0] != NULL ) @@ -213,7 +215,9 @@ void EXTI0_IRQHandler( void ) void EXTI1_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line1 ) != RESET ) { if( GpioIrq[1] != NULL ) @@ -226,7 +230,9 @@ void EXTI1_IRQHandler( void ) void EXTI2_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line2 ) != RESET ) { if( GpioIrq[2] != NULL ) @@ -239,7 +245,9 @@ void EXTI2_IRQHandler( void ) void EXTI3_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line3 ) != RESET ) { if( GpioIrq[3] != NULL ) @@ -252,7 +260,9 @@ void EXTI3_IRQHandler( void ) void EXTI4_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line4 ) != RESET ) { if( GpioIrq[4] != NULL ) @@ -265,7 +275,9 @@ void EXTI4_IRQHandler( void ) void EXTI9_5_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line5 ) != RESET ) { if( GpioIrq[5] != NULL ) @@ -314,7 +326,9 @@ void EXTI9_5_IRQHandler( void ) void EXTI15_10_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line10 ) != RESET ) { if( GpioIrq[10] != NULL ) diff --git a/src/boards/LoRaMote-eu868/gpio-board.h b/src/boards/Bleeper-76/gpio-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/gpio-board.h rename to src/boards/Bleeper-76/gpio-board.h diff --git a/src/boards/Bleeper-76/i2c-board.c b/src/boards/Bleeper-76/i2c-board.c new file mode 100644 index 000000000..678db7dec --- /dev/null +++ b/src/boards/Bleeper-76/i2c-board.c @@ -0,0 +1,458 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board I2C driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "i2c-board.h" + +/*! + * The value of the maximal timeout for I2C waiting loops + */ +#define TIMEOUT_MAX 0x8000 + +/*! + * MCU I2C peripherals enumeration + */ +typedef enum { + I2C_1 = ( uint32_t )I2C1_BASE, + I2C_2 = ( uint32_t )I2C2_BASE, +} I2cName; + +void I2cMcuInit( I2c_t *obj, PinNames scl, PinNames sda ) +{ + obj->I2c = ( I2C_TypeDef * )I2C2_BASE; + + RCC_APB1PeriphClockCmd( RCC_APB1Periph_I2C2, ENABLE ); + + I2C_DeInit( obj->I2c ); + + GpioInit( &obj->Scl, scl, PIN_ALTERNATE_FCT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &obj->Sda, sda, PIN_ALTERNATE_FCT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + GPIO_PinAFConfig( obj->Scl.port, ( obj->Scl.pin & 0x0F ), GPIO_AF_I2C2 ); + GPIO_PinAFConfig( obj->Sda.port, ( obj->Sda.pin & 0x0F ), GPIO_AF_I2C2 ); +} + +void I2cMcuFormat( I2c_t *obj, I2cMode mode, I2cDutyCycle dutyCycle, bool I2cAckEnable, I2cAckAddrMode AckAddrMode, uint32_t I2cFrequency ) +{ + I2C_InitTypeDef I2C_InitStructure; + + if( mode == MODE_I2C ) + { + I2C_InitStructure.I2C_Mode = 0x0000; + } + else if( mode == MODE_SMBUS_DEVICE ) + { + I2C_InitStructure.I2C_Mode = 0x0002; + } + else + { + I2C_InitStructure.I2C_Mode = 0x000A; // MODE_SMBUS_HOST + } + + if( dutyCycle == I2C_DUTY_CYCLE_2 ) + { + I2C_InitStructure.I2C_DutyCycle = 0xBFFF; + } + else + { + I2C_InitStructure.I2C_DutyCycle = 0x4000; //I2C_DUTY_CYCLE_16_9 + } + + if( I2cAckEnable == true ) + { + I2C_InitStructure.I2C_Ack = 0x0400; + } + else + { + I2C_InitStructure.I2C_Ack = 0x0000; + } + + if( AckAddrMode == I2C_ACK_ADD_7_BIT ) + { + I2C_InitStructure.I2C_AcknowledgedAddress = 0x4000; + } + else + { + I2C_InitStructure.I2C_AcknowledgedAddress = 0xC000; // I2C_ACK_ADD_10_BIT + } + + if( I2cFrequency > 400000 ) + { + I2C_InitStructure.I2C_ClockSpeed = 400000; + } + else + { + I2C_InitStructure.I2C_ClockSpeed = I2cFrequency; + } + + I2C_Init( obj->I2c, &I2C_InitStructure ); + + /* I2C Peripheral Enable */ + I2C_Cmd( obj->I2c, ENABLE ); +} + +void I2cMcuDeInit( I2c_t *obj ) +{ + I2C_DeInit( obj->I2c ); + + GpioInit( &obj->Scl, obj->Scl.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Sda, obj->Sda.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ) +{ + uint32_t timeOut; + + __disable_irq( ); + + /* Test on BUSY Flag */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for write */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Transmitter ); + + /* Test on EV6 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( ( addr & 0xFF00 ) != 0x0000 ) + { + /* Send the device's internal address MSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( ( addr & 0xFF00 ) >> 8 ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } + + /* Send the device's internal address LSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( addr & 0x00FF ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + while( size ) + { + /* Send the byte to be written */ + I2C_SendData( obj->I2c, *buffer ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( size == 1 ) + { + I2C_GenerateSTOP( obj->I2c, ENABLE ); + + /* Wait to make sure that STOP control bit has been cleared */ + timeOut = TIMEOUT_MAX; + while(obj->I2c->CR1 & I2C_CR1_STOP) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } /* STOP */ + + buffer++; + size--; + } + + __enable_irq( ); + return( SUCCESS ); +} + +uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ) +{ + uint32_t timeOut; + + __disable_irq( ); + + /* Test on BUSY Flag */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for write */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Transmitter ); + + /* Test on EV6 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( ( addr & 0xFF00 ) != 0x0000 ) + { + /* Send the device's internal address MSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( ( addr & 0xFF00 ) >> 8 ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } + + /* Send the device's internal address LSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( addr & 0x00FF ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BTF ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition a second time */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for read */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Receiver ); + + if( size < 2 ) + { + /* Wait on ADDR flag to be set (ADDR is still not cleared at this level */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_ADDR ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Disable Acknowledgement */ + I2C_AcknowledgeConfig( obj->I2c, DISABLE ); + + /* Clear ADDR register by reading SR1 then SR2 register (SR1 has already been read) */ + (void)obj->I2c->SR2; + + /* Send STOP Condition */ + I2C_GenerateSTOP( obj->I2c, ENABLE ); + + /* Wait for the byte to be received */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_RXNE ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Read a byte from the device */ + *buffer = I2C_ReceiveData( obj->I2c ); + + /* Decrement the read bytes counter */ + size--; + } + else + { + while( size ) + { + /* Wait for the byte to be received */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_RXNE ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( size == 1 ) + { + /* Disable Acknowledgement */ + I2C_AcknowledgeConfig( obj->I2c, DISABLE ); + + /* Send STOP Condition */ + I2C_GenerateSTOP( obj->I2c, ENABLE ); + } + + /* Read a byte from the device */ + *buffer = I2C_ReceiveData( obj->I2c ); + + /* Point to the next location where the byte read will be saved */ + buffer++; + + /* Decrement the read bytes counter */ + size--; + } + + /* Wait to make sure that STOP control bit has been cleared */ + timeOut = TIMEOUT_MAX; + while(obj->I2c->CR1 & I2C_CR1_STOP) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + /*!< Re-Enable Acknowledgement to be ready for another reception */ + I2C_AcknowledgeConfig( obj->I2c, ENABLE ); + } + + __enable_irq( ); + return( SUCCESS ); +} diff --git a/src/boards/LoRaMote-eu868/i2c-board.h b/src/boards/Bleeper-76/i2c-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/i2c-board.h rename to src/boards/Bleeper-76/i2c-board.h diff --git a/src/boards/LoRaMote-eu868/pinName-board.h b/src/boards/Bleeper-76/pinName-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/pinName-board.h rename to src/boards/Bleeper-76/pinName-board.h diff --git a/src/boards/LoRaMote-eu868/pinName-ioe.h b/src/boards/Bleeper-76/pinName-ioe.h similarity index 100% rename from src/boards/LoRaMote-eu868/pinName-ioe.h rename to src/boards/Bleeper-76/pinName-ioe.h diff --git a/src/boards/LoRaMote-eu868/rtc-board.c b/src/boards/Bleeper-76/rtc-board.c similarity index 85% rename from src/boards/LoRaMote-eu868/rtc-board.c rename to src/boards/Bleeper-76/rtc-board.c index 4a8440ebd..938f507f5 100644 --- a/src/boards/LoRaMote-eu868/rtc-board.c +++ b/src/boards/Bleeper-76/rtc-board.c @@ -109,7 +109,7 @@ static const uint16_t DaysInLeapYear = 366; /*! * Number of days in a century */ -static const uint16_t DaysInCentury = 36524; +static const double DaysInCentury = 36524.219; /*! * Number of days in each month on a normal year @@ -172,7 +172,7 @@ static void RtcSetConfig( void ) RTC_TimeStructInit( &RTC_TimeStruct ); RTC_DateStructInit( &RTC_DateStruct ); - + RTC_SetDate( RTC_Format_BIN, &RTC_DateStruct ); RTC_SetTime( RTC_Format_BIN, &RTC_TimeStruct ); @@ -293,9 +293,10 @@ static void RtcClearStatus( void ) static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) { - uint8_t rtcSeconds = 0; - uint8_t rtcMinutes = 0; - uint8_t rtcHours = 0; + uint16_t rtcSeconds = 0; + uint16_t rtcMinutes = 0; + uint16_t rtcHours = 0; + uint16_t rtcDays = 0; uint8_t rtcAlarmSeconds = 0; uint8_t rtcAlarmMinutes = 0; @@ -308,32 +309,23 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) RtcClearStatus( ); + RtcTimerContext = RtcGetCalendarValue( ); RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); - - if( ( PreviousYear == 99 ) && ( RTC_DateStruct.RTC_Year == 0 ) ) - { - Century++; - } - PreviousYear = RTC_DateStruct.RTC_Year; - - RtcTimerContext = RtcGetCalendarValue( ); timeoutValue = timeoutValue / RTC_ALARM_TIME_BASE; - rtcSeconds = timeoutValue % SecondsInMinute; - rtcMinutes = ( timeoutValue / SecondsInMinute ) % SecondsInMinute; - rtcHours = ( timeoutValue / SecondsInHour ) % HoursInDay; + rtcSeconds = ( timeoutValue % SecondsInMinute ) + RTC_TimeStruct.RTC_Seconds; + rtcMinutes = ( ( timeoutValue / SecondsInMinute ) % SecondsInMinute ) + RTC_TimeStruct.RTC_Minutes; + rtcHours = ( ( timeoutValue / SecondsInHour ) % HoursInDay ) + RTC_TimeStruct.RTC_Hours; + rtcDays = ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date; - rtcAlarmSeconds = ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) % 60; - rtcAlarmMinutes = ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) % 60; - rtcAlarmHours = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmHours = ( rtcAlarmHours + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) % 24; - rtcAlarmDays = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmDays = ( rtcAlarmDays + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) / 24; - rtcAlarmDays = ( rtcAlarmDays + ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date ); + rtcAlarmSeconds = ( rtcSeconds ) % 60; + rtcAlarmMinutes = ( ( rtcSeconds / 60 ) + rtcMinutes ) % 60; + rtcAlarmHours = ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) % 24; + rtcAlarmDays = ( ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) / 24 ) + rtcDays; - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ] ) { @@ -347,11 +339,11 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ]; } } - + RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = rtcAlarmSeconds; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = rtcAlarmMinutes; RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = rtcAlarmHours; - RTC_AlarmStructure.RTC_AlarmDateWeekDay = rtcAlarmDays; + RTC_AlarmStructure.RTC_AlarmDateWeekDay = ( uint8_t )rtcAlarmDays; RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_TimeStruct.RTC_H12; RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; @@ -451,7 +443,7 @@ void RTC_Alarm_IRQHandler( void ) } } -void BlockLowPowerDuringTask ( bool status ) +void BlockLowPowerDuringTask( bool status ) { if( status == true ) { @@ -460,7 +452,7 @@ void BlockLowPowerDuringTask ( bool status ) LowPowerDisableDuringTask = status; } -void RtcDelayMs ( uint32_t delay ) +void RtcDelayMs( uint32_t delay ) { uint64_t delayValue = 0; uint64_t timeout = 0; @@ -497,43 +489,43 @@ uint64_t RtcGetCalendarValue( void ) // century for( i = 0; i < Century; i++ ) { - calendarValue += DaysInCentury * SecondsInDay; + calendarValue += ( uint64_t )( DaysInCentury * SecondsInDay ); } // years for( i = 0; i < RTC_DateStruct.RTC_Year; i++ ) { - if( ( i != 0 ) && ( i % 4 == 0 ) ) + if( ( i == 0 ) || ( i % 4 == 0 ) ) { - calendarValue += DaysInLeapYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInLeapYear * SecondsInDay; } else { - calendarValue += DaysInYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInYear * SecondsInDay; } } // months - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonthLeapYear[ i - 1] * SecondsInDay; + calendarValue += DaysInMonthLeapYear[i] * SecondsInDay; } } else { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonth[ i ] * SecondsInDay; + calendarValue += DaysInMonth[i] * SecondsInDay; } } // days calendarValue += ( ( uint32_t )RTC_TimeStruct.RTC_Seconds + - ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * 60 ) + + ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * SecondsInMinute ) + ( ( uint32_t )RTC_TimeStruct.RTC_Hours * SecondsInHour ) + - ( ( uint32_t )RTC_DateStruct.RTC_Date * SecondsInDay ) ); + ( ( uint32_t )( RTC_DateStruct.RTC_Date * SecondsInDay ) ) ); return( calendarValue ); } diff --git a/src/boards/LoRaMote-eu868/rtc-board.h b/src/boards/Bleeper-76/rtc-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/rtc-board.h rename to src/boards/Bleeper-76/rtc-board.h diff --git a/src/boards/LoRaMote-eu868/spi-board.c b/src/boards/Bleeper-76/spi-board.c similarity index 95% rename from src/boards/LoRaMote-eu868/spi-board.c rename to src/boards/Bleeper-76/spi-board.c index 47f2728d4..7497cd1e2 100644 --- a/src/boards/LoRaMote-eu868/spi-board.c +++ b/src/boards/Bleeper-76/spi-board.c @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian @@ -122,7 +119,7 @@ void SpiFrequency( Spi_t *obj, uint32_t hz ) divisor |= divisor >> 16; divisor++; - divisor = __builtin_ffs( divisor ) - 1; + divisor = __ffs( divisor ) - 1; divisor = ( divisor > 0x07 ) ? 0x07 : divisor; diff --git a/src/boards/LoRaMote-eu868/spi-board.h b/src/boards/Bleeper-76/spi-board.h similarity index 81% rename from src/boards/LoRaMote-eu868/spi-board.h rename to src/boards/Bleeper-76/spi-board.h index 8e9d9caf0..0dfbc8408 100644 --- a/src/boards/LoRaMote-eu868/spi-board.h +++ b/src/boards/Bleeper-76/spi-board.h @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian diff --git a/src/boards/Bleeper-76/sx1276-board.c b/src/boards/Bleeper-76/sx1276-board.c new file mode 100644 index 000000000..0859a610e --- /dev/null +++ b/src/boards/Bleeper-76/sx1276-board.c @@ -0,0 +1,158 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: SX1276 driver specific target board functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "radio.h" +#include "sx1276/sx1276.h" +#include "sx1276-board.h" + +/*! + * Flag used to set the RF switch control pins in low power mode when the radio is not active. + */ +static bool RadioIsActive = false; + +/*! + * Radio driver structure initialization + */ +const struct Radio_s Radio = +{ + SX1276Init, + SX1276GetStatus, + SX1276SetChannel, + SX1276IsChannelFree, + SX1276Random, + SX1276SetRxConfig, + SX1276SetTxConfig, + SX1276CheckRfFrequency, + SX1276GetTimeOnAir, + SX1276Send, + SX1276SetSleep, + SX1276SetStby, + SX1276SetRx, + SX1276ReadRssi, + SX1276Write, + SX1276Read, + SX1276WriteBuffer, + SX1276ReadBuffer +}; + +/*! + * Antenna switch GPIO pins objects + */ +Gpio_t AntSwitchLf; +Gpio_t AntSwitchHf; + +void SX1276IoInit( void ) +{ + GpioInit( &SX1276.Spi.Nss, RADIO_NSS, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + + GpioInit( &SX1276.DIO0, RADIO_DIO_0, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO1, RADIO_DIO_1, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO2, RADIO_DIO_2, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO3, RADIO_DIO_3, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO4, RADIO_DIO_4, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + + SX1276AntSwInit( ); +} + +void SX1276IoIrqInit( DioIrqHandler **irqHandlers ) +{ + GpioSetInterrupt( &SX1276.DIO0, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[0] ); + GpioSetInterrupt( &SX1276.DIO1, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[1] ); + GpioSetInterrupt( &SX1276.DIO2, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[2] ); + GpioSetInterrupt( &SX1276.DIO3, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[3] ); + GpioSetInterrupt( &SX1276.DIO4, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[4] ); + GpioSetInterrupt( &SX1276.DIO5, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[5] ); +} + +void SX1276IoDeInit( void ) +{ + GpioInit( &SX1276.Spi.Nss, RADIO_NSS, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + GpioInit( &SX1276.DIO0, RADIO_DIO_0, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO1, RADIO_DIO_1, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO2, RADIO_DIO_2, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO3, RADIO_DIO_3, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO4, RADIO_DIO_4, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +uint8_t SX1276GetPaSelect( uint32_t channel ) +{ + if( channel > RF_MID_BAND_THRESH ) + { + return RF_PACONFIG_PASELECT_PABOOST; + } + else + { + return RF_PACONFIG_PASELECT_RFO; + } +} + +void SX1276SetAntSwLowPower( bool status ) +{ + if( RadioIsActive != status ) + { + RadioIsActive = status; + + if( status == false ) + { + SX1276AntSwInit( ); + } + else + { + SX1276AntSwDeInit( ); + } + } +} + +void SX1276AntSwInit( void ) +{ + GpioInit( &AntSwitchLf, RADIO_ANT_SWITCH_LF, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + GpioInit( &AntSwitchHf, RADIO_ANT_SWITCH_HF, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); +} + +void SX1276AntSwDeInit( void ) +{ + GpioInit( &AntSwitchLf, RADIO_ANT_SWITCH_LF, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &AntSwitchHf, RADIO_ANT_SWITCH_HF, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +void SX1276SetAntSw( uint8_t rxTx ) +{ + if( SX1276.RxTx == rxTx ) + { + return; + } + + SX1276.RxTx = rxTx; + + if( rxTx != 0 ) + { + GpioWrite( &AntSwitchLf, 0 ); + GpioWrite( &AntSwitchHf, 1 ); + } + else + { + GpioWrite( &AntSwitchLf, 1 ); + GpioWrite( &AntSwitchHf, 0 ); + } +} + +bool SX1276CheckRfFrequency( uint32_t frequency ) +{ + // Implement check. Currently all frequencies are supportted + return true; +} diff --git a/src/boards/Bleeper-76/sx1276-board.h b/src/boards/Bleeper-76/sx1276-board.h new file mode 100644 index 000000000..e9613336f --- /dev/null +++ b/src/boards/Bleeper-76/sx1276-board.h @@ -0,0 +1,112 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: SX1276 driver specific target board functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SX1276_ARCH_H__ +#define __SX1276_ARCH_H__ + +/*! + * \brief Radio hardware registers initialization definition + * + * \remark Can be automatically generated by the SX1276 GUI (not yet implemented) + */ +#define RADIO_INIT_REGISTERS_VALUE \ +{ \ + { MODEM_FSK , REG_LNA , 0x23 },\ + { MODEM_FSK , REG_RXCONFIG , 0x1E },\ + { MODEM_FSK , REG_RSSICONFIG , 0xD2 },\ + { MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\ + { MODEM_FSK , REG_OSC , 0x07 },\ + { MODEM_FSK , REG_SYNCCONFIG , 0x12 },\ + { MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\ + { MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\ + { MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\ + { MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\ + { MODEM_FSK , REG_FIFOTHRESH , 0x8F },\ + { MODEM_FSK , REG_IMAGECAL , 0x02 },\ + { MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\ + { MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\ + { MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\ +} \ + +#define RF_MID_BAND_THRESH 525000000 + +/*! + * \brief Initializes the radio I/Os pins interface + */ +void SX1276IoInit( void ); + +/*! + * \brief Initializes DIO IRQ handlers + * + * \param [IN] irqHandlers Array containing the IRQ callback functions + */ +void SX1276IoIrqInit( DioIrqHandler **irqHandlers ); + +/*! + * \brief De-initializes the radio I/Os pins interface. + * + * \remark Useful when going in MCU lowpower modes + */ +void SX1276IoDeInit( void ); + +/*! + * \brief Gets the board PA selection configuration + * + * \param [IN] channel Channel frequency in Hz + * \retval PaSelect RegPaConfig PaSelect value + */ +uint8_t SX1276GetPaSelect( uint32_t channel ); + +/*! + * \brief Set the RF Switch I/Os pins in Low Power mode + * + * \param [IN] status enable or disable + */ +void SX1276SetAntSwLowPower( bool status ); + +/*! + * \brief Initializes the RF Switch I/Os pins interface + */ +void SX1276AntSwInit( void ); + +/*! + * \brief De-initializes the RF Switch I/Os pins interface + * + * \remark Needed to decrease the power consumption in MCU lowpower modes + */ +void SX1276AntSwDeInit( void ); + +/*! + * \brief Controls the antena switch if necessary. + * + * \remark see errata note + * + * \param [IN] rxTx [1: Tx, 0: Rx] + */ +void SX1276SetAntSw( uint8_t rxTx ); + +/*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ +bool SX1276CheckRfFrequency( uint32_t frequency ); + +/*! + * Radio hardware and global parameters + */ +extern SX1276_t SX1276; + +#endif // __SX1276_ARCH_H__ diff --git a/src/boards/LoRaMote-eu868/timer-board.c b/src/boards/Bleeper-76/timer-board.c similarity index 100% rename from src/boards/LoRaMote-eu868/timer-board.c rename to src/boards/Bleeper-76/timer-board.c diff --git a/src/boards/LoRaMote-eu868/timer-board.h b/src/boards/Bleeper-76/timer-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/timer-board.h rename to src/boards/Bleeper-76/timer-board.h diff --git a/src/boards/LoRaMote/LoRaMac-board.h b/src/boards/LoRaMote/LoRaMac-board.h new file mode 100644 index 000000000..57f10c47d --- /dev/null +++ b/src/boards/LoRaMote/LoRaMac-board.h @@ -0,0 +1,124 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRa MAC layer board dependent definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __LORAMAC_BOARD_H__ +#define __LORAMAC_BOARD_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define LORA_MAX_NB_CHANNELS 16 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MIN_DATARATE DR_SF12 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MAX_DATARATE DR_FSK + +/*! + * Default datarate used by the node + */ +#define LORAMAC_DEFAULT_DATARATE DR_SF12 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM + +/*! + * Default Tx output power used by the node + */ +#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM + +/*! + * Returns individual channel mask + * + * \param[IN] channelIndex Channel index 1 based + * \retval channelMask + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * LoRaMac TxPower definition + */ +#define TX_POWER_20_DBM 0 +#define TX_POWER_14_DBM 1 +#define TX_POWER_11_DBM 2 +#define TX_POWER_08_DBM 3 +#define TX_POWER_05_DBM 4 +#define TX_POWER_02_DBM 5 + +/*! + * LoRaMac datarates definition + */ +#define DR_SF12 0 +#define DR_SF11 1 +#define DR_SF10 2 +#define DR_SF9 3 +#define DR_SF8 4 +#define DR_SF7 5 +#define DR_SF7H 6 +#define DR_FSK 7 + +/*! + * LoRaMac default channels definition + */ +#if defined( USE_BAND_868 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 865525000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 868100000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 868300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 868500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_915 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 903700000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 902700000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 902900000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 903100000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#endif // __LORAMAC_BOARD_H__ diff --git a/src/boards/LoRaMote-eu868/adc-board.c b/src/boards/LoRaMote/adc-board.c similarity index 85% rename from src/boards/LoRaMote-eu868/adc-board.c rename to src/boards/LoRaMote/adc-board.c index 947af8d55..9ef9ca399 100644 --- a/src/boards/LoRaMote-eu868/adc-board.c +++ b/src/boards/LoRaMote/adc-board.c @@ -110,9 +110,9 @@ void AdcMcuFormat( Adc_t *obj, AdcResolution AdcRes, AdcNumConversion AdcNumConv } -uint16_t AdcMcuReadChannel( Adc_t *obj ) +uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) { - uint16_t ADCdata = 0; + uint16_t adcData = 0; /* Enable The HSI (16Mhz) */ RCC_HSICmd( ENABLE ); @@ -122,9 +122,15 @@ uint16_t AdcMcuReadChannel( Adc_t *obj ) RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE ); + // Temperature or Vref measurement + if( ( channel == ADC_Channel_16 ) || ( channel == ADC_Channel_17 ) ) + { + // Yes, enable temperature sensor and internal reference voltage + ADC_TempSensorVrefintCmd( ENABLE ); + } - /* ADC1 regular channel5 or channel1 configuration */ - ADC_RegularChannelConfig( ADC1, ADC_Channel_3, 1, ADC_SampleTime_192Cycles ); + // Configure selected channel + ADC_RegularChannelConfig( ADC1, channel, 1, ADC_SampleTime_192Cycles ); /* Define delay between ADC1 conversions */ ADC_DelaySelectionConfig( ADC1, ADC_DelayLength_Freeze ); @@ -148,13 +154,19 @@ uint16_t AdcMcuReadChannel( Adc_t *obj ) { } - ADCdata = ADC_GetConversionValue( ADC1 ); + adcData = ADC_GetConversionValue( ADC1 ); ADC_Cmd( ADC1, DISABLE ); + if( ( channel == ADC_Channel_16 ) || ( channel == ADC_Channel_17 ) ) + { + // De-initialize ADC + ADC_TempSensorVrefintCmd( DISABLE ); + } + RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, DISABLE ); RCC_HSICmd( DISABLE ); - return ADCdata; + return adcData; } diff --git a/src/boards/LoRaMote-eu868/adc-board.h b/src/boards/LoRaMote/adc-board.h similarity index 86% rename from src/boards/LoRaMote-eu868/adc-board.h rename to src/boards/LoRaMote/adc-board.h index c769d4081..32d542f36 100644 --- a/src/boards/LoRaMote-eu868/adc-board.h +++ b/src/boards/LoRaMote/adc-board.h @@ -15,6 +15,12 @@ Maintainer: Miguel Luis and Gregory Cristian #ifndef __ADC_MCU_H__ #define __ADC_MCU_H__ +/*! + * Register the old AdcMcuReadChannel function to the new function + * which makes an additional parameter available to select the read out channel + */ +#define AdcMcuReadChannel( obj ) AdcMcuRead( obj, ADC_Channel_3 ) + /*! * ADC resolution */ @@ -82,6 +88,6 @@ void AdcMcuDeInit( Adc_t *obj ); */ void AdcMcuFormat( Adc_t *obj, AdcResolution AdcRes, AdcNumConversion AdcNumConv, AdcTriggerConv AdcTrig, AdcDataAlignement AdcDataAlig ); -uint16_t AdcMcuReadChannel( Adc_t *obj ); +uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ); #endif // __ADC_MCU_H__ diff --git a/src/boards/LoRaMote-eu868/board.c b/src/boards/LoRaMote/board.c similarity index 74% rename from src/boards/LoRaMote-eu868/board.c rename to src/boards/LoRaMote/board.c index e34a3e9c0..36fd05e0f 100644 --- a/src/boards/LoRaMote-eu868/board.c +++ b/src/boards/LoRaMote/board.c @@ -50,7 +50,9 @@ Gpio_t GpsTx; Adc_t Adc; I2c_t I2c; Uart_t Uart1; - +#if defined( USE_USB_CDC ) +Uart_t UartUsb; +#endif /*! * Initializes the unused GPIO to a know status @@ -81,20 +83,20 @@ void BoardInitPeriph( void ) GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - // init Temperature, pressure and altitude sensor - mpl3115Init( ); + // Init Temperature, pressure and altitude sensor + MPL3115Init( ); - // init Accelerometer - mma8451Init( ); + // Init Accelerometer + MMA8451Init( ); - // init Magnetometer - mag3110Init( ); + // Init Magnetometer + MAG3110Init( ); - // init SAR - sx9500Init( ); + // Init SAR + SX9500Init( ); - // init GPS - UP501Init( ); + // Init GPS + GpsInit( ); // Switch LED 1, 2, 3 OFF GpioWrite( &Led1, 1 ); @@ -106,6 +108,10 @@ void BoardInitMcu( void ) { if( McuInitialized == false ) { +#if defined( USE_BOOTLOADER ) + // Set the Vector Table base location at 0x3000 + NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x3000 ); +#endif // We use IRQ priority group 4 for the entire project // When setting the IRQ, only the preemption priority is used NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); @@ -116,6 +122,7 @@ void BoardInitMcu( void ) I2cInit( &I2c, I2C_SCL, I2C_SDA ); AdcInit( &Adc, BAT_LEVEL ); + SpiInit( &SX1272.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); SX1272IoInit( ); @@ -128,6 +135,12 @@ void BoardInitMcu( void ) BoardUnusedIoInit( ); +#if defined( USE_USB_CDC ) + UsbMcuInit( ); + UartInit( &UartUsb, UART_USB_CDC, NC, NC ); + UartConfig( &UartUsb, RX_TX, 115200, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL ); +#endif + #ifdef LOW_POWER_MODE_ENABLE RtcInit( ); #else @@ -179,67 +192,46 @@ void BoardGetUniqueId( uint8_t *id ) uint8_t BoardMeasureBatterieLevel( void ) { uint8_t batteryLevel = 0; - uint16_t MeasuredLevel = 0; + uint16_t measuredLevel = 0; - MeasuredLevel = AdcReadChannel( &Adc ); + measuredLevel = AdcReadChannel( &Adc ); - if( MeasuredLevel >= 3900 ) // 9V + if( measuredLevel >= 3900 ) // 9V { batteryLevel = 254; } else { - batteryLevel = ( MeasuredLevel - 1870 ) * BATTERY_STEP_LEVEL; // 1870 => 4.7V = limit of operation for the battery + batteryLevel = ( measuredLevel - 1870 ) * BATTERY_STEP_LEVEL; // 1870 => 4.7V = limit of operation for the battery } return batteryLevel; } static void BoardUnusedIoInit( void ) { -#if !defined( USE_DEBUG_PINS ) - Gpio_t conExt1; - Gpio_t conExt3; - Gpio_t conExt7; - Gpio_t conExt9; -#endif - - Gpio_t conExt8; - Gpio_t conExt13; - - Gpio_t usbDM; - Gpio_t usbDP; - Gpio_t boot1; - Gpio_t pin_pb6; - Gpio_t wkup1; - -#if !defined( USE_DEBUGGER ) - Gpio_t jtagTms; - Gpio_t jtagTck; - Gpio_t jtagTdi; - Gpio_t jtagTdo; - Gpio_t jtagNrst; -#endif + Gpio_t ioPin; /* External Connector J5 */ #if !defined( USE_DEBUG_PINS ) - GpioInit( &conExt1, CON_EXT_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &conExt3, CON_EXT_3, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &conExt7, CON_EXT_7, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &conExt9, CON_EXT_9, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, CON_EXT_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, CON_EXT_3, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, CON_EXT_7, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, CON_EXT_9, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); #endif /* USB */ - GpioInit( &usbDM, USB_DM, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &usbDP, USB_DP, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - - /* BOOT0 pin */ - GpioInit( &boot1, BOOT_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#if !defined( USE_USB_CDC ) + GpioInit( &ioPin, USB_DM, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, USB_DP, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#endif + + GpioInit( &ioPin, BOOT_1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &conExt8, CON_EXT_8, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &conExt13, BAT_LEVEL, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, CON_EXT_8, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, BAT_LEVEL, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &pin_pb6, PIN_PB6, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &wkup1, WKUP1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, PIN_PB6, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, WKUP1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); #if defined( USE_DEBUGGER ) DBGMCU_Config( DBGMCU_SLEEP, ENABLE ); @@ -250,10 +242,10 @@ static void BoardUnusedIoInit( void ) DBGMCU_Config( DBGMCU_STOP, DISABLE ); DBGMCU_Config( DBGMCU_STANDBY, DISABLE ); - GpioInit( &jtagTms, JTAG_TMS, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &jtagTck, JTAG_TCK, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &jtagTdi, JTAG_TDI, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &jtagTdo, JTAG_TDO, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioInit( &jtagNrst, JTAG_NRST, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TMS, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TCK, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDI, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_TDO, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, JTAG_NRST, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); #endif } diff --git a/src/boards/LoRaMote-eu868/board.h b/src/boards/LoRaMote/board.h similarity index 96% rename from src/boards/LoRaMote-eu868/board.h rename to src/boards/LoRaMote/board.h index 92a4e6ffb..dfed79bed 100644 --- a/src/boards/LoRaMote-eu868/board.h +++ b/src/boards/LoRaMote/board.h @@ -35,12 +35,17 @@ Maintainer: Miguel Luis and Gregory Cristian #include "mma8451.h" #include "mpl3115.h" #include "sx9500.h" -#include "up501.h" +#include "gps.h" +#include "gps-board.h" #include "rtc-board.h" #include "timer-board.h" #include "sx1272-board.h" #include "uart-board.h" +#if defined( USE_USB_CDC ) +#include "usb-cdc-board.h" +#endif + /*! * Define indicating if an external IO expander is to be used */ @@ -163,7 +168,6 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * LED GPIO pins objects */ - extern Gpio_t IrqMpl3115; extern Gpio_t IrqMag3110; extern Gpio_t GpsPowerEn; @@ -172,10 +176,10 @@ extern Gpio_t NcIoe4; extern Gpio_t NcIoe5; extern Gpio_t NcIoe6; extern Gpio_t NcIoe7; -extern Gpio_t NIrqSx9500; +extern Gpio_t NIrqSX9500; extern Gpio_t Irq1Mma8451; extern Gpio_t Irq2Mma8451; -extern Gpio_t TxEnSx9500; +extern Gpio_t TxEnSX9500; extern Gpio_t Led1; extern Gpio_t Led2; extern Gpio_t Led3; @@ -197,6 +201,9 @@ extern Gpio_t DbgPin4; extern Adc_t Adc; extern I2c_t I2c; extern Uart_t Uart1; +#if defined( USE_USB_CDC ) +extern Uart_t UartUsb; +#endif extern Gpio_t GpsPps; extern Gpio_t GpsRx; diff --git a/src/boards/LoRaMote-eu868/cmsis/arm-gcc/startup_stm32l1xx_md.s b/src/boards/LoRaMote/cmsis/arm-gcc/startup_stm32l1xx_md.s similarity index 100% rename from src/boards/LoRaMote-eu868/cmsis/arm-gcc/startup_stm32l1xx_md.s rename to src/boards/LoRaMote/cmsis/arm-gcc/startup_stm32l1xx_md.s diff --git a/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash.ld b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash.ld new file mode 100644 index 000000000..1be62d5b0 --- /dev/null +++ b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld new file mode 100644 index 000000000..f8fc2a20f --- /dev/null +++ b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 12K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld new file mode 100644 index 000000000..865fc0291 --- /dev/null +++ b/src/boards/LoRaMote/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08003000, LENGTH = 128K - 0x3000 + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/LoRaMote-eu868/cmsis/arm-std/startup_stm32l1xx_md.s b/src/boards/LoRaMote/cmsis/arm-std/startup_stm32l1xx_md.s similarity index 100% rename from src/boards/LoRaMote-eu868/cmsis/arm-std/startup_stm32l1xx_md.s rename to src/boards/LoRaMote/cmsis/arm-std/startup_stm32l1xx_md.s diff --git a/src/boards/LoRaMote-eu868/cmsis/stm32l1xx.h b/src/boards/LoRaMote/cmsis/stm32l1xx.h similarity index 100% rename from src/boards/LoRaMote-eu868/cmsis/stm32l1xx.h rename to src/boards/LoRaMote/cmsis/stm32l1xx.h diff --git a/src/boards/LoRaMote/cmsis/stm32l1xx_conf.h b/src/boards/LoRaMote/cmsis/stm32l1xx_conf.h new file mode 100644 index 000000000..40dd23545 --- /dev/null +++ b/src/boards/LoRaMote/cmsis/stm32l1xx_conf.h @@ -0,0 +1,85 @@ +/** + ****************************************************************************** + * @file GPIO/IOToggle/stm32l1xx_conf.h + * @author MCD Application Team + * @version V1.1.1 + * @date 13-April-2012 + * @brief Library configuration file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_CONF_H +#define __STM32L1xx_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Uncomment/Comment the line below to enable/disable peripheral header file inclusion */ +#include "stm32l1xx_adc.h" +#include "stm32l1xx_aes.h" +#include "stm32l1xx_comp.h" +#include "stm32l1xx_crc.h" +#include "stm32l1xx_dac.h" +#include "stm32l1xx_dbgmcu.h" +#include "stm32l1xx_dma.h" +#include "stm32l1xx_exti.h" +#include "stm32l1xx_flash.h" +#include "stm32l1xx_fsmc.h" +#include "stm32l1xx_gpio.h" +#include "stm32l1xx_i2c.h" +#include "stm32l1xx_iwdg.h" +#include "stm32l1xx_lcd.h" +#include "stm32l1xx_opamp.h" +#include "stm32l1xx_pwr.h" +#include "stm32l1xx_rcc.h" +#include "stm32l1xx_rtc.h" +#include "stm32l1xx_sdio.h" +#include "stm32l1xx_spi.h" +#include "stm32l1xx_syscfg.h" +#include "stm32l1xx_tim.h" +#include "stm32l1xx_usart.h" +#include "stm32l1xx_wwdg.h" +#include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Uncomment the line below to expanse the "assert_param" macro in the + Standard Peripheral Library drivers code */ +/* #define USE_FULL_ASSERT 1 */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT + +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function which reports + * the name of the source file and the source line number of the call + * that failed. If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + +#endif /* __STM32L1xx_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote-eu868/cmsis/system_stm32l1xx.c b/src/boards/LoRaMote/cmsis/system_stm32l1xx.c similarity index 100% rename from src/boards/LoRaMote-eu868/cmsis/system_stm32l1xx.c rename to src/boards/LoRaMote/cmsis/system_stm32l1xx.c diff --git a/src/boards/LoRaMote/cmsis/system_stm32l1xx.h b/src/boards/LoRaMote/cmsis/system_stm32l1xx.h new file mode 100644 index 000000000..25ad24096 --- /dev/null +++ b/src/boards/LoRaMote/cmsis/system_stm32l1xx.h @@ -0,0 +1,104 @@ +/** + ****************************************************************************** + * @file system_stm32l1xx.h + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32L1XX_H +#define __SYSTEM_STM32L1XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32L1xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32L1xx_System_Exported_types + * @{ + */ + +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32L1XX_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/gpio-board.c b/src/boards/LoRaMote/gpio-board.c new file mode 100644 index 000000000..72802a517 --- /dev/null +++ b/src/boards/LoRaMote/gpio-board.c @@ -0,0 +1,385 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board GPIO driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "gpio-board.h" +#include "stm32l1xx_gpio.h" + +static GpioIrqHandler *GpioIrq[16]; + +void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value ) +{ + GPIO_InitTypeDef GPIO_InitStructure; + + if( pin == NC ) + { + return; + } + + obj->portIndex = ( uint32_t ) pin >> 4; + + obj->pin = pin; + obj->pinIndex = ( 0x01 << ( obj->pin & 0x0F ) ); + + if( obj->portIndex < 6 ) + { + obj->port = ( GPIO_TypeDef * )( GPIOA_BASE + ( obj->portIndex << 10 ) ); + RCC_AHBPeriphClockCmd( ( 0x01 << obj->portIndex ), ENABLE ); + } + else if( obj->portIndex == 6 ) + { /* GPIO base address not in alphabetical order after GPIOE (cf stm32l1xx.h, line 926 ) */ + /* Access to GPIOF and GPIOG not implemented */ + obj->port = ( GPIO_TypeDef * )( GPIOH_BASE ); + RCC_AHBPeriphClockCmd( ( 0x01 << ( obj->portIndex - 1 ) ), ENABLE ); + } + + // Sets initial output value + if( mode == PIN_OUTPUT ) + { + GpioMcuWrite( obj, value ); + } + + GPIO_InitStructure.GPIO_Mode = ( GPIOMode_TypeDef )mode; + GPIO_InitStructure.GPIO_OType = ( GPIOOType_TypeDef )config; + GPIO_InitStructure.GPIO_PuPd = ( GPIOPuPd_TypeDef )type; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; + GPIO_InitStructure.GPIO_Pin = obj->pinIndex; + GPIO_Init( obj->port, &GPIO_InitStructure ); +} + +void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + if( irqHandler == NULL ) + { + return; + } + + GpioIrq[obj->pin & 0x0F] = irqHandler; + + /* Enable SYSCFG clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + /* Connect EXTI Line to GPIO pin */ + SYSCFG_EXTILineConfig( obj->portIndex, ( ( obj->pin ) & 0x0F ) ); + + /* Configure EXTI line */ + EXTI_InitStructure.EXTI_Line = ( 0x01 << ( obj->pin & 0x0F ) ); + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + + if( irqMode == IRQ_RISING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + } + else if( irqMode == IRQ_FALLING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + } + else if( irqMode == IRQ_RISING_FALLING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + } + else + { + while( 1 ); + } + + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + + if( ( ( obj->pin ) & 0x0F ) < 5 ) + { + NVIC_InitStructure.NVIC_IRQChannel = ( ( obj->pin ) & 0x0F ) + 6; + } + else if( ( ( obj->pin ) & 0x0F ) < 10 ) + { + NVIC_InitStructure.NVIC_IRQChannel = 23; + } + else if( ( ( obj->pin ) & 0x0F ) < 16 ) + { + NVIC_InitStructure.NVIC_IRQChannel = 40; + } + else + { + while( 1 ); + } + + if( irqPriority == IRQ_VERY_LOW_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_LOW_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 12; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_MEDIUM_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_HIGH_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_VERY_HIGH_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else + { + while( 1 ); + } + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + +} + +void GpioMcuRemoveInterrupt( Gpio_t *obj ) +{ + EXTI_InitTypeDef EXTI_InitStructure; + + GpioIrq[obj->pin & 0x0F] = NULL; + + EXTI_InitStructure.EXTI_Line = ( 0x01 << ( obj->pin & 0x0F ) ); + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); +} + +void GpioMcuWrite( Gpio_t *obj, uint32_t value ) +{ + if( ( obj == NULL ) || ( obj->port == NULL ) ) + { + while( 1 ); + } + // Check if pin is not connected + if( obj->pin == NC ) + { + return; + } + if( value == 0 ) + { + GPIO_ResetBits( obj->port, obj->pinIndex ); + } + else + { + GPIO_SetBits( obj->port, obj->pinIndex ); + } +} + +uint32_t GpioMcuRead( Gpio_t *obj ) +{ + if( obj == NULL ) + { + while( 1 ); + } + // Check if pin is not connected + if( obj->pin == NC ) + { + return 0; + } + return GPIO_ReadInputDataBit( obj->port, obj->pinIndex ); +} + +void EXTI0_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line0 ) != RESET ) + { + if( GpioIrq[0] != NULL ) + { + GpioIrq[0]( ); + } + EXTI_ClearITPendingBit( EXTI_Line0 ); + } +} + +void EXTI1_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line1 ) != RESET ) + { + if( GpioIrq[1] != NULL ) + { + GpioIrq[1]( ); + } + EXTI_ClearITPendingBit( EXTI_Line1 ); + } +} + +void EXTI2_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line2 ) != RESET ) + { + if( GpioIrq[2] != NULL ) + { + GpioIrq[2]( ); + } + EXTI_ClearITPendingBit( EXTI_Line2 ); + } +} + +void EXTI3_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line3 ) != RESET ) + { + if( GpioIrq[3] != NULL ) + { + GpioIrq[3]( ); + } + EXTI_ClearITPendingBit( EXTI_Line3 ); + } +} + +void EXTI4_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line4 ) != RESET ) + { + if( GpioIrq[4] != NULL ) + { + GpioIrq[4]( ); + } + EXTI_ClearITPendingBit( EXTI_Line4 ); + } +} + +void EXTI9_5_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line5 ) != RESET ) + { + if( GpioIrq[5] != NULL ) + { + GpioIrq[5]( ); + } + EXTI_ClearITPendingBit( EXTI_Line5 ); + } + + if( EXTI_GetITStatus( EXTI_Line6 ) != RESET ) + { + if( GpioIrq[6] != NULL ) + { + GpioIrq[6]( ); + } + EXTI_ClearITPendingBit( EXTI_Line6 ); + } + + if( EXTI_GetITStatus( EXTI_Line7 ) != RESET ) + { + if( GpioIrq[7] != NULL ) + { + GpioIrq[7]( ); + } + EXTI_ClearITPendingBit( EXTI_Line7 ); + } + + if( EXTI_GetITStatus( EXTI_Line8 ) != RESET ) + { + if( GpioIrq[8] != NULL ) + { + GpioIrq[8]( ); + } + EXTI_ClearITPendingBit( EXTI_Line8 ); + } + + if( EXTI_GetITStatus( EXTI_Line9 ) != RESET ) + { + if( GpioIrq[9] != NULL ) + { + GpioIrq[9]( ); + } + EXTI_ClearITPendingBit( EXTI_Line9 ); + } +} + +void EXTI15_10_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line10 ) != RESET ) + { + if( GpioIrq[10] != NULL ) + { + GpioIrq[10]( ); + } + EXTI_ClearITPendingBit( EXTI_Line10 ); + } + + if( EXTI_GetITStatus( EXTI_Line11 ) != RESET ) + { + if( GpioIrq[11] != NULL ) + { + GpioIrq[11]( ); + } + EXTI_ClearITPendingBit( EXTI_Line11 ); + } + + if( EXTI_GetITStatus( EXTI_Line12 ) != RESET ) + { + if( GpioIrq[12] != NULL ) + { + GpioIrq[12]( ); + } + EXTI_ClearITPendingBit( EXTI_Line12 ); + } + + if( EXTI_GetITStatus( EXTI_Line13 ) != RESET ) + { + if( GpioIrq[13] != NULL ) + { + GpioIrq[13]( ); + } + EXTI_ClearITPendingBit( EXTI_Line13 ); + } + + if( EXTI_GetITStatus( EXTI_Line14 ) != RESET ) + { + if( GpioIrq[14] != NULL ) + { + GpioIrq[14]( ); + } + EXTI_ClearITPendingBit( EXTI_Line14 ); + } + + if( EXTI_GetITStatus( EXTI_Line15 ) != RESET ) + { + if( GpioIrq[15] != NULL ) + { + GpioIrq[15]( ); + } + EXTI_ClearITPendingBit( EXTI_Line15 ); + } +} diff --git a/src/boards/LoRaMote/gpio-board.h b/src/boards/LoRaMote/gpio-board.h new file mode 100644 index 000000000..4fc0843ac --- /dev/null +++ b/src/boards/LoRaMote/gpio-board.h @@ -0,0 +1,67 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board GPIO driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __GPIO_MCU_H__ +#define __GPIO_MCU_H__ + +/*! + * \brief Initializes the given GPIO object + * + * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] pin Pin name ( please look in pinName-board.h file ) + * \param [IN] mode Pin mode [PIN_INPUT, PIN_OUTPUT, + * PIN_ALTERNATE_FCT, PIN_ANALOGIC] + * \param [IN] config Pin config [PIN_PUSH_PULL, PIN_OPEN_DRAIN] + * \param [IN] type Pin type [PIN_NO_PULL, PIN_PULL_UP, PIN_PULL_DOWN] + * \param [IN] value Default output value at initialisation + */ +void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value ); + +/*! + * \brief GPIO IRQ Initialization + * + * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] irqMode IRQ mode [NO_IRQ, IRQ_RISING_EDGE, + * IRQ_FALLING_EDGE, IRQ_RISING_FALLING_EDGE] + * \param [IN] irqPriority IRQ priority [IRQ_VERY_LOW_PRIORITY, IRQ_LOW_PRIORITY + * IRQ_MEDIUM_PRIORITY, IRQ_HIGH_PRIORITY + * IRQ_VERY_HIGH_PRIORITY] + * \param [IN] irqHandler Callback function pointer + */ +void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler ); + +/*! + * \brief GPIO IRQ DeInitialization + * + * \param [IN] obj Pointer to the GPIO object to be Deinitialized + */ +void GpioMcuRemoveInterrupt( Gpio_t *obj ); + +/*! + * \brief Writes the given value to the GPIO output + * + * \param [IN] obj Pointer to the GPIO object + * \param [IN] value New GPIO output value + */ +void GpioMcuWrite( Gpio_t *obj, uint32_t value ); + +/*! + * \brief Reads the current GPIO input value + * + * \param [IN] obj Pointer to the GPIO object + * \retval value Current GPIO input value + */ +uint32_t GpioMcuRead( Gpio_t *obj ); + +#endif // __GPIO_MCU_H__ diff --git a/src/boards/LoRaMote/gps-board.c b/src/boards/LoRaMote/gps-board.c new file mode 100644 index 000000000..d2ebc2025 --- /dev/null +++ b/src/boards/LoRaMote/gps-board.c @@ -0,0 +1,79 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Generic low level driver for GPS receiver + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" + +/*! + * FIFO buffers size + */ +//#define FIFO_TX_SIZE 128 +#define FIFO_RX_SIZE 128 + +//uint8_t TxBuffer[FIFO_TX_SIZE]; +uint8_t RxBuffer[FIFO_RX_SIZE]; + +int8_t NmeaString[128]; +uint8_t NmeaStringSize = 0; + +void GpsMcuOnPpsSignal( void ) +{ + bool parseData = false; + + GpsPpsHandler( &parseData); + + if( parseData == true ) + { + UartInit( &Uart1, UART_1, UART_TX, UART_RX ); + UartConfig( &Uart1, RX_ONLY, 9600, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL ); + } +} + +void GpsMcuInit( void ) +{ + NmeaStringSize = 0; + + //FifoInit( &Uart1.FifoTx, TxBuffer, FIFO_TX_SIZE ); + FifoInit( &Uart1.FifoRx, RxBuffer, FIFO_RX_SIZE ); + Uart1.IrqNotify = GpsMcuIrqNotify; + + //GpioWrite( &GpsPowerEn, 1 ); // power down the GPS + GpioWrite( &GpsPowerEn, 0 ); // power up the GPS + GpioInit( &GpsPps, GPS_PPS, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioSetInterrupt( &GpsPps, IRQ_FALLING_EDGE, IRQ_VERY_LOW_PRIORITY, &GpsMcuOnPpsSignal ); +} + +void GpsMcuIrqNotify( UartNotifyId_t id ) +{ + uint8_t data; + if( id == UART_NOTIFY_RX ) + { + if( UartGetChar( &Uart1, &data ) == 0 ) + { + if( ( data == '$' ) || ( NmeaStringSize >= 128 ) ) + { + NmeaStringSize = 0; + } + + NmeaString[NmeaStringSize++] = ( int8_t )data; + + if( data == '\n' ) + { + NmeaString[NmeaStringSize] = '\0'; + GpsParseGpsData( NmeaString, NmeaStringSize ); + UartDeInit( &Uart1 ); + BlockLowPowerDuringTask ( false ); + } + } + } +} diff --git a/src/boards/LoRaMote/gps-board.h b/src/boards/LoRaMote/gps-board.h new file mode 100644 index 000000000..cc20df507 --- /dev/null +++ b/src/boards/LoRaMote/gps-board.h @@ -0,0 +1,33 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Generic driver for GPS receiver + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __GPS_BOARD_H__ +#define __GPS_BOARD_H__ + +/*! + * \brief Low level handling of the PPS signal from the GPS receiver + */ +void GpsMcuOnPpsSignal( void ); + +/*! + * \brief Low level Initialisation of the UART and IRQ for the GPS + */ +void GpsMcuInit( void ); + +/*! + * \brief IRQ handler for the UART receiver + */ +void GpsMcuIrqNotify( UartNotifyId_t id ); + +#endif // __GPS_BOARD_H__ diff --git a/src/boards/LoRaMote-eu868/i2c-board.c b/src/boards/LoRaMote/i2c-board.c similarity index 94% rename from src/boards/LoRaMote-eu868/i2c-board.c rename to src/boards/LoRaMote/i2c-board.c index 964de4f69..de1bdf280 100644 --- a/src/boards/LoRaMote-eu868/i2c-board.c +++ b/src/boards/LoRaMote/i2c-board.c @@ -114,6 +114,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY) ) @@ -121,6 +123,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -135,6 +139,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -149,6 +155,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -165,6 +173,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -180,6 +190,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -196,6 +208,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -211,6 +225,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -219,6 +235,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ buffer++; size--; } + + __enable_irq( ); return( SUCCESS ); } @@ -226,6 +244,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY ) ) @@ -233,6 +253,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -247,6 +269,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -261,6 +285,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -277,6 +303,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -292,6 +320,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -303,6 +333,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -317,6 +349,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -333,6 +367,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -353,6 +389,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -374,6 +412,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -404,11 +444,15 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } /*!< Re-Enable Acknowledgement to be ready for another reception */ I2C_AcknowledgeConfig( obj->I2c, ENABLE ); } + + __enable_irq( ); return( SUCCESS ); } diff --git a/src/boards/LoRaMote/i2c-board.h b/src/boards/LoRaMote/i2c-board.h new file mode 100644 index 000000000..f09d3529e --- /dev/null +++ b/src/boards/LoRaMote/i2c-board.h @@ -0,0 +1,96 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board I2C driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __I2C_MCU_H__ +#define __I2C_MCU_H__ + +/*! + * Operation Mode for the I2C + */ +typedef enum +{ + MODE_I2C = 0, + MODE_SMBUS_DEVICE, + MODE_SMBUS_HOST +}I2cMode; + +/*! + * I2C signal duty cycle + */ +typedef enum +{ + I2C_DUTY_CYCLE_2 = 0, + I2C_DUTY_CYCLE_16_9 +}I2cDutyCycle; + +/*! + * I2C select if the acknowledge in after the 7th or 10th bit + */ +typedef enum +{ + I2C_ACK_ADD_7_BIT = 0, + I2C_ACK_ADD_10_BIT +}I2cAckAddrMode; + +/*! + * \brief Initializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + * \param [IN] scl I2C Scl pin name to be used + * \param [IN] sda I2C Sda pin name to be used + */ +void I2cMcuInit( I2c_t *obj, PinNames scl, PinNames sda ); + +/*! + * \brief Initializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + * \param [IN] mode Mode of operation for the I2C Bus + * \param [IN] dutyCycle Signal duty cycle + * \param [IN] I2cAckEnable Enable or Disable to ack + * \param [IN] AckAddrMode 7bit or 10 bit addressing + * \param [IN] I2cFrequency I2C bus clock frequency + */ +void I2cMcuFormat( I2c_t *obj, I2cMode mode, I2cDutyCycle dutyCycle, bool I2cAckEnable, I2cAckAddrMode AckAddrMode, uint32_t I2cFrequency ); + +/*! + * \brief DeInitializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + */ +void I2cMcuDeInit( I2c_t *obj ); + +/*! + * \brief Write several data to the I2C device + * + * \param [IN] obj I2C object + * \param [IN] deviceAddr device address + * \param [IN] addr register address + * \param [IN] buffer data buffer to write + * \param [IN] size number of data byte to write + */ +uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ); + +/*! + * \brief Read several data byte from the I2C device + * + * \param [IN] obj I2C object + * \param [IN] deviceAddr device address + * \param [IN] addr register address + * \param [IN] buffer data buffer used to store the data read + * \param [IN] size number of data byte to read + */ +uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ); + +#endif // __I2C_MCU_H__ diff --git a/src/boards/LoRaMote/pinName-board.h b/src/boards/LoRaMote/pinName-board.h new file mode 100644 index 000000000..4a66023bb --- /dev/null +++ b/src/boards/LoRaMote/pinName-board.h @@ -0,0 +1,30 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper STM32L151RD microcontroller pins definition + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __PIN_NAME_MCU_H__ +#define __PIN_NAME_MCU_H__ + +/*! + * STM32 Pin Names + */ +#define MCU_PINS \ + PA_0 = 0, PA_1, PA_2, PA_3, PA_4, PA_5, PA_6, PA_7, PA_8, PA_9, PA_10, PA_11, PA_12, PA_13, PA_14, PA_15, \ + PB_0, PB_1, PB_2, PB_3, PB_4, PB_5, PB_6, PB_7, PB_8, PB_9, PB_10, PB_11, PB_12, PB_13, PB_14, PB_15, \ + PC_0, PC_1, PC_2, PC_3, PC_4, PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12, PC_13, PC_14, PC_15, \ + PD_0, PD_1, PD_2, PD_3, PD_4, PD_5, PD_6, PD_7, PD_8, PD_9, PD_10, PD_11, PD_12, PD_13, PD_14, PD_15, \ + PE_0, PE_1, PE_2, PE_3, PE_4, PE_5, PE_6, PE_7, PE_8, PE_9, PE_10, PE_11, PE_12, PE_13, PE_14, PE_15, \ + PF_0, PF_1, PF_2, PF_3, PF_4, PF_5, PF_6, PF_7, PF_8, PF_9, PF_10, PF_11, PF_12, PF_13, PF_14, PF_15, \ + PH_0, PH_1, PH_2, PH_3, PH_4, PH_5, PH_6, PH_7, PH_8, PH_9, PH_10, PH_11, PH_12, PH_13, PH_14, PH_15 + +#endif // __PIN_NAME_MCU_H__ diff --git a/src/boards/LoRaMote/pinName-ioe.h b/src/boards/LoRaMote/pinName-ioe.h new file mode 100644 index 000000000..531100ab9 --- /dev/null +++ b/src/boards/LoRaMote/pinName-ioe.h @@ -0,0 +1,22 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper STM32L151RD microcontroller pins definition + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __PIN_NAME_IOE_H__ +#define __PIN_NAME_IOE_H__ + +// SX1509 Pin Names +#define IOE_PINS \ + IOE_0, IOE_1, IOE_2, IOE_3, IOE_4, IOE_5, IOE_6, IOE_7, \ + IOE_8, IOE_9, IOE_10, IOE_11, IOE_12, IOE_13, IOE_14, IOE_15 +#endif // __PIN_NAME_IOE_H__ diff --git a/src/boards/LoRaMote/rtc-board.c b/src/boards/LoRaMote/rtc-board.c new file mode 100644 index 000000000..938f507f5 --- /dev/null +++ b/src/boards/LoRaMote/rtc-board.c @@ -0,0 +1,531 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "rtc-board.h" + +/*! + * RTC Time base in us + */ +#define RTC_ALARM_TIME_BASE 122.07 + +/*! + * MCU Wake Up Time + */ +#define MCU_WAKE_UP_TIME 3400 + +/*! + * \brief Configure the Rtc hardware + */ +static void RtcSetConfig( void ); + +/*! + * \brief Configure the Rtc Alarm + */ +static void RtcSetAlarmConfig( void ); + +/*! + * \brief Start the Rtc Alarm (time base 1s) + */ +static void RtcStartWakeUpAlarm( uint32_t timeoutValue ); + +/*! + * \brief Read the MCU internal Calendar value + * + * \retval Calendar value + */ +static uint64_t RtcGetCalendarValue( void ); + +/*! + * \brief Clear the RTC flags and Stop all IRQs + */ +static void RtcClearStatus( void ); + +/*! + * \brief Indicates if the RTC is already Initalized or not + */ +static bool RtcInitalized = false; + +/*! + * \brief Flag to indicate if the timestamps until the next event is long enough + * to set the MCU into low power mode + */ +static bool RtcTimerEventAllowsLowPower = false; + +/*! + * \brief Flag to disable the LowPower Mode even if the timestamps until the + * next event is long enough to allow Low Power mode + */ +static bool LowPowerDisableDuringTask = false; + +/*! + * Keep the value of the RTC timer when the RTC alarm is set + */ +static uint64_t RtcTimerContext = 0; + +/*! + * Number of seconds in a minute + */ +static const uint8_t SecondsInMinute = 60; + +/*! + * Number of seconds in an hour + */ +static const uint16_t SecondsInHour = 3600; + +/*! + * Number of seconds in a day + */ +static const uint32_t SecondsInDay = 86400; + +/*! + * Number of hours in a day + */ +static const uint8_t HoursInDay = 24; + +/*! + * Number of days in a standard year + */ +static const uint16_t DaysInYear = 365; + +/*! + * Number of days in a leap year + */ +static const uint16_t DaysInLeapYear = 366; + +/*! + * Number of days in a century + */ +static const double DaysInCentury = 36524.219; + +/*! + * Number of days in each month on a normal year + */ +static const uint8_t DaysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +/*! + * Number of days in each month on a leap year + */ +static const uint8_t DaysInMonthLeapYear[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +/*! + * Hold the previous year value to detect the turn of a century + */ +static uint8_t PreviousYear = 0; + +/*! + * Century counter + */ +static uint8_t Century = 0; + +void RtcInit( void ) +{ + if( RtcInitalized == false ) + { + RtcSetConfig( ); + RtcSetAlarmConfig( ); + RtcInitalized = true; + } +} + +static void RtcSetConfig( void ) +{ + RTC_InitTypeDef RTC_InitStructure; + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + /* Enable the PWR clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE ); + + /* Allow access to RTC */ + PWR_RTCAccessCmd( ENABLE ); + + /* Reset RTC Domain */ + RCC_RTCResetCmd( ENABLE ); + RCC_RTCResetCmd( DISABLE ); + + /* Enable the LSE OSC */ + RCC_LSEConfig( RCC_LSE_ON ); + + /* Wait till LSE is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_LSERDY ) == RESET ) + {} + + /* Select the RTC Clock Source */ + RCC_RTCCLKConfig( RCC_RTCCLKSource_LSE ); + + /* Enable the RTC Clock */ + RCC_RTCCLKCmd( ENABLE ); + + RTC_TimeStructInit( &RTC_TimeStruct ); + RTC_DateStructInit( &RTC_DateStruct ); + + RTC_SetDate( RTC_Format_BIN, &RTC_DateStruct ); + RTC_SetTime( RTC_Format_BIN, &RTC_TimeStruct ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); + + /* Configure the RTC data register and RTC prescaler */ + RTC_InitStructure.RTC_AsynchPrediv = 0x01; + RTC_InitStructure.RTC_SynchPrediv = 0x01; + RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24; + RTC_Init( &RTC_InitStructure ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); +} + +static void RtcSetAlarmConfig( void ) +{ + EXTI_InitTypeDef EXTI_InitStructure; + RTC_AlarmTypeDef RTC_AlarmStructure; + NVIC_InitTypeDef NVIC_InitStructure; + + /* EXTI configuration */ + EXTI_ClearITPendingBit( EXTI_Line17 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line17; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable the RTC Alarm Interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = RTC_Alarm_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Set the alarmA Masks */ + RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay; + RTC_SetAlarm( RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure ); + + /* Enable AlarmA interrupt */ + RTC_ITConfig( RTC_IT_ALRA, DISABLE ); + + /* Enable the alarmA */ + RTC_AlarmCmd( RTC_Alarm_A, DISABLE ); +} + +void RtcStopTimer( void ) +{ + RtcClearStatus( ); +} + +uint32_t RtcGetMinimumTimeout( void ) +{ + return( ceil( 3 * RTC_ALARM_TIME_BASE ) ); +} + +void RtcSetTimeout( uint32_t timeout ) +{ + uint32_t timeoutValue = 0; + + timeoutValue = timeout; + + if( timeoutValue < ( 3 * RTC_ALARM_TIME_BASE ) ) + { + timeoutValue = 3 * RTC_ALARM_TIME_BASE; + } + + if( timeoutValue < 55000 ) + { + // we don't go in Low Power mode for delay below 50ms (needed for LEDs) + RtcTimerEventAllowsLowPower = false; + } + else + { + RtcTimerEventAllowsLowPower = true; + } + + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + timeoutValue = timeoutValue - MCU_WAKE_UP_TIME; + } + + RtcStartWakeUpAlarm( timeoutValue ); +} + + +uint32_t RtcGetTimerElapsedTime( void ) +{ + uint64_t CalendarValue = 0; + + CalendarValue = RtcGetCalendarValue( ); + + return( ( uint32_t )( ceil ( ( ( CalendarValue - RtcTimerContext ) + 2 ) * RTC_ALARM_TIME_BASE ) ) ); +} + +uint64_t RtcGetTimerValue( void ) +{ + uint64_t CalendarValue = 0; + + CalendarValue = RtcGetCalendarValue( ); + + return( ( CalendarValue + 2 ) * RTC_ALARM_TIME_BASE ); +} + +static void RtcClearStatus( void ) +{ + /* Clear RTC Alarm Flag */ + RTC_ClearFlag(RTC_FLAG_ALRAF); + + /* Enable RTC Alarm A Interrupt */ + RTC_ITConfig( RTC_IT_ALRA, DISABLE ); + + /* Enable the Alarm A */ + RTC_AlarmCmd( RTC_Alarm_A, DISABLE ); +} + +static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) +{ + uint16_t rtcSeconds = 0; + uint16_t rtcMinutes = 0; + uint16_t rtcHours = 0; + uint16_t rtcDays = 0; + + uint8_t rtcAlarmSeconds = 0; + uint8_t rtcAlarmMinutes = 0; + uint8_t rtcAlarmHours = 0; + uint16_t rtcAlarmDays = 0; + + RTC_AlarmTypeDef RTC_AlarmStructure; + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + RtcClearStatus( ); + + RtcTimerContext = RtcGetCalendarValue( ); + RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); + RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); + + timeoutValue = timeoutValue / RTC_ALARM_TIME_BASE; + + rtcSeconds = ( timeoutValue % SecondsInMinute ) + RTC_TimeStruct.RTC_Seconds; + rtcMinutes = ( ( timeoutValue / SecondsInMinute ) % SecondsInMinute ) + RTC_TimeStruct.RTC_Minutes; + rtcHours = ( ( timeoutValue / SecondsInHour ) % HoursInDay ) + RTC_TimeStruct.RTC_Hours; + rtcDays = ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date; + + rtcAlarmSeconds = ( rtcSeconds ) % 60; + rtcAlarmMinutes = ( ( rtcSeconds / 60 ) + rtcMinutes ) % 60; + rtcAlarmHours = ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) % 24; + rtcAlarmDays = ( ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) / 24 ) + rtcDays; + + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + { + if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ] ) + { + rtcAlarmDays = rtcAlarmDays % DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ]; + } + } + else + { + if( rtcAlarmDays > DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ] ) + { + rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ]; + } + } + + RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = rtcAlarmSeconds; + RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = rtcAlarmMinutes; + RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = rtcAlarmHours; + RTC_AlarmStructure.RTC_AlarmDateWeekDay = ( uint8_t )rtcAlarmDays; + RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_TimeStruct.RTC_H12; + RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; + RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; + RTC_SetAlarm( RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); + + /* Enable RTC Alarm A Interrupt */ + RTC_ITConfig( RTC_IT_ALRA, ENABLE ); + + /* Enable the Alarm A */ + RTC_AlarmCmd( RTC_Alarm_A, ENABLE ); +} + +void RtcEnterLowPowerStopMode( void ) +{ + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + // Disable IRQ while the MCU is being deinitialized to prevent race issues + __disable_irq( ); + + BoardDeInitMcu( ); + + __enable_irq( ); + + /* Disable the Power Voltage Detector */ + PWR_PVDCmd( DISABLE ); + + /* Set MCU in ULP (Ultra Low Power) */ + PWR_UltraLowPowerCmd( ENABLE ); + + /*Disable fast wakeUp*/ + PWR_FastWakeUpCmd( DISABLE ); + + /* Enter Stop Mode */ + PWR_EnterSTOPMode( PWR_Regulator_LowPower, PWR_STOPEntry_WFI ); + } +} + +void RtcRecoverMcuStatus( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + // Disable IRQ while the MCU is not running on HSE + __disable_irq( ); + + /* After wake-up from STOP reconfigure the system clock */ + /* Enable HSE */ + RCC_HSEConfig( RCC_HSE_ON ); + + /* Wait till HSE is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET ) + {} + + /* Enable PLL */ + RCC_PLLCmd( ENABLE ); + + /* Wait till PLL is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_PLLRDY ) == RESET ) + {} + + /* Select PLL as system clock source */ + RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK ); + + /* Wait till PLL is used as system clock source */ + while( RCC_GetSYSCLKSource( ) != 0x0C ) + {} + + /* Set MCU in ULP (Ultra Low Power) */ + PWR_UltraLowPowerCmd( DISABLE ); // add up to 3ms wakeup time + + /* Enable the Power Voltage Detector */ + PWR_PVDCmd( ENABLE ); + + BoardInitMcu( ); + + __enable_irq( ); + } +#endif +} + +/*! + * \brief RTC IRQ Handler on the RTC Alarm + */ +void RTC_Alarm_IRQHandler( void ) +{ + if( RTC_GetITStatus( RTC_IT_ALRA ) != RESET ) + { + RtcRecoverMcuStatus( ); + + TimerIrqHandler( ); + + RTC_ClearITPendingBit( RTC_IT_ALRA ); + EXTI_ClearITPendingBit( EXTI_Line17 ); + } +} + +void BlockLowPowerDuringTask( bool status ) +{ + if( status == true ) + { + RtcRecoverMcuStatus( ); + } + LowPowerDisableDuringTask = status; +} + +void RtcDelayMs( uint32_t delay ) +{ + uint64_t delayValue = 0; + uint64_t timeout = 0; + + delayValue = ( uint64_t )( delay * 1000 ); + + // Wait delay ms + timeout = RtcGetTimerValue( ); + while( ( ( RtcGetTimerValue( ) - timeout ) ) < delayValue ) + { + __NOP( ); + } +} + +uint64_t RtcGetCalendarValue( void ) +{ + uint64_t calendarValue = 0; + uint8_t i = 0; + + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); + RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); + + RTC_WaitForSynchro( ); + + if( ( PreviousYear == 99 ) && ( RTC_DateStruct.RTC_Year == 0 ) ) + { + Century++; + } + PreviousYear = RTC_DateStruct.RTC_Year; + + // century + for( i = 0; i < Century; i++ ) + { + calendarValue += ( uint64_t )( DaysInCentury * SecondsInDay ); + } + + // years + for( i = 0; i < RTC_DateStruct.RTC_Year; i++ ) + { + if( ( i == 0 ) || ( i % 4 == 0 ) ) + { + calendarValue += DaysInLeapYear * SecondsInDay; + } + else + { + calendarValue += DaysInYear * SecondsInDay; + } + } + + // months + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + { + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) + { + calendarValue += DaysInMonthLeapYear[i] * SecondsInDay; + } + } + else + { + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) + { + calendarValue += DaysInMonth[i] * SecondsInDay; + } + } + + // days + calendarValue += ( ( uint32_t )RTC_TimeStruct.RTC_Seconds + + ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * SecondsInMinute ) + + ( ( uint32_t )RTC_TimeStruct.RTC_Hours * SecondsInHour ) + + ( ( uint32_t )( RTC_DateStruct.RTC_Date * SecondsInDay ) ) ); + + return( calendarValue ); +} diff --git a/src/boards/LoRaMote/rtc-board.h b/src/boards/LoRaMote/rtc-board.h new file mode 100644 index 000000000..15fb12730 --- /dev/null +++ b/src/boards/LoRaMote/rtc-board.h @@ -0,0 +1,84 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __RTC_BOARD_H__ +#define __RTC_BOARD_H__ + +/*! + * \brief Initializes the RTC timer + * + * \remark The timer is based on the RTC + */ +void RtcInit( void ); + +/*! + * \brief Stop the RTC Timer + */ +void RtcStopTimer( void ); + +/*! + * \brief Return the minimum timeout the RTC is able to handle + * + * \retval minimum value for a timeout + */ +uint32_t RtcGetMinimumTimeout( void ); + +/*! + * \brief Start the RTC timer + * + * \remark The timer is based on the RTC Alarm running at 32.768KHz + * + * \param[IN] timeout Duration of the Timer + */ +void RtcSetTimeout( uint32_t timeout ); + +/*! + * \brief Get the RTC timer value + * + * \retval RTC Timer value + */ +uint64_t RtcGetTimerValue( void ); + +/*! + * \brief Get the RTC timer elapsed time since the last Alarm was set + * + * \retval RTC Elapsed time since the last alarm + */ +uint32_t RtcGetTimerElapsedTime( void ); + +/*! + * \brief This function block the MCU from going into Low Power mode + * + * \param [IN] Status enable or disable + */ +void BlockLowPowerDuringTask ( bool Status ); + +/*! + * \brief Sets the MCU in low power STOP mode + */ +void RtcEnterLowPowerStopMode( void ); + +/*! + * \brief Restore the MCU to its normal operation mode + */ +void RtcRecoverMcuStatus( void ); + +/*! + * \brief Perfoms a standard blocking delay in the code execution + * + * \param [IN] delay Delay value in ms + */ +void RtcDelayMs ( uint32_t delay ); + +#endif // __RTC_BOARD_H__ diff --git a/src/boards/LoRaMote/spi-board.c b/src/boards/LoRaMote/spi-board.c new file mode 100644 index 000000000..7497cd1e2 --- /dev/null +++ b/src/boards/LoRaMote/spi-board.c @@ -0,0 +1,144 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board SPI driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "spi-board.h" +#include "stm32l1xx_spi.h" +#include "stm32l1xx_gpio.h" + +/*! + * MCU SPI peripherals enumeration + */ +typedef enum { + SPI_1 = ( uint32_t )SPI1_BASE, + SPI_2 = ( uint32_t )SPI2_BASE, + SPI_3 = ( uint32_t )SPI3_BASE, +} SPIName; + +SPI_InitTypeDef SPI_InitStructure; + +void SpiInit( Spi_t *obj, PinNames mosi, PinNames miso, PinNames sclk, PinNames nss ) +{ + GpioInit( &obj->Mosi, mosi, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Miso, miso, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Sclk, sclk, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + + // TODO: Make independent of stm32l1xx_gpio.h + GPIO_PinAFConfig( obj->Mosi.port, ( obj->Mosi.pin & 0x0F ), GPIO_AF_SPI1 ); + GPIO_PinAFConfig( obj->Miso.port, ( obj->Miso.pin & 0x0F ), GPIO_AF_SPI1 ); + GPIO_PinAFConfig( obj->Sclk.port, ( obj->Sclk.pin & 0x0F ), GPIO_AF_SPI1 ); + + if( nss != NC ) + { + GpioInit( &obj->Nss, nss, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + // TODO: Make independent of stm32l1xx_gpio.h + GPIO_PinAFConfig( obj->Nss.port, ( obj->Nss.pin & 0x0F ), GPIO_AF_SPI1 ); + } + else + { + SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; + } + + // Choose SPI interface according to the given pins + obj->Spi = ( SPI_TypeDef* )SPI1_BASE; + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE ); + + if( nss == NC ) + { + // 8 bits, CPOL = 0, CPHA = 0, MASTER + SpiFormat( obj, 8, 0, 0, 0 ); + } + else + { + // 8 bits, CPOL = 0, CPHA = 0, SLAVE + SpiFormat( obj, 8, 0, 0, 1 ); + } + SpiFrequency( obj, 10000000 ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +void SpiDeInit( Spi_t *obj ) +{ + SPI_Cmd( obj->Spi, DISABLE ); + SPI_I2S_DeInit( obj->Spi ); + + GpioInit( &obj->Mosi, obj->Mosi.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Miso, obj->Miso.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Sclk, obj->Sclk.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Nss, obj->Nss.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + +} + +void SpiFormat( Spi_t *obj, int8_t bits, int8_t cpol, int8_t cpha, int8_t slave ) +{ + SPI_Cmd( obj->Spi, DISABLE ); + + if( ( ( ( bits == 8 ) || ( bits == 16 ) ) == false ) || + ( ( ( cpol >= 0 ) && ( cpol <= 1 ) ) == false ) || + ( ( ( cpha >= 0 ) && ( cpha <= 1 ) ) == false ) ) + { + // SPI error + while( 1 ); + } + + SPI_InitStructure.SPI_Mode = ( slave == 0x01 ) ? SPI_Mode_Slave : SPI_Mode_Master; + SPI_InitStructure.SPI_CPOL = ( cpol == 0x01 ) ? SPI_CPOL_High : SPI_CPOL_Low; + SPI_InitStructure.SPI_CPHA = ( cpha == 0x01 ) ? SPI_CPHA_2Edge : SPI_CPHA_1Edge; + SPI_InitStructure.SPI_DataSize = ( bits == 8 ) ? SPI_DataSize_8b : SPI_DataSize_16b; + SPI_Init( obj->Spi, &SPI_InitStructure ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +void SpiFrequency( Spi_t *obj, uint32_t hz ) +{ + uint32_t divisor; + + SPI_Cmd( obj->Spi, DISABLE ); + + divisor = SystemCoreClock / hz; + + // Find the nearest power-of-2 + divisor = divisor > 0 ? divisor-1 : 0; + divisor |= divisor >> 1; + divisor |= divisor >> 2; + divisor |= divisor >> 4; + divisor |= divisor >> 8; + divisor |= divisor >> 16; + divisor++; + + divisor = __ffs( divisor ) - 1; + + divisor = ( divisor > 0x07 ) ? 0x07 : divisor; + + SPI_InitStructure.SPI_BaudRatePrescaler = divisor << 3; + SPI_Init( obj->Spi, &SPI_InitStructure ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +uint16_t SpiInOut( Spi_t *obj, uint16_t outData ) +{ + if( ( obj == NULL ) || ( obj->Spi ) == NULL ) + { + while( 1 ); + } + + while( SPI_I2S_GetFlagStatus( obj->Spi, SPI_I2S_FLAG_TXE ) == RESET ); + SPI_I2S_SendData( obj->Spi, outData ); + while( SPI_I2S_GetFlagStatus( obj->Spi, SPI_I2S_FLAG_RXNE ) == RESET ); + return SPI_I2S_ReceiveData( obj->Spi ); +} + diff --git a/src/boards/LoRaMote/spi-board.h b/src/boards/LoRaMote/spi-board.h new file mode 100644 index 000000000..0dfbc8408 --- /dev/null +++ b/src/boards/LoRaMote/spi-board.h @@ -0,0 +1,30 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board SPI driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SPI_MCU_H__ +#define __SPI_MCU_H__ + +/*! + * SPI driver structure definition + */ +struct Spi_s +{ + SPI_TypeDef *Spi; + Gpio_t Mosi; + Gpio_t Miso; + Gpio_t Sclk; + Gpio_t Nss; +}; + +#endif // __SPI_MCU_H__ diff --git a/src/boards/Bleeper/sx1272-board.c b/src/boards/LoRaMote/sx1272-board.c similarity index 93% rename from src/boards/Bleeper/sx1272-board.c rename to src/boards/LoRaMote/sx1272-board.c index ffc03aad7..70ae89438 100644 --- a/src/boards/Bleeper/sx1272-board.c +++ b/src/boards/LoRaMote/sx1272-board.c @@ -29,20 +29,18 @@ const struct Radio_s Radio = { SX1272Init, SX1272GetStatus, - SX1272SetChannel, SX1272IsChannelFree, + SX1272Random, SX1272SetRxConfig, SX1272SetTxConfig, + SX1272CheckRfFrequency, SX1272GetTimeOnAir, SX1272Send, - SX1272SetSleep, SX1272SetStby, SX1272SetRx, - SX1272ReadRssi, - SX1272Write, SX1272Read, SX1272WriteBuffer, @@ -91,6 +89,11 @@ void SX1272IoDeInit( void ) GpioInit( &SX1272.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); } +uint8_t SX1272GetPaSelect( uint32_t channel ) +{ + return RF_PACONFIG_PASELECT_PABOOST; +} + void SX1272SetAntSwLowPower( bool status ) { if( RadioIsActive != status ) @@ -140,3 +143,9 @@ void SX1272SetAntSw( uint8_t rxTx ) GpioWrite( &AntTx, 0 ); } } + +bool SX1272CheckRfFrequency( uint32_t frequency ) +{ + // Implement check. Currently all frequencies are supportted + return true; +} diff --git a/src/boards/Bleeper/sx1272-board.h b/src/boards/LoRaMote/sx1272-board.h similarity index 75% rename from src/boards/Bleeper/sx1272-board.h rename to src/boards/LoRaMote/sx1272-board.h index 005027acd..cf5856443 100644 --- a/src/boards/Bleeper/sx1272-board.h +++ b/src/boards/LoRaMote/sx1272-board.h @@ -22,23 +22,21 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define RADIO_INIT_REGISTERS_VALUE \ { \ - { MODEM_FSK , REG_PACONFIG , 0x0F },\ { MODEM_FSK , REG_LNA , 0x23 },\ - { MODEM_FSK , REG_RXCONFIG , 0x0E },\ + { MODEM_FSK , REG_RXCONFIG , 0x1E },\ { MODEM_FSK , REG_RSSICONFIG , 0xD2 },\ - { MODEM_FSK , REG_OSC , 0x07 },\ { MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\ - { MODEM_FSK , REG_PREAMBLELSB , 0x08 },\ - { MODEM_FSK , REG_SYNCVALUE1 , 0x69 },\ - { MODEM_FSK , REG_SYNCVALUE2 , 0x81 },\ - { MODEM_FSK , REG_SYNCVALUE3 , 0x7E },\ - { MODEM_FSK , REG_SYNCVALUE4 , 0x96 },\ + { MODEM_FSK , REG_OSC , 0x07 },\ + { MODEM_FSK , REG_SYNCCONFIG , 0x12 },\ + { MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\ + { MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\ + { MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\ + { MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\ { MODEM_FSK , REG_FIFOTHRESH , 0x8F },\ { MODEM_FSK , REG_IMAGECAL , 0x02 },\ { MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\ { MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\ { MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\ - { MODEM_LORA, 0x31 , 0x43 },\ } \ /*! @@ -60,6 +58,14 @@ void SX1272IoIrqInit( DioIrqHandler **irqHandlers ); */ void SX1272IoDeInit( void ); +/*! + * \brief Gets the board PA selection configuration + * + * \param [IN] channel Channel frequency in Hz + * \retval PaSelect RegPaConfig PaSelect value + */ +uint8_t SX1272GetPaSelect( uint32_t channel ); + /*! * \brief Set the RF Switch I/Os pins in Low Power mode * @@ -88,6 +94,14 @@ void SX1272AntSwDeInit( void ); */ void SX1272SetAntSw( uint8_t rxTx ); +/*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ +bool SX1272CheckRfFrequency( uint32_t frequency ); + /*! * Radio hardware and global parameters */ diff --git a/src/boards/LoRaMote/timer-board.c b/src/boards/LoRaMote/timer-board.c new file mode 100644 index 000000000..61ecdc804 --- /dev/null +++ b/src/boards/LoRaMote/timer-board.c @@ -0,0 +1,169 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "timer-board.h" + +/*! + * Hardware Time base in us + */ +#define HW_TIMER_TIME_BASE 100 //us + +/*! + * Hardware Timer tick counter + */ +volatile uint64_t TimerTickCounter = 1; + +/*! + * Saved value of the Tick counter at the start of the next event + */ +static uint64_t TimerTickCounterContext = 0; + +/*! + * Value trigging the IRQ + */ +volatile uint64_t TimeoutCntValue = 0; + +void TimerIncrementTickCounter( void ); + + +void TimerHwInit( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; + + /* TIM2 clock enable */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE ); + + /* --------------------------NVIC Configuration -------------------------------*/ + /* Enable the TIM2 gloabal Interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + + NVIC_Init( &NVIC_InitStructure ); + + TimeoutCntValue = 0; + + /* Time base configuration */ + TIM_TimeBaseStructure.TIM_Period = 3199; + TIM_TimeBaseStructure.TIM_Prescaler = 0; + TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; + TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; + TIM_TimeBaseInit( TIM2, &TIM_TimeBaseStructure ); + + TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); + + /* TIM2 disable counter */ + TIM_Cmd( TIM2, ENABLE ); +} + +void TimerHwDeInit( void ) +{ + /* Deinitialize the timer */ + TIM_DeInit( TIM2 ); +} + +uint32_t TimerHwGetMinimumTimeout( void ) +{ + return( ceil( 2 * HW_TIMER_TIME_BASE ) ); +} + +void TimerHwStart( uint32_t val ) +{ + TimerTickCounterContext = TimerHwGetTimerValue( ); + + if( val <= HW_TIMER_TIME_BASE + 1 ) + { + TimeoutCntValue = TimerTickCounterContext + 1; + } + else + { + TimeoutCntValue = TimerTickCounterContext + ( ( val - 1 ) / HW_TIMER_TIME_BASE ); + } +} + +void TimerHwStop( void ) +{ + TIM_ITConfig( TIM2, TIM_IT_CC1, DISABLE ); + TIM_Cmd( TIM2, DISABLE ); +} + +void TimerHwDelayMs( uint32_t delay ) +{ + uint64_t delayValue = 0; + uint64_t timeout = 0; + + delayValue = delay * 1000; + + timeout = TimerHwGetTimerValue( ); + + while( ( ( TimerHwGetTimerValue( ) - timeout ) * HW_TIMER_TIME_BASE ) < delayValue ) + { + } +} + +uint64_t TimerHwGetElapsedTime( void ) +{ + return( ( ( TimerHwGetTimerValue( ) - TimerTickCounterContext ) + 1 ) * HW_TIMER_TIME_BASE ); +} + +uint64_t TimerHwGetTimerValue( void ) +{ + uint64_t val = 0; + + __disable_irq( ); + + val = TimerTickCounter; + + __enable_irq( ); + + return( val ); +} + +void TimerIncrementTickCounter( void ) +{ + __disable_irq( ); + + TimerTickCounter++; + + __enable_irq( ); +} + +/*! + * Timer IRQ handler + */ +void TIM2_IRQHandler( void ) +{ + if( TIM_GetITStatus( TIM2, TIM_IT_Update ) != RESET ) + { + TimerIncrementTickCounter( ); + + if( TimerTickCounter == TimeoutCntValue ) + { + TimerIrqHandler( ); + } + + TIM_ClearITPendingBit( TIM2, TIM_IT_Update ); + } +} + +void TimerHwEnterLowPowerStopMode( void ) +{ +#ifndef USE_DEBUGGER + __WFI( ); +#endif +} diff --git a/src/boards/LoRaMote/timer-board.h b/src/boards/LoRaMote/timer-board.h new file mode 100644 index 000000000..2e6e494a4 --- /dev/null +++ b/src/boards/LoRaMote/timer-board.h @@ -0,0 +1,71 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU timer + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __TIMER_BOARD_H__ +#define __TIMER_BOARD_H__ + +/*! + * \brief Initializes the timer + * + * \remark The timer is based on TIM2 with a 10uS time basis + */ +void TimerHwInit( void ); + +/*! + * \brief DeInitializes the timer + */ +void TimerHwDeInit( void ); + +/*! + * \brief Return the minimum timeout the Timer is able to handle + * + * \retval minimum value for a timeout + */ +uint32_t TimerHwGetMinimumTimeout( void ); + +/*! + * \brief Start the Standard Timer counter + * + * \param [IN] rtcCounter Timer duration + */ +void TimerHwStart( uint32_t rtcCounter ); + +/*! + * \brief Perfoms a standard blocking delay in the code execution + * + * \param [IN] delay Delay value in ms + */ +void TimerHwDelayMs( uint32_t delay ); + +/*! + * \brief Stop the the Standard Timer counter + */ +void TimerHwStop( void ); + +/*! + * \brief Return the value on the timer counter + */ +uint64_t TimerHwGetTimerValue( void ); + +/*! + * \brief Return the value on the timer Tick counter + */ +uint64_t TimerHwGetElapsedTime( void ); + +/*! + * \brief Set the ARM core in Wait For Interrupt mode (only working if Debug mode is not used) + */ +void TimerHwEnterLowPowerStopMode( void ); + +#endif // __TIMER_BOARD_H__ diff --git a/src/boards/LoRaMote-eu868/uart-board.c b/src/boards/LoRaMote/uart-board.c similarity index 96% rename from src/boards/LoRaMote-eu868/uart-board.c rename to src/boards/LoRaMote/uart-board.c index 1f1dc272c..332532bfd 100644 --- a/src/boards/LoRaMote-eu868/uart-board.c +++ b/src/boards/LoRaMote/uart-board.c @@ -37,7 +37,7 @@ void UartMcuConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_ NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init( &NVIC_InitStructure ); @@ -173,20 +173,6 @@ void USART1_IRQHandler( void ) { uint8_t data; - if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET ) - { - data = USART_ReceiveData( USART1 ); - if( IsFifoFull( &Uart1.FifoRx ) == false ) - { - // Read one byte from the receive data register - FifoPush( &Uart1.FifoRx, data ); - } - if( Uart1.IrqNotify != NULL ) - { - Uart1.IrqNotify( UART_NOTIFY_RX ); - } - } - if( USART_GetITStatus( USART1, USART_IT_TXE ) != RESET ) { if( IsFifoEmpty( &Uart1.FifoTx ) == false ) @@ -205,4 +191,23 @@ void USART1_IRQHandler( void ) Uart1.IrqNotify( UART_NOTIFY_TX ); } } + + if( USART_GetITStatus( USART1, USART_IT_ORE_RX ) != RESET ) + { + USART_ReceiveData( USART1 ); + } + + if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET ) + { + data = USART_ReceiveData( USART1 ); + if( IsFifoFull( &Uart1.FifoRx ) == false ) + { + // Read one byte from the receive data register + FifoPush( &Uart1.FifoRx, data ); + } + if( Uart1.IrqNotify != NULL ) + { + Uart1.IrqNotify( UART_NOTIFY_RX ); + } + } } diff --git a/src/boards/LoRaMote-eu868/uart-board.h b/src/boards/LoRaMote/uart-board.h similarity index 100% rename from src/boards/LoRaMote-eu868/uart-board.h rename to src/boards/LoRaMote/uart-board.h diff --git a/src/boards/LoRaMote/uart-usb-board.c b/src/boards/LoRaMote/uart-usb-board.c new file mode 100644 index 000000000..2bb68ec92 --- /dev/null +++ b/src/boards/LoRaMote/uart-usb-board.c @@ -0,0 +1,163 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "usb_lib.h" +#include "usb_desc.h" +#include "usb_mem.h" + +#include "board.h" + +#include "usb_istr.h" +#include "usb_pwr.h" + +#include "uart-usb-board.h" + +/*! + * FIFO buffers size + */ +#define FIFO_TX_SIZE 64 +#define FIFO_RX_SIZE 64 + +uint8_t CdcTxBuffer[FIFO_TX_SIZE]; +uint8_t CdcRxBuffer[FIFO_RX_SIZE]; + +__IO uint32_t UsbPacketTx = 1; +__IO uint8_t UsbTxBuffer[64]; +__IO uint32_t UsbTxLength; + +__IO uint8_t UsbRxBuffer[64]; +__IO uint32_t UsbRxLength; + +void UartUsbInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ) +{ + obj->UartId = uartId; +} + +void UartUsbConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ) +{ + FifoInit( &obj->FifoTx, CdcTxBuffer, FIFO_RX_SIZE ); + FifoInit( &obj->FifoRx, CdcRxBuffer, FIFO_RX_SIZE ); +} + +void UartUsbDeInit( Uart_t *obj ) +{ + +} + +uint8_t UartUsbPutChar( Uart_t *obj, uint8_t data ) +{ + if( UsbMcuIsDeviceConfigured( ) == false ) + { + return 2; + } + + if( IsFifoFull( &obj->FifoTx ) == false ) + { + __disable_irq( ); + FifoPush( &obj->FifoTx, data ); + __enable_irq( ); + + if( UsbPacketTx == 1 ) + { + /*Sent flag*/ + UsbPacketTx = 0; + SetEPTxCount( ENDP1, 0 ); + SetEPTxValid( ENDP1 ); + } + return 0; // OK + } + return 1; // Busy +// if( UsbPacketTx == 1 ) +// { +// /*Sent flag*/ +// UsbPacketTx = 0; +// /* send packet to PMA*/ +// UserToPMABufferCopy( ( unsigned char* )&data, ENDP1_TXADDR, 1 ); +// SetEPTxCount( ENDP1, 1 ); +// SetEPTxValid( ENDP1 ); +// return 0; // OK +// } +// else +// { +// if( IsFifoFull( &obj->FifoTx ) == false ) +// { +// __disable_irq( ); +// FifoPush( &obj->FifoTx, data ); +// __enable_irq( ); +// return 0; // OK +// } +// } +// return 1; // Busy +} + +uint8_t UartUsbGetChar( Uart_t *obj, uint8_t *data ) +{ + if( UsbMcuIsDeviceConfigured( ) == false ) + { + return 2; + } + SetEPRxValid( ENDP3 ); + if( IsFifoEmpty( &obj->FifoRx ) == false ) + { + __disable_irq( ); + *data = FifoPop( &obj->FifoRx ); + __enable_irq( ); + return 0; + } + return 1; +} + +void EP1_IN_Callback (void) +{ + UsbPacketTx = 1; + + UsbTxLength = 0; + + while( IsFifoEmpty( &UartUsb.FifoTx ) == false ) + { + UsbTxBuffer[UsbTxLength] = FifoPop( &UartUsb.FifoTx ); + UsbTxLength++; + } + + if( UsbTxLength > 0 ) + { + UsbPacketTx = 0; + UserToPMABufferCopy( ( unsigned char* )UsbTxBuffer, ENDP1_TXADDR, UsbTxLength ); + SetEPTxCount( ENDP1, UsbTxLength ); + SetEPTxValid( ENDP1 ); + + } +} + +void EP3_OUT_Callback(void) +{ + uint8_t i; + + UsbRxLength = GetEPRxCount( ENDP3 ); + PMAToUserBufferCopy( ( unsigned char* )UsbRxBuffer, ENDP3_RXADDR, UsbRxLength ); + + for( i = 0; i < UsbRxLength; i++ ) + { + if( IsFifoFull( &UartUsb.FifoRx ) == false ) + { + // Read one byte from the receive data register + FifoPush( &UartUsb.FifoRx, UsbRxBuffer[i] ); + } + } + + if( UartUsb.IrqNotify != NULL ) + { + UartUsb.IrqNotify( UART_NOTIFY_RX ); + } +} diff --git a/src/boards/LoRaMote/uart-usb-board.h b/src/boards/LoRaMote/uart-usb-board.h new file mode 100644 index 000000000..9c9c28b45 --- /dev/null +++ b/src/boards/LoRaMote/uart-usb-board.h @@ -0,0 +1,65 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __UART_USB_H__ +#define __UART_USB_H__ + +/*! + * \brief Initializes the UART object and MCU peripheral + * + * \param [IN] obj UART object + * \param [IN] tx UART Tx pin name to be used + * \param [IN] rx UART Rx pin name to be used + */ +void UartUsbInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ); + +/*! + * \brief Initializes the UART object and USB peripheral + * + * \param [IN] obj UART object + * \param [IN] mode Mode of operation for the UART + * \param [IN] baudrate UART baudrate + * \param [IN] wordLength packet length + * \param [IN] stopBits stop bits setup + * \param [IN] parity packet parity + * \param [IN] flowCtrl UART flow control + */ +void UartUsbConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ); + +/*! + * \brief DeInitializes the UART object and USB peripheral + * + * \param [IN] obj UART object + */ +void UartUsbDeInit( Uart_t *obj ); + +/*! + * \brief Sends a character to the UART + * + * \param [IN] obj UART object + * \param [IN] data Character to be sent + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartUsbPutChar( Uart_t *obj, uint8_t data ); + +/*! + * \brief Gets a character from the UART + * + * \param [IN] obj UART object + * \param [IN] data Received character + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartUsbGetChar( Uart_t *obj, uint8_t *data ); + +#endif // __UART_USB_H__ diff --git a/src/boards/LoRaMote/usb-cdc-board.c b/src/boards/LoRaMote/usb-cdc-board.c new file mode 100644 index 000000000..a68e681d9 --- /dev/null +++ b/src/boards/LoRaMote/usb-cdc-board.c @@ -0,0 +1,139 @@ + +#include "usb_lib.h" +#include "usb_istr.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "board.h" +#include "usb_pwr.h" + +#include "stm32l1xx_exti.h" + +EXTI_InitTypeDef EXTI_InitStructure; + +static void IntToUnicode( uint32_t value, uint8_t *pbuf, uint8_t len ); + +extern LINE_CODING linecoding; + +void UsbMcuInit( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + + /* Enable the SYSCFG module clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + /* Configure the EXTI line 18 connected internally to the USB IP */ + EXTI_ClearITPendingBit( EXTI_Line18 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line18; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable USB clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_USB, ENABLE ); + + /* 2 bit for pre-emption priority, 2 bits for subpriority */ + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); + + NVIC_InitStructure.NVIC_IRQChannel = USB_LP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Enable the USB Wake-up interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = USB_FS_WKUP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + USB_Init( ); +} + +void UsbMcuEnterLowPowerMode( void ) +{ + /* Set the device state to suspend */ + bDeviceState = SUSPENDED; +} + +void UsbMcuLeaveLowPowerMode( void ) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Set the device state to the correct state */ + if( pInfo->Current_Configuration != 0 ) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } + else + { + bDeviceState = ATTACHED; + } + /*Enable SystemCoreClock*/ + SystemInit( ); +} + +void UsbMcuCableConfig( FunctionalState newState ) +{ + if( newState != DISABLE ) + { + SYSCFG_USBPuCmd( ENABLE ); + } + else + { + SYSCFG_USBPuCmd( DISABLE ); + } +} + +void UsbMcuGetSerialNum( void ) +{ + uint32_t deviceSerial0, deviceSerial1, deviceSerial2; + + deviceSerial0 = *( uint32_t* )ID1; + deviceSerial1 = *( uint32_t* )ID2; + deviceSerial2 = *( uint32_t* )ID3; + + deviceSerial0 += deviceSerial2; + + if( deviceSerial0 != 0 ) + { + IntToUnicode( deviceSerial0, &Virtual_Com_Port_StringSerial[2] , 8 ); + IntToUnicode( deviceSerial1, &Virtual_Com_Port_StringSerial[18], 4 ); + } +} + +static void IntToUnicode( uint32_t value , uint8_t *pbuf , uint8_t len ) +{ + uint8_t idx = 0; + + for( idx = 0; idx < len; idx++ ) + { + if( ( ( value >> 28 ) ) < 0xA ) + { + pbuf[2 * idx] = ( value >> 28 ) + '0'; + } + else + { + pbuf[2 * idx] = ( value >> 28 ) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} + +bool UsbMcuIsDeviceConfigured( void ) +{ + return bDeviceState == CONFIGURED; +} + +void USB_LP_IRQHandler(void) +{ + USB_Istr( ); +} + +void USB_FS_WKUP_IRQHandler(void) +{ + EXTI_ClearITPendingBit( EXTI_Line18 ); +} diff --git a/src/boards/LoRaMote/usb-cdc-board.h b/src/boards/LoRaMote/usb-cdc-board.h new file mode 100644 index 000000000..4235b51f8 --- /dev/null +++ b/src/boards/LoRaMote/usb-cdc-board.h @@ -0,0 +1,19 @@ +#ifndef __BOARD_USB_H__ +#define __BOARD_USB_H__ + +#define Get_SerialNum UsbMcuGetSerialNum +#define USB_Cable_Config UsbMcuCableConfig +#define Leave_LowPowerMode UsbMcuLeaveLowPowerMode +#define Enter_LowPowerMode UsbMcuEnterLowPowerMode + +void UsbMcuInit( void ); +void UsbMcuEnterLowPowerMode( void ); +void UsbMcuLeaveLowPowerMode( void ); +void UsbMcuCableConfig( FunctionalState newState ); +void UsbMcuGetSerialNum( void ); +bool UsbMcuIsDeviceConfigured( void ); +uint32_t UsbMcuCdcTxData( uint8_t *buffer, uint8_t length ); +uint32_t UsbMcuCdcRxData( void ); + + +#endif // __BOARD_USB_H__ diff --git a/src/boards/LoRaMote/usb-dfu-board.c b/src/boards/LoRaMote/usb-dfu-board.c new file mode 100644 index 000000000..2460466f8 --- /dev/null +++ b/src/boards/LoRaMote/usb-dfu-board.c @@ -0,0 +1,169 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: DFU bootloader USB initialisation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "usb_lib.h" +#include "usb_istr.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "board.h" +#include "usb_pwr.h" + +#include "usb-dfu-board.h" + +#include "dfu_mal.h" + +EXTI_InitTypeDef EXTI_InitStructure; + +static void IntToUnicode( uint32_t value, uint8_t *pbuf, uint8_t len ); + +void UsbMcuInit( void ) +{ + /* Enable the SYSCFG module clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + FLASH_Unlock( ); + + /* Init the media interface */ + MAL_Init( ); + USB_Cable_Config( ENABLE ); + + /* Configure the EXTI line 18 connected internally to the USB IP */ + EXTI_ClearITPendingBit( EXTI_Line18 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line18; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable USB clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_USB, ENABLE ); + + UsbMcuInterruptsConfig ( ); + + USB_Init( ); +} + +void UsbMcuInterruptsConfig( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + + /* 2 bit for pre-emption priority, 2 bits for subpriority */ + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); + + NVIC_InitStructure.NVIC_IRQChannel = USB_LP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Enable the USB Wake-up interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = USB_FS_WKUP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); +} + +void UsbMcuEnterLowPowerMode( void ) +{ + /* Set the device state to suspend */ + bDeviceState = SUSPENDED; +} + +void UsbMcuLeaveLowPowerMode( void ) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Set the device state to the correct state */ + if( pInfo->Current_Configuration != 0 ) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } + else + { + bDeviceState = ATTACHED; + } + /*Enable SystemCoreClock*/ + SystemInit( ); +} + +void UsbMcuCableConfig( FunctionalState newState ) +{ + if( newState != DISABLE ) + { + SYSCFG_USBPuCmd( ENABLE ); + } + else + { + SYSCFG_USBPuCmd( DISABLE ); + } +} + +void UsbMcuResetDevice( void ) +{ + UsbMcuCableConfig( DISABLE ); + NVIC_SystemReset( ); +} + +void UsbMcuGetSerialNum( void ) +{ + uint32_t deviceSerial0, deviceSerial1, deviceSerial2; + + deviceSerial0 = *( uint32_t* )ID1; + deviceSerial1 = *( uint32_t* )ID2; + deviceSerial2 = *( uint32_t* )ID3; + + deviceSerial0 += deviceSerial2; + + if( deviceSerial0 != 0 ) + { + IntToUnicode( deviceSerial0, &DFU_StringSerial[2] , 8 ); + IntToUnicode( deviceSerial1, &DFU_StringSerial[18], 4 ); + } +} + +static void IntToUnicode( uint32_t value , uint8_t *pbuf , uint8_t len ) +{ + uint8_t idx = 0; + + for( idx = 0; idx < len; idx++ ) + { + if( ( ( value >> 28 ) ) < 0xA ) + { + pbuf[2 * idx] = ( value >> 28 ) + '0'; + } + else + { + pbuf[2 * idx] = ( value >> 28 ) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} + +bool UsbMcuIsDeviceConfigured( void ) +{ + return bDeviceState == CONFIGURED; +} + +void USB_LP_IRQHandler(void) +{ + USB_Istr( ); +} + +void USB_FS_WKUP_IRQHandler(void) +{ + EXTI_ClearITPendingBit( EXTI_Line18 ); +} diff --git a/src/boards/LoRaMote/usb-dfu-board.h b/src/boards/LoRaMote/usb-dfu-board.h new file mode 100644 index 000000000..d59a1e106 --- /dev/null +++ b/src/boards/LoRaMote/usb-dfu-board.h @@ -0,0 +1,47 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: DFU bootloader USB initialisation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __BOARD_USB_H__ +#define __BOARD_USB_H__ + +#include +#include "stm32l1xx.h" + +#define ApplicationAddress 0x08003000 + +#define Get_SerialNum UsbMcuGetSerialNum +#define USB_Cable_Config UsbMcuCableConfig +#define Leave_LowPowerMode UsbMcuLeaveLowPowerMode +#define Enter_LowPowerMode UsbMcuEnterLowPowerMode +#define USB_Interrupts_Config UsbMcuInterruptsConfig +#define Reset_Device UsbMcuResetDevice + +void SMI_FLASH_Init( void ); +void SMI_FLASH_SectorErase( uint32_t Address ); +void SMI_FLASH_WordWrite( uint32_t Address, uint32_t Data ); +void SMI_FLASH_PageWrite( uint32_t Address, uint32_t* wBuffer ); + +void UsbMcuInit( void ); +void UsbMcuInterruptsConfig( void ); +void UsbMcuEnterLowPowerMode( void ); +void UsbMcuLeaveLowPowerMode( void ); +void UsbMcuCableConfig( FunctionalState newState ); +void UsbMcuResetDevice( void ); +void UsbMcuGetSerialNum( void ); +bool UsbMcuIsDeviceConfigured( void ); +uint32_t UsbMcuCdcTxData( uint8_t *buffer, uint8_t length ); +uint32_t UsbMcuCdcRxData( void ); + + +#endif // __BOARD_USB_H__ diff --git a/src/boards/LoRaMote/usb/cdc/inc/usb_conf.h b/src/boards/LoRaMote/usb/cdc/inc/usb_conf.h new file mode 100644 index 000000000..f1fe606e6 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/inc/usb_conf.h @@ -0,0 +1,103 @@ +/** + ****************************************************************************** + * @file usb_conf.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Virtual COM Port Demo configuration header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CONF_H +#define __USB_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/* EP_NUM */ +/* defines how many endpoints are used by the device */ +/*-------------------------------------------------------------*/ + +#define EP_NUM (4) + +/*-------------------------------------------------------------*/ +/* -------------- Buffer Description Table -----------------*/ +/*-------------------------------------------------------------*/ +/* buffer table base address */ +/* buffer table base address */ +#define BTABLE_ADDRESS (0x00) + +/* EP0 */ +/* rx/tx buffer base address */ +#define ENDP0_RXADDR (0x40) +#define ENDP0_TXADDR (0x80) + +/* EP1 */ +/* tx buffer base address */ +#define ENDP1_TXADDR (0xC0) +#define ENDP2_TXADDR (0x100) +#define ENDP3_RXADDR (0x110) + + +/*-------------------------------------------------------------*/ +/* ------------------- ISTR events -------------------------*/ +/*-------------------------------------------------------------*/ +/* IMR_MSK */ +/* mask defining which events has to be handled */ +/* by the device application software */ +#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \ + | CNTR_ESOFM | CNTR_RESETM ) + +/*#define CTR_CALLBACK*/ +/*#define DOVR_CALLBACK*/ +/*#define ERR_CALLBACK*/ +/*#define WKUP_CALLBACK*/ +/*#define SUSP_CALLBACK*/ +/*#define RESET_CALLBACK*/ +/*#define SOF_CALLBACK*/ +/*#define ESOF_CALLBACK*/ +/* CTR service routines */ +/* associated to defined endpoints */ +/*#define EP1_IN_Callback NOP_Process*/ +#define EP2_IN_Callback NOP_Process +#define EP3_IN_Callback NOP_Process +#define EP4_IN_Callback NOP_Process +#define EP5_IN_Callback NOP_Process +#define EP6_IN_Callback NOP_Process +#define EP7_IN_Callback NOP_Process + +#define EP1_OUT_Callback NOP_Process +#define EP2_OUT_Callback NOP_Process +/*#define EP3_OUT_Callback NOP_Process*/ +#define EP4_OUT_Callback NOP_Process +#define EP5_OUT_Callback NOP_Process +#define EP6_OUT_Callback NOP_Process +#define EP7_OUT_Callback NOP_Process + +#endif /* __USB_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/inc/usb_desc.h b/src/boards/LoRaMote/usb/cdc/inc/usb_desc.h new file mode 100644 index 000000000..6a2687082 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/inc/usb_desc.h @@ -0,0 +1,66 @@ +/** + ****************************************************************************** + * @file usb_desc.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptor Header for Virtual COM Port Device + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DESC_H +#define __USB_DESC_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported define -----------------------------------------------------------*/ +#define USB_DEVICE_DESCRIPTOR_TYPE 0x01 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 +#define USB_STRING_DESCRIPTOR_TYPE 0x03 +#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 + +#define VIRTUAL_COM_PORT_DATA_SIZE 64 +#define VIRTUAL_COM_PORT_INT_SIZE 8 + +#define VIRTUAL_COM_PORT_SIZ_DEVICE_DESC 18 +#define VIRTUAL_COM_PORT_SIZ_CONFIG_DESC 67 +#define VIRTUAL_COM_PORT_SIZ_STRING_LANGID 4 +#define VIRTUAL_COM_PORT_SIZ_STRING_VENDOR 38 +#define VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT 50 +#define VIRTUAL_COM_PORT_SIZ_STRING_SERIAL 26 + +#define STANDARD_ENDPOINT_DESC_SIZE 0x09 + +/* Exported functions ------------------------------------------------------- */ +extern const uint8_t Virtual_Com_Port_DeviceDescriptor[VIRTUAL_COM_PORT_SIZ_DEVICE_DESC]; +extern const uint8_t Virtual_Com_Port_ConfigDescriptor[VIRTUAL_COM_PORT_SIZ_CONFIG_DESC]; + +extern const uint8_t Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID]; +extern const uint8_t Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR]; +extern const uint8_t Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT]; +extern uint8_t Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL]; + +#endif /* __USB_DESC_H */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/inc/usb_istr.h b/src/boards/LoRaMote/usb/cdc/inc/usb_istr.h new file mode 100644 index 000000000..d2a07f69e --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/inc/usb_istr.h @@ -0,0 +1,95 @@ +/** + ****************************************************************************** + * @file usb_istr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief This file includes the peripherals header files in the user application. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_ISTR_H +#define __USB_ISTR_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_conf.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + + void USB_Istr(void); + +/* function prototypes Automatically built defining related macros */ + +void EP1_IN_Callback(void); +void EP2_IN_Callback(void); +void EP3_IN_Callback(void); +void EP4_IN_Callback(void); +void EP5_IN_Callback(void); +void EP6_IN_Callback(void); +void EP7_IN_Callback(void); + +void EP1_OUT_Callback(void); +void EP2_OUT_Callback(void); +void EP3_OUT_Callback(void); +void EP4_OUT_Callback(void); +void EP5_OUT_Callback(void); +void EP6_OUT_Callback(void); +void EP7_OUT_Callback(void); + +#ifdef CTR_CALLBACK +void CTR_Callback(void); +#endif + +#ifdef DOVR_CALLBACK +void DOVR_Callback(void); +#endif + +#ifdef ERR_CALLBACK +void ERR_Callback(void); +#endif + +#ifdef WKUP_CALLBACK +void WKUP_Callback(void); +#endif + +#ifdef SUSP_CALLBACK +void SUSP_Callback(void); +#endif + +#ifdef RESET_CALLBACK +void RESET_Callback(void); +#endif + +#ifdef SOF_CALLBACK +void SOF_Callback(void); +#endif + +#ifdef ESOF_CALLBACK +void ESOF_Callback(void); +#endif + +#endif /*__USB_ISTR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/inc/usb_prop.h b/src/boards/LoRaMote/usb/cdc/inc/usb_prop.h new file mode 100644 index 000000000..bd8170263 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/inc/usb_prop.h @@ -0,0 +1,87 @@ +/** + ****************************************************************************** + * @file usb_prop.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to Virtual COM Port Demo (Endpoint 0) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __usb_prop_H +#define __usb_prop_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef struct +{ + uint32_t bitrate; + uint8_t format; + uint8_t paritytype; + uint8_t datatype; +}LINE_CODING; + +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported define -----------------------------------------------------------*/ + +#define Virtual_Com_Port_GetConfiguration NOP_Process +//#define Virtual_Com_Port_SetConfiguration NOP_Process +#define Virtual_Com_Port_GetInterface NOP_Process +#define Virtual_Com_Port_SetInterface NOP_Process +#define Virtual_Com_Port_GetStatus NOP_Process +#define Virtual_Com_Port_ClearFeature NOP_Process +#define Virtual_Com_Port_SetEndPointFeature NOP_Process +#define Virtual_Com_Port_SetDeviceFeature NOP_Process +//#define Virtual_Com_Port_SetDeviceAddress NOP_Process + +#define SEND_ENCAPSULATED_COMMAND 0x00 +#define GET_ENCAPSULATED_RESPONSE 0x01 +#define SET_COMM_FEATURE 0x02 +#define GET_COMM_FEATURE 0x03 +#define CLEAR_COMM_FEATURE 0x04 +#define SET_LINE_CODING 0x20 +#define GET_LINE_CODING 0x21 +#define SET_CONTROL_LINE_STATE 0x22 +#define SEND_BREAK 0x23 + +/* Exported functions ------------------------------------------------------- */ +void Virtual_Com_Port_init(void); +void Virtual_Com_Port_Reset(void); +void Virtual_Com_Port_SetConfiguration(void); +void Virtual_Com_Port_SetDeviceAddress (void); +void Virtual_Com_Port_Status_In (void); +void Virtual_Com_Port_Status_Out (void); +RESULT Virtual_Com_Port_Data_Setup(uint8_t); +RESULT Virtual_Com_Port_NoData_Setup(uint8_t); +RESULT Virtual_Com_Port_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting); +uint8_t *Virtual_Com_Port_GetDeviceDescriptor(uint16_t ); +uint8_t *Virtual_Com_Port_GetConfigDescriptor(uint16_t); +uint8_t *Virtual_Com_Port_GetStringDescriptor(uint16_t); + +uint8_t *Virtual_Com_Port_GetLineCoding(uint16_t Length); +uint8_t *Virtual_Com_Port_SetLineCoding(uint16_t Length); + +#endif /* __usb_prop_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/LoRaMote/usb/cdc/inc/usb_pwr.h b/src/boards/LoRaMote/usb/cdc/inc/usb_pwr.h new file mode 100644 index 000000000..3f56f16b5 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/inc/usb_pwr.h @@ -0,0 +1,68 @@ +/** + ****************************************************************************** + * @file usb_pwr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PWR_H +#define __USB_PWR_H +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _RESUME_STATE +{ + RESUME_EXTERNAL, + RESUME_INTERNAL, + RESUME_LATER, + RESUME_WAIT, + RESUME_START, + RESUME_ON, + RESUME_OFF, + RESUME_ESOF +} RESUME_STATE; + +typedef enum _DEVICE_STATE +{ + UNCONNECTED, + ATTACHED, + POWERED, + SUSPENDED, + ADDRESSED, + CONFIGURED +} DEVICE_STATE; +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void Suspend(void); +void Resume_Init(void); +void Resume(RESUME_STATE eResumeSetVal); +RESULT PowerOn(void); +RESULT PowerOff(void); +/* External variables --------------------------------------------------------*/ +extern __IO uint32_t bDeviceState; /* USB device status */ +extern __IO bool fSuspendEnabled; /* true when suspend is possible */ + +#endif /*__USB_PWR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/src/usb_desc.c b/src/boards/LoRaMote/usb/cdc/src/usb_desc.c new file mode 100644 index 000000000..ca9391552 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/src/usb_desc.c @@ -0,0 +1,174 @@ +/** + ****************************************************************************** + * @file usb_desc.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptors for Virtual Com Port Demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_desc.h" + +/* USB Standard Device Descriptor */ +const uint8_t Virtual_Com_Port_DeviceDescriptor[] = + { + 0x12, /* bLength */ + USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x00, + 0x02, /* bcdUSB = 2.00 */ + 0x02, /* bDeviceClass: CDC */ + 0x00, /* bDeviceSubClass */ + 0x00, /* bDeviceProtocol */ + 0x40, /* bMaxPacketSize0 */ + 0x83, + 0x04, /* idVendor = 0x0483 */ + 0x40, + 0x57, /* idProduct = 0x7540 */ + 0x00, + 0x02, /* bcdDevice = 2.00 */ + 1, /* Index of string descriptor describing manufacturer */ + 2, /* Index of string descriptor describing product */ + 3, /* Index of string descriptor describing the device's serial number */ + 0x01 /* bNumConfigurations */ + }; + +const uint8_t Virtual_Com_Port_ConfigDescriptor[] = + { + /*Configuration Descriptor*/ + 0x09, /* bLength: Configuration Descriptor size */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ + VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */ + 0x00, + 0x02, /* bNumInterfaces: 2 interface */ + 0x01, /* bConfigurationValue: Configuration value */ + 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ + 0xC0, /* bmAttributes: self powered */ + 0x32, /* MaxPower 0 mA */ + /*Interface Descriptor*/ + 0x09, /* bLength: Interface Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ + /* Interface descriptor type */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x01, /* bNumEndpoints: One endpoints used */ + 0x02, /* bInterfaceClass: Communication Interface Class */ + 0x02, /* bInterfaceSubClass: Abstract Control Model */ + 0x01, /* bInterfaceProtocol: Common AT commands */ + 0x00, /* iInterface: */ + /*Header Functional Descriptor*/ + 0x05, /* bLength: Endpoint Descriptor size */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x00, /* bDescriptorSubtype: Header Func Desc */ + 0x10, /* bcdCDC: spec release number */ + 0x01, + /*Call Management Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x01, /* bDescriptorSubtype: Call Management Func Desc */ + 0x00, /* bmCapabilities: D0+D1 */ + 0x01, /* bDataInterface: 1 */ + /*ACM Functional Descriptor*/ + 0x04, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ + 0x02, /* bmCapabilities */ + /*Union Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x06, /* bDescriptorSubtype: Union func desc */ + 0x00, /* bMasterInterface: Communication class interface */ + 0x01, /* bSlaveInterface0: Data Class Interface */ + /*Endpoint 2 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x82, /* bEndpointAddress: (IN2) */ + 0x03, /* bmAttributes: Interrupt */ + VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */ + 0x00, + 0xFF, /* bInterval: */ + /*Data class interface descriptor*/ + 0x09, /* bLength: Endpoint Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */ + 0x01, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x02, /* bNumEndpoints: Two endpoints used */ + 0x0A, /* bInterfaceClass: CDC */ + 0x00, /* bInterfaceSubClass: */ + 0x00, /* bInterfaceProtocol: */ + 0x00, /* iInterface: */ + /*Endpoint 3 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x03, /* bEndpointAddress: (OUT3) */ + 0x02, /* bmAttributes: Bulk */ + VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */ + 0x00, + 0x00, /* bInterval: ignore for Bulk transfer */ + /*Endpoint 1 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x81, /* bEndpointAddress: (IN1) */ + 0x02, /* bmAttributes: Bulk */ + VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */ + 0x00, + 0x00 /* bInterval */ + }; + +/* USB String Descriptors */ +const uint8_t Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID] = + { + VIRTUAL_COM_PORT_SIZ_STRING_LANGID, + USB_STRING_DESCRIPTOR_TYPE, + 0x09, + 0x04 /* LangID = 0x0409: U.S. English */ + }; + +const uint8_t Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR] = + { + VIRTUAL_COM_PORT_SIZ_STRING_VENDOR, /* Size of Vendor string */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType*/ + /* Manufacturer: "STMicroelectronics" */ + 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, + 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, + 'c', 0, 's', 0 + }; + +const uint8_t Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT] = + { + VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT, /* bLength */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ + /* Product name: "STM32 Virtual COM Port" */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'V', 0, 'i', 0, + 'r', 0, 't', 0, 'u', 0, 'a', 0, 'l', 0, ' ', 0, 'C', 0, 'O', 0, + 'M', 0, ' ', 0, 'P', 0, 'o', 0, 'r', 0, 't', 0, ' ', 0, ' ', 0 + }; + +uint8_t Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL] = + { + VIRTUAL_COM_PORT_SIZ_STRING_SERIAL, /* bLength */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0 + }; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/src/usb_endp.c b/src/boards/LoRaMote/usb/cdc/src/usb_endp.c new file mode 100644 index 000000000..b4deceefc --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/src/usb_endp.c @@ -0,0 +1,78 @@ +/** + ****************************************************************************** + * @file usb_endp.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Endpoint routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_desc.h" +#include "usb_mem.h" +#include "board.h" +#include "usb_istr.h" +#include "usb_pwr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/* Interval between sending IN packets in frame number (1 frame = 1ms) */ +#define VCOMPORT_IN_FRAME_INTERVAL 5 +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +extern __IO uint32_t UsbPacketTx; +extern __IO uint32_t UsbPacketRx; +extern __IO uint8_t UsbRxBuffer[64]; +uint32_t UsbRxLength; +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : EP1_IN_Callback +* Description : +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ + +void EP1_IN_Callback (void) +{ + UsbPacketTx = 1; +} + +/******************************************************************************* +* Function Name : EP3_OUT_Callback +* Description : +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void EP3_OUT_Callback(void) +{ + UsbPacketRx = 1; + UsbRxLength = GetEPRxCount(ENDP3); + PMAToUserBufferCopy((unsigned char*)UsbRxBuffer, ENDP3_RXADDR, UsbRxLength); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/src/usb_istr.c b/src/boards/LoRaMote/usb/cdc/src/usb_istr.c new file mode 100644 index 000000000..ec457ed94 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/src/usb_istr.c @@ -0,0 +1,232 @@ +/** + ****************************************************************************** + * @file usb_istr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief ISTR events interrupt service routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "usb_istr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint16_t wIstr; /* ISTR register last read value */ +__IO uint8_t bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */ +__IO uint32_t esof_counter =0; /* expected SOF counter */ +__IO uint32_t wCNTR=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* function pointers to non-control endpoints service routines */ +void (*pEpInt_IN[7])(void) = + { + EP1_IN_Callback, + EP2_IN_Callback, + EP3_IN_Callback, + EP4_IN_Callback, + EP5_IN_Callback, + EP6_IN_Callback, + EP7_IN_Callback, + }; + +void (*pEpInt_OUT[7])(void) = + { + EP1_OUT_Callback, + EP2_OUT_Callback, + EP3_OUT_Callback, + EP4_OUT_Callback, + EP5_OUT_Callback, + EP6_OUT_Callback, + EP7_OUT_Callback, + }; + +/******************************************************************************* +* Function Name : USB_Istr +* Description : ISTR events interrupt service routine +* Input : +* Output : +* Return : +*******************************************************************************/ +void USB_Istr(void) +{ + uint32_t i=0; + __IO uint32_t EP[8]; + + wIstr = _GetISTR(); + +#if (IMR_MSK & ISTR_SOF) + if (wIstr & ISTR_SOF & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_SOF); + bIntPackSOF++; + +#ifdef SOF_CALLBACK + SOF_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#if (IMR_MSK & ISTR_CTR) + if (wIstr & ISTR_CTR & wInterrupt_Mask) + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + CTR_LP(); +#ifdef CTR_CALLBACK + CTR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_RESET) + if (wIstr & ISTR_RESET & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_RESET); + Device_Property.Reset(); +#ifdef RESET_CALLBACK + RESET_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_DOVR) + if (wIstr & ISTR_DOVR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_DOVR); +#ifdef DOVR_CALLBACK + DOVR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ERR) + if (wIstr & ISTR_ERR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_ERR); +#ifdef ERR_CALLBACK + ERR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_WKUP) + if (wIstr & ISTR_WKUP & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_WKUP); + Resume(RESUME_EXTERNAL); +#ifdef WKUP_CALLBACK + WKUP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SUSP) + if (wIstr & ISTR_SUSP & wInterrupt_Mask) + { + + /* check if SUSPEND is possible */ + if (fSuspendEnabled) + { + Suspend(); + } + else + { + /* if not possible then resume after xx ms */ + Resume(RESUME_LATER); + } + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + _SetISTR((uint16_t)CLR_SUSP); +#ifdef SUSP_CALLBACK + SUSP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#if (IMR_MSK & ISTR_ESOF) + if (wIstr & ISTR_ESOF & wInterrupt_Mask) + { + /* clear ESOF flag in ISTR */ + _SetISTR((uint16_t)CLR_ESOF); + + if ((_GetFNR()&FNR_RXDP)!=0) + { + /* increment ESOF counter */ + esof_counter ++; + + /* test if we enter in ESOF more than 3 times with FSUSP =0 and RXDP =1=>> possible missing SUSP flag*/ + if ((esof_counter >3)&&((_GetCNTR()&CNTR_FSUSP)==0)) + { + /* this a sequence to apply a force RESET*/ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + esof_counter = 0; + } + } + else + { + esof_counter = 0; + } + + /* resume handling timing is made with ESOFs */ + Resume(RESUME_ESOF); /* request without change of the machine state */ + +#ifdef ESOF_CALLBACK + ESOF_Callback(); +#endif + } +#endif +} /* USB_Istr */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/cdc/src/usb_prop.c b/src/boards/LoRaMote/usb/cdc/src/usb_prop.c new file mode 100644 index 000000000..25f15055b --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/src/usb_prop.c @@ -0,0 +1,414 @@ +/** + ****************************************************************************** + * @file usb_prop.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to Virtual Com Port Demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "usb_pwr.h" +#include "usb-cdc-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint8_t Request = 0; + +LINE_CODING linecoding = + { + 115200, /* baud rate*/ + 0x00, /* stop bits-1*/ + 0x00, /* parity - none*/ + 0x08 /* no. of bits 8*/ + }; + +/* -------------------------------------------------------------------------- */ +/* Structures initializations */ +/* -------------------------------------------------------------------------- */ + +DEVICE Device_Table = + { + EP_NUM, + 1 + }; + +DEVICE_PROP Device_Property = + { + Virtual_Com_Port_init, + Virtual_Com_Port_Reset, + Virtual_Com_Port_Status_In, + Virtual_Com_Port_Status_Out, + Virtual_Com_Port_Data_Setup, + Virtual_Com_Port_NoData_Setup, + Virtual_Com_Port_Get_Interface_Setting, + Virtual_Com_Port_GetDeviceDescriptor, + Virtual_Com_Port_GetConfigDescriptor, + Virtual_Com_Port_GetStringDescriptor, + 0, + 0x40 /*MAX PACKET SIZE*/ + }; + +USER_STANDARD_REQUESTS User_Standard_Requests = + { + Virtual_Com_Port_GetConfiguration, + Virtual_Com_Port_SetConfiguration, + Virtual_Com_Port_GetInterface, + Virtual_Com_Port_SetInterface, + Virtual_Com_Port_GetStatus, + Virtual_Com_Port_ClearFeature, + Virtual_Com_Port_SetEndPointFeature, + Virtual_Com_Port_SetDeviceFeature, + Virtual_Com_Port_SetDeviceAddress + }; + +ONE_DESCRIPTOR Device_Descriptor = + { + (uint8_t*)Virtual_Com_Port_DeviceDescriptor, + VIRTUAL_COM_PORT_SIZ_DEVICE_DESC + }; + +ONE_DESCRIPTOR Config_Descriptor = + { + (uint8_t*)Virtual_Com_Port_ConfigDescriptor, + VIRTUAL_COM_PORT_SIZ_CONFIG_DESC + }; + +ONE_DESCRIPTOR String_Descriptor[4] = + { + {(uint8_t*)Virtual_Com_Port_StringLangID, VIRTUAL_COM_PORT_SIZ_STRING_LANGID}, + {(uint8_t*)Virtual_Com_Port_StringVendor, VIRTUAL_COM_PORT_SIZ_STRING_VENDOR}, + {(uint8_t*)Virtual_Com_Port_StringProduct, VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT}, + {(uint8_t*)Virtual_Com_Port_StringSerial, VIRTUAL_COM_PORT_SIZ_STRING_SERIAL} + }; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/******************************************************************************* +* Function Name : Virtual_Com_Port_init. +* Description : Virtual COM Port Mouse init routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_init(void) +{ + + /* Update the serial number string descriptor with the data from the unique + ID*/ + Get_SerialNum(); + + pInformation->Current_Configuration = 0; + + /* Connect the device */ + PowerOn(); + + /* Perform basic device initialization operations */ + USB_SIL_Init(); + + bDeviceState = UNCONNECTED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Reset +* Description : Virtual_Com_Port Mouse reset routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Reset(void) +{ + /* Set Virtual_Com_Port DEVICE as not configured */ + pInformation->Current_Configuration = 0; + + /* Current Feature initialization */ + pInformation->Current_Feature = Virtual_Com_Port_ConfigDescriptor[7]; + + /* Set Virtual_Com_Port DEVICE with the default Interface*/ + pInformation->Current_Interface = 0; + + SetBTABLE(BTABLE_ADDRESS); + + /* Initialize Endpoint 0 */ + SetEPType(ENDP0, EP_CONTROL); + SetEPTxStatus(ENDP0, EP_TX_STALL); + SetEPRxAddr(ENDP0, ENDP0_RXADDR); + SetEPTxAddr(ENDP0, ENDP0_TXADDR); + Clear_Status_Out(ENDP0); + SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); + SetEPRxValid(ENDP0); + + /* Initialize Endpoint 1 */ + SetEPType(ENDP1, EP_BULK); + SetEPTxAddr(ENDP1, ENDP1_TXADDR); + SetEPTxStatus(ENDP1, EP_TX_NAK); + SetEPRxStatus(ENDP1, EP_RX_DIS); + + /* Initialize Endpoint 2 */ + SetEPType(ENDP2, EP_INTERRUPT); + SetEPTxAddr(ENDP2, ENDP2_TXADDR); + SetEPRxStatus(ENDP2, EP_RX_DIS); + SetEPTxStatus(ENDP2, EP_TX_NAK); + + /* Initialize Endpoint 3 */ + SetEPType(ENDP3, EP_BULK); + SetEPRxAddr(ENDP3, ENDP3_RXADDR); + SetEPRxCount(ENDP3, VIRTUAL_COM_PORT_DATA_SIZE); + SetEPRxStatus(ENDP3, EP_RX_VALID); + SetEPTxStatus(ENDP3, EP_TX_DIS); + + /* Set this device to response on default address */ + SetDeviceAddress(0); + + bDeviceState = ATTACHED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetConfiguration. +* Description : Update the device state to configured. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_SetConfiguration(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + if (pInfo->Current_Configuration != 0) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetConfiguration. +* Description : Update the device state to addressed. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_SetDeviceAddress (void) +{ + bDeviceState = ADDRESSED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Status_In. +* Description : Virtual COM Port Status In Routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Status_In(void) +{ + if (Request == SET_LINE_CODING) + { + Request = 0; + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Status_Out +* Description : Virtual COM Port Status OUT Routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Status_Out(void) +{} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Data_Setup +* Description : handle the data class specific requests +* Input : Request Nb. +* Output : None. +* Return : USB_UNSUPPORT or USB_SUCCESS. +*******************************************************************************/ +RESULT Virtual_Com_Port_Data_Setup(uint8_t RequestNo) +{ + uint8_t *(*CopyRoutine)(uint16_t); + + CopyRoutine = NULL; + + if (RequestNo == GET_LINE_CODING) + { + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + CopyRoutine = Virtual_Com_Port_GetLineCoding; + } + } + else if (RequestNo == SET_LINE_CODING) + { + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + CopyRoutine = Virtual_Com_Port_SetLineCoding; + } + Request = SET_LINE_CODING; + } + + if (CopyRoutine == NULL) + { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_NoData_Setup. +* Description : handle the no data class specific requests. +* Input : Request Nb. +* Output : None. +* Return : USB_UNSUPPORT or USB_SUCCESS. +*******************************************************************************/ +RESULT Virtual_Com_Port_NoData_Setup(uint8_t RequestNo) +{ + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + if (RequestNo == SET_COMM_FEATURE) + { + return USB_SUCCESS; + } + else if (RequestNo == SET_CONTROL_LINE_STATE) + { + return USB_SUCCESS; + } + } + + return USB_UNSUPPORT; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetDeviceDescriptor. +* Description : Gets the device descriptor. +* Input : Length. +* Output : None. +* Return : The address of the device descriptor. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetDeviceDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Device_Descriptor); +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetConfigDescriptor. +* Description : get the configuration descriptor. +* Input : Length. +* Output : None. +* Return : The address of the configuration descriptor. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetConfigDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Config_Descriptor); +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetStringDescriptor +* Description : Gets the string descriptors according to the needed index +* Input : Length. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetStringDescriptor(uint16_t Length) +{ + uint8_t wValue0 = pInformation->USBwValue0; + if (wValue0 > 4) + { + return NULL; + } + else + { + return Standard_GetDescriptorData(Length, &String_Descriptor[wValue0]); + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Get_Interface_Setting. +* Description : test the interface and the alternate setting according to the +* supported one. +* Input1 : uint8_t: Interface : interface number. +* Input2 : uint8_t: AlternateSetting : Alternate Setting number. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +RESULT Virtual_Com_Port_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting) +{ + if (AlternateSetting > 0) + { + return USB_UNSUPPORT; + } + else if (Interface > 1) + { + return USB_UNSUPPORT; + } + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetLineCoding. +* Description : send the linecoding structure to the PC host. +* Input : Length. +* Output : None. +* Return : Linecoding structure base address. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetLineCoding(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding); + return NULL; + } + return(uint8_t *)&linecoding; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetLineCoding. +* Description : Set the linecoding structure fields. +* Input : Length. +* Output : None. +* Return : Linecoding structure base address. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_SetLineCoding(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding); + return NULL; + } + return(uint8_t *)&linecoding; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/LoRaMote/usb/cdc/src/usb_pwr.c b/src/boards/LoRaMote/usb/cdc/src/usb_pwr.c new file mode 100644 index 000000000..9a7c466b8 --- /dev/null +++ b/src/boards/LoRaMote/usb/cdc/src/usb_pwr.c @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file usb_pwr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_pwr.h" +#include "usb-cdc-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint32_t bDeviceState = UNCONNECTED; /* USB device status */ +__IO bool fSuspendEnabled = TRUE; /* true when suspend is possible */ +__IO uint32_t EP[8]; + +struct +{ + __IO RESUME_STATE eState; + __IO uint8_t bESOFcnt; +} +ResumeS; + +__IO uint32_t remotewakeupon=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : PowerOn +* Description : +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOn(void) +{ + uint16_t wRegVal; + + /*** cable plugged-in ? ***/ + USB_Cable_Config(ENABLE); + + /*** CNTR_PWDN = 0 ***/ + wRegVal = CNTR_FRES; + _SetCNTR(wRegVal); + + /*** CNTR_FRES = 0 ***/ + wInterrupt_Mask = 0; + _SetCNTR(wInterrupt_Mask); + /*** Clear pending interrupts ***/ + _SetISTR(0); + /*** Set interrupt mask ***/ + wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; + _SetCNTR(wInterrupt_Mask); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : PowerOff +* Description : handles switch-off conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOff() +{ + /* disable all interrupts and force USB reset */ + _SetCNTR(CNTR_FRES); + /* clear interrupt status register */ + _SetISTR(0); + /* Disable the Pull-Up*/ + USB_Cable_Config(DISABLE); + /* switch-off device */ + _SetCNTR(CNTR_FRES + CNTR_PDWN); + /* sw variables reset */ + /* ... */ + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Suspend +* Description : sets suspend mode operating conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Suspend(void) +{ + uint32_t i =0; + uint16_t wCNTR; + uint32_t tmpreg = 0; + __IO uint32_t savePWR_CR=0; + /* suspend preparation */ + /* ... */ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /* This a sequence to apply a force RESET to handle a robustness case */ + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /* unmask RESET flag */ + wCNTR|=CNTR_RESETM; + _SetCNTR(wCNTR); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + /* Now it is safe to enter macrocell in suspend mode */ + wCNTR |= CNTR_FSUSP; + _SetCNTR(wCNTR); + + /* force low-power mode in the macrocell */ + wCNTR = _GetCNTR(); + wCNTR |= CNTR_LPMODE; + _SetCNTR(wCNTR); + + /*prepare entry in low power mode (STOP mode)*/ + /* Select the regulator state in STOP mode*/ + savePWR_CR = PWR->CR; + tmpreg = PWR->CR; + /* Clear PDDS and LPDS bits */ + tmpreg &= ((uint32_t)0xFFFFFFFC); + /* Set LPDS bit according to PWR_Regulator value */ + tmpreg |= PWR_Regulator_LowPower; + /* Store the new value */ + PWR->CR = tmpreg; + /* Set SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#else + SCB->SCR |= SCB_SCR_SLEEPDEEP; +#endif + + /* enter system in STOP mode, only when wakeup flag in not set */ + if((_GetISTR()&ISTR_WKUP)==0) + { + __WFI(); + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } + else + { + /* Clear Wakeup flag */ + _SetISTR(CLR_WKUP); + /* clear FSUSP to abort entry in suspend mode */ + wCNTR = _GetCNTR(); + wCNTR&=~CNTR_FSUSP; + _SetCNTR(wCNTR); + + /*restore sleep mode configuration */ + /* restore Power regulator config in sleep mode*/ + PWR->CR = savePWR_CR; + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } +} + +/******************************************************************************* +* Function Name : Resume_Init +* Description : Handles wake-up restoring normal operations +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Resume_Init(void) +{ + uint16_t wCNTR; + + /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ + /* restart the clocks */ + /* ... */ + + /* CNTR_LPMODE = 0 */ + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_LPMODE); + _SetCNTR(wCNTR); + + /* restore full power */ + /* ... on connected devices */ + Leave_LowPowerMode(); + + /* reset FSUSP bit */ + _SetCNTR(IMR_MSK); + + /* reverse suspend preparation */ + /* ... */ + +} + +/******************************************************************************* +* Function Name : Resume +* Description : This is the state machine handling resume operations and +* timing sequence. The control is based on the Resume structure +* variables and on the ESOF interrupt calling this subroutine +* without changing machine state. +* Input : a state machine value (RESUME_STATE) +* RESUME_ESOF doesn't change ResumeS.eState allowing +* decrementing of the ESOF counter in different states. +* Output : None. +* Return : None. +*******************************************************************************/ +void Resume(RESUME_STATE eResumeSetVal) +{ + uint16_t wCNTR; + + if (eResumeSetVal != RESUME_ESOF) + ResumeS.eState = eResumeSetVal; + switch (ResumeS.eState) + { + case RESUME_EXTERNAL: + if (remotewakeupon ==0) + { + Resume_Init(); + ResumeS.eState = RESUME_OFF; + } + else /* RESUME detected during the RemoteWAkeup signalling => keep RemoteWakeup handling*/ + { + ResumeS.eState = RESUME_ON; + } + break; + case RESUME_INTERNAL: + Resume_Init(); + ResumeS.eState = RESUME_START; + remotewakeupon = 1; + break; + case RESUME_LATER: + ResumeS.bESOFcnt = 2; + ResumeS.eState = RESUME_WAIT; + break; + case RESUME_WAIT: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + ResumeS.eState = RESUME_START; + break; + case RESUME_START: + wCNTR = _GetCNTR(); + wCNTR |= CNTR_RESUME; + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_ON; + ResumeS.bESOFcnt = 10; + break; + case RESUME_ON: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + { + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_RESUME); + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_OFF; + remotewakeupon = 0; + } + break; + case RESUME_OFF: + case RESUME_ESOF: + default: + ResumeS.eState = RESUME_OFF; + break; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/inc/dfu_mal.h b/src/boards/LoRaMote/usb/dfu/inc/dfu_mal.h new file mode 100644 index 000000000..ceb37091b --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/dfu_mal.h @@ -0,0 +1,74 @@ +/** + ****************************************************************************** + * @file dfu_mal.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Header for dfu_mal.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __DFU_MAL_H +#define __DFU_MAL_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" +#include "dfu_mal.h" +#include "usb_desc.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +#define MAL_OK 0 +#define MAL_FAIL 1 +#define MAX_USED_MEDIA 3 +#define MAL_MASK 0xFC000000 + +#define INTERNAL_FLASH_BASE 0x08000000 +#define SPI_FLASH_BASE 0x00000000 +#define NOR_FLASH_BASE 0x64000000 + +#define NOR_M29W128F 0x2212 +#define NOR_M29W128G 0x2221 +#define NOR_S29GL128 0x2221 + +/* utils macro ---------------------------------------------------------------*/ +#define _1st_BYTE(x) (uint8_t)((x)&0xFF) /* 1st addressing cycle */ +#define _2nd_BYTE(x) (uint8_t)(((x)&0xFF00)>>8) /* 2nd addressing cycle */ +#define _3rd_BYTE(x) (uint8_t)(((x)&0xFF0000)>>16) /* 3rd addressing cycle */ +#define _4th_BYTE(x) (uint8_t)(((x)&0xFF000000)>>24) /* 4th addressing cycle */ +/* Exported macro ------------------------------------------------------------*/ +#define SET_POLLING_TIMING(x) buffer[1] = _1st_BYTE(x);\ + buffer[2] = _2nd_BYTE(x);\ + buffer[3] = _3rd_BYTE(x); + +/* Exported functions ------------------------------------------------------- */ + +uint16_t MAL_Init (void); +uint16_t MAL_Erase (uint32_t SectorAddress); +uint16_t MAL_Write (uint32_t SectorAddress, uint32_t DataLength); +uint8_t *MAL_Read (uint32_t SectorAddress, uint32_t DataLength); +uint16_t MAL_GetStatus(uint32_t SectorAddress ,uint8_t Cmd, uint8_t *buffer); + +extern uint8_t MAL_Buffer[wTransferSize]; /* RAM Buffer for Downloaded Data */ +#endif /* __DFU_MAL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/inc/flash_if.h b/src/boards/LoRaMote/usb/dfu/inc/flash_if.h new file mode 100644 index 000000000..d3aad9c53 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/flash_if.h @@ -0,0 +1,48 @@ +/** + ****************************************************************************** + * @file flash_if.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Header for flash_if.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __FLASH_IF_MAL_H +#define __FLASH_IF_MAL_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +uint16_t FLASH_If_Init(void); +uint16_t FLASH_If_Erase (uint32_t SectorAddress); +uint16_t FLASH_If_Write(uint32_t SectorAddress, uint32_t DataLength); +uint8_t *FLASH_If_Read (uint32_t SectorAddress, uint32_t DataLength); + +#endif /* __FLASH_IF_MAL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/inc/usb_conf.h b/src/boards/LoRaMote/usb/dfu/inc/usb_conf.h new file mode 100644 index 000000000..d997e049e --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/usb_conf.h @@ -0,0 +1,121 @@ +/** + ****************************************************************************** + * @file usb_conf.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Device Firmware Upgrade (DFU) configuration file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CONF_H +#define __USB_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* These timings will be returned to the host when it checks the device + status during a write or erase operation to know how much time the host + should wait before issuing the next get status request. + These defines are set in usb_conf.h file. + The values of this table should be extracted from relative memories + datasheet (Typical or Maximum timming value for Sector Erase and for + 1024 bytes Write). All timings are expressed in millisecond unit (ms). + Note that "Sector" refers here to the memory unit used for Erase/Write + operations. It could be a sector, a page, a block, a word ... + If the erase operation is not supported, it is advised to set the erase + timing to 1 (which means 1ms: one USB frame). */ +#define SPI_FLASH_SECTOR_ERASE_TIME 3000 +#define SPI_FLASH_SECTOR_WRITE_TIME 20 + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + #define INTERN_FLASH_SECTOR_ERASE_TIME 100 + #define INTERN_FLASH_SECTOR_WRITE_TIME 104 +#else + #define INTERN_FLASH_SECTOR_ERASE_TIME 50 + #define INTERN_FLASH_SECTOR_WRITE_TIME 50 +#endif /* STM32L1XX_XD */ + +#define M29W128F_SECTOR_ERASE_TIME 1000 +#define M29W128F_SECTOR_WRITE_TIME 25 + +#define M29W128G_SECTOR_ERASE_TIME 1000 +#define M29W128G_SECTOR_WRITE_TIME 25 + +#define S29GL128_SECTOR_ERASE_TIME 1000 +#define S29GL128_SECTOR_WRITE_TIME 45 + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ +/*-------------------------------------------------------------*/ +/* EP_NUM */ +/* defines how many endpoints are used by the device */ +/*-------------------------------------------------------------*/ +#define EP_NUM (1) + +/*-------------------------------------------------------------*/ +/* -------------- Buffer Description Table -----------------*/ +/*-------------------------------------------------------------*/ +/* buffer table base address */ +/* buffer table base address */ +#define BTABLE_ADDRESS (0x00) + +/* EP0 */ +/* rx/tx buffer base address */ +#define ENDP0_RXADDR (0x10) +#define ENDP0_TXADDR (0x50) + + +/*-------------------------------------------------------------*/ +/* ------------------- ISTR events -------------------------*/ +/*-------------------------------------------------------------*/ +/* IMR_MSK */ +/* mask defining which events has to be handled */ +/* by the device application software */ +#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \ + | CNTR_ESOFM | CNTR_RESETM ) + +/* CTR service routines */ +/* associated to defined endpoints */ +#define EP1_IN_Callback NOP_Process +#define EP2_IN_Callback NOP_Process +#define EP3_IN_Callback NOP_Process +#define EP4_IN_Callback NOP_Process +#define EP5_IN_Callback NOP_Process +#define EP6_IN_Callback NOP_Process +#define EP7_IN_Callback NOP_Process + + +#define EP1_OUT_Callback NOP_Process +#define EP2_OUT_Callback NOP_Process +#define EP3_OUT_Callback NOP_Process +#define EP4_OUT_Callback NOP_Process +#define EP5_OUT_Callback NOP_Process +#define EP6_OUT_Callback NOP_Process +#define EP7_OUT_Callback NOP_Process + +#endif /*__USB_CONF_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/LoRaMote/usb/dfu/inc/usb_desc.h b/src/boards/LoRaMote/usb/dfu/inc/usb_desc.h new file mode 100644 index 000000000..7c3d9b4ca --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/usb_desc.h @@ -0,0 +1,76 @@ +/** + ****************************************************************************** + * @file usb_desc.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptor Header for Device Firmware Upgrade (DFU) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DESC_H +#define __USB_DESC_H +#include "usb-dfu-board.h" + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +#define DFU_SIZ_DEVICE_DESC 18 + +#define DFU_SIZ_CONFIG_DESC 27 + +#define DFU_SIZ_STRING_LANGID 4 +#define DFU_SIZ_STRING_VENDOR 38 +#define DFU_SIZ_STRING_PRODUCT 20 +#define DFU_SIZ_STRING_SERIAL 26 +#define DFU_SIZ_STRING_INTERFACE0 98 /* Flash Bank 0 */ + +#define DFU_SIZ_STRING_INTERFACE1 98 /* SPI Flash : M25P64*/ +#define DFU_SIZ_STRING_INTERFACE2 106 /* NOR Flash : M26M128*/ + +extern uint8_t DFU_DeviceDescriptor[DFU_SIZ_DEVICE_DESC]; +extern uint8_t DFU_ConfigDescriptor[DFU_SIZ_CONFIG_DESC]; +extern uint8_t DFU_StringLangId [DFU_SIZ_STRING_LANGID]; +extern uint8_t DFU_StringVendor [DFU_SIZ_STRING_VENDOR]; +extern uint8_t DFU_StringProduct [DFU_SIZ_STRING_PRODUCT]; +extern uint8_t DFU_StringSerial [DFU_SIZ_STRING_SERIAL]; +extern uint8_t DFU_StringInterface0 [DFU_SIZ_STRING_INTERFACE0]; +extern uint8_t DFU_StringInterface1 [DFU_SIZ_STRING_INTERFACE1]; +extern uint8_t DFU_StringInterface2_1 [DFU_SIZ_STRING_INTERFACE2]; +extern uint8_t DFU_StringInterface2_2 [DFU_SIZ_STRING_INTERFACE2]; +extern uint8_t DFU_StringInterface2_3 [DFU_SIZ_STRING_INTERFACE2]; + +#define bMaxPacketSize0 0x40 /* bMaxPacketSize0 = 64 bytes */ + +#define wTransferSize 0x0400 /* wTransferSize = 1024 bytes */ +/* bMaxPacketSize0 <= wTransferSize <= 32kbytes */ +#define wTransferSizeB0 0x00 +#define wTransferSizeB1 0x04 + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_DESC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/LoRaMote/usb/dfu/inc/usb_istr.h b/src/boards/LoRaMote/usb/dfu/inc/usb_istr.h new file mode 100644 index 000000000..d2a07f69e --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/usb_istr.h @@ -0,0 +1,95 @@ +/** + ****************************************************************************** + * @file usb_istr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief This file includes the peripherals header files in the user application. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_ISTR_H +#define __USB_ISTR_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_conf.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + + void USB_Istr(void); + +/* function prototypes Automatically built defining related macros */ + +void EP1_IN_Callback(void); +void EP2_IN_Callback(void); +void EP3_IN_Callback(void); +void EP4_IN_Callback(void); +void EP5_IN_Callback(void); +void EP6_IN_Callback(void); +void EP7_IN_Callback(void); + +void EP1_OUT_Callback(void); +void EP2_OUT_Callback(void); +void EP3_OUT_Callback(void); +void EP4_OUT_Callback(void); +void EP5_OUT_Callback(void); +void EP6_OUT_Callback(void); +void EP7_OUT_Callback(void); + +#ifdef CTR_CALLBACK +void CTR_Callback(void); +#endif + +#ifdef DOVR_CALLBACK +void DOVR_Callback(void); +#endif + +#ifdef ERR_CALLBACK +void ERR_Callback(void); +#endif + +#ifdef WKUP_CALLBACK +void WKUP_Callback(void); +#endif + +#ifdef SUSP_CALLBACK +void SUSP_Callback(void); +#endif + +#ifdef RESET_CALLBACK +void RESET_Callback(void); +#endif + +#ifdef SOF_CALLBACK +void SOF_Callback(void); +#endif + +#ifdef ESOF_CALLBACK +void ESOF_Callback(void); +#endif + +#endif /*__USB_ISTR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/inc/usb_prop.h b/src/boards/LoRaMote/usb/dfu/inc/usb_prop.h new file mode 100644 index 000000000..ec8b2a3cc --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/usb_prop.h @@ -0,0 +1,141 @@ +/** + ****************************************************************************** + * @file usb_prop.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to DFU demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PROP_H +#define __USB_PROP_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void DFU_init(void); +void DFU_Reset(void); +void DFU_SetConfiguration(void); +void DFU_SetDeviceAddress (void); +void DFU_Status_In (void); +void DFU_Status_Out (void); +RESULT DFU_Data_Setup(uint8_t); +RESULT DFU_NoData_Setup(uint8_t); +RESULT DFU_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting); +uint8_t *DFU_GetDeviceDescriptor(uint16_t ); +uint8_t *DFU_GetConfigDescriptor(uint16_t); +uint8_t *DFU_GetStringDescriptor(uint16_t); +uint8_t *UPLOAD(uint16_t Length); +uint8_t *DNLOAD(uint16_t Length); +uint8_t *GETSTATE(uint16_t Length); +uint8_t *GETSTATUS(uint16_t Length); +void DFU_write_crc (void); + +/* External variables --------------------------------------------------------*/ + +#define DFU_GetConfiguration NOP_Process +//#define DFU_SetConfiguration NOP_Process +#define DFU_GetInterface NOP_Process +#define DFU_SetInterface NOP_Process +#define DFU_GetStatus NOP_Process +#define DFU_ClearFeature NOP_Process +#define DFU_SetEndPointFeature NOP_Process +#define DFU_SetDeviceFeature NOP_Process +//#define DFU_SetDeviceAddress NOP_Process + +/*---------------------------------------------------------------------*/ +/* DFU definitions */ +/*---------------------------------------------------------------------*/ + +/**************************************************/ +/* DFU Requests */ +/**************************************************/ + +typedef enum _DFU_REQUESTS { + DFU_DNLOAD = 1, + DFU_UPLOAD, + DFU_GETSTATUS, + DFU_CLRSTATUS, + DFU_GETSTATE, + DFU_ABORT +} DFU_REQUESTS; + +/**************************************************/ +/* DFU Requests DFU states */ +/**************************************************/ + + +#define STATE_appIDLE 0 +#define STATE_appDETACH 1 +#define STATE_dfuIDLE 2 +#define STATE_dfuDNLOAD_SYNC 3 +#define STATE_dfuDNBUSY 4 +#define STATE_dfuDNLOAD_IDLE 5 +#define STATE_dfuMANIFEST_SYNC 6 +#define STATE_dfuMANIFEST 7 +#define STATE_dfuMANIFEST_WAIT_RESET 8 +#define STATE_dfuUPLOAD_IDLE 9 +#define STATE_dfuERROR 10 + +/**************************************************/ +/* DFU Requests DFU status */ +/**************************************************/ + +#define STATUS_OK 0x00 +#define STATUS_ERRTARGET 0x01 +#define STATUS_ERRFILE 0x02 +#define STATUS_ERRWRITE 0x03 +#define STATUS_ERRERASE 0x04 +#define STATUS_ERRCHECK_ERASED 0x05 +#define STATUS_ERRPROG 0x06 +#define STATUS_ERRVERIFY 0x07 +#define STATUS_ERRADDRESS 0x08 +#define STATUS_ERRNOTDONE 0x09 +#define STATUS_ERRFIRMWARE 0x0A +#define STATUS_ERRVENDOR 0x0B +#define STATUS_ERRUSBR 0x0C +#define STATUS_ERRPOR 0x0D +#define STATUS_ERRUNKNOWN 0x0E +#define STATUS_ERRSTALLEDPKT 0x0F + +/**************************************************/ +/* DFU Requests DFU states Manifestation State */ +/**************************************************/ + +#define Manifest_complete 0x00 +#define Manifest_In_Progress 0x01 + + +/**************************************************/ +/* Special Commands with Download Request */ +/**************************************************/ + +#define CMD_GETCOMMANDS 0x00 +#define CMD_SETADDRESSPOINTER 0x21 +#define CMD_ERASE 0x41 + +#endif /* __USB_PROP_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/inc/usb_pwr.h b/src/boards/LoRaMote/usb/dfu/inc/usb_pwr.h new file mode 100644 index 000000000..3f56f16b5 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/inc/usb_pwr.h @@ -0,0 +1,68 @@ +/** + ****************************************************************************** + * @file usb_pwr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PWR_H +#define __USB_PWR_H +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _RESUME_STATE +{ + RESUME_EXTERNAL, + RESUME_INTERNAL, + RESUME_LATER, + RESUME_WAIT, + RESUME_START, + RESUME_ON, + RESUME_OFF, + RESUME_ESOF +} RESUME_STATE; + +typedef enum _DEVICE_STATE +{ + UNCONNECTED, + ATTACHED, + POWERED, + SUSPENDED, + ADDRESSED, + CONFIGURED +} DEVICE_STATE; +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void Suspend(void); +void Resume_Init(void); +void Resume(RESUME_STATE eResumeSetVal); +RESULT PowerOn(void); +RESULT PowerOff(void); +/* External variables --------------------------------------------------------*/ +extern __IO uint32_t bDeviceState; /* USB device status */ +extern __IO bool fSuspendEnabled; /* true when suspend is possible */ + +#endif /*__USB_PWR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/src/dfu_mal.c b/src/boards/LoRaMote/usb/dfu/src/dfu_mal.c new file mode 100644 index 000000000..bd42866ef --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/dfu_mal.c @@ -0,0 +1,174 @@ +/** + ****************************************************************************** + * @file dfu_mal.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Generic media access Layer + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" +#include "dfu_mal.h" +#include "usb_lib.h" +#include "usb_type.h" +#include "usb_desc.h" +#include "flash_if.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint16_t (*pMAL_Init) (void); +uint16_t (*pMAL_Erase) (uint32_t SectorAddress); +uint16_t (*pMAL_Write) (uint32_t SectorAddress, uint32_t DataLength); +uint8_t *(*pMAL_Read) (uint32_t SectorAddress, uint32_t DataLength); +uint8_t MAL_Buffer[wTransferSize]; /* RAM Buffer for Downloaded Data */ + +extern ONE_DESCRIPTOR DFU_String_Descriptor[7]; + +/* This table holds the Typical Sector Erase and 1024 Bytes Write timings. + These timings will be returned to the host when it checks the device + status during a write or erase operation to know how much time the host + should wait before issuing the next get status request. + These defines are set in usb_conf.h file. + The values of this table should be extracted from relative memories + datasheet (Typical or Maximum timming value for Sector Erase and for + 1024 bytes Write). All timings are expressed in millisecond unit (ms). + Note that "Sector" refers here to the memory unit used for Erase/Write + operations. It could be a sector, a page, a block, a word ... + If the erase operation is not supported, it is advised to set the erase + timing to 1 (which means 1ms: one USB frame). */ +static const uint16_t TimingTable[5][2] = + { /* Sector Erase time, Sector Program time*/ + { SPI_FLASH_SECTOR_ERASE_TIME, SPI_FLASH_SECTOR_WRITE_TIME }, /* SPI Flash */ + { M29W128F_SECTOR_ERASE_TIME, M29W128F_SECTOR_WRITE_TIME }, /* NOR Flash M29W128F */ + { INTERN_FLASH_SECTOR_ERASE_TIME, INTERN_FLASH_SECTOR_WRITE_TIME }, /* Internal Flash */ + { M29W128G_SECTOR_ERASE_TIME, M29W128G_SECTOR_WRITE_TIME }, /* NOR Flash M29W128G */ + { S29GL128_SECTOR_ERASE_TIME, S29GL128_SECTOR_WRITE_TIME } /* NOR Flash S29GL128 */ + }; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : MAL_Init +* Description : Initializes the Media on the STM32 +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Init(void) +{ + + FLASH_If_Init(); /* Internal Flash */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : MAL_Erase +* Description : Erase sector +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Erase(uint32_t SectorAddress) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Erase = FLASH_If_Erase; + break; + + default: + return MAL_FAIL; + } + return pMAL_Erase(SectorAddress); +} + +/******************************************************************************* +* Function Name : MAL_Write +* Description : Write sectors +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Write (uint32_t SectorAddress, uint32_t DataLength) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Write = FLASH_If_Write; + break; + + default: + return MAL_FAIL; + } + return pMAL_Write(SectorAddress, DataLength); +} + +/******************************************************************************* +* Function Name : MAL_Read +* Description : Read sectors +* Input : None +* Output : None +* Return : Buffer pointer +*******************************************************************************/ +uint8_t *MAL_Read (uint32_t SectorAddress, uint32_t DataLength) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Read = FLASH_If_Read; + break; + + default: + return 0; + } + return pMAL_Read (SectorAddress, DataLength); +} + +/******************************************************************************* +* Function Name : MAL_GetStatus +* Description : Get status +* Input : None +* Output : None +* Return : Buffer pointer +*******************************************************************************/ +uint16_t MAL_GetStatus(uint32_t SectorAddress , uint8_t Cmd, uint8_t *buffer) +{ + uint8_t x = (SectorAddress >> 26) & 0x03 ; /* 0x000000000 --> 0 */ + /* 0x640000000 --> 1 */ + /* 0x080000000 --> 2 */ + + uint8_t y = Cmd & 0x01; + + SET_POLLING_TIMING(TimingTable[x][y]); /* x: Erase/Write Timing */ + /* y: Media */ + return MAL_OK; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/src/flash_if.c b/src/boards/LoRaMote/usb/dfu/src/flash_if.c new file mode 100644 index 000000000..e6caf417d --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/flash_if.c @@ -0,0 +1,171 @@ +/** + ****************************************************************************** + * @file flash_if.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief specific media access Layer for internal flash + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "flash_if.h" +#include "dfu_mal.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + uint32_t tHalfPage1[128/4]; + uint32_t tHalfPage2[128/4]; +#endif /* STM32L1XX_XD */ + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : FLASH_If_Init +* Description : Initializes the Media on the STM32 +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Init(void) +{ + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Erase +* Description : Erase sector +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Erase(uint32_t SectorAddress) +{ +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + FLASH_ClearFlag(FLASH_FLAG_PGAERR | FLASH_FLAG_OPTVERR); + FLASH_ErasePage(SectorAddress); +#else + FLASH_ErasePage(SectorAddress); +#endif /* STM32L1XX_XD */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Write +* Description : Write sectors +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Write(uint32_t SectorAddress, uint32_t DataLength) +{ + uint32_t idx = 0; +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + __IO uint32_t* malPointer = (uint32_t *)MAL_Buffer; + __IO uint32_t* memPointer = (uint32_t *)SectorAddress; + __IO uint32_t memBuffer[32]; /* Temporary buffer holding data that will be written in a half-page space */ + __IO uint32_t* mempBuffer = memBuffer; + __IO uint32_t* tmp; +#endif /* STM32L1XX_XD */ + + if (DataLength & 0x3) /* Not an aligned data */ + { + for (idx = DataLength; idx < ((DataLength & 0xFFFC) + 4); idx++) + { + MAL_Buffer[idx] = 0xFF; + } + } + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + /* Reinitialize the intermediate buffer pointer */ + mempBuffer = memBuffer; + + /* If the address is not aligned to half-page fill the first location with existing data */ + if (((uint32_t)memPointer & 0x7F) != 0) + { + /* get the aligned address */ + tmp = (uint32_t *)((uint32_t)memPointer & 0xFFFFFF80); + + /* Read the first part from the memory */ + while (tmp < memPointer) + { + *(uint32_t *)(mempBuffer++) = *(uint32_t *)(tmp++); + } + } + + while (malPointer < (uint32_t*)(MAL_Buffer + DataLength)) + { + /* Fill with the received buffer */ + while (mempBuffer < (memBuffer + 32)) + { + /* If there are still data available in the received buffer */ + if (malPointer < ((uint32_t *)MAL_Buffer + DataLength)) + { + *(uint32_t *)(mempBuffer++) = *(uint32_t *)(malPointer++); + } + else /* no more data available in the received buffer: fill remaining with dummy 0 */ + { + *(uint32_t *)(mempBuffer++) = 0; + } + } + + /* Write the buffer to the memory*/ + FLASH_ProgramHalfPage(((uint32_t)memPointer & 0xFFFFFF80), (uint32_t *)(memBuffer)); + + /* Increment the memory pointer */ + memPointer = (uint32_t *)(((uint32_t)memPointer & 0xFFFFFF80) + (32*4)); + + /* Reinitialize the intermediate buffer pointer */ + mempBuffer = memBuffer; + } + +#else + + /* Data received are Word multiple */ + for (idx = 0; idx < DataLength; idx = idx + 4) + { + FLASH_ProgramWord(SectorAddress, *(uint32_t *)(MAL_Buffer + idx)); + SectorAddress += 4; + } +#endif /* STM32L1XX_XD */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Read +* Description : Read sectors +* Input : None +* Output : None +* Return : buffer address pointer +*******************************************************************************/ +uint8_t *FLASH_If_Read (uint32_t SectorAddress, uint32_t DataLength) +{ + return (uint8_t*)(SectorAddress); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/src/usb_desc.c b/src/boards/LoRaMote/usb/dfu/src/usb_desc.c new file mode 100644 index 000000000..7b1302d82 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/usb_desc.c @@ -0,0 +1,171 @@ +/** + ****************************************************************************** + * @file usb_desc.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptors for Device Firmware Upgrade (DFU) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_desc.h" +#include "usb-dfu-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +uint8_t DFU_DeviceDescriptor[DFU_SIZ_DEVICE_DESC] = + { + 0x12, /* bLength */ + 0x01, /* bDescriptorType */ + 0x00, /* bcdUSB, version 1.00 */ + 0x01, + 0x00, /* bDeviceClass : See interface */ + 0x00, /* bDeviceSubClass : See interface*/ + 0x00, /* bDeviceProtocol : See interface */ + bMaxPacketSize0, /* bMaxPacketSize0 0x40 = 64 */ + 0x83, /* idVendor (0483) */ + 0x04, + 0x11, /* idProduct (0xDF11) DFU PiD*/ + 0xDF, + 0x00, /* bcdDevice*/ + 0x02, + + 0x01, /* iManufacturer : index of string Manufacturer */ + 0x02, /* iProduct : index of string descriptor of product*/ + 0x03, /* iSerialNumber : index of string serial number*/ + + 0x01 /*bNumConfigurations */ + }; + +/* +#elif defined (USE_STM32L152_EVAL) || defined (USE_STM32L152D_EVAL) +*/ +uint8_t DFU_ConfigDescriptor[DFU_SIZ_CONFIG_DESC] = + { + 0x09, /* bLength: Configuration Descriptor size */ + 0x02, /* bDescriptorType: Configuration */ + DFU_SIZ_CONFIG_DESC, /* wTotalLength: Bytes returned */ + 0x00, + 0x01, /* bNumInterfaces: 1 interface */ + 0x01, /* bConfigurationValue: */ + /* Configuration value */ + 0x00, /* iConfiguration: */ + /* Index of string descriptor */ + /* describing the configuration */ + 0xC0, /* bmAttributes: */ + /* bus powered */ + 0x32, /* MaxPower 100 mA */ + /* 09 */ + + /************ Descriptor of DFU interface 0 Alternate setting 0 *********/ + 0x09, /* bLength: Interface Descriptor size */ + 0x04, /* bDescriptorType: */ + /* Interface descriptor type */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x00, /* bNumEndpoints*/ + 0xFE, /* bInterfaceClass: Application Specific Class Code */ + 0x01, /* bInterfaceSubClass : Device Firmware Upgrade Code */ + 0x02, /* nInterfaceProtocol: DFU mode protocol */ + 0x04, /* iInterface: */ + /* Index of string descriptor */ + /* 18 */ + + /******************** DFU Functional Descriptor********************/ + 0x09, /*blength = 9 Bytes*/ + 0x21, /* DFU Functional Descriptor*/ + 0x0B, /*bmAttribute + + bitCanDnload = 1 (bit 0) + bitCanUpload = 1 (bit 1) + bitManifestationTolerant = 0 (bit 2) + bitWillDetach = 1 (bit 3) + Reserved (bit4-6) + bitAcceleratedST = 0 (bit 7)*/ + 0xFF, /*DetachTimeOut= 255 ms*/ + 0x00, + wTransferSizeB0, + wTransferSizeB1, /* TransferSize = 128 Bytes */ + 0x1A, /* bcdDFUVersion*/ + 0x01 + /***********************************************************/ + /*27*/ + + }; + +uint8_t DFU_StringLangId[DFU_SIZ_STRING_LANGID] = + { + DFU_SIZ_STRING_LANGID, + 0x03, + 0x09, + 0x04 /* LangID = 0x0409: U.S. English */ + }; + + +uint8_t DFU_StringVendor[DFU_SIZ_STRING_VENDOR] = + { + DFU_SIZ_STRING_VENDOR, + 0x03, + /* Manufacturer: "STMicroelectronics" */ + 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, + 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, + 'c', 0, 's', 0 + }; + +uint8_t DFU_StringProduct[DFU_SIZ_STRING_PRODUCT] = + { + DFU_SIZ_STRING_PRODUCT, + 0x03, + /* Product name: "STM32 DFU" */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'D', 0, 'F', 0, 'U', 0 + }; + +uint8_t DFU_StringSerial[DFU_SIZ_STRING_SERIAL] = + { + DFU_SIZ_STRING_SERIAL, + 0x03, + /* Serial number */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0 + }; + +uint8_t DFU_StringInterface0[DFU_SIZ_STRING_INTERFACE0] = + { + DFU_SIZ_STRING_INTERFACE0, + 0x03, + // Interface 0: "@Internal Flash /0x08000000/48*256 a,464*256 g" + '@', 0, 'I', 0, 'n', 0, 't', 0, 'e', 0, 'r', 0, 'n', 0, 'a', 0, 'l', 0, /* 18 */ + ' ', 0, 'F', 0, 'l', 0, 'a', 0, 's', 0, 'h', 0, ' ', 0, ' ', 0, /* 16 */ + + '/', 0, '0', 0, 'x', 0, '0', 0, '8', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, /* 22 */ + + '/', 0, '4', 0, '8', 0, '*', 0, '2', 0, '5', 0, '6', 0, ' ', 0, 'a', 0, /* 18 */ + ',', 0, '4', 0, '6', 0, '4', 0, '*', 0, '2', 0, '5', 0, '6', 0, ' ', 0, 'g', 0, /* 20 */ + + }; + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/src/usb_istr.c b/src/boards/LoRaMote/usb/dfu/src/usb_istr.c new file mode 100644 index 000000000..c86322687 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/usb_istr.c @@ -0,0 +1,231 @@ +/** + ****************************************************************************** + * @file usb_istr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief ISTR events interrupt service routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "usb_istr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint16_t wIstr; /* ISTR register last read value */ +__IO uint8_t bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */ +__IO uint32_t esof_counter =0; /* expected SOF counter */ +__IO uint32_t wCNTR=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* function pointers to non-control endpoints service routines */ +void (*pEpInt_IN[7])(void) = + { + EP1_IN_Callback, + EP2_IN_Callback, + EP3_IN_Callback, + EP4_IN_Callback, + EP5_IN_Callback, + EP6_IN_Callback, + EP7_IN_Callback, + }; + +void (*pEpInt_OUT[7])(void) = + { + EP1_OUT_Callback, + EP2_OUT_Callback, + EP3_OUT_Callback, + EP4_OUT_Callback, + EP5_OUT_Callback, + EP6_OUT_Callback, + EP7_OUT_Callback, + }; + +/******************************************************************************* +* Function Name : USB_Istr +* Description : ISTR events interrupt service routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void USB_Istr(void) +{ + uint32_t i=0; + __IO uint32_t EP[8]; + + wIstr = _GetISTR(); + +#if (IMR_MSK & ISTR_CTR) + if (wIstr & ISTR_CTR & wInterrupt_Mask) + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + CTR_LP(); +#ifdef CTR_CALLBACK + CTR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_RESET) + if (wIstr & ISTR_RESET & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_RESET); + Device_Property.Reset(); +#ifdef RESET_CALLBACK + RESET_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_DOVR) + if (wIstr & ISTR_DOVR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_DOVR); +#ifdef DOVR_CALLBACK + DOVR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ERR) + if (wIstr & ISTR_ERR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_ERR); +#ifdef ERR_CALLBACK + ERR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_WKUP) + if (wIstr & ISTR_WKUP & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_WKUP); + Resume(RESUME_EXTERNAL); +#ifdef WKUP_CALLBACK + WKUP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SUSP) + if (wIstr & ISTR_SUSP & wInterrupt_Mask) + { + + /* check if SUSPEND is possible */ + if (fSuspendEnabled) + { + Suspend(); + } + else + { + /* if not possible then resume after xx ms */ + Resume(RESUME_LATER); + } + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + _SetISTR((uint16_t)CLR_SUSP); +#ifdef SUSP_CALLBACK + SUSP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SOF) + if (wIstr & ISTR_SOF & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_SOF); + bIntPackSOF++; + +#ifdef SOF_CALLBACK + SOF_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ESOF) + if (wIstr & ISTR_ESOF & wInterrupt_Mask) + { + /* clear ESOF flag in ISTR */ + _SetISTR((uint16_t)CLR_ESOF); + + if ((_GetFNR()&FNR_RXDP)!=0) + { + /* increment ESOF counter */ + esof_counter ++; + + /* test if we enter in ESOF more than 3 times with FSUSP =0 and RXDP =1=>> possible missing SUSP flag*/ + if ((esof_counter >3)&&((_GetCNTR()&CNTR_FSUSP)==0)) + { + /* this a sequence to apply a force RESET*/ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + esof_counter = 0; + } + } + else + { + esof_counter = 0; + } + + /* resume handling timing is made with ESOFs */ + Resume(RESUME_ESOF); /* request without change of the machine state */ + +#ifdef ESOF_CALLBACK + ESOF_Callback(); +#endif + } +#endif +} /* USB_Istr */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/LoRaMote/usb/dfu/src/usb_prop.c b/src/boards/LoRaMote/usb/dfu/src/usb_prop.c new file mode 100644 index 000000000..d5b58eab4 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/usb_prop.c @@ -0,0 +1,730 @@ +/** + ****************************************************************************** + * @file usb_prop.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processings related to DFU demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb-dfu-board.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "usb_pwr.h" +#include "dfu_mal.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint32_t wBlockNum = 0, wlength = 0; +uint32_t Manifest_State = Manifest_complete; +uint32_t Pointer = ApplicationAddress; /* Base Address to Erase, Program or Read */ + +DEVICE Device_Table = + { + EP_NUM, + 1 + }; + +DEVICE_PROP Device_Property = + { + DFU_init, + DFU_Reset, + DFU_Status_In, + DFU_Status_Out, + DFU_Data_Setup, + DFU_NoData_Setup, + DFU_Get_Interface_Setting, + DFU_GetDeviceDescriptor, + DFU_GetConfigDescriptor, + DFU_GetStringDescriptor, + 0, /*DFU_EP0Buffer*/ + bMaxPacketSize0 /*Max Packet size*/ + }; + +USER_STANDARD_REQUESTS User_Standard_Requests = + { + DFU_GetConfiguration, + DFU_SetConfiguration, + DFU_GetInterface, + DFU_SetInterface, + DFU_GetStatus, + DFU_ClearFeature, + DFU_SetEndPointFeature, + DFU_SetDeviceFeature, + DFU_SetDeviceAddress + }; + +ONE_DESCRIPTOR Device_Descriptor = + { + (uint8_t*)DFU_DeviceDescriptor, + DFU_SIZ_DEVICE_DESC + }; + +ONE_DESCRIPTOR Config_Descriptor = + { + (uint8_t*)DFU_ConfigDescriptor, + DFU_SIZ_CONFIG_DESC + }; + ONE_DESCRIPTOR DFU_String_Descriptor[5] = + { + { (uint8_t*)DFU_StringLangId, DFU_SIZ_STRING_LANGID }, + { (uint8_t*)DFU_StringVendor, DFU_SIZ_STRING_VENDOR }, + { (uint8_t*)DFU_StringProduct, DFU_SIZ_STRING_PRODUCT }, + { (uint8_t*)DFU_StringSerial, DFU_SIZ_STRING_SERIAL }, + { (uint8_t*)DFU_StringInterface0, DFU_SIZ_STRING_INTERFACE0 } + }; + +/* Extern variables ----------------------------------------------------------*/ +extern uint8_t DeviceState ; +extern uint8_t DeviceStatus[6]; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : DFU_init. +* Description : DFU init routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_init(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Update the serial number string descriptor with the data from the unique ID*/ + Get_SerialNum(); + + pInfo->Current_Configuration = 0; + + /* Connect the device */ + PowerOn(); + + /* Perform basic device initialization operations */ + USB_SIL_Init(); + + /* Enable USB interrupts */ + USB_Interrupts_Config(); + + bDeviceState = UNCONNECTED; +} + +/******************************************************************************* +* Function Name : DFU_Reset. +* Description : DFU reset routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Reset(void) +{ + /* Set DFU_DEVICE as not configured */ + Device_Info.Current_Configuration = 0; + + /* Current Feature initialization */ + pInformation->Current_Feature = DFU_ConfigDescriptor[7]; + + _SetBTABLE(BTABLE_ADDRESS); + + /* Initialize Endpoint 0 */ + _SetEPType(ENDP0, EP_CONTROL); + _SetEPTxStatus(ENDP0, EP_TX_NAK); + _SetEPRxAddr(ENDP0, ENDP0_RXADDR); + SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); + _SetEPTxAddr(ENDP0, ENDP0_TXADDR); + SetEPTxCount(ENDP0, Device_Property.MaxPacketSize); + Clear_Status_Out(ENDP0); + SetEPRxValid(ENDP0); + + /* Set this device to response on default address */ + SetDeviceAddress(0); + + /* Set the new control state of the device to Attached */ + bDeviceState = ATTACHED; +} +/******************************************************************************* +* Function Name : DFU_SetConfiguration. +* Description : Update the device state to configured. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_SetConfiguration(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + if (pInfo->Current_Configuration != 0) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } +} +/******************************************************************************* +* Function Name : DFU_SetConfiguration. +* Description : Update the device state to addressed. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_SetDeviceAddress (void) +{ + bDeviceState = ADDRESSED; +} +/******************************************************************************* +* Function Name : DFU_Status_In. +* Description : DFU status IN routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Status_In(void) +{} + +/******************************************************************************* +* Function Name : DFU_Status_Out. +* Description : DFU status OUT routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Status_Out (void) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint32_t Addr; + + if (pInfo->USBbRequest == DFU_GETSTATUS) + { + if (DeviceState == STATE_dfuDNBUSY) + { + if (wBlockNum == 0) /* Decode the Special Command*/ + { + if ((MAL_Buffer[0] == CMD_GETCOMMANDS) && (wlength == 1)) + {} + else if (( MAL_Buffer[0] == CMD_SETADDRESSPOINTER ) && (wlength == 5)) + { + Pointer = MAL_Buffer[1]; + Pointer += MAL_Buffer[2] << 8; + Pointer += MAL_Buffer[3] << 16; + Pointer += MAL_Buffer[4] << 24; + } + else if (( MAL_Buffer[0] == CMD_ERASE ) && (wlength == 5)) + { + Pointer = MAL_Buffer[1]; + Pointer += MAL_Buffer[2] << 8; + Pointer += MAL_Buffer[3] << 16; + Pointer += MAL_Buffer[4] << 24; + MAL_Erase(Pointer); + } + } + + else if (wBlockNum > 1) // Download Command + { + Addr = ((wBlockNum - 2) * wTransferSize) + Pointer; + MAL_Write(Addr, wlength); + } + wlength = 0; + wBlockNum = 0; + + DeviceState = STATE_dfuDNLOAD_SYNC; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + return; + } + else if (DeviceState == STATE_dfuMANIFEST)/* Manifestation in progress*/ + { + DFU_write_crc(); + return; + } + } + return; +} + +/******************************************************************************* +* Function Name : DFU_Data_Setup. +* Description : Handle the data class specific requests. +* Input : RequestNb. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_Data_Setup(uint8_t RequestNo) +{ + uint8_t *(*CopyRoutine)(uint16_t); + CopyRoutine = NULL; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + if (RequestNo == DFU_UPLOAD && (DeviceState == STATE_dfuIDLE + || DeviceState == STATE_dfuUPLOAD_IDLE )) + { + CopyRoutine = UPLOAD; + } + else if (RequestNo == DFU_DNLOAD && (DeviceState == STATE_dfuIDLE + || DeviceState == STATE_dfuDNLOAD_IDLE)) + { + DeviceState = STATE_dfuDNLOAD_SYNC; + CopyRoutine = DNLOAD; + } + else if (RequestNo == DFU_GETSTATE) + { + CopyRoutine = GETSTATE; + } + else if (RequestNo == DFU_GETSTATUS) + { + CopyRoutine = GETSTATUS; + } + else + { + return USB_UNSUPPORT; + } + } + else + { + return USB_UNSUPPORT; + } + + if (CopyRoutine == NULL) + { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : DFU_NoData_Setup. +* Description : Handle the No data class specific requests. +* Input : Request Nb. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_NoData_Setup(uint8_t RequestNo) +{ + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + /*DFU_NDLOAD*/ + if (RequestNo == DFU_DNLOAD) + { + /* End of DNLOAD operation*/ + if (DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuIDLE ) + { + Manifest_State = Manifest_In_Progress; + DeviceState = STATE_dfuMANIFEST_SYNC; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + DeviceStatus[4] = DeviceState; + return USB_SUCCESS; + } + } + /*DFU_UPLOAD*/ + else if (RequestNo == DFU_UPLOAD) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + DeviceStatus[4] = DeviceState; + return USB_SUCCESS; + } + + /*DFU_CLRSTATUS*/ + else if (RequestNo == DFU_CLRSTATUS) + { + + if (DeviceState == STATE_dfuERROR) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[0] = STATUS_OK;/*bStatus*/ + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState;/*bState*/ + DeviceStatus[5] = 0;/*iString*/ + } + else + { /*State Error*/ + DeviceState = STATE_dfuERROR; + DeviceStatus[0] = STATUS_ERRUNKNOWN;/*bStatus*/ + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState;/*bState*/ + DeviceStatus[5] = 0;/*iString*/ + } + return USB_SUCCESS; + } + /*DFU_ABORT*/ + else if (RequestNo == DFU_ABORT) + { + if (DeviceState == STATE_dfuIDLE || DeviceState == STATE_dfuDNLOAD_SYNC + || DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuMANIFEST_SYNC + || DeviceState == STATE_dfuUPLOAD_IDLE ) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[0] = STATUS_OK; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState; + DeviceStatus[5] = 0; /*iString*/ + wBlockNum = 0; + wlength = 0; + } + return USB_SUCCESS; + } + } + + + return USB_UNSUPPORT; + +} /* End of DFU_NoData_Setup */ + +/******************************************************************************* +* Function Name : DFU_GetDeviceDescriptor. +* Description : Gets the device descriptor. +* Input : Length. +* Output : None. +* Return : The address of the device descriptor. +*******************************************************************************/ +uint8_t *DFU_GetDeviceDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Device_Descriptor); +} + +/******************************************************************************* +* Function Name : DFU_GetConfigDescriptor. +* Description : Gets the configuration descriptor. +* Input : Length. +* Output : None. +* Return : The address of the configuration descriptor. +*******************************************************************************/ +uint8_t *DFU_GetConfigDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData (Length, &Config_Descriptor); +} + +/******************************************************************************* +* Function Name : DFU_GetStringDescriptor. +* Description : Gets the string descriptors according to the needed index. +* Input : Length. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +uint8_t *DFU_GetStringDescriptor(uint16_t Length) +{ + uint8_t wValue0 = pInformation->USBwValue0; + + if (wValue0 > 8) + { + return NULL; + } + else + { + return Standard_GetDescriptorData(Length, &DFU_String_Descriptor[wValue0]); + } +} + +/******************************************************************************* +* Function Name : DFU_Get_Interface_Setting. +* Description : tests the interface and the alternate setting according to the +* supported one. +* Input : - Interface : interface number. +* - AlternateSetting : Alternate Setting number. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting) +{ + if (AlternateSetting > 3) + { + return USB_UNSUPPORT; /* In this application we don't have more than 3 AlternateSettings */ + } + else if (Interface > 2) + { + return USB_UNSUPPORT; /* In this application we have only 1 interfaces */ + } + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : UPLOAD +* Description : Upload routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *UPLOAD(uint16_t Length) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint8_t B1, B0; + uint16_t offset, returned; + uint8_t *Phy_Addr = NULL; + uint32_t Addr = 0; + + B0 = pInfo->USBwValues.bw.bb0; + B1 = pInfo->USBwValues.bw.bb1; + wBlockNum = (uint16_t)B1; + wBlockNum = wBlockNum * 0x100; + wBlockNum += (uint16_t)B0; /* wBlockNum value updated*/ + + B0 = pInfo->USBwLengths.bw.bb0; + B1 = pInfo->USBwLengths.bw.bb1; + wlength = (uint16_t)B0; + wlength = wlength * 0x100; + wlength += (uint16_t)B1; /* wlength value updated*/ + + offset = pInformation->Ctrl_Info.Usb_wOffset; + + if (wBlockNum == 0) /* Get Command */ + { + if (wlength > 3) + { + DeviceState = STATE_dfuIDLE ; + } + else + { + DeviceState = STATE_dfuUPLOAD_IDLE; + } + + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + MAL_Buffer[0] = CMD_GETCOMMANDS; + MAL_Buffer[1] = CMD_SETADDRESSPOINTER; + MAL_Buffer[2] = CMD_ERASE; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 3 ; + return NULL; + } + + return(&MAL_Buffer[0]); + } + else if (wBlockNum > 1) + { + DeviceState = STATE_dfuUPLOAD_IDLE ; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + Addr = ((wBlockNum - 2) * wTransferSize) + Pointer; /* Change is Accelerated*/ + + Phy_Addr = MAL_Read(Addr, wlength); + returned = wlength - offset; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = returned ; + return NULL; + } + return(Phy_Addr + offset); + } + else /* unsupported wBlockNum */ + { + DeviceState = STATUS_ERRSTALLEDPKT; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + return NULL; + } +} + +/******************************************************************************* +* Function Name : DNLOAD +* Description : Download routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *DNLOAD (uint16_t Length) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint8_t B1, B0; + uint16_t offset, returned; + + B0 = pInfo->USBwValues.bw.bb0; + B1 = pInfo->USBwValues.bw.bb1; + wBlockNum = (uint16_t)B1; + wBlockNum = wBlockNum * 0x100; + wBlockNum += (uint16_t)B0; + B0 = pInfo->USBwLengths.bw.bb0; + B1 = pInfo->USBwLengths.bw.bb1; + wlength = (uint16_t)B0; + wlength = wlength * 0x100; + wlength += (uint16_t)B1; + + offset = pInfo->Ctrl_Info.Usb_wOffset; + + DeviceState = STATE_dfuDNLOAD_SYNC; + DeviceStatus[4] = DeviceState; + + returned = wlength - offset; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = returned ; + return NULL; + } + + return((uint8_t*)MAL_Buffer + offset); +} + +/******************************************************************************* +* Function Name : GETSTATE. +* Description : Get State request routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *GETSTATE(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 1 ; + return NULL; + } + else + return(&DeviceState); +} + +/******************************************************************************* +* Function Name : GETSTATUS. +* Description : Get Status request routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *GETSTATUS(uint16_t Length) +{ + switch (DeviceState) + { + case STATE_dfuDNLOAD_SYNC: + if (wlength != 0) + { + DeviceState = STATE_dfuDNBUSY; + DeviceStatus[4] = DeviceState; + if ((wBlockNum == 0) && (MAL_Buffer[0] == CMD_ERASE)) + { + MAL_GetStatus(Pointer, 0, DeviceStatus); + } + else + { + MAL_GetStatus(Pointer, 1, DeviceStatus); + } + } + else /* (wlength==0)*/ + { + DeviceState = STATE_dfuDNLOAD_IDLE; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + } + break; + case STATE_dfuMANIFEST_SYNC : + if (Manifest_State == Manifest_In_Progress) + { + DeviceState = STATE_dfuMANIFEST; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 1; /*bwPollTimeout = 1ms*/ + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + //break; + } + else if (Manifest_State == Manifest_complete && Config_Descriptor.Descriptor[20] + & 0x04) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + //break; + } + break; + default : + break; + } + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 6 ; + return NULL; + } + else + return(&(DeviceStatus[0])); +} + +/******************************************************************************* +* Function Name : DFU_write_crc. +* Description : DFU Write CRC routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_write_crc(void) +{ + Manifest_State = Manifest_complete; + + if (Config_Descriptor.Descriptor[20] & 0x04) + { + DeviceState = STATE_dfuMANIFEST_SYNC; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + return; + } + else + { + DeviceState = STATE_dfuMANIFEST_WAIT_RESET; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + Reset_Device(); + + return; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/LoRaMote/usb/dfu/src/usb_pwr.c b/src/boards/LoRaMote/usb/dfu/src/usb_pwr.c new file mode 100644 index 000000000..6fa37f727 --- /dev/null +++ b/src/boards/LoRaMote/usb/dfu/src/usb_pwr.c @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file usb_pwr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_pwr.h" +#include "usb-dfu-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint32_t bDeviceState = UNCONNECTED; /* USB device status */ +__IO bool fSuspendEnabled = TRUE; /* true when suspend is possible */ +__IO uint32_t EP[8]; + +struct +{ + __IO RESUME_STATE eState; + __IO uint8_t bESOFcnt; +} +ResumeS; + +__IO uint32_t remotewakeupon=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : PowerOn +* Description : +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOn(void) +{ + uint16_t wRegVal; + + /*** cable plugged-in ? ***/ + USB_Cable_Config(ENABLE); + + /*** CNTR_PWDN = 0 ***/ + wRegVal = CNTR_FRES; + _SetCNTR(wRegVal); + + /*** CNTR_FRES = 0 ***/ + wInterrupt_Mask = 0; + _SetCNTR(wInterrupt_Mask); + /*** Clear pending interrupts ***/ + _SetISTR(0); + /*** Set interrupt mask ***/ + wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; + _SetCNTR(wInterrupt_Mask); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : PowerOff +* Description : handles switch-off conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOff() +{ + /* disable all interrupts and force USB reset */ + _SetCNTR(CNTR_FRES); + /* clear interrupt status register */ + _SetISTR(0); + /* Disable the Pull-Up*/ + USB_Cable_Config(DISABLE); + /* switch-off device */ + _SetCNTR(CNTR_FRES + CNTR_PDWN); + /* sw variables reset */ + /* ... */ + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Suspend +* Description : sets suspend mode operating conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Suspend(void) +{ + uint32_t i =0; + uint16_t wCNTR; + uint32_t tmpreg = 0; + __IO uint32_t savePWR_CR=0; + /* suspend preparation */ + /* ... */ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /* This a sequence to apply a force RESET to handle a robustness case */ + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /* unmask RESET flag */ + wCNTR|=CNTR_RESETM; + _SetCNTR(wCNTR); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + /* Now it is safe to enter macrocell in suspend mode */ + wCNTR |= CNTR_FSUSP; + _SetCNTR(wCNTR); + + /* force low-power mode in the macrocell */ + wCNTR = _GetCNTR(); + wCNTR |= CNTR_LPMODE; + _SetCNTR(wCNTR); + + /*prepare entry in low power mode (STOP mode)*/ + /* Select the regulator state in STOP mode*/ + savePWR_CR = PWR->CR; + tmpreg = PWR->CR; + /* Clear PDDS and LPDS bits */ + tmpreg &= ((uint32_t)0xFFFFFFFC); + /* Set LPDS bit according to PWR_Regulator value */ + tmpreg |= PWR_Regulator_LowPower; + /* Store the new value */ + PWR->CR = tmpreg; + /* Set SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#else + SCB->SCR |= SCB_SCR_SLEEPDEEP; +#endif + + /* enter system in STOP mode, only when wakeup flag in not set */ + if((_GetISTR()&ISTR_WKUP)==0) + { + __WFI(); + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } + else + { + /* Clear Wakeup flag */ + _SetISTR(CLR_WKUP); + /* clear FSUSP to abort entry in suspend mode */ + wCNTR = _GetCNTR(); + wCNTR&=~CNTR_FSUSP; + _SetCNTR(wCNTR); + + /*restore sleep mode configuration */ + /* restore Power regulator config in sleep mode*/ + PWR->CR = savePWR_CR; + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } +} + +/******************************************************************************* +* Function Name : Resume_Init +* Description : Handles wake-up restoring normal operations +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Resume_Init(void) +{ + uint16_t wCNTR; + + /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ + /* restart the clocks */ + /* ... */ + + /* CNTR_LPMODE = 0 */ + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_LPMODE); + _SetCNTR(wCNTR); + + /* restore full power */ + /* ... on connected devices */ + Leave_LowPowerMode(); + + /* reset FSUSP bit */ + _SetCNTR(IMR_MSK); + + /* reverse suspend preparation */ + /* ... */ + +} + +/******************************************************************************* +* Function Name : Resume +* Description : This is the state machine handling resume operations and +* timing sequence. The control is based on the Resume structure +* variables and on the ESOF interrupt calling this subroutine +* without changing machine state. +* Input : a state machine value (RESUME_STATE) +* RESUME_ESOF doesn't change ResumeS.eState allowing +* decrementing of the ESOF counter in different states. +* Output : None. +* Return : None. +*******************************************************************************/ +void Resume(RESUME_STATE eResumeSetVal) +{ + uint16_t wCNTR; + + if (eResumeSetVal != RESUME_ESOF) + ResumeS.eState = eResumeSetVal; + switch (ResumeS.eState) + { + case RESUME_EXTERNAL: + if (remotewakeupon ==0) + { + Resume_Init(); + ResumeS.eState = RESUME_OFF; + } + else /* RESUME detected during the RemoteWAkeup signalling => keep RemoteWakeup handling*/ + { + ResumeS.eState = RESUME_ON; + } + break; + case RESUME_INTERNAL: + Resume_Init(); + ResumeS.eState = RESUME_START; + remotewakeupon = 1; + break; + case RESUME_LATER: + ResumeS.bESOFcnt = 2; + ResumeS.eState = RESUME_WAIT; + break; + case RESUME_WAIT: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + ResumeS.eState = RESUME_START; + break; + case RESUME_START: + wCNTR = _GetCNTR(); + wCNTR |= CNTR_RESUME; + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_ON; + ResumeS.bESOFcnt = 10; + break; + case RESUME_ON: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + { + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_RESUME); + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_OFF; + remotewakeupon = 0; + } + break; + case RESUME_OFF: + case RESUME_ESOF: + default: + ResumeS.eState = RESUME_OFF; + break; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SK-iM880A/LoRaMac-board.h b/src/boards/SK-iM880A/LoRaMac-board.h new file mode 100644 index 000000000..0d4ca9a75 --- /dev/null +++ b/src/boards/SK-iM880A/LoRaMac-board.h @@ -0,0 +1,102 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRa MAC layer board dependent definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __LORAMAC_BOARD_H__ +#define __LORAMAC_BOARD_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define LORA_MAX_NB_CHANNELS 16 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MIN_DATARATE DR_SF12 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MAX_DATARATE DR_FSK + +/*! + * Default datarate used by the node + */ +#define LORAMAC_DEFAULT_DATARATE DR_SF12 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM + +/*! + * Default Tx output power used by the node + */ +#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM + +/*! + * Returns individual channel mask + * + * \param[IN] channelIndex Channel index 1 based + * \retval channelMask + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * LoRaMac TxPower definition + */ +#define TX_POWER_20_DBM 0 +#define TX_POWER_14_DBM 1 +#define TX_POWER_11_DBM 2 +#define TX_POWER_08_DBM 3 +#define TX_POWER_05_DBM 4 +#define TX_POWER_02_DBM 5 + +/*! + * LoRaMac datarates definition + */ +#define DR_SF12 0 +#define DR_SF11 1 +#define DR_SF10 2 +#define DR_SF9 3 +#define DR_SF8 4 +#define DR_SF7 5 +#define DR_SF7H 6 +#define DR_FSK 7 + +/*! + * LoRaMac default channels definition + */ + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 865525000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 868100000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 868300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 868500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#endif // __LORAMAC_BOARD_H__ diff --git a/src/boards/SK-iM880A/adc-board.c b/src/boards/SK-iM880A/adc-board.c index 4fef13e9d..e5eab5c27 100644 --- a/src/boards/SK-iM880A/adc-board.c +++ b/src/boards/SK-iM880A/adc-board.c @@ -119,7 +119,7 @@ void AdcMcuFormat( Adc_t *obj, AdcResolution AdcRes, AdcNumConversion AdcNumConv uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) { - uint16_t ADCdata = 0; + uint16_t adcData = 0; /* Enable The HSI (16Mhz) */ RCC_HSICmd( ENABLE ); @@ -129,10 +129,10 @@ uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE ); - // temperature or Vref ? + // Temperature or Vref measurement if( ( channel == ADC_Channel_16 ) || ( channel == ADC_Channel_17 ) ) { - // Yes, enable TemperatureSensor and interenal reference voltage + // Yes, enable temperature sensor and internal reference voltage ADC_TempSensorVrefintCmd( ENABLE ); } @@ -161,7 +161,7 @@ uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) { } - ADCdata = ADC_GetConversionValue( ADC1 ); + adcData = ADC_GetConversionValue( ADC1 ); ADC_Cmd( ADC1, DISABLE ); @@ -175,5 +175,5 @@ uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) RCC_HSICmd( DISABLE ); - return ADCdata; + return adcData; } diff --git a/src/boards/SK-iM880A/board.c b/src/boards/SK-iM880A/board.c index 54324ffb6..e41352a98 100644 --- a/src/boards/SK-iM880A/board.c +++ b/src/boards/SK-iM880A/board.c @@ -84,6 +84,7 @@ void BoardInitMcu( void ) SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; // Clear SysTick Exception pending flag AdcInit( &Adc, POTI ); + SpiInit( &SX1272.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); SX1272IoInit( ); @@ -163,7 +164,7 @@ uint16_t BoardMeasureVdd( void ) MeasuredLevel = AdcMcuRead( &Adc , ADC_Channel_17 ); // We don't use the VREF from calibValues here. - // calculate the Vaoltage in miliVolt + // calculate the Voltage in miliVolt milliVolt = ( uint32_t )PDDADC_VREF_BANDGAP * ( uint32_t )PDDADC_MAX_VALUE; milliVolt = milliVolt / ( uint32_t ) MeasuredLevel; @@ -173,21 +174,21 @@ uint16_t BoardMeasureVdd( void ) uint8_t BoardMeasureBatterieLevel( void ) { uint8_t batteryLevel = 0; - uint16_t MeasuredLevel = 0; + uint16_t measuredLevel = 0; - MeasuredLevel = BoardMeasureVdd( ); + measuredLevel = BoardMeasureVdd( ); - if( MeasuredLevel >= 3000 ) + if( measuredLevel >= 3000 ) { batteryLevel = 254; } - else if( MeasuredLevel <= 2400 ) + else if( measuredLevel <= 2400 ) { - batteryLevel = 0; + batteryLevel = 1; } else { - batteryLevel = ( MeasuredLevel - 2400 ) * BATTERY_STEP_LEVEL; + batteryLevel = ( measuredLevel - 2400 ) * BATTERY_STEP_LEVEL; } return batteryLevel; } diff --git a/src/boards/SK-iM880A/cmsis/arm-gcc/stm32l1xx_md_flash.ld b/src/boards/SK-iM880A/cmsis/arm-gcc/stm32l1xx_md_flash.ld new file mode 100644 index 000000000..1be62d5b0 --- /dev/null +++ b/src/boards/SK-iM880A/cmsis/arm-gcc/stm32l1xx_md_flash.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/SK-iM880A/gpio-board.c b/src/boards/SK-iM880A/gpio-board.c index a387bf5e9..72802a517 100644 --- a/src/boards/SK-iM880A/gpio-board.c +++ b/src/boards/SK-iM880A/gpio-board.c @@ -200,7 +200,9 @@ uint32_t GpioMcuRead( Gpio_t *obj ) void EXTI0_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line0 ) != RESET ) { if( GpioIrq[0] != NULL ) @@ -213,7 +215,9 @@ void EXTI0_IRQHandler( void ) void EXTI1_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line1 ) != RESET ) { if( GpioIrq[1] != NULL ) @@ -226,7 +230,9 @@ void EXTI1_IRQHandler( void ) void EXTI2_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line2 ) != RESET ) { if( GpioIrq[2] != NULL ) @@ -239,7 +245,9 @@ void EXTI2_IRQHandler( void ) void EXTI3_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line3 ) != RESET ) { if( GpioIrq[3] != NULL ) @@ -252,7 +260,9 @@ void EXTI3_IRQHandler( void ) void EXTI4_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line4 ) != RESET ) { if( GpioIrq[4] != NULL ) @@ -265,7 +275,9 @@ void EXTI4_IRQHandler( void ) void EXTI9_5_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line5 ) != RESET ) { if( GpioIrq[5] != NULL ) @@ -314,7 +326,9 @@ void EXTI9_5_IRQHandler( void ) void EXTI15_10_IRQHandler( void ) { +#ifdef LOW_POWER_MODE_ENABLE RtcRecoverMcuStatus( ); +#endif if( EXTI_GetITStatus( EXTI_Line10 ) != RESET ) { if( GpioIrq[10] != NULL ) diff --git a/src/boards/SK-iM880A/i2c-board.c b/src/boards/SK-iM880A/i2c-board.c index 964de4f69..de1bdf280 100644 --- a/src/boards/SK-iM880A/i2c-board.c +++ b/src/boards/SK-iM880A/i2c-board.c @@ -114,6 +114,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY) ) @@ -121,6 +123,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -135,6 +139,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -149,6 +155,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -165,6 +173,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -180,6 +190,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -196,6 +208,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -211,6 +225,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -219,6 +235,8 @@ uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_ buffer++; size--; } + + __enable_irq( ); return( SUCCESS ); } @@ -226,6 +244,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t { uint32_t timeOut; + __disable_irq( ); + /* Test on BUSY Flag */ timeOut = TIMEOUT_MAX; while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY ) ) @@ -233,6 +253,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -247,6 +269,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -261,6 +285,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -277,6 +303,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -292,6 +320,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -303,6 +333,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -317,6 +349,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -333,6 +367,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -353,6 +389,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -374,6 +412,8 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } @@ -404,11 +444,15 @@ uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t if( ( timeOut-- ) == 0 ) { I2cResetBus( obj ); + + __enable_irq( ); return( FAIL ); } } /*!< Re-Enable Acknowledgement to be ready for another reception */ I2C_AcknowledgeConfig( obj->I2c, ENABLE ); } + + __enable_irq( ); return( SUCCESS ); } diff --git a/src/boards/SK-iM880A/rtc-board.c b/src/boards/SK-iM880A/rtc-board.c index 4a8440ebd..938f507f5 100644 --- a/src/boards/SK-iM880A/rtc-board.c +++ b/src/boards/SK-iM880A/rtc-board.c @@ -109,7 +109,7 @@ static const uint16_t DaysInLeapYear = 366; /*! * Number of days in a century */ -static const uint16_t DaysInCentury = 36524; +static const double DaysInCentury = 36524.219; /*! * Number of days in each month on a normal year @@ -172,7 +172,7 @@ static void RtcSetConfig( void ) RTC_TimeStructInit( &RTC_TimeStruct ); RTC_DateStructInit( &RTC_DateStruct ); - + RTC_SetDate( RTC_Format_BIN, &RTC_DateStruct ); RTC_SetTime( RTC_Format_BIN, &RTC_TimeStruct ); @@ -293,9 +293,10 @@ static void RtcClearStatus( void ) static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) { - uint8_t rtcSeconds = 0; - uint8_t rtcMinutes = 0; - uint8_t rtcHours = 0; + uint16_t rtcSeconds = 0; + uint16_t rtcMinutes = 0; + uint16_t rtcHours = 0; + uint16_t rtcDays = 0; uint8_t rtcAlarmSeconds = 0; uint8_t rtcAlarmMinutes = 0; @@ -308,32 +309,23 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) RtcClearStatus( ); + RtcTimerContext = RtcGetCalendarValue( ); RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); - - if( ( PreviousYear == 99 ) && ( RTC_DateStruct.RTC_Year == 0 ) ) - { - Century++; - } - PreviousYear = RTC_DateStruct.RTC_Year; - - RtcTimerContext = RtcGetCalendarValue( ); timeoutValue = timeoutValue / RTC_ALARM_TIME_BASE; - rtcSeconds = timeoutValue % SecondsInMinute; - rtcMinutes = ( timeoutValue / SecondsInMinute ) % SecondsInMinute; - rtcHours = ( timeoutValue / SecondsInHour ) % HoursInDay; + rtcSeconds = ( timeoutValue % SecondsInMinute ) + RTC_TimeStruct.RTC_Seconds; + rtcMinutes = ( ( timeoutValue / SecondsInMinute ) % SecondsInMinute ) + RTC_TimeStruct.RTC_Minutes; + rtcHours = ( ( timeoutValue / SecondsInHour ) % HoursInDay ) + RTC_TimeStruct.RTC_Hours; + rtcDays = ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date; - rtcAlarmSeconds = ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) % 60; - rtcAlarmMinutes = ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) % 60; - rtcAlarmHours = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmHours = ( rtcAlarmHours + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) % 24; - rtcAlarmDays = ( ( ( ( rtcSeconds + RTC_TimeStruct.RTC_Seconds ) / 60 ) + ( rtcMinutes + RTC_TimeStruct.RTC_Minutes % 60 ) ) / 60 ); - rtcAlarmDays = ( rtcAlarmDays + ( rtcHours + RTC_TimeStruct.RTC_Hours ) ) / 24; - rtcAlarmDays = ( rtcAlarmDays + ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date ); + rtcAlarmSeconds = ( rtcSeconds ) % 60; + rtcAlarmMinutes = ( ( rtcSeconds / 60 ) + rtcMinutes ) % 60; + rtcAlarmHours = ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) % 24; + rtcAlarmDays = ( ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) / 24 ) + rtcDays; - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ] ) { @@ -347,11 +339,11 @@ static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ]; } } - + RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = rtcAlarmSeconds; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = rtcAlarmMinutes; RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = rtcAlarmHours; - RTC_AlarmStructure.RTC_AlarmDateWeekDay = rtcAlarmDays; + RTC_AlarmStructure.RTC_AlarmDateWeekDay = ( uint8_t )rtcAlarmDays; RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_TimeStruct.RTC_H12; RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; @@ -451,7 +443,7 @@ void RTC_Alarm_IRQHandler( void ) } } -void BlockLowPowerDuringTask ( bool status ) +void BlockLowPowerDuringTask( bool status ) { if( status == true ) { @@ -460,7 +452,7 @@ void BlockLowPowerDuringTask ( bool status ) LowPowerDisableDuringTask = status; } -void RtcDelayMs ( uint32_t delay ) +void RtcDelayMs( uint32_t delay ) { uint64_t delayValue = 0; uint64_t timeout = 0; @@ -497,43 +489,43 @@ uint64_t RtcGetCalendarValue( void ) // century for( i = 0; i < Century; i++ ) { - calendarValue += DaysInCentury * SecondsInDay; + calendarValue += ( uint64_t )( DaysInCentury * SecondsInDay ); } // years for( i = 0; i < RTC_DateStruct.RTC_Year; i++ ) { - if( ( i != 0 ) && ( i % 4 == 0 ) ) + if( ( i == 0 ) || ( i % 4 == 0 ) ) { - calendarValue += DaysInLeapYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInLeapYear * SecondsInDay; } else { - calendarValue += DaysInYear * SecondsInDay * RTC_DateStruct.RTC_Year; + calendarValue += DaysInYear * SecondsInDay; } } // months - if( ( RTC_DateStruct.RTC_Year != 0 ) && ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonthLeapYear[ i - 1] * SecondsInDay; + calendarValue += DaysInMonthLeapYear[i] * SecondsInDay; } } else { - for( i = 1; i < RTC_DateStruct.RTC_Month; i++ ) + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) { - calendarValue += DaysInMonth[ i ] * SecondsInDay; + calendarValue += DaysInMonth[i] * SecondsInDay; } } // days calendarValue += ( ( uint32_t )RTC_TimeStruct.RTC_Seconds + - ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * 60 ) + + ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * SecondsInMinute ) + ( ( uint32_t )RTC_TimeStruct.RTC_Hours * SecondsInHour ) + - ( ( uint32_t )RTC_DateStruct.RTC_Date * SecondsInDay ) ); + ( ( uint32_t )( RTC_DateStruct.RTC_Date * SecondsInDay ) ) ); return( calendarValue ); } diff --git a/src/boards/SK-iM880A/spi-board.c b/src/boards/SK-iM880A/spi-board.c index 47f2728d4..7497cd1e2 100644 --- a/src/boards/SK-iM880A/spi-board.c +++ b/src/boards/SK-iM880A/spi-board.c @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian @@ -122,7 +119,7 @@ void SpiFrequency( Spi_t *obj, uint32_t hz ) divisor |= divisor >> 16; divisor++; - divisor = __builtin_ffs( divisor ) - 1; + divisor = __ffs( divisor ) - 1; divisor = ( divisor > 0x07 ) ? 0x07 : divisor; diff --git a/src/boards/SK-iM880A/spi-board.h b/src/boards/SK-iM880A/spi-board.h index 8e9d9caf0..0dfbc8408 100644 --- a/src/boards/SK-iM880A/spi-board.h +++ b/src/boards/SK-iM880A/spi-board.h @@ -8,9 +8,6 @@ Description: Bleeper board SPI driver implementation -Comments: When compiling this file with KEIL compiler the --gnu option must be - added in order to support the __builtin_ffs function. - License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian diff --git a/src/boards/SK-iM880A/sx1272-board.c b/src/boards/SK-iM880A/sx1272-board.c index ffc03aad7..70ae89438 100644 --- a/src/boards/SK-iM880A/sx1272-board.c +++ b/src/boards/SK-iM880A/sx1272-board.c @@ -29,20 +29,18 @@ const struct Radio_s Radio = { SX1272Init, SX1272GetStatus, - SX1272SetChannel, SX1272IsChannelFree, + SX1272Random, SX1272SetRxConfig, SX1272SetTxConfig, + SX1272CheckRfFrequency, SX1272GetTimeOnAir, SX1272Send, - SX1272SetSleep, SX1272SetStby, SX1272SetRx, - SX1272ReadRssi, - SX1272Write, SX1272Read, SX1272WriteBuffer, @@ -91,6 +89,11 @@ void SX1272IoDeInit( void ) GpioInit( &SX1272.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); } +uint8_t SX1272GetPaSelect( uint32_t channel ) +{ + return RF_PACONFIG_PASELECT_PABOOST; +} + void SX1272SetAntSwLowPower( bool status ) { if( RadioIsActive != status ) @@ -140,3 +143,9 @@ void SX1272SetAntSw( uint8_t rxTx ) GpioWrite( &AntTx, 0 ); } } + +bool SX1272CheckRfFrequency( uint32_t frequency ) +{ + // Implement check. Currently all frequencies are supportted + return true; +} diff --git a/src/boards/SK-iM880A/sx1272-board.h b/src/boards/SK-iM880A/sx1272-board.h index 8ad79a8c1..cf5856443 100644 --- a/src/boards/SK-iM880A/sx1272-board.h +++ b/src/boards/SK-iM880A/sx1272-board.h @@ -22,23 +22,21 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define RADIO_INIT_REGISTERS_VALUE \ { \ - { MODEM_FSK , REG_PACONFIG , 0x8F },\ { MODEM_FSK , REG_LNA , 0x23 },\ - { MODEM_FSK , REG_RXCONFIG , 0x0E },\ + { MODEM_FSK , REG_RXCONFIG , 0x1E },\ { MODEM_FSK , REG_RSSICONFIG , 0xD2 },\ - { MODEM_FSK , REG_OSC , 0x07 },\ { MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\ - { MODEM_FSK , REG_PREAMBLELSB , 0x08 },\ - { MODEM_FSK , REG_SYNCVALUE1 , 0x69 },\ - { MODEM_FSK , REG_SYNCVALUE2 , 0x81 },\ - { MODEM_FSK , REG_SYNCVALUE3 , 0x7E },\ - { MODEM_FSK , REG_SYNCVALUE4 , 0x96 },\ + { MODEM_FSK , REG_OSC , 0x07 },\ + { MODEM_FSK , REG_SYNCCONFIG , 0x12 },\ + { MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\ + { MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\ + { MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\ + { MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\ { MODEM_FSK , REG_FIFOTHRESH , 0x8F },\ { MODEM_FSK , REG_IMAGECAL , 0x02 },\ { MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\ { MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\ { MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\ - { MODEM_LORA, 0x31 , 0x43 },\ } \ /*! @@ -60,6 +58,14 @@ void SX1272IoIrqInit( DioIrqHandler **irqHandlers ); */ void SX1272IoDeInit( void ); +/*! + * \brief Gets the board PA selection configuration + * + * \param [IN] channel Channel frequency in Hz + * \retval PaSelect RegPaConfig PaSelect value + */ +uint8_t SX1272GetPaSelect( uint32_t channel ); + /*! * \brief Set the RF Switch I/Os pins in Low Power mode * @@ -88,6 +94,14 @@ void SX1272AntSwDeInit( void ); */ void SX1272SetAntSw( uint8_t rxTx ); +/*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ +bool SX1272CheckRfFrequency( uint32_t frequency ); + /*! * Radio hardware and global parameters */ diff --git a/src/boards/SK-iM880A/uart-board.c b/src/boards/SK-iM880A/uart-board.c index 1f1dc272c..618aba743 100644 --- a/src/boards/SK-iM880A/uart-board.c +++ b/src/boards/SK-iM880A/uart-board.c @@ -173,20 +173,6 @@ void USART1_IRQHandler( void ) { uint8_t data; - if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET ) - { - data = USART_ReceiveData( USART1 ); - if( IsFifoFull( &Uart1.FifoRx ) == false ) - { - // Read one byte from the receive data register - FifoPush( &Uart1.FifoRx, data ); - } - if( Uart1.IrqNotify != NULL ) - { - Uart1.IrqNotify( UART_NOTIFY_RX ); - } - } - if( USART_GetITStatus( USART1, USART_IT_TXE ) != RESET ) { if( IsFifoEmpty( &Uart1.FifoTx ) == false ) @@ -205,4 +191,23 @@ void USART1_IRQHandler( void ) Uart1.IrqNotify( UART_NOTIFY_TX ); } } + + if( USART_GetITStatus( USART1, USART_IT_ORE_RX ) != RESET ) + { + USART_ReceiveData( USART1 ); + } + + if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET ) + { + data = USART_ReceiveData( USART1 ); + if( IsFifoFull( &Uart1.FifoRx ) == false ) + { + // Read one byte from the receive data register + FifoPush( &Uart1.FifoRx, data ); + } + if( Uart1.IrqNotify != NULL ) + { + Uart1.IrqNotify( UART_NOTIFY_RX ); + } + } } diff --git a/src/boards/SensorNode/LoRaMac-board.h b/src/boards/SensorNode/LoRaMac-board.h new file mode 100644 index 000000000..e259337d7 --- /dev/null +++ b/src/boards/SensorNode/LoRaMac-board.h @@ -0,0 +1,158 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: LoRa MAC layer board dependent definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __LORAMAC_BOARD_H__ +#define __LORAMAC_BOARD_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define LORA_MAX_NB_CHANNELS 16 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MIN_DATARATE DR_SF12 + +/*! + * Minimal datarate that can be used by the node + */ +#define LORAMAC_MAX_DATARATE DR_FSK + +/*! + * Default datarate used by the node + */ +#define LORAMAC_DEFAULT_DATARATE DR_SF12 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM + +/*! + * Minimal Tx output power that can be used by the node + */ +#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM + +/*! + * Default Tx output power used by the node + */ +#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM + +/*! + * Returns individual channel mask + * + * \param[IN] channelIndex Channel index 1 based + * \retval channelMask + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * LoRaMac TxPower definition + */ +#define TX_POWER_20_DBM 0 +#define TX_POWER_14_DBM 1 +#define TX_POWER_11_DBM 2 +#define TX_POWER_08_DBM 3 +#define TX_POWER_05_DBM 4 +#define TX_POWER_02_DBM 5 + +/*! + * LoRaMac datarates definition + */ +#define DR_SF12 0 +#define DR_SF11 1 +#define DR_SF10 2 +#define DR_SF9 3 +#define DR_SF8 4 +#define DR_SF7 5 +#define DR_SF7H 6 +#define DR_FSK 7 + +/*! + * LoRaMac default channels definition + */ +#if defined( USE_BAND_433 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 434200000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 433300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 433500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 433700000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_470 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 473400000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 471300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 471500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 471700000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_868 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 865525000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 868100000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 868300000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 868500000, { ( ( DR_SF7 << 4 ) | DR_SF12 ) }, 0 } + +#elif defined( USE_BAND_915 ) + +/*! + * Second reception window channel definition. + * \remark DCycle field isn't used. This channel is Rx only + */ +// Channel = { Frequency [Hz], Datarate } +#define RX_WND_2_CHANNEL { 903700000, DR_SF9 } + +/*! + * LoRaMac default channels + */ +// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, DCycle } +#define LC1 { 902700000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC2 { 902900000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } +#define LC3 { 903100000, { ( ( DR_SF10 << 4 ) | DR_SF12 ) }, 0 } + +#else + #error "Please define a frequency band in the compiler options." +#endif + +#endif // __LORAMAC_BOARD_H__ diff --git a/src/boards/SensorNode/adc-board.c b/src/boards/SensorNode/adc-board.c new file mode 100644 index 000000000..9ef9ca399 --- /dev/null +++ b/src/boards/SensorNode/adc-board.c @@ -0,0 +1,172 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Board ADC driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "adc-board.h" + +void AdcMcuInit( Adc_t *obj, PinNames adcInput ) +{ + obj->Adc = ( ADC_TypeDef *)ADC1_BASE; + + ADC_DeInit( obj->Adc ); + + GpioInit( &obj->AdcInput, adcInput, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +void AdcMcuFormat( Adc_t *obj, AdcResolution AdcRes, AdcNumConversion AdcNumConv, AdcTriggerConv AdcTrig, AdcDataAlignement AdcDataAlig ) +{ + /* Enable The HSI (16Mhz) */ + RCC_HSICmd( ENABLE ); + + /* Check that HSI oscillator is ready */ + while(RCC_GetFlagStatus( RCC_FLAG_HSIRDY ) == RESET ); + + RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE ); + + // Setup lowest possible prescaler in oder to be able to operate + // at the whole Vdd rage 1.6V to 3.6V + ADC_CommonInitTypeDef Adc_CommInitStructure; + Adc_CommInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; + ADC_CommonInit( &Adc_CommInitStructure ); + + ADC_InitTypeDef ADC_InitStructure; + + ADC_StructInit( &ADC_InitStructure ); + + if( AdcRes == ADC_12_BIT ) + { + ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; + } + else if( AdcRes == ADC_10_BIT ) + { + ADC_InitStructure.ADC_Resolution = ADC_Resolution_10b; + } + else if(AdcRes == ADC_8_BIT ) + { + ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b; + } + else if(AdcRes == ADC_6_BIT ) + { + ADC_InitStructure.ADC_Resolution = ADC_Resolution_6b; + } + + ADC_InitStructure.ADC_ScanConvMode = DISABLE; + + if( AdcNumConv == SINGLE_CONVERSION ) + { + ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; + } + else + { + ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; + } + + if( AdcTrig == CONVERT_MANUAL_TRIG ) + { + ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; + } + else if( AdcTrig == CONVERT_RISING_EDGE ) + { + ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; + } + else if( AdcTrig == CONVERT_FALLING_EDGE ) + { + ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Falling; + } + else + { + ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_RisingFalling; + } + + if( AdcDataAlig == DATA_RIGHT_ALIGNED ) + { + ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; + } + else + { + ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Left; + } + + ADC_InitStructure.ADC_NbrOfConversion = 1; + + ADC_Init( ADC1, &ADC_InitStructure ); + + ADC_DelaySelectionConfig( ADC1, ADC_DelayLength_Freeze ); + + RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, DISABLE ); + + RCC_HSICmd( DISABLE ); + +} + +uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ) +{ + uint16_t adcData = 0; + + /* Enable The HSI (16Mhz) */ + RCC_HSICmd( ENABLE ); + + /* Check that HSI oscillator is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_HSIRDY ) == RESET ); + + RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE ); + + // Temperature or Vref measurement + if( ( channel == ADC_Channel_16 ) || ( channel == ADC_Channel_17 ) ) + { + // Yes, enable temperature sensor and internal reference voltage + ADC_TempSensorVrefintCmd( ENABLE ); + } + + // Configure selected channel + ADC_RegularChannelConfig( ADC1, channel, 1, ADC_SampleTime_192Cycles ); + + /* Define delay between ADC1 conversions */ + ADC_DelaySelectionConfig( ADC1, ADC_DelayLength_Freeze ); + + /* Enable ADC1 Power Down during Delay */ + ADC_PowerDownCmd( ADC1, ADC_PowerDown_Idle_Delay, ENABLE ); + + /* Enable ADC1 */ + ADC_Cmd( ADC1, ENABLE ); + + /* Wait until ADC1 ON status */ + while( ADC_GetFlagStatus( ADC1, ADC_FLAG_ADONS ) == RESET ) + { + } + + /* Start ADC1 Software Conversion */ + ADC_SoftwareStartConv( ADC1 ); + + /* Wait until ADC Channel 5 or 1 end of conversion */ + while( ADC_GetFlagStatus( ADC1, ADC_FLAG_EOC ) == RESET ) + { + } + + adcData = ADC_GetConversionValue( ADC1 ); + + ADC_Cmd( ADC1, DISABLE ); + + if( ( channel == ADC_Channel_16 ) || ( channel == ADC_Channel_17 ) ) + { + // De-initialize ADC + ADC_TempSensorVrefintCmd( DISABLE ); + } + + RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, DISABLE ); + + RCC_HSICmd( DISABLE ); + + return adcData; +} diff --git a/src/boards/SensorNode/adc-board.h b/src/boards/SensorNode/adc-board.h new file mode 100644 index 000000000..66bbb05b6 --- /dev/null +++ b/src/boards/SensorNode/adc-board.h @@ -0,0 +1,93 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Board ADC driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __ADC_MCU_H__ +#define __ADC_MCU_H__ + +/*! + * Register the old AdcMcuReadChannel function to the new function + * which makes an additional parameter available to select the read out channel + */ +#define AdcMcuReadChannel( obj ) AdcMcuRead( obj, ADC_Channel_8 ) + +/*! + * ADC resolution + */ +typedef enum +{ + ADC_12_BIT = 0, + ADC_10_BIT, + ADC_8_BIT, + ADC_6_BIT +}AdcResolution; + +/*! + * ADC conversion trigger + */ +typedef enum +{ + CONVERT_MANUAL_TRIG = 0, + CONVERT_RISING_EDGE, + CONVERT_FALLING_EDGE, + CONVERT_RISING_FALLING_EDGE +}AdcTriggerConv; + +/*! + * ADC data alignment + */ +typedef enum +{ + DATA_RIGHT_ALIGNED = 0, + DATA_LEFT_ALIGNED +}AdcDataAlignement; + + +/*! + * ADC conversion mode + */ +typedef enum +{ + SINGLE_CONVERSION = 0, + CONTIMUOUS_CONVERSION +}AdcNumConversion; + +/*! + * \brief Initializes the ADC object and MCU peripheral + * + * \param [IN] obj ADC object + * \param [IN] scl ADC input pin + */ +void AdcMcuInit( Adc_t *obj, PinNames adcInput ); + +/*! + * \brief DeInitializes the ADC object and MCU peripheral + * + * \param [IN] obj ADC object + */ +void AdcMcuDeInit( Adc_t *obj ); + +/*! + * \brief Initializes the ADC internal parameters + * + * \param [IN] obj ADC object + * \param [IN] AdcRes ADC resolution + * \param [IN] AdcNumConv ADC number of conversion + * \param [IN] AdcTrig ADC conversion trigger + * \param [IN] AdcDataAlig ADC data output alignement + */ +void AdcMcuFormat( Adc_t *obj, AdcResolution AdcRes, AdcNumConversion AdcNumConv, AdcTriggerConv AdcTrig, AdcDataAlignement AdcDataAlig ); + +uint16_t AdcMcuRead( Adc_t *obj, uint8_t channel ); + +#endif // __ADC_MCU_H__ diff --git a/src/boards/SensorNode/board.c b/src/boards/SensorNode/board.c new file mode 100644 index 000000000..53e8d88dc --- /dev/null +++ b/src/boards/SensorNode/board.c @@ -0,0 +1,307 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Target board general functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" + +#include "adc-board.h" + +/*! + * IO Extander pins objects + */ +Gpio_t IrqMpl3115; +Gpio_t IrqMag3110; +Gpio_t GpsPowerEn; +Gpio_t RadioPushButton; +Gpio_t BoardPowerDown; +Gpio_t NcIoe5; +Gpio_t NcIoe6; +Gpio_t NcIoe7; +Gpio_t NIrqSx9500; +Gpio_t Irq1Mma8451; +Gpio_t Irq2Mma8451; +Gpio_t TxEnSx9500; +Gpio_t Led1; +Gpio_t Led2; +Gpio_t Led3; +Gpio_t Led4; + + +/* + * MCU objects + */ +Gpio_t GpsPps; +Gpio_t GpsRx; +Gpio_t GpsTx; +Gpio_t UsbDetect; +Gpio_t Wkup1; +Gpio_t DcDcEnable; +Gpio_t BatVal; + +Adc_t Adc; +I2c_t I2c; +Uart_t Uart1; +#if defined( USE_USB_CDC ) +Uart_t UartUsb; +#endif + +/*! + * Initializes the unused GPIO to a know status + */ +static void BoardUnusedIoInit( void ); + +/*! + * Flag to indicate if the MCU is Initialized + */ +static bool McuInitialized = false; + +void BoardInitPeriph( void ) +{ + GpioInit( &DcDcEnable, DC_DC_EN, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + /* Init the GPIO extender pins */ + GpioInit( &IrqMpl3115, IRQ_MPL3115, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &IrqMag3110, IRQ_MAG3110, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &GpsPowerEn, GPS_POWER_ON, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &RadioPushButton, RADIO_PUSH_BUTTON, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &BoardPowerDown, BOARD_POWER_DOWN, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &NcIoe5, SPARE_IO_EXT_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &NcIoe6, SPARE_IO_EXT_6, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &NcIoe7, SPARE_IO_EXT_7, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &NIrqSx9500, N_IRQ_SX9500, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Irq1Mma8451, IRQ_1_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Irq2Mma8451, IRQ_2_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &TxEnSx9500, TX_EN_SX9500, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &Led4, LED_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + // Init Temperature, pressure and altitude sensor + MPL3115Init( ); + + // Init Accelerometer + MMA8451Init( ); + + // Init Magnetometer + MAG3110Init( ); + + // Init SAR + SX9500Init( ); + + // Init GPS + GpsInit( ); + + // Switch LED 1, 2, 3, 4 OFF + GpioWrite( &Led1, 1 ); + GpioWrite( &Led2, 1 ); + GpioWrite( &Led3, 1 ); + GpioWrite( &Led4, 1 ); +} + +void BoardInitMcu( void ) +{ + if( McuInitialized == false ) + { +#if defined( USE_BOOTLOADER ) + // Set the Vector Table base location at 0x3000 + NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x3000 ); +#endif + // We use IRQ priority group 4 for the entire project + // When setting the IRQ, only the preemption priority is used + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); + + // Disable Systick + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; // Systick IRQ off + SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; // Clear SysTick Exception pending flag + + I2cInit( &I2c, I2C_SCL, I2C_SDA ); + + SpiInit( &SX1276.Spi, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC ); + SX1276IoInit( ); + + BoardUnusedIoInit( ); + +#if defined( USE_USB_CDC ) + UsbMcuInit( ); + UartInit( &UartUsb, UART_USB_CDC, NC, NC ); + UartConfig( &UartUsb, RX_TX, 115200, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL ); +#endif + + GpioInit( &UsbDetect, USB_ON, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &BatVal, BAT_LEVEL, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + +#ifdef LOW_POWER_MODE_ENABLE + RtcInit( ); +#else + TimerHwInit( ); +#endif + McuInitialized = true; + } +} + +void BoardDeInitMcu( void ) +{ + Gpio_t oscHseIn; + Gpio_t oscHseOut; + Gpio_t oscLseIn; + Gpio_t oscLseOut; + + I2cDeInit( &I2c ); + SpiDeInit( &SX1276.Spi ); + SX1276IoDeInit( ); + + GpioInit( &oscHseIn, OSC_HSE_IN, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &oscHseOut, OSC_HSE_OUT, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + GpioInit( &oscLseIn, OSC_LSE_IN, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &oscLseOut, OSC_LSE_OUT, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + GpioInit( &UsbDetect, USB_ON, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + McuInitialized = false; +} + +void BoardGetUniqueId( uint8_t *id ) +{ + id[0] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 24; + id[1] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 16; + id[2] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ) >> 8; + id[3] = ( ( *( uint32_t* )ID1 )+ ( *( uint32_t* )ID3 ) ); + id[4] = ( ( *( uint32_t* )ID2 ) ) >> 24; + id[5] = ( ( *( uint32_t* )ID2 ) ) >> 16; + id[6] = ( ( *( uint32_t* )ID2 ) ) >> 8; + id[7] = ( ( *( uint32_t* )ID2 ) ); +} + +/*! + * Factory power supply + */ +#define FACTORY_POWER_SUPPLY 3.0L + +/*! + * VREF calibration value + */ +#define VREFINT_CAL ( *( uint16_t* )0x1FF80078 ) + +/*! + * ADC maximum value + */ +#define ADC_MAX_VALUE 4096 + +/*! + * Battery thresholds + */ +#define BATTERY_MAX_LEVEL 4150 // mV +#define BATTERY_MIN_LEVEL 3200 // mV +#define BATTERY_SHUTDOWN_LEVEL 3100 // mV + +uint16_t BoardGetPowerSupply( void ) +{ + float vref = 0; + float vdiv = 0; + float batteryVoltage = 0; + + AdcInit( &Adc, BAT_LEVEL ); + + vref = AdcMcuRead( &Adc, ADC_Channel_17 ); + vdiv = AdcMcuRead( &Adc, ADC_Channel_8 ); + + batteryVoltage = ( FACTORY_POWER_SUPPLY * VREFINT_CAL * vdiv ) / ( vref * ADC_MAX_VALUE ); + + // vDiv + // Divider bridge VBAT <-> 1M -<--|-->- 1M <-> GND => vBat = 2 * vDiv + batteryVoltage = 2 * batteryVoltage; + + return ( uint16_t )( batteryVoltage * 1000 ); +} + +uint8_t BoardMeasureBatterieLevel( void ) +{ + __IO uint8_t batteryLevel = 0; + uint16_t batteryVoltage = 0; + + if( GpioRead( &UsbDetect ) == 1 ) + { + batteryLevel = 0; + } + else + { + batteryVoltage = BoardGetPowerSupply( ); + + if( batteryVoltage >= BATTERY_MAX_LEVEL ) + { + batteryLevel = 254; + } + else if( ( batteryVoltage > BATTERY_MIN_LEVEL ) && ( batteryVoltage < BATTERY_MAX_LEVEL ) ) + { + batteryLevel = ( ( 253 * ( batteryVoltage - BATTERY_MIN_LEVEL ) ) / ( BATTERY_MAX_LEVEL - BATTERY_MIN_LEVEL ) ) + 1; + } + else if( batteryVoltage <= BATTERY_SHUTDOWN_LEVEL ) + { + batteryLevel = 255; + //GpioInit( &DcDcEnable, DC_DC_EN, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + //GpioInit( &BoardPowerDown, BOARD_POWER_DOWN, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + } + else // BATTERY_MIN_LEVEL + { + batteryLevel = 1; + } + } + return batteryLevel; +} + +static void BoardUnusedIoInit( void ) +{ + Gpio_t ioPin; + + /* USB */ +#if !defined( USE_USB_CDC ) + GpioInit( &ioPin, USB_DM, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, USB_DP, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#endif + + GpioInit( &ioPin, TEST_POINT1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, TEST_POINT2, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, TEST_POINT3, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, TEST_POINT4, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + GpioInit( &ioPin, PIN_NC, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, BOOT_1, PIN_ANALOGIC, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + GpioInit( &ioPin, RF_RXTX, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + + + + GpioInit( &ioPin, WKUP1, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + + + + + GpioInit( &ioPin, RF_RXTX, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + +#if defined( USE_DEBUGGER ) + DBGMCU_Config( DBGMCU_SLEEP, ENABLE ); + DBGMCU_Config( DBGMCU_STOP, ENABLE); + DBGMCU_Config( DBGMCU_STANDBY, ENABLE); +#else + DBGMCU_Config( DBGMCU_SLEEP, DISABLE ); + DBGMCU_Config( DBGMCU_STOP, DISABLE ); + DBGMCU_Config( DBGMCU_STANDBY, DISABLE ); + + GpioInit( &ioPin, SWDIO, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &ioPin, SWCLK, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +#endif +} diff --git a/src/boards/SensorNode/board.h b/src/boards/SensorNode/board.h new file mode 100644 index 000000000..913131927 --- /dev/null +++ b/src/boards/SensorNode/board.h @@ -0,0 +1,230 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Target board general functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include +#include +#include +#include +#include +#include "stm32l1xx.h" +#include "utilities.h" +#include "timer.h" +#include "delay.h" +#include "gpio.h" +#include "adc.h" +#include "spi.h" +#include "i2c.h" +#include "uart.h" +#include "radio.h" +#include "sx1276/sx1276.h" +#include "mag3110.h" +#include "mma8451.h" +#include "mpl3115.h" +#include "sx9500.h" +#include "gps.h" +#include "gps-board.h" +#include "rtc-board.h" +#include "timer-board.h" +#include "sx1276-board.h" +#include "uart-board.h" + +#if defined( USE_USB_CDC ) +#include "usb-cdc-board.h" +#endif + +/*! + * Define indicating if an external IO expander is to be used + */ +#define BOARD_IOE_EXT + +/*! + * NULL definition + */ +#ifndef NULL + #define NULL ( ( void * )0 ) +#endif + +/*! + * Generic definition + */ +#ifndef SUCCESS +#define SUCCESS 1 +#endif + +#ifndef FAIL +#define FAIL 0 +#endif + +/*! + * Unique Devices IDs register set ( STM32L1xxx ) + */ +#define ID1 ( 0x1FF80050 ) +#define ID2 ( 0x1FF80054 ) +#define ID3 ( 0x1FF80064 ) + +/*! + * Random seed generated using the MCU Unique ID + */ +#define RAND_SEED ( ( *( uint32_t* )ID1 ) ^ \ + ( *( uint32_t* )ID2 ) ^ \ + ( *( uint32_t* )ID3 ) ) + +/*! + * Board IO Extender pins definitions + */ +#define IRQ_MPL3115 IOE_0 +#define IRQ_MAG3110 IOE_1 +#define GPS_POWER_ON IOE_2 +#define RADIO_PUSH_BUTTON IOE_3 +#define BOARD_POWER_DOWN IOE_4 +#define SPARE_IO_EXT_5 IOE_5 +#define SPARE_IO_EXT_6 IOE_6 +#define SPARE_IO_EXT_7 IOE_7 +#define N_IRQ_SX9500 IOE_8 +#define IRQ_1_MMA8451 IOE_9 +#define IRQ_2_MMA8451 IOE_10 +#define TX_EN_SX9500 IOE_11 +#define LED_1 IOE_12 +#define LED_2 IOE_13 +#define LED_3 IOE_14 +#define LED_4 IOE_15 + +/*! + * Board MCU pins definitions + */ + +#define RADIO_RESET PB_10 + +#define RADIO_MOSI PA_7 +#define RADIO_MISO PA_6 +#define RADIO_SCLK PA_5 +#define RADIO_NSS PA_4 + +#define RADIO_DIO_0 PB_11 +#define RADIO_DIO_1 PC_13 +#define RADIO_DIO_2 PB_9 +#define RADIO_DIO_3 PB_4 +#define RADIO_DIO_4 PB_3 +#define RADIO_DIO_5 PA_15 + +#define RADIO_ANT_SWITCH_HF PA_0 +#define RADIO_ANT_SWITCH_LF PA_1 + +#define OSC_LSE_IN PC_14 +#define OSC_LSE_OUT PC_15 + +#define OSC_HSE_IN PH_0 +#define OSC_HSE_OUT PH_1 + +#define USB_DM PA_11 +#define USB_DP PA_12 + +#define I2C_SCL PB_6 +#define I2C_SDA PB_7 + +#define BOOT_1 PB_2 + +#define GPS_PPS PB_1 +#define UART_TX PA_9 +#define UART_RX PA_10 + +#define DC_DC_EN PB_8 +#define BAT_LEVEL PB_0 +#define WKUP1 PA_8 +#define USB_ON PA_2 + +#define RF_RXTX PA_3 + +#define SWDIO PA_13 +#define SWCLK PA_14 + +#define TEST_POINT1 PB_12 +#define TEST_POINT2 PB_13 +#define TEST_POINT3 PB_14 +#define TEST_POINT4 PB_15 + +#define PIN_NC PB_5 + +/*! + * LED GPIO pins objects + */ +extern Gpio_t IrqMpl3115; +extern Gpio_t IrqMag3110; +extern Gpio_t GpsPowerEn; +extern Gpio_t RadioPushButton; +extern Gpio_t BoardPowerUp; +extern Gpio_t NcIoe5; +extern Gpio_t NcIoe6; +extern Gpio_t NcIoe7; +extern Gpio_t NIrqSX9500; +extern Gpio_t Irq1Mma8451; +extern Gpio_t Irq2Mma8451; +extern Gpio_t TxEnSX9500; +extern Gpio_t Led1; +extern Gpio_t Led2; +extern Gpio_t Led3; +extern Gpio_t Led4; + +/*! + * MCU objects + */ +extern Adc_t Adc; +extern I2c_t I2c; +extern Uart_t Uart1; +#if defined( USE_USB_CDC ) +extern Uart_t UartUsb; +#endif + +extern Gpio_t GpsPps; +extern Gpio_t GpsRx; +extern Gpio_t GpsTx; +extern Gpio_t UsbDetect; +extern Gpio_t Wkup1; +extern Gpio_t DcDcEnable; +extern Gpio_t BatVal; + +/*! + * \brief Initializes the target board peripherals. + */ +void BoardInitMcu( void ); + +/*! + * \brief Initializes the boards peripherals. + */ +void BoardInitPeriph( void ); + +/*! + * \brief De-initializes the target board peripherals to decrease power + * consumption. + */ +void BoardDeInitMcu( void ); + +/*! + * \brief Measure the Battery level + * + * \retval value battery level ( 0: very low, 254: fully charged ) + */ +uint8_t BoardMeasureBatterieLevel( void ); + +/*! + * \brief Gets the board 64 bits unique ID + * + * \param [IN] id Pointer to an array that will contain the Unique ID + */ +void BoardGetUniqueId( uint8_t *id ); + +#endif // __BOARD_H__ diff --git a/src/boards/SensorNode/cmsis/arm-gcc/startup_stm32l1xx_md.s b/src/boards/SensorNode/cmsis/arm-gcc/startup_stm32l1xx_md.s new file mode 100644 index 000000000..77a7f90ba --- /dev/null +++ b/src/boards/SensorNode/cmsis/arm-gcc/startup_stm32l1xx_md.s @@ -0,0 +1,371 @@ +/** + ****************************************************************************** + * @file startup_stm32l1xx_md.s + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief STM32L1xx Ultra Low Power Medium-density Devices vector table for + * RIDE7 toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M3 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m3 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +.equ BootRAM, 0xF108F85F +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r3, =_sidata + ldr r3, [r3, r1] + str r3, [r0, r1] + adds r1, r1, #4 + +LoopCopyDataInit: + ldr r0, =_sdata + ldr r3, =_edata + adds r2, r0, r1 + cmp r2, r3 + bcc CopyDataInit + ldr r2, =_sbss + b LoopFillZerobss +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + str r3, [r2], #4 + +LoopFillZerobss: + ldr r3, = _ebss + cmp r2, r3 + bcc FillZerobss +/* Call the clock system intitialization function.*/ + bl SystemInit +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/******************************************************************************* +* +* The minimal vector table for a Cortex M3. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +*******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word PVD_IRQHandler + .word TAMPER_STAMP_IRQHandler + .word RTC_WKUP_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word DMA1_Channel5_IRQHandler + .word DMA1_Channel6_IRQHandler + .word DMA1_Channel7_IRQHandler + .word ADC1_IRQHandler + .word USB_HP_IRQHandler + .word USB_LP_IRQHandler + .word DAC_IRQHandler + .word COMP_IRQHandler + .word EXTI9_5_IRQHandler + .word LCD_IRQHandler + .word TIM9_IRQHandler + .word TIM10_IRQHandler + .word TIM11_IRQHandler + .word TIM2_IRQHandler + .word TIM3_IRQHandler + .word TIM4_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word I2C2_EV_IRQHandler + .word I2C2_ER_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word USART3_IRQHandler + .word EXTI15_10_IRQHandler + .word RTC_Alarm_IRQHandler + .word USB_FS_WKUP_IRQHandler + .word TIM6_IRQHandler + .word TIM7_IRQHandler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word BootRAM /* @0x108. This is for boot in RAM mode for + STM32L15x ULtra Low Power Medium-density devices. */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMPER_STAMP_IRQHandler + .thumb_set TAMPER_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_IRQHandler + .thumb_set DMA1_Channel2_IRQHandler,Default_Handler + + .weak DMA1_Channel3_IRQHandler + .thumb_set DMA1_Channel3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_IRQHandler + .thumb_set DMA1_Channel4_IRQHandler,Default_Handler + + .weak DMA1_Channel5_IRQHandler + .thumb_set DMA1_Channel5_IRQHandler,Default_Handler + + .weak DMA1_Channel6_IRQHandler + .thumb_set DMA1_Channel6_IRQHandler,Default_Handler + + .weak DMA1_Channel7_IRQHandler + .thumb_set DMA1_Channel7_IRQHandler,Default_Handler + + .weak ADC1_IRQHandler + .thumb_set ADC1_IRQHandler,Default_Handler + + .weak USB_HP_IRQHandler + .thumb_set USB_HP_IRQHandler,Default_Handler + + .weak USB_LP_IRQHandler + .thumb_set USB_LP_IRQHandler,Default_Handler + + .weak DAC_IRQHandler + .thumb_set DAC_IRQHandler,Default_Handler + + .weak COMP_IRQHandler + .thumb_set COMP_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak LCD_IRQHandler + .thumb_set LCD_IRQHandler,Default_Handler + + .weak TIM9_IRQHandler + .thumb_set TIM9_IRQHandler,Default_Handler + + .weak TIM10_IRQHandler + .thumb_set TIM10_IRQHandler,Default_Handler + + .weak TIM11_IRQHandler + .thumb_set TIM11_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak USB_FS_WKUP_IRQHandler + .thumb_set USB_FS_WKUP_IRQHandler,Default_Handler + + .weak TIM6_IRQHandler + .thumb_set TIM6_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + +/************************* (C) COPYRIGHT STMicroelectronics *****END OF FILE***/ + diff --git a/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash.ld b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash.ld new file mode 100644 index 000000000..1be62d5b0 --- /dev/null +++ b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld new file mode 100644 index 000000000..f8fc2a20f --- /dev/null +++ b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_bootloader.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 12K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld new file mode 100644 index 000000000..865fc0291 --- /dev/null +++ b/src/boards/SensorNode/cmsis/arm-gcc/stm32l1xx_md_flash_offset.ld @@ -0,0 +1,171 @@ +/* +***************************************************************************** +** +** File : stm32_flash.ld +** +** Abstract : Linker script for stm32l1xx_md Device with +** 128KByte FLASH, 16KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Environment : Atollic TrueSTUDIO(R) +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +** (c)Copyright Atollic AB. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Atollic AB permit registered Atollic TrueSTUDIO(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the Atollic TrueSTUDIO(R) toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20004000; /* end of 16K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x80; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ + FLASH (rx) : ORIGIN = 0x08003000, LENGTH = 128K - 0x3000 + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K + MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array*)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = .; + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( _sidata ) + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + PROVIDE ( end = _ebss ); + PROVIDE ( _end = _ebss ); + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(4); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM + + /* MEMORY_bank1 section, code must be located here explicitly */ + /* Example: extern int foo(void) __attribute__ ((section (".mb1text"))); */ + .memory_b1_text : + { + *(.mb1text) /* .mb1text sections (code) */ + *(.mb1text*) /* .mb1text* sections (code) */ + *(.mb1rodata) /* read-only data (constants) */ + *(.mb1rodata*) + } >MEMORY_B1 + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/src/boards/SensorNode/cmsis/arm-std/startup_stm32l1xx_md.s b/src/boards/SensorNode/cmsis/arm-std/startup_stm32l1xx_md.s new file mode 100644 index 000000000..3deea1a4e --- /dev/null +++ b/src/boards/SensorNode/cmsis/arm-std/startup_stm32l1xx_md.s @@ -0,0 +1,319 @@ +;******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** +;* File Name : startup_stm32l1xx_md.s +;* Author : MCD Application Team +;* Version : V1.2.0 +;* Date : 22-February-2013 +;* Description : STM32L1xx Ultra Low Power Medium-density Devices vector +;* table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_STAMP_IRQHandler ; Tamper and Time Stamp + DCD RTC_WKUP_IRQHandler ; RTC Wakeup + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_IRQHandler ; ADC1 + DCD USB_HP_IRQHandler ; USB High Priority + DCD USB_LP_IRQHandler ; USB Low Priority + DCD DAC_IRQHandler ; DAC + DCD COMP_IRQHandler ; COMP through EXTI Line + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD LCD_IRQHandler ; LCD + DCD TIM9_IRQHandler ; TIM9 + DCD TIM10_IRQHandler ; TIM10 + DCD TIM11_IRQHandler ; TIM11 + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTC_Alarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USB_FS_WKUP_IRQHandler ; USB FS Wakeup from suspend + DCD TIM6_IRQHandler ; TIM6 + DCD TIM7_IRQHandler ; TIM7 +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler routine +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + IMPORT SystemInit + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_IRQHandler [WEAK] + EXPORT USB_HP_IRQHandler [WEAK] + EXPORT USB_LP_IRQHandler [WEAK] + EXPORT DAC_IRQHandler [WEAK] + EXPORT COMP_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT LCD_IRQHandler [WEAK] + EXPORT TIM9_IRQHandler [WEAK] + EXPORT TIM10_IRQHandler [WEAK] + EXPORT TIM11_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT USB_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM6_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_IRQHandler +USB_HP_IRQHandler +USB_LP_IRQHandler +DAC_IRQHandler +COMP_IRQHandler +EXTI9_5_IRQHandler +LCD_IRQHandler +TIM9_IRQHandler +TIM10_IRQHandler +TIM11_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +USB_FS_WKUP_IRQHandler +TIM6_IRQHandler +TIM7_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/src/boards/SensorNode/cmsis/stm32l1xx.h b/src/boards/SensorNode/cmsis/stm32l1xx.h new file mode 100644 index 000000000..6a043a7e2 --- /dev/null +++ b/src/boards/SensorNode/cmsis/stm32l1xx.h @@ -0,0 +1,6355 @@ +/** + ****************************************************************************** + * @file stm32l1xx.h + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32L1xx High-density, Medium-density + * and Medium-density Plus devices. + * + * The file is the unique include file that the application programmer + * is using in the C source code, usually in main.c. This file contains: + * - Configuration section that allows to select: + * - The device used in the target application + * - To use or not the peripheral’s drivers in application code(i.e. + * code will be based on direct access to peripheral’s registers + * rather than drivers API), this option is controlled by + * "#define USE_STDPERIPH_DRIVER" + * - To change few application-specific parameters such as the HSE + * crystal frequency + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral’s registers hardware + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx + * @{ + */ + +#ifndef __STM32L1XX_H +#define __STM32L1XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup Library_configuration_section + * @{ + */ + +/* Uncomment the line below according to the target STM32L device used in your + application + */ + +#if !defined (STM32L1XX_MD) && !defined (STM32L1XX_MDP) && !defined (STM32L1XX_HD) + + #define STM32L1XX_MD /*!< - Ultra Low Power Medium-density devices: STM32L151x6xx, STM32L151x8xx, + STM32L151xBxx, STM32L152x6xx, STM32L152x8xx and STM32L152xBxx. + - Ultra Low Power Medium-density Value Line devices: STM32L100x6xx, + STM32L100x8xx and STM32L100xBxx. */ + +/* #define STM32L1XX_MDP */ /*!< - Ultra Low Power Medium-density Plus devices: STM32L151xCxx, STM32L152xCxx and STM32L162xCxx + - Ultra Low Power Medium-density Plus Value Line devices: STM32L100xCxx */ + +/* #define STM32L1XX_HD */ /*!< Ultra Low Power High-density devices: STM32L151xDxx, STM32L152xDxx and STM32L162xDxx */ +#endif +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ + +#if !defined (STM32L1XX_MD) && !defined (STM32L1XX_MDP) && !defined (STM32L1XX_HD) + #error "Please select first the target STM32L1xx device used in your application (in stm32l1xx.h file)" +#endif + +#if !defined USE_STDPERIPH_DRIVER +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + #define USE_STDPERIPH_DRIVER +#endif + +/** + * @brief In the following line adjust the value of External High Speed oscillator (HSE) + used in your application + + Tip: To avoid modifying this file each time you need to use different HSE, you + can define the HSE value in your toolchain compiler preprocessor. + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */ +#endif + +/** + * @brief In the following line adjust the External High Speed oscillator (HSE) Startup + Timeout value + */ +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */ +#endif + +/** + * @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup + Timeout value + */ +#if !defined (HSI_STARTUP_TIMEOUT) +#define HSI_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSI start up */ +#endif + +#if !defined (HSI_VALUE) +#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal High Speed oscillator in Hz. + The real value may vary depending on the variations + in voltage and temperature. */ +#endif + +#if !defined (LSI_VALUE) +#define LSI_VALUE ((uint32_t)37000) /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ +#endif + +#if !defined (LSE_VALUE) +#define LSE_VALUE ((uint32_t)32768) /*!< Value of the External Low Speed oscillator in Hz */ +#endif + +/** + * @brief STM32L1xx Standard Peripheral Library version number V1.2.0 + */ +#define __STM32L1XX_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L1XX_STDPERIPH_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */ +#define __STM32L1XX_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32L1XX_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L1XX_STDPERIPH_VERSION ( (__STM32L1XX_STDPERIPH_VERSION_MAIN << 24)\ + |(__STM32L1XX_STDPERIPH_VERSION_SUB1 << 16)\ + |(__STM32L1XX_STDPERIPH_VERSION_SUB2 << 8)\ + |(__STM32L1XX_STDPERIPH_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief STM32L1xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +#define __CM3_REV 0x200 /*!< Cortex-M3 Revision r2p0 */ +#define __MPU_PRESENT 1 /*!< STM32L1 provides MPU */ +#define __NVIC_PRIO_BITS 4 /*!< STM32L1 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/*!< Interrupt Number Definition */ +typedef enum IRQn +{ +/****** Cortex-M3 Processor Exceptions Numbers ******************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32L specific Interrupt Numbers ***********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_STAMP_IRQn = 2, /*!< Tamper and Time Stamp through EXTI Line Interrupts */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup Timer through EXTI Line Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_IRQn = 18, /*!< ADC1 global Interrupt */ + USB_HP_IRQn = 19, /*!< USB High Priority Interrupt */ + USB_LP_IRQn = 20, /*!< USB Low Priority Interrupt */ + DAC_IRQn = 21, /*!< DAC Interrupt */ + COMP_IRQn = 22, /*!< Comparator through EXTI Line Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + LCD_IRQn = 24, /*!< LCD Interrupt */ + TIM9_IRQn = 25, /*!< TIM9 global Interrupt */ + TIM10_IRQn = 26, /*!< TIM10 global Interrupt */ + TIM11_IRQn = 27, /*!< TIM11 global Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ + USB_FS_WKUP_IRQn = 42, /*!< USB FS WakeUp from suspend through EXTI Line Interrupt */ + TIM6_IRQn = 43, /*!< TIM6 global Interrupt */ +#ifdef STM32L1XX_MD + TIM7_IRQn = 44 /*!< TIM7 global Interrupt */ +#endif /* STM32L1XX_MD */ + +#ifdef STM32L1XX_MDP + TIM7_IRQn = 44, /*!< TIM7 global Interrupt */ + TIM5_IRQn = 46, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 47, /*!< SPI3 global Interrupt */ + DMA2_Channel1_IRQn = 50, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 51, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 52, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 53, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 54, /*!< DMA2 Channel 5 global Interrupt */ + AES_IRQn = 55, /*!< AES global Interrupt */ + COMP_ACQ_IRQn = 56 /*!< Comparator Channel Acquisition global Interrupt */ +#endif /* STM32L1XX_MDP */ + +#ifdef STM32L1XX_HD + TIM7_IRQn = 44, /*!< TIM7 global Interrupt */ + SDIO_IRQn = 45, /*!< SDIO global Interrupt */ + TIM5_IRQn = 46, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 47, /*!< SPI3 global Interrupt */ + UART4_IRQn = 48, /*!< UART4 global Interrupt */ + UART5_IRQn = 49, /*!< UART5 global Interrupt */ + DMA2_Channel1_IRQn = 50, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 51, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 52, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 53, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 54, /*!< DMA2 Channel 5 global Interrupt */ + AES_IRQn = 55, /*!< AES global Interrupt */ + COMP_ACQ_IRQn = 56 /*!< Comparator Channel Acquisition global Interrupt */ +#endif /* STM32L1XX_HD */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32l1xx.h" +#include + +/** @addtogroup Exported_types + * @{ + */ + +typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; + +typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/** + * @brief __RAM_FUNC definition + */ +#if defined ( __CC_ARM ) +/* ARM Compiler + ------------ + RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the 'Options for Target' + dialog. +*/ + #define __RAM_FUNC FLASH_Status + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ + #define __RAM_FUNC __ramfunc FLASH_Status + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".data")))". +*/ + #define __RAM_FUNC FLASH_Status __attribute__((section(".data"))) + +#elif defined ( __TASKING__ ) +/* TASKING Compiler + ---------------- + RAM functions are defined using a specific toolchain pragma. This pragma is + defined in the stm32l1xx_flash_ramfunc.c +*/ + #define __RAM_FUNC FLASH_Status + +#endif + +/** + * @} + */ + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */ + __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */ + __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */ + __IO uint32_t SMPR3; /*!< ADC sample time register 3, Address offset: 0x14 */ + __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x18 */ + __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x1C */ + __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x20 */ + __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x24 */ + __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x28 */ + __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x2C */ + __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC regular sequence register 4, Address offset: 0x3C */ + __IO uint32_t SQR5; /*!< ADC regular sequence register 5, Address offset: 0x40 */ + __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x44 */ + __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x48 */ + __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x4C */ + __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x50 */ + __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x54 */ + __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x58 */ + __IO uint32_t SMPR0; /*!< ADC sample time register 0, Address offset: 0x5C */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: ADC1 base address + 0x300 */ + __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ +} ADC_Common_TypeDef; + + +/** + * @brief AES hardware accelerator + */ + +typedef struct +{ + __IO uint32_t CR; /*!< AES control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< AES status register, Address offset: 0x04 */ + __IO uint32_t DINR; /*!< AES data input register, Address offset: 0x08 */ + __IO uint32_t DOUTR; /*!< AES data output register, Address offset: 0x0C */ + __IO uint32_t KEYR0; /*!< AES key register 0, Address offset: 0x10 */ + __IO uint32_t KEYR1; /*!< AES key register 1, Address offset: 0x14 */ + __IO uint32_t KEYR2; /*!< AES key register 2, Address offset: 0x18 */ + __IO uint32_t KEYR3; /*!< AES key register 3, Address offset: 0x1C */ + __IO uint32_t IVR0; /*!< AES initialization vector register 0, Address offset: 0x20 */ + __IO uint32_t IVR1; /*!< AES initialization vector register 1, Address offset: 0x24 */ + __IO uint32_t IVR2; /*!< AES initialization vector register 2, Address offset: 0x28 */ + __IO uint32_t IVR3; /*!< AES initialization vector register 3, Address offset: 0x2C */ +} AES_TypeDef; + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP comparator control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*!< EXTI interrupt mask register, Address offset: 0x00 */ + __IO uint32_t EMR; /*!< EXTI event mask register, Address offset: 0x04 */ + __IO uint32_t RTSR; /*!< EXTI rising edge trigger selection register, Address offset: 0x08 */ + __IO uint32_t FTSR; /*!< EXTI Falling edge trigger selection register, Address offset: 0x0C */ + __IO uint32_t SWIER; /*!< EXTI software interrupt event register, Address offset: 0x10 */ + __IO uint32_t PR; /*!< EXTI pending register, Address offset: 0x14 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< Access control register, Address offset: 0x00 */ + __IO uint32_t PECR; /*!< Program/erase control register, Address offset: 0x04 */ + __IO uint32_t PDKEYR; /*!< Power down key register, Address offset: 0x08 */ + __IO uint32_t PEKEYR; /*!< Program/erase key register, Address offset: 0x0c */ + __IO uint32_t PRGKEYR; /*!< Program memory key register, Address offset: 0x10 */ + __IO uint32_t OPTKEYR; /*!< Option byte key register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x18 */ + __IO uint32_t OBR; /*!< Option byte register, Address offset: 0x1c */ + __IO uint32_t WRPR; /*!< Write protection register, Address offset: 0x20 */ + uint32_t RESERVED[23]; /*!< Reserved, 0x24 */ + __IO uint32_t WRPR1; /*!< Write protection register 1, Address offset: 0x28 */ + __IO uint32_t WRPR2; /*!< Write protection register 2, Address offset: 0x2C */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ + +typedef struct +{ + __IO uint32_t RDP; /*!< Read protection register, Address offset: 0x00 */ + __IO uint32_t USER; /*!< user register, Address offset: 0x04 */ + __IO uint32_t WRP01; /*!< write protection register 0 1, Address offset: 0x08 */ + __IO uint32_t WRP23; /*!< write protection register 2 3, Address offset: 0x0C */ + __IO uint32_t WRP45; /*!< write protection register 4 5, Address offset: 0x10 */ + __IO uint32_t WRP67; /*!< write protection register 6 7, Address offset: 0x14 */ + __IO uint32_t WRP89; /*!< write protection register 8 9, Address offset: 0x18 */ + __IO uint32_t WRP1011; /*!< write protection register 10 11, Address offset: 0x1C */ +} OB_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t LPOTR; /*!< OPAMP offset trimming register for low power mode, Address offset: 0x08 */ +} OPAMP_TypeDef; + +/** + * @brief Flexible Static Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */ +} FSMC_Bank1_TypeDef; + +/** + * @brief Flexible Static Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */ +} FSMC_Bank1E_TypeDef; + +/** + * @brief General Purpose IO + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint16_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + uint16_t RESERVED0; /*!< Reserved, 0x06 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint16_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + uint16_t RESERVED1; /*!< Reserved, 0x12 */ + __IO uint16_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + uint16_t RESERVED2; /*!< Reserved, 0x16 */ + __IO uint16_t BSRRL; /*!< GPIO port bit set/reset low registerBSRR, Address offset: 0x18 */ + __IO uint16_t BSRRH; /*!< GPIO port bit set/reset high registerBSRR, Address offset: 0x1A */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function low register, Address offset: 0x20-0x24 */ + __IO uint16_t BRR; /*!< GPIO bit reset register, Address offset: 0x28 */ + uint16_t RESERVED3; /*!< Reserved, 0x2A */ +} GPIO_TypeDef; + +/** + * @brief SysTem Configuration + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ +} SYSCFG_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t OAR1; /*!< I2C Own address register 1, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t OAR2; /*!< I2C Own address register 2, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t DR; /*!< I2C Data register, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t SR1; /*!< I2C Status register 1, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t SR2; /*!< I2C Status register 2, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t CCR; /*!< I2C Clock control register, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t TRISE; /*!< I2C TRISE register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + + +/** + * @brief LCD + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LCD control register, Address offset: 0x00 */ + __IO uint32_t FCR; /*!< LCD frame control register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< LCD status register, Address offset: 0x08 */ + __IO uint32_t CLR; /*!< LCD clear register, Address offset: 0x0C */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD display memory, Address offset: 0x14-0x50 */ +} LCD_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< PWR power control register, Address offset: 0x00 */ + __IO uint32_t CSR; /*!< PWR power control/status register, Address offset: 0x04 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Clock configuration register, Address offset: 0x08 */ + __IO uint32_t CIR; /*!< RCC Clock interrupt register, Address offset: 0x0C */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripheral reset register, Address offset: 0x10 */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x14 */ + __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x18 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripheral clock enable register, Address offset: 0x1C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x20 */ + __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x24 */ + __IO uint32_t AHBLPENR; /*!< RCC AHB peripheral clock enable in low power mode register, Address offset: 0x28 */ + __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x2C */ + __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x30 */ + __IO uint32_t CSR; /*!< RCC Control/status register, Address offset: 0x34 */ +} RCC_TypeDef; + +/** + * @brief Routing Interface + */ + +typedef struct +{ + __IO uint32_t ICR; /*!< RI input capture register, Address offset: 0x00 */ + __IO uint32_t ASCR1; /*!< RI analog switches control register, Address offset: 0x04 */ + __IO uint32_t ASCR2; /*!< RI analog switch control register 2, Address offset: 0x08 */ + __IO uint32_t HYSCR1; /*!< RI hysteresis control register, Address offset: 0x0C */ + __IO uint32_t HYSCR2; /*!< RI Hysteresis control register, Address offset: 0x10 */ + __IO uint32_t HYSCR3; /*!< RI Hysteresis control register, Address offset: 0x14 */ + __IO uint32_t HYSCR4; /*!< RI Hysteresis control register, Address offset: 0x18 */ +} RI_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CALIBR; /*!< RTC calibration register, Address offset: 0x18 */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RRTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAFCR; /*!< RTC tamper and alternate function configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + uint32_t RESERVED7; /*!< Reserved, 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + +/** + * @brief SD host Interface + */ + +typedef struct +{ + __IO uint32_t POWER; /*!< SDIO power control register, Address offset: 0x00 */ + __IO uint32_t CLKCR; /*!< SDI clock control register, Address offset: 0x04 */ + __IO uint32_t ARG; /*!< SDIO argument register, Address offset: 0x08 */ + __IO uint32_t CMD; /*!< SDIO command register, Address offset: 0x0C */ + __I uint32_t RESPCMD; /*!< SDIO command response register, Address offset: 0x10 */ + __I uint32_t RESP1; /*!< SDIO response 1 register, Address offset: 0x14 */ + __I uint32_t RESP2; /*!< SDIO response 2 register, Address offset: 0x18 */ + __I uint32_t RESP3; /*!< SDIO response 3 register, Address offset: 0x1C */ + __I uint32_t RESP4; /*!< SDIO response 4 register, Address offset: 0x20 */ + __IO uint32_t DTIMER; /*!< SDIO data timer register, Address offset: 0x24 */ + __IO uint32_t DLEN; /*!< SDIO data length register, Address offset: 0x28 */ + __IO uint32_t DCTRL; /*!< SDIO data control register, Address offset: 0x2C */ + __I uint32_t DCOUNT; /*!< SDIO data counter register, Address offset: 0x30 */ + __I uint32_t STA; /*!< SDIO status register, Address offset: 0x34 */ + __IO uint32_t ICR; /*!< SDIO interrupt clear register, Address offset: 0x38 */ + __IO uint32_t MASK; /*!< SDIO mask register, Address offset: 0x3C */ + uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ + __I uint32_t FIFOCNT; /*!< SDIO FIFO counter register, Address offset: 0x48 */ + uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ + __IO uint32_t FIFO; /*!< SDIO data FIFO register, Address offset: 0x80 */ +} SDIO_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< SPI control register 1 (not used in I2S mode), Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< SPI control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t SR; /*!< SPI status register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t DR; /*!< SPI data register, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t RXCRCR; /*!< SPI RX CRC register (not used in I2S mode), Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t TXCRCR; /*!< SPI TX CRC register (not used in I2S mode), Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ +} SPI_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint16_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t SR; /*!< TIM status register, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ + __IO uint16_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + uint16_t RESERVED7; /*!< Reserved, 0x1E */ + __IO uint16_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + uint16_t RESERVED8; /*!< Reserved, 0x22 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint16_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + uint16_t RESERVED10; /*!< Reserved, 0x2A */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + uint32_t RESERVED12; /*!< Reserved, 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + uint32_t RESERVED17; /*!< Reserved, 0x44 */ + __IO uint16_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + uint16_t RESERVED18; /*!< Reserved, 0x4A */ + __IO uint16_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + uint16_t RESERVED19; /*!< Reserved, 0x4E */ + __IO uint16_t OR; /*!< TIM option register, Address offset: 0x50 */ + uint16_t RESERVED20; /*!< Reserved, 0x52 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint16_t SR; /*!< USART Status register, Address offset: 0x00 */ + uint16_t RESERVED0; /*!< Reserved, 0x02 */ + __IO uint16_t DR; /*!< USART Data register, Address offset: 0x04 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint16_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ + uint16_t RESERVED2; /*!< Reserved, 0x0A */ + __IO uint16_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ + uint16_t RESERVED3; /*!< Reserved, 0x0E */ + __IO uint16_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ + uint16_t RESERVED4; /*!< Reserved, 0x12 */ + __IO uint16_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ + uint16_t RESERVED5; /*!< Reserved, 0x16 */ + __IO uint16_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x18 */ + uint16_t RESERVED6; /*!< Reserved, 0x1A */ +} USART_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + +#define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */ + +#define FSMC_R_BASE ((uint32_t)0xA0000000) /*!< FSMC registers base address */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) +#define LCD_BASE (APB1PERIPH_BASE + 0x2400) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400) +#define COMP_BASE (APB1PERIPH_BASE + 0x7C00) +#define RI_BASE (APB1PERIPH_BASE + 0x7C04) +#define OPAMP_BASE (APB1PERIPH_BASE + 0x7C5C) + +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) +#define TIM9_BASE (APB2PERIPH_BASE + 0x0800) +#define TIM10_BASE (APB2PERIPH_BASE + 0x0C00) +#define TIM11_BASE (APB2PERIPH_BASE + 0x1000) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) +#define ADC_BASE (APB2PERIPH_BASE + 0x2700) +#define SDIO_BASE (APB2PERIPH_BASE + 0x2C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800) + +#define GPIOA_BASE (AHBPERIPH_BASE + 0x0000) +#define GPIOB_BASE (AHBPERIPH_BASE + 0x0400) +#define GPIOC_BASE (AHBPERIPH_BASE + 0x0800) +#define GPIOD_BASE (AHBPERIPH_BASE + 0x0C00) +#define GPIOE_BASE (AHBPERIPH_BASE + 0x1000) +#define GPIOH_BASE (AHBPERIPH_BASE + 0x1400) +#define GPIOF_BASE (AHBPERIPH_BASE + 0x1800) +#define GPIOG_BASE (AHBPERIPH_BASE + 0x1C00) +#define CRC_BASE (AHBPERIPH_BASE + 0x3000) +#define RCC_BASE (AHBPERIPH_BASE + 0x3800) + + +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x3C00) /*!< FLASH registers base address */ +#define OB_BASE ((uint32_t)0x1FF80000) /*!< FLASH Option Bytes base address */ + +#define DMA1_BASE (AHBPERIPH_BASE + 0x6000) +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001C) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006C) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x0080) + +#define DMA2_BASE (AHBPERIPH_BASE + 0x6400) +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001C) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058) + +#define AES_BASE ((uint32_t)0x50060000) + +#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!< FSMC Bank1 registers base address */ +#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!< FSMC Bank1E registers base address */ + +#define DBGMCU_BASE ((uint32_t)0xE0042000) /*!< Debug MCU registers base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define LCD ((LCD_TypeDef *) LCD_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) +#define COMP ((COMP_TypeDef *) COMP_BASE) +#define RI ((RI_TypeDef *) RI_BASE) +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) + +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC ((ADC_Common_TypeDef *) ADC_BASE) +#define SDIO ((SDIO_TypeDef *) SDIO_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) + +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) + +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) + +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) + +#define AES ((AES_TypeDef *) AES_BASE) + +#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) +#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for ADC_SR register ********************/ +#define ADC_SR_AWD ((uint32_t)0x00000001) /*!< Analog watchdog flag */ +#define ADC_SR_EOC ((uint32_t)0x00000002) /*!< End of conversion */ +#define ADC_SR_JEOC ((uint32_t)0x00000004) /*!< Injected channel end of conversion */ +#define ADC_SR_JSTRT ((uint32_t)0x00000008) /*!< Injected channel Start flag */ +#define ADC_SR_STRT ((uint32_t)0x00000010) /*!< Regular channel Start flag */ +#define ADC_SR_OVR ((uint32_t)0x00000020) /*!< Overrun flag */ +#define ADC_SR_ADONS ((uint32_t)0x00000040) /*!< ADC ON status */ +#define ADC_SR_RCNR ((uint32_t)0x00000100) /*!< Regular channel not ready flag */ +#define ADC_SR_JCNR ((uint32_t)0x00000200) /*!< Injected channel not ready flag */ + +/******************* Bit definition for ADC_CR1 register ********************/ +#define ADC_CR1_AWDCH ((uint32_t)0x0000001F) /*!< AWDCH[4:0] bits (Analog watchdog channel select bits) */ +#define ADC_CR1_AWDCH_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_CR1_AWDCH_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_CR1_AWDCH_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_CR1_AWDCH_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_CR1_AWDCH_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_CR1_EOCIE ((uint32_t)0x00000020) /*!< Interrupt enable for EOC */ +#define ADC_CR1_AWDIE ((uint32_t)0x00000040) /*!< Analog Watchdog interrupt enable */ +#define ADC_CR1_JEOCIE ((uint32_t)0x00000080) /*!< Interrupt enable for injected channels */ +#define ADC_CR1_SCAN ((uint32_t)0x00000100) /*!< Scan mode */ +#define ADC_CR1_AWDSGL ((uint32_t)0x00000200) /*!< Enable the watchdog on a single channel in scan mode */ +#define ADC_CR1_JAUTO ((uint32_t)0x00000400) /*!< Automatic injected group conversion */ +#define ADC_CR1_DISCEN ((uint32_t)0x00000800) /*!< Discontinuous mode on regular channels */ +#define ADC_CR1_JDISCEN ((uint32_t)0x00001000) /*!< Discontinuous mode on injected channels */ + +#define ADC_CR1_DISCNUM ((uint32_t)0x0000E000) /*!< DISCNUM[2:0] bits (Discontinuous mode channel count) */ +#define ADC_CR1_DISCNUM_0 ((uint32_t)0x00002000) /*!< Bit 0 */ +#define ADC_CR1_DISCNUM_1 ((uint32_t)0x00004000) /*!< Bit 1 */ +#define ADC_CR1_DISCNUM_2 ((uint32_t)0x00008000) /*!< Bit 2 */ + +#define ADC_CR1_PDD ((uint32_t)0x00010000) /*!< Power Down during Delay phase */ +#define ADC_CR1_PDI ((uint32_t)0x00020000) /*!< Power Down during Idle phase */ + +#define ADC_CR1_JAWDEN ((uint32_t)0x00400000) /*!< Analog watchdog enable on injected channels */ +#define ADC_CR1_AWDEN ((uint32_t)0x00800000) /*!< Analog watchdog enable on regular channels */ + +#define ADC_CR1_RES ((uint32_t)0x03000000) /*!< RES[1:0] bits (Resolution) */ +#define ADC_CR1_RES_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_CR1_RES_1 ((uint32_t)0x02000000) /*!< Bit 1 */ + +#define ADC_CR1_OVRIE ((uint32_t)0x04000000) /*!< Overrun interrupt enable */ + +/******************* Bit definition for ADC_CR2 register ********************/ +#define ADC_CR2_ADON ((uint32_t)0x00000001) /*!< A/D Converter ON / OFF */ +#define ADC_CR2_CONT ((uint32_t)0x00000002) /*!< Continuous Conversion */ +#define ADC_CR2_CFG ((uint32_t)0x00000004) /*!< ADC Configuration */ + +#define ADC_CR2_DELS ((uint32_t)0x00000070) /*!< DELS[2:0] bits (Delay selection) */ +#define ADC_CR2_DELS_0 ((uint32_t)0x00000010) /*!< Bit 0 */ +#define ADC_CR2_DELS_1 ((uint32_t)0x00000020) /*!< Bit 1 */ +#define ADC_CR2_DELS_2 ((uint32_t)0x00000040) /*!< Bit 2 */ + +#define ADC_CR2_DMA ((uint32_t)0x00000100) /*!< Direct Memory access mode */ +#define ADC_CR2_DDS ((uint32_t)0x00000200) /*!< DMA disable selection (Single ADC) */ +#define ADC_CR2_EOCS ((uint32_t)0x00000400) /*!< End of conversion selection */ +#define ADC_CR2_ALIGN ((uint32_t)0x00000800) /*!< Data Alignment */ + +#define ADC_CR2_JEXTSEL ((uint32_t)0x000F0000) /*!< JEXTSEL[3:0] bits (External event select for injected group) */ +#define ADC_CR2_JEXTSEL_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CR2_JEXTSEL_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CR2_JEXTSEL_2 ((uint32_t)0x00040000) /*!< Bit 2 */ +#define ADC_CR2_JEXTSEL_3 ((uint32_t)0x00080000) /*!< Bit 3 */ + +#define ADC_CR2_JEXTEN ((uint32_t)0x00300000) /*!< JEXTEN[1:0] bits (External Trigger Conversion mode for injected channels) */ +#define ADC_CR2_JEXTEN_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_CR2_JEXTEN_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +#define ADC_CR2_JSWSTART ((uint32_t)0x00400000) /*!< Start Conversion of injected channels */ + +#define ADC_CR2_EXTSEL ((uint32_t)0x0F000000) /*!< EXTSEL[3:0] bits (External Event Select for regular group) */ +#define ADC_CR2_EXTSEL_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_CR2_EXTSEL_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_CR2_EXTSEL_2 ((uint32_t)0x04000000) /*!< Bit 2 */ +#define ADC_CR2_EXTSEL_3 ((uint32_t)0x08000000) /*!< Bit 3 */ + +#define ADC_CR2_EXTEN ((uint32_t)0x30000000) /*!< EXTEN[1:0] bits (External Trigger Conversion mode for regular channels) */ +#define ADC_CR2_EXTEN_0 ((uint32_t)0x10000000) /*!< Bit 0 */ +#define ADC_CR2_EXTEN_1 ((uint32_t)0x20000000) /*!< Bit 1 */ + +#define ADC_CR2_SWSTART ((uint32_t)0x40000000) /*!< Start Conversion of regular channels */ + +/****************** Bit definition for ADC_SMPR1 register *******************/ +#define ADC_SMPR1_SMP20 ((uint32_t)0x00000007) /*!< SMP20[2:0] bits (Channel 20 Sample time selection) */ +#define ADC_SMPR1_SMP20_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR1_SMP20_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR1_SMP20_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP21 ((uint32_t)0x00000038) /*!< SMP21[2:0] bits (Channel 21 Sample time selection) */ +#define ADC_SMPR1_SMP21_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR1_SMP21_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR1_SMP21_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP22 ((uint32_t)0x000001C0) /*!< SMP22[2:0] bits (Channel 22 Sample time selection) */ +#define ADC_SMPR1_SMP22_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR1_SMP22_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR1_SMP22_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP23 ((uint32_t)0x00000E00) /*!< SMP23[2:0] bits (Channel 23 Sample time selection) */ +#define ADC_SMPR1_SMP23_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR1_SMP23_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR1_SMP23_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP24 ((uint32_t)0x00007000) /*!< SMP24[2:0] bits (Channel 24 Sample time selection) */ +#define ADC_SMPR1_SMP24_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP24_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP24_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP25 ((uint32_t)0x00038000) /*!< SMP25[2:0] bits (Channel 25 Sample time selection) */ +#define ADC_SMPR1_SMP25_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP25_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP25_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP26 ((uint32_t)0x001C0000) /*!< SMP26[2:0] bits (Channel 26 Sample time selection) */ +#define ADC_SMPR1_SMP26_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP26_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP26_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP27 ((uint32_t)0x00E00000) /*!< SMP27[2:0] bits (Channel 27 Sample time selection) */ +#define ADC_SMPR1_SMP27_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP27_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP27_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP28 ((uint32_t)0x07000000) /*!< SMP28[2:0] bits (Channel 28 Sample time selection) */ +#define ADC_SMPR1_SMP28_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP28_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP28_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR1_SMP29 ((uint32_t)0x38000000) /*!< SMP29[2:0] bits (Channel 29 Sample time selection) */ +#define ADC_SMPR1_SMP29_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR1_SMP29_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR1_SMP29_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR2 register *******************/ +#define ADC_SMPR2_SMP10 ((uint32_t)0x00000007) /*!< SMP10[2:0] bits (Channel 10 Sample time selection) */ +#define ADC_SMPR2_SMP10_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR2_SMP10_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR2_SMP10_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP11 ((uint32_t)0x00000038) /*!< SMP11[2:0] bits (Channel 11 Sample time selection) */ +#define ADC_SMPR2_SMP11_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR2_SMP11_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR2_SMP11_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP12 ((uint32_t)0x000001C0) /*!< SMP12[2:0] bits (Channel 12 Sample time selection) */ +#define ADC_SMPR2_SMP12_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR2_SMP12_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR2_SMP12_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP13 ((uint32_t)0x00000E00) /*!< SMP13[2:0] bits (Channel 13 Sample time selection) */ +#define ADC_SMPR2_SMP13_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR2_SMP13_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR2_SMP13_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP14 ((uint32_t)0x00007000) /*!< SMP14[2:0] bits (Channel 14 Sample time selection) */ +#define ADC_SMPR2_SMP14_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP14_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP14_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP15 ((uint32_t)0x00038000) /*!< SMP15[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR2_SMP15_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP15_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP15_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP16 ((uint32_t)0x001C0000) /*!< SMP16[2:0] bits (Channel 16 Sample time selection) */ +#define ADC_SMPR2_SMP16_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP16_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP16_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP17 ((uint32_t)0x00E00000) /*!< SMP17[2:0] bits (Channel 17 Sample time selection) */ +#define ADC_SMPR2_SMP17_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP17_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP17_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP18 ((uint32_t)0x07000000) /*!< SMP18[2:0] bits (Channel 18 Sample time selection) */ +#define ADC_SMPR2_SMP18_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP18_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP18_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR2_SMP19 ((uint32_t)0x38000000) /*!< SMP19[2:0] bits (Channel 19 Sample time selection) */ +#define ADC_SMPR2_SMP19_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR2_SMP19_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR2_SMP19_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_SMPR3 register *******************/ +#define ADC_SMPR3_SMP0 ((uint32_t)0x00000007) /*!< SMP0[2:0] bits (Channel 0 Sample time selection) */ +#define ADC_SMPR3_SMP0_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR3_SMP0_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR3_SMP0_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP1 ((uint32_t)0x00000038) /*!< SMP1[2:0] bits (Channel 1 Sample time selection) */ +#define ADC_SMPR3_SMP1_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR3_SMP1_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR3_SMP1_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP2 ((uint32_t)0x000001C0) /*!< SMP2[2:0] bits (Channel 2 Sample time selection) */ +#define ADC_SMPR3_SMP2_0 ((uint32_t)0x00000040) /*!< Bit 0 */ +#define ADC_SMPR3_SMP2_1 ((uint32_t)0x00000080) /*!< Bit 1 */ +#define ADC_SMPR3_SMP2_2 ((uint32_t)0x00000100) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP3 ((uint32_t)0x00000E00) /*!< SMP3[2:0] bits (Channel 3 Sample time selection) */ +#define ADC_SMPR3_SMP3_0 ((uint32_t)0x00000200) /*!< Bit 0 */ +#define ADC_SMPR3_SMP3_1 ((uint32_t)0x00000400) /*!< Bit 1 */ +#define ADC_SMPR3_SMP3_2 ((uint32_t)0x00000800) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP4 ((uint32_t)0x00007000) /*!< SMP4[2:0] bits (Channel 4 Sample time selection) */ +#define ADC_SMPR3_SMP4_0 ((uint32_t)0x00001000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP4_1 ((uint32_t)0x00002000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP4_2 ((uint32_t)0x00004000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP5 ((uint32_t)0x00038000) /*!< SMP5[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMPR3_SMP5_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP5_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP5_2 ((uint32_t)0x00020000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP6 ((uint32_t)0x001C0000) /*!< SMP6[2:0] bits (Channel 6 Sample time selection) */ +#define ADC_SMPR3_SMP6_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP6_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP6_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP7 ((uint32_t)0x00E00000) /*!< SMP7[2:0] bits (Channel 7 Sample time selection) */ +#define ADC_SMPR3_SMP7_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP7_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP7_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP8 ((uint32_t)0x07000000) /*!< SMP8[2:0] bits (Channel 8 Sample time selection) */ +#define ADC_SMPR3_SMP8_0 ((uint32_t)0x01000000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP8_1 ((uint32_t)0x02000000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP8_2 ((uint32_t)0x04000000) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP9 ((uint32_t)0x38000000) /*!< SMP9[2:0] bits (Channel 9 Sample time selection) */ +#define ADC_SMPR3_SMP9_0 ((uint32_t)0x08000000) /*!< Bit 0 */ +#define ADC_SMPR3_SMP9_1 ((uint32_t)0x10000000) /*!< Bit 1 */ +#define ADC_SMPR3_SMP9_2 ((uint32_t)0x20000000) /*!< Bit 2 */ + +/****************** Bit definition for ADC_JOFR1 register *******************/ +#define ADC_JOFR1_JOFFSET1 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 1 */ + +/****************** Bit definition for ADC_JOFR2 register *******************/ +#define ADC_JOFR2_JOFFSET2 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 2 */ + +/****************** Bit definition for ADC_JOFR3 register *******************/ +#define ADC_JOFR3_JOFFSET3 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 3 */ + +/****************** Bit definition for ADC_JOFR4 register *******************/ +#define ADC_JOFR4_JOFFSET4 ((uint32_t)0x00000FFF) /*!< Data offset for injected channel 4 */ + +/******************* Bit definition for ADC_HTR register ********************/ +#define ADC_HTR_HT ((uint32_t)0x00000FFF) /*!< Analog watchdog high threshold */ + +/******************* Bit definition for ADC_LTR register ********************/ +#define ADC_LTR_LT ((uint32_t)0x00000FFF) /*!< Analog watchdog low threshold */ + +/******************* Bit definition for ADC_SQR1 register *******************/ +#define ADC_SQR1_L ((uint32_t)0x00F00000) /*!< L[3:0] bits (Regular channel sequence length) */ +#define ADC_SQR1_L_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR1_L_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR1_L_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR1_L_3 ((uint32_t)0x00800000) /*!< Bit 3 */ + +#define ADC_SQR1_SQ28 ((uint32_t)0x000F8000) /*!< SQ28[4:0] bits (25th conversion in regular sequence) */ +#define ADC_SQR1_SQ28_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR1_SQ28_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR1_SQ28_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR1_SQ28_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR1_SQ28_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ27 ((uint32_t)0x00007C00) /*!< SQ27[4:0] bits (27th conversion in regular sequence) */ +#define ADC_SQR1_SQ27_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR1_SQ27_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR1_SQ27_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR1_SQ27_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR1_SQ27_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR1_SQ26 ((uint32_t)0x000003E0) /*!< SQ26[4:0] bits (26th conversion in regular sequence) */ +#define ADC_SQR1_SQ26_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR1_SQ26_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR1_SQ26_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR1_SQ26_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR1_SQ26_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR1_SQ25 ((uint32_t)0x0000001F) /*!< SQ25[4:0] bits (25th conversion in regular sequence) */ +#define ADC_SQR1_SQ25_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR1_SQ25_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR1_SQ25_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR1_SQ25_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR1_SQ25_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR2 register *******************/ +#define ADC_SQR2_SQ19 ((uint32_t)0x0000001F) /*!< SQ19[4:0] bits (19th conversion in regular sequence) */ +#define ADC_SQR2_SQ19_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR2_SQ19_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR2_SQ19_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR2_SQ19_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR2_SQ19_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR2_SQ20 ((uint32_t)0x000003E0) /*!< SQ20[4:0] bits (20th conversion in regular sequence) */ +#define ADC_SQR2_SQ20_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR2_SQ20_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR2_SQ20_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR2_SQ20_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR2_SQ20_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR2_SQ21 ((uint32_t)0x00007C00) /*!< SQ21[4:0] bits (21th conversion in regular sequence) */ +#define ADC_SQR2_SQ21_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR2_SQ21_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR2_SQ21_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR2_SQ21_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR2_SQ21_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ22 ((uint32_t)0x000F8000) /*!< SQ22[4:0] bits (22th conversion in regular sequence) */ +#define ADC_SQR2_SQ22_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR2_SQ22_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR2_SQ22_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR2_SQ22_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR2_SQ22_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ23 ((uint32_t)0x01F00000) /*!< SQ23[4:0] bits (23th conversion in regular sequence) */ +#define ADC_SQR2_SQ23_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR2_SQ23_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR2_SQ23_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR2_SQ23_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR2_SQ23_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR2_SQ24 ((uint32_t)0x3E000000) /*!< SQ24[4:0] bits (24th conversion in regular sequence) */ +#define ADC_SQR2_SQ24_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR2_SQ24_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR2_SQ24_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR2_SQ24_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR2_SQ24_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR3 register *******************/ +#define ADC_SQR3_SQ13 ((uint32_t)0x0000001F) /*!< SQ13[4:0] bits (13th conversion in regular sequence) */ +#define ADC_SQR3_SQ13_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR3_SQ13_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR3_SQ13_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR3_SQ13_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR3_SQ13_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR3_SQ14 ((uint32_t)0x000003E0) /*!< SQ14[4:0] bits (14th conversion in regular sequence) */ +#define ADC_SQR3_SQ14_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR3_SQ14_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR3_SQ14_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR3_SQ14_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR3_SQ14_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR3_SQ15 ((uint32_t)0x00007C00) /*!< SQ15[4:0] bits (15th conversion in regular sequence) */ +#define ADC_SQR3_SQ15_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR3_SQ15_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR3_SQ15_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR3_SQ15_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR3_SQ15_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ16 ((uint32_t)0x000F8000) /*!< SQ16[4:0] bits (16th conversion in regular sequence) */ +#define ADC_SQR3_SQ16_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR3_SQ16_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR3_SQ16_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR3_SQ16_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR3_SQ16_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ17 ((uint32_t)0x01F00000) /*!< SQ17[4:0] bits (17th conversion in regular sequence) */ +#define ADC_SQR3_SQ17_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR3_SQ17_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR3_SQ17_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR3_SQ17_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR3_SQ17_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR3_SQ18 ((uint32_t)0x3E000000) /*!< SQ18[4:0] bits (18th conversion in regular sequence) */ +#define ADC_SQR3_SQ18_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR3_SQ18_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR3_SQ18_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR3_SQ18_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR3_SQ18_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR4 register *******************/ +#define ADC_SQR4_SQ7 ((uint32_t)0x0000001F) /*!< SQ7[4:0] bits (7th conversion in regular sequence) */ +#define ADC_SQR4_SQ7_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR4_SQ7_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR4_SQ7_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR4_SQ7_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR4_SQ7_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR4_SQ8 ((uint32_t)0x000003E0) /*!< SQ8[4:0] bits (8th conversion in regular sequence) */ +#define ADC_SQR4_SQ8_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR4_SQ8_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR4_SQ8_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR4_SQ8_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR4_SQ8_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR4_SQ9 ((uint32_t)0x00007C00) /*!< SQ9[4:0] bits (9th conversion in regular sequence) */ +#define ADC_SQR4_SQ9_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR4_SQ9_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR4_SQ9_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR4_SQ9_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR4_SQ9_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ10 ((uint32_t)0x000F8000) /*!< SQ10[4:0] bits (10th conversion in regular sequence) */ +#define ADC_SQR4_SQ10_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR4_SQ10_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR4_SQ10_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR4_SQ10_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR4_SQ10_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ11 ((uint32_t)0x01F00000) /*!< SQ11[4:0] bits (11th conversion in regular sequence) */ +#define ADC_SQR4_SQ11_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR4_SQ11_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR4_SQ11_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR4_SQ11_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR4_SQ11_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR4_SQ12 ((uint32_t)0x3E000000) /*!< SQ12[4:0] bits (12th conversion in regular sequence) */ +#define ADC_SQR4_SQ12_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR4_SQ12_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR4_SQ12_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR4_SQ12_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR4_SQ12_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + +/******************* Bit definition for ADC_SQR5 register *******************/ +#define ADC_SQR5_SQ1 ((uint32_t)0x0000001F) /*!< SQ1[4:0] bits (1st conversion in regular sequence) */ +#define ADC_SQR5_SQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SQR5_SQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SQR5_SQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_SQR5_SQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_SQR5_SQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_SQR5_SQ2 ((uint32_t)0x000003E0) /*!< SQ2[4:0] bits (2nd conversion in regular sequence) */ +#define ADC_SQR5_SQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_SQR5_SQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_SQR5_SQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_SQR5_SQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_SQR5_SQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_SQR5_SQ3 ((uint32_t)0x00007C00) /*!< SQ3[4:0] bits (3rd conversion in regular sequence) */ +#define ADC_SQR5_SQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_SQR5_SQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_SQR5_SQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_SQR5_SQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_SQR5_SQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ4 ((uint32_t)0x000F8000) /*!< SQ4[4:0] bits (4th conversion in regular sequence) */ +#define ADC_SQR5_SQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_SQR5_SQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_SQR5_SQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_SQR5_SQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_SQR5_SQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ5 ((uint32_t)0x01F00000) /*!< SQ5[4:0] bits (5th conversion in regular sequence) */ +#define ADC_SQR5_SQ5_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_SQR5_SQ5_1 ((uint32_t)0x00200000) /*!< Bit 1 */ +#define ADC_SQR5_SQ5_2 ((uint32_t)0x00400000) /*!< Bit 2 */ +#define ADC_SQR5_SQ5_3 ((uint32_t)0x00800000) /*!< Bit 3 */ +#define ADC_SQR5_SQ5_4 ((uint32_t)0x01000000) /*!< Bit 4 */ + +#define ADC_SQR5_SQ6 ((uint32_t)0x3E000000) /*!< SQ6[4:0] bits (6th conversion in regular sequence) */ +#define ADC_SQR5_SQ6_0 ((uint32_t)0x02000000) /*!< Bit 0 */ +#define ADC_SQR5_SQ6_1 ((uint32_t)0x04000000) /*!< Bit 1 */ +#define ADC_SQR5_SQ6_2 ((uint32_t)0x08000000) /*!< Bit 2 */ +#define ADC_SQR5_SQ6_3 ((uint32_t)0x10000000) /*!< Bit 3 */ +#define ADC_SQR5_SQ6_4 ((uint32_t)0x20000000) /*!< Bit 4 */ + + +/******************* Bit definition for ADC_JSQR register *******************/ +#define ADC_JSQR_JSQ1 ((uint32_t)0x0000001F) /*!< JSQ1[4:0] bits (1st conversion in injected sequence) */ +#define ADC_JSQR_JSQ1_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_JSQR_JSQ1_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_JSQR_JSQ1_2 ((uint32_t)0x00000004) /*!< Bit 2 */ +#define ADC_JSQR_JSQ1_3 ((uint32_t)0x00000008) /*!< Bit 3 */ +#define ADC_JSQR_JSQ1_4 ((uint32_t)0x00000010) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ2 ((uint32_t)0x000003E0) /*!< JSQ2[4:0] bits (2nd conversion in injected sequence) */ +#define ADC_JSQR_JSQ2_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define ADC_JSQR_JSQ2_1 ((uint32_t)0x00000040) /*!< Bit 1 */ +#define ADC_JSQR_JSQ2_2 ((uint32_t)0x00000080) /*!< Bit 2 */ +#define ADC_JSQR_JSQ2_3 ((uint32_t)0x00000100) /*!< Bit 3 */ +#define ADC_JSQR_JSQ2_4 ((uint32_t)0x00000200) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ3 ((uint32_t)0x00007C00) /*!< JSQ3[4:0] bits (3rd conversion in injected sequence) */ +#define ADC_JSQR_JSQ3_0 ((uint32_t)0x00000400) /*!< Bit 0 */ +#define ADC_JSQR_JSQ3_1 ((uint32_t)0x00000800) /*!< Bit 1 */ +#define ADC_JSQR_JSQ3_2 ((uint32_t)0x00001000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ3_3 ((uint32_t)0x00002000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ3_4 ((uint32_t)0x00004000) /*!< Bit 4 */ + +#define ADC_JSQR_JSQ4 ((uint32_t)0x000F8000) /*!< JSQ4[4:0] bits (4th conversion in injected sequence) */ +#define ADC_JSQR_JSQ4_0 ((uint32_t)0x00008000) /*!< Bit 0 */ +#define ADC_JSQR_JSQ4_1 ((uint32_t)0x00010000) /*!< Bit 1 */ +#define ADC_JSQR_JSQ4_2 ((uint32_t)0x00020000) /*!< Bit 2 */ +#define ADC_JSQR_JSQ4_3 ((uint32_t)0x00040000) /*!< Bit 3 */ +#define ADC_JSQR_JSQ4_4 ((uint32_t)0x00080000) /*!< Bit 4 */ + +#define ADC_JSQR_JL ((uint32_t)0x00300000) /*!< JL[1:0] bits (Injected Sequence length) */ +#define ADC_JSQR_JL_0 ((uint32_t)0x00100000) /*!< Bit 0 */ +#define ADC_JSQR_JL_1 ((uint32_t)0x00200000) /*!< Bit 1 */ + +/******************* Bit definition for ADC_JDR1 register *******************/ +#define ADC_JDR1_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR2 register *******************/ +#define ADC_JDR2_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR3 register *******************/ +#define ADC_JDR3_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************* Bit definition for ADC_JDR4 register *******************/ +#define ADC_JDR4_JDATA ((uint32_t)0x0000FFFF) /*!< Injected data */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA ((uint32_t)0x0000FFFF) /*!< Regular data */ + +/****************** Bit definition for ADC_SMPR0 register *******************/ +#define ADC_SMPR3_SMP30 ((uint32_t)0x00000007) /*!< SMP30[2:0] bits (Channel 30 Sample time selection) */ +#define ADC_SMPR3_SMP30_0 ((uint32_t)0x00000001) /*!< Bit 0 */ +#define ADC_SMPR3_SMP30_1 ((uint32_t)0x00000002) /*!< Bit 1 */ +#define ADC_SMPR3_SMP30_2 ((uint32_t)0x00000004) /*!< Bit 2 */ + +#define ADC_SMPR3_SMP31 ((uint32_t)0x00000038) /*!< SMP31[2:0] bits (Channel 31 Sample time selection) */ +#define ADC_SMPR3_SMP31_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define ADC_SMPR3_SMP31_1 ((uint32_t)0x00000010) /*!< Bit 1 */ +#define ADC_SMPR3_SMP31_2 ((uint32_t)0x00000020) /*!< Bit 2 */ + +/******************* Bit definition for ADC_CSR register ********************/ +#define ADC_CSR_AWD1 ((uint32_t)0x00000001) /*!< ADC1 Analog watchdog flag */ +#define ADC_CSR_EOC1 ((uint32_t)0x00000002) /*!< ADC1 End of conversion */ +#define ADC_CSR_JEOC1 ((uint32_t)0x00000004) /*!< ADC1 Injected channel end of conversion */ +#define ADC_CSR_JSTRT1 ((uint32_t)0x00000008) /*!< ADC1 Injected channel Start flag */ +#define ADC_CSR_STRT1 ((uint32_t)0x00000010) /*!< ADC1 Regular channel Start flag */ +#define ADC_CSR_OVR1 ((uint32_t)0x00000020) /*!< ADC1 overrun flag */ +#define ADC_CSR_ADONS1 ((uint32_t)0x00000040) /*!< ADON status of ADC1 */ + +/******************* Bit definition for ADC_CCR register ********************/ +#define ADC_CCR_ADCPRE ((uint32_t)0x00030000) /*!< ADC prescaler*/ +#define ADC_CCR_ADCPRE_0 ((uint32_t)0x00010000) /*!< Bit 0 */ +#define ADC_CCR_ADCPRE_1 ((uint32_t)0x00020000) /*!< Bit 1 */ +#define ADC_CCR_TSVREFE ((uint32_t)0x00800000) /*!< Temperature Sensor and VREFINT Enable */ + +/******************************************************************************/ +/* */ +/* Advanced Encryption Standard (AES) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for AES_CR register *********************/ +#define AES_CR_EN ((uint32_t)0x00000001) /*!< AES Enable */ +#define AES_CR_DATATYPE ((uint32_t)0x00000006) /*!< Data type selection */ +#define AES_CR_DATATYPE_0 ((uint32_t)0x00000002) /*!< Bit 0 */ +#define AES_CR_DATATYPE_1 ((uint32_t)0x00000004) /*!< Bit 1 */ + +#define AES_CR_MODE ((uint32_t)0x00000018) /*!< AES Mode Of Operation */ +#define AES_CR_MODE_0 ((uint32_t)0x00000008) /*!< Bit 0 */ +#define AES_CR_MODE_1 ((uint32_t)0x00000010) /*!< Bit 1 */ + +#define AES_CR_CHMOD ((uint32_t)0x00000060) /*!< AES Chaining Mode */ +#define AES_CR_CHMOD_0 ((uint32_t)0x00000020) /*!< Bit 0 */ +#define AES_CR_CHMOD_1 ((uint32_t)0x00000040) /*!< Bit 1 */ + +#define AES_CR_CCFC ((uint32_t)0x00000080) /*!< Computation Complete Flag Clear */ +#define AES_CR_ERRC ((uint32_t)0x00000100) /*!< Error Clear */ +#define AES_CR_CCIE ((uint32_t)0x00000200) /*!< Computation Complete Interrupt Enable */ +#define AES_CR_ERRIE ((uint32_t)0x00000400) /*!< Error Interrupt Enable */ +#define AES_CR_DMAINEN ((uint32_t)0x00000800) /*!< DMA ENable managing the data input phase */ +#define AES_CR_DMAOUTEN ((uint32_t)0x00001000) /*!< DMA Enable managing the data output phase */ + +/******************* Bit definition for AES_SR register *********************/ +#define AES_SR_CCF ((uint32_t)0x00000001) /*!< Computation Complete Flag */ +#define AES_SR_RDERR ((uint32_t)0x00000002) /*!< Read Error Flag */ +#define AES_SR_WRERR ((uint32_t)0x00000004) /*!< Write Error Flag */ + +/******************* Bit definition for AES_DINR register *******************/ +#define AES_DINR ((uint32_t)0x0000FFFF) /*!< AES Data Input Register */ + +/******************* Bit definition for AES_DOUTR register ******************/ +#define AES_DOUTR ((uint32_t)0x0000FFFF) /*!< AES Data Output Register */ + +/******************* Bit definition for AES_KEYR0 register ******************/ +#define AES_KEYR0 ((uint32_t)0x0000FFFF) /*!< AES Key Register 0 */ + +/******************* Bit definition for AES_KEYR1 register ******************/ +#define AES_KEYR1 ((uint32_t)0x0000FFFF) /*!< AES Key Register 1 */ + +/******************* Bit definition for AES_KEYR2 register ******************/ +#define AES_KEYR2 ((uint32_t)0x0000FFFF) /*!< AES Key Register 2 */ + +/******************* Bit definition for AES_KEYR3 register ******************/ +#define AES_KEYR3 ((uint32_t)0x0000FFFF) /*!< AES Key Register 3 */ + +/******************* Bit definition for AES_IVR0 register *******************/ +#define AES_IVR0 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 0 */ + +/******************* Bit definition for AES_IVR1 register *******************/ +#define AES_IVR1 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 1 */ + +/******************* Bit definition for AES_IVR2 register *******************/ +#define AES_IVR2 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 2 */ + +/******************* Bit definition for AES_IVR3 register *******************/ +#define AES_IVR3 ((uint32_t)0x0000FFFF) /*!< AES Initialization Vector Register 3 */ + +/******************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/******************************************************************************/ + +/****************** Bit definition for COMP_CSR register ********************/ +#define COMP_CSR_10KPU ((uint32_t)0x00000001) /*!< 10K pull-up resistor */ +#define COMP_CSR_400KPU ((uint32_t)0x00000002) /*!< 400K pull-up resistor */ +#define COMP_CSR_10KPD ((uint32_t)0x00000004) /*!< 10K pull-down resistor */ +#define COMP_CSR_400KPD ((uint32_t)0x00000008) /*!< 400K pull-down resistor */ + +#define COMP_CSR_CMP1EN ((uint32_t)0x00000010) /*!< Comparator 1 enable */ +#define COMP_CSR_SW1 ((uint32_t)0x00000020) /*!< SW1 analog switch enable */ +#define COMP_CSR_CMP1OUT ((uint32_t)0x00000080) /*!< Comparator 1 output */ + +#define COMP_CSR_SPEED ((uint32_t)0x00001000) /*!< Comparator 2 speed */ +#define COMP_CSR_CMP2OUT ((uint32_t)0x00002000) /*!< Comparator 2 ouput */ + +#define COMP_CSR_VREFOUTEN ((uint32_t)0x00010000) /*!< Comparator Vref Enable */ +#define COMP_CSR_WNDWE ((uint32_t)0x00020000) /*!< Window mode enable */ + +#define COMP_CSR_INSEL ((uint32_t)0x001C0000) /*!< INSEL[2:0] Inversion input Selection */ +#define COMP_CSR_INSEL_0 ((uint32_t)0x00040000) /*!< Bit 0 */ +#define COMP_CSR_INSEL_1 ((uint32_t)0x00080000) /*!< Bit 1 */ +#define COMP_CSR_INSEL_2 ((uint32_t)0x00100000) /*!< Bit 2 */ + +#define COMP_CSR_OUTSEL ((uint32_t)0x00E00000) /*!< OUTSEL[2:0] comparator 2 output redirection */ +#define COMP_CSR_OUTSEL_0 ((uint32_t)0x00200000) /*!< Bit 0 */ +#define COMP_CSR_OUTSEL_1 ((uint32_t)0x00400000) /*!< Bit 1 */ +#define COMP_CSR_OUTSEL_2 ((uint32_t)0x00800000) /*!< Bit 2 */ + +#define COMP_CSR_FCH3 ((uint32_t)0x04000000) /*!< Bit 26 */ +#define COMP_CSR_FCH8 ((uint32_t)0x08000000) /*!< Bit 27 */ +#define COMP_CSR_RCH13 ((uint32_t)0x10000000) /*!< Bit 28 */ + +#define COMP_CSR_CAIE ((uint32_t)0x20000000) /*!< Bit 29 */ +#define COMP_CSR_CAIF ((uint32_t)0x40000000) /*!< Bit 30 */ +#define COMP_CSR_TSUSP ((uint32_t)0x80000000) /*!< Bit 31 */ + +/******************************************************************************/ +/* */ +/* Operational Amplifier (OPAMP) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for OPAMP_CSR register ******************/ +#define OPAMP_CSR_OPA1PD ((uint32_t)0x00000001) /*!< OPAMP1 disable */ +#define OPAMP_CSR_S3SEL1 ((uint32_t)0x00000002) /*!< Switch 3 for OPAMP1 Enable */ +#define OPAMP_CSR_S4SEL1 ((uint32_t)0x00000004) /*!< Switch 4 for OPAMP1 Enable */ +#define OPAMP_CSR_S5SEL1 ((uint32_t)0x00000008) /*!< Switch 5 for OPAMP1 Enable */ +#define OPAMP_CSR_S6SEL1 ((uint32_t)0x00000010) /*!< Switch 6 for OPAMP1 Enable */ +#define OPAMP_CSR_OPA1CAL_L ((uint32_t)0x00000020) /*!< OPAMP1 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA1CAL_H ((uint32_t)0x00000040) /*!< OPAMP1 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA1LPM ((uint32_t)0x00000080) /*!< OPAMP1 Low power enable */ +#define OPAMP_CSR_OPA2PD ((uint32_t)0x00000100) /*!< OPAMP2 disable */ +#define OPAMP_CSR_S3SEL2 ((uint32_t)0x00000200) /*!< Switch 3 for OPAMP2 Enable */ +#define OPAMP_CSR_S4SEL2 ((uint32_t)0x00000400) /*!< Switch 4 for OPAMP2 Enable */ +#define OPAMP_CSR_S5SEL2 ((uint32_t)0x00000800) /*!< Switch 5 for OPAMP2 Enable */ +#define OPAMP_CSR_S6SEL2 ((uint32_t)0x00001000) /*!< Switch 6 for OPAMP2 Enable */ +#define OPAMP_CSR_OPA2CAL_L ((uint32_t)0x00002000) /*!< OPAMP2 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA2CAL_H ((uint32_t)0x00004000) /*!< OPAMP2 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA2LPM ((uint32_t)0x00008000) /*!< OPAMP2 Low power enable */ +#define OPAMP_CSR_OPA3PD ((uint32_t)0x00010000) /*!< OPAMP3 disable */ +#define OPAMP_CSR_S3SEL3 ((uint32_t)0x00020000) /*!< Switch 3 for OPAMP3 Enable */ +#define OPAMP_CSR_S4SEL3 ((uint32_t)0x00040000) /*!< Switch 4 for OPAMP3 Enable */ +#define OPAMP_CSR_S5SEL3 ((uint32_t)0x00080000) /*!< Switch 5 for OPAMP3 Enable */ +#define OPAMP_CSR_S6SEL3 ((uint32_t)0x00100000) /*!< Switch 6 for OPAMP3 Enable */ +#define OPAMP_CSR_OPA3CAL_L ((uint32_t)0x00200000) /*!< OPAMP3 Offset calibration for P differential pair */ +#define OPAMP_CSR_OPA3CAL_H ((uint32_t)0x00400000) /*!< OPAMP3 Offset calibration for N differential pair */ +#define OPAMP_CSR_OPA3LPM ((uint32_t)0x00800000) /*!< OPAMP3 Low power enable */ +#define OPAMP_CSR_ANAWSEL1 ((uint32_t)0x01000000) /*!< Switch ANA Enable for OPAMP1 */ +#define OPAMP_CSR_ANAWSEL2 ((uint32_t)0x02000000) /*!< Switch ANA Enable for OPAMP2 */ +#define OPAMP_CSR_ANAWSEL3 ((uint32_t)0x04000000) /*!< Switch ANA Enable for OPAMP3 */ +#define OPAMP_CSR_S7SEL2 ((uint32_t)0x08000000) /*!< Switch 7 for OPAMP2 Enable */ +#define OPAMP_CSR_AOP_RANGE ((uint32_t)0x10000000) /*!< Power range selection */ +#define OPAMP_CSR_OPA1CALOUT ((uint32_t)0x20000000) /*!< OPAMP1 calibration output */ +#define OPAMP_CSR_OPA2CALOUT ((uint32_t)0x40000000) /*!< OPAMP2 calibration output */ +#define OPAMP_CSR_OPA3CALOUT ((uint32_t)0x80000000) /*!< OPAMP3 calibration output */ + +/******************* Bit definition for OPAMP_OTR register ******************/ +#define OPAMP_OTR_AO1_OPT_OFFSET_TRIM ((uint32_t)0x000003FF) /*!< Offset trim for OPAMP1 */ +#define OPAMP_OTR_AO2_OPT_OFFSET_TRIM ((uint32_t)0x000FFC00) /*!< Offset trim for OPAMP2 */ +#define OPAMP_OTR_AO3_OPT_OFFSET_TRIM ((uint32_t)0x3FF00000) /*!< Offset trim for OPAMP2 */ +#define OPAMP_OTR_OT_USER ((uint32_t)0x80000000) /*!< Switch to OPAMP offset user trimmed values */ + +/******************* Bit definition for OPAMP_LPOTR register ****************/ +#define OPAMP_LP_OTR_AO1_OPT_OFFSET_TRIM_LP ((uint32_t)0x000003FF) /*!< Offset trim in low power for OPAMP1 */ +#define OPAMP_LP_OTR_AO2_OPT_OFFSET_TRIM_LP ((uint32_t)0x000FFC00) /*!< Offset trim in low power for OPAMP2 */ +#define OPAMP_LP_OTR_AO3_OPT_OFFSET_TRIM_LP ((uint32_t)0x3FF00000) /*!< Offset trim in low power for OPAMP3 */ + +/******************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR ((uint8_t)0xFF) /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET ((uint32_t)0x00000001) /*!< RESET bit */ + +/******************************************************************************/ +/* */ +/* Digital to Analog Converter (DAC) */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for DAC_CR register ********************/ +#define DAC_CR_EN1 ((uint32_t)0x00000001) /*!
© COPYRIGHT 2012 STMicroelectronics
+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L1xx_CONF_H +#define __STM32L1xx_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Uncomment/Comment the line below to enable/disable peripheral header file inclusion */ +#include "stm32l1xx_adc.h" +#include "stm32l1xx_aes.h" +#include "stm32l1xx_comp.h" +#include "stm32l1xx_crc.h" +#include "stm32l1xx_dac.h" +#include "stm32l1xx_dbgmcu.h" +#include "stm32l1xx_dma.h" +#include "stm32l1xx_exti.h" +#include "stm32l1xx_flash.h" +#include "stm32l1xx_fsmc.h" +#include "stm32l1xx_gpio.h" +#include "stm32l1xx_i2c.h" +#include "stm32l1xx_iwdg.h" +#include "stm32l1xx_lcd.h" +#include "stm32l1xx_opamp.h" +#include "stm32l1xx_pwr.h" +#include "stm32l1xx_rcc.h" +#include "stm32l1xx_rtc.h" +#include "stm32l1xx_sdio.h" +#include "stm32l1xx_spi.h" +#include "stm32l1xx_syscfg.h" +#include "stm32l1xx_tim.h" +#include "stm32l1xx_usart.h" +#include "stm32l1xx_wwdg.h" +#include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Uncomment the line below to expanse the "assert_param" macro in the + Standard Peripheral Library drivers code */ +/* #define USE_FULL_ASSERT 1 */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT + +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function which reports + * the name of the source file and the source line number of the call + * that failed. If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + +#endif /* __STM32L1xx_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/cmsis/system_stm32l1xx.c b/src/boards/SensorNode/cmsis/system_stm32l1xx.c new file mode 100644 index 000000000..4181a7436 --- /dev/null +++ b/src/boards/SensorNode/cmsis/system_stm32l1xx.c @@ -0,0 +1,394 @@ +/** + ****************************************************************************** + * @file system_stm32l1xx.c + * @author MCD Application Team + * @version V1.2.0 + * @date 27-August-2013 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * This file contains the system clock configuration for STM32L1xx Ultra + * Low power devices, and is generated by the clock configuration + * tool STM32L1xx_Clock_Configuration_V1.2.0.xls + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * and Divider factors, AHB/APBx prescalers and Flash settings), + * depending on the configuration made in the clock xls tool. + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32l1xx_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the MSI (2.1 MHz Range) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32l1xx_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 3. If the system clock source selected by user fails to startup, the SystemInit() + * function will do nothing and MSI still used as system clock source. User can + * add some code to deal with this issue inside the SetSysClock() function. + * + * 4. The default value of HSE crystal is set to 8MHz, refer to "HSE_VALUE" define + * in "stm32l1xx.h" file. When HSE is used as system clock source, directly or + * through PLL, and you are using different crystal you have to adapt the HSE + * value to your own configuration. + * + * 5. This file configures the system clock as follows: + *============================================================================= + * System Clock Configuration + *============================================================================= + * System Clock source | PLL(HSE) + *----------------------------------------------------------------------------- + * SYSCLK | 32000000 Hz + *----------------------------------------------------------------------------- + * HCLK | 32000000 Hz + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB1 Prescaler | 1 + *----------------------------------------------------------------------------- + * APB2 Prescaler | 1 + *----------------------------------------------------------------------------- + * HSE Frequency | 12000000 Hz + *----------------------------------------------------------------------------- + * PLL DIV | 3 + *----------------------------------------------------------------------------- + * PLL MUL | 8 + *----------------------------------------------------------------------------- + * VDD | 3.3 V + *----------------------------------------------------------------------------- + * Vcore | 1.8 V (Range 1) + *----------------------------------------------------------------------------- + * Flash Latency | 1 WS + *----------------------------------------------------------------------------- + * Require 48MHz for USB clock | Enabled + *----------------------------------------------------------------------------- + *============================================================================= + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx_system + * @{ + */ + +/** @addtogroup STM32L1xx_System_Private_Includes + * @{ + */ + +#include "stm32l1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Defines + * @{ + */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Variables + * @{ + */ +uint32_t SystemCoreClock = 32000000; +__I uint8_t PLLMulTable[9] = {3, 4, 6, 8, 12, 16, 24, 32, 48}; +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /*!< Set MSION bit */ + RCC->CR |= (uint32_t)0x00000100; + + /*!< Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], MCOSEL[2:0] and MCOPRE[2:0] bits */ + RCC->CFGR &= (uint32_t)0x88FFC00C; + + /*!< Reset HSION, HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xEEFEFFFE; + + /*!< Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /*!< Reset PLLSRC, PLLMUL[3:0] and PLLDIV[1:0] bits */ + RCC->CFGR &= (uint32_t)0xFF02FFFF; + + /*!< Disable all interrupts */ + RCC->CIR = 0x00000000; + + /* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock according to Clock Register Values + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI + * value as defined by the MSI range. + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32l1xx.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32l1xx.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmul = 0, plldiv = 0, pllsource = 0, msirange = 0; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + case 0x04: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x08: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x0C: /* PLL used as system clock */ + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmul = RCC->CFGR & RCC_CFGR_PLLMUL; + plldiv = RCC->CFGR & RCC_CFGR_PLLDIV; + pllmul = PLLMulTable[(pllmul >> 18)]; + plldiv = (plldiv >> 22) + 1; + + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + + if (pllsource == 0x00) + { + /* HSI oscillator clock selected as PLL clock entry */ + SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv); + } + else + { + /* HSE selected as PLL clock entry */ + SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv); + } + break; + default: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> 13; + SystemCoreClock = (32768 * (1 << (msirange + 1))); + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, AHB/APBx prescalers and Flash + * settings. + * @note This function should be called only once the RCC clock configuration + * is reset to the default reset state (done in SystemInit() function). + * @param None + * @retval None + */ +static void SetSysClock(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable 64-bit access */ + FLASH->ACR |= FLASH_ACR_ACC64; + + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTEN; + + /* Flash 1 wait state */ + FLASH->ACR |= FLASH_ACR_LATENCY; + + /* Power enable */ + RCC->APB1ENR |= RCC_APB1ENR_PWREN; + + /* Select the Voltage Range 1 (1.8 V) */ + PWR->CR = PWR_CR_VOS_0; + + /* Wait Until the Voltage Regulator is ready */ + while((PWR->CSR & PWR_CSR_VOSF) != RESET) + { + } + + /* HCLK = SYSCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK /1*/ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* PLL configuration */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL | + RCC_CFGR_PLLDIV)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV3); + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/cmsis/system_stm32l1xx.h b/src/boards/SensorNode/cmsis/system_stm32l1xx.h new file mode 100644 index 000000000..25ad24096 --- /dev/null +++ b/src/boards/SensorNode/cmsis/system_stm32l1xx.h @@ -0,0 +1,104 @@ +/** + ****************************************************************************** + * @file system_stm32l1xx.h + * @author MCD Application Team + * @version V1.2.0 + * @date 22-February-2013 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l1xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32L1XX_H +#define __SYSTEM_STM32L1XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32L1xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32L1xx_System_Exported_types + * @{ + */ + +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L1xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32L1XX_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/gpio-board.c b/src/boards/SensorNode/gpio-board.c new file mode 100644 index 000000000..72802a517 --- /dev/null +++ b/src/boards/SensorNode/gpio-board.c @@ -0,0 +1,385 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board GPIO driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "gpio-board.h" +#include "stm32l1xx_gpio.h" + +static GpioIrqHandler *GpioIrq[16]; + +void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value ) +{ + GPIO_InitTypeDef GPIO_InitStructure; + + if( pin == NC ) + { + return; + } + + obj->portIndex = ( uint32_t ) pin >> 4; + + obj->pin = pin; + obj->pinIndex = ( 0x01 << ( obj->pin & 0x0F ) ); + + if( obj->portIndex < 6 ) + { + obj->port = ( GPIO_TypeDef * )( GPIOA_BASE + ( obj->portIndex << 10 ) ); + RCC_AHBPeriphClockCmd( ( 0x01 << obj->portIndex ), ENABLE ); + } + else if( obj->portIndex == 6 ) + { /* GPIO base address not in alphabetical order after GPIOE (cf stm32l1xx.h, line 926 ) */ + /* Access to GPIOF and GPIOG not implemented */ + obj->port = ( GPIO_TypeDef * )( GPIOH_BASE ); + RCC_AHBPeriphClockCmd( ( 0x01 << ( obj->portIndex - 1 ) ), ENABLE ); + } + + // Sets initial output value + if( mode == PIN_OUTPUT ) + { + GpioMcuWrite( obj, value ); + } + + GPIO_InitStructure.GPIO_Mode = ( GPIOMode_TypeDef )mode; + GPIO_InitStructure.GPIO_OType = ( GPIOOType_TypeDef )config; + GPIO_InitStructure.GPIO_PuPd = ( GPIOPuPd_TypeDef )type; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; + GPIO_InitStructure.GPIO_Pin = obj->pinIndex; + GPIO_Init( obj->port, &GPIO_InitStructure ); +} + +void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + if( irqHandler == NULL ) + { + return; + } + + GpioIrq[obj->pin & 0x0F] = irqHandler; + + /* Enable SYSCFG clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + /* Connect EXTI Line to GPIO pin */ + SYSCFG_EXTILineConfig( obj->portIndex, ( ( obj->pin ) & 0x0F ) ); + + /* Configure EXTI line */ + EXTI_InitStructure.EXTI_Line = ( 0x01 << ( obj->pin & 0x0F ) ); + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + + if( irqMode == IRQ_RISING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + } + else if( irqMode == IRQ_FALLING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + } + else if( irqMode == IRQ_RISING_FALLING_EDGE ) + { + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + } + else + { + while( 1 ); + } + + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + + if( ( ( obj->pin ) & 0x0F ) < 5 ) + { + NVIC_InitStructure.NVIC_IRQChannel = ( ( obj->pin ) & 0x0F ) + 6; + } + else if( ( ( obj->pin ) & 0x0F ) < 10 ) + { + NVIC_InitStructure.NVIC_IRQChannel = 23; + } + else if( ( ( obj->pin ) & 0x0F ) < 16 ) + { + NVIC_InitStructure.NVIC_IRQChannel = 40; + } + else + { + while( 1 ); + } + + if( irqPriority == IRQ_VERY_LOW_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_LOW_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 12; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_MEDIUM_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_HIGH_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else if( irqPriority == IRQ_VERY_HIGH_PRIORITY ) + { + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + } + else + { + while( 1 ); + } + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + +} + +void GpioMcuRemoveInterrupt( Gpio_t *obj ) +{ + EXTI_InitTypeDef EXTI_InitStructure; + + GpioIrq[obj->pin & 0x0F] = NULL; + + EXTI_InitStructure.EXTI_Line = ( 0x01 << ( obj->pin & 0x0F ) ); + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); +} + +void GpioMcuWrite( Gpio_t *obj, uint32_t value ) +{ + if( ( obj == NULL ) || ( obj->port == NULL ) ) + { + while( 1 ); + } + // Check if pin is not connected + if( obj->pin == NC ) + { + return; + } + if( value == 0 ) + { + GPIO_ResetBits( obj->port, obj->pinIndex ); + } + else + { + GPIO_SetBits( obj->port, obj->pinIndex ); + } +} + +uint32_t GpioMcuRead( Gpio_t *obj ) +{ + if( obj == NULL ) + { + while( 1 ); + } + // Check if pin is not connected + if( obj->pin == NC ) + { + return 0; + } + return GPIO_ReadInputDataBit( obj->port, obj->pinIndex ); +} + +void EXTI0_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line0 ) != RESET ) + { + if( GpioIrq[0] != NULL ) + { + GpioIrq[0]( ); + } + EXTI_ClearITPendingBit( EXTI_Line0 ); + } +} + +void EXTI1_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line1 ) != RESET ) + { + if( GpioIrq[1] != NULL ) + { + GpioIrq[1]( ); + } + EXTI_ClearITPendingBit( EXTI_Line1 ); + } +} + +void EXTI2_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line2 ) != RESET ) + { + if( GpioIrq[2] != NULL ) + { + GpioIrq[2]( ); + } + EXTI_ClearITPendingBit( EXTI_Line2 ); + } +} + +void EXTI3_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line3 ) != RESET ) + { + if( GpioIrq[3] != NULL ) + { + GpioIrq[3]( ); + } + EXTI_ClearITPendingBit( EXTI_Line3 ); + } +} + +void EXTI4_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line4 ) != RESET ) + { + if( GpioIrq[4] != NULL ) + { + GpioIrq[4]( ); + } + EXTI_ClearITPendingBit( EXTI_Line4 ); + } +} + +void EXTI9_5_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line5 ) != RESET ) + { + if( GpioIrq[5] != NULL ) + { + GpioIrq[5]( ); + } + EXTI_ClearITPendingBit( EXTI_Line5 ); + } + + if( EXTI_GetITStatus( EXTI_Line6 ) != RESET ) + { + if( GpioIrq[6] != NULL ) + { + GpioIrq[6]( ); + } + EXTI_ClearITPendingBit( EXTI_Line6 ); + } + + if( EXTI_GetITStatus( EXTI_Line7 ) != RESET ) + { + if( GpioIrq[7] != NULL ) + { + GpioIrq[7]( ); + } + EXTI_ClearITPendingBit( EXTI_Line7 ); + } + + if( EXTI_GetITStatus( EXTI_Line8 ) != RESET ) + { + if( GpioIrq[8] != NULL ) + { + GpioIrq[8]( ); + } + EXTI_ClearITPendingBit( EXTI_Line8 ); + } + + if( EXTI_GetITStatus( EXTI_Line9 ) != RESET ) + { + if( GpioIrq[9] != NULL ) + { + GpioIrq[9]( ); + } + EXTI_ClearITPendingBit( EXTI_Line9 ); + } +} + +void EXTI15_10_IRQHandler( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + RtcRecoverMcuStatus( ); +#endif + if( EXTI_GetITStatus( EXTI_Line10 ) != RESET ) + { + if( GpioIrq[10] != NULL ) + { + GpioIrq[10]( ); + } + EXTI_ClearITPendingBit( EXTI_Line10 ); + } + + if( EXTI_GetITStatus( EXTI_Line11 ) != RESET ) + { + if( GpioIrq[11] != NULL ) + { + GpioIrq[11]( ); + } + EXTI_ClearITPendingBit( EXTI_Line11 ); + } + + if( EXTI_GetITStatus( EXTI_Line12 ) != RESET ) + { + if( GpioIrq[12] != NULL ) + { + GpioIrq[12]( ); + } + EXTI_ClearITPendingBit( EXTI_Line12 ); + } + + if( EXTI_GetITStatus( EXTI_Line13 ) != RESET ) + { + if( GpioIrq[13] != NULL ) + { + GpioIrq[13]( ); + } + EXTI_ClearITPendingBit( EXTI_Line13 ); + } + + if( EXTI_GetITStatus( EXTI_Line14 ) != RESET ) + { + if( GpioIrq[14] != NULL ) + { + GpioIrq[14]( ); + } + EXTI_ClearITPendingBit( EXTI_Line14 ); + } + + if( EXTI_GetITStatus( EXTI_Line15 ) != RESET ) + { + if( GpioIrq[15] != NULL ) + { + GpioIrq[15]( ); + } + EXTI_ClearITPendingBit( EXTI_Line15 ); + } +} diff --git a/src/boards/SensorNode/gpio-board.h b/src/boards/SensorNode/gpio-board.h new file mode 100644 index 000000000..4fc0843ac --- /dev/null +++ b/src/boards/SensorNode/gpio-board.h @@ -0,0 +1,67 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board GPIO driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __GPIO_MCU_H__ +#define __GPIO_MCU_H__ + +/*! + * \brief Initializes the given GPIO object + * + * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] pin Pin name ( please look in pinName-board.h file ) + * \param [IN] mode Pin mode [PIN_INPUT, PIN_OUTPUT, + * PIN_ALTERNATE_FCT, PIN_ANALOGIC] + * \param [IN] config Pin config [PIN_PUSH_PULL, PIN_OPEN_DRAIN] + * \param [IN] type Pin type [PIN_NO_PULL, PIN_PULL_UP, PIN_PULL_DOWN] + * \param [IN] value Default output value at initialisation + */ +void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value ); + +/*! + * \brief GPIO IRQ Initialization + * + * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] irqMode IRQ mode [NO_IRQ, IRQ_RISING_EDGE, + * IRQ_FALLING_EDGE, IRQ_RISING_FALLING_EDGE] + * \param [IN] irqPriority IRQ priority [IRQ_VERY_LOW_PRIORITY, IRQ_LOW_PRIORITY + * IRQ_MEDIUM_PRIORITY, IRQ_HIGH_PRIORITY + * IRQ_VERY_HIGH_PRIORITY] + * \param [IN] irqHandler Callback function pointer + */ +void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler ); + +/*! + * \brief GPIO IRQ DeInitialization + * + * \param [IN] obj Pointer to the GPIO object to be Deinitialized + */ +void GpioMcuRemoveInterrupt( Gpio_t *obj ); + +/*! + * \brief Writes the given value to the GPIO output + * + * \param [IN] obj Pointer to the GPIO object + * \param [IN] value New GPIO output value + */ +void GpioMcuWrite( Gpio_t *obj, uint32_t value ); + +/*! + * \brief Reads the current GPIO input value + * + * \param [IN] obj Pointer to the GPIO object + * \retval value Current GPIO input value + */ +uint32_t GpioMcuRead( Gpio_t *obj ); + +#endif // __GPIO_MCU_H__ diff --git a/src/boards/SensorNode/gps-board.c b/src/boards/SensorNode/gps-board.c new file mode 100644 index 000000000..5fee1b620 --- /dev/null +++ b/src/boards/SensorNode/gps-board.c @@ -0,0 +1,79 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Generic low level driver for GPS receiver + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" + +/*! + * FIFO buffers size + */ +//#define FIFO_TX_SIZE 128 +#define FIFO_RX_SIZE 128 + +//uint8_t TxBuffer[FIFO_TX_SIZE]; +uint8_t RxBuffer[FIFO_RX_SIZE]; + +int8_t NmeaString[128]; +uint8_t NmeaStringSize = 0; + +void GpsMcuOnPpsSignal( void ) +{ + bool parseData = false; + + GpsPpsHandler( &parseData); + + if( parseData == true ) + { + UartInit( &Uart1, UART_1, UART_TX, UART_RX ); + UartConfig( &Uart1, RX_ONLY, 115200, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL ); + } +} + +void GpsMcuInit( void ) +{ + NmeaStringSize = 0; + + //FifoInit( &Uart1.FifoTx, TxBuffer, FIFO_TX_SIZE ); + FifoInit( &Uart1.FifoRx, RxBuffer, FIFO_RX_SIZE ); + Uart1.IrqNotify = GpsMcuIrqNotify; + + //GpioWrite( &GpsPowerEn, 1 ); // power down the GPS + GpioWrite( &GpsPowerEn, 0 ); // power up the GPS + GpioInit( &GpsPps, GPS_PPS, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioSetInterrupt( &GpsPps, IRQ_FALLING_EDGE, IRQ_VERY_LOW_PRIORITY, &GpsMcuOnPpsSignal ); +} + +void GpsMcuIrqNotify( UartNotifyId_t id ) +{ + uint8_t data; + if( id == UART_NOTIFY_RX ) + { + if( UartGetChar( &Uart1, &data ) == 0 ) + { + if( ( data == '$' ) || ( NmeaStringSize >= 128 ) ) + { + NmeaStringSize = 0; + } + + NmeaString[NmeaStringSize++] = ( int8_t )data; + + if( data == '\n' ) + { + NmeaString[NmeaStringSize] = '\0'; + GpsParseGpsData( NmeaString, NmeaStringSize ); + UartDeInit( &Uart1 ); + BlockLowPowerDuringTask ( false ); + } + } + } +} diff --git a/src/boards/SensorNode/gps-board.h b/src/boards/SensorNode/gps-board.h new file mode 100644 index 000000000..cc20df507 --- /dev/null +++ b/src/boards/SensorNode/gps-board.h @@ -0,0 +1,33 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Generic driver for GPS receiver + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __GPS_BOARD_H__ +#define __GPS_BOARD_H__ + +/*! + * \brief Low level handling of the PPS signal from the GPS receiver + */ +void GpsMcuOnPpsSignal( void ); + +/*! + * \brief Low level Initialisation of the UART and IRQ for the GPS + */ +void GpsMcuInit( void ); + +/*! + * \brief IRQ handler for the UART receiver + */ +void GpsMcuIrqNotify( UartNotifyId_t id ); + +#endif // __GPS_BOARD_H__ diff --git a/src/boards/SensorNode/i2c-board.c b/src/boards/SensorNode/i2c-board.c new file mode 100644 index 000000000..de1bdf280 --- /dev/null +++ b/src/boards/SensorNode/i2c-board.c @@ -0,0 +1,458 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board I2C driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "i2c-board.h" + +/*! + * The value of the maximal timeout for I2C waiting loops + */ +#define TIMEOUT_MAX 0x8000 + +/*! + * MCU I2C peripherals enumeration + */ +typedef enum { + I2C_1 = ( uint32_t )I2C1_BASE, + I2C_2 = ( uint32_t )I2C2_BASE, +} I2cName; + +void I2cMcuInit( I2c_t *obj, PinNames scl, PinNames sda ) +{ + obj->I2c = ( I2C_TypeDef * )I2C1_BASE; + + RCC_APB1PeriphClockCmd( RCC_APB1Periph_I2C1, ENABLE ); + + I2C_DeInit( obj->I2c ); + + GpioInit( &obj->Scl, scl, PIN_ALTERNATE_FCT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &obj->Sda, sda, PIN_ALTERNATE_FCT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + + GPIO_PinAFConfig( obj->Scl.port, ( obj->Scl.pin & 0x0F ), GPIO_AF_I2C1 ); + GPIO_PinAFConfig( obj->Sda.port, ( obj->Sda.pin & 0x0F ), GPIO_AF_I2C1 ); +} + +void I2cMcuFormat( I2c_t *obj, I2cMode mode, I2cDutyCycle dutyCycle, bool I2cAckEnable, I2cAckAddrMode AckAddrMode, uint32_t I2cFrequency ) +{ + I2C_InitTypeDef I2C_InitStructure; + + if( mode == MODE_I2C ) + { + I2C_InitStructure.I2C_Mode = 0x0000; + } + else if( mode == MODE_SMBUS_DEVICE ) + { + I2C_InitStructure.I2C_Mode = 0x0002; + } + else + { + I2C_InitStructure.I2C_Mode = 0x000A; // MODE_SMBUS_HOST + } + + if( dutyCycle == I2C_DUTY_CYCLE_2 ) + { + I2C_InitStructure.I2C_DutyCycle = 0xBFFF; + } + else + { + I2C_InitStructure.I2C_DutyCycle = 0x4000; //I2C_DUTY_CYCLE_16_9 + } + + if( I2cAckEnable == true ) + { + I2C_InitStructure.I2C_Ack = 0x0400; + } + else + { + I2C_InitStructure.I2C_Ack = 0x0000; + } + + if( AckAddrMode == I2C_ACK_ADD_7_BIT ) + { + I2C_InitStructure.I2C_AcknowledgedAddress = 0x4000; + } + else + { + I2C_InitStructure.I2C_AcknowledgedAddress = 0xC000; // I2C_ACK_ADD_10_BIT + } + + if( I2cFrequency > 400000 ) + { + I2C_InitStructure.I2C_ClockSpeed = 400000; + } + else + { + I2C_InitStructure.I2C_ClockSpeed = I2cFrequency; + } + + I2C_Init( obj->I2c, &I2C_InitStructure ); + + /* I2C Peripheral Enable */ + I2C_Cmd( obj->I2c, ENABLE ); +} + +void I2cMcuDeInit( I2c_t *obj ) +{ + I2C_DeInit( obj->I2c ); + + GpioInit( &obj->Scl, obj->Scl.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Sda, obj->Sda.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ) +{ + uint32_t timeOut; + + __disable_irq( ); + + /* Test on BUSY Flag */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for write */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Transmitter ); + + /* Test on EV6 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( ( addr & 0xFF00 ) != 0x0000 ) + { + /* Send the device's internal address MSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( ( addr & 0xFF00 ) >> 8 ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } + + /* Send the device's internal address LSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( addr & 0x00FF ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + while( size ) + { + /* Send the byte to be written */ + I2C_SendData( obj->I2c, *buffer ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( size == 1 ) + { + I2C_GenerateSTOP( obj->I2c, ENABLE ); + + /* Wait to make sure that STOP control bit has been cleared */ + timeOut = TIMEOUT_MAX; + while(obj->I2c->CR1 & I2C_CR1_STOP) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } /* STOP */ + + buffer++; + size--; + } + + __enable_irq( ); + return( SUCCESS ); +} + +uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ) +{ + uint32_t timeOut; + + __disable_irq( ); + + /* Test on BUSY Flag */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BUSY ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for write */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Transmitter ); + + /* Test on EV6 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( ( addr & 0xFF00 ) != 0x0000 ) + { + /* Send the device's internal address MSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( ( addr & 0xFF00 ) >> 8 ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + } + + /* Send the device's internal address LSB to write to */ + I2C_SendData( obj->I2c, ( uint8_t )( addr & 0x00FF ) ); + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_BYTE_TRANSMITTING ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Test on EV8 and clear it */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_BTF ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send START condition a second time */ + I2C_GenerateSTART( obj->I2c, ENABLE ); + + /* Test on EV5 and clear it */ + timeOut = TIMEOUT_MAX; + while( !I2C_CheckEvent( obj->I2c, I2C_EVENT_MASTER_MODE_SELECT ) ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Send device's address for read */ + I2C_Send7bitAddress( obj->I2c, deviceAddr, I2C_Direction_Receiver ); + + if( size < 2 ) + { + /* Wait on ADDR flag to be set (ADDR is still not cleared at this level */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_ADDR ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Disable Acknowledgement */ + I2C_AcknowledgeConfig( obj->I2c, DISABLE ); + + /* Clear ADDR register by reading SR1 then SR2 register (SR1 has already been read) */ + (void)obj->I2c->SR2; + + /* Send STOP Condition */ + I2C_GenerateSTOP( obj->I2c, ENABLE ); + + /* Wait for the byte to be received */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_RXNE ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + /* Read a byte from the device */ + *buffer = I2C_ReceiveData( obj->I2c ); + + /* Decrement the read bytes counter */ + size--; + } + else + { + while( size ) + { + /* Wait for the byte to be received */ + timeOut = TIMEOUT_MAX; + while( I2C_GetFlagStatus( obj->I2c, I2C_FLAG_RXNE ) == RESET ) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + + if( size == 1 ) + { + /* Disable Acknowledgement */ + I2C_AcknowledgeConfig( obj->I2c, DISABLE ); + + /* Send STOP Condition */ + I2C_GenerateSTOP( obj->I2c, ENABLE ); + } + + /* Read a byte from the device */ + *buffer = I2C_ReceiveData( obj->I2c ); + + /* Point to the next location where the byte read will be saved */ + buffer++; + + /* Decrement the read bytes counter */ + size--; + } + + /* Wait to make sure that STOP control bit has been cleared */ + timeOut = TIMEOUT_MAX; + while(obj->I2c->CR1 & I2C_CR1_STOP) + { + if( ( timeOut-- ) == 0 ) + { + I2cResetBus( obj ); + + __enable_irq( ); + return( FAIL ); + } + } + /*!< Re-Enable Acknowledgement to be ready for another reception */ + I2C_AcknowledgeConfig( obj->I2c, ENABLE ); + } + + __enable_irq( ); + return( SUCCESS ); +} diff --git a/src/boards/SensorNode/i2c-board.h b/src/boards/SensorNode/i2c-board.h new file mode 100644 index 000000000..f09d3529e --- /dev/null +++ b/src/boards/SensorNode/i2c-board.h @@ -0,0 +1,96 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board I2C driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __I2C_MCU_H__ +#define __I2C_MCU_H__ + +/*! + * Operation Mode for the I2C + */ +typedef enum +{ + MODE_I2C = 0, + MODE_SMBUS_DEVICE, + MODE_SMBUS_HOST +}I2cMode; + +/*! + * I2C signal duty cycle + */ +typedef enum +{ + I2C_DUTY_CYCLE_2 = 0, + I2C_DUTY_CYCLE_16_9 +}I2cDutyCycle; + +/*! + * I2C select if the acknowledge in after the 7th or 10th bit + */ +typedef enum +{ + I2C_ACK_ADD_7_BIT = 0, + I2C_ACK_ADD_10_BIT +}I2cAckAddrMode; + +/*! + * \brief Initializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + * \param [IN] scl I2C Scl pin name to be used + * \param [IN] sda I2C Sda pin name to be used + */ +void I2cMcuInit( I2c_t *obj, PinNames scl, PinNames sda ); + +/*! + * \brief Initializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + * \param [IN] mode Mode of operation for the I2C Bus + * \param [IN] dutyCycle Signal duty cycle + * \param [IN] I2cAckEnable Enable or Disable to ack + * \param [IN] AckAddrMode 7bit or 10 bit addressing + * \param [IN] I2cFrequency I2C bus clock frequency + */ +void I2cMcuFormat( I2c_t *obj, I2cMode mode, I2cDutyCycle dutyCycle, bool I2cAckEnable, I2cAckAddrMode AckAddrMode, uint32_t I2cFrequency ); + +/*! + * \brief DeInitializes the I2C object and MCU peripheral + * + * \param [IN] obj I2C object + */ +void I2cMcuDeInit( I2c_t *obj ); + +/*! + * \brief Write several data to the I2C device + * + * \param [IN] obj I2C object + * \param [IN] deviceAddr device address + * \param [IN] addr register address + * \param [IN] buffer data buffer to write + * \param [IN] size number of data byte to write + */ +uint8_t I2cMcuWriteBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ); + +/*! + * \brief Read several data byte from the I2C device + * + * \param [IN] obj I2C object + * \param [IN] deviceAddr device address + * \param [IN] addr register address + * \param [IN] buffer data buffer used to store the data read + * \param [IN] size number of data byte to read + */ +uint8_t I2cMcuReadBuffer( I2c_t *obj, uint8_t deviceAddr, uint16_t addr, uint8_t *buffer, uint16_t size ); + +#endif // __I2C_MCU_H__ diff --git a/src/boards/SensorNode/pinName-board.h b/src/boards/SensorNode/pinName-board.h new file mode 100644 index 000000000..4a66023bb --- /dev/null +++ b/src/boards/SensorNode/pinName-board.h @@ -0,0 +1,30 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper STM32L151RD microcontroller pins definition + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __PIN_NAME_MCU_H__ +#define __PIN_NAME_MCU_H__ + +/*! + * STM32 Pin Names + */ +#define MCU_PINS \ + PA_0 = 0, PA_1, PA_2, PA_3, PA_4, PA_5, PA_6, PA_7, PA_8, PA_9, PA_10, PA_11, PA_12, PA_13, PA_14, PA_15, \ + PB_0, PB_1, PB_2, PB_3, PB_4, PB_5, PB_6, PB_7, PB_8, PB_9, PB_10, PB_11, PB_12, PB_13, PB_14, PB_15, \ + PC_0, PC_1, PC_2, PC_3, PC_4, PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12, PC_13, PC_14, PC_15, \ + PD_0, PD_1, PD_2, PD_3, PD_4, PD_5, PD_6, PD_7, PD_8, PD_9, PD_10, PD_11, PD_12, PD_13, PD_14, PD_15, \ + PE_0, PE_1, PE_2, PE_3, PE_4, PE_5, PE_6, PE_7, PE_8, PE_9, PE_10, PE_11, PE_12, PE_13, PE_14, PE_15, \ + PF_0, PF_1, PF_2, PF_3, PF_4, PF_5, PF_6, PF_7, PF_8, PF_9, PF_10, PF_11, PF_12, PF_13, PF_14, PF_15, \ + PH_0, PH_1, PH_2, PH_3, PH_4, PH_5, PH_6, PH_7, PH_8, PH_9, PH_10, PH_11, PH_12, PH_13, PH_14, PH_15 + +#endif // __PIN_NAME_MCU_H__ diff --git a/src/boards/SensorNode/pinName-ioe.h b/src/boards/SensorNode/pinName-ioe.h new file mode 100644 index 000000000..531100ab9 --- /dev/null +++ b/src/boards/SensorNode/pinName-ioe.h @@ -0,0 +1,22 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper STM32L151RD microcontroller pins definition + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __PIN_NAME_IOE_H__ +#define __PIN_NAME_IOE_H__ + +// SX1509 Pin Names +#define IOE_PINS \ + IOE_0, IOE_1, IOE_2, IOE_3, IOE_4, IOE_5, IOE_6, IOE_7, \ + IOE_8, IOE_9, IOE_10, IOE_11, IOE_12, IOE_13, IOE_14, IOE_15 +#endif // __PIN_NAME_IOE_H__ diff --git a/src/boards/SensorNode/rtc-board.c b/src/boards/SensorNode/rtc-board.c new file mode 100644 index 000000000..938f507f5 --- /dev/null +++ b/src/boards/SensorNode/rtc-board.c @@ -0,0 +1,531 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include +#include "board.h" +#include "rtc-board.h" + +/*! + * RTC Time base in us + */ +#define RTC_ALARM_TIME_BASE 122.07 + +/*! + * MCU Wake Up Time + */ +#define MCU_WAKE_UP_TIME 3400 + +/*! + * \brief Configure the Rtc hardware + */ +static void RtcSetConfig( void ); + +/*! + * \brief Configure the Rtc Alarm + */ +static void RtcSetAlarmConfig( void ); + +/*! + * \brief Start the Rtc Alarm (time base 1s) + */ +static void RtcStartWakeUpAlarm( uint32_t timeoutValue ); + +/*! + * \brief Read the MCU internal Calendar value + * + * \retval Calendar value + */ +static uint64_t RtcGetCalendarValue( void ); + +/*! + * \brief Clear the RTC flags and Stop all IRQs + */ +static void RtcClearStatus( void ); + +/*! + * \brief Indicates if the RTC is already Initalized or not + */ +static bool RtcInitalized = false; + +/*! + * \brief Flag to indicate if the timestamps until the next event is long enough + * to set the MCU into low power mode + */ +static bool RtcTimerEventAllowsLowPower = false; + +/*! + * \brief Flag to disable the LowPower Mode even if the timestamps until the + * next event is long enough to allow Low Power mode + */ +static bool LowPowerDisableDuringTask = false; + +/*! + * Keep the value of the RTC timer when the RTC alarm is set + */ +static uint64_t RtcTimerContext = 0; + +/*! + * Number of seconds in a minute + */ +static const uint8_t SecondsInMinute = 60; + +/*! + * Number of seconds in an hour + */ +static const uint16_t SecondsInHour = 3600; + +/*! + * Number of seconds in a day + */ +static const uint32_t SecondsInDay = 86400; + +/*! + * Number of hours in a day + */ +static const uint8_t HoursInDay = 24; + +/*! + * Number of days in a standard year + */ +static const uint16_t DaysInYear = 365; + +/*! + * Number of days in a leap year + */ +static const uint16_t DaysInLeapYear = 366; + +/*! + * Number of days in a century + */ +static const double DaysInCentury = 36524.219; + +/*! + * Number of days in each month on a normal year + */ +static const uint8_t DaysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +/*! + * Number of days in each month on a leap year + */ +static const uint8_t DaysInMonthLeapYear[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +/*! + * Hold the previous year value to detect the turn of a century + */ +static uint8_t PreviousYear = 0; + +/*! + * Century counter + */ +static uint8_t Century = 0; + +void RtcInit( void ) +{ + if( RtcInitalized == false ) + { + RtcSetConfig( ); + RtcSetAlarmConfig( ); + RtcInitalized = true; + } +} + +static void RtcSetConfig( void ) +{ + RTC_InitTypeDef RTC_InitStructure; + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + /* Enable the PWR clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE ); + + /* Allow access to RTC */ + PWR_RTCAccessCmd( ENABLE ); + + /* Reset RTC Domain */ + RCC_RTCResetCmd( ENABLE ); + RCC_RTCResetCmd( DISABLE ); + + /* Enable the LSE OSC */ + RCC_LSEConfig( RCC_LSE_ON ); + + /* Wait till LSE is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_LSERDY ) == RESET ) + {} + + /* Select the RTC Clock Source */ + RCC_RTCCLKConfig( RCC_RTCCLKSource_LSE ); + + /* Enable the RTC Clock */ + RCC_RTCCLKCmd( ENABLE ); + + RTC_TimeStructInit( &RTC_TimeStruct ); + RTC_DateStructInit( &RTC_DateStruct ); + + RTC_SetDate( RTC_Format_BIN, &RTC_DateStruct ); + RTC_SetTime( RTC_Format_BIN, &RTC_TimeStruct ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); + + /* Configure the RTC data register and RTC prescaler */ + RTC_InitStructure.RTC_AsynchPrediv = 0x01; + RTC_InitStructure.RTC_SynchPrediv = 0x01; + RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24; + RTC_Init( &RTC_InitStructure ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); +} + +static void RtcSetAlarmConfig( void ) +{ + EXTI_InitTypeDef EXTI_InitStructure; + RTC_AlarmTypeDef RTC_AlarmStructure; + NVIC_InitTypeDef NVIC_InitStructure; + + /* EXTI configuration */ + EXTI_ClearITPendingBit( EXTI_Line17 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line17; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable the RTC Alarm Interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = RTC_Alarm_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Set the alarmA Masks */ + RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay; + RTC_SetAlarm( RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure ); + + /* Enable AlarmA interrupt */ + RTC_ITConfig( RTC_IT_ALRA, DISABLE ); + + /* Enable the alarmA */ + RTC_AlarmCmd( RTC_Alarm_A, DISABLE ); +} + +void RtcStopTimer( void ) +{ + RtcClearStatus( ); +} + +uint32_t RtcGetMinimumTimeout( void ) +{ + return( ceil( 3 * RTC_ALARM_TIME_BASE ) ); +} + +void RtcSetTimeout( uint32_t timeout ) +{ + uint32_t timeoutValue = 0; + + timeoutValue = timeout; + + if( timeoutValue < ( 3 * RTC_ALARM_TIME_BASE ) ) + { + timeoutValue = 3 * RTC_ALARM_TIME_BASE; + } + + if( timeoutValue < 55000 ) + { + // we don't go in Low Power mode for delay below 50ms (needed for LEDs) + RtcTimerEventAllowsLowPower = false; + } + else + { + RtcTimerEventAllowsLowPower = true; + } + + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + timeoutValue = timeoutValue - MCU_WAKE_UP_TIME; + } + + RtcStartWakeUpAlarm( timeoutValue ); +} + + +uint32_t RtcGetTimerElapsedTime( void ) +{ + uint64_t CalendarValue = 0; + + CalendarValue = RtcGetCalendarValue( ); + + return( ( uint32_t )( ceil ( ( ( CalendarValue - RtcTimerContext ) + 2 ) * RTC_ALARM_TIME_BASE ) ) ); +} + +uint64_t RtcGetTimerValue( void ) +{ + uint64_t CalendarValue = 0; + + CalendarValue = RtcGetCalendarValue( ); + + return( ( CalendarValue + 2 ) * RTC_ALARM_TIME_BASE ); +} + +static void RtcClearStatus( void ) +{ + /* Clear RTC Alarm Flag */ + RTC_ClearFlag(RTC_FLAG_ALRAF); + + /* Enable RTC Alarm A Interrupt */ + RTC_ITConfig( RTC_IT_ALRA, DISABLE ); + + /* Enable the Alarm A */ + RTC_AlarmCmd( RTC_Alarm_A, DISABLE ); +} + +static void RtcStartWakeUpAlarm( uint32_t timeoutValue ) +{ + uint16_t rtcSeconds = 0; + uint16_t rtcMinutes = 0; + uint16_t rtcHours = 0; + uint16_t rtcDays = 0; + + uint8_t rtcAlarmSeconds = 0; + uint8_t rtcAlarmMinutes = 0; + uint8_t rtcAlarmHours = 0; + uint16_t rtcAlarmDays = 0; + + RTC_AlarmTypeDef RTC_AlarmStructure; + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + RtcClearStatus( ); + + RtcTimerContext = RtcGetCalendarValue( ); + RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); + RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); + + timeoutValue = timeoutValue / RTC_ALARM_TIME_BASE; + + rtcSeconds = ( timeoutValue % SecondsInMinute ) + RTC_TimeStruct.RTC_Seconds; + rtcMinutes = ( ( timeoutValue / SecondsInMinute ) % SecondsInMinute ) + RTC_TimeStruct.RTC_Minutes; + rtcHours = ( ( timeoutValue / SecondsInHour ) % HoursInDay ) + RTC_TimeStruct.RTC_Hours; + rtcDays = ( timeoutValue / SecondsInDay ) + RTC_DateStruct.RTC_Date; + + rtcAlarmSeconds = ( rtcSeconds ) % 60; + rtcAlarmMinutes = ( ( rtcSeconds / 60 ) + rtcMinutes ) % 60; + rtcAlarmHours = ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) % 24; + rtcAlarmDays = ( ( ( ( ( rtcSeconds / 60 ) + rtcMinutes ) / 60 ) + rtcHours ) / 24 ) + rtcDays; + + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + { + if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ] ) + { + rtcAlarmDays = rtcAlarmDays % DaysInMonthLeapYear[ RTC_DateStruct.RTC_Month - 1 ]; + } + } + else + { + if( rtcAlarmDays > DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ] ) + { + rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.RTC_Month - 1 ]; + } + } + + RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = rtcAlarmSeconds; + RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = rtcAlarmMinutes; + RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = rtcAlarmHours; + RTC_AlarmStructure.RTC_AlarmDateWeekDay = ( uint8_t )rtcAlarmDays; + RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_TimeStruct.RTC_H12; + RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; + RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_None; + RTC_SetAlarm( RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure ); + + /* Wait for RTC APB registers synchronisation */ + RTC_WaitForSynchro( ); + + /* Enable RTC Alarm A Interrupt */ + RTC_ITConfig( RTC_IT_ALRA, ENABLE ); + + /* Enable the Alarm A */ + RTC_AlarmCmd( RTC_Alarm_A, ENABLE ); +} + +void RtcEnterLowPowerStopMode( void ) +{ + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + // Disable IRQ while the MCU is being deinitialized to prevent race issues + __disable_irq( ); + + BoardDeInitMcu( ); + + __enable_irq( ); + + /* Disable the Power Voltage Detector */ + PWR_PVDCmd( DISABLE ); + + /* Set MCU in ULP (Ultra Low Power) */ + PWR_UltraLowPowerCmd( ENABLE ); + + /*Disable fast wakeUp*/ + PWR_FastWakeUpCmd( DISABLE ); + + /* Enter Stop Mode */ + PWR_EnterSTOPMode( PWR_Regulator_LowPower, PWR_STOPEntry_WFI ); + } +} + +void RtcRecoverMcuStatus( void ) +{ +#ifdef LOW_POWER_MODE_ENABLE + if( ( LowPowerDisableDuringTask == false ) && ( RtcTimerEventAllowsLowPower == true ) ) + { + // Disable IRQ while the MCU is not running on HSE + __disable_irq( ); + + /* After wake-up from STOP reconfigure the system clock */ + /* Enable HSE */ + RCC_HSEConfig( RCC_HSE_ON ); + + /* Wait till HSE is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET ) + {} + + /* Enable PLL */ + RCC_PLLCmd( ENABLE ); + + /* Wait till PLL is ready */ + while( RCC_GetFlagStatus( RCC_FLAG_PLLRDY ) == RESET ) + {} + + /* Select PLL as system clock source */ + RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK ); + + /* Wait till PLL is used as system clock source */ + while( RCC_GetSYSCLKSource( ) != 0x0C ) + {} + + /* Set MCU in ULP (Ultra Low Power) */ + PWR_UltraLowPowerCmd( DISABLE ); // add up to 3ms wakeup time + + /* Enable the Power Voltage Detector */ + PWR_PVDCmd( ENABLE ); + + BoardInitMcu( ); + + __enable_irq( ); + } +#endif +} + +/*! + * \brief RTC IRQ Handler on the RTC Alarm + */ +void RTC_Alarm_IRQHandler( void ) +{ + if( RTC_GetITStatus( RTC_IT_ALRA ) != RESET ) + { + RtcRecoverMcuStatus( ); + + TimerIrqHandler( ); + + RTC_ClearITPendingBit( RTC_IT_ALRA ); + EXTI_ClearITPendingBit( EXTI_Line17 ); + } +} + +void BlockLowPowerDuringTask( bool status ) +{ + if( status == true ) + { + RtcRecoverMcuStatus( ); + } + LowPowerDisableDuringTask = status; +} + +void RtcDelayMs( uint32_t delay ) +{ + uint64_t delayValue = 0; + uint64_t timeout = 0; + + delayValue = ( uint64_t )( delay * 1000 ); + + // Wait delay ms + timeout = RtcGetTimerValue( ); + while( ( ( RtcGetTimerValue( ) - timeout ) ) < delayValue ) + { + __NOP( ); + } +} + +uint64_t RtcGetCalendarValue( void ) +{ + uint64_t calendarValue = 0; + uint8_t i = 0; + + RTC_TimeTypeDef RTC_TimeStruct; + RTC_DateTypeDef RTC_DateStruct; + + RTC_GetTime( RTC_Format_BIN, &RTC_TimeStruct ); + RTC_GetDate( RTC_Format_BIN, &RTC_DateStruct ); + + RTC_WaitForSynchro( ); + + if( ( PreviousYear == 99 ) && ( RTC_DateStruct.RTC_Year == 0 ) ) + { + Century++; + } + PreviousYear = RTC_DateStruct.RTC_Year; + + // century + for( i = 0; i < Century; i++ ) + { + calendarValue += ( uint64_t )( DaysInCentury * SecondsInDay ); + } + + // years + for( i = 0; i < RTC_DateStruct.RTC_Year; i++ ) + { + if( ( i == 0 ) || ( i % 4 == 0 ) ) + { + calendarValue += DaysInLeapYear * SecondsInDay; + } + else + { + calendarValue += DaysInYear * SecondsInDay; + } + } + + // months + if( ( RTC_DateStruct.RTC_Year == 0 ) || ( RTC_DateStruct.RTC_Year % 4 == 0 ) ) + { + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) + { + calendarValue += DaysInMonthLeapYear[i] * SecondsInDay; + } + } + else + { + for( i = 0; i < ( RTC_DateStruct.RTC_Month - 1 ); i++ ) + { + calendarValue += DaysInMonth[i] * SecondsInDay; + } + } + + // days + calendarValue += ( ( uint32_t )RTC_TimeStruct.RTC_Seconds + + ( ( uint32_t )RTC_TimeStruct.RTC_Minutes * SecondsInMinute ) + + ( ( uint32_t )RTC_TimeStruct.RTC_Hours * SecondsInHour ) + + ( ( uint32_t )( RTC_DateStruct.RTC_Date * SecondsInDay ) ) ); + + return( calendarValue ); +} diff --git a/src/boards/SensorNode/rtc-board.h b/src/boards/SensorNode/rtc-board.h new file mode 100644 index 000000000..15fb12730 --- /dev/null +++ b/src/boards/SensorNode/rtc-board.h @@ -0,0 +1,84 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __RTC_BOARD_H__ +#define __RTC_BOARD_H__ + +/*! + * \brief Initializes the RTC timer + * + * \remark The timer is based on the RTC + */ +void RtcInit( void ); + +/*! + * \brief Stop the RTC Timer + */ +void RtcStopTimer( void ); + +/*! + * \brief Return the minimum timeout the RTC is able to handle + * + * \retval minimum value for a timeout + */ +uint32_t RtcGetMinimumTimeout( void ); + +/*! + * \brief Start the RTC timer + * + * \remark The timer is based on the RTC Alarm running at 32.768KHz + * + * \param[IN] timeout Duration of the Timer + */ +void RtcSetTimeout( uint32_t timeout ); + +/*! + * \brief Get the RTC timer value + * + * \retval RTC Timer value + */ +uint64_t RtcGetTimerValue( void ); + +/*! + * \brief Get the RTC timer elapsed time since the last Alarm was set + * + * \retval RTC Elapsed time since the last alarm + */ +uint32_t RtcGetTimerElapsedTime( void ); + +/*! + * \brief This function block the MCU from going into Low Power mode + * + * \param [IN] Status enable or disable + */ +void BlockLowPowerDuringTask ( bool Status ); + +/*! + * \brief Sets the MCU in low power STOP mode + */ +void RtcEnterLowPowerStopMode( void ); + +/*! + * \brief Restore the MCU to its normal operation mode + */ +void RtcRecoverMcuStatus( void ); + +/*! + * \brief Perfoms a standard blocking delay in the code execution + * + * \param [IN] delay Delay value in ms + */ +void RtcDelayMs ( uint32_t delay ); + +#endif // __RTC_BOARD_H__ diff --git a/src/boards/SensorNode/spi-board.c b/src/boards/SensorNode/spi-board.c new file mode 100644 index 000000000..fca091683 --- /dev/null +++ b/src/boards/SensorNode/spi-board.c @@ -0,0 +1,144 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board SPI driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "spi-board.h" +#include "stm32l1xx_spi.h" +#include "stm32l1xx_gpio.h" + +/*! + * MCU SPI peripherals enumeration + */ +typedef enum { + SPI_1 = ( uint32_t )SPI1_BASE, + SPI_2 = ( uint32_t )SPI2_BASE, + SPI_3 = ( uint32_t )SPI3_BASE, +} SPIName; + +SPI_InitTypeDef SPI_InitStructure; + +void SpiInit( Spi_t *obj, PinNames mosi, PinNames miso, PinNames sclk, PinNames nss ) +{ + GpioInit( &obj->Mosi, mosi, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Miso, miso, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Sclk, sclk, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + + // TODO: Make independent of stm32l1xx_gpio.h + GPIO_PinAFConfig( obj->Mosi.port, ( obj->Mosi.pin & 0x0F ), GPIO_AF_SPI1 ); + GPIO_PinAFConfig( obj->Miso.port, ( obj->Miso.pin & 0x0F ), GPIO_AF_SPI1 ); + GPIO_PinAFConfig( obj->Sclk.port, ( obj->Sclk.pin & 0x0F ), GPIO_AF_SPI1 ); + + if( nss != NC ) + { + GpioInit( &obj->Nss, nss, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + // TODO: Make independent of stm32l1xx_gpio.h + GPIO_PinAFConfig( obj->Nss.port, ( obj->Nss.pin & 0x0F ), GPIO_AF_SPI1 ); + } + else + { + SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; + } + + // Choose SPI interface according to the given pins + obj->Spi = ( SPI_TypeDef* )SPI1_BASE; + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE ); + + if( nss == NC ) + { + // 8 bits, CPOL = 0, CPHA = 0, MASTER + SpiFormat( obj, 8, 0, 0, 0 ); + } + else + { + // 8 bits, CPOL = 0, CPHA = 0, SLAVE + SpiFormat( obj, 8, 0, 0, 1 ); + } + SpiFrequency( obj, 10000000 ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +void SpiDeInit( Spi_t *obj ) +{ + SPI_Cmd( obj->Spi, DISABLE ); + SPI_I2S_DeInit( obj->Spi ); + + GpioInit( &obj->Mosi, obj->Mosi.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Miso, obj->Miso.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); + GpioInit( &obj->Sclk, obj->Sclk.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Nss, obj->Nss.pin, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + +} + +void SpiFormat( Spi_t *obj, int8_t bits, int8_t cpol, int8_t cpha, int8_t slave ) +{ + SPI_Cmd( obj->Spi, DISABLE ); + + if( ( ( ( bits == 8 ) || ( bits == 16 ) ) == false ) || + ( ( ( cpol >= 0 ) && ( cpol <= 1 ) ) == false ) || + ( ( ( cpha >= 0 ) && ( cpha <= 1 ) ) == false ) ) + { + // SPI error + while( 1 ); + } + + SPI_InitStructure.SPI_Mode = ( slave == 0x01 ) ? SPI_Mode_Slave : SPI_Mode_Master; + SPI_InitStructure.SPI_CPOL = ( cpol == 0x01 ) ? SPI_CPOL_High : SPI_CPOL_Low; + SPI_InitStructure.SPI_CPHA = ( cpha == 0x01 ) ? SPI_CPHA_2Edge : SPI_CPHA_1Edge; + SPI_InitStructure.SPI_DataSize = ( bits == 8 ) ? SPI_DataSize_8b : SPI_DataSize_16b; + SPI_Init( obj->Spi, &SPI_InitStructure ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +void SpiFrequency( Spi_t *obj, uint32_t hz ) +{ + uint32_t divisor; + + SPI_Cmd( obj->Spi, DISABLE ); + + divisor = SystemCoreClock / hz; + + // Find the nearest power-of-2 + divisor = divisor > 0 ? divisor-1 : 0; + divisor |= divisor >> 1; + divisor |= divisor >> 2; + divisor |= divisor >> 4; + divisor |= divisor >> 8; + divisor |= divisor >> 16; + divisor++; + + divisor = __ffs( divisor ) - 1; + + divisor = ( divisor > 0x07 ) ? 0x07 : divisor; + + SPI_InitStructure.SPI_BaudRatePrescaler = divisor << 3; + SPI_Init( obj->Spi, &SPI_InitStructure ); + + SPI_Cmd( obj->Spi, ENABLE ); +} + +uint16_t SpiInOut( Spi_t *obj, uint16_t outData ) +{ + if( ( obj == NULL ) || ( obj->Spi ) == NULL ) + { + while( 1 ); + } + + while( SPI_I2S_GetFlagStatus( obj->Spi, SPI_I2S_FLAG_TXE ) == RESET ); + SPI_I2S_SendData( obj->Spi, outData ); + while( SPI_I2S_GetFlagStatus( obj->Spi, SPI_I2S_FLAG_RXNE ) == RESET ); + return SPI_I2S_ReceiveData( obj->Spi ); +} + diff --git a/src/boards/SensorNode/spi-board.h b/src/boards/SensorNode/spi-board.h new file mode 100644 index 000000000..0dfbc8408 --- /dev/null +++ b/src/boards/SensorNode/spi-board.h @@ -0,0 +1,30 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board SPI driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SPI_MCU_H__ +#define __SPI_MCU_H__ + +/*! + * SPI driver structure definition + */ +struct Spi_s +{ + SPI_TypeDef *Spi; + Gpio_t Mosi; + Gpio_t Miso; + Gpio_t Sclk; + Gpio_t Nss; +}; + +#endif // __SPI_MCU_H__ diff --git a/src/boards/SensorNode/sx1276-board.c b/src/boards/SensorNode/sx1276-board.c new file mode 100644 index 000000000..03074bb42 --- /dev/null +++ b/src/boards/SensorNode/sx1276-board.c @@ -0,0 +1,158 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: SX1276 driver specific target board functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" +#include "radio.h" +#include "sx1276/sx1276.h" +#include "sx1276-board.h" + +/*! + * Flag used to set the RF switch control pins in low power mode when the radio is not active. + */ +static bool RadioIsActive = false; + +/*! + * Radio driver structure initialization + */ +const struct Radio_s Radio = +{ + SX1276Init, + SX1276GetStatus, + SX1276SetChannel, + SX1276IsChannelFree, + SX1276Random, + SX1276SetRxConfig, + SX1276SetTxConfig, + SX1276CheckRfFrequency, + SX1276GetTimeOnAir, + SX1276Send, + SX1276SetSleep, + SX1276SetStby, + SX1276SetRx, + SX1276ReadRssi, + SX1276Write, + SX1276Read, + SX1276WriteBuffer, + SX1276ReadBuffer +}; + +/*! + * Antenna switch GPIO pins objects + */ +Gpio_t AntSwitchLf; +Gpio_t AntSwitchHf; + +void SX1276IoInit( void ) +{ + GpioInit( &SX1276.Spi.Nss, RADIO_NSS, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + + GpioInit( &SX1276.DIO0, RADIO_DIO_0, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO1, RADIO_DIO_1, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO2, RADIO_DIO_2, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO3, RADIO_DIO_3, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO4, RADIO_DIO_4, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + GpioInit( &SX1276.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, 0 ); + + SX1276AntSwInit( ); +} + +void SX1276IoIrqInit( DioIrqHandler **irqHandlers ) +{ + GpioSetInterrupt( &SX1276.DIO0, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[0] ); + GpioSetInterrupt( &SX1276.DIO1, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[1] ); + GpioSetInterrupt( &SX1276.DIO2, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[2] ); + GpioSetInterrupt( &SX1276.DIO3, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[3] ); + GpioSetInterrupt( &SX1276.DIO4, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[4] ); + GpioSetInterrupt( &SX1276.DIO5, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, irqHandlers[5] ); +} + +void SX1276IoDeInit( void ) +{ + GpioInit( &SX1276.Spi.Nss, RADIO_NSS, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + GpioInit( &SX1276.DIO0, RADIO_DIO_0, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO1, RADIO_DIO_1, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO2, RADIO_DIO_2, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO3, RADIO_DIO_3, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO4, RADIO_DIO_4, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &SX1276.DIO5, RADIO_DIO_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +uint8_t SX1276GetPaSelect( uint32_t channel ) +{ + if( channel < RF_MID_BAND_THRESH ) + { + return RF_PACONFIG_PASELECT_PABOOST; + } + else + { + return RF_PACONFIG_PASELECT_RFO; + } +} + +void SX1276SetAntSwLowPower( bool status ) +{ + if( RadioIsActive != status ) + { + RadioIsActive = status; + + if( status == false ) + { + SX1276AntSwInit( ); + } + else + { + SX1276AntSwDeInit( ); + } + } +} + +void SX1276AntSwInit( void ) +{ + GpioInit( &AntSwitchLf, RADIO_ANT_SWITCH_LF, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + GpioInit( &AntSwitchHf, RADIO_ANT_SWITCH_HF, PIN_OUTPUT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); +} + +void SX1276AntSwDeInit( void ) +{ + GpioInit( &AntSwitchLf, RADIO_ANT_SWITCH_LF, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); + GpioInit( &AntSwitchHf, RADIO_ANT_SWITCH_HF, PIN_OUTPUT, PIN_OPEN_DRAIN, PIN_NO_PULL, 0 ); +} + +void SX1276SetAntSw( uint8_t rxTx ) +{ + if( SX1276.RxTx == rxTx ) + { + return; + } + + SX1276.RxTx = rxTx; + + if( rxTx != 0 ) + { + GpioWrite( &AntSwitchLf, 0 ); + GpioWrite( &AntSwitchHf, 0 ); + } + else + { + GpioWrite( &AntSwitchLf, 1 ); + GpioWrite( &AntSwitchHf, 1 ); + } +} + +bool SX1276CheckRfFrequency( uint32_t frequency ) +{ + // Implement check. Currently all frequencies are supportted + return true; +} diff --git a/src/boards/SensorNode/sx1276-board.h b/src/boards/SensorNode/sx1276-board.h new file mode 100644 index 000000000..e9613336f --- /dev/null +++ b/src/boards/SensorNode/sx1276-board.h @@ -0,0 +1,112 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: SX1276 driver specific target board functions implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SX1276_ARCH_H__ +#define __SX1276_ARCH_H__ + +/*! + * \brief Radio hardware registers initialization definition + * + * \remark Can be automatically generated by the SX1276 GUI (not yet implemented) + */ +#define RADIO_INIT_REGISTERS_VALUE \ +{ \ + { MODEM_FSK , REG_LNA , 0x23 },\ + { MODEM_FSK , REG_RXCONFIG , 0x1E },\ + { MODEM_FSK , REG_RSSICONFIG , 0xD2 },\ + { MODEM_FSK , REG_PREAMBLEDETECT , 0xAA },\ + { MODEM_FSK , REG_OSC , 0x07 },\ + { MODEM_FSK , REG_SYNCCONFIG , 0x12 },\ + { MODEM_FSK , REG_SYNCVALUE1 , 0xC1 },\ + { MODEM_FSK , REG_SYNCVALUE2 , 0x94 },\ + { MODEM_FSK , REG_SYNCVALUE3 , 0xC1 },\ + { MODEM_FSK , REG_PACKETCONFIG1 , 0xD8 },\ + { MODEM_FSK , REG_FIFOTHRESH , 0x8F },\ + { MODEM_FSK , REG_IMAGECAL , 0x02 },\ + { MODEM_FSK , REG_DIOMAPPING1 , 0x00 },\ + { MODEM_FSK , REG_DIOMAPPING2 , 0x30 },\ + { MODEM_LORA, REG_LR_PAYLOADMAXLENGTH, 0x40 },\ +} \ + +#define RF_MID_BAND_THRESH 525000000 + +/*! + * \brief Initializes the radio I/Os pins interface + */ +void SX1276IoInit( void ); + +/*! + * \brief Initializes DIO IRQ handlers + * + * \param [IN] irqHandlers Array containing the IRQ callback functions + */ +void SX1276IoIrqInit( DioIrqHandler **irqHandlers ); + +/*! + * \brief De-initializes the radio I/Os pins interface. + * + * \remark Useful when going in MCU lowpower modes + */ +void SX1276IoDeInit( void ); + +/*! + * \brief Gets the board PA selection configuration + * + * \param [IN] channel Channel frequency in Hz + * \retval PaSelect RegPaConfig PaSelect value + */ +uint8_t SX1276GetPaSelect( uint32_t channel ); + +/*! + * \brief Set the RF Switch I/Os pins in Low Power mode + * + * \param [IN] status enable or disable + */ +void SX1276SetAntSwLowPower( bool status ); + +/*! + * \brief Initializes the RF Switch I/Os pins interface + */ +void SX1276AntSwInit( void ); + +/*! + * \brief De-initializes the RF Switch I/Os pins interface + * + * \remark Needed to decrease the power consumption in MCU lowpower modes + */ +void SX1276AntSwDeInit( void ); + +/*! + * \brief Controls the antena switch if necessary. + * + * \remark see errata note + * + * \param [IN] rxTx [1: Tx, 0: Rx] + */ +void SX1276SetAntSw( uint8_t rxTx ); + +/*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ +bool SX1276CheckRfFrequency( uint32_t frequency ); + +/*! + * Radio hardware and global parameters + */ +extern SX1276_t SX1276; + +#endif // __SX1276_ARCH_H__ diff --git a/src/boards/SensorNode/timer-board.c b/src/boards/SensorNode/timer-board.c new file mode 100644 index 000000000..61ecdc804 --- /dev/null +++ b/src/boards/SensorNode/timer-board.c @@ -0,0 +1,169 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU RTC timer and low power modes management + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include +#include "board.h" +#include "timer-board.h" + +/*! + * Hardware Time base in us + */ +#define HW_TIMER_TIME_BASE 100 //us + +/*! + * Hardware Timer tick counter + */ +volatile uint64_t TimerTickCounter = 1; + +/*! + * Saved value of the Tick counter at the start of the next event + */ +static uint64_t TimerTickCounterContext = 0; + +/*! + * Value trigging the IRQ + */ +volatile uint64_t TimeoutCntValue = 0; + +void TimerIncrementTickCounter( void ); + + +void TimerHwInit( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; + + /* TIM2 clock enable */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE ); + + /* --------------------------NVIC Configuration -------------------------------*/ + /* Enable the TIM2 gloabal Interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + + NVIC_Init( &NVIC_InitStructure ); + + TimeoutCntValue = 0; + + /* Time base configuration */ + TIM_TimeBaseStructure.TIM_Period = 3199; + TIM_TimeBaseStructure.TIM_Prescaler = 0; + TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; + TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; + TIM_TimeBaseInit( TIM2, &TIM_TimeBaseStructure ); + + TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); + + /* TIM2 disable counter */ + TIM_Cmd( TIM2, ENABLE ); +} + +void TimerHwDeInit( void ) +{ + /* Deinitialize the timer */ + TIM_DeInit( TIM2 ); +} + +uint32_t TimerHwGetMinimumTimeout( void ) +{ + return( ceil( 2 * HW_TIMER_TIME_BASE ) ); +} + +void TimerHwStart( uint32_t val ) +{ + TimerTickCounterContext = TimerHwGetTimerValue( ); + + if( val <= HW_TIMER_TIME_BASE + 1 ) + { + TimeoutCntValue = TimerTickCounterContext + 1; + } + else + { + TimeoutCntValue = TimerTickCounterContext + ( ( val - 1 ) / HW_TIMER_TIME_BASE ); + } +} + +void TimerHwStop( void ) +{ + TIM_ITConfig( TIM2, TIM_IT_CC1, DISABLE ); + TIM_Cmd( TIM2, DISABLE ); +} + +void TimerHwDelayMs( uint32_t delay ) +{ + uint64_t delayValue = 0; + uint64_t timeout = 0; + + delayValue = delay * 1000; + + timeout = TimerHwGetTimerValue( ); + + while( ( ( TimerHwGetTimerValue( ) - timeout ) * HW_TIMER_TIME_BASE ) < delayValue ) + { + } +} + +uint64_t TimerHwGetElapsedTime( void ) +{ + return( ( ( TimerHwGetTimerValue( ) - TimerTickCounterContext ) + 1 ) * HW_TIMER_TIME_BASE ); +} + +uint64_t TimerHwGetTimerValue( void ) +{ + uint64_t val = 0; + + __disable_irq( ); + + val = TimerTickCounter; + + __enable_irq( ); + + return( val ); +} + +void TimerIncrementTickCounter( void ) +{ + __disable_irq( ); + + TimerTickCounter++; + + __enable_irq( ); +} + +/*! + * Timer IRQ handler + */ +void TIM2_IRQHandler( void ) +{ + if( TIM_GetITStatus( TIM2, TIM_IT_Update ) != RESET ) + { + TimerIncrementTickCounter( ); + + if( TimerTickCounter == TimeoutCntValue ) + { + TimerIrqHandler( ); + } + + TIM_ClearITPendingBit( TIM2, TIM_IT_Update ); + } +} + +void TimerHwEnterLowPowerStopMode( void ) +{ +#ifndef USE_DEBUGGER + __WFI( ); +#endif +} diff --git a/src/boards/SensorNode/timer-board.h b/src/boards/SensorNode/timer-board.h new file mode 100644 index 000000000..2e6e494a4 --- /dev/null +++ b/src/boards/SensorNode/timer-board.h @@ -0,0 +1,71 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: MCU timer + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __TIMER_BOARD_H__ +#define __TIMER_BOARD_H__ + +/*! + * \brief Initializes the timer + * + * \remark The timer is based on TIM2 with a 10uS time basis + */ +void TimerHwInit( void ); + +/*! + * \brief DeInitializes the timer + */ +void TimerHwDeInit( void ); + +/*! + * \brief Return the minimum timeout the Timer is able to handle + * + * \retval minimum value for a timeout + */ +uint32_t TimerHwGetMinimumTimeout( void ); + +/*! + * \brief Start the Standard Timer counter + * + * \param [IN] rtcCounter Timer duration + */ +void TimerHwStart( uint32_t rtcCounter ); + +/*! + * \brief Perfoms a standard blocking delay in the code execution + * + * \param [IN] delay Delay value in ms + */ +void TimerHwDelayMs( uint32_t delay ); + +/*! + * \brief Stop the the Standard Timer counter + */ +void TimerHwStop( void ); + +/*! + * \brief Return the value on the timer counter + */ +uint64_t TimerHwGetTimerValue( void ); + +/*! + * \brief Return the value on the timer Tick counter + */ +uint64_t TimerHwGetElapsedTime( void ); + +/*! + * \brief Set the ARM core in Wait For Interrupt mode (only working if Debug mode is not used) + */ +void TimerHwEnterLowPowerStopMode( void ); + +#endif // __TIMER_BOARD_H__ diff --git a/src/boards/SensorNode/uart-board.c b/src/boards/SensorNode/uart-board.c new file mode 100644 index 000000000..332532bfd --- /dev/null +++ b/src/boards/SensorNode/uart-board.c @@ -0,0 +1,213 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "board.h" + +#include "uart-board.h" + +void UartMcuInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ) +{ + obj->UartId = uartId; + + RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE ); + + USART_DeInit( USART1 ); + + GpioInit( &obj->Tx, tx, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + GpioInit( &obj->Rx, rx, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_UP, 1 ); + + GPIO_PinAFConfig( obj->Tx.port, ( obj->Tx.pin & 0x0F ), GPIO_AF_USART1 ); + GPIO_PinAFConfig( obj->Rx.port, ( obj->Rx.pin & 0x0F ), GPIO_AF_USART1 ); +} + +void UartMcuConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ) +{ + USART_InitTypeDef USART_InitStructure; + NVIC_InitTypeDef NVIC_InitStructure; + + NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + if( mode == TX_ONLY ) + { + if( obj->FifoTx.Data == NULL ) + { + while( 1 ); + } + + USART_InitStructure.USART_Mode = 0x0008; + } + else if( mode == RX_ONLY ) + { + if( obj->FifoRx.Data == NULL ) + { + while( 1 ); + } + + USART_ITConfig( USART1, USART_IT_RXNE, ENABLE ); + USART_InitStructure.USART_Mode = 0x0004; + } + else + { + if( ( obj->FifoTx.Data == NULL ) || ( obj->FifoRx.Data == NULL ) ) + { + while( 1 ); + } + + USART_ITConfig( USART1, USART_IT_RXNE, ENABLE ); + USART_InitStructure.USART_Mode = 0x000C; + } + + USART_InitStructure.USART_BaudRate = baudrate; + + if( wordLength == UART_8_BIT ) + { + USART_InitStructure.USART_WordLength = 0x0000; + } + else + { + USART_InitStructure.USART_WordLength = 0x1000; + } + + if( stopBits == UART_1_STOP_BIT ) + { + USART_InitStructure.USART_StopBits = 0x0000; + } + else if( stopBits == UART_0_5_STOP_BIT ) + { + USART_InitStructure.USART_StopBits = 0x1000; + } + else if( stopBits == UART_2_STOP_BIT ) + { + USART_InitStructure.USART_StopBits = 0x2000; + } + else if( stopBits == UART_1_5_STOP_BIT ) + { + USART_InitStructure.USART_StopBits = 0x3000; + } + + if( parity == NO_PARITY ) + { + USART_InitStructure.USART_Parity = 0x0000; + } + else if( parity == EVEN_PARITY ) + { + USART_InitStructure.USART_Parity = 0x0400; + } + else + { + USART_InitStructure.USART_Parity = 0x0600; + } + + if( flowCtrl == NO_FLOW_CTRL ) + { + USART_InitStructure.USART_HardwareFlowControl = 0x0000; + } + else if( flowCtrl == RTS_FLOW_CTRL ) + { + USART_InitStructure.USART_HardwareFlowControl = 0x0100; + } + else if( flowCtrl == CTS_FLOW_CTRL ) + { + USART_InitStructure.USART_HardwareFlowControl = 0x0200; + } + else if( flowCtrl == RTS_CTS_FLOW_CTRL ) + { + USART_InitStructure.USART_HardwareFlowControl = 0x0300; + } + + USART_Init( USART1, &USART_InitStructure ); + + USART_Cmd( USART1, ENABLE ); +} + +void UartMcuDeInit( Uart_t *obj ) +{ + USART_DeInit( USART1 ); + + GpioInit( &obj->Tx, obj->Tx.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + GpioInit( &obj->Rx, obj->Rx.pin, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); +} + +uint8_t UartMcuPutChar( Uart_t *obj, uint8_t data ) +{ + if( IsFifoFull( &obj->FifoTx ) == false ) + { + __disable_irq( ); + FifoPush( &obj->FifoTx, data ); + __enable_irq( ); + // Enable the USART Transmit interrupt + USART_ITConfig( USART1, USART_IT_TXE, ENABLE ); + return 0; // OK + } + return 1; // Busy +} + +uint8_t UartMcuGetChar( Uart_t *obj, uint8_t *data ) +{ + if( IsFifoEmpty( &obj->FifoRx ) == false ) + { + __disable_irq( ); + *data = FifoPop( &obj->FifoRx ); + __enable_irq( ); + return 0; + } + return 1; +} + +void USART1_IRQHandler( void ) +{ + uint8_t data; + + if( USART_GetITStatus( USART1, USART_IT_TXE ) != RESET ) + { + if( IsFifoEmpty( &Uart1.FifoTx ) == false ) + { + data = FifoPop( &Uart1.FifoTx ); + // Write one byte to the transmit data register + USART_SendData( USART1, data ); + } + else + { + // Disable the USART Transmit interrupt + USART_ITConfig( USART1, USART_IT_TXE, DISABLE ); + } + if( Uart1.IrqNotify != NULL ) + { + Uart1.IrqNotify( UART_NOTIFY_TX ); + } + } + + if( USART_GetITStatus( USART1, USART_IT_ORE_RX ) != RESET ) + { + USART_ReceiveData( USART1 ); + } + + if( USART_GetITStatus( USART1, USART_IT_RXNE ) != RESET ) + { + data = USART_ReceiveData( USART1 ); + if( IsFifoFull( &Uart1.FifoRx ) == false ) + { + // Read one byte from the receive data register + FifoPush( &Uart1.FifoRx, data ); + } + if( Uart1.IrqNotify != NULL ) + { + Uart1.IrqNotify( UART_NOTIFY_RX ); + } + } +} diff --git a/src/boards/SensorNode/uart-board.h b/src/boards/SensorNode/uart-board.h new file mode 100644 index 000000000..3aa453a68 --- /dev/null +++ b/src/boards/SensorNode/uart-board.h @@ -0,0 +1,72 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __UART_MCU_H__ +#define __UART_MCU_H__ + +typedef enum +{ + UART_1, + UART_2, + UART_USB_CDC = 255, +}UartId_t; + +/*! + * \brief Initializes the UART object and MCU peripheral + * + * \param [IN] obj UART object + * \param [IN] tx UART Tx pin name to be used + * \param [IN] rx UART Rx pin name to be used + */ +void UartMcuInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ); + +/*! + * \brief Initializes the UART object and MCU peripheral + * + * \param [IN] obj UART object + * \param [IN] mode Mode of operation for the UART + * \param [IN] baudrate UART baudrate + * \param [IN] wordLength packet length + * \param [IN] stopBits stop bits setup + * \param [IN] parity packet parity + * \param [IN] flowCtrl UART flow control + */ +void UartMcuConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ); + +/*! + * \brief DeInitializes the UART object and MCU peripheral + * + * \param [IN] obj UART object + */ +void UartMcuDeInit( Uart_t *obj ); + +/*! + * \brief Sends a character to the UART + * + * \param [IN] obj UART object + * \param [IN] data Character to be sent + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartMcuPutChar( Uart_t *obj, uint8_t data ); + +/*! + * \brief Gets a character from the UART + * + * \param [IN] obj UART object + * \param [IN] data Received character + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartMcuGetChar( Uart_t *obj, uint8_t *data ); + +#endif // __UART_MCU_H__ diff --git a/src/boards/SensorNode/uart-usb-board.c b/src/boards/SensorNode/uart-usb-board.c new file mode 100644 index 000000000..2bb68ec92 --- /dev/null +++ b/src/boards/SensorNode/uart-usb-board.c @@ -0,0 +1,163 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "usb_lib.h" +#include "usb_desc.h" +#include "usb_mem.h" + +#include "board.h" + +#include "usb_istr.h" +#include "usb_pwr.h" + +#include "uart-usb-board.h" + +/*! + * FIFO buffers size + */ +#define FIFO_TX_SIZE 64 +#define FIFO_RX_SIZE 64 + +uint8_t CdcTxBuffer[FIFO_TX_SIZE]; +uint8_t CdcRxBuffer[FIFO_RX_SIZE]; + +__IO uint32_t UsbPacketTx = 1; +__IO uint8_t UsbTxBuffer[64]; +__IO uint32_t UsbTxLength; + +__IO uint8_t UsbRxBuffer[64]; +__IO uint32_t UsbRxLength; + +void UartUsbInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ) +{ + obj->UartId = uartId; +} + +void UartUsbConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ) +{ + FifoInit( &obj->FifoTx, CdcTxBuffer, FIFO_RX_SIZE ); + FifoInit( &obj->FifoRx, CdcRxBuffer, FIFO_RX_SIZE ); +} + +void UartUsbDeInit( Uart_t *obj ) +{ + +} + +uint8_t UartUsbPutChar( Uart_t *obj, uint8_t data ) +{ + if( UsbMcuIsDeviceConfigured( ) == false ) + { + return 2; + } + + if( IsFifoFull( &obj->FifoTx ) == false ) + { + __disable_irq( ); + FifoPush( &obj->FifoTx, data ); + __enable_irq( ); + + if( UsbPacketTx == 1 ) + { + /*Sent flag*/ + UsbPacketTx = 0; + SetEPTxCount( ENDP1, 0 ); + SetEPTxValid( ENDP1 ); + } + return 0; // OK + } + return 1; // Busy +// if( UsbPacketTx == 1 ) +// { +// /*Sent flag*/ +// UsbPacketTx = 0; +// /* send packet to PMA*/ +// UserToPMABufferCopy( ( unsigned char* )&data, ENDP1_TXADDR, 1 ); +// SetEPTxCount( ENDP1, 1 ); +// SetEPTxValid( ENDP1 ); +// return 0; // OK +// } +// else +// { +// if( IsFifoFull( &obj->FifoTx ) == false ) +// { +// __disable_irq( ); +// FifoPush( &obj->FifoTx, data ); +// __enable_irq( ); +// return 0; // OK +// } +// } +// return 1; // Busy +} + +uint8_t UartUsbGetChar( Uart_t *obj, uint8_t *data ) +{ + if( UsbMcuIsDeviceConfigured( ) == false ) + { + return 2; + } + SetEPRxValid( ENDP3 ); + if( IsFifoEmpty( &obj->FifoRx ) == false ) + { + __disable_irq( ); + *data = FifoPop( &obj->FifoRx ); + __enable_irq( ); + return 0; + } + return 1; +} + +void EP1_IN_Callback (void) +{ + UsbPacketTx = 1; + + UsbTxLength = 0; + + while( IsFifoEmpty( &UartUsb.FifoTx ) == false ) + { + UsbTxBuffer[UsbTxLength] = FifoPop( &UartUsb.FifoTx ); + UsbTxLength++; + } + + if( UsbTxLength > 0 ) + { + UsbPacketTx = 0; + UserToPMABufferCopy( ( unsigned char* )UsbTxBuffer, ENDP1_TXADDR, UsbTxLength ); + SetEPTxCount( ENDP1, UsbTxLength ); + SetEPTxValid( ENDP1 ); + + } +} + +void EP3_OUT_Callback(void) +{ + uint8_t i; + + UsbRxLength = GetEPRxCount( ENDP3 ); + PMAToUserBufferCopy( ( unsigned char* )UsbRxBuffer, ENDP3_RXADDR, UsbRxLength ); + + for( i = 0; i < UsbRxLength; i++ ) + { + if( IsFifoFull( &UartUsb.FifoRx ) == false ) + { + // Read one byte from the receive data register + FifoPush( &UartUsb.FifoRx, UsbRxBuffer[i] ); + } + } + + if( UartUsb.IrqNotify != NULL ) + { + UartUsb.IrqNotify( UART_NOTIFY_RX ); + } +} diff --git a/src/boards/SensorNode/uart-usb-board.h b/src/boards/SensorNode/uart-usb-board.h new file mode 100644 index 000000000..9c9c28b45 --- /dev/null +++ b/src/boards/SensorNode/uart-usb-board.h @@ -0,0 +1,65 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Bleeper board UART driver implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __UART_USB_H__ +#define __UART_USB_H__ + +/*! + * \brief Initializes the UART object and MCU peripheral + * + * \param [IN] obj UART object + * \param [IN] tx UART Tx pin name to be used + * \param [IN] rx UART Rx pin name to be used + */ +void UartUsbInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ); + +/*! + * \brief Initializes the UART object and USB peripheral + * + * \param [IN] obj UART object + * \param [IN] mode Mode of operation for the UART + * \param [IN] baudrate UART baudrate + * \param [IN] wordLength packet length + * \param [IN] stopBits stop bits setup + * \param [IN] parity packet parity + * \param [IN] flowCtrl UART flow control + */ +void UartUsbConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t wordLength, StopBits_t stopBits, Parity_t parity, FlowCtrl_t flowCtrl ); + +/*! + * \brief DeInitializes the UART object and USB peripheral + * + * \param [IN] obj UART object + */ +void UartUsbDeInit( Uart_t *obj ); + +/*! + * \brief Sends a character to the UART + * + * \param [IN] obj UART object + * \param [IN] data Character to be sent + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartUsbPutChar( Uart_t *obj, uint8_t data ); + +/*! + * \brief Gets a character from the UART + * + * \param [IN] obj UART object + * \param [IN] data Received character + * \retval status [0: OK, 1: Busy] + */ +uint8_t UartUsbGetChar( Uart_t *obj, uint8_t *data ); + +#endif // __UART_USB_H__ diff --git a/src/boards/SensorNode/usb-cdc-board.c b/src/boards/SensorNode/usb-cdc-board.c new file mode 100644 index 000000000..a68e681d9 --- /dev/null +++ b/src/boards/SensorNode/usb-cdc-board.c @@ -0,0 +1,139 @@ + +#include "usb_lib.h" +#include "usb_istr.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "board.h" +#include "usb_pwr.h" + +#include "stm32l1xx_exti.h" + +EXTI_InitTypeDef EXTI_InitStructure; + +static void IntToUnicode( uint32_t value, uint8_t *pbuf, uint8_t len ); + +extern LINE_CODING linecoding; + +void UsbMcuInit( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + + /* Enable the SYSCFG module clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + /* Configure the EXTI line 18 connected internally to the USB IP */ + EXTI_ClearITPendingBit( EXTI_Line18 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line18; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable USB clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_USB, ENABLE ); + + /* 2 bit for pre-emption priority, 2 bits for subpriority */ + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); + + NVIC_InitStructure.NVIC_IRQChannel = USB_LP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Enable the USB Wake-up interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = USB_FS_WKUP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + USB_Init( ); +} + +void UsbMcuEnterLowPowerMode( void ) +{ + /* Set the device state to suspend */ + bDeviceState = SUSPENDED; +} + +void UsbMcuLeaveLowPowerMode( void ) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Set the device state to the correct state */ + if( pInfo->Current_Configuration != 0 ) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } + else + { + bDeviceState = ATTACHED; + } + /*Enable SystemCoreClock*/ + SystemInit( ); +} + +void UsbMcuCableConfig( FunctionalState newState ) +{ + if( newState != DISABLE ) + { + SYSCFG_USBPuCmd( ENABLE ); + } + else + { + SYSCFG_USBPuCmd( DISABLE ); + } +} + +void UsbMcuGetSerialNum( void ) +{ + uint32_t deviceSerial0, deviceSerial1, deviceSerial2; + + deviceSerial0 = *( uint32_t* )ID1; + deviceSerial1 = *( uint32_t* )ID2; + deviceSerial2 = *( uint32_t* )ID3; + + deviceSerial0 += deviceSerial2; + + if( deviceSerial0 != 0 ) + { + IntToUnicode( deviceSerial0, &Virtual_Com_Port_StringSerial[2] , 8 ); + IntToUnicode( deviceSerial1, &Virtual_Com_Port_StringSerial[18], 4 ); + } +} + +static void IntToUnicode( uint32_t value , uint8_t *pbuf , uint8_t len ) +{ + uint8_t idx = 0; + + for( idx = 0; idx < len; idx++ ) + { + if( ( ( value >> 28 ) ) < 0xA ) + { + pbuf[2 * idx] = ( value >> 28 ) + '0'; + } + else + { + pbuf[2 * idx] = ( value >> 28 ) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} + +bool UsbMcuIsDeviceConfigured( void ) +{ + return bDeviceState == CONFIGURED; +} + +void USB_LP_IRQHandler(void) +{ + USB_Istr( ); +} + +void USB_FS_WKUP_IRQHandler(void) +{ + EXTI_ClearITPendingBit( EXTI_Line18 ); +} diff --git a/src/boards/SensorNode/usb-cdc-board.h b/src/boards/SensorNode/usb-cdc-board.h new file mode 100644 index 000000000..4235b51f8 --- /dev/null +++ b/src/boards/SensorNode/usb-cdc-board.h @@ -0,0 +1,19 @@ +#ifndef __BOARD_USB_H__ +#define __BOARD_USB_H__ + +#define Get_SerialNum UsbMcuGetSerialNum +#define USB_Cable_Config UsbMcuCableConfig +#define Leave_LowPowerMode UsbMcuLeaveLowPowerMode +#define Enter_LowPowerMode UsbMcuEnterLowPowerMode + +void UsbMcuInit( void ); +void UsbMcuEnterLowPowerMode( void ); +void UsbMcuLeaveLowPowerMode( void ); +void UsbMcuCableConfig( FunctionalState newState ); +void UsbMcuGetSerialNum( void ); +bool UsbMcuIsDeviceConfigured( void ); +uint32_t UsbMcuCdcTxData( uint8_t *buffer, uint8_t length ); +uint32_t UsbMcuCdcRxData( void ); + + +#endif // __BOARD_USB_H__ diff --git a/src/boards/SensorNode/usb-dfu-board.c b/src/boards/SensorNode/usb-dfu-board.c new file mode 100644 index 000000000..2460466f8 --- /dev/null +++ b/src/boards/SensorNode/usb-dfu-board.c @@ -0,0 +1,169 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: DFU bootloader USB initialisation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#include "usb_lib.h" +#include "usb_istr.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "board.h" +#include "usb_pwr.h" + +#include "usb-dfu-board.h" + +#include "dfu_mal.h" + +EXTI_InitTypeDef EXTI_InitStructure; + +static void IntToUnicode( uint32_t value, uint8_t *pbuf, uint8_t len ); + +void UsbMcuInit( void ) +{ + /* Enable the SYSCFG module clock */ + RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, ENABLE ); + + FLASH_Unlock( ); + + /* Init the media interface */ + MAL_Init( ); + USB_Cable_Config( ENABLE ); + + /* Configure the EXTI line 18 connected internally to the USB IP */ + EXTI_ClearITPendingBit( EXTI_Line18 ); + EXTI_InitStructure.EXTI_Line = EXTI_Line18; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init( &EXTI_InitStructure ); + + /* Enable USB clock */ + RCC_APB1PeriphClockCmd( RCC_APB1Periph_USB, ENABLE ); + + UsbMcuInterruptsConfig ( ); + + USB_Init( ); +} + +void UsbMcuInterruptsConfig( void ) +{ + NVIC_InitTypeDef NVIC_InitStructure; + + /* 2 bit for pre-emption priority, 2 bits for subpriority */ + NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); + + NVIC_InitStructure.NVIC_IRQChannel = USB_LP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); + + /* Enable the USB Wake-up interrupt */ + NVIC_InitStructure.NVIC_IRQChannel = USB_FS_WKUP_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init( &NVIC_InitStructure ); +} + +void UsbMcuEnterLowPowerMode( void ) +{ + /* Set the device state to suspend */ + bDeviceState = SUSPENDED; +} + +void UsbMcuLeaveLowPowerMode( void ) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Set the device state to the correct state */ + if( pInfo->Current_Configuration != 0 ) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } + else + { + bDeviceState = ATTACHED; + } + /*Enable SystemCoreClock*/ + SystemInit( ); +} + +void UsbMcuCableConfig( FunctionalState newState ) +{ + if( newState != DISABLE ) + { + SYSCFG_USBPuCmd( ENABLE ); + } + else + { + SYSCFG_USBPuCmd( DISABLE ); + } +} + +void UsbMcuResetDevice( void ) +{ + UsbMcuCableConfig( DISABLE ); + NVIC_SystemReset( ); +} + +void UsbMcuGetSerialNum( void ) +{ + uint32_t deviceSerial0, deviceSerial1, deviceSerial2; + + deviceSerial0 = *( uint32_t* )ID1; + deviceSerial1 = *( uint32_t* )ID2; + deviceSerial2 = *( uint32_t* )ID3; + + deviceSerial0 += deviceSerial2; + + if( deviceSerial0 != 0 ) + { + IntToUnicode( deviceSerial0, &DFU_StringSerial[2] , 8 ); + IntToUnicode( deviceSerial1, &DFU_StringSerial[18], 4 ); + } +} + +static void IntToUnicode( uint32_t value , uint8_t *pbuf , uint8_t len ) +{ + uint8_t idx = 0; + + for( idx = 0; idx < len; idx++ ) + { + if( ( ( value >> 28 ) ) < 0xA ) + { + pbuf[2 * idx] = ( value >> 28 ) + '0'; + } + else + { + pbuf[2 * idx] = ( value >> 28 ) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} + +bool UsbMcuIsDeviceConfigured( void ) +{ + return bDeviceState == CONFIGURED; +} + +void USB_LP_IRQHandler(void) +{ + USB_Istr( ); +} + +void USB_FS_WKUP_IRQHandler(void) +{ + EXTI_ClearITPendingBit( EXTI_Line18 ); +} diff --git a/src/boards/SensorNode/usb-dfu-board.h b/src/boards/SensorNode/usb-dfu-board.h new file mode 100644 index 000000000..d59a1e106 --- /dev/null +++ b/src/boards/SensorNode/usb-dfu-board.h @@ -0,0 +1,47 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: DFU bootloader USB initialisation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __BOARD_USB_H__ +#define __BOARD_USB_H__ + +#include +#include "stm32l1xx.h" + +#define ApplicationAddress 0x08003000 + +#define Get_SerialNum UsbMcuGetSerialNum +#define USB_Cable_Config UsbMcuCableConfig +#define Leave_LowPowerMode UsbMcuLeaveLowPowerMode +#define Enter_LowPowerMode UsbMcuEnterLowPowerMode +#define USB_Interrupts_Config UsbMcuInterruptsConfig +#define Reset_Device UsbMcuResetDevice + +void SMI_FLASH_Init( void ); +void SMI_FLASH_SectorErase( uint32_t Address ); +void SMI_FLASH_WordWrite( uint32_t Address, uint32_t Data ); +void SMI_FLASH_PageWrite( uint32_t Address, uint32_t* wBuffer ); + +void UsbMcuInit( void ); +void UsbMcuInterruptsConfig( void ); +void UsbMcuEnterLowPowerMode( void ); +void UsbMcuLeaveLowPowerMode( void ); +void UsbMcuCableConfig( FunctionalState newState ); +void UsbMcuResetDevice( void ); +void UsbMcuGetSerialNum( void ); +bool UsbMcuIsDeviceConfigured( void ); +uint32_t UsbMcuCdcTxData( uint8_t *buffer, uint8_t length ); +uint32_t UsbMcuCdcRxData( void ); + + +#endif // __BOARD_USB_H__ diff --git a/src/boards/SensorNode/usb/cdc/inc/usb_conf.h b/src/boards/SensorNode/usb/cdc/inc/usb_conf.h new file mode 100644 index 000000000..f1fe606e6 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/inc/usb_conf.h @@ -0,0 +1,103 @@ +/** + ****************************************************************************** + * @file usb_conf.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Virtual COM Port Demo configuration header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CONF_H +#define __USB_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +/*-------------------------------------------------------------*/ +/* EP_NUM */ +/* defines how many endpoints are used by the device */ +/*-------------------------------------------------------------*/ + +#define EP_NUM (4) + +/*-------------------------------------------------------------*/ +/* -------------- Buffer Description Table -----------------*/ +/*-------------------------------------------------------------*/ +/* buffer table base address */ +/* buffer table base address */ +#define BTABLE_ADDRESS (0x00) + +/* EP0 */ +/* rx/tx buffer base address */ +#define ENDP0_RXADDR (0x40) +#define ENDP0_TXADDR (0x80) + +/* EP1 */ +/* tx buffer base address */ +#define ENDP1_TXADDR (0xC0) +#define ENDP2_TXADDR (0x100) +#define ENDP3_RXADDR (0x110) + + +/*-------------------------------------------------------------*/ +/* ------------------- ISTR events -------------------------*/ +/*-------------------------------------------------------------*/ +/* IMR_MSK */ +/* mask defining which events has to be handled */ +/* by the device application software */ +#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \ + | CNTR_ESOFM | CNTR_RESETM ) + +/*#define CTR_CALLBACK*/ +/*#define DOVR_CALLBACK*/ +/*#define ERR_CALLBACK*/ +/*#define WKUP_CALLBACK*/ +/*#define SUSP_CALLBACK*/ +/*#define RESET_CALLBACK*/ +/*#define SOF_CALLBACK*/ +/*#define ESOF_CALLBACK*/ +/* CTR service routines */ +/* associated to defined endpoints */ +/*#define EP1_IN_Callback NOP_Process*/ +#define EP2_IN_Callback NOP_Process +#define EP3_IN_Callback NOP_Process +#define EP4_IN_Callback NOP_Process +#define EP5_IN_Callback NOP_Process +#define EP6_IN_Callback NOP_Process +#define EP7_IN_Callback NOP_Process + +#define EP1_OUT_Callback NOP_Process +#define EP2_OUT_Callback NOP_Process +/*#define EP3_OUT_Callback NOP_Process*/ +#define EP4_OUT_Callback NOP_Process +#define EP5_OUT_Callback NOP_Process +#define EP6_OUT_Callback NOP_Process +#define EP7_OUT_Callback NOP_Process + +#endif /* __USB_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/inc/usb_desc.h b/src/boards/SensorNode/usb/cdc/inc/usb_desc.h new file mode 100644 index 000000000..6a2687082 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/inc/usb_desc.h @@ -0,0 +1,66 @@ +/** + ****************************************************************************** + * @file usb_desc.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptor Header for Virtual COM Port Device + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DESC_H +#define __USB_DESC_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported define -----------------------------------------------------------*/ +#define USB_DEVICE_DESCRIPTOR_TYPE 0x01 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 +#define USB_STRING_DESCRIPTOR_TYPE 0x03 +#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 + +#define VIRTUAL_COM_PORT_DATA_SIZE 64 +#define VIRTUAL_COM_PORT_INT_SIZE 8 + +#define VIRTUAL_COM_PORT_SIZ_DEVICE_DESC 18 +#define VIRTUAL_COM_PORT_SIZ_CONFIG_DESC 67 +#define VIRTUAL_COM_PORT_SIZ_STRING_LANGID 4 +#define VIRTUAL_COM_PORT_SIZ_STRING_VENDOR 38 +#define VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT 50 +#define VIRTUAL_COM_PORT_SIZ_STRING_SERIAL 26 + +#define STANDARD_ENDPOINT_DESC_SIZE 0x09 + +/* Exported functions ------------------------------------------------------- */ +extern const uint8_t Virtual_Com_Port_DeviceDescriptor[VIRTUAL_COM_PORT_SIZ_DEVICE_DESC]; +extern const uint8_t Virtual_Com_Port_ConfigDescriptor[VIRTUAL_COM_PORT_SIZ_CONFIG_DESC]; + +extern const uint8_t Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID]; +extern const uint8_t Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR]; +extern const uint8_t Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT]; +extern uint8_t Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL]; + +#endif /* __USB_DESC_H */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/inc/usb_istr.h b/src/boards/SensorNode/usb/cdc/inc/usb_istr.h new file mode 100644 index 000000000..d2a07f69e --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/inc/usb_istr.h @@ -0,0 +1,95 @@ +/** + ****************************************************************************** + * @file usb_istr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief This file includes the peripherals header files in the user application. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_ISTR_H +#define __USB_ISTR_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_conf.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + + void USB_Istr(void); + +/* function prototypes Automatically built defining related macros */ + +void EP1_IN_Callback(void); +void EP2_IN_Callback(void); +void EP3_IN_Callback(void); +void EP4_IN_Callback(void); +void EP5_IN_Callback(void); +void EP6_IN_Callback(void); +void EP7_IN_Callback(void); + +void EP1_OUT_Callback(void); +void EP2_OUT_Callback(void); +void EP3_OUT_Callback(void); +void EP4_OUT_Callback(void); +void EP5_OUT_Callback(void); +void EP6_OUT_Callback(void); +void EP7_OUT_Callback(void); + +#ifdef CTR_CALLBACK +void CTR_Callback(void); +#endif + +#ifdef DOVR_CALLBACK +void DOVR_Callback(void); +#endif + +#ifdef ERR_CALLBACK +void ERR_Callback(void); +#endif + +#ifdef WKUP_CALLBACK +void WKUP_Callback(void); +#endif + +#ifdef SUSP_CALLBACK +void SUSP_Callback(void); +#endif + +#ifdef RESET_CALLBACK +void RESET_Callback(void); +#endif + +#ifdef SOF_CALLBACK +void SOF_Callback(void); +#endif + +#ifdef ESOF_CALLBACK +void ESOF_Callback(void); +#endif + +#endif /*__USB_ISTR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/inc/usb_prop.h b/src/boards/SensorNode/usb/cdc/inc/usb_prop.h new file mode 100644 index 000000000..bd8170263 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/inc/usb_prop.h @@ -0,0 +1,87 @@ +/** + ****************************************************************************** + * @file usb_prop.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to Virtual COM Port Demo (Endpoint 0) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __usb_prop_H +#define __usb_prop_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef struct +{ + uint32_t bitrate; + uint8_t format; + uint8_t paritytype; + uint8_t datatype; +}LINE_CODING; + +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported define -----------------------------------------------------------*/ + +#define Virtual_Com_Port_GetConfiguration NOP_Process +//#define Virtual_Com_Port_SetConfiguration NOP_Process +#define Virtual_Com_Port_GetInterface NOP_Process +#define Virtual_Com_Port_SetInterface NOP_Process +#define Virtual_Com_Port_GetStatus NOP_Process +#define Virtual_Com_Port_ClearFeature NOP_Process +#define Virtual_Com_Port_SetEndPointFeature NOP_Process +#define Virtual_Com_Port_SetDeviceFeature NOP_Process +//#define Virtual_Com_Port_SetDeviceAddress NOP_Process + +#define SEND_ENCAPSULATED_COMMAND 0x00 +#define GET_ENCAPSULATED_RESPONSE 0x01 +#define SET_COMM_FEATURE 0x02 +#define GET_COMM_FEATURE 0x03 +#define CLEAR_COMM_FEATURE 0x04 +#define SET_LINE_CODING 0x20 +#define GET_LINE_CODING 0x21 +#define SET_CONTROL_LINE_STATE 0x22 +#define SEND_BREAK 0x23 + +/* Exported functions ------------------------------------------------------- */ +void Virtual_Com_Port_init(void); +void Virtual_Com_Port_Reset(void); +void Virtual_Com_Port_SetConfiguration(void); +void Virtual_Com_Port_SetDeviceAddress (void); +void Virtual_Com_Port_Status_In (void); +void Virtual_Com_Port_Status_Out (void); +RESULT Virtual_Com_Port_Data_Setup(uint8_t); +RESULT Virtual_Com_Port_NoData_Setup(uint8_t); +RESULT Virtual_Com_Port_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting); +uint8_t *Virtual_Com_Port_GetDeviceDescriptor(uint16_t ); +uint8_t *Virtual_Com_Port_GetConfigDescriptor(uint16_t); +uint8_t *Virtual_Com_Port_GetStringDescriptor(uint16_t); + +uint8_t *Virtual_Com_Port_GetLineCoding(uint16_t Length); +uint8_t *Virtual_Com_Port_SetLineCoding(uint16_t Length); + +#endif /* __usb_prop_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/SensorNode/usb/cdc/inc/usb_pwr.h b/src/boards/SensorNode/usb/cdc/inc/usb_pwr.h new file mode 100644 index 000000000..3f56f16b5 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/inc/usb_pwr.h @@ -0,0 +1,68 @@ +/** + ****************************************************************************** + * @file usb_pwr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PWR_H +#define __USB_PWR_H +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _RESUME_STATE +{ + RESUME_EXTERNAL, + RESUME_INTERNAL, + RESUME_LATER, + RESUME_WAIT, + RESUME_START, + RESUME_ON, + RESUME_OFF, + RESUME_ESOF +} RESUME_STATE; + +typedef enum _DEVICE_STATE +{ + UNCONNECTED, + ATTACHED, + POWERED, + SUSPENDED, + ADDRESSED, + CONFIGURED +} DEVICE_STATE; +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void Suspend(void); +void Resume_Init(void); +void Resume(RESUME_STATE eResumeSetVal); +RESULT PowerOn(void); +RESULT PowerOff(void); +/* External variables --------------------------------------------------------*/ +extern __IO uint32_t bDeviceState; /* USB device status */ +extern __IO bool fSuspendEnabled; /* true when suspend is possible */ + +#endif /*__USB_PWR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/src/usb_desc.c b/src/boards/SensorNode/usb/cdc/src/usb_desc.c new file mode 100644 index 000000000..ca9391552 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/src/usb_desc.c @@ -0,0 +1,174 @@ +/** + ****************************************************************************** + * @file usb_desc.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptors for Virtual Com Port Demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_desc.h" + +/* USB Standard Device Descriptor */ +const uint8_t Virtual_Com_Port_DeviceDescriptor[] = + { + 0x12, /* bLength */ + USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */ + 0x00, + 0x02, /* bcdUSB = 2.00 */ + 0x02, /* bDeviceClass: CDC */ + 0x00, /* bDeviceSubClass */ + 0x00, /* bDeviceProtocol */ + 0x40, /* bMaxPacketSize0 */ + 0x83, + 0x04, /* idVendor = 0x0483 */ + 0x40, + 0x57, /* idProduct = 0x7540 */ + 0x00, + 0x02, /* bcdDevice = 2.00 */ + 1, /* Index of string descriptor describing manufacturer */ + 2, /* Index of string descriptor describing product */ + 3, /* Index of string descriptor describing the device's serial number */ + 0x01 /* bNumConfigurations */ + }; + +const uint8_t Virtual_Com_Port_ConfigDescriptor[] = + { + /*Configuration Descriptor*/ + 0x09, /* bLength: Configuration Descriptor size */ + USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ + VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */ + 0x00, + 0x02, /* bNumInterfaces: 2 interface */ + 0x01, /* bConfigurationValue: Configuration value */ + 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ + 0xC0, /* bmAttributes: self powered */ + 0x32, /* MaxPower 0 mA */ + /*Interface Descriptor*/ + 0x09, /* bLength: Interface Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ + /* Interface descriptor type */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x01, /* bNumEndpoints: One endpoints used */ + 0x02, /* bInterfaceClass: Communication Interface Class */ + 0x02, /* bInterfaceSubClass: Abstract Control Model */ + 0x01, /* bInterfaceProtocol: Common AT commands */ + 0x00, /* iInterface: */ + /*Header Functional Descriptor*/ + 0x05, /* bLength: Endpoint Descriptor size */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x00, /* bDescriptorSubtype: Header Func Desc */ + 0x10, /* bcdCDC: spec release number */ + 0x01, + /*Call Management Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x01, /* bDescriptorSubtype: Call Management Func Desc */ + 0x00, /* bmCapabilities: D0+D1 */ + 0x01, /* bDataInterface: 1 */ + /*ACM Functional Descriptor*/ + 0x04, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ + 0x02, /* bmCapabilities */ + /*Union Functional Descriptor*/ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x06, /* bDescriptorSubtype: Union func desc */ + 0x00, /* bMasterInterface: Communication class interface */ + 0x01, /* bSlaveInterface0: Data Class Interface */ + /*Endpoint 2 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x82, /* bEndpointAddress: (IN2) */ + 0x03, /* bmAttributes: Interrupt */ + VIRTUAL_COM_PORT_INT_SIZE, /* wMaxPacketSize: */ + 0x00, + 0xFF, /* bInterval: */ + /*Data class interface descriptor*/ + 0x09, /* bLength: Endpoint Descriptor size */ + USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */ + 0x01, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x02, /* bNumEndpoints: Two endpoints used */ + 0x0A, /* bInterfaceClass: CDC */ + 0x00, /* bInterfaceSubClass: */ + 0x00, /* bInterfaceProtocol: */ + 0x00, /* iInterface: */ + /*Endpoint 3 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x03, /* bEndpointAddress: (OUT3) */ + 0x02, /* bmAttributes: Bulk */ + VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */ + 0x00, + 0x00, /* bInterval: ignore for Bulk transfer */ + /*Endpoint 1 Descriptor*/ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ + 0x81, /* bEndpointAddress: (IN1) */ + 0x02, /* bmAttributes: Bulk */ + VIRTUAL_COM_PORT_DATA_SIZE, /* wMaxPacketSize: */ + 0x00, + 0x00 /* bInterval */ + }; + +/* USB String Descriptors */ +const uint8_t Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID] = + { + VIRTUAL_COM_PORT_SIZ_STRING_LANGID, + USB_STRING_DESCRIPTOR_TYPE, + 0x09, + 0x04 /* LangID = 0x0409: U.S. English */ + }; + +const uint8_t Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR] = + { + VIRTUAL_COM_PORT_SIZ_STRING_VENDOR, /* Size of Vendor string */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType*/ + /* Manufacturer: "STMicroelectronics" */ + 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, + 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, + 'c', 0, 's', 0 + }; + +const uint8_t Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT] = + { + VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT, /* bLength */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ + /* Product name: "STM32 Virtual COM Port" */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'V', 0, 'i', 0, + 'r', 0, 't', 0, 'u', 0, 'a', 0, 'l', 0, ' ', 0, 'C', 0, 'O', 0, + 'M', 0, ' ', 0, 'P', 0, 'o', 0, 'r', 0, 't', 0, ' ', 0, ' ', 0 + }; + +uint8_t Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL] = + { + VIRTUAL_COM_PORT_SIZ_STRING_SERIAL, /* bLength */ + USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0 + }; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/src/usb_endp.c b/src/boards/SensorNode/usb/cdc/src/usb_endp.c new file mode 100644 index 000000000..b4deceefc --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/src/usb_endp.c @@ -0,0 +1,78 @@ +/** + ****************************************************************************** + * @file usb_endp.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Endpoint routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_desc.h" +#include "usb_mem.h" +#include "board.h" +#include "usb_istr.h" +#include "usb_pwr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/* Interval between sending IN packets in frame number (1 frame = 1ms) */ +#define VCOMPORT_IN_FRAME_INTERVAL 5 +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +extern __IO uint32_t UsbPacketTx; +extern __IO uint32_t UsbPacketRx; +extern __IO uint8_t UsbRxBuffer[64]; +uint32_t UsbRxLength; +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : EP1_IN_Callback +* Description : +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ + +void EP1_IN_Callback (void) +{ + UsbPacketTx = 1; +} + +/******************************************************************************* +* Function Name : EP3_OUT_Callback +* Description : +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void EP3_OUT_Callback(void) +{ + UsbPacketRx = 1; + UsbRxLength = GetEPRxCount(ENDP3); + PMAToUserBufferCopy((unsigned char*)UsbRxBuffer, ENDP3_RXADDR, UsbRxLength); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/src/usb_istr.c b/src/boards/SensorNode/usb/cdc/src/usb_istr.c new file mode 100644 index 000000000..ec457ed94 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/src/usb_istr.c @@ -0,0 +1,232 @@ +/** + ****************************************************************************** + * @file usb_istr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief ISTR events interrupt service routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "usb_istr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint16_t wIstr; /* ISTR register last read value */ +__IO uint8_t bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */ +__IO uint32_t esof_counter =0; /* expected SOF counter */ +__IO uint32_t wCNTR=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* function pointers to non-control endpoints service routines */ +void (*pEpInt_IN[7])(void) = + { + EP1_IN_Callback, + EP2_IN_Callback, + EP3_IN_Callback, + EP4_IN_Callback, + EP5_IN_Callback, + EP6_IN_Callback, + EP7_IN_Callback, + }; + +void (*pEpInt_OUT[7])(void) = + { + EP1_OUT_Callback, + EP2_OUT_Callback, + EP3_OUT_Callback, + EP4_OUT_Callback, + EP5_OUT_Callback, + EP6_OUT_Callback, + EP7_OUT_Callback, + }; + +/******************************************************************************* +* Function Name : USB_Istr +* Description : ISTR events interrupt service routine +* Input : +* Output : +* Return : +*******************************************************************************/ +void USB_Istr(void) +{ + uint32_t i=0; + __IO uint32_t EP[8]; + + wIstr = _GetISTR(); + +#if (IMR_MSK & ISTR_SOF) + if (wIstr & ISTR_SOF & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_SOF); + bIntPackSOF++; + +#ifdef SOF_CALLBACK + SOF_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#if (IMR_MSK & ISTR_CTR) + if (wIstr & ISTR_CTR & wInterrupt_Mask) + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + CTR_LP(); +#ifdef CTR_CALLBACK + CTR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_RESET) + if (wIstr & ISTR_RESET & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_RESET); + Device_Property.Reset(); +#ifdef RESET_CALLBACK + RESET_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_DOVR) + if (wIstr & ISTR_DOVR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_DOVR); +#ifdef DOVR_CALLBACK + DOVR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ERR) + if (wIstr & ISTR_ERR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_ERR); +#ifdef ERR_CALLBACK + ERR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_WKUP) + if (wIstr & ISTR_WKUP & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_WKUP); + Resume(RESUME_EXTERNAL); +#ifdef WKUP_CALLBACK + WKUP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SUSP) + if (wIstr & ISTR_SUSP & wInterrupt_Mask) + { + + /* check if SUSPEND is possible */ + if (fSuspendEnabled) + { + Suspend(); + } + else + { + /* if not possible then resume after xx ms */ + Resume(RESUME_LATER); + } + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + _SetISTR((uint16_t)CLR_SUSP); +#ifdef SUSP_CALLBACK + SUSP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#if (IMR_MSK & ISTR_ESOF) + if (wIstr & ISTR_ESOF & wInterrupt_Mask) + { + /* clear ESOF flag in ISTR */ + _SetISTR((uint16_t)CLR_ESOF); + + if ((_GetFNR()&FNR_RXDP)!=0) + { + /* increment ESOF counter */ + esof_counter ++; + + /* test if we enter in ESOF more than 3 times with FSUSP =0 and RXDP =1=>> possible missing SUSP flag*/ + if ((esof_counter >3)&&((_GetCNTR()&CNTR_FSUSP)==0)) + { + /* this a sequence to apply a force RESET*/ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + esof_counter = 0; + } + } + else + { + esof_counter = 0; + } + + /* resume handling timing is made with ESOFs */ + Resume(RESUME_ESOF); /* request without change of the machine state */ + +#ifdef ESOF_CALLBACK + ESOF_Callback(); +#endif + } +#endif +} /* USB_Istr */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/cdc/src/usb_prop.c b/src/boards/SensorNode/usb/cdc/src/usb_prop.c new file mode 100644 index 000000000..25f15055b --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/src/usb_prop.c @@ -0,0 +1,414 @@ +/** + ****************************************************************************** + * @file usb_prop.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to Virtual Com Port Demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "usb_pwr.h" +#include "usb-cdc-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint8_t Request = 0; + +LINE_CODING linecoding = + { + 115200, /* baud rate*/ + 0x00, /* stop bits-1*/ + 0x00, /* parity - none*/ + 0x08 /* no. of bits 8*/ + }; + +/* -------------------------------------------------------------------------- */ +/* Structures initializations */ +/* -------------------------------------------------------------------------- */ + +DEVICE Device_Table = + { + EP_NUM, + 1 + }; + +DEVICE_PROP Device_Property = + { + Virtual_Com_Port_init, + Virtual_Com_Port_Reset, + Virtual_Com_Port_Status_In, + Virtual_Com_Port_Status_Out, + Virtual_Com_Port_Data_Setup, + Virtual_Com_Port_NoData_Setup, + Virtual_Com_Port_Get_Interface_Setting, + Virtual_Com_Port_GetDeviceDescriptor, + Virtual_Com_Port_GetConfigDescriptor, + Virtual_Com_Port_GetStringDescriptor, + 0, + 0x40 /*MAX PACKET SIZE*/ + }; + +USER_STANDARD_REQUESTS User_Standard_Requests = + { + Virtual_Com_Port_GetConfiguration, + Virtual_Com_Port_SetConfiguration, + Virtual_Com_Port_GetInterface, + Virtual_Com_Port_SetInterface, + Virtual_Com_Port_GetStatus, + Virtual_Com_Port_ClearFeature, + Virtual_Com_Port_SetEndPointFeature, + Virtual_Com_Port_SetDeviceFeature, + Virtual_Com_Port_SetDeviceAddress + }; + +ONE_DESCRIPTOR Device_Descriptor = + { + (uint8_t*)Virtual_Com_Port_DeviceDescriptor, + VIRTUAL_COM_PORT_SIZ_DEVICE_DESC + }; + +ONE_DESCRIPTOR Config_Descriptor = + { + (uint8_t*)Virtual_Com_Port_ConfigDescriptor, + VIRTUAL_COM_PORT_SIZ_CONFIG_DESC + }; + +ONE_DESCRIPTOR String_Descriptor[4] = + { + {(uint8_t*)Virtual_Com_Port_StringLangID, VIRTUAL_COM_PORT_SIZ_STRING_LANGID}, + {(uint8_t*)Virtual_Com_Port_StringVendor, VIRTUAL_COM_PORT_SIZ_STRING_VENDOR}, + {(uint8_t*)Virtual_Com_Port_StringProduct, VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT}, + {(uint8_t*)Virtual_Com_Port_StringSerial, VIRTUAL_COM_PORT_SIZ_STRING_SERIAL} + }; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/******************************************************************************* +* Function Name : Virtual_Com_Port_init. +* Description : Virtual COM Port Mouse init routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_init(void) +{ + + /* Update the serial number string descriptor with the data from the unique + ID*/ + Get_SerialNum(); + + pInformation->Current_Configuration = 0; + + /* Connect the device */ + PowerOn(); + + /* Perform basic device initialization operations */ + USB_SIL_Init(); + + bDeviceState = UNCONNECTED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Reset +* Description : Virtual_Com_Port Mouse reset routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Reset(void) +{ + /* Set Virtual_Com_Port DEVICE as not configured */ + pInformation->Current_Configuration = 0; + + /* Current Feature initialization */ + pInformation->Current_Feature = Virtual_Com_Port_ConfigDescriptor[7]; + + /* Set Virtual_Com_Port DEVICE with the default Interface*/ + pInformation->Current_Interface = 0; + + SetBTABLE(BTABLE_ADDRESS); + + /* Initialize Endpoint 0 */ + SetEPType(ENDP0, EP_CONTROL); + SetEPTxStatus(ENDP0, EP_TX_STALL); + SetEPRxAddr(ENDP0, ENDP0_RXADDR); + SetEPTxAddr(ENDP0, ENDP0_TXADDR); + Clear_Status_Out(ENDP0); + SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); + SetEPRxValid(ENDP0); + + /* Initialize Endpoint 1 */ + SetEPType(ENDP1, EP_BULK); + SetEPTxAddr(ENDP1, ENDP1_TXADDR); + SetEPTxStatus(ENDP1, EP_TX_NAK); + SetEPRxStatus(ENDP1, EP_RX_DIS); + + /* Initialize Endpoint 2 */ + SetEPType(ENDP2, EP_INTERRUPT); + SetEPTxAddr(ENDP2, ENDP2_TXADDR); + SetEPRxStatus(ENDP2, EP_RX_DIS); + SetEPTxStatus(ENDP2, EP_TX_NAK); + + /* Initialize Endpoint 3 */ + SetEPType(ENDP3, EP_BULK); + SetEPRxAddr(ENDP3, ENDP3_RXADDR); + SetEPRxCount(ENDP3, VIRTUAL_COM_PORT_DATA_SIZE); + SetEPRxStatus(ENDP3, EP_RX_VALID); + SetEPTxStatus(ENDP3, EP_TX_DIS); + + /* Set this device to response on default address */ + SetDeviceAddress(0); + + bDeviceState = ATTACHED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetConfiguration. +* Description : Update the device state to configured. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_SetConfiguration(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + if (pInfo->Current_Configuration != 0) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetConfiguration. +* Description : Update the device state to addressed. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_SetDeviceAddress (void) +{ + bDeviceState = ADDRESSED; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Status_In. +* Description : Virtual COM Port Status In Routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Status_In(void) +{ + if (Request == SET_LINE_CODING) + { + Request = 0; + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Status_Out +* Description : Virtual COM Port Status OUT Routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Virtual_Com_Port_Status_Out(void) +{} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Data_Setup +* Description : handle the data class specific requests +* Input : Request Nb. +* Output : None. +* Return : USB_UNSUPPORT or USB_SUCCESS. +*******************************************************************************/ +RESULT Virtual_Com_Port_Data_Setup(uint8_t RequestNo) +{ + uint8_t *(*CopyRoutine)(uint16_t); + + CopyRoutine = NULL; + + if (RequestNo == GET_LINE_CODING) + { + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + CopyRoutine = Virtual_Com_Port_GetLineCoding; + } + } + else if (RequestNo == SET_LINE_CODING) + { + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + CopyRoutine = Virtual_Com_Port_SetLineCoding; + } + Request = SET_LINE_CODING; + } + + if (CopyRoutine == NULL) + { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_NoData_Setup. +* Description : handle the no data class specific requests. +* Input : Request Nb. +* Output : None. +* Return : USB_UNSUPPORT or USB_SUCCESS. +*******************************************************************************/ +RESULT Virtual_Com_Port_NoData_Setup(uint8_t RequestNo) +{ + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + if (RequestNo == SET_COMM_FEATURE) + { + return USB_SUCCESS; + } + else if (RequestNo == SET_CONTROL_LINE_STATE) + { + return USB_SUCCESS; + } + } + + return USB_UNSUPPORT; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetDeviceDescriptor. +* Description : Gets the device descriptor. +* Input : Length. +* Output : None. +* Return : The address of the device descriptor. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetDeviceDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Device_Descriptor); +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetConfigDescriptor. +* Description : get the configuration descriptor. +* Input : Length. +* Output : None. +* Return : The address of the configuration descriptor. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetConfigDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Config_Descriptor); +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetStringDescriptor +* Description : Gets the string descriptors according to the needed index +* Input : Length. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetStringDescriptor(uint16_t Length) +{ + uint8_t wValue0 = pInformation->USBwValue0; + if (wValue0 > 4) + { + return NULL; + } + else + { + return Standard_GetDescriptorData(Length, &String_Descriptor[wValue0]); + } +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_Get_Interface_Setting. +* Description : test the interface and the alternate setting according to the +* supported one. +* Input1 : uint8_t: Interface : interface number. +* Input2 : uint8_t: AlternateSetting : Alternate Setting number. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +RESULT Virtual_Com_Port_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting) +{ + if (AlternateSetting > 0) + { + return USB_UNSUPPORT; + } + else if (Interface > 1) + { + return USB_UNSUPPORT; + } + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_GetLineCoding. +* Description : send the linecoding structure to the PC host. +* Input : Length. +* Output : None. +* Return : Linecoding structure base address. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_GetLineCoding(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding); + return NULL; + } + return(uint8_t *)&linecoding; +} + +/******************************************************************************* +* Function Name : Virtual_Com_Port_SetLineCoding. +* Description : Set the linecoding structure fields. +* Input : Length. +* Output : None. +* Return : Linecoding structure base address. +*******************************************************************************/ +uint8_t *Virtual_Com_Port_SetLineCoding(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding); + return NULL; + } + return(uint8_t *)&linecoding; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/SensorNode/usb/cdc/src/usb_pwr.c b/src/boards/SensorNode/usb/cdc/src/usb_pwr.c new file mode 100644 index 000000000..9a7c466b8 --- /dev/null +++ b/src/boards/SensorNode/usb/cdc/src/usb_pwr.c @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file usb_pwr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_pwr.h" +#include "usb-cdc-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint32_t bDeviceState = UNCONNECTED; /* USB device status */ +__IO bool fSuspendEnabled = TRUE; /* true when suspend is possible */ +__IO uint32_t EP[8]; + +struct +{ + __IO RESUME_STATE eState; + __IO uint8_t bESOFcnt; +} +ResumeS; + +__IO uint32_t remotewakeupon=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : PowerOn +* Description : +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOn(void) +{ + uint16_t wRegVal; + + /*** cable plugged-in ? ***/ + USB_Cable_Config(ENABLE); + + /*** CNTR_PWDN = 0 ***/ + wRegVal = CNTR_FRES; + _SetCNTR(wRegVal); + + /*** CNTR_FRES = 0 ***/ + wInterrupt_Mask = 0; + _SetCNTR(wInterrupt_Mask); + /*** Clear pending interrupts ***/ + _SetISTR(0); + /*** Set interrupt mask ***/ + wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; + _SetCNTR(wInterrupt_Mask); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : PowerOff +* Description : handles switch-off conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOff() +{ + /* disable all interrupts and force USB reset */ + _SetCNTR(CNTR_FRES); + /* clear interrupt status register */ + _SetISTR(0); + /* Disable the Pull-Up*/ + USB_Cable_Config(DISABLE); + /* switch-off device */ + _SetCNTR(CNTR_FRES + CNTR_PDWN); + /* sw variables reset */ + /* ... */ + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Suspend +* Description : sets suspend mode operating conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Suspend(void) +{ + uint32_t i =0; + uint16_t wCNTR; + uint32_t tmpreg = 0; + __IO uint32_t savePWR_CR=0; + /* suspend preparation */ + /* ... */ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /* This a sequence to apply a force RESET to handle a robustness case */ + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /* unmask RESET flag */ + wCNTR|=CNTR_RESETM; + _SetCNTR(wCNTR); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + /* Now it is safe to enter macrocell in suspend mode */ + wCNTR |= CNTR_FSUSP; + _SetCNTR(wCNTR); + + /* force low-power mode in the macrocell */ + wCNTR = _GetCNTR(); + wCNTR |= CNTR_LPMODE; + _SetCNTR(wCNTR); + + /*prepare entry in low power mode (STOP mode)*/ + /* Select the regulator state in STOP mode*/ + savePWR_CR = PWR->CR; + tmpreg = PWR->CR; + /* Clear PDDS and LPDS bits */ + tmpreg &= ((uint32_t)0xFFFFFFFC); + /* Set LPDS bit according to PWR_Regulator value */ + tmpreg |= PWR_Regulator_LowPower; + /* Store the new value */ + PWR->CR = tmpreg; + /* Set SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#else + SCB->SCR |= SCB_SCR_SLEEPDEEP; +#endif + + /* enter system in STOP mode, only when wakeup flag in not set */ + if((_GetISTR()&ISTR_WKUP)==0) + { + __WFI(); + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } + else + { + /* Clear Wakeup flag */ + _SetISTR(CLR_WKUP); + /* clear FSUSP to abort entry in suspend mode */ + wCNTR = _GetCNTR(); + wCNTR&=~CNTR_FSUSP; + _SetCNTR(wCNTR); + + /*restore sleep mode configuration */ + /* restore Power regulator config in sleep mode*/ + PWR->CR = savePWR_CR; + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } +} + +/******************************************************************************* +* Function Name : Resume_Init +* Description : Handles wake-up restoring normal operations +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Resume_Init(void) +{ + uint16_t wCNTR; + + /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ + /* restart the clocks */ + /* ... */ + + /* CNTR_LPMODE = 0 */ + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_LPMODE); + _SetCNTR(wCNTR); + + /* restore full power */ + /* ... on connected devices */ + Leave_LowPowerMode(); + + /* reset FSUSP bit */ + _SetCNTR(IMR_MSK); + + /* reverse suspend preparation */ + /* ... */ + +} + +/******************************************************************************* +* Function Name : Resume +* Description : This is the state machine handling resume operations and +* timing sequence. The control is based on the Resume structure +* variables and on the ESOF interrupt calling this subroutine +* without changing machine state. +* Input : a state machine value (RESUME_STATE) +* RESUME_ESOF doesn't change ResumeS.eState allowing +* decrementing of the ESOF counter in different states. +* Output : None. +* Return : None. +*******************************************************************************/ +void Resume(RESUME_STATE eResumeSetVal) +{ + uint16_t wCNTR; + + if (eResumeSetVal != RESUME_ESOF) + ResumeS.eState = eResumeSetVal; + switch (ResumeS.eState) + { + case RESUME_EXTERNAL: + if (remotewakeupon ==0) + { + Resume_Init(); + ResumeS.eState = RESUME_OFF; + } + else /* RESUME detected during the RemoteWAkeup signalling => keep RemoteWakeup handling*/ + { + ResumeS.eState = RESUME_ON; + } + break; + case RESUME_INTERNAL: + Resume_Init(); + ResumeS.eState = RESUME_START; + remotewakeupon = 1; + break; + case RESUME_LATER: + ResumeS.bESOFcnt = 2; + ResumeS.eState = RESUME_WAIT; + break; + case RESUME_WAIT: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + ResumeS.eState = RESUME_START; + break; + case RESUME_START: + wCNTR = _GetCNTR(); + wCNTR |= CNTR_RESUME; + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_ON; + ResumeS.bESOFcnt = 10; + break; + case RESUME_ON: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + { + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_RESUME); + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_OFF; + remotewakeupon = 0; + } + break; + case RESUME_OFF: + case RESUME_ESOF: + default: + ResumeS.eState = RESUME_OFF; + break; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/inc/dfu_mal.h b/src/boards/SensorNode/usb/dfu/inc/dfu_mal.h new file mode 100644 index 000000000..ceb37091b --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/dfu_mal.h @@ -0,0 +1,74 @@ +/** + ****************************************************************************** + * @file dfu_mal.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Header for dfu_mal.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __DFU_MAL_H +#define __DFU_MAL_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" +#include "dfu_mal.h" +#include "usb_desc.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +#define MAL_OK 0 +#define MAL_FAIL 1 +#define MAX_USED_MEDIA 3 +#define MAL_MASK 0xFC000000 + +#define INTERNAL_FLASH_BASE 0x08000000 +#define SPI_FLASH_BASE 0x00000000 +#define NOR_FLASH_BASE 0x64000000 + +#define NOR_M29W128F 0x2212 +#define NOR_M29W128G 0x2221 +#define NOR_S29GL128 0x2221 + +/* utils macro ---------------------------------------------------------------*/ +#define _1st_BYTE(x) (uint8_t)((x)&0xFF) /* 1st addressing cycle */ +#define _2nd_BYTE(x) (uint8_t)(((x)&0xFF00)>>8) /* 2nd addressing cycle */ +#define _3rd_BYTE(x) (uint8_t)(((x)&0xFF0000)>>16) /* 3rd addressing cycle */ +#define _4th_BYTE(x) (uint8_t)(((x)&0xFF000000)>>24) /* 4th addressing cycle */ +/* Exported macro ------------------------------------------------------------*/ +#define SET_POLLING_TIMING(x) buffer[1] = _1st_BYTE(x);\ + buffer[2] = _2nd_BYTE(x);\ + buffer[3] = _3rd_BYTE(x); + +/* Exported functions ------------------------------------------------------- */ + +uint16_t MAL_Init (void); +uint16_t MAL_Erase (uint32_t SectorAddress); +uint16_t MAL_Write (uint32_t SectorAddress, uint32_t DataLength); +uint8_t *MAL_Read (uint32_t SectorAddress, uint32_t DataLength); +uint16_t MAL_GetStatus(uint32_t SectorAddress ,uint8_t Cmd, uint8_t *buffer); + +extern uint8_t MAL_Buffer[wTransferSize]; /* RAM Buffer for Downloaded Data */ +#endif /* __DFU_MAL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/inc/flash_if.h b/src/boards/SensorNode/usb/dfu/inc/flash_if.h new file mode 100644 index 000000000..d3aad9c53 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/flash_if.h @@ -0,0 +1,48 @@ +/** + ****************************************************************************** + * @file flash_if.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Header for flash_if.c file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __FLASH_IF_MAL_H +#define __FLASH_IF_MAL_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +uint16_t FLASH_If_Init(void); +uint16_t FLASH_If_Erase (uint32_t SectorAddress); +uint16_t FLASH_If_Write(uint32_t SectorAddress, uint32_t DataLength); +uint8_t *FLASH_If_Read (uint32_t SectorAddress, uint32_t DataLength); + +#endif /* __FLASH_IF_MAL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/inc/usb_conf.h b/src/boards/SensorNode/usb/dfu/inc/usb_conf.h new file mode 100644 index 000000000..d997e049e --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/usb_conf.h @@ -0,0 +1,121 @@ +/** + ****************************************************************************** + * @file usb_conf.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Device Firmware Upgrade (DFU) configuration file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CONF_H +#define __USB_CONF_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* These timings will be returned to the host when it checks the device + status during a write or erase operation to know how much time the host + should wait before issuing the next get status request. + These defines are set in usb_conf.h file. + The values of this table should be extracted from relative memories + datasheet (Typical or Maximum timming value for Sector Erase and for + 1024 bytes Write). All timings are expressed in millisecond unit (ms). + Note that "Sector" refers here to the memory unit used for Erase/Write + operations. It could be a sector, a page, a block, a word ... + If the erase operation is not supported, it is advised to set the erase + timing to 1 (which means 1ms: one USB frame). */ +#define SPI_FLASH_SECTOR_ERASE_TIME 3000 +#define SPI_FLASH_SECTOR_WRITE_TIME 20 + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + #define INTERN_FLASH_SECTOR_ERASE_TIME 100 + #define INTERN_FLASH_SECTOR_WRITE_TIME 104 +#else + #define INTERN_FLASH_SECTOR_ERASE_TIME 50 + #define INTERN_FLASH_SECTOR_WRITE_TIME 50 +#endif /* STM32L1XX_XD */ + +#define M29W128F_SECTOR_ERASE_TIME 1000 +#define M29W128F_SECTOR_WRITE_TIME 25 + +#define M29W128G_SECTOR_ERASE_TIME 1000 +#define M29W128G_SECTOR_WRITE_TIME 25 + +#define S29GL128_SECTOR_ERASE_TIME 1000 +#define S29GL128_SECTOR_WRITE_TIME 45 + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ +/*-------------------------------------------------------------*/ +/* EP_NUM */ +/* defines how many endpoints are used by the device */ +/*-------------------------------------------------------------*/ +#define EP_NUM (1) + +/*-------------------------------------------------------------*/ +/* -------------- Buffer Description Table -----------------*/ +/*-------------------------------------------------------------*/ +/* buffer table base address */ +/* buffer table base address */ +#define BTABLE_ADDRESS (0x00) + +/* EP0 */ +/* rx/tx buffer base address */ +#define ENDP0_RXADDR (0x10) +#define ENDP0_TXADDR (0x50) + + +/*-------------------------------------------------------------*/ +/* ------------------- ISTR events -------------------------*/ +/*-------------------------------------------------------------*/ +/* IMR_MSK */ +/* mask defining which events has to be handled */ +/* by the device application software */ +#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \ + | CNTR_ESOFM | CNTR_RESETM ) + +/* CTR service routines */ +/* associated to defined endpoints */ +#define EP1_IN_Callback NOP_Process +#define EP2_IN_Callback NOP_Process +#define EP3_IN_Callback NOP_Process +#define EP4_IN_Callback NOP_Process +#define EP5_IN_Callback NOP_Process +#define EP6_IN_Callback NOP_Process +#define EP7_IN_Callback NOP_Process + + +#define EP1_OUT_Callback NOP_Process +#define EP2_OUT_Callback NOP_Process +#define EP3_OUT_Callback NOP_Process +#define EP4_OUT_Callback NOP_Process +#define EP5_OUT_Callback NOP_Process +#define EP6_OUT_Callback NOP_Process +#define EP7_OUT_Callback NOP_Process + +#endif /*__USB_CONF_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/SensorNode/usb/dfu/inc/usb_desc.h b/src/boards/SensorNode/usb/dfu/inc/usb_desc.h new file mode 100644 index 000000000..7c3d9b4ca --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/usb_desc.h @@ -0,0 +1,76 @@ +/** + ****************************************************************************** + * @file usb_desc.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptor Header for Device Firmware Upgrade (DFU) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DESC_H +#define __USB_DESC_H +#include "usb-dfu-board.h" + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +#define DFU_SIZ_DEVICE_DESC 18 + +#define DFU_SIZ_CONFIG_DESC 27 + +#define DFU_SIZ_STRING_LANGID 4 +#define DFU_SIZ_STRING_VENDOR 38 +#define DFU_SIZ_STRING_PRODUCT 20 +#define DFU_SIZ_STRING_SERIAL 26 +#define DFU_SIZ_STRING_INTERFACE0 98 /* Flash Bank 0 */ + +#define DFU_SIZ_STRING_INTERFACE1 98 /* SPI Flash : M25P64*/ +#define DFU_SIZ_STRING_INTERFACE2 106 /* NOR Flash : M26M128*/ + +extern uint8_t DFU_DeviceDescriptor[DFU_SIZ_DEVICE_DESC]; +extern uint8_t DFU_ConfigDescriptor[DFU_SIZ_CONFIG_DESC]; +extern uint8_t DFU_StringLangId [DFU_SIZ_STRING_LANGID]; +extern uint8_t DFU_StringVendor [DFU_SIZ_STRING_VENDOR]; +extern uint8_t DFU_StringProduct [DFU_SIZ_STRING_PRODUCT]; +extern uint8_t DFU_StringSerial [DFU_SIZ_STRING_SERIAL]; +extern uint8_t DFU_StringInterface0 [DFU_SIZ_STRING_INTERFACE0]; +extern uint8_t DFU_StringInterface1 [DFU_SIZ_STRING_INTERFACE1]; +extern uint8_t DFU_StringInterface2_1 [DFU_SIZ_STRING_INTERFACE2]; +extern uint8_t DFU_StringInterface2_2 [DFU_SIZ_STRING_INTERFACE2]; +extern uint8_t DFU_StringInterface2_3 [DFU_SIZ_STRING_INTERFACE2]; + +#define bMaxPacketSize0 0x40 /* bMaxPacketSize0 = 64 bytes */ + +#define wTransferSize 0x0400 /* wTransferSize = 1024 bytes */ +/* bMaxPacketSize0 <= wTransferSize <= 32kbytes */ +#define wTransferSizeB0 0x00 +#define wTransferSizeB1 0x04 + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_DESC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/SensorNode/usb/dfu/inc/usb_istr.h b/src/boards/SensorNode/usb/dfu/inc/usb_istr.h new file mode 100644 index 000000000..d2a07f69e --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/usb_istr.h @@ -0,0 +1,95 @@ +/** + ****************************************************************************** + * @file usb_istr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief This file includes the peripherals header files in the user application. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_ISTR_H +#define __USB_ISTR_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_conf.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + + void USB_Istr(void); + +/* function prototypes Automatically built defining related macros */ + +void EP1_IN_Callback(void); +void EP2_IN_Callback(void); +void EP3_IN_Callback(void); +void EP4_IN_Callback(void); +void EP5_IN_Callback(void); +void EP6_IN_Callback(void); +void EP7_IN_Callback(void); + +void EP1_OUT_Callback(void); +void EP2_OUT_Callback(void); +void EP3_OUT_Callback(void); +void EP4_OUT_Callback(void); +void EP5_OUT_Callback(void); +void EP6_OUT_Callback(void); +void EP7_OUT_Callback(void); + +#ifdef CTR_CALLBACK +void CTR_Callback(void); +#endif + +#ifdef DOVR_CALLBACK +void DOVR_Callback(void); +#endif + +#ifdef ERR_CALLBACK +void ERR_Callback(void); +#endif + +#ifdef WKUP_CALLBACK +void WKUP_Callback(void); +#endif + +#ifdef SUSP_CALLBACK +void SUSP_Callback(void); +#endif + +#ifdef RESET_CALLBACK +void RESET_Callback(void); +#endif + +#ifdef SOF_CALLBACK +void SOF_Callback(void); +#endif + +#ifdef ESOF_CALLBACK +void ESOF_Callback(void); +#endif + +#endif /*__USB_ISTR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/inc/usb_prop.h b/src/boards/SensorNode/usb/dfu/inc/usb_prop.h new file mode 100644 index 000000000..ec8b2a3cc --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/usb_prop.h @@ -0,0 +1,141 @@ +/** + ****************************************************************************** + * @file usb_prop.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processing related to DFU demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PROP_H +#define __USB_PROP_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void DFU_init(void); +void DFU_Reset(void); +void DFU_SetConfiguration(void); +void DFU_SetDeviceAddress (void); +void DFU_Status_In (void); +void DFU_Status_Out (void); +RESULT DFU_Data_Setup(uint8_t); +RESULT DFU_NoData_Setup(uint8_t); +RESULT DFU_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting); +uint8_t *DFU_GetDeviceDescriptor(uint16_t ); +uint8_t *DFU_GetConfigDescriptor(uint16_t); +uint8_t *DFU_GetStringDescriptor(uint16_t); +uint8_t *UPLOAD(uint16_t Length); +uint8_t *DNLOAD(uint16_t Length); +uint8_t *GETSTATE(uint16_t Length); +uint8_t *GETSTATUS(uint16_t Length); +void DFU_write_crc (void); + +/* External variables --------------------------------------------------------*/ + +#define DFU_GetConfiguration NOP_Process +//#define DFU_SetConfiguration NOP_Process +#define DFU_GetInterface NOP_Process +#define DFU_SetInterface NOP_Process +#define DFU_GetStatus NOP_Process +#define DFU_ClearFeature NOP_Process +#define DFU_SetEndPointFeature NOP_Process +#define DFU_SetDeviceFeature NOP_Process +//#define DFU_SetDeviceAddress NOP_Process + +/*---------------------------------------------------------------------*/ +/* DFU definitions */ +/*---------------------------------------------------------------------*/ + +/**************************************************/ +/* DFU Requests */ +/**************************************************/ + +typedef enum _DFU_REQUESTS { + DFU_DNLOAD = 1, + DFU_UPLOAD, + DFU_GETSTATUS, + DFU_CLRSTATUS, + DFU_GETSTATE, + DFU_ABORT +} DFU_REQUESTS; + +/**************************************************/ +/* DFU Requests DFU states */ +/**************************************************/ + + +#define STATE_appIDLE 0 +#define STATE_appDETACH 1 +#define STATE_dfuIDLE 2 +#define STATE_dfuDNLOAD_SYNC 3 +#define STATE_dfuDNBUSY 4 +#define STATE_dfuDNLOAD_IDLE 5 +#define STATE_dfuMANIFEST_SYNC 6 +#define STATE_dfuMANIFEST 7 +#define STATE_dfuMANIFEST_WAIT_RESET 8 +#define STATE_dfuUPLOAD_IDLE 9 +#define STATE_dfuERROR 10 + +/**************************************************/ +/* DFU Requests DFU status */ +/**************************************************/ + +#define STATUS_OK 0x00 +#define STATUS_ERRTARGET 0x01 +#define STATUS_ERRFILE 0x02 +#define STATUS_ERRWRITE 0x03 +#define STATUS_ERRERASE 0x04 +#define STATUS_ERRCHECK_ERASED 0x05 +#define STATUS_ERRPROG 0x06 +#define STATUS_ERRVERIFY 0x07 +#define STATUS_ERRADDRESS 0x08 +#define STATUS_ERRNOTDONE 0x09 +#define STATUS_ERRFIRMWARE 0x0A +#define STATUS_ERRVENDOR 0x0B +#define STATUS_ERRUSBR 0x0C +#define STATUS_ERRPOR 0x0D +#define STATUS_ERRUNKNOWN 0x0E +#define STATUS_ERRSTALLEDPKT 0x0F + +/**************************************************/ +/* DFU Requests DFU states Manifestation State */ +/**************************************************/ + +#define Manifest_complete 0x00 +#define Manifest_In_Progress 0x01 + + +/**************************************************/ +/* Special Commands with Download Request */ +/**************************************************/ + +#define CMD_GETCOMMANDS 0x00 +#define CMD_SETADDRESSPOINTER 0x21 +#define CMD_ERASE 0x41 + +#endif /* __USB_PROP_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/inc/usb_pwr.h b/src/boards/SensorNode/usb/dfu/inc/usb_pwr.h new file mode 100644 index 000000000..3f56f16b5 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/inc/usb_pwr.h @@ -0,0 +1,68 @@ +/** + ****************************************************************************** + * @file usb_pwr.h + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management header + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_PWR_H +#define __USB_PWR_H +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _RESUME_STATE +{ + RESUME_EXTERNAL, + RESUME_INTERNAL, + RESUME_LATER, + RESUME_WAIT, + RESUME_START, + RESUME_ON, + RESUME_OFF, + RESUME_ESOF +} RESUME_STATE; + +typedef enum _DEVICE_STATE +{ + UNCONNECTED, + ATTACHED, + POWERED, + SUSPENDED, + ADDRESSED, + CONFIGURED +} DEVICE_STATE; +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void Suspend(void); +void Resume_Init(void); +void Resume(RESUME_STATE eResumeSetVal); +RESULT PowerOn(void); +RESULT PowerOff(void); +/* External variables --------------------------------------------------------*/ +extern __IO uint32_t bDeviceState; /* USB device status */ +extern __IO bool fSuspendEnabled; /* true when suspend is possible */ + +#endif /*__USB_PWR_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/src/dfu_mal.c b/src/boards/SensorNode/usb/dfu/src/dfu_mal.c new file mode 100644 index 000000000..bd42866ef --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/dfu_mal.c @@ -0,0 +1,174 @@ +/** + ****************************************************************************** + * @file dfu_mal.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Generic media access Layer + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb-dfu-board.h" +#include "dfu_mal.h" +#include "usb_lib.h" +#include "usb_type.h" +#include "usb_desc.h" +#include "flash_if.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint16_t (*pMAL_Init) (void); +uint16_t (*pMAL_Erase) (uint32_t SectorAddress); +uint16_t (*pMAL_Write) (uint32_t SectorAddress, uint32_t DataLength); +uint8_t *(*pMAL_Read) (uint32_t SectorAddress, uint32_t DataLength); +uint8_t MAL_Buffer[wTransferSize]; /* RAM Buffer for Downloaded Data */ + +extern ONE_DESCRIPTOR DFU_String_Descriptor[7]; + +/* This table holds the Typical Sector Erase and 1024 Bytes Write timings. + These timings will be returned to the host when it checks the device + status during a write or erase operation to know how much time the host + should wait before issuing the next get status request. + These defines are set in usb_conf.h file. + The values of this table should be extracted from relative memories + datasheet (Typical or Maximum timming value for Sector Erase and for + 1024 bytes Write). All timings are expressed in millisecond unit (ms). + Note that "Sector" refers here to the memory unit used for Erase/Write + operations. It could be a sector, a page, a block, a word ... + If the erase operation is not supported, it is advised to set the erase + timing to 1 (which means 1ms: one USB frame). */ +static const uint16_t TimingTable[5][2] = + { /* Sector Erase time, Sector Program time*/ + { SPI_FLASH_SECTOR_ERASE_TIME, SPI_FLASH_SECTOR_WRITE_TIME }, /* SPI Flash */ + { M29W128F_SECTOR_ERASE_TIME, M29W128F_SECTOR_WRITE_TIME }, /* NOR Flash M29W128F */ + { INTERN_FLASH_SECTOR_ERASE_TIME, INTERN_FLASH_SECTOR_WRITE_TIME }, /* Internal Flash */ + { M29W128G_SECTOR_ERASE_TIME, M29W128G_SECTOR_WRITE_TIME }, /* NOR Flash M29W128G */ + { S29GL128_SECTOR_ERASE_TIME, S29GL128_SECTOR_WRITE_TIME } /* NOR Flash S29GL128 */ + }; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : MAL_Init +* Description : Initializes the Media on the STM32 +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Init(void) +{ + + FLASH_If_Init(); /* Internal Flash */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : MAL_Erase +* Description : Erase sector +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Erase(uint32_t SectorAddress) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Erase = FLASH_If_Erase; + break; + + default: + return MAL_FAIL; + } + return pMAL_Erase(SectorAddress); +} + +/******************************************************************************* +* Function Name : MAL_Write +* Description : Write sectors +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t MAL_Write (uint32_t SectorAddress, uint32_t DataLength) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Write = FLASH_If_Write; + break; + + default: + return MAL_FAIL; + } + return pMAL_Write(SectorAddress, DataLength); +} + +/******************************************************************************* +* Function Name : MAL_Read +* Description : Read sectors +* Input : None +* Output : None +* Return : Buffer pointer +*******************************************************************************/ +uint8_t *MAL_Read (uint32_t SectorAddress, uint32_t DataLength) +{ + + switch (SectorAddress & MAL_MASK) + { + case INTERNAL_FLASH_BASE: + pMAL_Read = FLASH_If_Read; + break; + + default: + return 0; + } + return pMAL_Read (SectorAddress, DataLength); +} + +/******************************************************************************* +* Function Name : MAL_GetStatus +* Description : Get status +* Input : None +* Output : None +* Return : Buffer pointer +*******************************************************************************/ +uint16_t MAL_GetStatus(uint32_t SectorAddress , uint8_t Cmd, uint8_t *buffer) +{ + uint8_t x = (SectorAddress >> 26) & 0x03 ; /* 0x000000000 --> 0 */ + /* 0x640000000 --> 1 */ + /* 0x080000000 --> 2 */ + + uint8_t y = Cmd & 0x01; + + SET_POLLING_TIMING(TimingTable[x][y]); /* x: Erase/Write Timing */ + /* y: Media */ + return MAL_OK; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/src/flash_if.c b/src/boards/SensorNode/usb/dfu/src/flash_if.c new file mode 100644 index 000000000..e6caf417d --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/flash_if.c @@ -0,0 +1,171 @@ +/** + ****************************************************************************** + * @file flash_if.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief specific media access Layer for internal flash + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "flash_if.h" +#include "dfu_mal.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + uint32_t tHalfPage1[128/4]; + uint32_t tHalfPage2[128/4]; +#endif /* STM32L1XX_XD */ + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : FLASH_If_Init +* Description : Initializes the Media on the STM32 +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Init(void) +{ + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Erase +* Description : Erase sector +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Erase(uint32_t SectorAddress) +{ +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + FLASH_ClearFlag(FLASH_FLAG_PGAERR | FLASH_FLAG_OPTVERR); + FLASH_ErasePage(SectorAddress); +#else + FLASH_ErasePage(SectorAddress); +#endif /* STM32L1XX_XD */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Write +* Description : Write sectors +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +uint16_t FLASH_If_Write(uint32_t SectorAddress, uint32_t DataLength) +{ + uint32_t idx = 0; +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + __IO uint32_t* malPointer = (uint32_t *)MAL_Buffer; + __IO uint32_t* memPointer = (uint32_t *)SectorAddress; + __IO uint32_t memBuffer[32]; /* Temporary buffer holding data that will be written in a half-page space */ + __IO uint32_t* mempBuffer = memBuffer; + __IO uint32_t* tmp; +#endif /* STM32L1XX_XD */ + + if (DataLength & 0x3) /* Not an aligned data */ + { + for (idx = DataLength; idx < ((DataLength & 0xFFFC) + 4); idx++) + { + MAL_Buffer[idx] = 0xFF; + } + } + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + /* Reinitialize the intermediate buffer pointer */ + mempBuffer = memBuffer; + + /* If the address is not aligned to half-page fill the first location with existing data */ + if (((uint32_t)memPointer & 0x7F) != 0) + { + /* get the aligned address */ + tmp = (uint32_t *)((uint32_t)memPointer & 0xFFFFFF80); + + /* Read the first part from the memory */ + while (tmp < memPointer) + { + *(uint32_t *)(mempBuffer++) = *(uint32_t *)(tmp++); + } + } + + while (malPointer < (uint32_t*)(MAL_Buffer + DataLength)) + { + /* Fill with the received buffer */ + while (mempBuffer < (memBuffer + 32)) + { + /* If there are still data available in the received buffer */ + if (malPointer < ((uint32_t *)MAL_Buffer + DataLength)) + { + *(uint32_t *)(mempBuffer++) = *(uint32_t *)(malPointer++); + } + else /* no more data available in the received buffer: fill remaining with dummy 0 */ + { + *(uint32_t *)(mempBuffer++) = 0; + } + } + + /* Write the buffer to the memory*/ + FLASH_ProgramHalfPage(((uint32_t)memPointer & 0xFFFFFF80), (uint32_t *)(memBuffer)); + + /* Increment the memory pointer */ + memPointer = (uint32_t *)(((uint32_t)memPointer & 0xFFFFFF80) + (32*4)); + + /* Reinitialize the intermediate buffer pointer */ + mempBuffer = memBuffer; + } + +#else + + /* Data received are Word multiple */ + for (idx = 0; idx < DataLength; idx = idx + 4) + { + FLASH_ProgramWord(SectorAddress, *(uint32_t *)(MAL_Buffer + idx)); + SectorAddress += 4; + } +#endif /* STM32L1XX_XD */ + + return MAL_OK; +} + +/******************************************************************************* +* Function Name : FLASH_If_Read +* Description : Read sectors +* Input : None +* Output : None +* Return : buffer address pointer +*******************************************************************************/ +uint8_t *FLASH_If_Read (uint32_t SectorAddress, uint32_t DataLength) +{ + return (uint8_t*)(SectorAddress); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/src/usb_desc.c b/src/boards/SensorNode/usb/dfu/src/usb_desc.c new file mode 100644 index 000000000..7b1302d82 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/usb_desc.c @@ -0,0 +1,171 @@ +/** + ****************************************************************************** + * @file usb_desc.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Descriptors for Device Firmware Upgrade (DFU) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_desc.h" +#include "usb-dfu-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +uint8_t DFU_DeviceDescriptor[DFU_SIZ_DEVICE_DESC] = + { + 0x12, /* bLength */ + 0x01, /* bDescriptorType */ + 0x00, /* bcdUSB, version 1.00 */ + 0x01, + 0x00, /* bDeviceClass : See interface */ + 0x00, /* bDeviceSubClass : See interface*/ + 0x00, /* bDeviceProtocol : See interface */ + bMaxPacketSize0, /* bMaxPacketSize0 0x40 = 64 */ + 0x83, /* idVendor (0483) */ + 0x04, + 0x11, /* idProduct (0xDF11) DFU PiD*/ + 0xDF, + 0x00, /* bcdDevice*/ + 0x02, + + 0x01, /* iManufacturer : index of string Manufacturer */ + 0x02, /* iProduct : index of string descriptor of product*/ + 0x03, /* iSerialNumber : index of string serial number*/ + + 0x01 /*bNumConfigurations */ + }; + +/* +#elif defined (USE_STM32L152_EVAL) || defined (USE_STM32L152D_EVAL) +*/ +uint8_t DFU_ConfigDescriptor[DFU_SIZ_CONFIG_DESC] = + { + 0x09, /* bLength: Configuration Descriptor size */ + 0x02, /* bDescriptorType: Configuration */ + DFU_SIZ_CONFIG_DESC, /* wTotalLength: Bytes returned */ + 0x00, + 0x01, /* bNumInterfaces: 1 interface */ + 0x01, /* bConfigurationValue: */ + /* Configuration value */ + 0x00, /* iConfiguration: */ + /* Index of string descriptor */ + /* describing the configuration */ + 0xC0, /* bmAttributes: */ + /* bus powered */ + 0x32, /* MaxPower 100 mA */ + /* 09 */ + + /************ Descriptor of DFU interface 0 Alternate setting 0 *********/ + 0x09, /* bLength: Interface Descriptor size */ + 0x04, /* bDescriptorType: */ + /* Interface descriptor type */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x00, /* bNumEndpoints*/ + 0xFE, /* bInterfaceClass: Application Specific Class Code */ + 0x01, /* bInterfaceSubClass : Device Firmware Upgrade Code */ + 0x02, /* nInterfaceProtocol: DFU mode protocol */ + 0x04, /* iInterface: */ + /* Index of string descriptor */ + /* 18 */ + + /******************** DFU Functional Descriptor********************/ + 0x09, /*blength = 9 Bytes*/ + 0x21, /* DFU Functional Descriptor*/ + 0x0B, /*bmAttribute + + bitCanDnload = 1 (bit 0) + bitCanUpload = 1 (bit 1) + bitManifestationTolerant = 0 (bit 2) + bitWillDetach = 1 (bit 3) + Reserved (bit4-6) + bitAcceleratedST = 0 (bit 7)*/ + 0xFF, /*DetachTimeOut= 255 ms*/ + 0x00, + wTransferSizeB0, + wTransferSizeB1, /* TransferSize = 128 Bytes */ + 0x1A, /* bcdDFUVersion*/ + 0x01 + /***********************************************************/ + /*27*/ + + }; + +uint8_t DFU_StringLangId[DFU_SIZ_STRING_LANGID] = + { + DFU_SIZ_STRING_LANGID, + 0x03, + 0x09, + 0x04 /* LangID = 0x0409: U.S. English */ + }; + + +uint8_t DFU_StringVendor[DFU_SIZ_STRING_VENDOR] = + { + DFU_SIZ_STRING_VENDOR, + 0x03, + /* Manufacturer: "STMicroelectronics" */ + 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, + 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, + 'c', 0, 's', 0 + }; + +uint8_t DFU_StringProduct[DFU_SIZ_STRING_PRODUCT] = + { + DFU_SIZ_STRING_PRODUCT, + 0x03, + /* Product name: "STM32 DFU" */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'D', 0, 'F', 0, 'U', 0 + }; + +uint8_t DFU_StringSerial[DFU_SIZ_STRING_SERIAL] = + { + DFU_SIZ_STRING_SERIAL, + 0x03, + /* Serial number */ + 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0 + }; + +uint8_t DFU_StringInterface0[DFU_SIZ_STRING_INTERFACE0] = + { + DFU_SIZ_STRING_INTERFACE0, + 0x03, + // Interface 0: "@Internal Flash /0x08000000/48*256 a,464*256 g" + '@', 0, 'I', 0, 'n', 0, 't', 0, 'e', 0, 'r', 0, 'n', 0, 'a', 0, 'l', 0, /* 18 */ + ' ', 0, 'F', 0, 'l', 0, 'a', 0, 's', 0, 'h', 0, ' ', 0, ' ', 0, /* 16 */ + + '/', 0, '0', 0, 'x', 0, '0', 0, '8', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, /* 22 */ + + '/', 0, '4', 0, '8', 0, '*', 0, '2', 0, '5', 0, '6', 0, ' ', 0, 'a', 0, /* 18 */ + ',', 0, '4', 0, '6', 0, '4', 0, '*', 0, '2', 0, '5', 0, '6', 0, ' ', 0, 'g', 0, /* 20 */ + + }; + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/src/usb_istr.c b/src/boards/SensorNode/usb/dfu/src/usb_istr.c new file mode 100644 index 000000000..c86322687 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/usb_istr.c @@ -0,0 +1,231 @@ +/** + ****************************************************************************** + * @file usb_istr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief ISTR events interrupt service routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_prop.h" +#include "usb_pwr.h" +#include "usb_istr.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint16_t wIstr; /* ISTR register last read value */ +__IO uint8_t bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */ +__IO uint32_t esof_counter =0; /* expected SOF counter */ +__IO uint32_t wCNTR=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* function pointers to non-control endpoints service routines */ +void (*pEpInt_IN[7])(void) = + { + EP1_IN_Callback, + EP2_IN_Callback, + EP3_IN_Callback, + EP4_IN_Callback, + EP5_IN_Callback, + EP6_IN_Callback, + EP7_IN_Callback, + }; + +void (*pEpInt_OUT[7])(void) = + { + EP1_OUT_Callback, + EP2_OUT_Callback, + EP3_OUT_Callback, + EP4_OUT_Callback, + EP5_OUT_Callback, + EP6_OUT_Callback, + EP7_OUT_Callback, + }; + +/******************************************************************************* +* Function Name : USB_Istr +* Description : ISTR events interrupt service routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void USB_Istr(void) +{ + uint32_t i=0; + __IO uint32_t EP[8]; + + wIstr = _GetISTR(); + +#if (IMR_MSK & ISTR_CTR) + if (wIstr & ISTR_CTR & wInterrupt_Mask) + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + CTR_LP(); +#ifdef CTR_CALLBACK + CTR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_RESET) + if (wIstr & ISTR_RESET & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_RESET); + Device_Property.Reset(); +#ifdef RESET_CALLBACK + RESET_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_DOVR) + if (wIstr & ISTR_DOVR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_DOVR); +#ifdef DOVR_CALLBACK + DOVR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ERR) + if (wIstr & ISTR_ERR & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_ERR); +#ifdef ERR_CALLBACK + ERR_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_WKUP) + if (wIstr & ISTR_WKUP & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_WKUP); + Resume(RESUME_EXTERNAL); +#ifdef WKUP_CALLBACK + WKUP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SUSP) + if (wIstr & ISTR_SUSP & wInterrupt_Mask) + { + + /* check if SUSPEND is possible */ + if (fSuspendEnabled) + { + Suspend(); + } + else + { + /* if not possible then resume after xx ms */ + Resume(RESUME_LATER); + } + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + _SetISTR((uint16_t)CLR_SUSP); +#ifdef SUSP_CALLBACK + SUSP_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_SOF) + if (wIstr & ISTR_SOF & wInterrupt_Mask) + { + _SetISTR((uint16_t)CLR_SOF); + bIntPackSOF++; + +#ifdef SOF_CALLBACK + SOF_Callback(); +#endif + } +#endif + /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#if (IMR_MSK & ISTR_ESOF) + if (wIstr & ISTR_ESOF & wInterrupt_Mask) + { + /* clear ESOF flag in ISTR */ + _SetISTR((uint16_t)CLR_ESOF); + + if ((_GetFNR()&FNR_RXDP)!=0) + { + /* increment ESOF counter */ + esof_counter ++; + + /* test if we enter in ESOF more than 3 times with FSUSP =0 and RXDP =1=>> possible missing SUSP flag*/ + if ((esof_counter >3)&&((_GetCNTR()&CNTR_FSUSP)==0)) + { + /* this a sequence to apply a force RESET*/ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + esof_counter = 0; + } + } + else + { + esof_counter = 0; + } + + /* resume handling timing is made with ESOFs */ + Resume(RESUME_ESOF); /* request without change of the machine state */ + +#ifdef ESOF_CALLBACK + ESOF_Callback(); +#endif + } +#endif +} /* USB_Istr */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/src/boards/SensorNode/usb/dfu/src/usb_prop.c b/src/boards/SensorNode/usb/dfu/src/usb_prop.c new file mode 100644 index 000000000..d5b58eab4 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/usb_prop.c @@ -0,0 +1,730 @@ +/** + ****************************************************************************** + * @file usb_prop.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief All processings related to DFU demo + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb-dfu-board.h" +#include "usb_conf.h" +#include "usb_prop.h" +#include "usb_desc.h" +#include "usb_pwr.h" +#include "dfu_mal.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint32_t wBlockNum = 0, wlength = 0; +uint32_t Manifest_State = Manifest_complete; +uint32_t Pointer = ApplicationAddress; /* Base Address to Erase, Program or Read */ + +DEVICE Device_Table = + { + EP_NUM, + 1 + }; + +DEVICE_PROP Device_Property = + { + DFU_init, + DFU_Reset, + DFU_Status_In, + DFU_Status_Out, + DFU_Data_Setup, + DFU_NoData_Setup, + DFU_Get_Interface_Setting, + DFU_GetDeviceDescriptor, + DFU_GetConfigDescriptor, + DFU_GetStringDescriptor, + 0, /*DFU_EP0Buffer*/ + bMaxPacketSize0 /*Max Packet size*/ + }; + +USER_STANDARD_REQUESTS User_Standard_Requests = + { + DFU_GetConfiguration, + DFU_SetConfiguration, + DFU_GetInterface, + DFU_SetInterface, + DFU_GetStatus, + DFU_ClearFeature, + DFU_SetEndPointFeature, + DFU_SetDeviceFeature, + DFU_SetDeviceAddress + }; + +ONE_DESCRIPTOR Device_Descriptor = + { + (uint8_t*)DFU_DeviceDescriptor, + DFU_SIZ_DEVICE_DESC + }; + +ONE_DESCRIPTOR Config_Descriptor = + { + (uint8_t*)DFU_ConfigDescriptor, + DFU_SIZ_CONFIG_DESC + }; + ONE_DESCRIPTOR DFU_String_Descriptor[5] = + { + { (uint8_t*)DFU_StringLangId, DFU_SIZ_STRING_LANGID }, + { (uint8_t*)DFU_StringVendor, DFU_SIZ_STRING_VENDOR }, + { (uint8_t*)DFU_StringProduct, DFU_SIZ_STRING_PRODUCT }, + { (uint8_t*)DFU_StringSerial, DFU_SIZ_STRING_SERIAL }, + { (uint8_t*)DFU_StringInterface0, DFU_SIZ_STRING_INTERFACE0 } + }; + +/* Extern variables ----------------------------------------------------------*/ +extern uint8_t DeviceState ; +extern uint8_t DeviceStatus[6]; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : DFU_init. +* Description : DFU init routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_init(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + /* Update the serial number string descriptor with the data from the unique ID*/ + Get_SerialNum(); + + pInfo->Current_Configuration = 0; + + /* Connect the device */ + PowerOn(); + + /* Perform basic device initialization operations */ + USB_SIL_Init(); + + /* Enable USB interrupts */ + USB_Interrupts_Config(); + + bDeviceState = UNCONNECTED; +} + +/******************************************************************************* +* Function Name : DFU_Reset. +* Description : DFU reset routine +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Reset(void) +{ + /* Set DFU_DEVICE as not configured */ + Device_Info.Current_Configuration = 0; + + /* Current Feature initialization */ + pInformation->Current_Feature = DFU_ConfigDescriptor[7]; + + _SetBTABLE(BTABLE_ADDRESS); + + /* Initialize Endpoint 0 */ + _SetEPType(ENDP0, EP_CONTROL); + _SetEPTxStatus(ENDP0, EP_TX_NAK); + _SetEPRxAddr(ENDP0, ENDP0_RXADDR); + SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); + _SetEPTxAddr(ENDP0, ENDP0_TXADDR); + SetEPTxCount(ENDP0, Device_Property.MaxPacketSize); + Clear_Status_Out(ENDP0); + SetEPRxValid(ENDP0); + + /* Set this device to response on default address */ + SetDeviceAddress(0); + + /* Set the new control state of the device to Attached */ + bDeviceState = ATTACHED; +} +/******************************************************************************* +* Function Name : DFU_SetConfiguration. +* Description : Update the device state to configured. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_SetConfiguration(void) +{ + DEVICE_INFO *pInfo = &Device_Info; + + if (pInfo->Current_Configuration != 0) + { + /* Device configured */ + bDeviceState = CONFIGURED; + } +} +/******************************************************************************* +* Function Name : DFU_SetConfiguration. +* Description : Update the device state to addressed. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_SetDeviceAddress (void) +{ + bDeviceState = ADDRESSED; +} +/******************************************************************************* +* Function Name : DFU_Status_In. +* Description : DFU status IN routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Status_In(void) +{} + +/******************************************************************************* +* Function Name : DFU_Status_Out. +* Description : DFU status OUT routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_Status_Out (void) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint32_t Addr; + + if (pInfo->USBbRequest == DFU_GETSTATUS) + { + if (DeviceState == STATE_dfuDNBUSY) + { + if (wBlockNum == 0) /* Decode the Special Command*/ + { + if ((MAL_Buffer[0] == CMD_GETCOMMANDS) && (wlength == 1)) + {} + else if (( MAL_Buffer[0] == CMD_SETADDRESSPOINTER ) && (wlength == 5)) + { + Pointer = MAL_Buffer[1]; + Pointer += MAL_Buffer[2] << 8; + Pointer += MAL_Buffer[3] << 16; + Pointer += MAL_Buffer[4] << 24; + } + else if (( MAL_Buffer[0] == CMD_ERASE ) && (wlength == 5)) + { + Pointer = MAL_Buffer[1]; + Pointer += MAL_Buffer[2] << 8; + Pointer += MAL_Buffer[3] << 16; + Pointer += MAL_Buffer[4] << 24; + MAL_Erase(Pointer); + } + } + + else if (wBlockNum > 1) // Download Command + { + Addr = ((wBlockNum - 2) * wTransferSize) + Pointer; + MAL_Write(Addr, wlength); + } + wlength = 0; + wBlockNum = 0; + + DeviceState = STATE_dfuDNLOAD_SYNC; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + return; + } + else if (DeviceState == STATE_dfuMANIFEST)/* Manifestation in progress*/ + { + DFU_write_crc(); + return; + } + } + return; +} + +/******************************************************************************* +* Function Name : DFU_Data_Setup. +* Description : Handle the data class specific requests. +* Input : RequestNb. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_Data_Setup(uint8_t RequestNo) +{ + uint8_t *(*CopyRoutine)(uint16_t); + CopyRoutine = NULL; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + if (RequestNo == DFU_UPLOAD && (DeviceState == STATE_dfuIDLE + || DeviceState == STATE_dfuUPLOAD_IDLE )) + { + CopyRoutine = UPLOAD; + } + else if (RequestNo == DFU_DNLOAD && (DeviceState == STATE_dfuIDLE + || DeviceState == STATE_dfuDNLOAD_IDLE)) + { + DeviceState = STATE_dfuDNLOAD_SYNC; + CopyRoutine = DNLOAD; + } + else if (RequestNo == DFU_GETSTATE) + { + CopyRoutine = GETSTATE; + } + else if (RequestNo == DFU_GETSTATUS) + { + CopyRoutine = GETSTATUS; + } + else + { + return USB_UNSUPPORT; + } + } + else + { + return USB_UNSUPPORT; + } + + if (CopyRoutine == NULL) + { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : DFU_NoData_Setup. +* Description : Handle the No data class specific requests. +* Input : Request Nb. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_NoData_Setup(uint8_t RequestNo) +{ + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + { + /*DFU_NDLOAD*/ + if (RequestNo == DFU_DNLOAD) + { + /* End of DNLOAD operation*/ + if (DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuIDLE ) + { + Manifest_State = Manifest_In_Progress; + DeviceState = STATE_dfuMANIFEST_SYNC; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + DeviceStatus[4] = DeviceState; + return USB_SUCCESS; + } + } + /*DFU_UPLOAD*/ + else if (RequestNo == DFU_UPLOAD) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + DeviceStatus[4] = DeviceState; + return USB_SUCCESS; + } + + /*DFU_CLRSTATUS*/ + else if (RequestNo == DFU_CLRSTATUS) + { + + if (DeviceState == STATE_dfuERROR) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[0] = STATUS_OK;/*bStatus*/ + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState;/*bState*/ + DeviceStatus[5] = 0;/*iString*/ + } + else + { /*State Error*/ + DeviceState = STATE_dfuERROR; + DeviceStatus[0] = STATUS_ERRUNKNOWN;/*bStatus*/ + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState;/*bState*/ + DeviceStatus[5] = 0;/*iString*/ + } + return USB_SUCCESS; + } + /*DFU_ABORT*/ + else if (RequestNo == DFU_ABORT) + { + if (DeviceState == STATE_dfuIDLE || DeviceState == STATE_dfuDNLOAD_SYNC + || DeviceState == STATE_dfuDNLOAD_IDLE || DeviceState == STATE_dfuMANIFEST_SYNC + || DeviceState == STATE_dfuUPLOAD_IDLE ) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[0] = STATUS_OK; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; /*bwPollTimeout=0ms*/ + DeviceStatus[4] = DeviceState; + DeviceStatus[5] = 0; /*iString*/ + wBlockNum = 0; + wlength = 0; + } + return USB_SUCCESS; + } + } + + + return USB_UNSUPPORT; + +} /* End of DFU_NoData_Setup */ + +/******************************************************************************* +* Function Name : DFU_GetDeviceDescriptor. +* Description : Gets the device descriptor. +* Input : Length. +* Output : None. +* Return : The address of the device descriptor. +*******************************************************************************/ +uint8_t *DFU_GetDeviceDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData(Length, &Device_Descriptor); +} + +/******************************************************************************* +* Function Name : DFU_GetConfigDescriptor. +* Description : Gets the configuration descriptor. +* Input : Length. +* Output : None. +* Return : The address of the configuration descriptor. +*******************************************************************************/ +uint8_t *DFU_GetConfigDescriptor(uint16_t Length) +{ + return Standard_GetDescriptorData (Length, &Config_Descriptor); +} + +/******************************************************************************* +* Function Name : DFU_GetStringDescriptor. +* Description : Gets the string descriptors according to the needed index. +* Input : Length. +* Output : None. +* Return : The address of the string descriptors. +*******************************************************************************/ +uint8_t *DFU_GetStringDescriptor(uint16_t Length) +{ + uint8_t wValue0 = pInformation->USBwValue0; + + if (wValue0 > 8) + { + return NULL; + } + else + { + return Standard_GetDescriptorData(Length, &DFU_String_Descriptor[wValue0]); + } +} + +/******************************************************************************* +* Function Name : DFU_Get_Interface_Setting. +* Description : tests the interface and the alternate setting according to the +* supported one. +* Input : - Interface : interface number. +* - AlternateSetting : Alternate Setting number. +* Output : None. +* Return : USB_SUCCESS or USB_UNSUPPORT. +*******************************************************************************/ +RESULT DFU_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting) +{ + if (AlternateSetting > 3) + { + return USB_UNSUPPORT; /* In this application we don't have more than 3 AlternateSettings */ + } + else if (Interface > 2) + { + return USB_UNSUPPORT; /* In this application we have only 1 interfaces */ + } + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : UPLOAD +* Description : Upload routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *UPLOAD(uint16_t Length) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint8_t B1, B0; + uint16_t offset, returned; + uint8_t *Phy_Addr = NULL; + uint32_t Addr = 0; + + B0 = pInfo->USBwValues.bw.bb0; + B1 = pInfo->USBwValues.bw.bb1; + wBlockNum = (uint16_t)B1; + wBlockNum = wBlockNum * 0x100; + wBlockNum += (uint16_t)B0; /* wBlockNum value updated*/ + + B0 = pInfo->USBwLengths.bw.bb0; + B1 = pInfo->USBwLengths.bw.bb1; + wlength = (uint16_t)B0; + wlength = wlength * 0x100; + wlength += (uint16_t)B1; /* wlength value updated*/ + + offset = pInformation->Ctrl_Info.Usb_wOffset; + + if (wBlockNum == 0) /* Get Command */ + { + if (wlength > 3) + { + DeviceState = STATE_dfuIDLE ; + } + else + { + DeviceState = STATE_dfuUPLOAD_IDLE; + } + + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + MAL_Buffer[0] = CMD_GETCOMMANDS; + MAL_Buffer[1] = CMD_SETADDRESSPOINTER; + MAL_Buffer[2] = CMD_ERASE; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 3 ; + return NULL; + } + + return(&MAL_Buffer[0]); + } + else if (wBlockNum > 1) + { + DeviceState = STATE_dfuUPLOAD_IDLE ; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + Addr = ((wBlockNum - 2) * wTransferSize) + Pointer; /* Change is Accelerated*/ + + Phy_Addr = MAL_Read(Addr, wlength); + returned = wlength - offset; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = returned ; + return NULL; + } + return(Phy_Addr + offset); + } + else /* unsupported wBlockNum */ + { + DeviceState = STATUS_ERRSTALLEDPKT; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + return NULL; + } +} + +/******************************************************************************* +* Function Name : DNLOAD +* Description : Download routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *DNLOAD (uint16_t Length) +{ + DEVICE_INFO *pInfo = &Device_Info; + uint8_t B1, B0; + uint16_t offset, returned; + + B0 = pInfo->USBwValues.bw.bb0; + B1 = pInfo->USBwValues.bw.bb1; + wBlockNum = (uint16_t)B1; + wBlockNum = wBlockNum * 0x100; + wBlockNum += (uint16_t)B0; + B0 = pInfo->USBwLengths.bw.bb0; + B1 = pInfo->USBwLengths.bw.bb1; + wlength = (uint16_t)B0; + wlength = wlength * 0x100; + wlength += (uint16_t)B1; + + offset = pInfo->Ctrl_Info.Usb_wOffset; + + DeviceState = STATE_dfuDNLOAD_SYNC; + DeviceStatus[4] = DeviceState; + + returned = wlength - offset; + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = returned ; + return NULL; + } + + return((uint8_t*)MAL_Buffer + offset); +} + +/******************************************************************************* +* Function Name : GETSTATE. +* Description : Get State request routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *GETSTATE(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 1 ; + return NULL; + } + else + return(&DeviceState); +} + +/******************************************************************************* +* Function Name : GETSTATUS. +* Description : Get Status request routine. +* Input : Length. +* Output : None. +* Return : Pointer to data. +*******************************************************************************/ +uint8_t *GETSTATUS(uint16_t Length) +{ + switch (DeviceState) + { + case STATE_dfuDNLOAD_SYNC: + if (wlength != 0) + { + DeviceState = STATE_dfuDNBUSY; + DeviceStatus[4] = DeviceState; + if ((wBlockNum == 0) && (MAL_Buffer[0] == CMD_ERASE)) + { + MAL_GetStatus(Pointer, 0, DeviceStatus); + } + else + { + MAL_GetStatus(Pointer, 1, DeviceStatus); + } + } + else /* (wlength==0)*/ + { + DeviceState = STATE_dfuDNLOAD_IDLE; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + } + break; + case STATE_dfuMANIFEST_SYNC : + if (Manifest_State == Manifest_In_Progress) + { + DeviceState = STATE_dfuMANIFEST; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 1; /*bwPollTimeout = 1ms*/ + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + //break; + } + else if (Manifest_State == Manifest_complete && Config_Descriptor.Descriptor[20] + & 0x04) + { + DeviceState = STATE_dfuIDLE; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + //break; + } + break; + default : + break; + } + + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 6 ; + return NULL; + } + else + return(&(DeviceStatus[0])); +} + +/******************************************************************************* +* Function Name : DFU_write_crc. +* Description : DFU Write CRC routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DFU_write_crc(void) +{ + Manifest_State = Manifest_complete; + + if (Config_Descriptor.Descriptor[20] & 0x04) + { + DeviceState = STATE_dfuMANIFEST_SYNC; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + return; + } + else + { + DeviceState = STATE_dfuMANIFEST_WAIT_RESET; + DeviceStatus[4] = DeviceState; + DeviceStatus[1] = 0; + DeviceStatus[2] = 0; + DeviceStatus[3] = 0; + + Reset_Device(); + + return; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/SensorNode/usb/dfu/src/usb_pwr.c b/src/boards/SensorNode/usb/dfu/src/usb_pwr.c new file mode 100644 index 000000000..6fa37f727 --- /dev/null +++ b/src/boards/SensorNode/usb/dfu/src/usb_pwr.c @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file usb_pwr.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Connection/disconnection & power management + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +#include "usb_conf.h" +#include "usb_pwr.h" +#include "usb-dfu-board.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint32_t bDeviceState = UNCONNECTED; /* USB device status */ +__IO bool fSuspendEnabled = TRUE; /* true when suspend is possible */ +__IO uint32_t EP[8]; + +struct +{ + __IO RESUME_STATE eState; + __IO uint8_t bESOFcnt; +} +ResumeS; + +__IO uint32_t remotewakeupon=0; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Extern function prototypes ------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : PowerOn +* Description : +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOn(void) +{ + uint16_t wRegVal; + + /*** cable plugged-in ? ***/ + USB_Cable_Config(ENABLE); + + /*** CNTR_PWDN = 0 ***/ + wRegVal = CNTR_FRES; + _SetCNTR(wRegVal); + + /*** CNTR_FRES = 0 ***/ + wInterrupt_Mask = 0; + _SetCNTR(wInterrupt_Mask); + /*** Clear pending interrupts ***/ + _SetISTR(0); + /*** Set interrupt mask ***/ + wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; + _SetCNTR(wInterrupt_Mask); + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : PowerOff +* Description : handles switch-off conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +RESULT PowerOff() +{ + /* disable all interrupts and force USB reset */ + _SetCNTR(CNTR_FRES); + /* clear interrupt status register */ + _SetISTR(0); + /* Disable the Pull-Up*/ + USB_Cable_Config(DISABLE); + /* switch-off device */ + _SetCNTR(CNTR_FRES + CNTR_PDWN); + /* sw variables reset */ + /* ... */ + + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Suspend +* Description : sets suspend mode operating conditions +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Suspend(void) +{ + uint32_t i =0; + uint16_t wCNTR; + uint32_t tmpreg = 0; + __IO uint32_t savePWR_CR=0; + /* suspend preparation */ + /* ... */ + + /*Store CNTR value */ + wCNTR = _GetCNTR(); + + /* This a sequence to apply a force RESET to handle a robustness case */ + + /*Store endpoints registers status */ + for (i=0;i<8;i++) EP[i] = _GetENDPOINT(i); + + /* unmask RESET flag */ + wCNTR|=CNTR_RESETM; + _SetCNTR(wCNTR); + + /*apply FRES */ + wCNTR|=CNTR_FRES; + _SetCNTR(wCNTR); + + /*clear FRES*/ + wCNTR&=~CNTR_FRES; + _SetCNTR(wCNTR); + + /*poll for RESET flag in ISTR*/ + while((_GetISTR()&ISTR_RESET) == 0); + + /* clear RESET flag in ISTR */ + _SetISTR((uint16_t)CLR_RESET); + + /*restore Enpoints*/ + for (i=0;i<8;i++) + _SetENDPOINT(i, EP[i]); + + /* Now it is safe to enter macrocell in suspend mode */ + wCNTR |= CNTR_FSUSP; + _SetCNTR(wCNTR); + + /* force low-power mode in the macrocell */ + wCNTR = _GetCNTR(); + wCNTR |= CNTR_LPMODE; + _SetCNTR(wCNTR); + + /*prepare entry in low power mode (STOP mode)*/ + /* Select the regulator state in STOP mode*/ + savePWR_CR = PWR->CR; + tmpreg = PWR->CR; + /* Clear PDDS and LPDS bits */ + tmpreg &= ((uint32_t)0xFFFFFFFC); + /* Set LPDS bit according to PWR_Regulator value */ + tmpreg |= PWR_Regulator_LowPower; + /* Store the new value */ + PWR->CR = tmpreg; + /* Set SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; +#else + SCB->SCR |= SCB_SCR_SLEEPDEEP; +#endif + + /* enter system in STOP mode, only when wakeup flag in not set */ + if((_GetISTR()&ISTR_WKUP)==0) + { + __WFI(); + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } + else + { + /* Clear Wakeup flag */ + _SetISTR(CLR_WKUP); + /* clear FSUSP to abort entry in suspend mode */ + wCNTR = _GetCNTR(); + wCNTR&=~CNTR_FSUSP; + _SetCNTR(wCNTR); + + /*restore sleep mode configuration */ + /* restore Power regulator config in sleep mode*/ + PWR->CR = savePWR_CR; + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ +#if defined (STM32F30X) || defined (STM32F37X) + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +#else + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP); +#endif + } +} + +/******************************************************************************* +* Function Name : Resume_Init +* Description : Handles wake-up restoring normal operations +* Input : None. +* Output : None. +* Return : USB_SUCCESS. +*******************************************************************************/ +void Resume_Init(void) +{ + uint16_t wCNTR; + + /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ + /* restart the clocks */ + /* ... */ + + /* CNTR_LPMODE = 0 */ + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_LPMODE); + _SetCNTR(wCNTR); + + /* restore full power */ + /* ... on connected devices */ + Leave_LowPowerMode(); + + /* reset FSUSP bit */ + _SetCNTR(IMR_MSK); + + /* reverse suspend preparation */ + /* ... */ + +} + +/******************************************************************************* +* Function Name : Resume +* Description : This is the state machine handling resume operations and +* timing sequence. The control is based on the Resume structure +* variables and on the ESOF interrupt calling this subroutine +* without changing machine state. +* Input : a state machine value (RESUME_STATE) +* RESUME_ESOF doesn't change ResumeS.eState allowing +* decrementing of the ESOF counter in different states. +* Output : None. +* Return : None. +*******************************************************************************/ +void Resume(RESUME_STATE eResumeSetVal) +{ + uint16_t wCNTR; + + if (eResumeSetVal != RESUME_ESOF) + ResumeS.eState = eResumeSetVal; + switch (ResumeS.eState) + { + case RESUME_EXTERNAL: + if (remotewakeupon ==0) + { + Resume_Init(); + ResumeS.eState = RESUME_OFF; + } + else /* RESUME detected during the RemoteWAkeup signalling => keep RemoteWakeup handling*/ + { + ResumeS.eState = RESUME_ON; + } + break; + case RESUME_INTERNAL: + Resume_Init(); + ResumeS.eState = RESUME_START; + remotewakeupon = 1; + break; + case RESUME_LATER: + ResumeS.bESOFcnt = 2; + ResumeS.eState = RESUME_WAIT; + break; + case RESUME_WAIT: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + ResumeS.eState = RESUME_START; + break; + case RESUME_START: + wCNTR = _GetCNTR(); + wCNTR |= CNTR_RESUME; + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_ON; + ResumeS.bESOFcnt = 10; + break; + case RESUME_ON: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) + { + wCNTR = _GetCNTR(); + wCNTR &= (~CNTR_RESUME); + _SetCNTR(wCNTR); + ResumeS.eState = RESUME_OFF; + remotewakeupon = 0; + } + break; + case RESUME_OFF: + case RESUME_ESOF: + default: + ResumeS.eState = RESUME_OFF; + break; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/Release_Notes.html b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/Release_Notes.html new file mode 100644 index 000000000..cfaab7d12 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/Release_Notes.html @@ -0,0 +1,871 @@ + + + + + + Release Notes for STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver + + + + + + + + +
+

+ +   + + +

+
+ + + + + + +
+ + + + + + + + + +
+

+ + Back to Release page + + + + + +

+

+ Release Notes for +

+

+  STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver + + + + +

+

+ Copyright 2012 STMicroelectronics + + + + + + + +

+

+ + + + + + + +

+

+ +   + + +

+ + + + + + +
+

+ Contents + + +

+
    +
  1. + + Update History + + +
  2. +
  3. + + License + + +
  4. +
+

+ Update History


+

V4.0.0 / 28-August-2012

+ + +

Main +Changes

+ + + +
    +
  • Remove support of the USB OTG Full speed in device (peripheral) mode embedded in the STM32F105x/7x devices
  • +
      +
    • All source files starting with prefix otgd_fs (ex. otgd_fs_pcd.c/.h) were removed
    • +
    • There is no change on the API dealing with the USB FS Device  peripheral, full compatibility is maintained vs. V3.4.0
      +
    • +
    • The  STM32F105x/7x devices are supported by the STM32F105/7xx, STM32F2xx and STM32F4xx USB On-The-Go Host and Device Library
      +
    • +
    +
  • usb_type.h: remove Types definition (available in stm32xxx.h file, ex. stm32f10x.h)
    +
  • +
+

V3.4.0 / 12-March-2012

+

Main +Changes

+ +
  • All source files: license disclaimer text update and add link to the License file on ST Internet.
+

+ V3.3.0 / 21-March-2011 +

+

+ + Main Changes + + + +

+
    +
  • + Update library driver to support + + + STM32L15x Medium-Density Low-Power + + + devices (add STM32L1xx defines). +
  • +
  • + Minor fixes: +
  • +
      +
    • + otgd_fs_cal.c: correction of iteration number in OTGD_FS_CoreInitDev() function. +
    • +
    +
      +
    • + usb_core.c: update the remote wakeup checking condition in NoData_Setup0() function. +
    • +
    +
      +
    • + otgd_fs_int.c: update the data count in case of 0 packet length in OTGD_FS_Handle_RxStatusQueueLevel_ISR() function. +
    • +
    +
+ + + + + +

+ + License + + +

Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at:


Unless +required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See +the License for the specific language governing permissions and +limitations under the License.
+

+
+
+

+ For + complete documentation on STM32 + Microcontrollers visit www.st.com/STM32 + + + +

+

+ + + + +

+
+

+   + +

+
+ \ No newline at end of file diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_core.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_core.h new file mode 100644 index 000000000..bf303f79e --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_core.h @@ -0,0 +1,259 @@ +/** + ****************************************************************************** + * @file usb_core.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Standard protocol processing functions prototypes + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CORE_H +#define __USB_CORE_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _CONTROL_STATE +{ + WAIT_SETUP, /* 0 */ + SETTING_UP, /* 1 */ + IN_DATA, /* 2 */ + OUT_DATA, /* 3 */ + LAST_IN_DATA, /* 4 */ + LAST_OUT_DATA, /* 5 */ + WAIT_STATUS_IN, /* 7 */ + WAIT_STATUS_OUT, /* 8 */ + STALLED, /* 9 */ + PAUSE /* 10 */ +} CONTROL_STATE; /* The state machine states of a control pipe */ + +typedef struct OneDescriptor +{ + uint8_t *Descriptor; + uint16_t Descriptor_Size; +} +ONE_DESCRIPTOR, *PONE_DESCRIPTOR; +/* All the request process routines return a value of this type + If the return value is not SUCCESS or NOT_READY, + the software will STALL the correspond endpoint */ +typedef enum _RESULT +{ + USB_SUCCESS = 0, /* Process successfully */ + USB_ERROR, + USB_UNSUPPORT, + USB_NOT_READY /* The process has not been finished, endpoint will be + NAK to further request */ +} RESULT; + + +/*-*-*-*-*-*-*-*-*-*-* Definitions for endpoint level -*-*-*-*-*-*-*-*-*-*-*-*/ +typedef struct _ENDPOINT_INFO +{ + /* When send data out of the device, + CopyData() is used to get data buffer 'Length' bytes data + if Length is 0, + CopyData() returns the total length of the data + if the request is not supported, returns 0 + (NEW Feature ) + if CopyData() returns -1, the calling routine should not proceed + further and will resume the SETUP process by the class device + if Length is not 0, + CopyData() returns a pointer to indicate the data location + Usb_wLength is the data remain to be sent, + Usb_wOffset is the Offset of original data + When receive data from the host, + CopyData() is used to get user data buffer which is capable + of Length bytes data to copy data from the endpoint buffer. + if Length is 0, + CopyData() returns the available data length, + if Length is not 0, + CopyData() returns user buffer address + Usb_rLength is the data remain to be received, + Usb_rPointer is the Offset of data buffer + */ + uint16_t Usb_wLength; + uint16_t Usb_wOffset; + uint16_t PacketSize; + uint8_t *(*CopyData)(uint16_t Length); +}ENDPOINT_INFO; + +/*-*-*-*-*-*-*-*-*-*-*-* Definitions for device level -*-*-*-*-*-*-*-*-*-*-*-*/ + +typedef struct _DEVICE +{ + uint8_t Total_Endpoint; /* Number of endpoints that are used */ + uint8_t Total_Configuration;/* Number of configuration available */ +} +DEVICE; + +typedef union +{ + uint16_t w; + struct BW + { + uint8_t bb1; + uint8_t bb0; + } + bw; +} uint16_t_uint8_t; + +typedef struct _DEVICE_INFO +{ + uint8_t USBbmRequestType; /* bmRequestType */ + uint8_t USBbRequest; /* bRequest */ + uint16_t_uint8_t USBwValues; /* wValue */ + uint16_t_uint8_t USBwIndexs; /* wIndex */ + uint16_t_uint8_t USBwLengths; /* wLength */ + + uint8_t ControlState; /* of type CONTROL_STATE */ + uint8_t Current_Feature; + uint8_t Current_Configuration; /* Selected configuration */ + uint8_t Current_Interface; /* Selected interface of current configuration */ + uint8_t Current_AlternateSetting;/* Selected Alternate Setting of current + interface*/ + + ENDPOINT_INFO Ctrl_Info; +}DEVICE_INFO; + +typedef struct _DEVICE_PROP +{ + void (*Init)(void); /* Initialize the device */ + void (*Reset)(void); /* Reset routine of this device */ + + /* Device dependent process after the status stage */ + void (*Process_Status_IN)(void); + void (*Process_Status_OUT)(void); + + /* Procedure of process on setup stage of a class specified request with data stage */ + /* All class specified requests with data stage are processed in Class_Data_Setup + Class_Data_Setup() + responses to check all special requests and fills ENDPOINT_INFO + according to the request + If IN tokens are expected, then wLength & wOffset will be filled + with the total transferring bytes and the starting position + If OUT tokens are expected, then rLength & rOffset will be filled + with the total expected bytes and the starting position in the buffer + + If the request is valid, Class_Data_Setup returns SUCCESS, else UNSUPPORT + + CAUTION: + Since GET_CONFIGURATION & GET_INTERFACE are highly related to + the individual classes, they will be checked and processed here. + */ + RESULT (*Class_Data_Setup)(uint8_t RequestNo); + + /* Procedure of process on setup stage of a class specified request without data stage */ + /* All class specified requests without data stage are processed in Class_NoData_Setup + Class_NoData_Setup + responses to check all special requests and perform the request + + CAUTION: + Since SET_CONFIGURATION & SET_INTERFACE are highly related to + the individual classes, they will be checked and processed here. + */ + RESULT (*Class_NoData_Setup)(uint8_t RequestNo); + + /*Class_Get_Interface_Setting + This function is used by the file usb_core.c to test if the selected Interface + and Alternate Setting (uint8_t Interface, uint8_t AlternateSetting) are supported by + the application. + This function is writing by user. It should return "SUCCESS" if the Interface + and Alternate Setting are supported by the application or "UNSUPPORT" if they + are not supported. */ + + RESULT (*Class_Get_Interface_Setting)(uint8_t Interface, uint8_t AlternateSetting); + + uint8_t* (*GetDeviceDescriptor)(uint16_t Length); + uint8_t* (*GetConfigDescriptor)(uint16_t Length); + uint8_t* (*GetStringDescriptor)(uint16_t Length); + + /* This field is not used in current library version. It is kept only for + compatibility with previous versions */ + void* RxEP_buffer; + + uint8_t MaxPacketSize; + +}DEVICE_PROP; + +typedef struct _USER_STANDARD_REQUESTS +{ + void (*User_GetConfiguration)(void); /* Get Configuration */ + void (*User_SetConfiguration)(void); /* Set Configuration */ + void (*User_GetInterface)(void); /* Get Interface */ + void (*User_SetInterface)(void); /* Set Interface */ + void (*User_GetStatus)(void); /* Get Status */ + void (*User_ClearFeature)(void); /* Clear Feature */ + void (*User_SetEndPointFeature)(void); /* Set Endpoint Feature */ + void (*User_SetDeviceFeature)(void); /* Set Device Feature */ + void (*User_SetDeviceAddress)(void); /* Set Device Address */ +} +USER_STANDARD_REQUESTS; + +/* Exported constants --------------------------------------------------------*/ +#define Type_Recipient (pInformation->USBbmRequestType & (REQUEST_TYPE | RECIPIENT)) + +#define Usb_rLength Usb_wLength +#define Usb_rOffset Usb_wOffset + +#define USBwValue USBwValues.w +#define USBwValue0 USBwValues.bw.bb0 +#define USBwValue1 USBwValues.bw.bb1 +#define USBwIndex USBwIndexs.w +#define USBwIndex0 USBwIndexs.bw.bb0 +#define USBwIndex1 USBwIndexs.bw.bb1 +#define USBwLength USBwLengths.w +#define USBwLength0 USBwLengths.bw.bb0 +#define USBwLength1 USBwLengths.bw.bb1 + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +uint8_t Setup0_Process(void); +uint8_t Post0_Process(void); +uint8_t Out0_Process(void); +uint8_t In0_Process(void); + +RESULT Standard_SetEndPointFeature(void); +RESULT Standard_SetDeviceFeature(void); + +uint8_t *Standard_GetConfiguration(uint16_t Length); +RESULT Standard_SetConfiguration(void); +uint8_t *Standard_GetInterface(uint16_t Length); +RESULT Standard_SetInterface(void); +uint8_t *Standard_GetDescriptorData(uint16_t Length, PONE_DESCRIPTOR pDesc); + +uint8_t *Standard_GetStatus(uint16_t Length); +RESULT Standard_ClearFeature(void); +void SetDeviceAddress(uint8_t); +void NOP_Process(void); + +extern DEVICE_PROP Device_Property; +extern USER_STANDARD_REQUESTS User_Standard_Requests; +extern DEVICE Device_Table; +extern DEVICE_INFO Device_Info; + +/* cells saving status during interrupt servicing */ +extern __IO uint16_t SaveRState; +extern __IO uint16_t SaveTState; + +#endif /* __USB_CORE_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_def.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_def.h new file mode 100644 index 000000000..7f6e1b508 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_def.h @@ -0,0 +1,92 @@ +/** + ****************************************************************************** + * @file usb_def.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Definitions related to USB Core + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DEF_H +#define __USB_DEF_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _RECIPIENT_TYPE +{ + DEVICE_RECIPIENT, /* Recipient device */ + INTERFACE_RECIPIENT, /* Recipient interface */ + ENDPOINT_RECIPIENT, /* Recipient endpoint */ + OTHER_RECIPIENT +} RECIPIENT_TYPE; + + +typedef enum _STANDARD_REQUESTS +{ + GET_STATUS = 0, + CLEAR_FEATURE, + RESERVED1, + SET_FEATURE, + RESERVED2, + SET_ADDRESS, + GET_DESCRIPTOR, + SET_DESCRIPTOR, + GET_CONFIGURATION, + SET_CONFIGURATION, + GET_INTERFACE, + SET_INTERFACE, + TOTAL_sREQUEST, /* Total number of Standard request */ + SYNCH_FRAME = 12 +} STANDARD_REQUESTS; + +/* Definition of "USBwValue" */ +typedef enum _DESCRIPTOR_TYPE +{ + DEVICE_DESCRIPTOR = 1, + CONFIG_DESCRIPTOR, + STRING_DESCRIPTOR, + INTERFACE_DESCRIPTOR, + ENDPOINT_DESCRIPTOR +} DESCRIPTOR_TYPE; + +/* Feature selector of a SET_FEATURE or CLEAR_FEATURE */ +typedef enum _FEATURE_SELECTOR +{ + ENDPOINT_STALL, + DEVICE_REMOTE_WAKEUP +} FEATURE_SELECTOR; + +/* Exported constants --------------------------------------------------------*/ +/* Definition of "USBbmRequestType" */ +#define REQUEST_TYPE 0x60 /* Mask to get request type */ +#define STANDARD_REQUEST 0x00 /* Standard request */ +#define CLASS_REQUEST 0x20 /* Class request */ +#define VENDOR_REQUEST 0x40 /* Vendor request */ + +#define RECIPIENT 0x1F /* Mask to get recipient */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +#endif /* __USB_DEF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_init.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_init.h new file mode 100644 index 000000000..44b528cbd --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_init.h @@ -0,0 +1,62 @@ +/** + ****************************************************************************** + * @file usb_init.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Initialization routines & global variables + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_INIT_H +#define __USB_INIT_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void USB_Init(void); + +/* External variables --------------------------------------------------------*/ +/* The number of current endpoint, it will be used to specify an endpoint */ +extern uint8_t EPindex; +/* The number of current device, it is an index to the Device_Table */ +/*extern uint8_t Device_no; */ +/* Points to the DEVICE_INFO structure of current device */ +/* The purpose of this register is to speed up the execution */ +extern DEVICE_INFO* pInformation; +/* Points to the DEVICE_PROP structure of current device */ +/* The purpose of this register is to speed up the execution */ +extern DEVICE_PROP* pProperty; +/* Temporary save the state of Rx & Tx status. */ +/* Whenever the Rx or Tx state is changed, its value is saved */ +/* in this variable first and will be set to the EPRB or EPRA */ +/* at the end of interrupt process */ +extern USER_STANDARD_REQUESTS *pUser_Standard_Requests; + +extern uint16_t SaveState ; +extern uint16_t wInterrupt_Mask; + +#endif /* __USB_INIT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_int.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_int.h new file mode 100644 index 000000000..307ab14ea --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_int.h @@ -0,0 +1,45 @@ +/** + ****************************************************************************** + * @file usb_int.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Endpoint CTR (Low and High) interrupt's service routines prototypes + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_INT_H +#define __USB_INT_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void CTR_LP(void); +void CTR_HP(void); + +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_INT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_lib.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_lib.h new file mode 100644 index 000000000..9add79b74 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_lib.h @@ -0,0 +1,52 @@ +/** + ****************************************************************************** + * @file usb_lib.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief USB library include files + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_LIB_H +#define __USB_LIB_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_type.h" +#include "board.h" +#include "usb_regs.h" +#include "usb_def.h" +#include "usb_core.h" +#include "usb_init.h" +#include "usb_sil.h" +#include "usb_mem.h" +#include "usb_int.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_LIB_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_mem.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_mem.h new file mode 100644 index 000000000..0b2910060 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_mem.h @@ -0,0 +1,45 @@ +/** + ****************************************************************************** + * @file usb_mem.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Utility prototypes functions for memory/PMA transfers + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_MEM_H +#define __USB_MEM_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); +void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); + +/* External variables --------------------------------------------------------*/ + +#endif /*__USB_MEM_H*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_regs.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_regs.h new file mode 100644 index 000000000..87e0a008a --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_regs.h @@ -0,0 +1,680 @@ +/** + ****************************************************************************** + * @file usb_regs.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Interface prototype functions to USB cell registers + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_REGS_H +#define __USB_REGS_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +typedef enum _EP_DBUF_DIR +{ + /* double buffered endpoint direction */ + EP_DBUF_ERR, + EP_DBUF_OUT, + EP_DBUF_IN +}EP_DBUF_DIR; + +/* endpoint buffer number */ +enum EP_BUF_NUM +{ + EP_NOBUF, + EP_BUF0, + EP_BUF1 +}; + +/* Exported constants --------------------------------------------------------*/ +#define RegBase (0x40005C00L) /* USB_IP Peripheral Registers base address */ +#define PMAAddr (0x40006000L) /* USB_IP Packet Memory Area base address */ + +/******************************************************************************/ +/* General registers */ +/******************************************************************************/ + +/* Control register */ +#define CNTR ((__IO unsigned *)(RegBase + 0x40)) +/* Interrupt status register */ +#define ISTR ((__IO unsigned *)(RegBase + 0x44)) +/* Frame number register */ +#define FNR ((__IO unsigned *)(RegBase + 0x48)) +/* Device address register */ +#define DADDR ((__IO unsigned *)(RegBase + 0x4C)) +/* Buffer Table address register */ +#define BTABLE ((__IO unsigned *)(RegBase + 0x50)) +/******************************************************************************/ +/* Endpoint registers */ +/******************************************************************************/ +#define EP0REG ((__IO unsigned *)(RegBase)) /* endpoint 0 register address */ + +/* Endpoint Addresses (w/direction) */ +#define EP0_OUT ((uint8_t)0x00) +#define EP0_IN ((uint8_t)0x80) +#define EP1_OUT ((uint8_t)0x01) +#define EP1_IN ((uint8_t)0x81) +#define EP2_OUT ((uint8_t)0x02) +#define EP2_IN ((uint8_t)0x82) +#define EP3_OUT ((uint8_t)0x03) +#define EP3_IN ((uint8_t)0x83) +#define EP4_OUT ((uint8_t)0x04) +#define EP4_IN ((uint8_t)0x84) +#define EP5_OUT ((uint8_t)0x05) +#define EP5_IN ((uint8_t)0x85) +#define EP6_OUT ((uint8_t)0x06) +#define EP6_IN ((uint8_t)0x86) +#define EP7_OUT ((uint8_t)0x07) +#define EP7_IN ((uint8_t)0x87) + +/* endpoints enumeration */ +#define ENDP0 ((uint8_t)0) +#define ENDP1 ((uint8_t)1) +#define ENDP2 ((uint8_t)2) +#define ENDP3 ((uint8_t)3) +#define ENDP4 ((uint8_t)4) +#define ENDP5 ((uint8_t)5) +#define ENDP6 ((uint8_t)6) +#define ENDP7 ((uint8_t)7) + +/******************************************************************************/ +/* ISTR interrupt events */ +/******************************************************************************/ +#define ISTR_CTR (0x8000) /* Correct TRansfer (clear-only bit) */ +#define ISTR_DOVR (0x4000) /* DMA OVeR/underrun (clear-only bit) */ +#define ISTR_ERR (0x2000) /* ERRor (clear-only bit) */ +#define ISTR_WKUP (0x1000) /* WaKe UP (clear-only bit) */ +#define ISTR_SUSP (0x0800) /* SUSPend (clear-only bit) */ +#define ISTR_RESET (0x0400) /* RESET (clear-only bit) */ +#define ISTR_SOF (0x0200) /* Start Of Frame (clear-only bit) */ +#define ISTR_ESOF (0x0100) /* Expected Start Of Frame (clear-only bit) */ + + +#define ISTR_DIR (0x0010) /* DIRection of transaction (read-only bit) */ +#define ISTR_EP_ID (0x000F) /* EndPoint IDentifier (read-only bit) */ + +#define CLR_CTR (~ISTR_CTR) /* clear Correct TRansfer bit */ +#define CLR_DOVR (~ISTR_DOVR) /* clear DMA OVeR/underrun bit*/ +#define CLR_ERR (~ISTR_ERR) /* clear ERRor bit */ +#define CLR_WKUP (~ISTR_WKUP) /* clear WaKe UP bit */ +#define CLR_SUSP (~ISTR_SUSP) /* clear SUSPend bit */ +#define CLR_RESET (~ISTR_RESET) /* clear RESET bit */ +#define CLR_SOF (~ISTR_SOF) /* clear Start Of Frame bit */ +#define CLR_ESOF (~ISTR_ESOF) /* clear Expected Start Of Frame bit */ + +/******************************************************************************/ +/* CNTR control register bits definitions */ +/******************************************************************************/ +#define CNTR_CTRM (0x8000) /* Correct TRansfer Mask */ +#define CNTR_DOVRM (0x4000) /* DMA OVeR/underrun Mask */ +#define CNTR_ERRM (0x2000) /* ERRor Mask */ +#define CNTR_WKUPM (0x1000) /* WaKe UP Mask */ +#define CNTR_SUSPM (0x0800) /* SUSPend Mask */ +#define CNTR_RESETM (0x0400) /* RESET Mask */ +#define CNTR_SOFM (0x0200) /* Start Of Frame Mask */ +#define CNTR_ESOFM (0x0100) /* Expected Start Of Frame Mask */ + + +#define CNTR_RESUME (0x0010) /* RESUME request */ +#define CNTR_FSUSP (0x0008) /* Force SUSPend */ +#define CNTR_LPMODE (0x0004) /* Low-power MODE */ +#define CNTR_PDWN (0x0002) /* Power DoWN */ +#define CNTR_FRES (0x0001) /* Force USB RESet */ + +/******************************************************************************/ +/* FNR Frame Number Register bit definitions */ +/******************************************************************************/ +#define FNR_RXDP (0x8000) /* status of D+ data line */ +#define FNR_RXDM (0x4000) /* status of D- data line */ +#define FNR_LCK (0x2000) /* LoCKed */ +#define FNR_LSOF (0x1800) /* Lost SOF */ +#define FNR_FN (0x07FF) /* Frame Number */ +/******************************************************************************/ +/* DADDR Device ADDRess bit definitions */ +/******************************************************************************/ +#define DADDR_EF (0x80) +#define DADDR_ADD (0x7F) +/******************************************************************************/ +/* Endpoint register */ +/******************************************************************************/ +/* bit positions */ +#define EP_CTR_RX (0x8000) /* EndPoint Correct TRansfer RX */ +#define EP_DTOG_RX (0x4000) /* EndPoint Data TOGGLE RX */ +#define EPRX_STAT (0x3000) /* EndPoint RX STATus bit field */ +#define EP_SETUP (0x0800) /* EndPoint SETUP */ +#define EP_T_FIELD (0x0600) /* EndPoint TYPE */ +#define EP_KIND (0x0100) /* EndPoint KIND */ +#define EP_CTR_TX (0x0080) /* EndPoint Correct TRansfer TX */ +#define EP_DTOG_TX (0x0040) /* EndPoint Data TOGGLE TX */ +#define EPTX_STAT (0x0030) /* EndPoint TX STATus bit field */ +#define EPADDR_FIELD (0x000F) /* EndPoint ADDRess FIELD */ + +/* EndPoint REGister MASK (no toggle fields) */ +#define EPREG_MASK (EP_CTR_RX|EP_SETUP|EP_T_FIELD|EP_KIND|EP_CTR_TX|EPADDR_FIELD) + +/* EP_TYPE[1:0] EndPoint TYPE */ +#define EP_TYPE_MASK (0x0600) /* EndPoint TYPE Mask */ +#define EP_BULK (0x0000) /* EndPoint BULK */ +#define EP_CONTROL (0x0200) /* EndPoint CONTROL */ +#define EP_ISOCHRONOUS (0x0400) /* EndPoint ISOCHRONOUS */ +#define EP_INTERRUPT (0x0600) /* EndPoint INTERRUPT */ +#define EP_T_MASK (~EP_T_FIELD & EPREG_MASK) + + +/* EP_KIND EndPoint KIND */ +#define EPKIND_MASK (~EP_KIND & EPREG_MASK) + +/* STAT_TX[1:0] STATus for TX transfer */ +#define EP_TX_DIS (0x0000) /* EndPoint TX DISabled */ +#define EP_TX_STALL (0x0010) /* EndPoint TX STALLed */ +#define EP_TX_NAK (0x0020) /* EndPoint TX NAKed */ +#define EP_TX_VALID (0x0030) /* EndPoint TX VALID */ +#define EPTX_DTOG1 (0x0010) /* EndPoint TX Data TOGgle bit1 */ +#define EPTX_DTOG2 (0x0020) /* EndPoint TX Data TOGgle bit2 */ +#define EPTX_DTOGMASK (EPTX_STAT|EPREG_MASK) + +/* STAT_RX[1:0] STATus for RX transfer */ +#define EP_RX_DIS (0x0000) /* EndPoint RX DISabled */ +#define EP_RX_STALL (0x1000) /* EndPoint RX STALLed */ +#define EP_RX_NAK (0x2000) /* EndPoint RX NAKed */ +#define EP_RX_VALID (0x3000) /* EndPoint RX VALID */ +#define EPRX_DTOG1 (0x1000) /* EndPoint RX Data TOGgle bit1 */ +#define EPRX_DTOG2 (0x2000) /* EndPoint RX Data TOGgle bit1 */ +#define EPRX_DTOGMASK (EPRX_STAT|EPREG_MASK) +/* Exported macro ------------------------------------------------------------*/ +/* SetCNTR */ +#define _SetCNTR(wRegValue) (*CNTR = (uint16_t)wRegValue) + +/* SetISTR */ +#define _SetISTR(wRegValue) (*ISTR = (uint16_t)wRegValue) + +/* SetDADDR */ +#define _SetDADDR(wRegValue) (*DADDR = (uint16_t)wRegValue) + +/* SetBTABLE */ +#define _SetBTABLE(wRegValue)(*BTABLE = (uint16_t)(wRegValue & 0xFFF8)) + +/* GetCNTR */ +#define _GetCNTR() ((uint16_t) *CNTR) + +/* GetISTR */ +#define _GetISTR() ((uint16_t) *ISTR) + +/* GetFNR */ +#define _GetFNR() ((uint16_t) *FNR) + +/* GetDADDR */ +#define _GetDADDR() ((uint16_t) *DADDR) + +/* GetBTABLE */ +#define _GetBTABLE() ((uint16_t) *BTABLE) + +/* SetENDPOINT */ +#define _SetENDPOINT(bEpNum,wRegValue) (*(EP0REG + bEpNum)= \ + (uint16_t)wRegValue) + +/* GetENDPOINT */ +#define _GetENDPOINT(bEpNum) ((uint16_t)(*(EP0REG + bEpNum))) + +/******************************************************************************* +* Macro Name : SetEPType +* Description : sets the type in the endpoint register(bits EP_TYPE[1:0]) +* Input : bEpNum: Endpoint Number. +* wType +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPType(bEpNum,wType) (_SetENDPOINT(bEpNum,\ + ((_GetENDPOINT(bEpNum) & EP_T_MASK) | wType ))) + +/******************************************************************************* +* Macro Name : GetEPType +* Description : gets the type in the endpoint register(bits EP_TYPE[1:0]) +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint Type +*******************************************************************************/ +#define _GetEPType(bEpNum) (_GetENDPOINT(bEpNum) & EP_T_FIELD) + +/******************************************************************************* +* Macro Name : SetEPTxStatus +* Description : sets the status for tx transfer (bits STAT_TX[1:0]). +* Input : bEpNum: Endpoint Number. +* wState: new state +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPTxStatus(bEpNum,wState) {\ + register uint16_t _wRegVal; \ + _wRegVal = _GetENDPOINT(bEpNum) & EPTX_DTOGMASK;\ + /* toggle first bit ? */ \ + if((EPTX_DTOG1 & wState)!= 0) \ + _wRegVal ^= EPTX_DTOG1; \ + /* toggle second bit ? */ \ + if((EPTX_DTOG2 & wState)!= 0) \ + _wRegVal ^= EPTX_DTOG2; \ + _SetENDPOINT(bEpNum, (_wRegVal | EP_CTR_RX|EP_CTR_TX)); \ + } /* _SetEPTxStatus */ + +/******************************************************************************* +* Macro Name : SetEPRxStatus +* Description : sets the status for rx transfer (bits STAT_TX[1:0]) +* Input : bEpNum: Endpoint Number. +* wState: new state. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPRxStatus(bEpNum,wState) {\ + register uint16_t _wRegVal; \ + \ + _wRegVal = _GetENDPOINT(bEpNum) & EPRX_DTOGMASK;\ + /* toggle first bit ? */ \ + if((EPRX_DTOG1 & wState)!= 0) \ + _wRegVal ^= EPRX_DTOG1; \ + /* toggle second bit ? */ \ + if((EPRX_DTOG2 & wState)!= 0) \ + _wRegVal ^= EPRX_DTOG2; \ + _SetENDPOINT(bEpNum, (_wRegVal | EP_CTR_RX|EP_CTR_TX)); \ + } /* _SetEPRxStatus */ + +/******************************************************************************* +* Macro Name : SetEPRxTxStatus +* Description : sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0]) +* Input : bEpNum: Endpoint Number. +* wStaterx: new state. +* wStatetx: new state. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPRxTxStatus(bEpNum,wStaterx,wStatetx) {\ + register uint32_t _wRegVal; \ + \ + _wRegVal = _GetENDPOINT(bEpNum) & (EPRX_DTOGMASK |EPTX_STAT) ;\ + /* toggle first bit ? */ \ + if((EPRX_DTOG1 & wStaterx)!= 0) \ + _wRegVal ^= EPRX_DTOG1; \ + /* toggle second bit ? */ \ + if((EPRX_DTOG2 & wStaterx)!= 0) \ + _wRegVal ^= EPRX_DTOG2; \ + /* toggle first bit ? */ \ + if((EPTX_DTOG1 & wStatetx)!= 0) \ + _wRegVal ^= EPTX_DTOG1; \ + /* toggle second bit ? */ \ + if((EPTX_DTOG2 & wStatetx)!= 0) \ + _wRegVal ^= EPTX_DTOG2; \ + _SetENDPOINT(bEpNum, _wRegVal | EP_CTR_RX|EP_CTR_TX); \ + } /* _SetEPRxTxStatus */ +/******************************************************************************* +* Macro Name : GetEPTxStatus / GetEPRxStatus +* Description : gets the status for tx/rx transfer (bits STAT_TX[1:0] +* /STAT_RX[1:0]) +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : status . +*******************************************************************************/ +#define _GetEPTxStatus(bEpNum) ((uint16_t)_GetENDPOINT(bEpNum) & EPTX_STAT) + +#define _GetEPRxStatus(bEpNum) ((uint16_t)_GetENDPOINT(bEpNum) & EPRX_STAT) + +/******************************************************************************* +* Macro Name : SetEPTxValid / SetEPRxValid +* Description : sets directly the VALID tx/rx-status into the enpoint register +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPTxValid(bEpNum) (_SetEPTxStatus(bEpNum, EP_TX_VALID)) + +#define _SetEPRxValid(bEpNum) (_SetEPRxStatus(bEpNum, EP_RX_VALID)) + +/******************************************************************************* +* Macro Name : GetTxStallStatus / GetRxStallStatus. +* Description : checks stall condition in an endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : TRUE = endpoint in stall condition. +*******************************************************************************/ +#define _GetTxStallStatus(bEpNum) (_GetEPTxStatus(bEpNum) \ + == EP_TX_STALL) +#define _GetRxStallStatus(bEpNum) (_GetEPRxStatus(bEpNum) \ + == EP_RX_STALL) + +/******************************************************************************* +* Macro Name : SetEP_KIND / ClearEP_KIND. +* Description : set & clear EP_KIND bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \ + (EP_CTR_RX|EP_CTR_TX|((_GetENDPOINT(bEpNum) | EP_KIND) & EPREG_MASK)))) +#define _ClearEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \ + (EP_CTR_RX|EP_CTR_TX|(_GetENDPOINT(bEpNum) & EPKIND_MASK)))) + +/******************************************************************************* +* Macro Name : Set_Status_Out / Clear_Status_Out. +* Description : Sets/clears directly STATUS_OUT bit in the endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _Set_Status_Out(bEpNum) _SetEP_KIND(bEpNum) +#define _Clear_Status_Out(bEpNum) _ClearEP_KIND(bEpNum) + +/******************************************************************************* +* Macro Name : SetEPDoubleBuff / ClearEPDoubleBuff. +* Description : Sets/clears directly EP_KIND bit in the endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPDoubleBuff(bEpNum) _SetEP_KIND(bEpNum) +#define _ClearEPDoubleBuff(bEpNum) _ClearEP_KIND(bEpNum) + +/******************************************************************************* +* Macro Name : ClearEP_CTR_RX / ClearEP_CTR_TX. +* Description : Clears bit CTR_RX / CTR_TX in the endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _ClearEP_CTR_RX(bEpNum) (_SetENDPOINT(bEpNum,\ + _GetENDPOINT(bEpNum) & 0x7FFF & EPREG_MASK)) +#define _ClearEP_CTR_TX(bEpNum) (_SetENDPOINT(bEpNum,\ + _GetENDPOINT(bEpNum) & 0xFF7F & EPREG_MASK)) + +/******************************************************************************* +* Macro Name : ToggleDTOG_RX / ToggleDTOG_TX . +* Description : Toggles DTOG_RX / DTOG_TX bit in the endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _ToggleDTOG_RX(bEpNum) (_SetENDPOINT(bEpNum, \ + EP_CTR_RX|EP_CTR_TX|EP_DTOG_RX | (_GetENDPOINT(bEpNum) & EPREG_MASK))) +#define _ToggleDTOG_TX(bEpNum) (_SetENDPOINT(bEpNum, \ + EP_CTR_RX|EP_CTR_TX|EP_DTOG_TX | (_GetENDPOINT(bEpNum) & EPREG_MASK))) + +/******************************************************************************* +* Macro Name : ClearDTOG_RX / ClearDTOG_TX. +* Description : Clears DTOG_RX / DTOG_TX bit in the endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _ClearDTOG_RX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_RX) != 0)\ + _ToggleDTOG_RX(bEpNum) +#define _ClearDTOG_TX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_TX) != 0)\ + _ToggleDTOG_TX(bEpNum) +/******************************************************************************* +* Macro Name : SetEPAddress. +* Description : Sets address in an endpoint register. +* Input : bEpNum: Endpoint Number. +* bAddr: Address. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,\ + EP_CTR_RX|EP_CTR_TX|(_GetENDPOINT(bEpNum) & EPREG_MASK) | bAddr) + +/******************************************************************************* +* Macro Name : GetEPAddress. +* Description : Gets address in an endpoint register. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _GetEPAddress(bEpNum) ((uint8_t)(_GetENDPOINT(bEpNum) & EPADDR_FIELD)) + +#define _pEPTxAddr(bEpNum) ((uint32_t *)((_GetBTABLE()+bEpNum*8 )*2 + PMAAddr)) +#define _pEPTxCount(bEpNum) ((uint32_t *)((_GetBTABLE()+bEpNum*8+2)*2 + PMAAddr)) +#define _pEPRxAddr(bEpNum) ((uint32_t *)((_GetBTABLE()+bEpNum*8+4)*2 + PMAAddr)) +#define _pEPRxCount(bEpNum) ((uint32_t *)((_GetBTABLE()+bEpNum*8+6)*2 + PMAAddr)) + +/******************************************************************************* +* Macro Name : SetEPTxAddr / SetEPRxAddr. +* Description : sets address of the tx/rx buffer. +* Input : bEpNum: Endpoint Number. +* wAddr: address to be set (must be word aligned). +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPTxAddr(bEpNum,wAddr) (*_pEPTxAddr(bEpNum) = ((wAddr >> 1) << 1)) +#define _SetEPRxAddr(bEpNum,wAddr) (*_pEPRxAddr(bEpNum) = ((wAddr >> 1) << 1)) + +/******************************************************************************* +* Macro Name : GetEPTxAddr / GetEPRxAddr. +* Description : Gets address of the tx/rx buffer. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : address of the buffer. +*******************************************************************************/ +#define _GetEPTxAddr(bEpNum) ((uint16_t)*_pEPTxAddr(bEpNum)) +#define _GetEPRxAddr(bEpNum) ((uint16_t)*_pEPRxAddr(bEpNum)) + +/******************************************************************************* +* Macro Name : SetEPCountRxReg. +* Description : Sets counter of rx buffer with no. of blocks. +* Input : pdwReg: pointer to counter. +* wCount: Counter. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _BlocksOf32(dwReg,wCount,wNBlocks) {\ + wNBlocks = wCount >> 5;\ + if((wCount & 0x1f) == 0)\ + wNBlocks--;\ + *pdwReg = (uint32_t)((wNBlocks << 10) | 0x8000);\ + }/* _BlocksOf32 */ + +#define _BlocksOf2(dwReg,wCount,wNBlocks) {\ + wNBlocks = wCount >> 1;\ + if((wCount & 0x1) != 0)\ + wNBlocks++;\ + *pdwReg = (uint32_t)(wNBlocks << 10);\ + }/* _BlocksOf2 */ + +#define _SetEPCountRxReg(dwReg,wCount) {\ + uint16_t wNBlocks;\ + if(wCount > 62){_BlocksOf32(dwReg,wCount,wNBlocks);}\ + else {_BlocksOf2(dwReg,wCount,wNBlocks);}\ + }/* _SetEPCountRxReg */ + + + +#define _SetEPRxDblBuf0Count(bEpNum,wCount) {\ + uint32_t *pdwReg = _pEPTxCount(bEpNum); \ + _SetEPCountRxReg(pdwReg, wCount);\ + } +/******************************************************************************* +* Macro Name : SetEPTxCount / SetEPRxCount. +* Description : sets counter for the tx/rx buffer. +* Input : bEpNum: endpoint number. +* wCount: Counter value. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPTxCount(bEpNum,wCount) (*_pEPTxCount(bEpNum) = wCount) +#define _SetEPRxCount(bEpNum,wCount) {\ + uint32_t *pdwReg = _pEPRxCount(bEpNum); \ + _SetEPCountRxReg(pdwReg, wCount);\ + } +/******************************************************************************* +* Macro Name : GetEPTxCount / GetEPRxCount. +* Description : gets counter of the tx buffer. +* Input : bEpNum: endpoint number. +* Output : None. +* Return : Counter value. +*******************************************************************************/ +#define _GetEPTxCount(bEpNum)((uint16_t)(*_pEPTxCount(bEpNum)) & 0x3ff) +#define _GetEPRxCount(bEpNum)((uint16_t)(*_pEPRxCount(bEpNum)) & 0x3ff) + +/******************************************************************************* +* Macro Name : SetEPDblBuf0Addr / SetEPDblBuf1Addr. +* Description : Sets buffer 0/1 address in a double buffer endpoint. +* Input : bEpNum: endpoint number. +* : wBuf0Addr: buffer 0 address. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPDblBuf0Addr(bEpNum,wBuf0Addr) {_SetEPTxAddr(bEpNum, wBuf0Addr);} +#define _SetEPDblBuf1Addr(bEpNum,wBuf1Addr) {_SetEPRxAddr(bEpNum, wBuf1Addr);} + +/******************************************************************************* +* Macro Name : SetEPDblBuffAddr. +* Description : Sets addresses in a double buffer endpoint. +* Input : bEpNum: endpoint number. +* : wBuf0Addr: buffer 0 address. +* : wBuf1Addr = buffer 1 address. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPDblBuffAddr(bEpNum,wBuf0Addr,wBuf1Addr) { \ + _SetEPDblBuf0Addr(bEpNum, wBuf0Addr);\ + _SetEPDblBuf1Addr(bEpNum, wBuf1Addr);\ + } /* _SetEPDblBuffAddr */ + +/******************************************************************************* +* Macro Name : GetEPDblBuf0Addr / GetEPDblBuf1Addr. +* Description : Gets buffer 0/1 address of a double buffer endpoint. +* Input : bEpNum: endpoint number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _GetEPDblBuf0Addr(bEpNum) (_GetEPTxAddr(bEpNum)) +#define _GetEPDblBuf1Addr(bEpNum) (_GetEPRxAddr(bEpNum)) + +/******************************************************************************* +* Macro Name : SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count. +* Description : Gets buffer 0/1 address of a double buffer endpoint. +* Input : bEpNum: endpoint number. +* : bDir: endpoint dir EP_DBUF_OUT = OUT +* EP_DBUF_IN = IN +* : wCount: Counter value +* Output : None. +* Return : None. +*******************************************************************************/ +#define _SetEPDblBuf0Count(bEpNum, bDir, wCount) { \ + if(bDir == EP_DBUF_OUT)\ + /* OUT endpoint */ \ + {_SetEPRxDblBuf0Count(bEpNum,wCount);} \ + else if(bDir == EP_DBUF_IN)\ + /* IN endpoint */ \ + *_pEPTxCount(bEpNum) = (uint32_t)wCount; \ + } /* SetEPDblBuf0Count*/ + +#define _SetEPDblBuf1Count(bEpNum, bDir, wCount) { \ + if(bDir == EP_DBUF_OUT)\ + /* OUT endpoint */ \ + {_SetEPRxCount(bEpNum,wCount);}\ + else if(bDir == EP_DBUF_IN)\ + /* IN endpoint */\ + *_pEPRxCount(bEpNum) = (uint32_t)wCount; \ + } /* SetEPDblBuf1Count */ + +#define _SetEPDblBuffCount(bEpNum, bDir, wCount) {\ + _SetEPDblBuf0Count(bEpNum, bDir, wCount); \ + _SetEPDblBuf1Count(bEpNum, bDir, wCount); \ + } /* _SetEPDblBuffCount */ + +/******************************************************************************* +* Macro Name : GetEPDblBuf0Count / GetEPDblBuf1Count. +* Description : Gets buffer 0/1 rx/tx counter for double buffering. +* Input : bEpNum: endpoint number. +* Output : None. +* Return : None. +*******************************************************************************/ +#define _GetEPDblBuf0Count(bEpNum) (_GetEPTxCount(bEpNum)) +#define _GetEPDblBuf1Count(bEpNum) (_GetEPRxCount(bEpNum)) + + +/* External variables --------------------------------------------------------*/ +extern __IO uint16_t wIstr; /* ISTR register last read value */ + +/* Exported functions ------------------------------------------------------- */ +void SetCNTR(uint16_t /*wRegValue*/); +void SetISTR(uint16_t /*wRegValue*/); +void SetDADDR(uint16_t /*wRegValue*/); +void SetBTABLE(uint16_t /*wRegValue*/); +void SetBTABLE(uint16_t /*wRegValue*/); +uint16_t GetCNTR(void); +uint16_t GetISTR(void); +uint16_t GetFNR(void); +uint16_t GetDADDR(void); +uint16_t GetBTABLE(void); +void SetENDPOINT(uint8_t /*bEpNum*/, uint16_t /*wRegValue*/); +uint16_t GetENDPOINT(uint8_t /*bEpNum*/); +void SetEPType(uint8_t /*bEpNum*/, uint16_t /*wType*/); +uint16_t GetEPType(uint8_t /*bEpNum*/); +void SetEPTxStatus(uint8_t /*bEpNum*/, uint16_t /*wState*/); +void SetEPRxStatus(uint8_t /*bEpNum*/, uint16_t /*wState*/); +void SetDouBleBuffEPStall(uint8_t /*bEpNum*/, uint8_t bDir); +uint16_t GetEPTxStatus(uint8_t /*bEpNum*/); +uint16_t GetEPRxStatus(uint8_t /*bEpNum*/); +void SetEPTxValid(uint8_t /*bEpNum*/); +void SetEPRxValid(uint8_t /*bEpNum*/); +uint16_t GetTxStallStatus(uint8_t /*bEpNum*/); +uint16_t GetRxStallStatus(uint8_t /*bEpNum*/); +void SetEP_KIND(uint8_t /*bEpNum*/); +void ClearEP_KIND(uint8_t /*bEpNum*/); +void Set_Status_Out(uint8_t /*bEpNum*/); +void Clear_Status_Out(uint8_t /*bEpNum*/); +void SetEPDoubleBuff(uint8_t /*bEpNum*/); +void ClearEPDoubleBuff(uint8_t /*bEpNum*/); +void ClearEP_CTR_RX(uint8_t /*bEpNum*/); +void ClearEP_CTR_TX(uint8_t /*bEpNum*/); +void ToggleDTOG_RX(uint8_t /*bEpNum*/); +void ToggleDTOG_TX(uint8_t /*bEpNum*/); +void ClearDTOG_RX(uint8_t /*bEpNum*/); +void ClearDTOG_TX(uint8_t /*bEpNum*/); +void SetEPAddress(uint8_t /*bEpNum*/, uint8_t /*bAddr*/); +uint8_t GetEPAddress(uint8_t /*bEpNum*/); +void SetEPTxAddr(uint8_t /*bEpNum*/, uint16_t /*wAddr*/); +void SetEPRxAddr(uint8_t /*bEpNum*/, uint16_t /*wAddr*/); +uint16_t GetEPTxAddr(uint8_t /*bEpNum*/); +uint16_t GetEPRxAddr(uint8_t /*bEpNum*/); +void SetEPCountRxReg(uint32_t * /*pdwReg*/, uint16_t /*wCount*/); +void SetEPTxCount(uint8_t /*bEpNum*/, uint16_t /*wCount*/); +void SetEPRxCount(uint8_t /*bEpNum*/, uint16_t /*wCount*/); +uint16_t GetEPTxCount(uint8_t /*bEpNum*/); +uint16_t GetEPRxCount(uint8_t /*bEpNum*/); +void SetEPDblBuf0Addr(uint8_t /*bEpNum*/, uint16_t /*wBuf0Addr*/); +void SetEPDblBuf1Addr(uint8_t /*bEpNum*/, uint16_t /*wBuf1Addr*/); +void SetEPDblBuffAddr(uint8_t /*bEpNum*/, uint16_t /*wBuf0Addr*/, uint16_t /*wBuf1Addr*/); +uint16_t GetEPDblBuf0Addr(uint8_t /*bEpNum*/); +uint16_t GetEPDblBuf1Addr(uint8_t /*bEpNum*/); +void SetEPDblBuffCount(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/); +void SetEPDblBuf0Count(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/); +void SetEPDblBuf1Count(uint8_t /*bEpNum*/, uint8_t /*bDir*/, uint16_t /*wCount*/); +uint16_t GetEPDblBuf0Count(uint8_t /*bEpNum*/); +uint16_t GetEPDblBuf1Count(uint8_t /*bEpNum*/); +EP_DBUF_DIR GetEPDblBufDir(uint8_t /*bEpNum*/); +void FreeUserBuffer(uint8_t bEpNum/*bEpNum*/, uint8_t bDir); +uint16_t ToWord(uint8_t, uint8_t); +uint16_t ByteSwap(uint16_t); + +#endif /* __USB_REGS_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_sil.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_sil.h new file mode 100644 index 000000000..554817529 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_sil.h @@ -0,0 +1,47 @@ +/** + ****************************************************************************** + * @file usb_sil.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Simplified Interface Layer function prototypes. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_SIL_H +#define __USB_SIL_H + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +uint32_t USB_SIL_Init(void); +uint32_t USB_SIL_Write(uint8_t bEpAddr, uint8_t* pBufferPointer, uint32_t wBufferSize); +uint32_t USB_SIL_Read(uint8_t bEpAddr, uint8_t* pBufferPointer); + +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_SIL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_type.h b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_type.h new file mode 100644 index 000000000..720edcfe7 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/inc/usb_type.h @@ -0,0 +1,56 @@ +/** + ****************************************************************************** + * @file usb_type.h + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Type definitions used by the USB Library + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_TYPE_H +#define __USB_TYPE_H + +/* Includes ------------------------------------------------------------------*/ +#include "usb_conf.h" + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +#ifndef NULL +#define NULL ((void *)0) +#endif + +#define FALSE 0 +#define TRUE !FALSE + +//typedef enum +//{ +// FALSE = 0, TRUE = !FALSE +//}bool; + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +/* External variables --------------------------------------------------------*/ + +#endif /* __USB_TYPE_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_core.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_core.c new file mode 100644 index 000000000..3231a9622 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_core.c @@ -0,0 +1,1033 @@ +/** + ****************************************************************************** + * @file usb_core.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Standard protocol processing (USB v2.0) + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +#define ValBit(VAR,Place) (VAR & (1 << Place)) +#define SetBit(VAR,Place) (VAR |= (1 << Place)) +#define ClrBit(VAR,Place) (VAR &= ((1 << Place) ^ 255)) +#define Send0LengthData() { _SetEPTxCount(ENDP0, 0); \ + vSetEPTxStatus(EP_TX_VALID); \ + } + +#define vSetEPRxStatus(st) (SaveRState = st) +#define vSetEPTxStatus(st) (SaveTState = st) + +#define USB_StatusIn() Send0LengthData() +#define USB_StatusOut() vSetEPRxStatus(EP_RX_VALID) + +#define StatusInfo0 StatusInfo.bw.bb1 /* Reverse bb0 & bb1 */ +#define StatusInfo1 StatusInfo.bw.bb0 + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +uint16_t_uint8_t StatusInfo; + +bool Data_Mul_MaxPacketSize = FALSE; +/* Private function prototypes -----------------------------------------------*/ +static void DataStageOut(void); +static void DataStageIn(void); +static void NoData_Setup0(void); +static void Data_Setup0(void); +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : Standard_GetConfiguration. +* Description : Return the current configuration variable address. +* Input : Length - How many bytes are needed. +* Output : None. +* Return : Return 1 , if the request is invalid when "Length" is 0. +* Return "Buffer" if the "Length" is not 0. +*******************************************************************************/ +uint8_t *Standard_GetConfiguration(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = + sizeof(pInformation->Current_Configuration); + return 0; + } + pUser_Standard_Requests->User_GetConfiguration(); + return (uint8_t *)&pInformation->Current_Configuration; +} + +/******************************************************************************* +* Function Name : Standard_SetConfiguration. +* Description : This routine is called to set the configuration value +* Then each class should configure device itself. +* Input : None. +* Output : None. +* Return : Return USB_SUCCESS, if the request is performed. +* Return USB_UNSUPPORT, if the request is invalid. +*******************************************************************************/ +RESULT Standard_SetConfiguration(void) +{ + + if ((pInformation->USBwValue0 <= + Device_Table.Total_Configuration) && (pInformation->USBwValue1 == 0) + && (pInformation->USBwIndex == 0)) /*call Back usb spec 2.0*/ + { + pInformation->Current_Configuration = pInformation->USBwValue0; + pUser_Standard_Requests->User_SetConfiguration(); + return USB_SUCCESS; + } + else + { + return USB_UNSUPPORT; + } +} + +/******************************************************************************* +* Function Name : Standard_GetInterface. +* Description : Return the Alternate Setting of the current interface. +* Input : Length - How many bytes are needed. +* Output : None. +* Return : Return 0, if the request is invalid when "Length" is 0. +* Return "Buffer" if the "Length" is not 0. +*******************************************************************************/ +uint8_t *Standard_GetInterface(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = + sizeof(pInformation->Current_AlternateSetting); + return 0; + } + pUser_Standard_Requests->User_GetInterface(); + return (uint8_t *)&pInformation->Current_AlternateSetting; +} + +/******************************************************************************* +* Function Name : Standard_SetInterface. +* Description : This routine is called to set the interface. +* Then each class should configure the interface them self. +* Input : None. +* Output : None. +* Return : - Return USB_SUCCESS, if the request is performed. +* - Return USB_UNSUPPORT, if the request is invalid. +*******************************************************************************/ +RESULT Standard_SetInterface(void) +{ + RESULT Re; + /*Test if the specified Interface and Alternate Setting are supported by + the application Firmware*/ + Re = (*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, pInformation->USBwValue0); + + if (pInformation->Current_Configuration != 0) + { + if ((Re != USB_SUCCESS) || (pInformation->USBwIndex1 != 0) + || (pInformation->USBwValue1 != 0)) + { + return USB_UNSUPPORT; + } + else if (Re == USB_SUCCESS) + { + pUser_Standard_Requests->User_SetInterface(); + pInformation->Current_Interface = pInformation->USBwIndex0; + pInformation->Current_AlternateSetting = pInformation->USBwValue0; + return USB_SUCCESS; + } + + } + + return USB_UNSUPPORT; +} + +/******************************************************************************* +* Function Name : Standard_GetStatus. +* Description : Copy the device request data to "StatusInfo buffer". +* Input : - Length - How many bytes are needed. +* Output : None. +* Return : Return 0, if the request is at end of data block, +* or is invalid when "Length" is 0. +*******************************************************************************/ +uint8_t *Standard_GetStatus(uint16_t Length) +{ + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = 2; + return 0; + } + + /* Reset Status Information */ + StatusInfo.w = 0; + + if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + { + /*Get Device Status */ + uint8_t Feature = pInformation->Current_Feature; + + /* Remote Wakeup enabled */ + if (ValBit(Feature, 5)) + { + SetBit(StatusInfo0, 1); + } + else + { + ClrBit(StatusInfo0, 1); + } + + /* Bus-powered */ + if (ValBit(Feature, 6)) + { + SetBit(StatusInfo0, 0); + } + else /* Self-powered */ + { + ClrBit(StatusInfo0, 0); + } + } + /*Interface Status*/ + else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) + { + return (uint8_t *)&StatusInfo; + } + /*Get EndPoint Status*/ + else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) + { + uint8_t Related_Endpoint; + uint8_t wIndex0 = pInformation->USBwIndex0; + + Related_Endpoint = (wIndex0 & 0x0f); + if (ValBit(wIndex0, 7)) + { + /* IN endpoint */ + if (_GetTxStallStatus(Related_Endpoint)) + { + SetBit(StatusInfo0, 0); /* IN Endpoint stalled */ + } + } + else + { + /* OUT endpoint */ + if (_GetRxStallStatus(Related_Endpoint)) + { + SetBit(StatusInfo0, 0); /* OUT Endpoint stalled */ + } + } + + } + else + { + return NULL; + } + pUser_Standard_Requests->User_GetStatus(); + return (uint8_t *)&StatusInfo; +} + +/******************************************************************************* +* Function Name : Standard_ClearFeature. +* Description : Clear or disable a specific feature. +* Input : None. +* Output : None. +* Return : - Return USB_SUCCESS, if the request is performed. +* - Return USB_UNSUPPORT, if the request is invalid. +*******************************************************************************/ +RESULT Standard_ClearFeature(void) +{ + uint32_t Type_Rec = Type_Recipient; + uint32_t Status; + + + if (Type_Rec == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + {/*Device Clear Feature*/ + ClrBit(pInformation->Current_Feature, 5); + return USB_SUCCESS; + } + else if (Type_Rec == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) + {/*EndPoint Clear Feature*/ + DEVICE* pDev; + uint32_t Related_Endpoint; + uint32_t wIndex0; + uint32_t rEP; + + if ((pInformation->USBwValue != ENDPOINT_STALL) + || (pInformation->USBwIndex1 != 0)) + { + return USB_UNSUPPORT; + } + + pDev = &Device_Table; + wIndex0 = pInformation->USBwIndex0; + rEP = wIndex0 & ~0x80; + Related_Endpoint = ENDP0 + rEP; + + if (ValBit(pInformation->USBwIndex0, 7)) + { + /*Get Status of endpoint & stall the request if the related_ENdpoint + is Disabled*/ + Status = _GetEPTxStatus(Related_Endpoint); + } + else + { + Status = _GetEPRxStatus(Related_Endpoint); + } + + if ((rEP >= pDev->Total_Endpoint) || (Status == 0) + || (pInformation->Current_Configuration == 0)) + { + return USB_UNSUPPORT; + } + + + if (wIndex0 & 0x80) + { + /* IN endpoint */ + if (_GetTxStallStatus(Related_Endpoint )) + { + ClearDTOG_TX(Related_Endpoint); + SetEPTxStatus(Related_Endpoint, EP_TX_VALID); + } + } + else + { + /* OUT endpoint */ + if (_GetRxStallStatus(Related_Endpoint)) + { + if (Related_Endpoint == ENDP0) + { + /* After clear the STALL, enable the default endpoint receiver */ + SetEPRxCount(Related_Endpoint, Device_Property.MaxPacketSize); + _SetEPRxStatus(Related_Endpoint, EP_RX_VALID); + } + else + { + ClearDTOG_RX(Related_Endpoint); + _SetEPRxStatus(Related_Endpoint, EP_RX_VALID); + } + } + } + pUser_Standard_Requests->User_ClearFeature(); + return USB_SUCCESS; + } + + return USB_UNSUPPORT; +} + +/******************************************************************************* +* Function Name : Standard_SetEndPointFeature +* Description : Set or enable a specific feature of EndPoint +* Input : None. +* Output : None. +* Return : - Return USB_SUCCESS, if the request is performed. +* - Return USB_UNSUPPORT, if the request is invalid. +*******************************************************************************/ +RESULT Standard_SetEndPointFeature(void) +{ + uint32_t wIndex0; + uint32_t Related_Endpoint; + uint32_t rEP; + uint32_t Status; + + wIndex0 = pInformation->USBwIndex0; + rEP = wIndex0 & ~0x80; + Related_Endpoint = ENDP0 + rEP; + + if (ValBit(pInformation->USBwIndex0, 7)) + { + /* get Status of endpoint & stall the request if the related_ENdpoint + is Disabled*/ + Status = _GetEPTxStatus(Related_Endpoint); + } + else + { + Status = _GetEPRxStatus(Related_Endpoint); + } + + if (Related_Endpoint >= Device_Table.Total_Endpoint + || pInformation->USBwValue != 0 || Status == 0 + || pInformation->Current_Configuration == 0) + { + return USB_UNSUPPORT; + } + else + { + if (wIndex0 & 0x80) + { + /* IN endpoint */ + _SetEPTxStatus(Related_Endpoint, EP_TX_STALL); + } + + else + { + /* OUT endpoint */ + _SetEPRxStatus(Related_Endpoint, EP_RX_STALL); + } + } + pUser_Standard_Requests->User_SetEndPointFeature(); + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Standard_SetDeviceFeature. +* Description : Set or enable a specific feature of Device. +* Input : None. +* Output : None. +* Return : - Return USB_SUCCESS, if the request is performed. +* - Return USB_UNSUPPORT, if the request is invalid. +*******************************************************************************/ +RESULT Standard_SetDeviceFeature(void) +{ + SetBit(pInformation->Current_Feature, 5); + pUser_Standard_Requests->User_SetDeviceFeature(); + return USB_SUCCESS; +} + +/******************************************************************************* +* Function Name : Standard_GetDescriptorData. +* Description : Standard_GetDescriptorData is used for descriptors transfer. +* : This routine is used for the descriptors resident in Flash +* or RAM +* pDesc can be in either Flash or RAM +* The purpose of this routine is to have a versatile way to +* response descriptors request. It allows user to generate +* certain descriptors with software or read descriptors from +* external storage part by part. +* Input : - Length - Length of the data in this transfer. +* - pDesc - A pointer points to descriptor struct. +* The structure gives the initial address of the descriptor and +* its original size. +* Output : None. +* Return : Address of a part of the descriptor pointed by the Usb_ +* wOffset The buffer pointed by this address contains at least +* Length bytes. +*******************************************************************************/ +uint8_t *Standard_GetDescriptorData(uint16_t Length, ONE_DESCRIPTOR *pDesc) +{ + uint32_t wOffset; + + wOffset = pInformation->Ctrl_Info.Usb_wOffset; + if (Length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = pDesc->Descriptor_Size - wOffset; + return 0; + } + + return pDesc->Descriptor + wOffset; +} + +/******************************************************************************* +* Function Name : DataStageOut. +* Description : Data stage of a Control Write Transfer. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DataStageOut(void) +{ + ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info; + uint32_t save_rLength; + + save_rLength = pEPinfo->Usb_rLength; + + if (pEPinfo->CopyData && save_rLength) + { + uint8_t *Buffer; + uint32_t Length; + + Length = pEPinfo->PacketSize; + if (Length > save_rLength) + { + Length = save_rLength; + } + + Buffer = (*pEPinfo->CopyData)(Length); + pEPinfo->Usb_rLength -= Length; + pEPinfo->Usb_rOffset += Length; + PMAToUserBufferCopy(Buffer, GetEPRxAddr(ENDP0), Length); + + } + + if (pEPinfo->Usb_rLength != 0) + { + vSetEPRxStatus(EP_RX_VALID);/* re-enable for next data reception */ + SetEPTxCount(ENDP0, 0); + vSetEPTxStatus(EP_TX_VALID);/* Expect the host to abort the data OUT stage */ + } + /* Set the next State*/ + if (pEPinfo->Usb_rLength >= pEPinfo->PacketSize) + { + pInformation->ControlState = OUT_DATA; + } + else + { + if (pEPinfo->Usb_rLength > 0) + { + pInformation->ControlState = LAST_OUT_DATA; + } + else if (pEPinfo->Usb_rLength == 0) + { + pInformation->ControlState = WAIT_STATUS_IN; + USB_StatusIn(); + } + } +} + +/******************************************************************************* +* Function Name : DataStageIn. +* Description : Data stage of a Control Read Transfer. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void DataStageIn(void) +{ + ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info; + uint32_t save_wLength = pEPinfo->Usb_wLength; + uint32_t ControlState = pInformation->ControlState; + + uint8_t *DataBuffer; + uint32_t Length; + + if ((save_wLength == 0) && (ControlState == LAST_IN_DATA)) + { + if(Data_Mul_MaxPacketSize == TRUE) + { + /* No more data to send and empty packet */ + Send0LengthData(); + ControlState = LAST_IN_DATA; + Data_Mul_MaxPacketSize = FALSE; + } + else + { + /* No more data to send so STALL the TX Status*/ + ControlState = WAIT_STATUS_OUT; + vSetEPTxStatus(EP_TX_STALL); + + } + + goto Expect_Status_Out; + } + + Length = pEPinfo->PacketSize; + ControlState = (save_wLength <= Length) ? LAST_IN_DATA : IN_DATA; + + if (Length > save_wLength) + { + Length = save_wLength; + } + + DataBuffer = (*pEPinfo->CopyData)(Length); + + UserToPMABufferCopy(DataBuffer, GetEPTxAddr(ENDP0), Length); + + SetEPTxCount(ENDP0, Length); + + pEPinfo->Usb_wLength -= Length; + pEPinfo->Usb_wOffset += Length; + vSetEPTxStatus(EP_TX_VALID); + + USB_StatusOut();/* Expect the host to abort the data IN stage */ + +Expect_Status_Out: + pInformation->ControlState = ControlState; +} + +/******************************************************************************* +* Function Name : NoData_Setup0. +* Description : Proceed the processing of setup request without data stage. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void NoData_Setup0(void) +{ + RESULT Result = USB_UNSUPPORT; + uint32_t RequestNo = pInformation->USBbRequest; + uint32_t ControlState; + + if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + { + /* Device Request*/ + /* SET_CONFIGURATION*/ + if (RequestNo == SET_CONFIGURATION) + { + Result = Standard_SetConfiguration(); + } + + /*SET ADDRESS*/ + else if (RequestNo == SET_ADDRESS) + { + if ((pInformation->USBwValue0 > 127) || (pInformation->USBwValue1 != 0) + || (pInformation->USBwIndex != 0) + || (pInformation->Current_Configuration != 0)) + /* Device Address should be 127 or less*/ + { + ControlState = STALLED; + goto exit_NoData_Setup0; + } + else + { + Result = USB_SUCCESS; + } + } + /*SET FEATURE for Device*/ + else if (RequestNo == SET_FEATURE) + { + if ((pInformation->USBwValue0 == DEVICE_REMOTE_WAKEUP) \ + && (pInformation->USBwIndex == 0)) + { + Result = Standard_SetDeviceFeature(); + } + else + { + Result = USB_UNSUPPORT; + } + } + /*Clear FEATURE for Device */ + else if (RequestNo == CLEAR_FEATURE) + { + if (pInformation->USBwValue0 == DEVICE_REMOTE_WAKEUP + && pInformation->USBwIndex == 0 + && ValBit(pInformation->Current_Feature, 5)) + { + Result = Standard_ClearFeature(); + } + else + { + Result = USB_UNSUPPORT; + } + } + + } + + /* Interface Request*/ + else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) + { + /*SET INTERFACE*/ + if (RequestNo == SET_INTERFACE) + { + Result = Standard_SetInterface(); + } + } + + /* EndPoint Request*/ + else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) + { + /*CLEAR FEATURE for EndPoint*/ + if (RequestNo == CLEAR_FEATURE) + { + Result = Standard_ClearFeature(); + } + /* SET FEATURE for EndPoint*/ + else if (RequestNo == SET_FEATURE) + { + Result = Standard_SetEndPointFeature(); + } + } + else + { + Result = USB_UNSUPPORT; + } + + + if (Result != USB_SUCCESS) + { + Result = (*pProperty->Class_NoData_Setup)(RequestNo); + if (Result == USB_NOT_READY) + { + ControlState = PAUSE; + goto exit_NoData_Setup0; + } + } + + if (Result != USB_SUCCESS) + { + ControlState = STALLED; + goto exit_NoData_Setup0; + } + + ControlState = WAIT_STATUS_IN;/* After no data stage SETUP */ + + USB_StatusIn(); + +exit_NoData_Setup0: + pInformation->ControlState = ControlState; + return; +} + +/******************************************************************************* +* Function Name : Data_Setup0. +* Description : Proceed the processing of setup request with data stage. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void Data_Setup0(void) +{ + uint8_t *(*CopyRoutine)(uint16_t); + RESULT Result; + uint32_t Request_No = pInformation->USBbRequest; + + uint32_t Related_Endpoint, Reserved; + uint32_t wOffset, Status; + + + + CopyRoutine = NULL; + wOffset = 0; + + /*GET DESCRIPTOR*/ + if (Request_No == GET_DESCRIPTOR) + { + if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + { + uint8_t wValue1 = pInformation->USBwValue1; + if (wValue1 == DEVICE_DESCRIPTOR) + { + CopyRoutine = pProperty->GetDeviceDescriptor; + } + else if (wValue1 == CONFIG_DESCRIPTOR) + { + CopyRoutine = pProperty->GetConfigDescriptor; + } + else if (wValue1 == STRING_DESCRIPTOR) + { + CopyRoutine = pProperty->GetStringDescriptor; + } /* End of GET_DESCRIPTOR */ + } + } + + /*GET STATUS*/ + else if ((Request_No == GET_STATUS) && (pInformation->USBwValue == 0) + && (pInformation->USBwLength == 0x0002) + && (pInformation->USBwIndex1 == 0)) + { + /* GET STATUS for Device*/ + if ((Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + && (pInformation->USBwIndex == 0)) + { + CopyRoutine = Standard_GetStatus; + } + + /* GET STATUS for Interface*/ + else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) + { + if (((*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, 0) == USB_SUCCESS) + && (pInformation->Current_Configuration != 0)) + { + CopyRoutine = Standard_GetStatus; + } + } + + /* GET STATUS for EndPoint*/ + else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) + { + Related_Endpoint = (pInformation->USBwIndex0 & 0x0f); + Reserved = pInformation->USBwIndex0 & 0x70; + + if (ValBit(pInformation->USBwIndex0, 7)) + { + /*Get Status of endpoint & stall the request if the related_ENdpoint + is Disabled*/ + Status = _GetEPTxStatus(Related_Endpoint); + } + else + { + Status = _GetEPRxStatus(Related_Endpoint); + } + + if ((Related_Endpoint < Device_Table.Total_Endpoint) && (Reserved == 0) + && (Status != 0)) + { + CopyRoutine = Standard_GetStatus; + } + } + + } + + /*GET CONFIGURATION*/ + else if (Request_No == GET_CONFIGURATION) + { + if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) + { + CopyRoutine = Standard_GetConfiguration; + } + } + /*GET INTERFACE*/ + else if (Request_No == GET_INTERFACE) + { + if ((Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) + && (pInformation->Current_Configuration != 0) && (pInformation->USBwValue == 0) + && (pInformation->USBwIndex1 == 0) && (pInformation->USBwLength == 0x0001) + && ((*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, 0) == USB_SUCCESS)) + { + CopyRoutine = Standard_GetInterface; + } + + } + + if (CopyRoutine) + { + pInformation->Ctrl_Info.Usb_wOffset = wOffset; + pInformation->Ctrl_Info.CopyData = CopyRoutine; + /* sb in the original the cast to word was directly */ + /* now the cast is made step by step */ + (*CopyRoutine)(0); + Result = USB_SUCCESS; + } + else + { + Result = (*pProperty->Class_Data_Setup)(pInformation->USBbRequest); + if (Result == USB_NOT_READY) + { + pInformation->ControlState = PAUSE; + return; + } + } + + if (pInformation->Ctrl_Info.Usb_wLength == 0xFFFF) + { + /* Data is not ready, wait it */ + pInformation->ControlState = PAUSE; + return; + } + if ((Result == USB_UNSUPPORT) || (pInformation->Ctrl_Info.Usb_wLength == 0)) + { + /* Unsupported request */ + pInformation->ControlState = STALLED; + return; + } + + + if (ValBit(pInformation->USBbmRequestType, 7)) + { + /* Device ==> Host */ + __IO uint32_t wLength = pInformation->USBwLength; + + /* Restrict the data length to be the one host asks for */ + if (pInformation->Ctrl_Info.Usb_wLength > wLength) + { + pInformation->Ctrl_Info.Usb_wLength = wLength; + } + + else if (pInformation->Ctrl_Info.Usb_wLength < pInformation->USBwLength) + { + if (pInformation->Ctrl_Info.Usb_wLength < pProperty->MaxPacketSize) + { + Data_Mul_MaxPacketSize = FALSE; + } + else if ((pInformation->Ctrl_Info.Usb_wLength % pProperty->MaxPacketSize) == 0) + { + Data_Mul_MaxPacketSize = TRUE; + } + } + + pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize; + DataStageIn(); + } + else + { + pInformation->ControlState = OUT_DATA; + vSetEPRxStatus(EP_RX_VALID); /* enable for next data reception */ + } + + return; +} + +/******************************************************************************* +* Function Name : Setup0_Process +* Description : Get the device request data and dispatch to individual process. +* Input : None. +* Output : None. +* Return : Post0_Process. +*******************************************************************************/ +uint8_t Setup0_Process(void) +{ + + union + { + uint8_t* b; + uint16_t* w; + } pBuf; + uint16_t offset = 1; + + pBuf.b = PMAAddr + (uint8_t *)(_GetEPRxAddr(ENDP0) * 2); /* *2 for 32 bits addr */ + + if (pInformation->ControlState != PAUSE) + { + pInformation->USBbmRequestType = *pBuf.b++; /* bmRequestType */ + pInformation->USBbRequest = *pBuf.b++; /* bRequest */ + pBuf.w += offset; /* word not accessed because of 32 bits addressing */ + pInformation->USBwValue = ByteSwap(*pBuf.w++); /* wValue */ + pBuf.w += offset; /* word not accessed because of 32 bits addressing */ + pInformation->USBwIndex = ByteSwap(*pBuf.w++); /* wIndex */ + pBuf.w += offset; /* word not accessed because of 32 bits addressing */ + pInformation->USBwLength = *pBuf.w; /* wLength */ + } + + pInformation->ControlState = SETTING_UP; + if (pInformation->USBwLength == 0) + { + /* Setup with no data stage */ + NoData_Setup0(); + } + else + { + /* Setup with data stage */ + Data_Setup0(); + } + return Post0_Process(); +} + +/******************************************************************************* +* Function Name : In0_Process +* Description : Process the IN token on all default endpoint. +* Input : None. +* Output : None. +* Return : Post0_Process. +*******************************************************************************/ +uint8_t In0_Process(void) +{ + uint32_t ControlState = pInformation->ControlState; + + if ((ControlState == IN_DATA) || (ControlState == LAST_IN_DATA)) + { + DataStageIn(); + /* ControlState may be changed outside the function */ + ControlState = pInformation->ControlState; + } + + else if (ControlState == WAIT_STATUS_IN) + { + if ((pInformation->USBbRequest == SET_ADDRESS) && + (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT))) + { + SetDeviceAddress(pInformation->USBwValue0); + pUser_Standard_Requests->User_SetDeviceAddress(); + } + (*pProperty->Process_Status_IN)(); + ControlState = STALLED; + } + + else + { + ControlState = STALLED; + } + + pInformation->ControlState = ControlState; + + return Post0_Process(); +} + +/******************************************************************************* +* Function Name : Out0_Process +* Description : Process the OUT token on all default endpoint. +* Input : None. +* Output : None. +* Return : Post0_Process. +*******************************************************************************/ +uint8_t Out0_Process(void) +{ + uint32_t ControlState = pInformation->ControlState; + + if ((ControlState == IN_DATA) || (ControlState == LAST_IN_DATA)) + { + /* host aborts the transfer before finish */ + ControlState = STALLED; + } + else if ((ControlState == OUT_DATA) || (ControlState == LAST_OUT_DATA)) + { + DataStageOut(); + ControlState = pInformation->ControlState; /* may be changed outside the function */ + } + + else if (ControlState == WAIT_STATUS_OUT) + { + (*pProperty->Process_Status_OUT)(); + ControlState = STALLED; + } + + + /* Unexpect state, STALL the endpoint */ + else + { + ControlState = STALLED; + } + + pInformation->ControlState = ControlState; + + return Post0_Process(); +} + +/******************************************************************************* +* Function Name : Post0_Process +* Description : Stall the Endpoint 0 in case of error. +* Input : None. +* Output : None. +* Return : - 0 if the control State is in PAUSE +* - 1 if not. +*******************************************************************************/ +uint8_t Post0_Process(void) +{ + + SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); + + if (pInformation->ControlState == STALLED) + { + vSetEPRxStatus(EP_RX_STALL); + vSetEPTxStatus(EP_TX_STALL); + } + + return (pInformation->ControlState == PAUSE); +} + +/******************************************************************************* +* Function Name : SetDeviceAddress. +* Description : Set the device and all the used Endpoints addresses. +* Input : - Val: device address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetDeviceAddress(uint8_t Val) +{ + uint32_t i; + uint32_t nEP = Device_Table.Total_Endpoint; + + /* set address in every used endpoint */ + for (i = 0; i < nEP; i++) + { + _SetEPAddress((uint8_t)i, (uint8_t)i); + } /* for */ + _SetDADDR(Val | DADDR_EF); /* set device address and enable function */ +} + +/******************************************************************************* +* Function Name : NOP_Process +* Description : No operation function. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void NOP_Process(void) +{ +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_init.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_init.c new file mode 100644 index 000000000..0949620ad --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_init.c @@ -0,0 +1,76 @@ +/** + ****************************************************************************** + * @file usb_init.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Initialization routines & global variables + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* The number of current endpoint, it will be used to specify an endpoint */ + uint8_t EPindex; +/* The number of current device, it is an index to the Device_Table */ +/* uint8_t Device_no; */ +/* Points to the DEVICE_INFO structure of current device */ +/* The purpose of this register is to speed up the execution */ +DEVICE_INFO *pInformation; +/* Points to the DEVICE_PROP structure of current device */ +/* The purpose of this register is to speed up the execution */ +DEVICE_PROP *pProperty; +/* Temporary save the state of Rx & Tx status. */ +/* Whenever the Rx or Tx state is changed, its value is saved */ +/* in this variable first and will be set to the EPRB or EPRA */ +/* at the end of interrupt process */ +uint16_t SaveState ; +uint16_t wInterrupt_Mask; +DEVICE_INFO Device_Info; +USER_STANDARD_REQUESTS *pUser_Standard_Requests; + +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : USB_Init +* Description : USB system initialization +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void USB_Init(void) +{ + pInformation = &Device_Info; + pInformation->ControlState = 2; + pProperty = &Device_Property; + pUser_Standard_Requests = &User_Standard_Requests; + /* Initialize devices one by one */ + pProperty->Init(); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_int.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_int.c new file mode 100644 index 000000000..dbaa33102 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_int.c @@ -0,0 +1,195 @@ +/** + ****************************************************************************** + * @file usb_int.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Endpoint CTR (Low and High) interrupt's service routines + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint16_t SaveRState; +__IO uint16_t SaveTState; + +/* Extern variables ----------------------------------------------------------*/ +extern void (*pEpInt_IN[7])(void); /* Handles IN interrupts */ +extern void (*pEpInt_OUT[7])(void); /* Handles OUT interrupts */ + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : CTR_LP. +* Description : Low priority Endpoint Correct Transfer interrupt's service +* routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void CTR_LP(void) +{ + __IO uint16_t wEPVal = 0; + /* stay in loop while pending interrupts */ + while (((wIstr = _GetISTR()) & ISTR_CTR) != 0) + { + /* extract highest priority endpoint number */ + EPindex = (uint8_t)(wIstr & ISTR_EP_ID); + if (EPindex == 0) + { + /* Decode and service control endpoint interrupt */ + /* calling related service routine */ + /* (Setup0_Process, In0_Process, Out0_Process) */ + + /* save RX & TX status */ + /* and set both to NAK */ + + SaveRState = _GetENDPOINT(ENDP0); + SaveTState = SaveRState & EPTX_STAT; + SaveRState &= EPRX_STAT; + + _SetEPRxTxStatus(ENDP0,EP_RX_NAK,EP_TX_NAK); + + /* DIR bit = origin of the interrupt */ + + if ((wIstr & ISTR_DIR) == 0) + { + /* DIR = 0 */ + + /* DIR = 0 => IN int */ + /* DIR = 0 implies that (EP_CTR_TX = 1) always */ + + _ClearEP_CTR_TX(ENDP0); + In0_Process(); + + /* before terminate set Tx & Rx status */ + + _SetEPRxTxStatus(ENDP0,SaveRState,SaveTState); + return; + } + else + { + /* DIR = 1 */ + + /* DIR = 1 & CTR_RX => SETUP or OUT int */ + /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ + + wEPVal = _GetENDPOINT(ENDP0); + + if ((wEPVal &EP_SETUP) != 0) + { + _ClearEP_CTR_RX(ENDP0); /* SETUP bit kept frozen while CTR_RX = 1 */ + Setup0_Process(); + /* before terminate set Tx & Rx status */ + + _SetEPRxTxStatus(ENDP0,SaveRState,SaveTState); + return; + } + + else if ((wEPVal & EP_CTR_RX) != 0) + { + _ClearEP_CTR_RX(ENDP0); + Out0_Process(); + /* before terminate set Tx & Rx status */ + + _SetEPRxTxStatus(ENDP0,SaveRState,SaveTState); + return; + } + } + }/* if(EPindex == 0) */ + else + { + /* Decode and service non control endpoints interrupt */ + + /* process related endpoint register */ + wEPVal = _GetENDPOINT(EPindex); + if ((wEPVal & EP_CTR_RX) != 0) + { + /* clear int flag */ + _ClearEP_CTR_RX(EPindex); + + /* call OUT service function */ + (*pEpInt_OUT[EPindex-1])(); + + } /* if((wEPVal & EP_CTR_RX) */ + + if ((wEPVal & EP_CTR_TX) != 0) + { + /* clear int flag */ + _ClearEP_CTR_TX(EPindex); + + /* call IN service function */ + (*pEpInt_IN[EPindex-1])(); + } /* if((wEPVal & EP_CTR_TX) != 0) */ + + }/* if(EPindex == 0) else */ + + }/* while(...) */ +} + +/******************************************************************************* +* Function Name : CTR_HP. +* Description : High Priority Endpoint Correct Transfer interrupt's service +* routine. +* Input : None. +* Output : None. +* Return : None. +*******************************************************************************/ +void CTR_HP(void) +{ + uint32_t wEPVal = 0; + + while (((wIstr = _GetISTR()) & ISTR_CTR) != 0) + { + _SetISTR((uint16_t)CLR_CTR); /* clear CTR flag */ + /* extract highest priority endpoint number */ + EPindex = (uint8_t)(wIstr & ISTR_EP_ID); + /* process related endpoint register */ + wEPVal = _GetENDPOINT(EPindex); + if ((wEPVal & EP_CTR_RX) != 0) + { + /* clear int flag */ + _ClearEP_CTR_RX(EPindex); + + /* call OUT service function */ + (*pEpInt_OUT[EPindex-1])(); + + } /* if((wEPVal & EP_CTR_RX) */ + else if ((wEPVal & EP_CTR_TX) != 0) + { + /* clear int flag */ + _ClearEP_CTR_TX(EPindex); + + /* call IN service function */ + (*pEpInt_IN[EPindex-1])(); + + + } /* if((wEPVal & EP_CTR_TX) != 0) */ + + }/* while(...) */ +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_mem.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_mem.c new file mode 100644 index 000000000..4e0748ac3 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_mem.c @@ -0,0 +1,87 @@ +/** + ****************************************************************************** + * @file usb_mem.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Utility functions for memory transfers to/from PMA + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : UserToPMABufferCopy +* Description : Copy a buffer from user memory area to packet memory area (PMA) +* Input : - pbUsrBuf: pointer to user memory area. +* - wPMABufAddr: address into PMA. +* - wNBytes: no. of bytes to be copied. +* Output : None. +* Return : None . +*******************************************************************************/ +void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */ + uint32_t i, temp1, temp2; + uint16_t *pdwVal; + pdwVal = (uint16_t *)(wPMABufAddr * 2 + PMAAddr); + for (i = n; i != 0; i--) + { + temp1 = (uint16_t) * pbUsrBuf; + pbUsrBuf++; + temp2 = temp1 | (uint16_t) * pbUsrBuf << 8; + *pdwVal++ = temp2; + pdwVal++; + pbUsrBuf++; + } +} + +/******************************************************************************* +* Function Name : PMAToUserBufferCopy +* Description : Copy a buffer from user memory area to packet memory area (PMA) +* Input : - pbUsrBuf = pointer to user memory area. +* - wPMABufAddr = address into PMA. +* - wNBytes = no. of bytes to be copied. +* Output : None. +* Return : None. +*******************************************************************************/ +void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = (wNBytes + 1) >> 1;/* /2*/ + uint32_t i; + uint32_t *pdwVal; + pdwVal = (uint32_t *)(wPMABufAddr * 2 + PMAAddr); + for (i = n; i != 0; i--) + { + *(uint16_t*)pbUsrBuf++ = *pdwVal++; + pbUsrBuf++; + } +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_regs.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_regs.c new file mode 100644 index 000000000..b1e22fe6e --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_regs.c @@ -0,0 +1,760 @@ +/** + ****************************************************************************** + * @file usb_regs.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Interface functions to USB cell registers + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : SetCNTR. +* Description : Set the CNTR register value. +* Input : wRegValue: new register value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetCNTR(uint16_t wRegValue) +{ + _SetCNTR(wRegValue); +} + +/******************************************************************************* +* Function Name : GetCNTR. +* Description : returns the CNTR register value. +* Input : None. +* Output : None. +* Return : CNTR register Value. +*******************************************************************************/ +uint16_t GetCNTR(void) +{ + return(_GetCNTR()); +} + +/******************************************************************************* +* Function Name : SetISTR. +* Description : Set the ISTR register value. +* Input : wRegValue: new register value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetISTR(uint16_t wRegValue) +{ + _SetISTR(wRegValue); +} + +/******************************************************************************* +* Function Name : GetISTR +* Description : Returns the ISTR register value. +* Input : None. +* Output : None. +* Return : ISTR register Value +*******************************************************************************/ +uint16_t GetISTR(void) +{ + return(_GetISTR()); +} + +/******************************************************************************* +* Function Name : GetFNR +* Description : Returns the FNR register value. +* Input : None. +* Output : None. +* Return : FNR register Value +*******************************************************************************/ +uint16_t GetFNR(void) +{ + return(_GetFNR()); +} + +/******************************************************************************* +* Function Name : SetDADDR +* Description : Set the DADDR register value. +* Input : wRegValue: new register value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetDADDR(uint16_t wRegValue) +{ + _SetDADDR(wRegValue); +} + +/******************************************************************************* +* Function Name : GetDADDR +* Description : Returns the DADDR register value. +* Input : None. +* Output : None. +* Return : DADDR register Value +*******************************************************************************/ +uint16_t GetDADDR(void) +{ + return(_GetDADDR()); +} + +/******************************************************************************* +* Function Name : SetBTABLE +* Description : Set the BTABLE. +* Input : wRegValue: New register value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetBTABLE(uint16_t wRegValue) +{ + _SetBTABLE(wRegValue); +} + +/******************************************************************************* +* Function Name : GetBTABLE. +* Description : Returns the BTABLE register value. +* Input : None. +* Output : None. +* Return : BTABLE address. +*******************************************************************************/ +uint16_t GetBTABLE(void) +{ + return(_GetBTABLE()); +} + +/******************************************************************************* +* Function Name : SetENDPOINT +* Description : Set the Endpoint register value. +* Input : bEpNum: Endpoint Number. +* wRegValue. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetENDPOINT(uint8_t bEpNum, uint16_t wRegValue) +{ + _SetENDPOINT(bEpNum, wRegValue); +} + +/******************************************************************************* +* Function Name : GetENDPOINT +* Description : Return the Endpoint register value. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint register value. +*******************************************************************************/ +uint16_t GetENDPOINT(uint8_t bEpNum) +{ + return(_GetENDPOINT(bEpNum)); +} + +/******************************************************************************* +* Function Name : SetEPType +* Description : sets the type in the endpoint register. +* Input : bEpNum: Endpoint Number. +* wType: type definition. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPType(uint8_t bEpNum, uint16_t wType) +{ + _SetEPType(bEpNum, wType); +} + +/******************************************************************************* +* Function Name : GetEPType +* Description : Returns the endpoint type. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint Type +*******************************************************************************/ +uint16_t GetEPType(uint8_t bEpNum) +{ + return(_GetEPType(bEpNum)); +} + +/******************************************************************************* +* Function Name : SetEPTxStatus +* Description : Set the status of Tx endpoint. +* Input : bEpNum: Endpoint Number. +* wState: new state. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPTxStatus(uint8_t bEpNum, uint16_t wState) +{ + _SetEPTxStatus(bEpNum, wState); +} + +/******************************************************************************* +* Function Name : SetEPRxStatus +* Description : Set the status of Rx endpoint. +* Input : bEpNum: Endpoint Number. +* wState: new state. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPRxStatus(uint8_t bEpNum, uint16_t wState) +{ + _SetEPRxStatus(bEpNum, wState); +} + +/******************************************************************************* +* Function Name : SetDouBleBuffEPStall +* Description : sets the status for Double Buffer Endpoint to STALL +* Input : bEpNum: Endpoint Number. +* bDir: Endpoint direction. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetDouBleBuffEPStall(uint8_t bEpNum, uint8_t bDir) +{ + uint16_t Endpoint_DTOG_Status; + Endpoint_DTOG_Status = GetENDPOINT(bEpNum); + if (bDir == EP_DBUF_OUT) + { /* OUT double buffered endpoint */ + _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1); + } + else if (bDir == EP_DBUF_IN) + { /* IN double buffered endpoint */ + _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1); + } +} + +/******************************************************************************* +* Function Name : GetEPTxStatus +* Description : Returns the endpoint Tx status. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint TX Status +*******************************************************************************/ +uint16_t GetEPTxStatus(uint8_t bEpNum) +{ + return(_GetEPTxStatus(bEpNum)); +} + +/******************************************************************************* +* Function Name : GetEPRxStatus +* Description : Returns the endpoint Rx status. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint RX Status +*******************************************************************************/ +uint16_t GetEPRxStatus(uint8_t bEpNum) +{ + return(_GetEPRxStatus(bEpNum)); +} + +/******************************************************************************* +* Function Name : SetEPTxValid +* Description : Valid the endpoint Tx Status. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPTxValid(uint8_t bEpNum) +{ + _SetEPTxStatus(bEpNum, EP_TX_VALID); +} + +/******************************************************************************* +* Function Name : SetEPRxValid +* Description : Valid the endpoint Rx Status. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPRxValid(uint8_t bEpNum) +{ + _SetEPRxStatus(bEpNum, EP_RX_VALID); +} + +/******************************************************************************* +* Function Name : SetEP_KIND +* Description : Clear the EP_KIND bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEP_KIND(uint8_t bEpNum) +{ + _SetEP_KIND(bEpNum); +} + +/******************************************************************************* +* Function Name : ClearEP_KIND +* Description : set the EP_KIND bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearEP_KIND(uint8_t bEpNum) +{ + _ClearEP_KIND(bEpNum); +} +/******************************************************************************* +* Function Name : Clear_Status_Out +* Description : Clear the Status Out of the related Endpoint +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void Clear_Status_Out(uint8_t bEpNum) +{ + _ClearEP_KIND(bEpNum); +} +/******************************************************************************* +* Function Name : Set_Status_Out +* Description : Set the Status Out of the related Endpoint +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void Set_Status_Out(uint8_t bEpNum) +{ + _SetEP_KIND(bEpNum); +} +/******************************************************************************* +* Function Name : SetEPDoubleBuff +* Description : Enable the double buffer feature for the endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDoubleBuff(uint8_t bEpNum) +{ + _SetEP_KIND(bEpNum); +} +/******************************************************************************* +* Function Name : ClearEPDoubleBuff +* Description : Disable the double buffer feature for the endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearEPDoubleBuff(uint8_t bEpNum) +{ + _ClearEP_KIND(bEpNum); +} +/******************************************************************************* +* Function Name : GetTxStallStatus +* Description : Returns the Stall status of the Tx endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Tx Stall status. +*******************************************************************************/ +uint16_t GetTxStallStatus(uint8_t bEpNum) +{ + return(_GetTxStallStatus(bEpNum)); +} +/******************************************************************************* +* Function Name : GetRxStallStatus +* Description : Returns the Stall status of the Rx endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Rx Stall status. +*******************************************************************************/ +uint16_t GetRxStallStatus(uint8_t bEpNum) +{ + return(_GetRxStallStatus(bEpNum)); +} +/******************************************************************************* +* Function Name : ClearEP_CTR_RX +* Description : Clear the CTR_RX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearEP_CTR_RX(uint8_t bEpNum) +{ + _ClearEP_CTR_RX(bEpNum); +} +/******************************************************************************* +* Function Name : ClearEP_CTR_TX +* Description : Clear the CTR_TX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearEP_CTR_TX(uint8_t bEpNum) +{ + _ClearEP_CTR_TX(bEpNum); +} +/******************************************************************************* +* Function Name : ToggleDTOG_RX +* Description : Toggle the DTOG_RX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ToggleDTOG_RX(uint8_t bEpNum) +{ + _ToggleDTOG_RX(bEpNum); +} +/******************************************************************************* +* Function Name : ToggleDTOG_TX +* Description : Toggle the DTOG_TX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ToggleDTOG_TX(uint8_t bEpNum) +{ + _ToggleDTOG_TX(bEpNum); +} +/******************************************************************************* +* Function Name : ClearDTOG_RX. +* Description : Clear the DTOG_RX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearDTOG_RX(uint8_t bEpNum) +{ + _ClearDTOG_RX(bEpNum); +} +/******************************************************************************* +* Function Name : ClearDTOG_TX. +* Description : Clear the DTOG_TX bit. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +void ClearDTOG_TX(uint8_t bEpNum) +{ + _ClearDTOG_TX(bEpNum); +} +/******************************************************************************* +* Function Name : SetEPAddress +* Description : Set the endpoint address. +* Input : bEpNum: Endpoint Number. +* bAddr: New endpoint address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPAddress(uint8_t bEpNum, uint8_t bAddr) +{ + _SetEPAddress(bEpNum, bAddr); +} +/******************************************************************************* +* Function Name : GetEPAddress +* Description : Get the endpoint address. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint address. +*******************************************************************************/ +uint8_t GetEPAddress(uint8_t bEpNum) +{ + return(_GetEPAddress(bEpNum)); +} +/******************************************************************************* +* Function Name : SetEPTxAddr +* Description : Set the endpoint Tx buffer address. +* Input : bEpNum: Endpoint Number. +* wAddr: new address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPTxAddr(uint8_t bEpNum, uint16_t wAddr) +{ + _SetEPTxAddr(bEpNum, wAddr); +} +/******************************************************************************* +* Function Name : SetEPRxAddr +* Description : Set the endpoint Rx buffer address. +* Input : bEpNum: Endpoint Number. +* wAddr: new address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPRxAddr(uint8_t bEpNum, uint16_t wAddr) +{ + _SetEPRxAddr(bEpNum, wAddr); +} +/******************************************************************************* +* Function Name : GetEPTxAddr +* Description : Returns the endpoint Tx buffer address. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Rx buffer address. +*******************************************************************************/ +uint16_t GetEPTxAddr(uint8_t bEpNum) +{ + return(_GetEPTxAddr(bEpNum)); +} +/******************************************************************************* +* Function Name : GetEPRxAddr. +* Description : Returns the endpoint Rx buffer address. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Rx buffer address. +*******************************************************************************/ +uint16_t GetEPRxAddr(uint8_t bEpNum) +{ + return(_GetEPRxAddr(bEpNum)); +} +/******************************************************************************* +* Function Name : SetEPTxCount. +* Description : Set the Tx count. +* Input : bEpNum: Endpoint Number. +* wCount: new count value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPTxCount(uint8_t bEpNum, uint16_t wCount) +{ + _SetEPTxCount(bEpNum, wCount); +} +/******************************************************************************* +* Function Name : SetEPCountRxReg. +* Description : Set the Count Rx Register value. +* Input : *pdwReg: point to the register. +* wCount: the new register value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPCountRxReg(uint32_t *pdwReg, uint16_t wCount) +{ + _SetEPCountRxReg(dwReg, wCount); +} +/******************************************************************************* +* Function Name : SetEPRxCount +* Description : Set the Rx count. +* Input : bEpNum: Endpoint Number. +* wCount: the new count value. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPRxCount(uint8_t bEpNum, uint16_t wCount) +{ + _SetEPRxCount(bEpNum, wCount); +} +/******************************************************************************* +* Function Name : GetEPTxCount +* Description : Get the Tx count. +* Input : bEpNum: Endpoint Number. +* Output : None +* Return : Tx count value. +*******************************************************************************/ +uint16_t GetEPTxCount(uint8_t bEpNum) +{ + return(_GetEPTxCount(bEpNum)); +} +/******************************************************************************* +* Function Name : GetEPRxCount +* Description : Get the Rx count. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Rx count value. +*******************************************************************************/ +uint16_t GetEPRxCount(uint8_t bEpNum) +{ + return(_GetEPRxCount(bEpNum)); +} +/******************************************************************************* +* Function Name : SetEPDblBuffAddr +* Description : Set the addresses of the buffer 0 and 1. +* Input : bEpNum: Endpoint Number. +* wBuf0Addr: new address of buffer 0. +* wBuf1Addr: new address of buffer 1. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuffAddr(uint8_t bEpNum, uint16_t wBuf0Addr, uint16_t wBuf1Addr) +{ + _SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr); +} +/******************************************************************************* +* Function Name : SetEPDblBuf0Addr +* Description : Set the Buffer 1 address. +* Input : bEpNum: Endpoint Number +* wBuf0Addr: new address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuf0Addr(uint8_t bEpNum, uint16_t wBuf0Addr) +{ + _SetEPDblBuf0Addr(bEpNum, wBuf0Addr); +} +/******************************************************************************* +* Function Name : SetEPDblBuf1Addr +* Description : Set the Buffer 1 address. +* Input : bEpNum: Endpoint Number +* wBuf1Addr: new address. +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuf1Addr(uint8_t bEpNum, uint16_t wBuf1Addr) +{ + _SetEPDblBuf1Addr(bEpNum, wBuf1Addr); +} +/******************************************************************************* +* Function Name : GetEPDblBuf0Addr +* Description : Returns the address of the Buffer 0. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : None. +*******************************************************************************/ +uint16_t GetEPDblBuf0Addr(uint8_t bEpNum) +{ + return(_GetEPDblBuf0Addr(bEpNum)); +} +/******************************************************************************* +* Function Name : GetEPDblBuf1Addr +* Description : Returns the address of the Buffer 1. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Address of the Buffer 1. +*******************************************************************************/ +uint16_t GetEPDblBuf1Addr(uint8_t bEpNum) +{ + return(_GetEPDblBuf1Addr(bEpNum)); +} +/******************************************************************************* +* Function Name : SetEPDblBuffCount +* Description : Set the number of bytes for a double Buffer +* endpoint. +* Input : bEpNum,bDir, wCount +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuffCount(uint8_t bEpNum, uint8_t bDir, uint16_t wCount) +{ + _SetEPDblBuffCount(bEpNum, bDir, wCount); +} +/******************************************************************************* +* Function Name : SetEPDblBuf0Count +* Description : Set the number of bytes in the buffer 0 of a double Buffer +* endpoint. +* Input : bEpNum, bDir, wCount +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuf0Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount) +{ + _SetEPDblBuf0Count(bEpNum, bDir, wCount); +} +/******************************************************************************* +* Function Name : SetEPDblBuf1Count +* Description : Set the number of bytes in the buffer 0 of a double Buffer +* endpoint. +* Input : bEpNum, bDir, wCount +* Output : None. +* Return : None. +*******************************************************************************/ +void SetEPDblBuf1Count(uint8_t bEpNum, uint8_t bDir, uint16_t wCount) +{ + _SetEPDblBuf1Count(bEpNum, bDir, wCount); +} +/******************************************************************************* +* Function Name : GetEPDblBuf0Count +* Description : Returns the number of byte received in the buffer 0 of a double +* Buffer endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint Buffer 0 count +*******************************************************************************/ +uint16_t GetEPDblBuf0Count(uint8_t bEpNum) +{ + return(_GetEPDblBuf0Count(bEpNum)); +} +/******************************************************************************* +* Function Name : GetEPDblBuf1Count +* Description : Returns the number of data received in the buffer 1 of a double +* Buffer endpoint. +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : Endpoint Buffer 1 count. +*******************************************************************************/ +uint16_t GetEPDblBuf1Count(uint8_t bEpNum) +{ + return(_GetEPDblBuf1Count(bEpNum)); +} +/******************************************************************************* +* Function Name : GetEPDblBufDir +* Description : gets direction of the double buffered endpoint +* Input : bEpNum: Endpoint Number. +* Output : None. +* Return : EP_DBUF_OUT, EP_DBUF_IN, +* EP_DBUF_ERR if the endpoint counter not yet programmed. +*******************************************************************************/ +EP_DBUF_DIR GetEPDblBufDir(uint8_t bEpNum) +{ + if ((uint16_t)(*_pEPRxCount(bEpNum) & 0xFC00) != 0) + return(EP_DBUF_OUT); + else if (((uint16_t)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0) + return(EP_DBUF_IN); + else + return(EP_DBUF_ERR); +} +/******************************************************************************* +* Function Name : FreeUserBuffer +* Description : free buffer used from the application realizing it to the line + toggles bit SW_BUF in the double buffered endpoint register +* Input : bEpNum, bDir +* Output : None. +* Return : None. +*******************************************************************************/ +void FreeUserBuffer(uint8_t bEpNum, uint8_t bDir) +{ + if (bDir == EP_DBUF_OUT) + { /* OUT double buffered endpoint */ + _ToggleDTOG_TX(bEpNum); + } + else if (bDir == EP_DBUF_IN) + { /* IN double buffered endpoint */ + _ToggleDTOG_RX(bEpNum); + } +} + +/******************************************************************************* +* Function Name : ToWord +* Description : merge two byte in a word. +* Input : bh: byte high, bl: bytes low. +* Output : None. +* Return : resulted word. +*******************************************************************************/ +uint16_t ToWord(uint8_t bh, uint8_t bl) +{ + uint16_t wRet; + wRet = (uint16_t)bl | ((uint16_t)bh << 8); + return(wRet); +} +/******************************************************************************* +* Function Name : ByteSwap +* Description : Swap two byte in a word. +* Input : wSwW: word to Swap. +* Output : None. +* Return : resulted word. +*******************************************************************************/ +uint16_t ByteSwap(uint16_t wSwW) +{ + uint8_t bTemp; + uint16_t wRet; + bTemp = (uint8_t)(wSwW & 0xff); + wRet = (wSwW >> 8) | ((uint16_t)bTemp << 8); + return(wRet); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_sil.c b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_sil.c new file mode 100644 index 000000000..5f2e4db00 --- /dev/null +++ b/src/boards/mcu/stm32/STM32_USB-FS-Device_Driver/src/usb_sil.c @@ -0,0 +1,103 @@ +/** + ****************************************************************************** + * @file usb_sil.c + * @author MCD Application Team + * @version V4.0.0 + * @date 28-August-2012 + * @brief Simplified Interface Layer for Global Initialization and Endpoint + * Rea/Write operations. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2012 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "usb_lib.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Extern variables ----------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************* +* Function Name : USB_SIL_Init +* Description : Initialize the USB Device IP and the Endpoint 0. +* Input : None. +* Output : None. +* Return : Status. +*******************************************************************************/ +uint32_t USB_SIL_Init(void) +{ + /* USB interrupts initialization */ + /* clear pending interrupts */ + _SetISTR(0); + wInterrupt_Mask = IMR_MSK; + /* set interrupts mask */ + _SetCNTR(wInterrupt_Mask); + return 0; +} + +/******************************************************************************* +* Function Name : USB_SIL_Write +* Description : Write a buffer of data to a selected endpoint. +* Input : - bEpAddr: The address of the non control endpoint. +* - pBufferPointer: The pointer to the buffer of data to be written +* to the endpoint. +* - wBufferSize: Number of data to be written (in bytes). +* Output : None. +* Return : Status. +*******************************************************************************/ +uint32_t USB_SIL_Write(uint8_t bEpAddr, uint8_t* pBufferPointer, uint32_t wBufferSize) +{ + /* Use the memory interface function to write to the selected endpoint */ + UserToPMABufferCopy(pBufferPointer, GetEPTxAddr(bEpAddr & 0x7F), wBufferSize); + + /* Update the data length in the control register */ + SetEPTxCount((bEpAddr & 0x7F), wBufferSize); + + return 0; +} + +/******************************************************************************* +* Function Name : USB_SIL_Read +* Description : Write a buffer of data to a selected endpoint. +* Input : - bEpAddr: The address of the non control endpoint. +* - pBufferPointer: The pointer to which will be saved the +* received data buffer. +* Output : None. +* Return : Number of received data (in Bytes). +*******************************************************************************/ +uint32_t USB_SIL_Read(uint8_t bEpAddr, uint8_t* pBufferPointer) +{ + uint32_t DataLength = 0; + + /* Get the number of received data on the selected Endpoint */ + DataLength = GetEPRxCount(bEpAddr & 0x7F); + + /* Use the memory interface function to write to the selected endpoint */ + PMAToUserBufferCopy(pBufferPointer, GetEPRxAddr(bEpAddr & 0x7F), DataLength); + + /* Return the number of received data */ + return DataLength; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/src/boards/mcu/stm32/utilities.c b/src/boards/mcu/stm32/utilities.c index 4124de0be..9eb2e0e25 100644 --- a/src/boards/mcu/stm32/utilities.c +++ b/src/boards/mcu/stm32/utilities.c @@ -13,9 +13,31 @@ License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian */ #include +#include #include "board.h" #include "utilities.h" +/*! + * Redefinition of rand() and srand() standard C functions. + * These functions are redefined in order to get the same behavior across + * different compiler toolchains implementations. + */ +// Standard random functions redefinition start +#define RAND_LOCAL_MAX 2147483647 + +static unsigned long next = 1; + +int rand( void ) +{ + return ( ( next = next * 1103515245 + 12345 ) % RAND_LOCAL_MAX ); +} + +void srand( unsigned int seed ) +{ + next = seed; +} +// Standard random functions redefinition end + int32_t randr( int32_t min, int32_t max ) { return ( int32_t )rand( ) % ( max - min + 1 ) + min; @@ -39,18 +61,18 @@ void memset1( uint8_t *dst, uint8_t value, uint16_t size ) int8_t Nibble2HexChar( uint8_t a ) { - if( a < 10 ) + if( a < 10 ) { - return '0' + a; - } + return '0' + a; + } else if( a < 16 ) { - return 'A' + ( a - 10 ); - } + return 'A' + ( a - 10 ); + } else { - return '?'; - } + return '?'; + } } #ifdef __GNUC__ diff --git a/src/boards/mcu/stm32/utilities.h b/src/boards/mcu/stm32/utilities.h index 9a21c2e3c..74b669315 100644 --- a/src/boards/mcu/stm32/utilities.h +++ b/src/boards/mcu/stm32/utilities.h @@ -20,10 +20,32 @@ Maintainer: Miguel Luis and Gregory Cristian * * \param [IN] a 1st value * \param [IN] b 2nd value - * \retval minValue minimum value + * \retval minValue Minimum value */ #define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) +/*! + * \brief Returns the maximum value betwen a and b + * + * \param [IN] a 1st value + * \param [IN] b 2nd value + * \retval maxValue Maximum value + */ +#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) + +/*! + * \brief Find First Set + * This function identifies the least significant index or position of the + * bits set to one in the word + * + * \param [in] value Value to find least significant index + * \retval bitIndex Index of least significat bit at one + */ +__STATIC_INLINE uint8_t __ffs( uint32_t value ) +{ + return( uint32_t )( 32 - __CLZ( value & ( -value ) ) ); +} + /*! * \brief Computes a random number between min and max * diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 6846115fd..462350187 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -13,6 +13,7 @@ License: Revised BSD License, see LICENSE.TXT file include in the project Maintainer: Miguel Luis and Gregory Cristian */ #include +#include #include "board.h" #include "utilities.h" #include "radio.h" @@ -71,6 +72,11 @@ static uint8_t LoRaMacAppSKey[] = */ static uint16_t LoRaMacDevNonce; +/*! + * Network ID ( 3 bytes ) + */ +static uint32_t LoRaMacNetID; + /*! * Mote Address */ @@ -168,21 +174,38 @@ static uint8_t MacCommandsBufferIndex = 0; */ static uint8_t MacCommandsBuffer[15]; +/*! + * Data rates table definition + */ +const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Tx output powers table definition + */ +const int8_t TxPowers[] = { 20, 14, 11, 8, 5, 2 }; + /*! * LoRaMAC channels */ -static ChannelParams_t Channels[LORA_NB_CHANNELS] = +static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS] = { - { true, LC1, 7, 0, 14 }, // G1 LoRa SF=7-12 BW=125 kHz - { true, LC2, 7, 0, 14 }, // G1 LoRa SF=7-12 BW=125 kHz - { true, LC3, 7, 0, 14 }, // G1 LoRa SF=7-12 BW=125 kHz - { false, LC4, 7, 0, 14 }, // G2 LoRa SF=7-12 BW=125 kHz - { false, LC5, 7, 0, 14 }, // G2 LoRa SF=7-12 BW=125 kHz - { false, LC6, 7, 0, 14 }, // G3 LoRa SF=7-12 BW=125 kHz - { false, LC7, 7, 1, 14 }, // G1 LoRa SF=7 BW=250 kHz - { false, FC1, 100, 0, 14 }, // G1 FSK BR=100 kbps BW=250 kHz + LC1, + LC2, + LC3, }; +static Rx2ChannelParams_t Rx2Channel = RX_WND_2_CHANNEL; + +static uint16_t ChannelsMask = LC( 1 ) + LC( 2 ) + LC( 3 ); // By default LC1, LC2 and LC3 are enabled +static int8_t ChannelsTxPower = LORAMAC_DEFAULT_TX_POWER; +static int8_t ChannelsDatarate = LORAMAC_DEFAULT_DATARATE; + +static uint8_t ChannelsNbRep = 1; // Number of uplink messages repetitions [1:15] (unconfirmed messages only) +static uint8_t ChannelsNbRepCounter = 0; + +static uint8_t MaxDCycle = 0; +static double AggregatedDCycle = 1.0; // No limitation + /*! * Current channel index */ @@ -239,7 +262,7 @@ static void OnRadioTxDone( void ); /*! * Function to be executed on Radio Rx Done event */ -static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); +static void OnRadioRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * Function executed on Radio Tx Timeout event @@ -283,25 +306,30 @@ static uint8_t LoRaMacSetNextChannel( void ) uint8_t i = 0; uint8_t channelPrev = Channel; uint8_t nbEnabledChannels = 0; - uint8_t enabledChannels[LORA_NB_CHANNELS]; + uint8_t enabledChannels[LORA_MAX_NB_CHANNELS]; // Search how many channels are enabled - for( i = 0; i < LORA_NB_125_CHANNELS; i++ ) + for( i = 0; i < LORA_MAX_NB_CHANNELS; i++ ) { - if( Channels[i].Enabled == true ) + if( ( ( 1 << i ) & ChannelsMask ) != 0 ) { enabledChannels[nbEnabledChannels++] = i; } } if( nbEnabledChannels > 1 ) { - for( i = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; i < LORA_NB_125_CHANNELS; i++, Channel++ ) + for( i = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; i < LORA_MAX_NB_CHANNELS; i++ ) { i = i % ( enabledChannels[nbEnabledChannels - 1] + 1 ); if( channelPrev == i ) { continue; } + if( ( ( Channels[i].DrRange.Fields.Min <= ChannelsDatarate ) && + ( ChannelsDatarate <= Channels[i].DrRange.Fields.Max ) ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } if( Radio.IsChannelFree( MODEM_LORA, Channels[i].Frequency, RSSI_FREE_TH ) == true ) { // Free channel found @@ -312,9 +340,15 @@ static uint8_t LoRaMacSetNextChannel( void ) // No free channel found. Keep previous channel return 1; } - else + else if( nbEnabledChannels == 1 ) { Channel = enabledChannels[0]; + if( ( ( Channels[i].DrRange.Fields.Min <= ChannelsDatarate ) && + ( ChannelsDatarate <= Channels[i].DrRange.Fields.Max ) ) == false ) + { // Check if the current channel selection supports the given datarate + // No free channel found. Keep previous channel + return 1; + } if( Radio.IsChannelFree( MODEM_LORA, Channels[Channel].Frequency, RSSI_FREE_TH ) == true ) { // Free channel found @@ -323,6 +357,11 @@ static uint8_t LoRaMacSetNextChannel( void ) // No free channel found. Keep previous channel return 1; } + else + { + // No free channel found. Keep previous channel + return 1; + } } /*! @@ -333,7 +372,10 @@ static uint8_t LoRaMacSetNextChannel( void ) * \param [in] cmd MAC command to be added * [MOTE_MAC_LINK_CHECK_REQ, * MOTE_MAC_LINK_ADR_ANS, - * MOTE_MAC_DEV_STATUS_ANS] + * MOTE_MAC_DUTY_CYCLE_ANS, + * MOTE_MAC_RX2_PARAM_SET_ANS, + * MOTE_MAC_DEV_STATUS_ANS + * MOTE_MAC_NEW_CHANNEL_ANS] * \param [in] p1 1st parameter ( optional depends on the command ) * \param [in] p2 2nd parameter ( optional depends on the command ) * @@ -348,12 +390,26 @@ static uint8_t AddMacCommand( uint8_t cmd, uint8_t p1, uint8_t p2 ) // No payload for this command break; case MOTE_MAC_LINK_ADR_ANS: + // Margin + MacCommandsBuffer[MacCommandsBufferIndex++] = p1; + break; + case MOTE_MAC_DUTY_CYCLE_ANS: + // No payload for this answer + break; + case MOTE_MAC_RX2_SETUP_ANS: + // Status: Datarate ACK, Channel ACK MacCommandsBuffer[MacCommandsBufferIndex++] = p1; break; case MOTE_MAC_DEV_STATUS_ANS: + // 1st byte Battery + // 2nd byte Margin MacCommandsBuffer[MacCommandsBufferIndex++] = p1; MacCommandsBuffer[MacCommandsBufferIndex++] = p2; break; + case MOTE_MAC_NEW_CHANNEL_ANS: + // Status: Datarate range OK, Channel frequency OK + MacCommandsBuffer[MacCommandsBufferIndex++] = p1; + break; default: return 1; } @@ -392,7 +448,14 @@ void LoRaMacInit( LoRaMacEvent_t *events ) IsLoRaMacNetworkJoined = false; IsLoRaMacTransmitting = false; - + + ChannelsMask = LC( 1 ) + LC( 2 ) + LC( 3 );; + ChannelsTxPower = LORAMAC_DEFAULT_TX_POWER; + ChannelsDatarate = LORAMAC_DEFAULT_DATARATE; + ChannelsNbRep = 1; + ChannelsNbRepCounter = 0; + AggregatedDCycle = 1.0; + TimerInit( &RxWindowTimer1, OnRxWindow1TimerEvent ); TimerSetValue( &RxWindowTimer1, CLS2_RECEIVE_DELAY1 ); TimerInit( &RxWindowTimer2, OnRxWindow2TimerEvent ); @@ -413,7 +476,7 @@ void LoRaMacInit( LoRaMacEvent_t *events ) srand( RAND_SEED ); // Initialize channel index. - Channel = LORA_NB_CHANNELS; + Channel = LORA_MAX_NB_CHANNELS; Radio.Sleep( ); } @@ -423,8 +486,9 @@ void LoRaMacSetAdrOn( bool enable ) AdrCtrlOn = enable; } -void LoRaMacInitNwkIds( uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ) +void LoRaMacInitNwkIds( uint32_t netID, uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ) { + LoRaMacNetID = netID; LoRaMacDevAddr = devAddr; LoRaMacMemCpy( nwkSKey, LoRaMacNwkSKey, 16 ); LoRaMacMemCpy( appSKey, LoRaMacAppSKey, 16 ); @@ -490,6 +554,10 @@ uint8_t LoRaMacSend( LoRaMacHeader_t *macHdr, uint8_t *fOpts, uint8_t fPort, voi fCtrl.Bits.AdrAckReq = false; fCtrl.Bits.Adr = AdrCtrlOn; + if( MaxDCycle == 255 ) + { + return 6; + } if( LoRaMacSetNextChannel( ) != 0 ) { return 5; @@ -527,7 +595,7 @@ uint8_t LoRaMacPrepareFrame( ChannelParams_t channel, LoRaMacHeader_t *macHdr, L LoRaMacMemCpy( LoRaMacDevEui, LoRaMacBuffer + LoRaMacBufferPktLen, 8 ); LoRaMacBufferPktLen += 8; - // TODO: Add DevNonce generation, currently LoRaMacDevNonce = 0 + LoRaMacDevNonce = Radio.Random( ); LoRaMacBuffer[LoRaMacBufferPktLen++] = LoRaMacDevNonce & 0xFF; LoRaMacBuffer[LoRaMacBufferPktLen++] = ( LoRaMacDevNonce >> 8 ) & 0xFF; @@ -544,6 +612,7 @@ uint8_t LoRaMacPrepareFrame( ChannelParams_t channel, LoRaMacHeader_t *macHdr, L #if( ACKNOWLEDGE_RETRIES_ENABLED == 1 ) NodeAckRequested = true; #endif + //Intentional falltrough case FRAME_TYPE_DATA_UNCONFIRMED: if( IsLoRaMacNetworkJoined == false ) { @@ -562,7 +631,7 @@ uint8_t LoRaMacPrepareFrame( ChannelParams_t channel, LoRaMacHeader_t *macHdr, L if( fCtrl->Bits.Adr == true ) { - if( channel.Datarate == 12 ) + if( ChannelsDatarate == LORAMAC_MIN_DATARATE ) { AdrAckCounter = 0; fCtrl->Bits.AdrAckReq = false; @@ -580,16 +649,10 @@ uint8_t LoRaMacPrepareFrame( ChannelParams_t channel, LoRaMacHeader_t *macHdr, L if( AdrAckCounter > ( ADR_ACK_LIMIT + ADR_ACK_DELAY ) ) { AdrAckCounter = 0; - if( channel.Datarate < 12 ) + if( ChannelsDatarate > LORAMAC_MIN_DATARATE ) { - channel.Datarate++; + ChannelsDatarate--; } - Channels[0].Datarate = channel.Datarate; - Channels[1].Datarate = channel.Datarate; - Channels[2].Datarate = channel.Datarate; - Channels[3].Datarate = channel.Datarate; - Channels[4].Datarate = channel.Datarate; - Channels[5].Datarate = channel.Datarate; } } } @@ -671,10 +734,22 @@ uint8_t LoRaMacPrepareFrame( ChannelParams_t channel, LoRaMacHeader_t *macHdr, L uint8_t LoRaMacSendFrameOnChannel( ChannelParams_t channel ) { - LoRaMacEventInfo.TxDatarate = channel.Datarate; + LoRaMacEventInfo.TxDatarate = Datarates[ChannelsDatarate]; Radio.SetChannel( channel.Frequency ); - Radio.SetTxConfig( MODEM_LORA, channel.Power, 0, channel.Bw, channel.Datarate, 1, 8, false, true, false, 3000000 ); + + if( ChannelsDatarate == DR_FSK ) + { // High Speed FSK channel + Radio.SetTxConfig( MODEM_FSK, TxPowers[ChannelsTxPower], 25e3, 0, Datarates[ChannelsDatarate] * 1e3, 0, 5, false, true, false, 3e6 ); + } + else if( ChannelsDatarate == DR_SF7H ) + { // High speed LoRa channel + Radio.SetTxConfig( MODEM_LORA, TxPowers[ChannelsTxPower], 0, 1, Datarates[ChannelsDatarate], 1, 8, false, true, false, 3e6 ); + } + else + { // Normal LoRa channel + Radio.SetTxConfig( MODEM_LORA, TxPowers[ChannelsTxPower], 0, 0, Datarates[ChannelsDatarate], 1, 8, false, true, false, 3e6 ); + } IsLoRaMacTransmitting = true; Radio.Send( LoRaMacBuffer, LoRaMacBufferPktLen ); @@ -705,9 +780,6 @@ uint8_t LoRaMacSendOnChannel( ChannelParams_t channel, LoRaMacHeader_t *macHdr, static void LoRaMacProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t commandsSize ) { - const uint8_t DataRates[] = { 12, 11, 10, 9, 8, 7, 7, 100 }; - const uint8_t Powers[] = { 20, 14, 11, 8, 5, 2 }; - while( macIndex < commandsSize ) { // Decode Frame MAC commands @@ -720,96 +792,149 @@ static void LoRaMacProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8 break; case SRV_MAC_LINK_ADR_REQ: { - uint8_t channel = 0; - uint8_t dataRate = 0; - uint8_t txPower = 0; - uint16_t chMask = 0; + uint8_t i; + uint8_t status = 0xFF; + uint8_t drOkCounter = 0; + uint16_t mask = 0; + int8_t txPower = 0; + int8_t datarate = 0; + uint8_t nbRep = 0; - dataRate = payload[macIndex++]; - txPower = dataRate & 0x0F; - dataRate = ( dataRate >> 4 ) & 0x0F; - chMask = payload[macIndex++]; - chMask |= payload[macIndex++] << 8; - if( dataRate < 6 ) - { - // Handle 125 kHz channels - while( channel < LORA_NB_125_CHANNELS ) - { - Channels[channel].Datarate = DataRates[dataRate]; - Channels[channel].Power = Powers[txPower]; - channel++; - } - } - else - { - // TODO: Set the LoRaMac to work on a single channel, - // either LC7 ( SF7, BW = 250 KHz ) or - // FC1 ( 100 kbps, BW = 250 KHz ) - } - // TODO: Optimize by using a loop. - if( chMask == 0 ) + datarate = payload[macIndex++]; + txPower = datarate & 0x0F; + datarate = ( datarate >> 4 ) & 0x0F; + + mask = payload[macIndex++]; + mask |= payload[macIndex++] << 8; + + nbRep = payload[macIndex++] & 0x0F; + if( nbRep == 0 ) { - // In case no channel is allowed default to LC1,2,3 - chMask = 0x07; + nbRep = 1; } - if( ( chMask & 0x01 ) == 0x01 ) + + if( mask == 0 ) { - Channels[0].Enabled = true; // LC1 + // Can not disable all channels. Default to LC1, LC2, LC3 + mask = LC( 1 ) + LC( 2 ) + LC( 3 ); } - else + + for( i = 0; i < LORA_MAX_NB_CHANNELS; i++ ) { - Channels[0].Enabled = false; // LC1 + if( ( ( ( 1 << 8 ) & mask ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + if( ( Channels[i].Frequency != 0 ) && + ( ( Channels[i].DrRange.Fields.Min <= datarate ) && + ( datarate <= Channels[i].DrRange.Fields.Max ) ) ) + { + drOkCounter++; + } } - if( ( chMask & 0x02 ) == 0x02 ) + if( drOkCounter == 0 ) { - Channels[1].Enabled = true; // LC2 - //Channels[6].Enabled = true; // LC7 - //Channels[7].Enabled = true; // FC1 + status &= 0xFD; // Datarate KO } - else + // + // Remark MaxTxPower = 0 and MinTxPower = 5 + // + if( ( ( LORAMAC_MAX_TX_POWER <= txPower ) && + ( txPower <= LORAMAC_MIN_TX_POWER ) ) == false ) { - Channels[1].Enabled = false; // LC2 - Channels[6].Enabled = false; // LC7 - Channels[7].Enabled = false; // FC1 + status &= 0xFB; // TxPower KO } - if( ( chMask & 0x04 ) == 0x04 ) + if( ( status & 0x07 ) == 0x07 ) { - Channels[2].Enabled = true; // LC3 + ChannelsDatarate = datarate; + ChannelsTxPower = txPower; + ChannelsMask = mask; + ChannelsNbRep = nbRep; } - else + AddMacCommand( MOTE_MAC_LINK_ADR_ANS, status, 0 ); + } + break; + case SRV_MAC_DUTY_CYCLE_REQ: + AggregatedDCycle = 1.0 / pow( 2, payload[macIndex++] ); + AddMacCommand( MOTE_MAC_DUTY_CYCLE_ANS, 0, 0 ); + break; + case SRV_MAC_RX2_SETUP_REQ: + { + uint8_t status = 0xFF; + int8_t datarate = 0; + uint32_t freq = 0; + + datarate = payload[macIndex++]; + freq = payload[macIndex++]; + freq |= payload[macIndex++] << 8; + freq |= payload[macIndex++] << 16; + + if( Radio.CheckRfFrequency( freq ) == false ) { - Channels[2].Enabled = false; // LC3 + status &= 0xFE; // Channel frequency KO } - if( ( chMask & 0x08 ) == 0x08 ) + + if( ( ( LORAMAC_MIN_DATARATE <= datarate ) && + ( datarate <= LORAMAC_MAX_DATARATE ) ) == false ) { - Channels[3].Enabled = true; // LC4 + status &= 0xFD; // Datarate range KO } - else + + if( ( status & 0x03 ) == 0x03 ) { - Channels[3].Enabled = false; // LC4 + Rx2Channel.Datarate = datarate; + Rx2Channel.Frequency = freq; } - if( ( chMask & 0x10 ) == 0x10 ) + AddMacCommand( MOTE_MAC_RX2_SETUP_ANS, status, 0 ); + } + break; + case SRV_MAC_DEV_STATUS_REQ: + AddMacCommand( MOTE_MAC_DEV_STATUS_ANS, BoardMeasureBatterieLevel( ), RxRawSnr ); + break; + case SRV_MAC_NEW_CHANNEL_REQ: + { + uint8_t status = 0xFF; + int8_t channelIndex = 0; + uint32_t freq = 0; + DrRange_t drRange = { 0 }; + uint8_t dutyCycle = 0; + + channelIndex = payload[macIndex++]; + freq = payload[macIndex++]; + freq |= payload[macIndex++] << 8; + freq |= payload[macIndex++] << 16; + freq *= 100; + drRange.Value = payload[macIndex++]; + dutyCycle = payload[macIndex++]; + + if( ( channelIndex < 3 ) && ( channelIndex > LORA_MAX_NB_CHANNELS ) ) { - Channels[4].Enabled = true; // LC5 + status &= 0xFE; // Channel frequency KO } - else + + if( Radio.CheckRfFrequency( freq ) == false ) { - Channels[4].Enabled = false; // LC5 + status &= 0xFE; // Channel frequency KO } - if( ( chMask & 0x20 ) == 0x20 ) + + if( ( drRange.Fields.Min > drRange.Fields.Max ) && + ( ( LORAMAC_MIN_DATARATE <= drRange.Fields.Min ) && + ( drRange.Fields.Min <= LORAMAC_MAX_DATARATE ) == false ) && + ( ( LORAMAC_MIN_DATARATE <= drRange.Fields.Max ) && + ( drRange.Fields.Max <= LORAMAC_MAX_DATARATE ) == false ) ) { - Channels[5].Enabled = true; // LC6 + status &= 0xFD; // Datarate range KO } - else + if( ( status & 0x03 ) == 0x03 ) { - Channels[5].Enabled = false; // LC6 + Channels[channelIndex].Frequency = freq; + Channels[channelIndex].DrRange = drRange; + Channels[channelIndex].DutyCycle = dutyCycle; } - AddMacCommand( MOTE_MAC_LINK_ADR_ANS, RxRawSnr, 0 ); + AddMacCommand( MOTE_MAC_RX2_SETUP_ANS, status, 0 ); } break; - case SRV_MAC_DEV_STATUS_REQ: - AddMacCommand( MOTE_MAC_DEV_STATUS_ANS, BoardMeasureBatterieLevel( ), RxRawSnr ); - break; default: // Unknown command. ABORT MAC commands processing return; @@ -822,9 +947,6 @@ static void LoRaMacProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8 */ static void OnRadioTxDone( void ) { -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin1, 1 ); -#endif Radio.Sleep( ); if( IsRxWindowsEnabled == true ) @@ -853,16 +975,14 @@ static void OnRadioTxDone( void ) } } + // TODO: Repeated frames only count once AdrAckCounter++; -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin1, 0 ); -#endif } /*! * Function to be executed on Rx Done event */ -static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ) +static void OnRadioRxDone( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ) { LoRaMacHeader_t macHdr; LoRaMacFrameCtrl_t fCtrl; @@ -883,9 +1003,6 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double TimerStop( &RxWindowTimer2 ); -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin3, 1 ); -#endif macHdr.Value = payload[pktHeaderLen++]; switch( macHdr.Bits.MType ) @@ -897,15 +1014,19 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double LoRaMacJoinComputeMic( LoRaMacPayload, 13, LoRaMacAppKey, &mic ); - micRx |= LoRaMacPayload[*size - 4]; - micRx |= ( LoRaMacPayload[*size - 3] << 8 ); - micRx |= ( LoRaMacPayload[*size - 2] << 16 ); - micRx |= ( LoRaMacPayload[*size - 1] << 24 ); + micRx |= LoRaMacPayload[size - 4]; + micRx |= ( LoRaMacPayload[size - 3] << 8 ); + micRx |= ( LoRaMacPayload[size - 2] << 16 ); + micRx |= ( LoRaMacPayload[size - 1] << 24 ); if( micRx == mic ) { LoRaMacJoinComputeSKeys( LoRaMacAppKey, LoRaMacPayload + 1, LoRaMacDevNonce, LoRaMacNwkSKey, LoRaMacAppSKey ); + LoRaMacNetID = LoRaMacPayload[4]; + LoRaMacNetID |= ( LoRaMacPayload[5] << 8 ); + LoRaMacNetID |= ( LoRaMacPayload[6] << 16 ); + LoRaMacDevAddr = LoRaMacPayload[7]; LoRaMacDevAddr |= ( LoRaMacPayload[8] << 8 ); LoRaMacDevAddr |= ( LoRaMacPayload[9] << 16 ); @@ -938,9 +1059,6 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double if( address != LoRaMacDevAddr ) { // We are not the destination of this frame. Just discard! -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin3, 0 ); -#endif return; } @@ -951,17 +1069,17 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double appPayloadStartIndex = 8 + fCtrl.Bits.OptionsLength; - micRx |= payload[*size - 4]; - micRx |= ( payload[*size - 3] << 8 ); - micRx |= ( payload[*size - 2] << 16 ); - micRx |= ( payload[*size - 1] << 24 ); + micRx |= payload[size - 4]; + micRx |= ( payload[size - 3] << 8 ); + micRx |= ( payload[size - 2] << 16 ); + micRx |= ( payload[size - 1] << 24 ); sequence = ( int32_t )sequenceCounter - ( int32_t )( DownLinkCounter & 0xFFFF ); if( sequence < 0 ) { // sequence reset or roll over happened DownLinkCounter = ( DownLinkCounter & 0xFFFF0000 ) | ( sequenceCounter + ( uint32_t )0x10000 ); - LoRaMacComputeMic( payload, *size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); + LoRaMacComputeMic( payload, size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); if( micRx == mic ) { isMicOk = true; @@ -971,13 +1089,13 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double isMicOk = false; // sequence reset DownLinkCounter = sequenceCounter; - LoRaMacComputeMic( payload, *size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); + LoRaMacComputeMic( payload, size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); } } else { DownLinkCounter = ( DownLinkCounter & 0xFFFF0000 ) | sequenceCounter; - LoRaMacComputeMic( payload, *size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); + LoRaMacComputeMic( payload, size - 4, LoRaMacNwkSKey, address, DOWN_LINK, DownLinkCounter, &mic ); } if( ( isMicOk == true ) || @@ -1018,10 +1136,10 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double LoRaMacEventInfo.TxNbRetries = 0; #endif } - if( ( ( *size - 4 ) - appPayloadStartIndex ) > 0 ) + if( ( ( size - 4 ) - appPayloadStartIndex ) > 0 ) { port = payload[appPayloadStartIndex++]; - frameLen = ( *size - 4 ) - appPayloadStartIndex; + frameLen = ( size - 4 ) - appPayloadStartIndex; if( port == 0 ) { @@ -1075,12 +1193,8 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t *size, double rssi, double default: break; } -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin3, 0 ); -#endif } - /*! * Function executed on Radio Tx Timeout event */ @@ -1104,11 +1218,6 @@ static void OnRadioTxTimeout( void ) static void OnRadioRxTimeout( void ) { Radio.Sleep( ); -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin2, 0 ); - GpioWrite( &DbgPin2, 1 ); - GpioWrite( &DbgPin2, 0 ); -#endif LoRaMacEventFlags.Value = 0; LoRaMacEventInfo.Status = LORAMAC_EVENT_INFO_STATUS_RX_TIMEOUT; @@ -1124,11 +1233,6 @@ static void OnRadioRxTimeout( void ) static void OnRadioRxError( void ) { Radio.Sleep( ); -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin2, 0 ); - GpioWrite( &DbgPin2, 1 ); - GpioWrite( &DbgPin2, 0 ); -#endif LoRaMacEventFlags.Value = 0; LoRaMacEventInfo.Status = LORAMAC_EVENT_INFO_STATUS_RX_ERROR; @@ -1145,14 +1249,29 @@ static void OnRxWindow1TimerEvent( void ) { if( Radio.Status( ) == RF_IDLE ) { - /* For low SF, we increase the number of symbol generating a Rx Timeout */ - if( Channels[Channel].Datarate < 9 ) + uint16_t symbTimeout = 5; + + if( ChannelsDatarate == DR_FSK ) { - Radio.SetRxConfig( MODEM_LORA, Channels[Channel].Bw, Channels[Channel].Datarate, 1, 0, 8, 8, false, false, true, false ); + Radio.SetRxConfig( MODEM_FSK, 50e3, Datarates[ChannelsDatarate] * 1e3, 0, 83.333e3, 5, 0, false, true, false, false ); + } + else if( ChannelsDatarate == DR_SF7H ) + { + symbTimeout = 8; + Radio.SetRxConfig( MODEM_LORA, 1, Datarates[ChannelsDatarate], 1, 0, 8, symbTimeout, false, false, true, false ); } else { - Radio.SetRxConfig( MODEM_LORA, Channels[Channel].Bw, Channels[Channel].Datarate, 1, 0, 8, 5, false, false, true, false ); + // For low SF, we increase the number of symbols generating a Rx Timeout + if( ChannelsDatarate < DR_SF9 ) + { // DR_SF10 = 2, DR_SF11 = 1, DR_SF12 = 0 + symbTimeout = 5; + } + else + { // DR_SF7 = 5, DR_SF8 = 4, DR_SF9 = 3 + symbTimeout = 8; + } + Radio.SetRxConfig( MODEM_LORA, 0, Datarates[ChannelsDatarate], 1, 0, 8, symbTimeout, false, false, true, false ); } Radio.Rx( CLS2_MAX_RX_WINDOW ); } @@ -1173,14 +1292,32 @@ static void OnRxWindow2TimerEvent( void ) if( Radio.Status( ) == RF_IDLE ) { - /* For low SF, we increase the number of symbol generating a Rx Timeout */ - if( Channels[Channel].Datarate < 9 ) + uint16_t symbTimeout = 5; + + // RX2 Defaults to SF9/125kHz - 869.525MHz + Radio.SetChannel( Rx2Channel.Frequency ); + + if( ChannelsDatarate == DR_FSK ) { - Radio.SetRxConfig( MODEM_LORA, Channels[Channel].Bw, Channels[Channel].Datarate, 1, 0, 8, 8, false, false, true, false ); + Radio.SetRxConfig( MODEM_FSK, 50e3, Datarates[Rx2Channel.Datarate] * 1e3, 0, 83.333e3, 5, 0, false, true, false, false ); + } + else if( ChannelsDatarate == DR_SF7H ) + { + symbTimeout = 8; + Radio.SetRxConfig( MODEM_LORA, 1, Datarates[Rx2Channel.Datarate], 1, 0, 8, symbTimeout, false, false, true, false ); } else { - Radio.SetRxConfig( MODEM_LORA, Channels[Channel].Bw, Channels[Channel].Datarate, 1, 0, 8, 5, false, false, true, false ); + // For low SF, we increase the number of symbols generating a Rx Timeout + if( Rx2Channel.Datarate < DR_SF9 ) + { // DR_SF10 = 2, DR_SF11 = 1, DR_SF12 = 0 + symbTimeout = 5; + } + else + { // DR_SF7 = 5, DR_SF8 = 4, DR_SF9 = 3 + symbTimeout = 8; + } + Radio.SetRxConfig( MODEM_LORA, 0, Datarates[Rx2Channel.Datarate], 1, 0, 8, symbTimeout, false, false, true, false ); } Radio.Rx( CLS2_MAX_RX_WINDOW ); } @@ -1198,18 +1335,12 @@ static void OnAckTimeoutTimerEvent( void ) if( ( AckTimeoutRetriesCounter % 2 ) == 0 ) { - uint8_t datarate = Channels[0].Datarate; - uint8_t channel = 0; - - // Handle 125 kHz channels - while( channel < LORA_NB_125_CHANNELS ) - { - Channels[channel].Datarate = MIN( datarate + 1, 12 ); - channel++; - } + ChannelsDatarate = MAX( ChannelsDatarate - 1, LORAMAC_MIN_DATARATE ); } if( LoRaMacSetNextChannel( ) != 0 ) { + TimerSetValue( &AckTimeoutTimer, ACK_TIMEOUT + randr( -ACK_TIMEOUT_RND, ACK_TIMEOUT_RND ) ); + TimerStart( &AckTimeoutTimer ); return; } @@ -1244,6 +1375,16 @@ static void OnAckTimeoutTimerEvent( void ) * ============================================================================ */ +void LoRaMacSetChannelsDatarate( int8_t datrate ) +{ + ChannelsDatarate = datrate; +} + +void LoRaMacSetChannelsTxPower( int8_t txPower ) +{ + ChannelsTxPower = txPower; +} + void LoRaMacTestRxWindowsOn( bool enable ) { IsRxWindowsEnabled = enable; diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index d69f940d2..413e3838e 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -15,20 +15,8 @@ Maintainer: Miguel Luis and Gregory Cristian #ifndef __LORAMAC_H__ #define __LORAMAC_H__ -/*! - * LoRaMac channels definition - */ -#define LORA_NB_CHANNELS 8 -#define LORA_NB_125_CHANNELS 6 - -#define LC1 868100000 -#define LC2 868300000 -#define LC3 868500000 -#define LC4 868850000 -#define LC5 869050000 -#define LC6 869525000 -#define LC7 868300000 -#define FC1 868300000 +// Includes board dependent definitions such as channels frequencies +#include "LoRaMac-board.h" /*! * Beacon interval in ms @@ -105,16 +93,30 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * LoRaMAC channels parameters definition */ +typedef union +{ + int8_t Value; + struct + { + int8_t Min : 4; + int8_t Max : 4; + }Fields; +}DrRange_t; + typedef struct { - uint8_t Enabled; // Channel enabled - uint32_t Frequency; // [Hz] - uint8_t Datarate; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] - // FSK bits/s - uint8_t Bw; // [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] - int8_t Power; // [dBm] + uint32_t Frequency; // Hz + DrRange_t DrRange; // Max datarate [0: SF12, 1: SF11, 2: SF10, 3: SF9, 4: SF8, 5: SF7, 6: SF7, 7: FSK] + // Min datarate [0: SF12, 1: SF11, 2: SF10, 3: SF9, 4: SF8, 5: SF7, 6: SF7, 7: FSK] + int8_t DutyCycle; // 0 = 100% .. 15 = 0.003% }ChannelParams_t; +typedef struct +{ + uint32_t Frequency; // Hz + uint8_t Datarate; // [0: SF12, 1: SF11, 2: SF10, 3: SF9, 4: SF8, 5: SF7, 6: SF7, 7: FSK] +}Rx2ChannelParams_t; + /*! * LoRaMAC frame types */ @@ -127,7 +129,6 @@ typedef enum FRAME_TYPE_PROPRIETARY = 0x07, }LoRaMacFrameType_t; - /*! * LoRaMAC mote MAC commands */ @@ -135,7 +136,10 @@ typedef enum { MOTE_MAC_LINK_CHECK_REQ = 0x02, MOTE_MAC_LINK_ADR_ANS = 0x03, + MOTE_MAC_DUTY_CYCLE_ANS = 0x04, + MOTE_MAC_RX2_SETUP_ANS = 0x05, MOTE_MAC_DEV_STATUS_ANS = 0x06, + MOTE_MAC_NEW_CHANNEL_ANS = 0x07, }LoRaMacMoteCmd_t; /*! @@ -145,7 +149,10 @@ typedef enum { SRV_MAC_LINK_CHECK_ANS = 0x02, SRV_MAC_LINK_ADR_REQ = 0x03, + SRV_MAC_DUTY_CYCLE_REQ = 0x04, + SRV_MAC_RX2_SETUP_REQ = 0x05, SRV_MAC_DEV_STATUS_REQ = 0x06, + SRV_MAC_NEW_CHANNEL_REQ = 0x07, }LoRaMacSrvCmd_t; /*! @@ -269,14 +276,16 @@ void LoRaMacSetAdrOn( bool enable ); * * \remark To be only used when Over-the-Air activation isn't used. * - * \param [IN] devAddr 32 bits devide address on the network + * \param [IN] netID 24 bits network identifier + * ( provided by network operator ) + * \param [IN] devAddr 32 bits device address on the network * (must be unique to the network) * \param [IN] nwkSKey Pointer to the network session AES128 key array * ( 16 bytes ) * \param [IN] appSKey Pointer to the application session AES128 key array * ( 16 bytes ) */ -void LoRaMacInitNwkIds( uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ); +void LoRaMacInitNwkIds( uint32_t netID, uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey ); /*! * Initiates the Over-the-Air activation @@ -305,7 +314,8 @@ uint8_t LoRaMacLinkCheckReq( void ); * * \retval status [0: OK, 1: Busy, 2: No network joined, * 3: Length or port error, 4: Unknown MAC command - * 5: Unable to find a free channel] + * 5: Unable to find a free channel + * 6: Device switched off] */ uint8_t LoRaMacSendFrame( uint8_t fPort, void *fBuffer, uint16_t fBufferSize ); @@ -320,7 +330,8 @@ uint8_t LoRaMacSendFrame( uint8_t fPort, void *fBuffer, uint16_t fBufferSize ); * * \retval status [0: OK, 1: Busy, 2: No network joined, * 3: Length or port error, 4: Unknown MAC command - * 5: Unable to find a free channel] + * 5: Unable to find a free channel + * 6: Device switched off] */ uint8_t LoRaMacSendConfirmedFrame( uint8_t fPort, void *fBuffer, uint16_t fBufferSize, uint8_t nbRetries ); @@ -340,7 +351,8 @@ uint8_t LoRaMacSendConfirmedFrame( uint8_t fPort, void *fBuffer, uint16_t fBuffe * \param [IN] fBufferSize MAC data buffer size * \retval status [0: OK, 1: Busy, 2: No network joined, * 3: Length or port error, 4: Unknown MAC command - * 5: Unable to find a free channel] + * 5: Unable to find a free channel + * 6: Device switched off] */ uint8_t LoRaMacSend( LoRaMacHeader_t *macHdr, uint8_t *fOpts, uint8_t fPort, void *fBuffer, uint16_t fBufferSize ); @@ -385,6 +397,23 @@ uint8_t LoRaMacSendFrameOnChannel( ChannelParams_t channel ); */ uint8_t LoRaMacSendOnChannel( ChannelParams_t channel, LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl, uint8_t *fOpts, uint8_t fPort, void *fBuffer, uint16_t fBufferSize ); +/*! + * Sets channels datarate + * + * \param [IN] datrate [DR_SF12, DR_SF11, DR_SF10, DR_SF9, + DR_SF8, DR_SF7, DR_SF7H, DR_FSK] + */ +void LoRaMacSetChannelsDatarate( int8_t datrate ); + +/*! + * Sets channels tx output power + * + * \param [IN] txPower [TX_POWER_20_DBM, TX_POWER_14_DBM, + TX_POWER_11_DBM, TX_POWER_08_DBM, + TX_POWER_05_DBM, TX_POWER_02_DBM] + */ +void LoRaMacSetChannelsTxPower( int8_t txPower ); + /*! * Disables/Enables the reception windows opening * diff --git a/src/mac/LoRaMacCrypto.c b/src/mac/LoRaMacCrypto.c index 7c740acde..acb8837fe 100644 --- a/src/mac/LoRaMacCrypto.c +++ b/src/mac/LoRaMacCrypto.c @@ -179,12 +179,14 @@ void LoRaMacJoinComputeSKeys( uint8_t *key, uint8_t *appNonce, uint16_t devNonce aes_set_key( key, 16, &AesContext ); memset1( nonce, 0, sizeof( nonce ) ); - LoRaMacMemCpy( appNonce, nonce, 6 ); - LoRaMacMemCpy( pDevNonce, nonce + 6, 2 ); + nonce[0] = 0x01; + LoRaMacMemCpy( appNonce, nonce + 1, 6 ); + LoRaMacMemCpy( pDevNonce, nonce + 7, 2 ); aes_encrypt( nonce, nwkSKey, &AesContext ); memset1( nonce, 0, sizeof( nonce ) ); - LoRaMacMemCpy( pDevNonce, nonce, 2 ); - LoRaMacMemCpy( appNonce, nonce + 2, 6 ); + nonce[0] = 0x02; + LoRaMacMemCpy( appNonce, nonce + 1, 6 ); + LoRaMacMemCpy( pDevNonce, nonce + 7, 2 ); aes_encrypt( nonce, appSKey, &AesContext ); } diff --git a/src/peripherals/gpio-ioe.c b/src/peripherals/gpio-ioe.c index e934b4ac1..322024c96 100644 --- a/src/peripherals/gpio-ioe.c +++ b/src/peripherals/gpio-ioe.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: IO Extander implementation (based on the sx1509) +Description: IO expander implementation (based on the sx1509) License: Revised BSD License, see LICENSE.TXT file include in the project diff --git a/src/peripherals/gpio-ioe.h b/src/peripherals/gpio-ioe.h index 7e5d65558..da4147659 100644 --- a/src/peripherals/gpio-ioe.h +++ b/src/peripherals/gpio-ioe.h @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: IO extender driver implementation +Description: IO expander driver implementation License: Revised BSD License, see LICENSE.TXT file include in the project diff --git a/src/peripherals/mag3110.c b/src/peripherals/mag3110.c index a64f14845..78bbe93b2 100644 --- a/src/peripherals/mag3110.c +++ b/src/peripherals/mag3110.c @@ -16,65 +16,64 @@ Maintainer: Miguel Luis and Gregory Cristian #include "mag3110.h" static uint8_t I2cDeviceAddr = 0; +static bool MAG3110Initialized = false; -static bool mag3110Initialized = false; - -uint8_t mag3110Init( void ) +uint8_t MAG3110Init( void ) { uint8_t regVal = 0; - mag3110SetDeviceAddr( MAG3110_I2C_ADDRESS ); + MAG3110SetDeviceAddr( MAG3110_I2C_ADDRESS ); - if( mag3110Initialized == false ) + if( MAG3110Initialized == false ) { - mag3110Initialized = true; + MAG3110Initialized = true; - mag3110Read( MAG3110_ID, ®Val ); + MAG3110Read( MAG3110_ID, ®Val ); if( regVal != 0xC4 ) // Fixed Device ID Number = 0xC4 { return FAIL; } - mag3110Reset( ); + MAG3110Reset( ); } return SUCCESS; } -uint8_t mag3110Reset( void ) +uint8_t MAG3110Reset( void ) { - if( mag3110Write( 0x11, 0x10 ) == SUCCESS ) // Reset the mag3110 with CTRL_REG2 + if( MAG3110Write( 0x11, 0x10 ) == SUCCESS ) // Reset the MAG3110 with CTRL_REG2 { return SUCCESS; } return FAIL; } -uint8_t mag3110Write( uint8_t addr, uint8_t data ) +uint8_t MAG3110Write( uint8_t addr, uint8_t data ) { - return mag3110WriteBuffer( addr, &data, 1 ); + return MAG3110WriteBuffer( addr, &data, 1 ); } -uint8_t mag3110WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MAG3110WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { - return I2cWriteBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); + return I2cWriteBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -uint8_t mag3110Read( uint8_t addr, uint8_t *data ) +uint8_t MAG3110Read( uint8_t addr, uint8_t *data ) { - return mag3110ReadBuffer( addr, data, 1 ); + return MAG3110ReadBuffer( addr, data, 1 ); } -uint8_t mag3110ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MAG3110ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cReadBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -void mag3110SetDeviceAddr( uint8_t addr ) +void MAG3110SetDeviceAddr( uint8_t addr ) { I2cDeviceAddr = addr; } -uint8_t mag3110GetDeviceAddr( void ) +uint8_t MAG3110GetDeviceAddr( void ) { return I2cDeviceAddr; } diff --git a/src/peripherals/mag3110.h b/src/peripherals/mag3110.h index ac712a7c3..9ef1867a7 100644 --- a/src/peripherals/mag3110.h +++ b/src/peripherals/mag3110.h @@ -15,39 +15,38 @@ Maintainer: Miguel Luis and Gregory Cristian #ifndef __MAG3110_H__ #define __MAG3110_H__ -/* +/*! * MAG3110 I2C address */ #define MAG3110_I2C_ADDRESS 0x0E -/* +/*! * MAG3110 Registers */ -#define MAG3110_ID 0x07 +#define MAG3110_ID 0x07 /*! - * \brief Init the device + * \brief Initializes the device * * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110Init( void ); - +uint8_t MAG3110Init( void ); /*! * \brief Resets the device * * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110Reset( void ); +uint8_t MAG3110Reset( void ); /*! * \brief Writes a byte at specified address in the device * - * \param [IN]: addr - * \param [IN]: data + * \param [IN]: addr + * \param [IN]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110Write( uint8_t addr, uint8_t data ); +uint8_t MAG3110Write( uint8_t addr, uint8_t data ); /*! * \brief Writes a buffer at specified address in the device @@ -57,7 +56,7 @@ uint8_t mag3110Write( uint8_t addr, uint8_t data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MAG3110WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Reads a byte at specified address in the device @@ -66,7 +65,7 @@ uint8_t mag3110WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); * \param [OUT]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110Read( uint8_t addr, uint8_t *data ); +uint8_t MAG3110Read( uint8_t addr, uint8_t *data ); /*! * \brief Reads a buffer at specified address in the device @@ -76,20 +75,20 @@ uint8_t mag3110Read( uint8_t addr, uint8_t *data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mag3110ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MAG3110ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Sets the I2C device slave address * * \param [IN]: addr */ -void mag3110SetDeviceAddr( uint8_t addr ); +void MAG3110SetDeviceAddr( uint8_t addr ); /*! * \brief Gets the I2C device slave address * * \retval: addr Current device slave address */ -uint8_t mag3110GetDeviceAddr( void ); +uint8_t MAG3110GetDeviceAddr( void ); #endif // __MAG3110_H__ diff --git a/src/peripherals/mma8451.c b/src/peripherals/mma8451.c index 2f610aa45..03c2c4c06 100644 --- a/src/peripherals/mma8451.c +++ b/src/peripherals/mma8451.c @@ -17,64 +17,64 @@ Maintainer: Miguel Luis and Gregory Cristian static uint8_t I2cDeviceAddr = 0; -static bool mma8451Initialized = false; +static bool MMA8451Initialized = false; -uint8_t mma8451Init( void ) +uint8_t MMA8451Init( void ) { uint8_t regVal = 0; - mma8451SetDeviceAddr( MMA8451_I2C_ADDRESS ); + MMA8451SetDeviceAddr( MMA8451_I2C_ADDRESS ); - if( mma8451Initialized == false ) + if( MMA8451Initialized == false ) { - mma8451Initialized = true; + MMA8451Initialized = true; - mma8451Read( MMA8451_ID, ®Val ); + MMA8451Read( MMA8451_ID, ®Val ); if( regVal != 0x1A ) // Fixed Device ID Number = 0x1A { return FAIL; } - mma8451Reset( ); + MMA8451Reset( ); } return SUCCESS; } -uint8_t mma8451Reset( ) +uint8_t MMA8451Reset( ) { - if( mma8451Write( 0x2B, 0x40 ) == SUCCESS ) // Reset the mma8451 with CTRL_REG2 + if( MMA8451Write( 0x2B, 0x40 ) == SUCCESS ) // Reset the MMA8451 with CTRL_REG2 { return SUCCESS; } return FAIL; } -uint8_t mma8451Write( uint8_t addr, uint8_t data ) +uint8_t MMA8451Write( uint8_t addr, uint8_t data ) { - return mma8451WriteBuffer( addr, &data, 1 ); + return MMA8451WriteBuffer( addr, &data, 1 ); } -uint8_t mma8451WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MMA8451WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cWriteBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -uint8_t mma8451Read( uint8_t addr, uint8_t *data ) +uint8_t MMA8451Read( uint8_t addr, uint8_t *data ) { - return mma8451ReadBuffer( addr, data, 1 ); + return MMA8451ReadBuffer( addr, data, 1 ); } -uint8_t mma8451ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MMA8451ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cReadBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -void mma8451SetDeviceAddr( uint8_t addr ) +void MMA8451SetDeviceAddr( uint8_t addr ) { I2cDeviceAddr = addr; } -uint8_t mma8451GetDeviceAddr( void ) +uint8_t MMA8451GetDeviceAddr( void ) { return I2cDeviceAddr; } diff --git a/src/peripherals/mma8451.h b/src/peripherals/mma8451.h index bcce75db7..33cf0d1bd 100644 --- a/src/peripherals/mma8451.h +++ b/src/peripherals/mma8451.h @@ -25,23 +25,28 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define MMA8451_ID 0x0D -uint8_t mma8451Init( void ); +/*! + * \brief Initializes the device + * + * \retval status [SUCCESS, FAIL] + */ +uint8_t MMA8451Init( void ); /*! * \brief Resets the device * * \retval status [SUCCESS, FAIL] */ -uint8_t mma8451Reset( void ); +uint8_t MMA8451Reset( void ); /*! * \brief Writes a byte at specified address in the device * - * \param [IN]: addr - * \param [IN]: data + * \param [IN]: addr + * \param [IN]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mma8451Write( uint8_t addr, uint8_t data ); +uint8_t MMA8451Write( uint8_t addr, uint8_t data ); /*! * \brief Writes a buffer at specified address in the device @@ -51,7 +56,7 @@ uint8_t mma8451Write( uint8_t addr, uint8_t data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mma8451WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MMA8451WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Reads a byte at specified address in the device @@ -60,7 +65,7 @@ uint8_t mma8451WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); * \param [OUT]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mma8451Read( uint8_t addr, uint8_t *data ); +uint8_t MMA8451Read( uint8_t addr, uint8_t *data ); /*! * \brief Reads a buffer at specified address in the device @@ -70,20 +75,20 @@ uint8_t mma8451Read( uint8_t addr, uint8_t *data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mma8451ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MMA8451ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Sets the I2C device slave address * * \param [IN]: addr */ -void mma8451SetDeviceAddr( uint8_t addr ); +void MMA8451SetDeviceAddr( uint8_t addr ); /*! * \brief Gets the I2C device slave address * * \retval: addr Current device slave address */ -uint8_t mma8451GetDeviceAddr( void ); +uint8_t MMA8451GetDeviceAddr( void ); #endif // __MMA8451_H__ diff --git a/src/peripherals/mpl3115.c b/src/peripherals/mpl3115.c index 027db637d..1e878e63a 100644 --- a/src/peripherals/mpl3115.c +++ b/src/peripherals/mpl3115.c @@ -15,29 +15,24 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "mpl3115.h" -static uint8_t I2cDeviceAddr = 0; - -static bool mpl3115Initialized = false; - -/****************************************************************************** -* Global variables -******************************************************************************/ - -/* - * Hold the last pressure measured +/*! + * Holds the last measured pressure */ float Pressure; -/* - * Hold the last altitude measured +/*! + * Holds the last measured altitude */ float Altitude; -/* - * Hold the last Temperature measured +/*! + * Holds the last measured temperature */ float Temperature; +static uint8_t I2cDeviceAddr = 0; +static bool MPL3115Initialized = false; + /*! * \brief Writes a byte at specified address in the device * @@ -45,7 +40,7 @@ float Temperature; * \param [IN]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115Write( uint8_t addr, uint8_t data ); +uint8_t MPL3115Write( uint8_t addr, uint8_t data ); /*! * \brief Writes a buffer at specified address in the device @@ -55,7 +50,7 @@ uint8_t mpl3115Write( uint8_t addr, uint8_t data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MPL3115WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Reads a byte at specified address in the device @@ -64,7 +59,7 @@ uint8_t mpl3115WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); * \param [OUT]: data * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115Read( uint8_t addr, uint8_t *data ); +uint8_t MPL3115Read( uint8_t addr, uint8_t *data ); /*! * \brief Reads a buffer at specified address in the device @@ -74,155 +69,156 @@ uint8_t mpl3115Read( uint8_t addr, uint8_t *data ); * \param [IN]: size * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t MPL3115ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Sets the I2C device slave address * * \param [IN]: addr */ -void mpl3115SetDeviceAddr( uint8_t addr ); +void MPL3115SetDeviceAddr( uint8_t addr ); /*! * \brief Gets the I2C device slave address * * \retval: addr Current device slave address */ -uint8_t mpl3115GetDeviceAddr( void ); +uint8_t MPL3115GetDeviceAddr( void ); /*! - * \brief Set the device in Marometer Mode + * \brief Sets the device in barometer Mode */ -void mpl3115SetModeBarometer( void ); +void MPL3115SetModeBarometer( void ); /*! - * \brief Set the device in Altimeter Mode + * \brief Sets the device in altimeter Mode */ -void mpl3115SetModeAltimeter( void ); +void MPL3115SetModeAltimeter( void ); /*! - * \brief Set the device in Standby + * \brief Sets the device in standby */ -void mpl3115SetModeStandby( void ); +void MPL3115SetModeStandby( void ); /*! - * \brief Set the device in Measure Mode + * \brief Sets the device in active Mode */ -void mpl3115SetModeActive( void ); +void MPL3115SetModeActive( void ); /*! - * \brief Toggle the OST bit causing the sensor to immediately take another reading + * \brief Toggles the OST bit causing the sensor to immediately take another + * reading */ -void mpl3115ToggleOneShot( void ); +void MPL3115ToggleOneShot( void ); -uint8_t mpl3115Init( void ) +uint8_t MPL3115Init( void ) { uint8_t regVal = 0; - mpl3115SetDeviceAddr( MPL3115A_I2C_ADDRESS ); + MPL3115SetDeviceAddr( MPL3115A_I2C_ADDRESS ); - if( mpl3115Initialized == false ) + if( MPL3115Initialized == false ) { - mpl3115Read( MPL3115_ID, ®Val ); + MPL3115Read( MPL3115_ID, ®Val ); if( regVal != 0xC4 ) { return FAIL; } - mpl3115Reset( ); + MPL3115Reset( ); do { // Wait for the RST bit to clear - mpl3115Read( CTRL_REG1, ®Val ); + MPL3115Read( CTRL_REG1, ®Val ); }while( regVal ); - mpl3115Write( PT_DATA_CFG_REG, 0x07 ); // Enable data flags - mpl3115Write( CTRL_REG3, 0x11 ); // Open drain, active low interrupts - mpl3115Write( CTRL_REG4, 0x80 ); // Enable DRDY interrupt - mpl3115Write( CTRL_REG5, 0x00 ); // DRDY interrupt routed to INT2 - PTD3 - mpl3115Write( CTRL_REG1, 0xA9 ); // Active altitude mode, OSR = 32 - - mpl3115Write( OFF_H_REG, 0xB0 ); // Altitude data offset + MPL3115Write( PT_DATA_CFG_REG, 0x07 ); // Enable data flags + MPL3115Write( CTRL_REG3, 0x11 ); // Open drain, active low interrupts + MPL3115Write( CTRL_REG4, 0x80 ); // Enable DRDY interrupt + MPL3115Write( CTRL_REG5, 0x00 ); // DRDY interrupt routed to INT2 - PTD3 + MPL3115Write( CTRL_REG1, 0xA9 ); // Active altitude mode, OSR = 32 + + MPL3115Write( OFF_H_REG, 0xB0 ); // Altitude data offset - mpl3115SetModeActive( ); + MPL3115SetModeActive( ); - mpl3115Initialized = true; + MPL3115Initialized = true; } return SUCCESS; } -uint8_t mpl3115Reset( ) +uint8_t MPL3115Reset( ) { // Reset all registers to POR values - if( mpl3115Write( CTRL_REG1, 0x04 ) == SUCCESS ) + if( MPL3115Write( CTRL_REG1, 0x04 ) == SUCCESS ) { return SUCCESS; } return FAIL; } -uint8_t mpl3115Write( uint8_t addr, uint8_t data ) +uint8_t MPL3115Write( uint8_t addr, uint8_t data ) { - return mpl3115WriteBuffer( addr, &data, 1 ); + return MPL3115WriteBuffer( addr, &data, 1 ); } -uint8_t mpl3115WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MPL3115WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cWriteBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -uint8_t mpl3115Read( uint8_t addr, uint8_t *data ) +uint8_t MPL3115Read( uint8_t addr, uint8_t *data ) { - return mpl3115ReadBuffer( addr, data, 1 ); + return MPL3115ReadBuffer( addr, data, 1 ); } -uint8_t mpl3115ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t MPL3115ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cReadBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -void mpl3115SetDeviceAddr( uint8_t addr ) +void MPL3115SetDeviceAddr( uint8_t addr ) { I2cDeviceAddr = addr; } -uint8_t mpl3115GetDeviceAddr( void ) +uint8_t MPL3115GetDeviceAddr( void ) { return I2cDeviceAddr; } -float mpl3115ReadAltitude( void ) +float MPL3115ReadAltitude( void ) { uint8_t counter = 0; uint8_t val = 0; uint8_t msb = 0, csb = 0, lsb = 0; float decimal = 0; - if( mpl3115Initialized == false ) + if( MPL3115Initialized == false ) { return 0; } - mpl3115SetModeAltimeter( ); - mpl3115ToggleOneShot( ); + MPL3115SetModeAltimeter( ); + MPL3115ToggleOneShot( ); while( ( val & 0x04 ) != 0x04 ) { - mpl3115Read( STATUS_REG, &val ); + MPL3115Read( STATUS_REG, &val ); DelayMs( 10 ); counter++; if( counter > 20 ) { - mpl3115Initialized = false; - mpl3115Init( ); - mpl3115SetModeAltimeter( ); - mpl3115ToggleOneShot( ); + MPL3115Initialized = false; + MPL3115Init( ); + MPL3115SetModeAltimeter( ); + MPL3115ToggleOneShot( ); counter = 0; while( ( val & 0x04 ) != 0x04 ) { - mpl3115Read( STATUS_REG, &val ); + MPL3115Read( STATUS_REG, &val ); DelayMs( 10 ); counter++; if( counter > 20 ) @@ -233,9 +229,9 @@ float mpl3115ReadAltitude( void ) } } - mpl3115Read( OUT_P_MSB_REG, &msb ); // High byte of integer part of altitude, - mpl3115Read( OUT_P_CSB_REG, &csb ); // Low byte of integer part of altitude - mpl3115Read( OUT_P_LSB_REG, &lsb ); // Decimal part of altitude in bits 7-4 + MPL3115Read( OUT_P_MSB_REG, &msb ); // High byte of integer part of altitude, + MPL3115Read( OUT_P_CSB_REG, &csb ); // Low byte of integer part of altitude + MPL3115Read( OUT_P_LSB_REG, &lsb ); // Decimal part of altitude in bits 7-4 decimal = ( ( float )( lsb >> 4 ) ) / 16.0; Altitude = ( float )( ( msb << 8 ) | csb ) + decimal; @@ -243,33 +239,33 @@ float mpl3115ReadAltitude( void ) return( Altitude ); } -float mpl3115ReadPressure( void ) +float MPL3115ReadPressure( void ) { uint8_t counter = 0; uint8_t val = 0; uint8_t msb = 0, csb = 0, lsb = 0; float decimal = 0; - if( mpl3115Initialized == false ) + if( MPL3115Initialized == false ) { return 0; } - mpl3115SetModeBarometer( ); - mpl3115ToggleOneShot( ); + MPL3115SetModeBarometer( ); + MPL3115ToggleOneShot( ); while( ( val & 0x04 ) != 0x04 ) { - mpl3115Read( STATUS_REG, &val ); + MPL3115Read( STATUS_REG, &val ); DelayMs( 10 ); counter++; if( counter > 20 ) { - mpl3115Initialized = false; - mpl3115Init( ); - mpl3115SetModeBarometer( ); - mpl3115ToggleOneShot( ); + MPL3115Initialized = false; + MPL3115Init( ); + MPL3115SetModeBarometer( ); + MPL3115ToggleOneShot( ); counter = 0; while( ( val & 0x04 ) != 0x04 ) { @@ -285,9 +281,9 @@ float mpl3115ReadPressure( void ) } } - mpl3115Read( OUT_P_MSB_REG, &msb ); // High byte of integer part of pressure, - mpl3115Read( OUT_P_CSB_REG, &csb ); // Low byte of integer part of pressure - mpl3115Read( OUT_P_LSB_REG, &lsb ); // Decimal part of pressure in bits 7-4 + MPL3115Read( OUT_P_MSB_REG, &msb ); // High byte of integer part of pressure, + MPL3115Read( OUT_P_CSB_REG, &csb ); // Low byte of integer part of pressure + MPL3115Read( OUT_P_LSB_REG, &lsb ); // Decimal part of pressure in bits 7-4 Pressure = ( float )( ( msb << 16 | csb << 8 | lsb ) >> 6 ); lsb &= 0x30; //Bits 5/4 represent the fractional component @@ -297,40 +293,40 @@ float mpl3115ReadPressure( void ) Pressure = Pressure + decimal; - mpl3115ToggleOneShot( ); + MPL3115ToggleOneShot( ); return( Pressure ); } -float mpl3115ReadTemperature( void ) +float MPL3115ReadTemperature( void ) { uint8_t counter = 0; bool negSign = false; uint8_t val = 0; uint8_t msb = 0, lsb = 0; - if( mpl3115Initialized == false ) + if( MPL3115Initialized == false ) { return 0; } - mpl3115ToggleOneShot( ); + MPL3115ToggleOneShot( ); while( ( val & 0x02 ) != 0x02 ) { - mpl3115Read( STATUS_REG, &val ); + MPL3115Read( STATUS_REG, &val ); DelayMs( 10 ); counter++; if( counter > 20 ) { - mpl3115Initialized = false; - mpl3115Init( ); - mpl3115ToggleOneShot( ); + MPL3115Initialized = false; + MPL3115Init( ); + MPL3115ToggleOneShot( ); counter = 0; while( ( val & 0x02 ) != 0x02 ) { - mpl3115Read( STATUS_REG, &val ); + MPL3115Read( STATUS_REG, &val ); DelayMs( 10 ); counter++; @@ -343,8 +339,8 @@ float mpl3115ReadTemperature( void ) } } - mpl3115Read( OUT_T_MSB_REG, &msb ); // Integer part of temperature - mpl3115Read( OUT_T_LSB_REG, &lsb ); // Decimal part of temperature in bits 7-4 + MPL3115Read( OUT_T_MSB_REG, &msb ); // Integer part of temperature + MPL3115Read( OUT_T_LSB_REG, &lsb ); // Decimal part of temperature in bits 7-4 if( msb > 0x7F ) { @@ -363,67 +359,67 @@ float mpl3115ReadTemperature( void ) Temperature = msb + ( float )( ( lsb >> 4 ) / 16.0 ); } - mpl3115ToggleOneShot( ); + MPL3115ToggleOneShot( ); return( Temperature ); } -void mpl3115ToggleOneShot( void ) +void MPL3115ToggleOneShot( void ) { uint8_t val = 0; - mpl3115SetModeStandby( ); + MPL3115SetModeStandby( ); - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val &= ~(0x02); //Clear OST bit - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val |= 0x02; //Set OST bit - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); - mpl3115SetModeActive( ); + MPL3115SetModeActive( ); } -void mpl3115SetModeBarometer( void ) +void MPL3115SetModeBarometer( void ) { uint8_t val = 0; - mpl3115SetModeStandby( ); + MPL3115SetModeStandby( ); - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val &= ~( 0x80 ); //Clear ALT bit - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); - mpl3115SetModeActive( ); + MPL3115SetModeActive( ); } -void mpl3115SetModeAltimeter( void ) +void MPL3115SetModeAltimeter( void ) { uint8_t val = 0; - mpl3115SetModeStandby( ); + MPL3115SetModeStandby( ); - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val |= 0x80; //Set ALT bit - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); - mpl3115SetModeActive( ); + MPL3115SetModeActive( ); } -void mpl3115SetModeStandby( void ) +void MPL3115SetModeStandby( void ) { uint8_t val = 0; - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val &= ~( 0x01 ); //Clear SBYB bit for Standby mode - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); } -void mpl3115SetModeActive( void ) +void MPL3115SetModeActive( void ) { uint8_t val = 0; - mpl3115Read( CTRL_REG1, &val ); + MPL3115Read( CTRL_REG1, &val ); val |= 0x01; //Set SBYB bit for Active mode - mpl3115Write( CTRL_REG1, val ); + MPL3115Write( CTRL_REG1, val ); } diff --git a/src/peripherals/mpl3115.h b/src/peripherals/mpl3115.h index 8da34ceed..3b509343f 100644 --- a/src/peripherals/mpl3115.h +++ b/src/peripherals/mpl3115.h @@ -23,100 +23,99 @@ Maintainer: Miguel Luis and Gregory Cristian /* * MPL3115A2 Registers */ -#define STATUS_REG 0x00 // STATUS Register */ - -#define OUT_P_MSB_REG 0x01 // Bits 12-19 of 20-bit real-time Pressure sample -#define OUT_P_CSB_REG 0x02 // Bits 4-11 of 20-bit real-time Pressure sample -#define OUT_P_LSB_REG 0x03 // Bits 0-3 of 20-bit real-time Pressure sample -#define OUT_T_MSB_REG 0x04 // Bits 4-11 of 12-bit real-time Temperature sample -#define OUT_T_LSB_REG 0x05 // Bits 0-3 of 12-bit real-time Temperature sample - -#define DR_STATUS 0x06 // Data Ready status information - -#define OUT_P_DELTA_MSB_REG 0x07 // Bits 12-19 of 20-bit Pressure change data -#define OUT_P_DELTA_CSB_REG 0x08 // Bits 4-11 of 20-bit Pressure change data -#define OUT_P_DELTA_LSB_REG 0x09 // Bits 0-3 of 20-bit Pressure change data -#define OUT_T_DELTA_MSB_REG 0x0A // Bits 4-11 of 12-bit Temperature change data -#define OUT_T_DELTA_LSB_REG 0x0B // Bits 0-3 of 12-bit Temperature change data - -#define MPL3115_ID 0x0C // Fixed Device ID Number = 0xC4 - -#define F_STATUS_REG 0x0D // FIFO Status -#define F_DATA_REG 0x0E // FIFO 8-bit data access -#define F_SETUP_REG 0x0F // FIFO setup -#define TIME_DLY_REG 0x10 // Time since FIFO overflow - -#define SYSMOD_REG 0x11 // Current system mode -#define INT_SOURCE_REG 0x12 // Interrupt status -#define PT_DATA_CFG_REG 0x13 // Data event flag configuration - -#define BAR_IN_MSB_REG 0x14 // Barometric input for Altitude calculation bits 8-15 -#define BAR_IN_LSB_REG 0x15 // Barometric input for Altitude calculation bits 0-7 - -#define P_TGT_MSB_REG 0x16 // Pressure/Altitude target value bits 8-15 -#define P_TGT_LSB_REG 0x17 // Pressure/Altitude target value bits 0-7 -#define T_TGT_REG 0x18 // Temperature target value - -#define P_WND_MSB_REG 0x19 // Pressure/Altitude window value bits 8-15 -#define P_WND_LSB_REG 0x1A // Pressure/Altitude window value bits 0-7 -#define T_WND_REG 0x1B // Temperature window value - -#define P_MIN_MSB_REG 0x1C // Minimum Pressure/Altitude bits 12-19 -#define P_MIN_CSB_REG 0x1D // Minimum Pressure/Altitude bits 4-11 -#define P_MIN_LSB_REG 0x1E // Minimum Pressure/Altitude bits 0-3 -#define T_MIN_MSB_REG 0x1F // Minimum Temperature bits 8-15 -#define T_MIN_LSB_REG 0x20 // Minimum Temperature bits 0-7 - -#define P_MAX_MSB_REG 0x21 // Maximum Pressure/Altitude bits 12-19 -#define P_MAX_CSB_REG 0x22 // Maximum Pressure/Altitude bits 4-11 -#define P_MAX_LSB_REG 0x23 // Maximum Pressure/Altitude bits 0-3 -#define T_MAX_MSB_REG 0x24 // Maximum Pressure/Altitude bits 8-15 -#define T_MAX_LSB_REG 0x25 // Maximum Pressure/Altitude bits 0-7 - -#define CTRL_REG1 0x26 // CTRL_REG1 System Control 1 Register -#define CTRL_REG2 0x27 // CTRL_REG2 System Control 2 Register -#define CTRL_REG3 0x28 // CTRL_REG3 Interrupt Configuration Register -#define CTRL_REG4 0x29 // CTRL_REG4 Interrupt Enable Register -#define CTRL_REG5 0x2A // CTRL_REG5 Interrupt Output Pin Assignment Register - -#define OFF_P_REG 0x2B // Pressure data offset -#define OFF_T_REG 0x2C // Temperature data offset -#define OFF_H_REG 0x2D // Altitude data offset - +#define STATUS_REG 0x00 // STATUS Register + +#define OUT_P_MSB_REG 0x01 // Bits 12-19 of 20-bit real-time Pressure sample +#define OUT_P_CSB_REG 0x02 // Bits 4-11 of 20-bit real-time Pressure sample +#define OUT_P_LSB_REG 0x03 // Bits 0-3 of 20-bit real-time Pressure sample +#define OUT_T_MSB_REG 0x04 // Bits 4-11 of 12-bit real-time Temperature sample +#define OUT_T_LSB_REG 0x05 // Bits 0-3 of 12-bit real-time Temperature sample + +#define DR_STATUS 0x06 // Data Ready status information + +#define OUT_P_DELTA_MSB_REG 0x07 // Bits 12-19 of 20-bit Pressure change data +#define OUT_P_DELTA_CSB_REG 0x08 // Bits 4-11 of 20-bit Pressure change data +#define OUT_P_DELTA_LSB_REG 0x09 // Bits 0-3 of 20-bit Pressure change data +#define OUT_T_DELTA_MSB_REG 0x0A // Bits 4-11 of 12-bit Temperature change data +#define OUT_T_DELTA_LSB_REG 0x0B // Bits 0-3 of 12-bit Temperature change data + +#define MPL3115_ID 0x0C // Fixed Device ID Number = 0xC4 + +#define F_STATUS_REG 0x0D // FIFO Status +#define F_DATA_REG 0x0E // FIFO 8-bit data access +#define F_SETUP_REG 0x0F // FIFO setup +#define TIME_DLY_REG 0x10 // Time since FIFO overflow + +#define SYSMOD_REG 0x11 // Current system mode +#define INT_SOURCE_REG 0x12 // Interrupt status +#define PT_DATA_CFG_REG 0x13 // Data event flag configuration + +#define BAR_IN_MSB_REG 0x14 // Barometric input for Altitude calculation bits 8-15 +#define BAR_IN_LSB_REG 0x15 // Barometric input for Altitude calculation bits 0-7 + +#define P_TGT_MSB_REG 0x16 // Pressure/Altitude target value bits 8-15 +#define P_TGT_LSB_REG 0x17 // Pressure/Altitude target value bits 0-7 +#define T_TGT_REG 0x18 // Temperature target value + +#define P_WND_MSB_REG 0x19 // Pressure/Altitude window value bits 8-15 +#define P_WND_LSB_REG 0x1A // Pressure/Altitude window value bits 0-7 +#define T_WND_REG 0x1B // Temperature window value + +#define P_MIN_MSB_REG 0x1C // Minimum Pressure/Altitude bits 12-19 +#define P_MIN_CSB_REG 0x1D // Minimum Pressure/Altitude bits 4-11 +#define P_MIN_LSB_REG 0x1E // Minimum Pressure/Altitude bits 0-3 +#define T_MIN_MSB_REG 0x1F // Minimum Temperature bits 8-15 +#define T_MIN_LSB_REG 0x20 // Minimum Temperature bits 0-7 + +#define P_MAX_MSB_REG 0x21 // Maximum Pressure/Altitude bits 12-19 +#define P_MAX_CSB_REG 0x22 // Maximum Pressure/Altitude bits 4-11 +#define P_MAX_LSB_REG 0x23 // Maximum Pressure/Altitude bits 0-3 +#define T_MAX_MSB_REG 0x24 // Maximum Pressure/Altitude bits 8-15 +#define T_MAX_LSB_REG 0x25 // Maximum Pressure/Altitude bits 0-7 + +#define CTRL_REG1 0x26 // CTRL_REG1 System Control 1 Register +#define CTRL_REG2 0x27 // CTRL_REG2 System Control 2 Register +#define CTRL_REG3 0x28 // CTRL_REG3 Interrupt Configuration Register +#define CTRL_REG4 0x29 // CTRL_REG4 Interrupt Enable Register +#define CTRL_REG5 0x2A // CTRL_REG5 Interrupt Output Pin Assignment Register + +#define OFF_P_REG 0x2B // Pressure data offset +#define OFF_T_REG 0x2C // Temperature data offset +#define OFF_H_REG 0x2D // Altitude data offset /*! - * \brief Init the device + * \brief Initializes the device * * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115Init( void ); +uint8_t MPL3115Init( void ); /*! * \brief Resets the device * * \retval status [SUCCESS, FAIL] */ -uint8_t mpl3115Reset( void ); +uint8_t MPL3115Reset( void ); /*! - * \brief Read the Altitude from the MPL3115 + * \brief Reads the altitude from the MPL3115 * - * \retval float Altitude + * \retval altitude Measured altitude */ -float mpl3115ReadAltitude( void ); +float MPL3115ReadAltitude( void ); /*! - * \brief Read the Pressure from the MPL3115 + * \brief Reads the Pressure from the MPL3115 * - * \retval float Pressure + * \retval pressure Measured pressure */ -float mpl3115ReadPressure( void ); +float MPL3115ReadPressure( void ); /*! - * \brief Read the Temperature from the MPL3115 + * \brief Reads the Temperature from the MPL3115 * - * \retval float Temperature + * \retval temperature Measured temperature */ -float mpl3115ReadTemperature( void ); +float MPL3115ReadTemperature( void ); #endif // __MPL3115_H__ diff --git a/src/peripherals/sx1509.h b/src/peripherals/sx1509.h index e2a5cfc1a..8bd5d4012 100644 --- a/src/peripherals/sx1509.h +++ b/src/peripherals/sx1509.h @@ -132,8 +132,7 @@ Maintainer: Miguel Luis and Gregory Cristian #define RegHighInputA 0x6A /*! - * \brief Initialize the device - * + * \brief Initializes the device */ void SX1509Init( void ); @@ -147,8 +146,8 @@ uint8_t SX1509Reset( void ); /*! * \brief Writes a byte at specified address in the device * - * \param [IN]: addr - * \param [IN]: data + * \param [IN]: addr + * \param [IN]: data * \retval status [SUCCESS, FAIL] */ uint8_t SX1509Write( uint8_t addr, uint8_t data ); diff --git a/src/peripherals/sx9500.c b/src/peripherals/sx9500.c index 7842aa8bc..de74519fc 100644 --- a/src/peripherals/sx9500.c +++ b/src/peripherals/sx9500.c @@ -17,94 +17,94 @@ Maintainer: Miguel Luis and Gregory Cristian static uint8_t I2cDeviceAddr = 0; -static bool sx9500Initialized = false; +static bool SX9500Initialized = false; -uint8_t sx9500Init( void ) +uint8_t SX9500Init( void ) { - uint8_t reg_val = 0; + uint8_t regVal = 0; - sx9500SetDeviceAddr( SX9500_I2C_ADDRESS ); + SX9500SetDeviceAddr( SX9500_I2C_ADDRESS ); - if( sx9500Initialized == false ) + if( SX9500Initialized == false ) { - sx9500Initialized = true; + SX9500Initialized = true; - sx9500Read( 0x06, ®_val ); - if( reg_val != 0x0F ) + SX9500Read( SX9500_REG_PROXCTRL0, ®Val ); + if( regVal != 0x0F ) { return FAIL; } - sx9500Reset( ); + SX9500Reset( ); } return SUCCESS; } -uint8_t sx9500Reset( ) +uint8_t SX9500Reset( ) { - if( sx9500Write( 0x7F, 0xDE ) == SUCCESS ) + if( SX9500Write( SX9500_REG_RESET, SX9500_RESET_CMD ) == SUCCESS ) { return SUCCESS; } return FAIL; } -uint8_t sx9500Write( uint8_t addr, uint8_t data ) +uint8_t SX9500Write( uint8_t addr, uint8_t data ) { - return sx9500WriteBuffer( addr, &data, 1 ); + return SX9500WriteBuffer( addr, &data, 1 ); } -uint8_t sx9500WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t SX9500WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cWriteBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -uint8_t sx9500Read( uint8_t addr, uint8_t *data ) +uint8_t SX9500Read( uint8_t addr, uint8_t *data ) { - return sx9500ReadBuffer( addr, data, 1 ); + return SX9500ReadBuffer( addr, data, 1 ); } -uint8_t sx9500ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) +uint8_t SX9500ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ) { return I2cReadBuffer( &I2c, I2cDeviceAddr << 1, addr, data, size ); } -void sx9500SetDeviceAddr( uint8_t addr ) +void SX9500SetDeviceAddr( uint8_t addr ) { I2cDeviceAddr = addr; } -uint8_t sx9500GetDeviceAddr( void ) +uint8_t SX9500GetDeviceAddr( void ) { return I2cDeviceAddr; } -void sx9500LockUntilDetection( void ) +void SX9500LockUntilDetection( void ) { uint8_t val = 0; - sx9500Write( 0x7F, 0xDE ); - sx9500Read( 0x00, &val ); - sx9500Read( 0x01, &val ); - - sx9500Write( 0x06, 0x0F ); - sx9500Write( 0x07, 0x43 ); - sx9500Write( 0x08, 0x77 ); - sx9500Write( 0x09, 0x01 ); - sx9500Write( 0x0A, 0x30 ); - sx9500Write( 0x0B, 0x0F ); - sx9500Write( 0x0C, 0x04 ); - sx9500Write( 0x0D, 0x40 ); - sx9500Write( 0x0E, 0x00 ); - sx9500Write( 0x03, 0x60 ); + SX9500Write( SX9500_REG_RESET, SX9500_RESET_CMD ); + SX9500Read( SX9500_REG_IRQSRC, &val ); + SX9500Read( SX9500_REG_STAT, &val ); + + SX9500Write( SX9500_REG_PROXCTRL0, 0x0F ); + SX9500Write( SX9500_REG_PROXCTRL1, 0x43 ); + SX9500Write( SX9500_REG_PROXCTRL2, 0x77 ); + SX9500Write( SX9500_REG_PROXCTRL3, 0x01 ); + SX9500Write( SX9500_REG_PROXCTRL4, 0x30 ); + SX9500Write( SX9500_REG_PROXCTRL5, 0x0F ); + SX9500Write( SX9500_REG_PROXCTRL6, 0x04 ); + SX9500Write( SX9500_REG_PROXCTRL7, 0x40 ); + SX9500Write( SX9500_REG_PROXCTRL8, 0x00 ); + SX9500Write( SX9500_REG_IRQMSK, 0x60 ); val = 0; while( ( val & 0xF0 ) == 0x00 ) { - sx9500Read( 0x01, &val ); + SX9500Read( SX9500_REG_STAT, &val ); } - sx9500Read( 0x01, &val ); - sx9500Read( 0x00, &val ); + SX9500Read( SX9500_REG_STAT, &val ); + SX9500Read( SX9500_REG_IRQSRC, &val ); } diff --git a/src/peripherals/sx9500.h b/src/peripherals/sx9500.h index 0bbe763e6..283d0caab 100644 --- a/src/peripherals/sx9500.h +++ b/src/peripherals/sx9500.h @@ -17,14 +17,39 @@ Maintainer: Miguel Luis and Gregory Cristian #define SX9500_I2C_ADDRESS 0x28 -uint8_t sx9500Init( void ); +#define SX9500_REG_IRQSRC 0x00 +#define SX9500_REG_STAT 0x01 +#define SX9500_REG_IRQMSK 0x03 +#define SX9500_REG_PROXCTRL0 0x06 +#define SX9500_REG_PROXCTRL1 0x07 +#define SX9500_REG_PROXCTRL2 0x08 +#define SX9500_REG_PROXCTRL3 0x09 +#define SX9500_REG_PROXCTRL4 0x0A +#define SX9500_REG_PROXCTRL5 0x0B +#define SX9500_REG_PROXCTRL6 0x0C +#define SX9500_REG_PROXCTRL7 0x0D +#define SX9500_REG_PROXCTRL8 0x0E +#define SX9500_REG_SENSORSEL 0x20 +#define SX9500_REG_USEMSB 0x21 +#define SX9500_REG_USELSB 0x22 +#define SX9500_REG_AVGMSB 0x23 +#define SX9500_REG_AVGLSB 0x24 +#define SX9500_REG_DIFFMSB 0x25 +#define SX9500_REG_DIFFLSB 0x26 +#define SX9500_REG_OFFSETMSB 0x27 +#define SX9500_REG_OFFSETLSB 0x28 +#define SX9500_REG_RESET 0x7F + +#define SX9500_RESET_CMD 0xDE + +uint8_t SX9500Init( void ); /*! * \brief Resets the device * * \retval status [OK, ERROR, UNSUPPORTED] */ -uint8_t sx9500Reset( void ); +uint8_t SX9500Reset( void ); /*! * \brief Writes a byte at specified address in the device @@ -33,7 +58,7 @@ uint8_t sx9500Reset( void ); * \param [IN]: data * \retval status [OK, ERROR, UNSUPPORTED] */ -uint8_t sx9500Write( uint8_t addr, uint8_t data ); +uint8_t SX9500Write( uint8_t addr, uint8_t data ); /*! * \brief Writes a buffer at specified address in the device @@ -43,7 +68,7 @@ uint8_t sx9500Write( uint8_t addr, uint8_t data ); * \param [IN]: size * \retval status [OK, ERROR, UNSUPPORTED] */ -uint8_t sx9500WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t SX9500WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Reads a byte at specified address in the device @@ -52,7 +77,7 @@ uint8_t sx9500WriteBuffer( uint8_t addr, uint8_t *data, uint8_t size ); * \param [OUT]: data * \retval status [OK, ERROR, UNSUPPORTED] */ -uint8_t sx9500Read( uint8_t addr, uint8_t *data ); +uint8_t SX9500Read( uint8_t addr, uint8_t *data ); /*! * \brief Reads a buffer at specified address in the device @@ -62,26 +87,25 @@ uint8_t sx9500Read( uint8_t addr, uint8_t *data ); * \param [IN]: size * \retval status [OK, ERROR, UNSUPPORTED] */ -uint8_t sx9500ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); +uint8_t SX9500ReadBuffer( uint8_t addr, uint8_t *data, uint8_t size ); /*! * \brief Sets the I2C device slave address * * \param [IN]: addr */ -void sx9500SetDeviceAddr( uint8_t addr ); +void SX9500SetDeviceAddr( uint8_t addr ); /*! * \brief Gets the I2C device slave address * * \retval: addr Current device slave address */ -uint8_t sx9500GetDeviceAddr( void ); +uint8_t SX9500GetDeviceAddr( void ); /*! - * \Goes into a loop until a successful capacitive proximity detection - * + * \brief Goes into a loop until a successful capacitive proximity detection */ -void sx9500LockUntilDetection( void ); +void SX9500LockUntilDetection( void ); #endif // __SX1509_H__ diff --git a/src/peripherals/up501.h b/src/peripherals/up501.h deleted file mode 100644 index 884d0f3a0..000000000 --- a/src/peripherals/up501.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - (C)2013 Semtech - -Description: Generic GPIO driver implementation - -License: Revised BSD License, see LICENSE.TXT file include in the project - -Maintainer: Miguel Luis and Gregory Cristian -*/ -#ifndef __UP501_H__ -#define __UP501_H__ - -/* Structure to handle the GPS parsed data in ASCII */ -typedef struct -{ - char NmeaDataType[6]; - char NmeaUtcTime[11]; - char NmeaDataStatus[2]; - char NmeaLatitude[10]; - char NmeaLatitudePole[2]; - char NmeaLongitude[11]; - char NmeaLongitudePole[2]; - char NmeaFixQuality[2]; - char NmeaSatelliteTracked[3]; - char NmeaHorizontalDilution[6]; - char NmeaAltitude[8]; - char NmeaAltitudeUnit[2]; - char NmeaHeightGeoid[8]; - char NmeaHeightGeoidUnit[2]; - char NmeaSpeed[8]; - char NmeaDetectionAngle[8]; - char NmeaDate[8]; -}tNmeaGpsData; - -extern tNmeaGpsData NmeaGpsData; - -/*! - * \brief Init the handling of the GPS receiver - */ -void UP501Init( void ); - -/*! - * \brief - */ -void UP501OnPpsSignal( void ); - -/*! - * \brief Convert the latest Position (latitude and Longitude) into a binary number - */ -void UP501ConvertPositionIntoBinary( void ); - -/*! - * \brief Convert the latest Position (latitude and Longitude) from ASCII into DMS numerical format - */ -void UP501ConvertPositionFromStringToNumerical( void ); - -/*! - * \brief Get the latest Position (latitude and Longitude) as two double values if available - * - * \retval status [SUCCESS, FAIL] - */ -uint8_t UP501GetLatestGpsPositionDouble ( double *lati, double *longi ); - -/*! - * \brief Get the latest Position (latitude and Longitude) as two binary values if available - * - * \retval status [SUCCESS, FAIL] - */ -uint8_t UP501GetLatestGpsPositionBinary ( int32_t *latiBin, int32_t *longiBin ); - -/*! - * \brief This is the NMEA packet parsing function, setup to parse only the GPGGA and GPRMC packets - * - * \retval status [SUCCESS, FAIL] - */ -uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ); - -/*! - * \brief Return the latest Altitude from the NMEA parsed data - * - * \retval Altitude - */ -uint16_t UP501GetLatestGpsAltitude (void); - -/*! - * \brief Convert position form a binary format into decimal format - */ -void UP501ConvertBinaryToPosition( int32_t LatitudeBinary, int32_t LongitudeBinary ); - -/*! - * \brief Format GPS data so that they can be sent - */ -void UP501FormatGpsData( void ); - -/*! - * \brief Reset the GPS position internally so we lose the values if we lose the satellite connection - */ -void UP501ResetPosition( void ); - -#endif // __UP501_H__ diff --git a/src/radio/radio.h b/src/radio/radio.h index 7b7bae8ef..af41766d7 100644 --- a/src/radio/radio.h +++ b/src/radio/radio.h @@ -60,7 +60,7 @@ typedef struct * FSK : N/A ( set to 0 ) * LoRa: Raw SNR value */ - void ( *RxDone )( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr ); + void ( *RxDone )( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr ); /*! * \brief Rx Timeout callback prototype. */ @@ -103,7 +103,18 @@ struct Radio_s * * \retval isFree [true: Channel is free, false: Channel is not free] */ - bool ( *IsChannelFree )( RadioModems_t modem, uint32_t freq, int32_t rssiThresh ); + bool ( *IsChannelFree )( RadioModems_t modem, uint32_t freq, int32_t rssiThresh ); + /*! + * \brief Generates a 32 bits random value based on the RSSI readings + * + * \remark This function sets the radio in LoRa modem mode and disables + * all interrupts. + * After calling this function either Radio.SetRxConfig or + * Radio.SetTxConfig functions must be called. + * + * \retval randomValue 32 bits random value + */ + uint32_t ( *Random )( void ); /*! * \brief Sets the reception parameters * @@ -122,8 +133,8 @@ struct Radio_s * \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only) * FSK : >= 2600 and <= 250000 Hz * LoRa: N/A ( set to 0 ) - * \param [IN] preambleLen Sets the Preamble length (LoRa only) - * FSK : N/A ( set to 0 ) + * \param [IN] preambleLen Sets the Preamble length + * FSK : Number of bytes * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] symbTimeout Sets the RxSingle timeout value (LoRa only) * FSK : N/A ( set to 0 ) @@ -161,8 +172,10 @@ struct Radio_s * FSK : N/A ( set to 0 ) * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] * \param [IN] preambleLen Sets the preamble length + * FSK : Number of bytes + * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] fixLen Fixed length packets [0: variable, 1: fixed] - * \param [IN] crcOn Enables disbles the CRC [0: OFF, 1: ON] + * \param [IN] crcOn Enables disables the CRC [0: OFF, 1: ON] * \param [IN] iqInverted Inverts IQ signals (LoRa only) * FSK : N/A ( set to 0 ) * LoRa: [0: not inverted, 1: inverted] @@ -173,6 +186,13 @@ struct Radio_s uint8_t coderate, uint16_t preambleLen, bool fixLen, bool crcOn, bool iqInverted, uint32_t timeout ); + /*! + * \brief Checks if the given RF frequency is supported by the hardware + * + * \param [IN] frequency RF frequency to be checked + * \retval isSupported [true: supported, false: unsupported] + */ + bool ( *CheckRfFrequency )( uint32_t frequency ); /*! * \brief Computes the packet time on air for the given payload * @@ -183,7 +203,7 @@ struct Radio_s * * \retval airTime Computed airTime for the given packet payload length */ - double ( *TimeOnAir )( RadioModems_t modem, uint8_t pktLen ); + double ( *TimeOnAir )( RadioModems_t modem, uint8_t pktLen ); /*! * \brief Sends the buffer of size. Prepares the packet to be sent and sets * the radio in transmission diff --git a/src/radio/sx1272/sx1272.c b/src/radio/sx1272/sx1272.c index 0aacbf6a5..87ca7aa21 100644 --- a/src/radio/sx1272/sx1272.c +++ b/src/radio/sx1272/sx1272.c @@ -55,7 +55,7 @@ void SX1272Reset( void ); /*! * \brief Sets the SX1272 in transmission mode for the given time - * \param [IN] timeout Transmission timeout [ms] [0: continuous, others timeout] + * \param [IN] timeout Transmission timeout [ms] [0: continuous, others timeout] */ void SX1272SetTx( uint32_t timeout ); @@ -183,7 +183,7 @@ const FskBandwidth_t FskBandwidths[] = { 41700 , 0x13 }, { 50000 , 0x0B }, { 62500 , 0x03 }, - { 83300 , 0x12 }, + { 83333 , 0x12 }, { 100000, 0x0A }, { 125000, 0x02 }, { 166700, 0x11 }, @@ -226,6 +226,7 @@ DioIrqHandler *DioIrq[] = { SX1272OnDio0Irq, SX1272OnDio1Irq, */ TimerEvent_t TxTimeoutTimer; TimerEvent_t RxTimeoutTimer; +TimerEvent_t RxTimeoutSyncWord; /* * Radio driver functions implementation @@ -240,13 +241,14 @@ void SX1272Init( RadioEvents_t *events ) // Initialize driver timeout timers TimerInit( &TxTimeoutTimer, SX1272OnTimeoutIrq ); TimerInit( &RxTimeoutTimer, SX1272OnTimeoutIrq ); + TimerInit( &RxTimeoutSyncWord, SX1272OnTimeoutIrq ); - SX1272IoIrqInit( DioIrq ); - SX1272Reset( ); SX1272SetOpMode( RF_OPMODE_SLEEP ); - + + SX1272IoIrqInit( DioIrq ); + for( i = 0; i < sizeof( RadioRegsInit ) / sizeof( RadioRegisters_t ); i++ ) { SX1272SetModem( RadioRegsInit[i].Modem ); @@ -295,6 +297,42 @@ bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int32_t rssiThresh return true; } +uint32_t SX1272Random( void ) +{ + uint8_t i; + uint32_t rnd = 0; + + /* + * Radio setup for random number generation + */ + // Set LoRa modem ON + SX1272SetModem( MODEM_LORA ); + + // Disable LoRa modem interrupts + SX1272Write( REG_LR_IRQFLAGSMASK, RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED ); + + // Set radio in continuous reception + SX1272SetOpMode( RF_OPMODE_RECEIVER ); + + for( i = 0; i < 32; i++ ) + { + DelayMs( 1 ); + // Unfiltered RSSI value reading. Only takes the LSB value + rnd |= ( ( uint32_t )SX1272Read( REG_LR_RSSIWIDEBAND ) & 0x01 ) << i; + } + + SX1272SetSleep( ); + + return rnd; +} + /*! * Returns the known FSK bandwidth registers value * @@ -335,6 +373,7 @@ void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth, SX1272.Settings.Fsk.CrcOn = crcOn; SX1272.Settings.Fsk.IqInverted = iqInverted; SX1272.Settings.Fsk.RxContinuous = rxContinuous; + SX1272.Settings.Fsk.PreambleLen = preambleLen; datarate = ( uint16_t )( ( double )XTAL_FREQ / ( double )datarate ); SX1272Write( REG_BITRATEMSB, ( uint8_t )( datarate >> 8 ) ); @@ -343,6 +382,9 @@ void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth, SX1272Write( REG_RXBW, GetFskBandwidthRegValue( bandwidth ) ); SX1272Write( REG_AFCBW, GetFskBandwidthRegValue( bandwidthAfc ) ); + SX1272Write( REG_LR_PREAMBLEMSB, ( uint8_t )( ( preambleLen >> 8 ) & 0xFF ) ); + SX1272Write( REG_LR_PREAMBLELSB, ( uint8_t )( preambleLen & 0xFF ) ); + SX1272Write( REG_PACKETCONFIG1, ( SX1272Read( REG_PACKETCONFIG1 ) & RF_PACKETCONFIG1_CRC_MASK & @@ -405,26 +447,37 @@ void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth, if( datarate == 6 ) { - // Write NbTrigPeaks - SX1272Write( 0x31, ( SX1272Read( 0x31 ) & 0xF8 ) | 5 ); + SX1272Write( REG_LR_DETECTOPTIMIZE, + ( SX1272Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF6 ); + SX1272Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF6 ); } else { - // Write NbTrigPeaks - SX1272Write( 0x31, ( SX1272Read( 0x31 ) & 0xF8 ) | 3 ); + SX1272Write( REG_LR_DETECTOPTIMIZE, + ( SX1272Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 ); + SX1272Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF7_TO_SF12 ); } - SX1272Write( 0x33, ( SX1272Read( 0x33 ) & 0xBF ) | ( iqInverted << 6 ) ); + SX1272Write( REG_LR_INVERTIQ, + ( SX1272Read( REG_LR_INVERTIQ ) & + RFLR_INVERTIQ_MASK ) | + ( iqInverted << 6 ) ); } break; } } -void SX1272SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, - uint32_t bandwidth, uint32_t datarate, - uint8_t coderate, uint16_t preambleLen, - bool fixLen, bool crcOn, - bool iqInverted, uint32_t timeout ) +void SX1272SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, + uint32_t bandwidth, uint32_t datarate, + uint8_t coderate, uint16_t preambleLen, + bool fixLen, bool crcOn, + bool iqInverted, uint32_t timeout ) { uint8_t paConfig = 0; uint8_t paDac = 0; @@ -433,6 +486,9 @@ void SX1272SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, paConfig = SX1272Read( REG_PACONFIG ); paDac = SX1272Read( REG_PADAC ); + + paConfig = ( paConfig & RF_PACONFIG_PASELECT_MASK ) | SX1272GetPaSelect( SX1272.Settings.Channel ); + if( ( paConfig & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) { if( power > 17 ) @@ -569,16 +625,27 @@ void SX1272SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, if( datarate == 6 ) { - // Write NbTrigPeaks - SX1272Write( 0x31, ( SX1272Read( 0x31 ) & 0xF8 ) | 5 ); + SX1272Write( REG_LR_DETECTOPTIMIZE, + ( SX1272Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF6 ); + SX1272Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF6 ); } else { - // Write NbTrigPeaks - SX1272Write( 0x31, ( SX1272Read( 0x31 ) & 0xF8 ) | 3 ); + SX1272Write( REG_LR_DETECTOPTIMIZE, + ( SX1272Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 ); + SX1272Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF7_TO_SF12 ); } - SX1272Write( 0x33, ( SX1272Read( 0x33 ) & 0xBF ) | ( iqInverted << 6 ) ); + SX1272Write( REG_LR_INVERTIQ, + ( SX1272Read( REG_LR_INVERTIQ ) & + RFLR_INVERTIQ_MASK ) | + ( iqInverted << 6 ) ); } break; } @@ -598,7 +665,7 @@ double SX1272GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) ( ( ( SX1272Read( REG_PACKETCONFIG1 ) & ~RF_PACKETCONFIG1_ADDRSFILTERING_MASK ) != 0x00 ) ? 1.0 : 0 ) + pktLen + ( ( SX1272.Settings.Fsk.CrcOn == 0x01 ) ? 2.0 : 0 ) ) / - SX1272.Settings.Fsk.Datarate ) * 1e3 ); + SX1272.Settings.Fsk.Datarate ) * 1e6 ); } break; case MODEM_LORA: @@ -687,7 +754,7 @@ void SX1272Send( uint8_t *buffer, uint8_t size ) SX1272Write( REG_LR_FIFOTXBASEADDR, 0 ); SX1272Write( REG_LR_FIFOADDRPTR, 0 ); - // Fifo operations can not take place in Sleep mode + // FIFO operations can not take place in Sleep mode if( ( SX1272Read( REG_OPMODE ) & ~RF_OPMODE_MASK ) == RF_OPMODE_SLEEP ) { SX1272SetStby( ); @@ -721,40 +788,30 @@ void SX1272SetRx( uint32_t timeout ) { bool rxContinuous = false; - TimerSetValue( &RxTimeoutTimer, timeout ); - switch( SX1272.Settings.Modem ) { case MODEM_FSK: { rxContinuous = SX1272.Settings.Fsk.RxContinuous; - - // DIO0=( CrcOn ) ? CrcOk : PayloadReady + + // DIO0=PayloadReady // DIO1=FifoLevel // DIO2=SyncAddr // DIO3=FifoEmpty // DIO4=Preamble // DIO5=ModeReady - if( SX1272.Settings.Fsk.CrcOn == true ) - { - SX1272Write( REG_DIOMAPPING1, ( SX1272Read( REG_DIOMAPPING1 ) & RF_DIOMAPPING1_DIO0_MASK & - RF_DIOMAPPING1_DIO2_MASK ) | - RF_DIOMAPPING1_DIO0_01 | - RF_DIOMAPPING1_DIO2_11 ); - } - else - { - SX1272Write( REG_DIOMAPPING1, ( SX1272Read( REG_DIOMAPPING1 ) & RF_DIOMAPPING1_DIO0_MASK & - RF_DIOMAPPING1_DIO2_MASK ) | - RF_DIOMAPPING1_DIO0_00 | - RF_DIOMAPPING1_DIO2_11 ); - } + SX1272Write( REG_DIOMAPPING1, ( SX1272Read( REG_DIOMAPPING1 ) & RF_DIOMAPPING1_DIO0_MASK & + RF_DIOMAPPING1_DIO2_MASK ) | + RF_DIOMAPPING1_DIO0_00 | + RF_DIOMAPPING1_DIO2_11 ); SX1272Write( REG_DIOMAPPING2, ( SX1272Read( REG_DIOMAPPING2 ) & RF_DIOMAPPING2_DIO4_MASK & RF_DIOMAPPING2_MAP_MASK ) | RF_DIOMAPPING2_DIO4_11 | RF_DIOMAPPING2_MAP_PREAMBLEDETECT ); + SX1272.Settings.FskPacketHandler.FifoThresh = SX1272Read( REG_FIFOTHRESH ) & 0x3F; + SX1272.Settings.FskPacketHandler.PreambleDetected = false; SX1272.Settings.FskPacketHandler.SyncWordDetected = false; SX1272.Settings.FskPacketHandler.NbBytes = 0; @@ -785,15 +842,25 @@ void SX1272SetRx( uint32_t timeout ) memset( RxBuffer, 0, ( size_t )RX_BUFFER_SIZE ); SX1272.Settings.State = RF_RX_RUNNING; - TimerStart( &RxTimeoutTimer ); - -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin2, 1 ); -#endif + if( timeout != 0 ) + { + TimerSetValue( &RxTimeoutTimer, timeout ); + TimerStart( &RxTimeoutTimer ); + } if( SX1272.Settings.Modem == MODEM_FSK ) { SX1272SetOpMode( RF_OPMODE_RECEIVER ); + + if( rxContinuous == false ) + { + TimerSetValue( &RxTimeoutSyncWord, ( 8.0 * ( SX1272.Settings.Fsk.PreambleLen + + ( ( SX1272Read( REG_SYNCCONFIG ) & + ~RF_SYNCCONFIG_SYNCSIZE_MASK ) + + 1.0 ) + 1.0 ) / + ( double )SX1272.Settings.Fsk.Datarate ) * 1e6 ); + TimerStart( &RxTimeoutSyncWord ); + } } else { @@ -1004,9 +1071,34 @@ void SX1272ReadFifo( uint8_t *buffer, uint8_t size ) void SX1272OnTimeoutIrq( void ) { + RadioState_t state = RF_IDLE; switch( SX1272.Settings.State ) { case RF_RX_RUNNING: + if( SX1272.Settings.Modem == MODEM_FSK ) + { + SX1272.Settings.FskPacketHandler.PreambleDetected = false; + SX1272.Settings.FskPacketHandler.SyncWordDetected = false; + SX1272.Settings.FskPacketHandler.NbBytes = 0; + SX1272.Settings.FskPacketHandler.Size = 0; + + // Clear Irqs + SX1272Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | + RF_IRQFLAGS1_PREAMBLEDETECT | + RF_IRQFLAGS1_SYNCADDRESSMATCH ); + SX1272Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN ); + + if( SX1272.Settings.Fsk.RxContinuous == true ) + { + state = SX1272.Settings.State; + // Continuous mode restart Rx chain + SX1272Write( REG_RXCONFIG, SX1272Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + else + { + TimerStart( &RxTimeoutSyncWord ); + } + } if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) { RadioEvents->RxError( ); @@ -1021,14 +1113,13 @@ void SX1272OnTimeoutIrq( void ) default: break; } - SX1272.Settings.State = RF_IDLE; + SX1272.Settings.State = state; } void SX1272OnDio0Irq( void ) { -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin2, 0 ); -#endif + __IO uint8_t irqFlags = 0; + switch( SX1272.Settings.State ) { case RF_RX_RUNNING: @@ -1037,6 +1128,38 @@ void SX1272OnDio0Irq( void ) switch( SX1272.Settings.Modem ) { case MODEM_FSK: + irqFlags = SX1272Read( REG_IRQFLAGS2 ); + if( ( irqFlags & RF_IRQFLAGS2_CRCOK ) != RF_IRQFLAGS2_CRCOK ) + { + // Clear Irqs + SX1272Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | + RF_IRQFLAGS1_PREAMBLEDETECT | + RF_IRQFLAGS1_SYNCADDRESSMATCH ); + SX1272Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN ); + + if( SX1272.Settings.Fsk.RxContinuous == false ) + { + SX1272.Settings.State = RF_IDLE; + TimerStart( &RxTimeoutSyncWord ); + } + else + { + // Continuous mode restart Rx chain + SX1272Write( REG_RXCONFIG, SX1272Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + TimerStop( &RxTimeoutTimer ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) + { + RadioEvents->RxError( ); + } + SX1272.Settings.FskPacketHandler.PreambleDetected = false; + SX1272.Settings.FskPacketHandler.SyncWordDetected = false; + SX1272.Settings.FskPacketHandler.NbBytes = 0; + SX1272.Settings.FskPacketHandler.Size = 0; + break; + } + // Read received packet size if( ( SX1272.Settings.FskPacketHandler.Size == 0 ) && ( SX1272.Settings.FskPacketHandler.NbBytes == 0 ) ) { @@ -1057,31 +1180,44 @@ void SX1272OnDio0Irq( void ) SX1272.Settings.FskPacketHandler.NbBytes += ( SX1272.Settings.FskPacketHandler.Size - SX1272.Settings.FskPacketHandler.NbBytes ); } - SX1272.Settings.State = RF_IDLE; + if( SX1272.Settings.Fsk.RxContinuous == false ) + { + SX1272.Settings.State = RF_IDLE; + TimerStart( &RxTimeoutSyncWord ); + } + else + { + // Continuous mode restart Rx chain + SX1272Write( REG_RXCONFIG, SX1272Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + TimerStop( &RxTimeoutTimer ); if( ( RadioEvents != NULL ) && ( RadioEvents->RxDone != NULL ) ) { - RadioEvents->RxDone( RxBuffer, &SX1272.Settings.FskPacketHandler.Size, SX1272.Settings.FskPacketHandler.RssiValue, 0, 0 ); + RadioEvents->RxDone( RxBuffer, SX1272.Settings.FskPacketHandler.Size, SX1272.Settings.FskPacketHandler.RssiValue, 0, 0 ); } - - TimerStop( &RxTimeoutTimer ); + SX1272.Settings.FskPacketHandler.PreambleDetected = false; + SX1272.Settings.FskPacketHandler.SyncWordDetected = false; + SX1272.Settings.FskPacketHandler.NbBytes = 0; + SX1272.Settings.FskPacketHandler.Size = 0; break; case MODEM_LORA: { - uint8_t irqFlags = 0; uint8_t snr = 0; // Clear Irq - SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_RXDONE ); + SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_RXDONE ); irqFlags = SX1272Read( REG_LR_IRQFLAGS ); if( ( irqFlags & RFLR_IRQFLAGS_PAYLOADCRCERROR_MASK ) == RFLR_IRQFLAGS_PAYLOADCRCERROR ) { // Clear Irq - SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_PAYLOADCRCERROR ); - - SX1272.Settings.State = RF_IDLE; + SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_PAYLOADCRCERROR ); + if( SX1272.Settings.LoRa.RxContinuous == false ) + { + SX1272.Settings.State = RF_IDLE; + } TimerStop( &RxTimeoutTimer ); if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) @@ -1118,16 +1254,18 @@ void SX1272OnDio0Irq( void ) ( double )SX1272Read( REG_LR_PKTRSSIVALUE ); } - SX1272.Settings.LoRaPacketHandler.Size = SX1272Read( REG_LR_NBRXBYTES ); + SX1272.Settings.LoRaPacketHandler.Size = SX1272Read( REG_LR_RXNBBYTES ); SX1272ReadFifo( RxBuffer, SX1272.Settings.LoRaPacketHandler.Size ); - SX1272.Settings.State = RF_IDLE; - + if( SX1272.Settings.LoRa.RxContinuous == false ) + { + SX1272.Settings.State = RF_IDLE; + } TimerStop( &RxTimeoutTimer ); if( ( RadioEvents != NULL ) && ( RadioEvents->RxDone != NULL ) ) { - RadioEvents->RxDone( RxBuffer, ( uint16_t* )&SX1272.Settings.LoRaPacketHandler.Size, SX1272.Settings.LoRaPacketHandler.RssiValue, SX1272.Settings.LoRaPacketHandler.SnrValue, snr ); + RadioEvents->RxDone( RxBuffer, SX1272.Settings.LoRaPacketHandler.Size, SX1272.Settings.LoRaPacketHandler.RssiValue, SX1272.Settings.LoRaPacketHandler.SnrValue, snr ); } } break; @@ -1142,7 +1280,7 @@ void SX1272OnDio0Irq( void ) { case MODEM_LORA: // Clear Irq - SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_TXDONE ); + SX1272Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_TXDONE ); // Intentional fall through case MODEM_FSK: default: @@ -1171,7 +1309,6 @@ void SX1272OnDio1Irq( void ) // Read received packet size if( ( SX1272.Settings.FskPacketHandler.Size == 0 ) && ( SX1272.Settings.FskPacketHandler.NbBytes == 0 ) ) { - if( SX1272.Settings.Fsk.FixLen == false ) { SX1272ReadFifo( ( uint8_t* )&SX1272.Settings.FskPacketHandler.Size, 1 ); @@ -1194,14 +1331,6 @@ void SX1272OnDio1Irq( void ) } break; case MODEM_LORA: -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin1, 1 ); - GpioWrite( &DbgPin2, 0 ); - GpioWrite( &DbgPin2, 1 ); - GpioWrite( &DbgPin2, 0 ); - GpioWrite( &DbgPin1, 0 ); -#endif - // Sync time out TimerStop( &RxTimeoutTimer ); SX1272.Settings.State = RF_IDLE; @@ -1252,6 +1381,8 @@ void SX1272OnDio2Irq( void ) case MODEM_FSK: if( ( SX1272.Settings.FskPacketHandler.PreambleDetected == true ) && ( SX1272.Settings.FskPacketHandler.SyncWordDetected == false ) ) { + TimerStop( &RxTimeoutSyncWord ); + SX1272.Settings.FskPacketHandler.SyncWordDetected = true; SX1272.Settings.FskPacketHandler.RssiValue = -( double )( ( double )SX1272Read( REG_RSSIVALUE ) / 2.0 ); diff --git a/src/radio/sx1272/sx1272.h b/src/radio/sx1272/sx1272.h index 445445f21..6a2c6fe05 100644 --- a/src/radio/sx1272/sx1272.h +++ b/src/radio/sx1272/sx1272.h @@ -167,6 +167,18 @@ void SX1272SetChannel( uint32_t freq ); */ bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int32_t rssiThresh ); +/*! + * \brief Generates a 32 bits random value based on the RSSI readings + * + * \remark This function sets the radio in LoRa modem mode and disables + * all interrupts. + * After calling this function either SX1272SetRxConfig or + * SX1272SetTxConfig functions must be called. + * + * \retval randomValue 32 bits random value + */ +uint32_t SX1272Random( void ); + /*! * \brief Sets the reception parameters * @@ -185,8 +197,8 @@ bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int32_t rssiThresh * \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only) * FSK : >= 2600 and <= 250000 Hz * LoRa: N/A ( set to 0 ) - * \param [IN] preambleLen Sets the Preamble length (LoRa only) - * FSK : N/A ( set to 0 ) + * \param [IN] preambleLen Sets the Preamble length + * FSK : Number of bytes * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] symbTimeout Sets the RxSingle timeout value (LoRa only) * FSK : N/A ( set to 0 ) @@ -225,8 +237,10 @@ void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth, * FSK : N/A ( set to 0 ) * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] * \param [IN] preambleLen Sets the preamble length + * FSK : Number of bytes + * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] fixLen Fixed length packets [0: variable, 1: fixed] - * \param [IN] crcOn Enables disbles the CRC [0: OFF, 1: ON] + * \param [IN] crcOn Enables disables the CRC [0: OFF, 1: ON] * \param [IN] iqInverted Inverts IQ signals (LoRa only) * FSK : N/A ( set to 0 ) * LoRa: [0: not inverted, 1: inverted] diff --git a/src/radio/sx1272/sx1272Regs-LoRa.h b/src/radio/sx1272/sx1272Regs-LoRa.h index f4d34a0b0..352b3a74f 100644 --- a/src/radio/sx1272/sx1272Regs-LoRa.h +++ b/src/radio/sx1272/sx1272Regs-LoRa.h @@ -39,7 +39,7 @@ Maintainer: Miguel Luis and Gregory Cristian #define REG_LR_FIFORXCURRENTADDR 0x10 #define REG_LR_IRQFLAGSMASK 0x11 #define REG_LR_IRQFLAGS 0x12 -#define REG_LR_NBRXBYTES 0x13 +#define REG_LR_RXNBBYTES 0x13 #define REG_LR_RXHEADERCNTVALUEMSB 0x14 #define REG_LR_RXHEADERCNTVALUELSB 0x15 #define REG_LR_RXPACKETCNTVALUEMSB 0x16 @@ -58,6 +58,13 @@ Maintainer: Miguel Luis and Gregory Cristian #define REG_LR_PAYLOADMAXLENGTH 0x23 #define REG_LR_HOPPERIOD 0x24 #define REG_LR_FIFORXBYTEADDR 0x25 +#define REG_LR_FEIMSB 0x28 +#define REG_LR_FEIMID 0x29 +#define REG_LR_FEILSB 0x2A +#define REG_LR_RSSIWIDEBAND 0x2C +#define REG_LR_DETECTOPTIMIZE 0x31 +#define REG_LR_INVERTIQ 0x33 +#define REG_LR_DETECTIONTHRESHOLD 0x37 // end of documented register in datasheet // I/O settings #define REG_LR_DIOMAPPING1 0x40 @@ -111,112 +118,9 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * RegFrf (MHz) */ -#define RFLR_FRFMSB_863_MHZ 0xD7 -#define RFLR_FRFMID_863_MHZ 0xC0 -#define RFLR_FRFLSB_863_MHZ 0x00 -#define RFLR_FRFMSB_864_MHZ 0xD8 -#define RFLR_FRFMID_864_MHZ 0x00 -#define RFLR_FRFLSB_864_MHZ 0x00 -#define RFLR_FRFMSB_865_MHZ 0xD8 -#define RFLR_FRFMID_865_MHZ 0x40 -#define RFLR_FRFLSB_865_MHZ 0x00 -#define RFLR_FRFMSB_866_MHZ 0xD8 -#define RFLR_FRFMID_866_MHZ 0x80 -#define RFLR_FRFLSB_866_MHZ 0x00 -#define RFLR_FRFMSB_867_MHZ 0xD8 -#define RFLR_FRFMID_867_MHZ 0xC0 -#define RFLR_FRFLSB_867_MHZ 0x00 -#define RFLR_FRFMSB_868_MHZ 0xD9 -#define RFLR_FRFMID_868_MHZ 0x00 -#define RFLR_FRFLSB_868_MHZ 0x00 -#define RFLR_FRFMSB_869_MHZ 0xD9 -#define RFLR_FRFMID_869_MHZ 0x40 -#define RFLR_FRFLSB_869_MHZ 0x00 -#define RFLR_FRFMSB_870_MHZ 0xD9 -#define RFLR_FRFMID_870_MHZ 0x80 -#define RFLR_FRFLSB_870_MHZ 0x00 - -#define RFLR_FRFMSB_902_MHZ 0xE1 -#define RFLR_FRFMID_902_MHZ 0x80 -#define RFLR_FRFLSB_902_MHZ 0x00 -#define RFLR_FRFMSB_903_MHZ 0xE1 -#define RFLR_FRFMID_903_MHZ 0xC0 -#define RFLR_FRFLSB_903_MHZ 0x00 -#define RFLR_FRFMSB_904_MHZ 0xE2 -#define RFLR_FRFMID_904_MHZ 0x00 -#define RFLR_FRFLSB_904_MHZ 0x00 -#define RFLR_FRFMSB_905_MHZ 0xE2 -#define RFLR_FRFMID_905_MHZ 0x40 -#define RFLR_FRFLSB_905_MHZ 0x00 -#define RFLR_FRFMSB_906_MHZ 0xE2 -#define RFLR_FRFMID_906_MHZ 0x80 -#define RFLR_FRFLSB_906_MHZ 0x00 -#define RFLR_FRFMSB_907_MHZ 0xE2 -#define RFLR_FRFMID_907_MHZ 0xC0 -#define RFLR_FRFLSB_907_MHZ 0x00 -#define RFLR_FRFMSB_908_MHZ 0xE3 -#define RFLR_FRFMID_908_MHZ 0x00 -#define RFLR_FRFLSB_908_MHZ 0x00 -#define RFLR_FRFMSB_909_MHZ 0xE3 -#define RFLR_FRFMID_909_MHZ 0x40 -#define RFLR_FRFLSB_909_MHZ 0x00 -#define RFLR_FRFMSB_910_MHZ 0xE3 -#define RFLR_FRFMID_910_MHZ 0x80 -#define RFLR_FRFLSB_910_MHZ 0x00 -#define RFLR_FRFMSB_911_MHZ 0xE3 -#define RFLR_FRFMID_911_MHZ 0xC0 -#define RFLR_FRFLSB_911_MHZ 0x00 -#define RFLR_FRFMSB_912_MHZ 0xE4 -#define RFLR_FRFMID_912_MHZ 0x00 -#define RFLR_FRFLSB_912_MHZ 0x00 -#define RFLR_FRFMSB_913_MHZ 0xE4 -#define RFLR_FRFMID_913_MHZ 0x40 -#define RFLR_FRFLSB_913_MHZ 0x00 -#define RFLR_FRFMSB_914_MHZ 0xE4 -#define RFLR_FRFMID_914_MHZ 0x80 -#define RFLR_FRFLSB_914_MHZ 0x00 #define RFLR_FRFMSB_915_MHZ 0xE4 // Default #define RFLR_FRFMID_915_MHZ 0xC0 // Default #define RFLR_FRFLSB_915_MHZ 0x00 // Default -#define RFLR_FRFMSB_916_MHZ 0xE5 -#define RFLR_FRFMID_916_MHZ 0x00 -#define RFLR_FRFLSB_916_MHZ 0x00 -#define RFLR_FRFMSB_917_MHZ 0xE5 -#define RFLR_FRFMID_917_MHZ 0x40 -#define RFLR_FRFLSB_917_MHZ 0x00 -#define RFLR_FRFMSB_918_MHZ 0xE5 -#define RFLR_FRFMID_918_MHZ 0x80 -#define RFLR_FRFLSB_918_MHZ 0x00 -#define RFLR_FRFMSB_919_MHZ 0xE5 -#define RFLR_FRFMID_919_MHZ 0xC0 -#define RFLR_FRFLSB_919_MHZ 0x00 -#define RFLR_FRFMSB_920_MHZ 0xE6 -#define RFLR_FRFMID_920_MHZ 0x00 -#define RFLR_FRFLSB_920_MHZ 0x00 -#define RFLR_FRFMSB_921_MHZ 0xE6 -#define RFLR_FRFMID_921_MHZ 0x40 -#define RFLR_FRFLSB_921_MHZ 0x00 -#define RFLR_FRFMSB_922_MHZ 0xE6 -#define RFLR_FRFMID_922_MHZ 0x80 -#define RFLR_FRFLSB_922_MHZ 0x00 -#define RFLR_FRFMSB_923_MHZ 0xE6 -#define RFLR_FRFMID_923_MHZ 0xC0 -#define RFLR_FRFLSB_923_MHZ 0x00 -#define RFLR_FRFMSB_924_MHZ 0xE7 -#define RFLR_FRFMID_924_MHZ 0x00 -#define RFLR_FRFLSB_924_MHZ 0x00 -#define RFLR_FRFMSB_925_MHZ 0xE7 -#define RFLR_FRFMID_925_MHZ 0x40 -#define RFLR_FRFLSB_925_MHZ 0x00 -#define RFLR_FRFMSB_926_MHZ 0xE7 -#define RFLR_FRFMID_926_MHZ 0x80 -#define RFLR_FRFLSB_926_MHZ 0x00 -#define RFLR_FRFMSB_927_MHZ 0xE7 -#define RFLR_FRFMID_927_MHZ 0xC0 -#define RFLR_FRFLSB_927_MHZ 0x00 -#define RFLR_FRFMSB_928_MHZ 0xE8 -#define RFLR_FRFMID_928_MHZ 0x00 -#define RFLR_FRFLSB_928_MHZ 0x00 /*! * RegPaConfig @@ -347,55 +251,58 @@ Maintainer: Miguel Luis and Gregory Cristian #define RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL 0x02 #define RFLR_IRQFLAGS_CADDETECTED 0x01 - - /*! - * RegFifoRxNbBytes (Read Only) // + * RegFifoRxNbBytes (Read Only) */ - - /*! - * RegRxHeaderCntValueMsb (Read Only) // +/*! + * RegRxHeaderCntValueMsb (Read Only) */ - - - /*! - * RegRxHeaderCntValueLsb (Read Only) // + +/*! + * RegRxHeaderCntValueLsb (Read Only) */ - - + /*! - * RegRxPacketCntValueMsb (Read Only) // + * RegRxPacketCntValueMsb (Read Only) */ - - - /*! - * RegRxPacketCntValueLsb (Read Only) // + +/*! + * RegRxPacketCntValueLsb (Read Only) */ - - - /*! - * RegModemStat (Read Only) // + +/*! + * RegModemStat (Read Only) */ #define RFLR_MODEMSTAT_RX_CR_MASK 0x1F #define RFLR_MODEMSTAT_MODEM_STATUS_MASK 0xE0 /*! - * RegPktSnrValue (Read Only) // + * RegPktSnrValue (Read Only) */ - - /*! - * RegPktRssiValue (Read Only) // +/*! + * RegPktRssiValue (Read Only) */ - - + /*! - * RegRssiValue (Read Only) // + * RegRssiValue (Read Only) */ - - /*! +/*! + * RegHopChannel (Read Only) + */ +#define RFLR_HOPCHANNEL_PLL_LOCK_TIMEOUT_MASK 0x7F +#define RFLR_HOPCHANNEL_PLL_LOCK_FAIL 0x80 +#define RFLR_HOPCHANNEL_PLL_LOCK_SUCCEED 0x00 // Default + +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_MASK 0xBF +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_ON 0x40 +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_OFF 0x00 // Default + +#define RFLR_HOPCHANNEL_CHANNEL_MASK 0x3F + +/*! * RegModemConfig1 */ #define RFLR_MODEMCONFIG1_BW_MASK 0x3F @@ -421,7 +328,7 @@ Maintainer: Miguel Luis and Gregory Cristian #define RFLR_MODEMCONFIG1_LOWDATARATEOPTIMIZE_ON 0x01 #define RFLR_MODEMCONFIG1_LOWDATARATEOPTIMIZE_OFF 0x00 // Default - /*! +/*! * RegModemConfig2 */ #define RFLR_MODEMCONFIG2_SF_MASK 0x0F @@ -443,21 +350,6 @@ Maintainer: Miguel Luis and Gregory Cristian #define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK 0xFC #define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB 0x00 // Default - - -/*! - * RegHopChannel (Read Only) - */ -#define RFLR_HOPCHANNEL_PLL_LOCK_TIMEOUT_MASK 0x7F -#define RFLR_HOPCHANNEL_PLL_LOCK_FAIL 0x80 -#define RFLR_HOPCHANNEL_PLL_LOCK_SUCCEED 0x00 // Default - -#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_MASK 0xBF -#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_ON 0x40 -#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_OFF 0x00 // Default - -#define RFLR_HOPCHANNEL_CHANNEL_MASK 0x3F - /*! * RegSymbTimeoutLsb @@ -489,6 +381,45 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define RFLR_HOPPERIOD_FREQFOPPINGPERIOD 0x00 // Default +/*! + * RegFifoRxByteAddr (Read Only) + */ + +/*! + * RegFeiMsb (Read Only) + */ + +/*! + * RegFeiMid (Read Only) + */ + +/*! + * RegFeiLsb (Read Only) + */ + +/*! + * RegRssiWideband (Read Only) + */ + +/*! + * RegDetectOptimize + */ +#define RFLR_DETECTIONOPTIMIZE_MASK 0xF8 +#define RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 0x03 // Default +#define RFLR_DETECTIONOPTIMIZE_SF6 0x05 + +/*! + * RegInvertIQ + */ +#define RFLR_INVERTIQ_MASK 0xBF +#define RFLR_INVERTIQ_OFF 0x00 +#define RFLR_INVERTIQ_ON 0x40 + +/*! + * RegDetectionThreshold + */ +#define RFLR_DETECTIONTHRESH_SF7_TO_SF12 0x0A // Default +#define RFLR_DETECTIONTHRESH_SF6 0x0C /*! * RegDioMapping1 @@ -556,10 +487,6 @@ Maintainer: Miguel Luis and Gregory Cristian * RegAgcThresh3 */ -/*! - * RegFifoRxByteAddr (Read Only) - */ - /*! * RegPllHop */ diff --git a/src/radio/sx1276/sx1276.c b/src/radio/sx1276/sx1276.c index 5ef937b83..670cc6742 100644 --- a/src/radio/sx1276/sx1276.c +++ b/src/radio/sx1276/sx1276.c @@ -10,12 +10,1583 @@ Description: Generic SX1276 driver implementation License: Revised BSD License, see LICENSE.TXT file include in the project -Maintainer: Miguel Luis and Gregory Cristian +Maintainer: Miguel Luis, Gregory Cristian and Wael Guibene */ +#include +#include +#include "board.h" #include "radio.h" #include "sx1276.h" +#include "sx1276-board.h" -void SX1276Init( void ) +/* + * Local types definition + */ + +/*! + * Radio registers definition + */ +typedef struct +{ + RadioModems_t Modem; + uint8_t Addr; + uint8_t Value; +}RadioRegisters_t; + +/*! + * FSK bandwidth definition + */ +typedef struct +{ + uint32_t bandwidth; + uint8_t RegValue; +}FskBandwidth_t; + + +/* + * Private functions prototypes + */ + +/*! + * Performs the Rx chain calibration for LF and HF bands + * \remark Must be called just after the reset so all registers are at their + * default values + */ +static void RxChainCalibration( void ); + +/*! + * \brief Resets the SX1276 + */ +void SX1276Reset( void ); + +/*! + * \brief Sets the SX1276 in transmission mode for the given time + * \param [IN] timeout Transmission timeout [ms] [0: continuous, others timeout] + */ +void SX1276SetTx( uint32_t timeout ); + +/*! + * \brief Writes the buffer contents to the SX1276 FIFO + * + * \param [IN] buffer Buffer containing data to be put on the FIFO. + * \param [IN] size Number of bytes to be written to the FIFO + */ +void SX1276WriteFifo( uint8_t *buffer, uint8_t size ); + +/*! + * \brief Reads the contents of the SX1276 FIFO + * + * \param [OUT] buffer Buffer where to copy the FIFO read data. + * \param [IN] size Number of bytes to be read from the FIFO + */ +void SX1276ReadFifo( uint8_t *buffer, uint8_t size ); + +/*! + * \brief Sets the SX1276 operating mode + * + * \param [IN] opMode New operating mode + */ +void SX1276SetOpMode( uint8_t opMode ); + +/*! + * \brief Configures the SX1276 with the given modem + * + * \param [IN] modem Modem to be used [0: FSK, 1: LoRa] + */ +void SX1276SetModem( RadioModems_t modem ); + +/* + * SX1276 DIO IRQ callback functions prototype + */ + +/*! + * \brief DIO 0 IRQ callback + */ +void SX1276OnDio0Irq( void ); + +/*! + * \brief DIO 1 IRQ callback + */ +void SX1276OnDio1Irq( void ); + +/*! + * \brief DIO 2 IRQ callback + */ +void SX1276OnDio2Irq( void ); + +/*! + * \brief DIO 3 IRQ callback + */ +void SX1276OnDio3Irq( void ); + +/*! + * \brief DIO 4 IRQ callback + */ +void SX1276OnDio4Irq( void ); + +/*! + * \brief DIO 5 IRQ callback + */ +void SX1276OnDio5Irq( void ); + +/*! + * \brief Tx & Rx timeout timer callback + */ +void SX1276OnTimeoutIrq( void ); + +/* + * Private global constants + */ + +/*! + * Radio hardware registers initialization + * + * \remark RADIO_INIT_REGISTERS_VALUE is defined in sx1276-board.h file + */ +const RadioRegisters_t RadioRegsInit[] = RADIO_INIT_REGISTERS_VALUE; + +/*! + * Constant values need to compute the RSSI value + */ +#define NOISE_ABSOLUTE_ZERO -174.0 +#define NOISE_FIGURE_LF 4.0 +#define NOISE_FIGURE_HF 6.0 + +const double RssiOffsetLf[] = +{ // These values need to be characterized in the Lab + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, +}; + +const double RssiOffsetHf[] = +{ // These values need to be characterized in the Lab + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, +}; + +/*! + * Precomputed signal bandwidth 10*Log values + * Used to compute the LoRa packet RSSI value. + */ +const double BandwidthLog[] = +{ + 38.927900303521316335038277369285, // 7.8 kHz + 40.177301567005500940384239336392, // 10.4 kHz + 41.93820026016112828717566631653, // 15.6 kHz + 43.1875866931372901183597627752391, // 20.8 kHz + 44.948500216800940239313055263775, // 31.2 kHz + 46.197891057238405255051280399961, // 41.6 kHz + 47.95880017344075219145044421102, // 62.5 kHz + 50.969100130080564143587833158265, // 125 kHz + 53.97940008672037609572522210551, // 250 kHz + 56.989700043360188047862611052755 // 500 kHz +}; + +/*! + * Precomputed FSK bandwidth registers values + */ +const FskBandwidth_t FskBandwidths[] = +{ + { 2600 , 0x17 }, + { 3100 , 0x0F }, + { 3900 , 0x07 }, + { 5200 , 0x16 }, + { 6300 , 0x0E }, + { 7800 , 0x06 }, + { 10400 , 0x15 }, + { 12500 , 0x0D }, + { 15600 , 0x05 }, + { 20800 , 0x14 }, + { 25000 , 0x0C }, + { 31300 , 0x04 }, + { 41700 , 0x13 }, + { 50000 , 0x0B }, + { 62500 , 0x03 }, + { 83333 , 0x12 }, + { 100000, 0x0A }, + { 125000, 0x02 }, + { 166700, 0x11 }, + { 200000, 0x09 }, + { 250000, 0x01 } +}; + +/* + * Private global variables + */ + +/*! + * Radio callbacks variable + */ +static RadioEvents_t *RadioEvents; + +/*! + * Reception buffer + */ +static uint8_t RxBuffer[RX_BUFFER_SIZE]; + +/* + * Public global variables + */ + +/*! + * Radio hardware and global parameters + */ +SX1276_t SX1276; + +/*! + * Hardware DIO IRQ callback initialization + */ +DioIrqHandler *DioIrq[] = { SX1276OnDio0Irq, SX1276OnDio1Irq, + SX1276OnDio2Irq, SX1276OnDio3Irq, + SX1276OnDio4Irq, NULL }; + +/*! + * Tx and Rx timers + */ +TimerEvent_t TxTimeoutTimer; +TimerEvent_t RxTimeoutTimer; +TimerEvent_t RxTimeoutSyncWord; + +/* + * Radio driver functions implementation + */ + +void SX1276Init( RadioEvents_t *events ) +{ + uint8_t i; + + RadioEvents = events; + + // Initialize driver timeout timers + TimerInit( &TxTimeoutTimer, SX1276OnTimeoutIrq ); + TimerInit( &RxTimeoutTimer, SX1276OnTimeoutIrq ); + TimerInit( &RxTimeoutSyncWord, SX1276OnTimeoutIrq ); + + SX1276Reset( ); + + RxChainCalibration( ); + + SX1276SetOpMode( RF_OPMODE_SLEEP ); + + SX1276IoIrqInit( DioIrq ); + + for( i = 0; i < sizeof( RadioRegsInit ) / sizeof( RadioRegisters_t ); i++ ) + { + SX1276SetModem( RadioRegsInit[i].Modem ); + SX1276Write( RadioRegsInit[i].Addr, RadioRegsInit[i].Value ); + } + + SX1276SetModem( MODEM_FSK ); + + SX1276.Settings.State = RF_IDLE; +} + +RadioState_t SX1276GetStatus( void ) +{ + return SX1276.Settings.State; +} + +void SX1276SetChannel( uint32_t freq ) +{ + SX1276.Settings.Channel = freq; + freq = ( uint32_t )( ( double )freq / ( double )FREQ_STEP ); + SX1276Write( REG_FRFMSB, ( uint8_t )( ( freq >> 16 ) & 0xFF ) ); + SX1276Write( REG_FRFMID, ( uint8_t )( ( freq >> 8 ) & 0xFF ) ); + SX1276Write( REG_FRFLSB, ( uint8_t )( freq & 0xFF ) ); +} + +bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int32_t rssiThresh ) +{ + double rssi = 0; + + SX1276SetModem( modem ); + + SX1276SetChannel( freq ); + + SX1276SetOpMode( RF_OPMODE_RECEIVER ); + + DelayMs( 1 ); + + rssi = SX1276ReadRssi( modem ); + + SX1276SetSleep( ); + + if( rssi > ( double )rssiThresh ) + { + return false; + } + return true; +} + +uint32_t SX1276Random( void ) +{ + uint8_t i; + uint32_t rnd = 0; + + /* + * Radio setup for random number generation + */ + // Set LoRa modem ON + SX1276SetModem( MODEM_LORA ); + + // Disable LoRa modem interrupts + SX1276Write( REG_LR_IRQFLAGSMASK, RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED ); + + // Set radio in continuous reception + SX1276SetOpMode( RF_OPMODE_RECEIVER ); + + for( i = 0; i < 32; i++ ) + { + DelayMs( 1 ); + // Unfiltered RSSI value reading. Only takes the LSB value + rnd |= ( ( uint32_t )SX1276Read( REG_LR_RSSIWIDEBAND ) & 0x01 ) << i; + } + + SX1276SetSleep( ); + + return rnd; +} + +/*! + * Performs the Rx chain calibration for LF and HF bands + * \remark Must be called just after the reset so all registers are at their + * default values + */ +static void RxChainCalibration( void ) +{ + uint8_t regPaConfigInitVal; + uint32_t initialFreq; + + // Save context + regPaConfigInitVal = SX1276Read( REG_PACONFIG ); + initialFreq = ( double )( ( ( uint32_t )SX1276Read( REG_FRFMSB ) << 16 ) | + ( ( uint32_t )SX1276Read( REG_FRFMID ) << 8 ) | + ( ( uint32_t )SX1276Read( REG_FRFLSB ) ) ) * ( double )FREQ_STEP; + + // Cut the PA just in case, RFO output, power = -1 dBm + SX1276Write( REG_PACONFIG, 0x00 ); + + // Launch Rx chain calibration for LF band + SX1276Write( REG_IMAGECAL, ( SX1276Read( REG_IMAGECAL ) & RF_IMAGECAL_IMAGECAL_MASK ) | RF_IMAGECAL_IMAGECAL_START ); + while( ( SX1276Read( REG_IMAGECAL ) & RF_IMAGECAL_IMAGECAL_RUNNING ) == RF_IMAGECAL_IMAGECAL_RUNNING ) + { + } + + // Sets a Frequency in HF band + SX1276SetChannel( 868000000 ); + + // Launch Rx chain calibration for HF band + SX1276Write( REG_IMAGECAL, ( SX1276Read( REG_IMAGECAL ) & RF_IMAGECAL_IMAGECAL_MASK ) | RF_IMAGECAL_IMAGECAL_START ); + while( ( SX1276Read( REG_IMAGECAL ) & RF_IMAGECAL_IMAGECAL_RUNNING ) == RF_IMAGECAL_IMAGECAL_RUNNING ) + { + } + + // Restore context + SX1276Write( REG_PACONFIG, regPaConfigInitVal ); + SX1276SetChannel( initialFreq ); +} + +/*! + * Returns the known FSK bandwidth registers value + * + * \param [IN] bandwidth Bandwidth value in Hz + * \retval regValue Bandwidth register value. + */ +static uint8_t GetFskBandwidthRegValue( uint32_t bandwidth ) +{ + uint8_t i; + + for( i = 0; i < ( sizeof( FskBandwidths ) / sizeof( FskBandwidth_t ) ) - 1; i++ ) + { + if( ( bandwidth >= FskBandwidths[i].bandwidth ) && ( bandwidth < FskBandwidths[i + 1].bandwidth ) ) + { + return FskBandwidths[i].RegValue; + } + } + // ERROR: Value not found + while( 1 ); +} + +void SX1276SetRxConfig( RadioModems_t modem, uint32_t bandwidth, + uint32_t datarate, uint8_t coderate, + uint32_t bandwidthAfc, uint16_t preambleLen, + uint16_t symbTimeout, bool fixLen, + bool crcOn, bool iqInverted, bool rxContinuous ) +{ + SX1276SetModem( modem ); + + switch( modem ) + { + case MODEM_FSK: + { + SX1276.Settings.Fsk.Bandwidth = bandwidth; + SX1276.Settings.Fsk.Datarate = datarate; + SX1276.Settings.Fsk.BandwidthAfc = bandwidthAfc; + SX1276.Settings.Fsk.FixLen = fixLen; + SX1276.Settings.Fsk.CrcOn = crcOn; + SX1276.Settings.Fsk.IqInverted = iqInverted; + SX1276.Settings.Fsk.RxContinuous = rxContinuous; + SX1276.Settings.Fsk.PreambleLen = preambleLen; + + datarate = ( uint16_t )( ( double )XTAL_FREQ / ( double )datarate ); + SX1276Write( REG_BITRATEMSB, ( uint8_t )( datarate >> 8 ) ); + SX1276Write( REG_BITRATELSB, ( uint8_t )( datarate & 0xFF ) ); + + SX1276Write( REG_RXBW, GetFskBandwidthRegValue( bandwidth ) ); + SX1276Write( REG_AFCBW, GetFskBandwidthRegValue( bandwidthAfc ) ); + + SX1276Write( REG_LR_PREAMBLEMSB, ( uint8_t )( ( preambleLen >> 8 ) & 0xFF ) ); + SX1276Write( REG_LR_PREAMBLELSB, ( uint8_t )( preambleLen & 0xFF ) ); + + SX1276Write( REG_PACKETCONFIG1, + ( SX1276Read( REG_PACKETCONFIG1 ) & + RF_PACKETCONFIG1_CRC_MASK & + RF_PACKETCONFIG1_PACKETFORMAT_MASK ) | + ( ( fixLen == 1 ) ? RF_PACKETCONFIG1_PACKETFORMAT_FIXED : RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) | + ( crcOn << 4 ) ); + } + break; + case MODEM_LORA: + { + if( bandwidth > 2 ) + { + // Fatal error: When using LoRa modem only bandwidths 125, 250 and 500 kHz are supported + while( 1 ); + } + bandwidth += 7; + SX1276.Settings.LoRa.Bandwidth = bandwidth; + SX1276.Settings.LoRa.Datarate = datarate; + SX1276.Settings.LoRa.Coderate = coderate; + SX1276.Settings.LoRa.FixLen = fixLen; + SX1276.Settings.LoRa.CrcOn = crcOn; + SX1276.Settings.LoRa.IqInverted = iqInverted; + SX1276.Settings.LoRa.RxContinuous = rxContinuous; + + if( datarate > 12 ) + { + datarate = 12; + } + else if( datarate < 6 ) + { + datarate = 6; + } + + if( ( ( bandwidth == 7 ) && ( ( datarate == 11 ) || ( datarate == 12 ) ) ) || + ( ( bandwidth == 8 ) && ( datarate == 12 ) ) ) + { + SX1276.Settings.LoRa.LowDatarateOptimize = 0x01; + } + else + { + SX1276.Settings.LoRa.LowDatarateOptimize = 0x00; + } + + SX1276Write( REG_LR_MODEMCONFIG1, + ( SX1276Read( REG_LR_MODEMCONFIG1 ) & + RFLR_MODEMCONFIG1_BW_MASK & + RFLR_MODEMCONFIG1_CODINGRATE_MASK & + RFLR_MODEMCONFIG1_IMPLICITHEADER_MASK ) | + ( bandwidth << 4 ) | ( coderate << 1 ) | + fixLen ); + + SX1276Write( REG_LR_MODEMCONFIG2, + ( SX1276Read( REG_LR_MODEMCONFIG2 ) & + RFLR_MODEMCONFIG2_SF_MASK & + RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK & + RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK ) | + ( datarate << 4 ) | ( crcOn << 2 ) | + ( ( symbTimeout >> 8 ) & ~RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK ) ); + + SX1276Write( REG_LR_MODEMCONFIG3, + ( SX1276Read( REG_LR_MODEMCONFIG3 ) & + RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_MASK ) | + ( SX1276.Settings.LoRa.LowDatarateOptimize << 3 ) ); + + SX1276Write( REG_LR_SYMBTIMEOUTLSB, ( uint8_t )( symbTimeout & 0xFF ) ); + + SX1276Write( REG_LR_PREAMBLEMSB, ( uint8_t )( ( preambleLen >> 8 ) & 0xFF ) ); + SX1276Write( REG_LR_PREAMBLELSB, ( uint8_t )( preambleLen & 0xFF ) ); + + if( datarate == 6 ) + { + SX1276Write( REG_LR_DETECTOPTIMIZE, + ( SX1276Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF6 ); + SX1276Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF6 ); + } + else + { + SX1276Write( REG_LR_DETECTOPTIMIZE, + ( SX1276Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 ); + SX1276Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF7_TO_SF12 ); + } + + SX1276Write( REG_LR_INVERTIQ, + ( SX1276Read( REG_LR_INVERTIQ ) & + RFLR_INVERTIQ_MASK ) | + ( iqInverted << 6 ) ); + } + break; + } +} + +void SX1276SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, + uint32_t bandwidth, uint32_t datarate, + uint8_t coderate, uint16_t preambleLen, + bool fixLen, bool crcOn, + bool iqInverted, uint32_t timeout ) +{ + uint8_t paConfig = 0; + uint8_t paDac = 0; + + SX1276SetModem( modem ); + + paConfig = SX1276Read( REG_PACONFIG ); + paDac = SX1276Read( REG_PADAC ); + + paConfig = ( paConfig & RF_PACONFIG_PASELECT_MASK ) | SX1276GetPaSelect( SX1276.Settings.Channel ); + paConfig = ( paConfig & RF_PACONFIG_MAX_POWER_MASK ) | 0x70; + + if( ( paConfig & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) + { + if( power > 17 ) + { + paDac = ( paDac & RF_PADAC_20DBM_MASK ) | RF_PADAC_20DBM_ON; + } + else + { + paDac = ( paDac & RF_PADAC_20DBM_MASK ) | RF_PADAC_20DBM_OFF; + } + if( ( paDac & RF_PADAC_20DBM_ON ) == RF_PADAC_20DBM_ON ) + { + if( power < 5 ) + { + power = 5; + } + if( power > 20 ) + { + power = 20; + } + paConfig = ( paConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 5 ) & 0x0F ); + } + else + { + if( power < 2 ) + { + power = 2; + } + if( power > 17 ) + { + power = 17; + } + paConfig = ( paConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 2 ) & 0x0F ); + } + } + else + { + if( power < -1 ) + { + power = -1; + } + if( power > 14 ) + { + power = 14; + } + paConfig = ( paConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power + 1 ) & 0x0F ); + } + SX1276Write( REG_PACONFIG, paConfig ); + SX1276Write( REG_PADAC, paDac ); + + switch( modem ) + { + case MODEM_FSK: + { + SX1276.Settings.Fsk.Power = power; + SX1276.Settings.Fsk.Fdev = fdev; + SX1276.Settings.Fsk.Bandwidth = bandwidth; + SX1276.Settings.Fsk.Datarate = datarate; + SX1276.Settings.Fsk.PreambleLen = preambleLen; + SX1276.Settings.Fsk.FixLen = fixLen; + SX1276.Settings.Fsk.CrcOn = crcOn; + SX1276.Settings.Fsk.IqInverted = iqInverted; + SX1276.Settings.Fsk.TxTimeout = timeout; + + fdev = ( uint16_t )( ( double )fdev / ( double )FREQ_STEP ); + SX1276Write( REG_FDEVMSB, ( uint8_t )( fdev >> 8 ) ); + SX1276Write( REG_FDEVLSB, ( uint8_t )( fdev & 0xFF ) ); + + datarate = ( uint16_t )( ( double )XTAL_FREQ / ( double )datarate ); + SX1276Write( REG_BITRATEMSB, ( uint8_t )( datarate >> 8 ) ); + SX1276Write( REG_BITRATELSB, ( uint8_t )( datarate & 0xFF ) ); + + SX1276Write( REG_PREAMBLEMSB, ( preambleLen >> 8 ) & 0x00FF ); + SX1276Write( REG_PREAMBLELSB, preambleLen & 0xFF ); + + SX1276Write( REG_PACKETCONFIG1, + ( SX1276Read( REG_PACKETCONFIG1 ) & + RF_PACKETCONFIG1_CRC_MASK & + RF_PACKETCONFIG1_PACKETFORMAT_MASK ) | + ( ( fixLen == 1 ) ? RF_PACKETCONFIG1_PACKETFORMAT_FIXED : RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) | + ( crcOn << 4 ) ); + + } + break; + case MODEM_LORA: + { + SX1276.Settings.LoRa.Power = power; + if( bandwidth > 2 ) + { + // Fatal error: When using LoRa modem only bandwidths 125, 250 and 500 kHz are supported + while( 1 ); + } + bandwidth += 7; + SX1276.Settings.LoRa.Bandwidth = bandwidth; + SX1276.Settings.LoRa.Datarate = datarate; + SX1276.Settings.LoRa.Coderate = coderate; + SX1276.Settings.LoRa.PreambleLen = preambleLen; + SX1276.Settings.LoRa.FixLen = fixLen; + SX1276.Settings.LoRa.CrcOn = crcOn; + SX1276.Settings.LoRa.IqInverted = iqInverted; + SX1276.Settings.LoRa.TxTimeout = timeout; + + if( datarate > 12 ) + { + datarate = 12; + } + else if( datarate < 6 ) + { + datarate = 6; + } + if( ( ( bandwidth == 7 ) && ( ( datarate == 11 ) || ( datarate == 12 ) ) ) || + ( ( bandwidth == 8 ) && ( datarate == 12 ) ) ) + { + SX1276.Settings.LoRa.LowDatarateOptimize = 0x01; + } + else + { + SX1276.Settings.LoRa.LowDatarateOptimize = 0x00; + } + + SX1276Write( REG_LR_MODEMCONFIG1, + ( SX1276Read( REG_LR_MODEMCONFIG1 ) & + RFLR_MODEMCONFIG1_BW_MASK & + RFLR_MODEMCONFIG1_CODINGRATE_MASK & + RFLR_MODEMCONFIG1_IMPLICITHEADER_MASK ) | + ( bandwidth << 4 ) | ( coderate << 1 ) | + fixLen ); + + SX1276Write( REG_LR_MODEMCONFIG2, + ( SX1276Read( REG_LR_MODEMCONFIG2 ) & + RFLR_MODEMCONFIG2_SF_MASK & + RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK ) | + ( datarate << 4 ) | ( crcOn << 2 ) ); + + SX1276Write( REG_LR_MODEMCONFIG3, + ( SX1276Read( REG_LR_MODEMCONFIG3 ) & + RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_MASK ) | + ( SX1276.Settings.LoRa.LowDatarateOptimize << 3 ) ); + + SX1276Write( REG_LR_PREAMBLEMSB, ( preambleLen >> 8 ) & 0x00FF ); + SX1276Write( REG_LR_PREAMBLELSB, preambleLen & 0xFF ); + + if( datarate == 6 ) + { + SX1276Write( REG_LR_DETECTOPTIMIZE, + ( SX1276Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF6 ); + SX1276Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF6 ); + } + else + { + SX1276Write( REG_LR_DETECTOPTIMIZE, + ( SX1276Read( REG_LR_DETECTOPTIMIZE ) & + RFLR_DETECTIONOPTIMIZE_MASK ) | + RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 ); + SX1276Write( REG_LR_DETECTIONTHRESHOLD, + RFLR_DETECTIONTHRESH_SF7_TO_SF12 ); + } + + SX1276Write( REG_LR_INVERTIQ, + ( SX1276Read( REG_LR_INVERTIQ ) & + RFLR_INVERTIQ_MASK ) | + ( iqInverted << 6 ) ); + } + break; + } +} + +double SX1276GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) +{ + double airTime = 0.0; + + switch( modem ) + { + case MODEM_FSK: + { + airTime = round( ( 8 * ( SX1276.Settings.Fsk.PreambleLen + + ( ( SX1276Read( REG_SYNCCONFIG ) & ~RF_SYNCCONFIG_SYNCSIZE_MASK ) + 1 ) + + ( ( SX1276.Settings.Fsk.FixLen == 0x01 ) ? 0.0 : 1.0 ) + + ( ( ( SX1276Read( REG_PACKETCONFIG1 ) & ~RF_PACKETCONFIG1_ADDRSFILTERING_MASK ) != 0x00 ) ? 1.0 : 0 ) + + pktLen + + ( ( SX1276.Settings.Fsk.CrcOn == 0x01 ) ? 2.0 : 0 ) ) / + SX1276.Settings.Fsk.Datarate ) * 1e6 ); + } + break; + case MODEM_LORA: + { + double bw = 0.0; + // REMARK: When using LoRa modem only bandwidths 125, 250 and 500 kHz are supported + switch( SX1276.Settings.LoRa.Bandwidth ) + { + //case 0: // 7.8 kHz + // bw = 78e2; + // break; + //case 1: // 10.4 kHz + // bw = 104e2; + // break; + //case 2: // 15.6 kHz + // bw = 156e2; + // break; + //case 3: // 20.8 kHz + // bw = 208e2; + // break; + //case 4: // 31.2 kHz + // bw = 312e2; + // break; + //case 5: // 41.4 kHz + // bw = 414e2; + // break; + //case 6: // 62.5 kHz + // bw = 625e2; + // break; + case 7: // 125 kHz + bw = 125e3; + break; + case 8: // 250 kHz + bw = 250e3; + break; + case 9: // 500 kHz + bw = 500e3; + break; + } + + // Symbol rate : time for one symbol (secs) + double rs = bw / ( 1 << SX1276.Settings.LoRa.Datarate ); + double ts = 1 / rs; + // time of preamble + double tPreamble = ( SX1276.Settings.LoRa.PreambleLen + 4.25 ) * ts; + // Symbol length of payload and time + double tmp = ceil( ( 8 * pktLen - 4 * SX1276.Settings.LoRa.Datarate + + 28 + 16 * SX1276.Settings.LoRa.CrcOn - + ( SX1276.Settings.LoRa.FixLen ? 20 : 0 ) ) / + ( double )( 4 * SX1276.Settings.LoRa.Datarate - + ( ( SX1276.Settings.LoRa.LowDatarateOptimize > 0 ) ? 8 : 0 ) ) ) * + ( SX1276.Settings.LoRa.Coderate + 4 ); + double nPayload = 8 + ( ( tmp > 0 ) ? tmp : 0 ); + double tPayload = nPayload * ts; + // Time on air + double tOnAir = tPreamble + tPayload; + // return us secs + airTime = floor( tOnAir * 1e6 + 0.999 ); + } + break; + } + return airTime; +} + +void SX1276Send( uint8_t *buffer, uint8_t size ) +{ + uint32_t txTimeout = 0; + + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + { + SX1276.Settings.FskPacketHandler.NbBytes = 0; + SX1276.Settings.FskPacketHandler.Size = size; + + if( SX1276.Settings.Fsk.FixLen == false ) + { + SX1276WriteFifo( ( uint8_t* )&size, 1 ); + } + else + { + SX1276Write( REG_PAYLOADLENGTH, size ); + } + + if( ( size > 0 ) && ( size <= 64 ) ) + { + SX1276.Settings.FskPacketHandler.ChunkSize = size; + } + else + { + SX1276.Settings.FskPacketHandler.ChunkSize = 32; + } + + // Write payload buffer + SX1276WriteFifo( buffer, SX1276.Settings.FskPacketHandler.ChunkSize ); + SX1276.Settings.FskPacketHandler.NbBytes += SX1276.Settings.FskPacketHandler.ChunkSize; + txTimeout = SX1276.Settings.Fsk.TxTimeout; + } + break; + case MODEM_LORA: + { + SX1276.Settings.LoRaPacketHandler.Size = size; + + // Initializes the payload size + SX1276Write( REG_LR_PAYLOADLENGTH, size ); + + // Full buffer used for Tx + SX1276Write( REG_LR_FIFOTXBASEADDR, 0 ); + SX1276Write( REG_LR_FIFOADDRPTR, 0 ); + + // FIFO operations cannot take place in Sleep mode + if( ( SX1276Read( REG_OPMODE ) & ~RF_OPMODE_MASK ) == RF_OPMODE_SLEEP ) + { + SX1276SetStby( ); + DelayMs( 1 ); + } + // Write payload buffer + SX1276WriteFifo( buffer, size ); + txTimeout = SX1276.Settings.LoRa.TxTimeout; + } + break; + } + + SX1276SetTx( txTimeout ); +} + +void SX1276SetSleep( void ) +{ + TimerStop( &RxTimeoutTimer ); + TimerStop( &TxTimeoutTimer ); + SX1276SetOpMode( RF_OPMODE_SLEEP ); +} + +void SX1276SetStby( void ) +{ + TimerStop( &RxTimeoutTimer ); + TimerStop( &TxTimeoutTimer ); + SX1276SetOpMode( RF_OPMODE_STANDBY ); +} + +void SX1276SetRx( uint32_t timeout ) +{ + bool rxContinuous = false; + + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + { + rxContinuous = SX1276.Settings.Fsk.RxContinuous; + + // DIO0=PayloadReady + // DIO1=FifoLevel + // DIO2=SyncAddr + // DIO3=FifoEmpty + // DIO4=Preamble + // DIO5=ModeReady + SX1276Write( REG_DIOMAPPING1, ( SX1276Read( REG_DIOMAPPING1 ) & RF_DIOMAPPING1_DIO0_MASK & + RF_DIOMAPPING1_DIO2_MASK ) | + RF_DIOMAPPING1_DIO0_00 | + RF_DIOMAPPING1_DIO2_11 ); + + SX1276Write( REG_DIOMAPPING2, ( SX1276Read( REG_DIOMAPPING2 ) & RF_DIOMAPPING2_DIO4_MASK & + RF_DIOMAPPING2_MAP_MASK ) | + RF_DIOMAPPING2_DIO4_11 | + RF_DIOMAPPING2_MAP_PREAMBLEDETECT ); + + SX1276.Settings.FskPacketHandler.FifoThresh = SX1276Read( REG_FIFOTHRESH ) & 0x3F; + + SX1276.Settings.FskPacketHandler.PreambleDetected = false; + SX1276.Settings.FskPacketHandler.SyncWordDetected = false; + SX1276.Settings.FskPacketHandler.NbBytes = 0; + SX1276.Settings.FskPacketHandler.Size = 0; + } + break; + case MODEM_LORA: + { + rxContinuous = SX1276.Settings.LoRa.RxContinuous; + + SX1276Write( REG_LR_IRQFLAGSMASK, //RFLR_IRQFLAGS_RXTIMEOUT | + //RFLR_IRQFLAGS_RXDONE | + //RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED ); + + // DIO0=RxDone + SX1276Write( REG_DIOMAPPING1, ( SX1276Read( REG_DIOMAPPING1 ) & RFLR_DIOMAPPING1_DIO0_MASK ) | RFLR_DIOMAPPING1_DIO0_00 ); + SX1276Write( REG_LR_FIFORXBASEADDR, 0 ); + SX1276Write( REG_LR_FIFOADDRPTR, 0 ); + } + break; + } + + memset( RxBuffer, 0, ( size_t )RX_BUFFER_SIZE ); + + SX1276.Settings.State = RF_RX_RUNNING; + if( timeout != 0 ) + { + TimerSetValue( &RxTimeoutTimer, timeout ); + TimerStart( &RxTimeoutTimer ); + } + + if( SX1276.Settings.Modem == MODEM_FSK ) + { + SX1276SetOpMode( RF_OPMODE_RECEIVER ); + + if( rxContinuous == false ) + { + TimerSetValue( &RxTimeoutSyncWord, ( 8.0 * ( SX1276.Settings.Fsk.PreambleLen + + ( ( SX1276Read( REG_SYNCCONFIG ) & + ~RF_SYNCCONFIG_SYNCSIZE_MASK ) + + 1.0 ) + 1.0 ) / + ( double )SX1276.Settings.Fsk.Datarate ) * 1e6 ); + TimerStart( &RxTimeoutSyncWord ); + } + } + else + { + if( rxContinuous == true ) + { + SX1276SetOpMode( RFLR_OPMODE_RECEIVER ); + } + else + { + SX1276SetOpMode( RFLR_OPMODE_RECEIVER_SINGLE ); + } + } +} + +void SX1276SetTx( uint32_t timeout ) +{ + TimerSetValue( &TxTimeoutTimer, timeout ); + + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + { + // DIO0=PacketSent + // DIO1=FifoLevel + // DIO2=FifoFull + // DIO3=FifoEmpty + // DIO4=LowBat + // DIO5=ModeReady + SX1276Write( REG_DIOMAPPING1, ( SX1276Read( REG_DIOMAPPING1 ) & RF_DIOMAPPING1_DIO0_MASK & + RF_DIOMAPPING1_DIO2_MASK ) ); + + SX1276Write( REG_DIOMAPPING2, ( SX1276Read( REG_DIOMAPPING2 ) & RF_DIOMAPPING2_DIO4_MASK & + RF_DIOMAPPING2_MAP_MASK ) ); + SX1276.Settings.FskPacketHandler.FifoThresh = SX1276Read( REG_FIFOTHRESH ) & 0x3F; + } + break; + case MODEM_LORA: + { + SX1276Write( REG_LR_IRQFLAGSMASK, RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + //RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED ); + + // DIO0=TxDone + SX1276Write( REG_DIOMAPPING1, ( SX1276Read( REG_DIOMAPPING1 ) & RFLR_DIOMAPPING1_DIO0_MASK ) | RFLR_DIOMAPPING1_DIO0_01 ); + } + break; + } + + SX1276.Settings.State = RF_TX_RUNNING; + TimerStart( &TxTimeoutTimer ); + SX1276SetOpMode( RF_OPMODE_TRANSMITTER ); +} + +double SX1276ReadRssi( RadioModems_t modem ) +{ + double rssi = 0.0; + + switch( modem ) + { + case MODEM_FSK: + rssi = -( double )( ( double )SX1276Read( REG_RSSIVALUE ) / 2.0 ); + break; + case MODEM_LORA: + if( SX1276.Settings.Channel > RF_MID_BAND_THRESH ) + { + rssi = RssiOffsetHf[SX1276.Settings.LoRa.Bandwidth] + ( double )SX1276Read( REG_LR_RSSIVALUE ); + } + else + { + rssi = RssiOffsetLf[SX1276.Settings.LoRa.Bandwidth] + ( double )SX1276Read( REG_LR_RSSIVALUE ); + } + break; + default: + rssi = 255; + break; + } + return rssi; +} + +void SX1276Reset( void ) +{ + // Set RESET pin to 0 + GpioInit( &SX1276.Reset, RADIO_RESET, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); + + // Wait 1 ms + DelayMs( 1 ); + + // Configure RESET as input + GpioInit( &SX1276.Reset, RADIO_RESET, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); + + // Wait 6 ms + DelayMs( 6 ); +} + +void SX1276SetOpMode( uint8_t opMode ) +{ + static uint8_t opModePrev = RF_OPMODE_STANDBY; + + if( opMode != opModePrev ) + { + opModePrev = opMode; + if( opMode == RF_OPMODE_SLEEP ) + { + SX1276SetAntSwLowPower( true ); + } + else + { + SX1276SetAntSwLowPower( false ); + if( opMode == RF_OPMODE_TRANSMITTER ) + { + SX1276SetAntSw( 1 ); + } + else + { + SX1276SetAntSw( 0 ); + } + } + SX1276Write( REG_OPMODE, ( SX1276Read( REG_OPMODE ) & RF_OPMODE_MASK ) | opMode ); + } +} + +void SX1276SetModem( RadioModems_t modem ) +{ + if( SX1276.Spi.Spi == NULL ) + { + while( 1 ); + } + if( SX1276.Settings.Modem == modem ) + { + return; + } + + SX1276.Settings.Modem = modem; + switch( SX1276.Settings.Modem ) + { + default: + case MODEM_FSK: + SX1276SetOpMode( RF_OPMODE_SLEEP ); + SX1276Write( REG_OPMODE, ( SX1276Read( REG_OPMODE ) & RFLR_OPMODE_LONGRANGEMODE_MASK ) | RFLR_OPMODE_LONGRANGEMODE_OFF ); + + SX1276Write( REG_DIOMAPPING1, 0x00 ); + SX1276Write( REG_DIOMAPPING2, 0x30 ); // DIO5=ModeReady + break; + case MODEM_LORA: + SX1276SetOpMode( RF_OPMODE_SLEEP ); + SX1276Write( REG_OPMODE, ( SX1276Read( REG_OPMODE ) & RFLR_OPMODE_LONGRANGEMODE_MASK ) | RFLR_OPMODE_LONGRANGEMODE_ON ); + + SX1276Write( REG_DIOMAPPING1, 0x00 ); + SX1276Write( REG_DIOMAPPING2, 0x00 ); + break; + } +} + +void SX1276Write( uint8_t addr, uint8_t data ) { + SX1276WriteBuffer( addr, &data, 1 ); +} -} \ No newline at end of file +uint8_t SX1276Read( uint8_t addr ) +{ + uint8_t data; + SX1276ReadBuffer( addr, &data, 1 ); + return data; +} + +void SX1276WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ) +{ + uint8_t i; + + //NSS = 0; + GpioWrite( &SX1276.Spi.Nss, 0 ); + + SpiInOut( &SX1276.Spi, addr | 0x80 ); + for( i = 0; i < size; i++ ) + { + SpiInOut( &SX1276.Spi, buffer[i] ); + } + + //NSS = 1; + GpioWrite( &SX1276.Spi.Nss, 1 ); +} + +void SX1276ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ) +{ + uint8_t i; + + //NSS = 0; + GpioWrite( &SX1276.Spi.Nss, 0 ); + + SpiInOut( &SX1276.Spi, addr & 0x7F ); + + for( i = 0; i < size; i++ ) + { + buffer[i] = SpiInOut( &SX1276.Spi, 0 ); + } + + //NSS = 1; + GpioWrite( &SX1276.Spi.Nss, 1 ); +} + +void SX1276WriteFifo( uint8_t *buffer, uint8_t size ) +{ + SX1276WriteBuffer( 0, buffer, size ); +} + +void SX1276ReadFifo( uint8_t *buffer, uint8_t size ) +{ + SX1276ReadBuffer( 0, buffer, size ); +} + +void SX1276OnTimeoutIrq( void ) +{ + RadioState_t state = RF_IDLE; + switch( SX1276.Settings.State ) + { + case RF_RX_RUNNING: + if( SX1276.Settings.Modem == MODEM_FSK ) + { + SX1276.Settings.FskPacketHandler.PreambleDetected = false; + SX1276.Settings.FskPacketHandler.SyncWordDetected = false; + SX1276.Settings.FskPacketHandler.NbBytes = 0; + SX1276.Settings.FskPacketHandler.Size = 0; + + // Clear Irqs + SX1276Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | + RF_IRQFLAGS1_PREAMBLEDETECT | + RF_IRQFLAGS1_SYNCADDRESSMATCH ); + SX1276Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN ); + + if( SX1276.Settings.Fsk.RxContinuous == true ) + { + state = SX1276.Settings.State; + // Continuous mode restart Rx chain + SX1276Write( REG_RXCONFIG, SX1276Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + else + { + TimerStart( &RxTimeoutSyncWord ); + } + } + if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) + { + RadioEvents->RxError( ); + } + break; + case RF_TX_RUNNING: + if( ( RadioEvents != NULL ) && ( RadioEvents->TxTimeout != NULL ) ) + { + RadioEvents->TxTimeout( ); + } + break; + default: + break; + } + SX1276.Settings.State = state; +} + +void SX1276OnDio0Irq( void ) +{ + __IO uint8_t irqFlags = 0; + + switch( SX1276.Settings.State ) + { + case RF_RX_RUNNING: + //TimerStop( &RxTimeoutTimer ); + // RxDone interrupt + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + irqFlags = SX1276Read( REG_IRQFLAGS2 ); + if( ( irqFlags & RF_IRQFLAGS2_CRCOK ) != RF_IRQFLAGS2_CRCOK ) + { + // Clear Irqs + SX1276Write( REG_IRQFLAGS1, RF_IRQFLAGS1_RSSI | + RF_IRQFLAGS1_PREAMBLEDETECT | + RF_IRQFLAGS1_SYNCADDRESSMATCH ); + SX1276Write( REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN ); + + if( SX1276.Settings.Fsk.RxContinuous == false ) + { + SX1276.Settings.State = RF_IDLE; + TimerStart( &RxTimeoutSyncWord ); + } + else + { + // Continuous mode restart Rx chain + SX1276Write( REG_RXCONFIG, SX1276Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + TimerStop( &RxTimeoutTimer ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) + { + RadioEvents->RxError( ); + } + SX1276.Settings.FskPacketHandler.PreambleDetected = false; + SX1276.Settings.FskPacketHandler.SyncWordDetected = false; + SX1276.Settings.FskPacketHandler.NbBytes = 0; + SX1276.Settings.FskPacketHandler.Size = 0; + break; + } + + // Read received packet size + if( ( SX1276.Settings.FskPacketHandler.Size == 0 ) && ( SX1276.Settings.FskPacketHandler.NbBytes == 0 ) ) + { + if( SX1276.Settings.Fsk.FixLen == false ) + { + SX1276ReadFifo( ( uint8_t* )&SX1276.Settings.FskPacketHandler.Size, 1 ); + } + else + { + SX1276.Settings.FskPacketHandler.Size = SX1276Read( REG_PAYLOADLENGTH ); + } + SX1276ReadFifo( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes, SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + SX1276.Settings.FskPacketHandler.NbBytes += ( SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + } + else + { + SX1276ReadFifo( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes, SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + SX1276.Settings.FskPacketHandler.NbBytes += ( SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + } + + if( SX1276.Settings.Fsk.RxContinuous == false ) + { + SX1276.Settings.State = RF_IDLE; + TimerStart( &RxTimeoutSyncWord ); + } + else + { + // Continuous mode restart Rx chain + SX1276Write( REG_RXCONFIG, SX1276Read( REG_RXCONFIG ) | RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK ); + } + TimerStop( &RxTimeoutTimer ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxDone != NULL ) ) + { + RadioEvents->RxDone( RxBuffer, SX1276.Settings.FskPacketHandler.Size, SX1276.Settings.FskPacketHandler.RssiValue, 0, 0 ); + } + SX1276.Settings.FskPacketHandler.PreambleDetected = false; + SX1276.Settings.FskPacketHandler.SyncWordDetected = false; + SX1276.Settings.FskPacketHandler.NbBytes = 0; + SX1276.Settings.FskPacketHandler.Size = 0; + break; + case MODEM_LORA: + { + uint8_t snr = 0; + + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_RXDONE ); + + irqFlags = SX1276Read( REG_LR_IRQFLAGS ); + if( ( irqFlags & RFLR_IRQFLAGS_PAYLOADCRCERROR_MASK ) == RFLR_IRQFLAGS_PAYLOADCRCERROR ) + { + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_PAYLOADCRCERROR ); + + if( SX1276.Settings.LoRa.RxContinuous == false ) + { + SX1276.Settings.State = RF_IDLE; + } + TimerStop( &RxTimeoutTimer ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxError != NULL ) ) + { + RadioEvents->RxError( ); + } + break; + } + + snr = SX1276Read( REG_LR_PKTSNRVALUE ); + if( snr & 0x80 ) // The SNR sign bit is 1 + { + // Invert and divide by 4 + SX1276.Settings.LoRaPacketHandler.SnrValue = ( ( ~snr + 1 ) & 0xFF ) >> 2; + SX1276.Settings.LoRaPacketHandler.SnrValue = -SX1276.Settings.LoRaPacketHandler.SnrValue; + } + else + { + // Divide by 4 + SX1276.Settings.LoRaPacketHandler.SnrValue = ( snr & 0xFF ) >> 2; + } + + + if( SX1276.Settings.LoRaPacketHandler.SnrValue < 0 ) + { + SX1276.Settings.LoRaPacketHandler.RssiValue = NOISE_ABSOLUTE_ZERO + + BandwidthLog[SX1276.Settings.LoRa.Bandwidth] + + ( ( SX1276.Settings.Channel > RF_MID_BAND_THRESH ) ? NOISE_FIGURE_HF : NOISE_FIGURE_LF ) + + ( double )SX1276.Settings.LoRaPacketHandler.SnrValue; + } + else + { + if( SX1276.Settings.Channel > RF_MID_BAND_THRESH ) + { + SX1276.Settings.LoRaPacketHandler.RssiValue = RssiOffsetHf[SX1276.Settings.LoRa.Bandwidth] + + ( double )SX1276Read( REG_LR_PKTRSSIVALUE ); + } + else + { + SX1276.Settings.LoRaPacketHandler.RssiValue = RssiOffsetLf[SX1276.Settings.LoRa.Bandwidth] + + ( double )SX1276Read( REG_LR_PKTRSSIVALUE ); + } + } + + SX1276.Settings.LoRaPacketHandler.Size = SX1276Read( REG_LR_RXNBBYTES ); + SX1276ReadFifo( RxBuffer, SX1276.Settings.LoRaPacketHandler.Size ); + + if( SX1276.Settings.LoRa.RxContinuous == false ) + { + SX1276.Settings.State = RF_IDLE; + } + TimerStop( &RxTimeoutTimer ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxDone != NULL ) ) + { + RadioEvents->RxDone( RxBuffer, SX1276.Settings.LoRaPacketHandler.Size, SX1276.Settings.LoRaPacketHandler.RssiValue, SX1276.Settings.LoRaPacketHandler.SnrValue, snr ); + } + } + break; + default: + break; + } + break; + case RF_TX_RUNNING: + TimerStop( &TxTimeoutTimer ); + // TxDone interrupt + switch( SX1276.Settings.Modem ) + { + case MODEM_LORA: + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_TXDONE ); + // Intentional fall through + case MODEM_FSK: + default: + SX1276.Settings.State = RF_IDLE; + if( ( RadioEvents != NULL ) && ( RadioEvents->TxDone != NULL ) ) + { + RadioEvents->TxDone( ); + } + break; + } + break; + default: + break; + } +} + +void SX1276OnDio1Irq( void ) +{ + switch( SX1276.Settings.State ) + { + case RF_RX_RUNNING: + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + // FifoLevel interrupt + // Read received packet size + if( ( SX1276.Settings.FskPacketHandler.Size == 0 ) && ( SX1276.Settings.FskPacketHandler.NbBytes == 0 ) ) + { + if( SX1276.Settings.Fsk.FixLen == false ) + { + SX1276ReadFifo( ( uint8_t* )&SX1276.Settings.FskPacketHandler.Size, 1 ); + } + else + { + SX1276.Settings.FskPacketHandler.Size = SX1276Read( REG_PAYLOADLENGTH ); + } + } + + if( ( SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ) > SX1276.Settings.FskPacketHandler.FifoThresh ) + { + SX1276ReadFifo( ( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes ), SX1276.Settings.FskPacketHandler.FifoThresh ); + SX1276.Settings.FskPacketHandler.NbBytes += SX1276.Settings.FskPacketHandler.FifoThresh; + } + else + { + SX1276ReadFifo( ( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes ), SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + SX1276.Settings.FskPacketHandler.NbBytes += ( SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + } + break; + case MODEM_LORA: + // Sync time out + TimerStop( &RxTimeoutTimer ); + SX1276.Settings.State = RF_IDLE; + if( ( RadioEvents != NULL ) && ( RadioEvents->RxTimeout != NULL ) ) + { + RadioEvents->RxTimeout( ); + } + break; + default: + break; + } + break; + case RF_TX_RUNNING: + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + // FifoLevel interrupt + if( ( SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ) > SX1276.Settings.FskPacketHandler.ChunkSize ) + { + SX1276WriteFifo( ( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes ), SX1276.Settings.FskPacketHandler.ChunkSize ); + SX1276.Settings.FskPacketHandler.NbBytes += SX1276.Settings.FskPacketHandler.ChunkSize; + } + else + { + // Write the last chunk of data + SX1276WriteFifo( RxBuffer + SX1276.Settings.FskPacketHandler.NbBytes, SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes ); + SX1276.Settings.FskPacketHandler.NbBytes += SX1276.Settings.FskPacketHandler.Size - SX1276.Settings.FskPacketHandler.NbBytes; + } + break; + case MODEM_LORA: + break; + default: + break; + } + break; + default: + break; + } +} + +void SX1276OnDio2Irq( void ) +{ + switch( SX1276.Settings.State ) + { + case RF_RX_RUNNING: + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + if( ( SX1276.Settings.FskPacketHandler.PreambleDetected == true ) && ( SX1276.Settings.FskPacketHandler.SyncWordDetected == false ) ) + { + TimerStop( &RxTimeoutSyncWord ); + + SX1276.Settings.FskPacketHandler.SyncWordDetected = true; + + SX1276.Settings.FskPacketHandler.RssiValue = -( double )( ( double )SX1276Read( REG_RSSIVALUE ) / 2.0 ); + + SX1276.Settings.FskPacketHandler.AfcValue = ( int32_t )( double )( ( ( uint16_t )SX1276Read( REG_AFCMSB ) << 8 ) | + ( uint16_t )SX1276Read( REG_AFCLSB ) ) * + ( double )FREQ_STEP; + SX1276.Settings.FskPacketHandler.RxGain = ( SX1276Read( REG_LNA ) >> 5 ) & 0x07; + } + break; + case MODEM_LORA: + break; + default: + break; + } + break; + case RF_TX_RUNNING: + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + break; + case MODEM_LORA: + break; + default: + break; + } + break; + default: + break; + } +} + +void SX1276OnDio3Irq( void ) +{ + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + break; + case MODEM_LORA: + break; + default: + break; + } +} + +void SX1276OnDio4Irq( void ) +{ + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + { + if( SX1276.Settings.FskPacketHandler.PreambleDetected == false ) + { + SX1276.Settings.FskPacketHandler.PreambleDetected = true; + } + } + break; + case MODEM_LORA: + break; + default: + break; + } +} + +void SX1276OnDio5Irq( void ) +{ + switch( SX1276.Settings.Modem ) + { + case MODEM_FSK: + break; + case MODEM_LORA: + break; + default: + break; + } +} diff --git a/src/radio/sx1276/sx1276.h b/src/radio/sx1276/sx1276.h index da4bfcbed..287df364f 100644 --- a/src/radio/sx1276/sx1276.h +++ b/src/radio/sx1276/sx1276.h @@ -15,4 +15,323 @@ Maintainer: Miguel Luis and Gregory Cristian #ifndef __SX1276_H__ #define __SX1276_H__ +#include "sx1276Regs-Fsk.h" +#include "sx1276Regs-LoRa.h" + +/*! + * Radio wakeup time from SLEEP mode + */ +#define RADIO_WAKEUP_TIME 1000 // [us] + +/*! + * Radio FSK modem parameters + */ +typedef struct +{ + int8_t Power; + uint32_t Fdev; + uint32_t Bandwidth; + uint32_t BandwidthAfc; + uint32_t Datarate; + uint16_t PreambleLen; + bool FixLen; + bool CrcOn; + bool IqInverted; + bool RxContinuous; + uint32_t TxTimeout; +}RadioFskSettings_t; + +/*! + * Radio FSK packet handler state + */ +typedef struct +{ + uint8_t PreambleDetected; + uint8_t SyncWordDetected; + double RssiValue; + int32_t AfcValue; + uint8_t RxGain; + uint16_t Size; + uint16_t NbBytes; + uint8_t FifoThresh; + uint8_t ChunkSize; +}RadioFskPacketHandler_t; + +/*! + * Radio LoRa modem parameters + */ +typedef struct +{ + int8_t Power; + uint32_t Bandwidth; + uint32_t Datarate; + bool LowDatarateOptimize; + uint8_t Coderate; + uint16_t PreambleLen; + bool FixLen; + bool CrcOn; + bool IqInverted; + bool RxContinuous; + uint32_t TxTimeout; +}RadioLoRaSettings_t; + +/*! + * Radio LoRa packet handler state + */ +typedef struct +{ + double SnrValue; + double RssiValue; + uint8_t Size; +}RadioLoRaPacketHandler_t; + +/*! + * Radio Settings + */ +typedef struct +{ + RadioState_t State; + RadioModems_t Modem; + uint32_t Channel; + RadioFskSettings_t Fsk; + RadioFskPacketHandler_t FskPacketHandler; + RadioLoRaSettings_t LoRa; + RadioLoRaPacketHandler_t LoRaPacketHandler; +}RadioSettings_t; + +/*! + * Radio hardware and global parameters + */ +typedef struct SX1276_s +{ + Gpio_t Reset; + Gpio_t DIO0; + Gpio_t DIO1; + Gpio_t DIO2; + Gpio_t DIO3; + Gpio_t DIO4; + Gpio_t DIO5; + Spi_t Spi; + uint8_t RxTx; + RadioSettings_t Settings; +}SX1276_t; + +/*! + * Hardware IO IRQ callback function definition + */ +typedef void ( DioIrqHandler )( void ); + +/*! + * SX1276 definitions + */ +#define XTAL_FREQ 32000000 +#define FREQ_STEP 61.03515625 + +#define RX_BUFFER_SIZE 256 + +/*! + * ============================================================================ + * Public functions prototypes + * ============================================================================ + */ + +/*! + * \brief Initializes the radio + * + * \param [IN] events Structure containing the driver callback functions + */ +void SX1276Init( RadioEvents_t *events ); + +/*! + * Return current radio status + * + * \param status Radio status.[RF_IDLE, RF_RX_RUNNING, RF_TX_RUNNING] + */ +RadioState_t SX1276GetStatus( void ); + +/*! + * \brief Sets the channels configuration + * + * \param [IN] freq Channel RF frequency + */ +void SX1276SetChannel( uint32_t freq ); + +/*! + * \brief Sets the channels configuration + * + * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] + * \param [IN] freq Channel RF frequency + * \param [IN] rssiThresh RSSI threshold + * + * \retval isFree [true: Channel is free, false: Channel is not free] + */ +bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int32_t rssiThresh ); + +/*! + * \brief Generates a 32 bits random value based on the RSSI readings + * + * \remark This function sets the radio in LoRa modem mode and disables + * all interrupts. + * After calling this function either SX1276SetRxConfig or + * SX1276SetTxConfig functions must be called. + * + * \retval randomValue 32 bits random value + */ +uint32_t SX1276Random( void ); + +/*! + * \brief Sets the reception parameters + * + * \remark When using LoRa modem only bandwidths 125, 250 and 500 kHz are supported + * + * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] + * \param [IN] bandwidth Sets the bandwidth + * FSK : >= 2600 and <= 250000 Hz + * LoRa: [0: 125 kHz, 1: 250 kHz, + * 2: 500 kHz, 3: Reserved] + * \param [IN] datarate Sets the Datarate + * FSK : 600..300000 bits/s + * LoRa: [6: 64, 7: 128, 8: 256, 9: 512, + * 10: 1024, 11: 2048, 12: 4096 chips] + * \param [IN] coderate Sets the coding rate (LoRa only) + * FSK : N/A ( set to 0 ) + * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + * \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only) + * FSK : >= 2600 and <= 250000 Hz + * LoRa: N/A ( set to 0 ) + * \param [IN] preambleLen Sets the Preamble length + * FSK : Number of bytes + * LoRa: Length in symbols (the hardware adds 4 more symbols) + * \param [IN] symbTimeout Sets the RxSingle timeout value (LoRa only) + * FSK : N/A ( set to 0 ) + * LoRa: timeout in symbols + * \param [IN] fixLen Fixed length packets [0: variable, 1: fixed] + * \param [IN] crcOn Enables/Disables the CRC [0: OFF, 1: ON] + * \param [IN] iqInverted Inverts IQ signals (LoRa only) + * FSK : N/A ( set to 0 ) + * LoRa: [0: not inverted, 1: inverted] + * \param [IN] rxContinuous Sets the reception in continuous mode + * [false: single mode, true: continuous mode] + */ +void SX1276SetRxConfig( RadioModems_t modem, uint32_t bandwidth, + uint32_t datarate, uint8_t coderate, + uint32_t bandwidthAfc, uint16_t preambleLen, + uint16_t symbTimeout, bool fixLen, + bool crcOn, bool iqInverted, bool rxContinuous ); + +/*! + * \brief Sets the transmission parameters + * + * \remark When using LoRa modem only bandwidths 125, 250 and 500 kHz are supported + * + * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] + * \param [IN] power Sets the output power [dBm] + * \param [IN] fdev Sets the frequency deviation (FSK only) + * FSK : [Hz] + * LoRa: 0 + * \param [IN] bandwidth Sets the bandwidth (LoRa only) + * FSK : 0 + * LoRa: [0: 125 kHz, 1: 250 kHz, + * 2: 500 kHz, 3: Reserved] + * \param [IN] datarate Sets the Datarate + * FSK : 600..300000 bits/s + * LoRa: [6: 64, 7: 128, 8: 256, 9: 512, + * 10: 1024, 11: 2048, 12: 4096 chips] + * \param [IN] coderate Sets the coding rate (LoRa only) + * FSK : N/A ( set to 0 ) + * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + * \param [IN] preambleLen Sets the preamble length + * FSK : Number of bytes + * LoRa: Length in symbols (the hardware adds 4 more symbols) + * \param [IN] fixLen Fixed length packets [0: variable, 1: fixed] + * \param [IN] crcOn Enables disables the CRC [0: OFF, 1: ON] + * \param [IN] iqInverted Inverts IQ signals (LoRa only) + * FSK : N/A ( set to 0 ) + * LoRa: [0: not inverted, 1: inverted] + * \param [IN] timeout Transmission timeout [us] + */ +void SX1276SetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, + uint32_t bandwidth, uint32_t datarate, + uint8_t coderate, uint16_t preambleLen, + bool fixLen, bool crcOn, + bool iqInverted, uint32_t timeout ); + +/*! + * \brief Computes the packet time on air for the given payload + * + * \Remark Can only be called once SetRxConfig or SetTxConfig have been called + * + * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] + * \param [IN] pktLen Packet payload length + * + * \retval airTime Computed airTime for the given packet payload length + */ +double SX1276GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ); + +/*! + * \brief Sends the buffer of size. Prepares the packet to be sent and sets + * the radio in transmission + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276Send( uint8_t *buffer, uint8_t size ); + +/*! + * \brief Sets the radio in sleep mode + */ +void SX1276SetSleep( void ); + +/*! + * \brief Sets the radio in standby mode + */ +void SX1276SetStby( void ); + +/*! + * \brief Sets the radio in reception mode for the given time + * \param [IN] timeout Reception timeout [us] [0: continuous, others timeout] + */ +void SX1276SetRx( uint32_t timeout ); + +/*! + * \brief Reads the current RSSI value + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276ReadRssi( RadioModems_t modem ); + +/*! + * \brief Writes the radio register at the specified address + * + * \param [IN]: addr Register address + * \param [IN]: data New register value + */ +void SX1276Write( uint8_t addr, uint8_t data ); + +/*! + * \brief Reads the radio register at the specified address + * + * \param [IN]: addr Register address + * \retval data Register value + */ +uint8_t SX1276Read( uint8_t addr ); + +/*! + * \brief Writes multiple radio registers starting at address + * + * \param [IN] addr First Radio register address + * \param [IN] buffer Buffer containing the new register's values + * \param [IN] size Number of registers to be written + */ +void SX1276WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ); + +/*! + * \brief Reads multiple radio registers starting at address + * + * \param [IN] addr First Radio register address + * \param [OUT] buffer Buffer where to copy the registers data + * \param [IN] size Number of registers to be read + */ +void SX1276ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ); + #endif // __SX1276_H__ diff --git a/src/radio/sx1276/sx1276Regs-Fsk.h b/src/radio/sx1276/sx1276Regs-Fsk.h new file mode 100644 index 000000000..f171b44d2 --- /dev/null +++ b/src/radio/sx1276/sx1276Regs-Fsk.h @@ -0,0 +1,1128 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + ©2013 Semtech + +Description: SX1276 FSK modem registers and bits definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SX1276_REGS_FSK_H__ +#define __SX1276_REGS_FSK_H__ + +/*! + * ============================================================================ + * SX1276 Internal registers Address + * ============================================================================ + */ +#define REG_FIFO 0x00 +// Common settings +#define REG_OPMODE 0x01 +#define REG_BITRATEMSB 0x02 +#define REG_BITRATELSB 0x03 +#define REG_FDEVMSB 0x04 +#define REG_FDEVLSB 0x05 +#define REG_FRFMSB 0x06 +#define REG_FRFMID 0x07 +#define REG_FRFLSB 0x08 +// Tx settings +#define REG_PACONFIG 0x09 +#define REG_PARAMP 0x0A +#define REG_OCP 0x0B +// Rx settings +#define REG_LNA 0x0C +#define REG_RXCONFIG 0x0D +#define REG_RSSICONFIG 0x0E +#define REG_RSSICOLLISION 0x0F +#define REG_RSSITHRESH 0x10 +#define REG_RSSIVALUE 0x11 +#define REG_RXBW 0x12 +#define REG_AFCBW 0x13 +#define REG_OOKPEAK 0x14 +#define REG_OOKFIX 0x15 +#define REG_OOKAVG 0x16 +#define REG_RES17 0x17 +#define REG_RES18 0x18 +#define REG_RES19 0x19 +#define REG_AFCFEI 0x1A +#define REG_AFCMSB 0x1B +#define REG_AFCLSB 0x1C +#define REG_FEIMSB 0x1D +#define REG_FEILSB 0x1E +#define REG_PREAMBLEDETECT 0x1F +#define REG_RXTIMEOUT1 0x20 +#define REG_RXTIMEOUT2 0x21 +#define REG_RXTIMEOUT3 0x22 +#define REG_RXDELAY 0x23 +// Oscillator settings +#define REG_OSC 0x24 +// Packet handler settings +#define REG_PREAMBLEMSB 0x25 +#define REG_PREAMBLELSB 0x26 +#define REG_SYNCCONFIG 0x27 +#define REG_SYNCVALUE1 0x28 +#define REG_SYNCVALUE2 0x29 +#define REG_SYNCVALUE3 0x2A +#define REG_SYNCVALUE4 0x2B +#define REG_SYNCVALUE5 0x2C +#define REG_SYNCVALUE6 0x2D +#define REG_SYNCVALUE7 0x2E +#define REG_SYNCVALUE8 0x2F +#define REG_PACKETCONFIG1 0x30 +#define REG_PACKETCONFIG2 0x31 +#define REG_PAYLOADLENGTH 0x32 +#define REG_NODEADRS 0x33 +#define REG_BROADCASTADRS 0x34 +#define REG_FIFOTHRESH 0x35 +// SM settings +#define REG_SEQCONFIG1 0x36 +#define REG_SEQCONFIG2 0x37 +#define REG_TIMERRESOL 0x38 +#define REG_TIMER1COEF 0x39 +#define REG_TIMER2COEF 0x3A +// Service settings +#define REG_IMAGECAL 0x3B +#define REG_TEMP 0x3C +#define REG_LOWBAT 0x3D +// Status +#define REG_IRQFLAGS1 0x3E +#define REG_IRQFLAGS2 0x3F +// I/O settings +#define REG_DIOMAPPING1 0x40 +#define REG_DIOMAPPING2 0x41 +// Version +#define REG_VERSION 0x42 +// Additional settings +#define REG_PLLHOP 0x44 +#define REG_TCXO 0x4B +#define REG_PADAC 0x4D +#define REG_FORMERTEMP 0x5B +#define REG_BITRATEFRAC 0x5D +#define REG_AGCREF 0x61 +#define REG_AGCTHRESH1 0x62 +#define REG_AGCTHRESH2 0x63 +#define REG_AGCTHRESH3 0x64 +#define REG_PLL 0x70 + +/*! + * ============================================================================ + * SX1276 FSK bits control definition + * ============================================================================ + */ + +/*! + * RegFifo + */ + +/*! + * RegOpMode + */ +#define RF_OPMODE_LONGRANGEMODE_MASK 0x7F +#define RF_OPMODE_LONGRANGEMODE_OFF 0x00 +#define RF_OPMODE_LONGRANGEMODE_ON 0x80 + +#define RF_OPMODE_MODULATIONTYPE_MASK 0x9F +#define RF_OPMODE_MODULATIONTYPE_FSK 0x00 // Default +#define RF_OPMODE_MODULATIONTYPE_OOK 0x20 + +#define RF_OPMODE_MODULATIONSHAPING_MASK 0xE7 +#define RF_OPMODE_MODULATIONSHAPING_00 0x00 // Default +#define RF_OPMODE_MODULATIONSHAPING_01 0x08 +#define RF_OPMODE_MODULATIONSHAPING_10 0x10 +#define RF_OPMODE_MODULATIONSHAPING_11 0x18 + +#define RF_OPMODE_MASK 0xF8 +#define RF_OPMODE_SLEEP 0x00 +#define RF_OPMODE_STANDBY 0x01 // Default +#define RF_OPMODE_SYNTHESIZER_TX 0x02 +#define RF_OPMODE_TRANSMITTER 0x03 +#define RF_OPMODE_SYNTHESIZER_RX 0x04 +#define RF_OPMODE_RECEIVER 0x05 + +/*! + * RegBitRate (bits/sec) + */ +#define RF_BITRATEMSB_1200_BPS 0x68 +#define RF_BITRATELSB_1200_BPS 0x2B +#define RF_BITRATEMSB_2400_BPS 0x34 +#define RF_BITRATELSB_2400_BPS 0x15 +#define RF_BITRATEMSB_4800_BPS 0x1A // Default +#define RF_BITRATELSB_4800_BPS 0x0B // Default +#define RF_BITRATEMSB_9600_BPS 0x0D +#define RF_BITRATELSB_9600_BPS 0x05 +#define RF_BITRATEMSB_15000_BPS 0x08 +#define RF_BITRATELSB_15000_BPS 0x55 +#define RF_BITRATEMSB_19200_BPS 0x06 +#define RF_BITRATELSB_19200_BPS 0x83 +#define RF_BITRATEMSB_38400_BPS 0x03 +#define RF_BITRATELSB_38400_BPS 0x41 +#define RF_BITRATEMSB_76800_BPS 0x01 +#define RF_BITRATELSB_76800_BPS 0xA1 +#define RF_BITRATEMSB_153600_BPS 0x00 +#define RF_BITRATELSB_153600_BPS 0xD0 +#define RF_BITRATEMSB_57600_BPS 0x02 +#define RF_BITRATELSB_57600_BPS 0x2C +#define RF_BITRATEMSB_115200_BPS 0x01 +#define RF_BITRATELSB_115200_BPS 0x16 +#define RF_BITRATEMSB_12500_BPS 0x0A +#define RF_BITRATELSB_12500_BPS 0x00 +#define RF_BITRATEMSB_25000_BPS 0x05 +#define RF_BITRATELSB_25000_BPS 0x00 +#define RF_BITRATEMSB_50000_BPS 0x02 +#define RF_BITRATELSB_50000_BPS 0x80 +#define RF_BITRATEMSB_100000_BPS 0x01 +#define RF_BITRATELSB_100000_BPS 0x40 +#define RF_BITRATEMSB_150000_BPS 0x00 +#define RF_BITRATELSB_150000_BPS 0xD5 +#define RF_BITRATEMSB_200000_BPS 0x00 +#define RF_BITRATELSB_200000_BPS 0xA0 +#define RF_BITRATEMSB_250000_BPS 0x00 +#define RF_BITRATELSB_250000_BPS 0x80 +#define RF_BITRATEMSB_32768_BPS 0x03 +#define RF_BITRATELSB_32768_BPS 0xD1 + +/*! + * RegFdev (Hz) + */ +#define RF_FDEVMSB_2000_HZ 0x00 +#define RF_FDEVLSB_2000_HZ 0x21 +#define RF_FDEVMSB_5000_HZ 0x00 // Default +#define RF_FDEVLSB_5000_HZ 0x52 // Default +#define RF_FDEVMSB_10000_HZ 0x00 +#define RF_FDEVLSB_10000_HZ 0xA4 +#define RF_FDEVMSB_15000_HZ 0x00 +#define RF_FDEVLSB_15000_HZ 0xF6 +#define RF_FDEVMSB_20000_HZ 0x01 +#define RF_FDEVLSB_20000_HZ 0x48 +#define RF_FDEVMSB_25000_HZ 0x01 +#define RF_FDEVLSB_25000_HZ 0x9A +#define RF_FDEVMSB_30000_HZ 0x01 +#define RF_FDEVLSB_30000_HZ 0xEC +#define RF_FDEVMSB_35000_HZ 0x02 +#define RF_FDEVLSB_35000_HZ 0x3D +#define RF_FDEVMSB_40000_HZ 0x02 +#define RF_FDEVLSB_40000_HZ 0x8F +#define RF_FDEVMSB_45000_HZ 0x02 +#define RF_FDEVLSB_45000_HZ 0xE1 +#define RF_FDEVMSB_50000_HZ 0x03 +#define RF_FDEVLSB_50000_HZ 0x33 +#define RF_FDEVMSB_55000_HZ 0x03 +#define RF_FDEVLSB_55000_HZ 0x85 +#define RF_FDEVMSB_60000_HZ 0x03 +#define RF_FDEVLSB_60000_HZ 0xD7 +#define RF_FDEVMSB_65000_HZ 0x04 +#define RF_FDEVLSB_65000_HZ 0x29 +#define RF_FDEVMSB_70000_HZ 0x04 +#define RF_FDEVLSB_70000_HZ 0x7B +#define RF_FDEVMSB_75000_HZ 0x04 +#define RF_FDEVLSB_75000_HZ 0xCD +#define RF_FDEVMSB_80000_HZ 0x05 +#define RF_FDEVLSB_80000_HZ 0x1F +#define RF_FDEVMSB_85000_HZ 0x05 +#define RF_FDEVLSB_85000_HZ 0x71 +#define RF_FDEVMSB_90000_HZ 0x05 +#define RF_FDEVLSB_90000_HZ 0xC3 +#define RF_FDEVMSB_95000_HZ 0x06 +#define RF_FDEVLSB_95000_HZ 0x14 +#define RF_FDEVMSB_100000_HZ 0x06 +#define RF_FDEVLSB_100000_HZ 0x66 +#define RF_FDEVMSB_110000_HZ 0x07 +#define RF_FDEVLSB_110000_HZ 0x0A +#define RF_FDEVMSB_120000_HZ 0x07 +#define RF_FDEVLSB_120000_HZ 0xAE +#define RF_FDEVMSB_130000_HZ 0x08 +#define RF_FDEVLSB_130000_HZ 0x52 +#define RF_FDEVMSB_140000_HZ 0x08 +#define RF_FDEVLSB_140000_HZ 0xF6 +#define RF_FDEVMSB_150000_HZ 0x09 +#define RF_FDEVLSB_150000_HZ 0x9A +#define RF_FDEVMSB_160000_HZ 0x0A +#define RF_FDEVLSB_160000_HZ 0x3D +#define RF_FDEVMSB_170000_HZ 0x0A +#define RF_FDEVLSB_170000_HZ 0xE1 +#define RF_FDEVMSB_180000_HZ 0x0B +#define RF_FDEVLSB_180000_HZ 0x85 +#define RF_FDEVMSB_190000_HZ 0x0C +#define RF_FDEVLSB_190000_HZ 0x29 +#define RF_FDEVMSB_200000_HZ 0x0C +#define RF_FDEVLSB_200000_HZ 0xCD + +/*! + * RegFrf (MHz) + */ +#define RF_FRFMSB_863_MHZ 0xD7 +#define RF_FRFMID_863_MHZ 0xC0 +#define RF_FRFLSB_863_MHZ 0x00 +#define RF_FRFMSB_864_MHZ 0xD8 +#define RF_FRFMID_864_MHZ 0x00 +#define RF_FRFLSB_864_MHZ 0x00 +#define RF_FRFMSB_865_MHZ 0xD8 +#define RF_FRFMID_865_MHZ 0x40 +#define RF_FRFLSB_865_MHZ 0x00 +#define RF_FRFMSB_866_MHZ 0xD8 +#define RF_FRFMID_866_MHZ 0x80 +#define RF_FRFLSB_866_MHZ 0x00 +#define RF_FRFMSB_867_MHZ 0xD8 +#define RF_FRFMID_867_MHZ 0xC0 +#define RF_FRFLSB_867_MHZ 0x00 +#define RF_FRFMSB_868_MHZ 0xD9 +#define RF_FRFMID_868_MHZ 0x00 +#define RF_FRFLSB_868_MHZ 0x00 +#define RF_FRFMSB_869_MHZ 0xD9 +#define RF_FRFMID_869_MHZ 0x40 +#define RF_FRFLSB_869_MHZ 0x00 +#define RF_FRFMSB_870_MHZ 0xD9 +#define RF_FRFMID_870_MHZ 0x80 +#define RF_FRFLSB_870_MHZ 0x00 + +#define RF_FRFMSB_902_MHZ 0xE1 +#define RF_FRFMID_902_MHZ 0x80 +#define RF_FRFLSB_902_MHZ 0x00 +#define RF_FRFMSB_903_MHZ 0xE1 +#define RF_FRFMID_903_MHZ 0xC0 +#define RF_FRFLSB_903_MHZ 0x00 +#define RF_FRFMSB_904_MHZ 0xE2 +#define RF_FRFMID_904_MHZ 0x00 +#define RF_FRFLSB_904_MHZ 0x00 +#define RF_FRFMSB_905_MHZ 0xE2 +#define RF_FRFMID_905_MHZ 0x40 +#define RF_FRFLSB_905_MHZ 0x00 +#define RF_FRFMSB_906_MHZ 0xE2 +#define RF_FRFMID_906_MHZ 0x80 +#define RF_FRFLSB_906_MHZ 0x00 +#define RF_FRFMSB_907_MHZ 0xE2 +#define RF_FRFMID_907_MHZ 0xC0 +#define RF_FRFLSB_907_MHZ 0x00 +#define RF_FRFMSB_908_MHZ 0xE3 +#define RF_FRFMID_908_MHZ 0x00 +#define RF_FRFLSB_908_MHZ 0x00 +#define RF_FRFMSB_909_MHZ 0xE3 +#define RF_FRFMID_909_MHZ 0x40 +#define RF_FRFLSB_909_MHZ 0x00 +#define RF_FRFMSB_910_MHZ 0xE3 +#define RF_FRFMID_910_MHZ 0x80 +#define RF_FRFLSB_910_MHZ 0x00 +#define RF_FRFMSB_911_MHZ 0xE3 +#define RF_FRFMID_911_MHZ 0xC0 +#define RF_FRFLSB_911_MHZ 0x00 +#define RF_FRFMSB_912_MHZ 0xE4 +#define RF_FRFMID_912_MHZ 0x00 +#define RF_FRFLSB_912_MHZ 0x00 +#define RF_FRFMSB_913_MHZ 0xE4 +#define RF_FRFMID_913_MHZ 0x40 +#define RF_FRFLSB_913_MHZ 0x00 +#define RF_FRFMSB_914_MHZ 0xE4 +#define RF_FRFMID_914_MHZ 0x80 +#define RF_FRFLSB_914_MHZ 0x00 +#define RF_FRFMSB_915_MHZ 0xE4 // Default +#define RF_FRFMID_915_MHZ 0xC0 // Default +#define RF_FRFLSB_915_MHZ 0x00 // Default +#define RF_FRFMSB_916_MHZ 0xE5 +#define RF_FRFMID_916_MHZ 0x00 +#define RF_FRFLSB_916_MHZ 0x00 +#define RF_FRFMSB_917_MHZ 0xE5 +#define RF_FRFMID_917_MHZ 0x40 +#define RF_FRFLSB_917_MHZ 0x00 +#define RF_FRFMSB_918_MHZ 0xE5 +#define RF_FRFMID_918_MHZ 0x80 +#define RF_FRFLSB_918_MHZ 0x00 +#define RF_FRFMSB_919_MHZ 0xE5 +#define RF_FRFMID_919_MHZ 0xC0 +#define RF_FRFLSB_919_MHZ 0x00 +#define RF_FRFMSB_920_MHZ 0xE6 +#define RF_FRFMID_920_MHZ 0x00 +#define RF_FRFLSB_920_MHZ 0x00 +#define RF_FRFMSB_921_MHZ 0xE6 +#define RF_FRFMID_921_MHZ 0x40 +#define RF_FRFLSB_921_MHZ 0x00 +#define RF_FRFMSB_922_MHZ 0xE6 +#define RF_FRFMID_922_MHZ 0x80 +#define RF_FRFLSB_922_MHZ 0x00 +#define RF_FRFMSB_923_MHZ 0xE6 +#define RF_FRFMID_923_MHZ 0xC0 +#define RF_FRFLSB_923_MHZ 0x00 +#define RF_FRFMSB_924_MHZ 0xE7 +#define RF_FRFMID_924_MHZ 0x00 +#define RF_FRFLSB_924_MHZ 0x00 +#define RF_FRFMSB_925_MHZ 0xE7 +#define RF_FRFMID_925_MHZ 0x40 +#define RF_FRFLSB_925_MHZ 0x00 +#define RF_FRFMSB_926_MHZ 0xE7 +#define RF_FRFMID_926_MHZ 0x80 +#define RF_FRFLSB_926_MHZ 0x00 +#define RF_FRFMSB_927_MHZ 0xE7 +#define RF_FRFMID_927_MHZ 0xC0 +#define RF_FRFLSB_927_MHZ 0x00 +#define RF_FRFMSB_928_MHZ 0xE8 +#define RF_FRFMID_928_MHZ 0x00 +#define RF_FRFLSB_928_MHZ 0x00 + +/*! + * RegPaConfig + */ +#define RF_PACONFIG_PASELECT_MASK 0x7F +#define RF_PACONFIG_PASELECT_PABOOST 0x80 +#define RF_PACONFIG_PASELECT_RFO 0x00 // Default + +#define RF_PACONFIG_MAX_POWER_MASK 0x8F + +#define RF_PACONFIG_OUTPUTPOWER_MASK 0xF0 + +/*! + * RegPaRamp + */ +#define RF_PARAMP_LOWPNTXPLL_MASK 0xE0 +#define RF_PARAMP_LOWPNTXPLL_OFF 0x10 // Default +#define RF_PARAMP_LOWPNTXPLL_ON 0x00 + +#define RF_PARAMP_MASK 0xF0 +#define RF_PARAMP_3400_US 0x00 +#define RF_PARAMP_2000_US 0x01 +#define RF_PARAMP_1000_US 0x02 +#define RF_PARAMP_0500_US 0x03 +#define RF_PARAMP_0250_US 0x04 +#define RF_PARAMP_0125_US 0x05 +#define RF_PARAMP_0100_US 0x06 +#define RF_PARAMP_0062_US 0x07 +#define RF_PARAMP_0050_US 0x08 +#define RF_PARAMP_0040_US 0x09 // Default +#define RF_PARAMP_0031_US 0x0A +#define RF_PARAMP_0025_US 0x0B +#define RF_PARAMP_0020_US 0x0C +#define RF_PARAMP_0015_US 0x0D +#define RF_PARAMP_0012_US 0x0E +#define RF_PARAMP_0010_US 0x0F + +/*! + * RegOcp + */ +#define RF_OCP_MASK 0xDF +#define RF_OCP_ON 0x20 // Default +#define RF_OCP_OFF 0x00 + +#define RF_OCP_TRIM_MASK 0xE0 +#define RF_OCP_TRIM_045_MA 0x00 +#define RF_OCP_TRIM_050_MA 0x01 +#define RF_OCP_TRIM_055_MA 0x02 +#define RF_OCP_TRIM_060_MA 0x03 +#define RF_OCP_TRIM_065_MA 0x04 +#define RF_OCP_TRIM_070_MA 0x05 +#define RF_OCP_TRIM_075_MA 0x06 +#define RF_OCP_TRIM_080_MA 0x07 +#define RF_OCP_TRIM_085_MA 0x08 +#define RF_OCP_TRIM_090_MA 0x09 +#define RF_OCP_TRIM_095_MA 0x0A +#define RF_OCP_TRIM_100_MA 0x0B // Default +#define RF_OCP_TRIM_105_MA 0x0C +#define RF_OCP_TRIM_110_MA 0x0D +#define RF_OCP_TRIM_115_MA 0x0E +#define RF_OCP_TRIM_120_MA 0x0F +#define RF_OCP_TRIM_130_MA 0x10 +#define RF_OCP_TRIM_140_MA 0x11 +#define RF_OCP_TRIM_150_MA 0x12 +#define RF_OCP_TRIM_160_MA 0x13 +#define RF_OCP_TRIM_170_MA 0x14 +#define RF_OCP_TRIM_180_MA 0x15 +#define RF_OCP_TRIM_190_MA 0x16 +#define RF_OCP_TRIM_200_MA 0x17 +#define RF_OCP_TRIM_210_MA 0x18 +#define RF_OCP_TRIM_220_MA 0x19 +#define RF_OCP_TRIM_230_MA 0x1A +#define RF_OCP_TRIM_240_MA 0x1B + +/*! + * RegLna + */ +#define RF_LNA_GAIN_MASK 0x1F +#define RF_LNA_GAIN_G1 0x20 // Default +#define RF_LNA_GAIN_G2 0x40 +#define RF_LNA_GAIN_G3 0x60 +#define RF_LNA_GAIN_G4 0x80 +#define RF_LNA_GAIN_G5 0xA0 +#define RF_LNA_GAIN_G6 0xC0 + +#define RF_LNA_BOOST_MASK 0xFC +#define RF_LNA_BOOST_OFF 0x00 // Default +#define RF_LNA_BOOST_ON 0x03 + +/*! + * RegRxConfig + */ +#define RF_RXCONFIG_RESTARTRXONCOLLISION_MASK 0x7F +#define RF_RXCONFIG_RESTARTRXONCOLLISION_ON 0x80 +#define RF_RXCONFIG_RESTARTRXONCOLLISION_OFF 0x00 // Default + +#define RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK 0x40 // Write only + +#define RF_RXCONFIG_RESTARTRXWITHPLLLOCK 0x20 // Write only + +#define RF_RXCONFIG_AFCAUTO_MASK 0xEF +#define RF_RXCONFIG_AFCAUTO_ON 0x10 +#define RF_RXCONFIG_AFCAUTO_OFF 0x00 // Default + +#define RF_RXCONFIG_AGCAUTO_MASK 0xF7 +#define RF_RXCONFIG_AGCAUTO_ON 0x08 // Default +#define RF_RXCONFIG_AGCAUTO_OFF 0x00 + +#define RF_RXCONFIG_RXTRIGER_MASK 0xF8 +#define RF_RXCONFIG_RXTRIGER_OFF 0x00 +#define RF_RXCONFIG_RXTRIGER_RSSI 0x01 +#define RF_RXCONFIG_RXTRIGER_PREAMBLEDETECT 0x06 // Default +#define RF_RXCONFIG_RXTRIGER_RSSI_PREAMBLEDETECT 0x07 + +/*! + * RegRssiConfig + */ +#define RF_RSSICONFIG_OFFSET_MASK 0x07 +#define RF_RSSICONFIG_OFFSET_P_00_DB 0x00 // Default +#define RF_RSSICONFIG_OFFSET_P_01_DB 0x08 +#define RF_RSSICONFIG_OFFSET_P_02_DB 0x10 +#define RF_RSSICONFIG_OFFSET_P_03_DB 0x18 +#define RF_RSSICONFIG_OFFSET_P_04_DB 0x20 +#define RF_RSSICONFIG_OFFSET_P_05_DB 0x28 +#define RF_RSSICONFIG_OFFSET_P_06_DB 0x30 +#define RF_RSSICONFIG_OFFSET_P_07_DB 0x38 +#define RF_RSSICONFIG_OFFSET_P_08_DB 0x40 +#define RF_RSSICONFIG_OFFSET_P_09_DB 0x48 +#define RF_RSSICONFIG_OFFSET_P_10_DB 0x50 +#define RF_RSSICONFIG_OFFSET_P_11_DB 0x58 +#define RF_RSSICONFIG_OFFSET_P_12_DB 0x60 +#define RF_RSSICONFIG_OFFSET_P_13_DB 0x68 +#define RF_RSSICONFIG_OFFSET_P_14_DB 0x70 +#define RF_RSSICONFIG_OFFSET_P_15_DB 0x78 +#define RF_RSSICONFIG_OFFSET_M_16_DB 0x80 +#define RF_RSSICONFIG_OFFSET_M_15_DB 0x88 +#define RF_RSSICONFIG_OFFSET_M_14_DB 0x90 +#define RF_RSSICONFIG_OFFSET_M_13_DB 0x98 +#define RF_RSSICONFIG_OFFSET_M_12_DB 0xA0 +#define RF_RSSICONFIG_OFFSET_M_11_DB 0xA8 +#define RF_RSSICONFIG_OFFSET_M_10_DB 0xB0 +#define RF_RSSICONFIG_OFFSET_M_09_DB 0xB8 +#define RF_RSSICONFIG_OFFSET_M_08_DB 0xC0 +#define RF_RSSICONFIG_OFFSET_M_07_DB 0xC8 +#define RF_RSSICONFIG_OFFSET_M_06_DB 0xD0 +#define RF_RSSICONFIG_OFFSET_M_05_DB 0xD8 +#define RF_RSSICONFIG_OFFSET_M_04_DB 0xE0 +#define RF_RSSICONFIG_OFFSET_M_03_DB 0xE8 +#define RF_RSSICONFIG_OFFSET_M_02_DB 0xF0 +#define RF_RSSICONFIG_OFFSET_M_01_DB 0xF8 + +#define RF_RSSICONFIG_SMOOTHING_MASK 0xF8 +#define RF_RSSICONFIG_SMOOTHING_2 0x00 +#define RF_RSSICONFIG_SMOOTHING_4 0x01 +#define RF_RSSICONFIG_SMOOTHING_8 0x02 // Default +#define RF_RSSICONFIG_SMOOTHING_16 0x03 +#define RF_RSSICONFIG_SMOOTHING_32 0x04 +#define RF_RSSICONFIG_SMOOTHING_64 0x05 +#define RF_RSSICONFIG_SMOOTHING_128 0x06 +#define RF_RSSICONFIG_SMOOTHING_256 0x07 + +/*! + * RegRssiCollision + */ +#define RF_RSSICOLISION_THRESHOLD 0x0A // Default + +/*! + * RegRssiThresh + */ +#define RF_RSSITHRESH_THRESHOLD 0xFF // Default + +/*! + * RegRssiValue (Read Only) + */ + +/*! + * RegRxBw + */ +#define RF_RXBW_MANT_MASK 0xE7 +#define RF_RXBW_MANT_16 0x00 +#define RF_RXBW_MANT_20 0x08 +#define RF_RXBW_MANT_24 0x10 // Default + +#define RF_RXBW_EXP_MASK 0xF8 +#define RF_RXBW_EXP_0 0x00 +#define RF_RXBW_EXP_1 0x01 +#define RF_RXBW_EXP_2 0x02 +#define RF_RXBW_EXP_3 0x03 +#define RF_RXBW_EXP_4 0x04 +#define RF_RXBW_EXP_5 0x05 // Default +#define RF_RXBW_EXP_6 0x06 +#define RF_RXBW_EXP_7 0x07 + +/*! + * RegAfcBw + */ +#define RF_AFCBW_MANTAFC_MASK 0xE7 +#define RF_AFCBW_MANTAFC_16 0x00 +#define RF_AFCBW_MANTAFC_20 0x08 // Default +#define RF_AFCBW_MANTAFC_24 0x10 + +#define RF_AFCBW_EXPAFC_MASK 0xF8 +#define RF_AFCBW_EXPAFC_0 0x00 +#define RF_AFCBW_EXPAFC_1 0x01 +#define RF_AFCBW_EXPAFC_2 0x02 +#define RF_AFCBW_EXPAFC_3 0x03 // Default +#define RF_AFCBW_EXPAFC_4 0x04 +#define RF_AFCBW_EXPAFC_5 0x05 +#define RF_AFCBW_EXPAFC_6 0x06 +#define RF_AFCBW_EXPAFC_7 0x07 + +/*! + * RegOokPeak + */ +#define RF_OOKPEAK_BITSYNC_MASK 0xDF // Default +#define RF_OOKPEAK_BITSYNC_ON 0x20 // Default +#define RF_OOKPEAK_BITSYNC_OFF 0x00 + +#define RF_OOKPEAK_OOKTHRESHTYPE_MASK 0xE7 +#define RF_OOKPEAK_OOKTHRESHTYPE_FIXED 0x00 +#define RF_OOKPEAK_OOKTHRESHTYPE_PEAK 0x08 // Default +#define RF_OOKPEAK_OOKTHRESHTYPE_AVERAGE 0x10 + +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_MASK 0xF8 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_0_5_DB 0x00 // Default +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_1_0_DB 0x01 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_1_5_DB 0x02 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_2_0_DB 0x03 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_3_0_DB 0x04 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_4_0_DB 0x05 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_5_0_DB 0x06 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_6_0_DB 0x07 + +/*! + * RegOokFix + */ +#define RF_OOKFIX_OOKFIXEDTHRESHOLD 0x0C // Default + +/*! + * RegOokAvg + */ +#define RF_OOKAVG_OOKPEAKTHRESHDEC_MASK 0x1F +#define RF_OOKAVG_OOKPEAKTHRESHDEC_000 0x00 // Default +#define RF_OOKAVG_OOKPEAKTHRESHDEC_001 0x20 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_010 0x40 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_011 0x60 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_100 0x80 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_101 0xA0 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_110 0xC0 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_111 0xE0 + +#define RF_OOKAVG_AVERAGEOFFSET_MASK 0xF3 +#define RF_OOKAVG_AVERAGEOFFSET_0_DB 0x00 // Default +#define RF_OOKAVG_AVERAGEOFFSET_2_DB 0x04 +#define RF_OOKAVG_AVERAGEOFFSET_4_DB 0x08 +#define RF_OOKAVG_AVERAGEOFFSET_6_DB 0x0C + +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_MASK 0xFC +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_00 0x00 +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_01 0x01 +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_10 0x02 // Default +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_11 0x03 + +/*! + * RegAfcFei + */ +#define RF_AFCFEI_AGCSTART 0x10 + +#define RF_AFCFEI_AFCCLEAR 0x02 + +#define RF_AFCFEI_AFCAUTOCLEAR_MASK 0xFE +#define RF_AFCFEI_AFCAUTOCLEAR_ON 0x01 +#define RF_AFCFEI_AFCAUTOCLEAR_OFF 0x00 // Default + +/*! + * RegAfcMsb (Read Only) + */ + +/*! + * RegAfcLsb (Read Only) + */ + +/*! + * RegFeiMsb (Read Only) + */ + +/*! + * RegFeiLsb (Read Only) + */ + +/*! + * RegPreambleDetect + */ +#define RF_PREAMBLEDETECT_DETECTOR_MASK 0x7F +#define RF_PREAMBLEDETECT_DETECTOR_ON 0x80 // Default +#define RF_PREAMBLEDETECT_DETECTOR_OFF 0x00 + +#define RF_PREAMBLEDETECT_DETECTORSIZE_MASK 0x9F +#define RF_PREAMBLEDETECT_DETECTORSIZE_1 0x00 +#define RF_PREAMBLEDETECT_DETECTORSIZE_2 0x20 // Default +#define RF_PREAMBLEDETECT_DETECTORSIZE_3 0x40 +#define RF_PREAMBLEDETECT_DETECTORSIZE_4 0x60 + +#define RF_PREAMBLEDETECT_DETECTORTOL_MASK 0xE0 +#define RF_PREAMBLEDETECT_DETECTORTOL_0 0x00 +#define RF_PREAMBLEDETECT_DETECTORTOL_1 0x01 +#define RF_PREAMBLEDETECT_DETECTORTOL_2 0x02 +#define RF_PREAMBLEDETECT_DETECTORTOL_3 0x03 +#define RF_PREAMBLEDETECT_DETECTORTOL_4 0x04 +#define RF_PREAMBLEDETECT_DETECTORTOL_5 0x05 +#define RF_PREAMBLEDETECT_DETECTORTOL_6 0x06 +#define RF_PREAMBLEDETECT_DETECTORTOL_7 0x07 +#define RF_PREAMBLEDETECT_DETECTORTOL_8 0x08 +#define RF_PREAMBLEDETECT_DETECTORTOL_9 0x09 +#define RF_PREAMBLEDETECT_DETECTORTOL_10 0x0A // Default +#define RF_PREAMBLEDETECT_DETECTORTOL_11 0x0B +#define RF_PREAMBLEDETECT_DETECTORTOL_12 0x0C +#define RF_PREAMBLEDETECT_DETECTORTOL_13 0x0D +#define RF_PREAMBLEDETECT_DETECTORTOL_14 0x0E +#define RF_PREAMBLEDETECT_DETECTORTOL_15 0x0F +#define RF_PREAMBLEDETECT_DETECTORTOL_16 0x10 +#define RF_PREAMBLEDETECT_DETECTORTOL_17 0x11 +#define RF_PREAMBLEDETECT_DETECTORTOL_18 0x12 +#define RF_PREAMBLEDETECT_DETECTORTOL_19 0x13 +#define RF_PREAMBLEDETECT_DETECTORTOL_20 0x14 +#define RF_PREAMBLEDETECT_DETECTORTOL_21 0x15 +#define RF_PREAMBLEDETECT_DETECTORTOL_22 0x16 +#define RF_PREAMBLEDETECT_DETECTORTOL_23 0x17 +#define RF_PREAMBLEDETECT_DETECTORTOL_24 0x18 +#define RF_PREAMBLEDETECT_DETECTORTOL_25 0x19 +#define RF_PREAMBLEDETECT_DETECTORTOL_26 0x1A +#define RF_PREAMBLEDETECT_DETECTORTOL_27 0x1B +#define RF_PREAMBLEDETECT_DETECTORTOL_28 0x1C +#define RF_PREAMBLEDETECT_DETECTORTOL_29 0x1D +#define RF_PREAMBLEDETECT_DETECTORTOL_30 0x1E +#define RF_PREAMBLEDETECT_DETECTORTOL_31 0x1F + +/*! + * RegRxTimeout1 + */ +#define RF_RXTIMEOUT1_TIMEOUTRXRSSI 0x00 // Default + +/*! + * RegRxTimeout2 + */ +#define RF_RXTIMEOUT2_TIMEOUTRXPREAMBLE 0x00 // Default + +/*! + * RegRxTimeout3 + */ +#define RF_RXTIMEOUT3_TIMEOUTSIGNALSYNC 0x00 // Default + +/*! + * RegRxDelay + */ +#define RF_RXDELAY_INTERPACKETRXDELAY 0x00 // Default + +/*! + * RegOsc + */ +#define RF_OSC_RCCALSTART 0x08 + +#define RF_OSC_CLKOUT_MASK 0xF8 +#define RF_OSC_CLKOUT_32_MHZ 0x00 +#define RF_OSC_CLKOUT_16_MHZ 0x01 +#define RF_OSC_CLKOUT_8_MHZ 0x02 +#define RF_OSC_CLKOUT_4_MHZ 0x03 +#define RF_OSC_CLKOUT_2_MHZ 0x04 +#define RF_OSC_CLKOUT_1_MHZ 0x05 // Default +#define RF_OSC_CLKOUT_RC 0x06 +#define RF_OSC_CLKOUT_OFF 0x07 + +/*! + * RegPreambleMsb/RegPreambleLsb + */ +#define RF_PREAMBLEMSB_SIZE 0x00 // Default +#define RF_PREAMBLELSB_SIZE 0x03 // Default + +/*! + * RegSyncConfig + */ +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_MASK 0x3F +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_ON 0x80 // Default +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_OFF 0x40 +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_OFF 0x00 + + +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_MASK 0xDF +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_55 0x20 +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_AA 0x00 // Default + +#define RF_SYNCCONFIG_SYNC_MASK 0xEF +#define RF_SYNCCONFIG_SYNC_ON 0x10 // Default +#define RF_SYNCCONFIG_SYNC_OFF 0x00 + + +#define RF_SYNCCONFIG_SYNCSIZE_MASK 0xF8 +#define RF_SYNCCONFIG_SYNCSIZE_1 0x00 +#define RF_SYNCCONFIG_SYNCSIZE_2 0x01 +#define RF_SYNCCONFIG_SYNCSIZE_3 0x02 +#define RF_SYNCCONFIG_SYNCSIZE_4 0x03 // Default +#define RF_SYNCCONFIG_SYNCSIZE_5 0x04 +#define RF_SYNCCONFIG_SYNCSIZE_6 0x05 +#define RF_SYNCCONFIG_SYNCSIZE_7 0x06 +#define RF_SYNCCONFIG_SYNCSIZE_8 0x07 + +/*! + * RegSyncValue1-8 + */ +#define RF_SYNCVALUE1_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE2_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE3_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE4_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE5_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE6_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE7_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE8_SYNCVALUE 0x01 // Default + +/*! + * RegPacketConfig1 + */ +#define RF_PACKETCONFIG1_PACKETFORMAT_MASK 0x7F +#define RF_PACKETCONFIG1_PACKETFORMAT_FIXED 0x00 +#define RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE 0x80 // Default + +#define RF_PACKETCONFIG1_DCFREE_MASK 0x9F +#define RF_PACKETCONFIG1_DCFREE_OFF 0x00 // Default +#define RF_PACKETCONFIG1_DCFREE_MANCHESTER 0x20 +#define RF_PACKETCONFIG1_DCFREE_WHITENING 0x40 + +#define RF_PACKETCONFIG1_CRC_MASK 0xEF +#define RF_PACKETCONFIG1_CRC_ON 0x10 // Default +#define RF_PACKETCONFIG1_CRC_OFF 0x00 + +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_MASK 0xF7 +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_ON 0x00 // Default +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_OFF 0x08 + +#define RF_PACKETCONFIG1_ADDRSFILTERING_MASK 0xF9 +#define RF_PACKETCONFIG1_ADDRSFILTERING_OFF 0x00 // Default +#define RF_PACKETCONFIG1_ADDRSFILTERING_NODE 0x02 +#define RF_PACKETCONFIG1_ADDRSFILTERING_NODEBROADCAST 0x04 + +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_MASK 0xFE +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_CCITT 0x00 // Default +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_IBM 0x01 + +/*! + * RegPacketConfig2 + */ + +#define RF_PACKETCONFIG2_WMBUS_CRC_ENABLE_MASK 0x7F +#define RF_PACKETCONFIG2_WMBUS_CRC_ENABLE 0x80 +#define RF_PACKETCONFIG2_WMBUS_CRC_DISABLE 0x00 // Default + +#define RF_PACKETCONFIG2_DATAMODE_MASK 0xBF +#define RF_PACKETCONFIG2_DATAMODE_CONTINUOUS 0x00 +#define RF_PACKETCONFIG2_DATAMODE_PACKET 0x40 // Default + +#define RF_PACKETCONFIG2_IOHOME_MASK 0xDF +#define RF_PACKETCONFIG2_IOHOME_ON 0x20 +#define RF_PACKETCONFIG2_IOHOME_OFF 0x00 // Default + +#define RF_PACKETCONFIG2_BEACON_MASK 0xF7 +#define RF_PACKETCONFIG2_BEACON_ON 0x08 +#define RF_PACKETCONFIG2_BEACON_OFF 0x00 // Default + +#define RF_PACKETCONFIG2_PAYLOADLENGTH_MSB_MASK 0xF8 + +/*! + * RegPayloadLength + */ +#define RF_PAYLOADLENGTH_LENGTH 0x40 // Default + +/*! + * RegNodeAdrs + */ +#define RF_NODEADDRESS_ADDRESS 0x00 + +/*! + * RegBroadcastAdrs + */ +#define RF_BROADCASTADDRESS_ADDRESS 0x00 + +/*! + * RegFifoThresh + */ +#define RF_FIFOTHRESH_TXSTARTCONDITION_MASK 0x7F +#define RF_FIFOTHRESH_TXSTARTCONDITION_FIFOTHRESH 0x00 // Default +#define RF_FIFOTHRESH_TXSTARTCONDITION_FIFONOTEMPTY 0x80 + +#define RF_FIFOTHRESH_FIFOTHRESHOLD_MASK 0xC0 +#define RF_FIFOTHRESH_FIFOTHRESHOLD_THRESHOLD 0x0F // Default + +/*! + * RegSeqConfig1 + */ +#define RF_SEQCONFIG1_SEQUENCER_START 0x80 + +#define RF_SEQCONFIG1_SEQUENCER_STOP 0x40 + +#define RF_SEQCONFIG1_IDLEMODE_MASK 0xDF +#define RF_SEQCONFIG1_IDLEMODE_SLEEP 0x20 +#define RF_SEQCONFIG1_IDLEMODE_STANDBY 0x00 // Default + +#define RF_SEQCONFIG1_FROMSTART_MASK 0xE7 +#define RF_SEQCONFIG1_FROMSTART_TOLPS 0x00 // Default +#define RF_SEQCONFIG1_FROMSTART_TORX 0x08 +#define RF_SEQCONFIG1_FROMSTART_TOTX 0x10 +#define RF_SEQCONFIG1_FROMSTART_TOTX_ONFIFOLEVEL 0x18 + +#define RF_SEQCONFIG1_LPS_MASK 0xFB +#define RF_SEQCONFIG1_LPS_SEQUENCER_OFF 0x00 // Default +#define RF_SEQCONFIG1_LPS_IDLE 0x04 + +#define RF_SEQCONFIG1_FROMIDLE_MASK 0xFD +#define RF_SEQCONFIG1_FROMIDLE_TOTX 0x00 // Default +#define RF_SEQCONFIG1_FROMIDLE_TORX 0x02 + +#define RF_SEQCONFIG1_FROMTX_MASK 0xFE +#define RF_SEQCONFIG1_FROMTX_TOLPS 0x00 // Default +#define RF_SEQCONFIG1_FROMTX_TORX 0x01 + +/*! + * RegSeqConfig2 + */ +#define RF_SEQCONFIG2_FROMRX_MASK 0x1F +#define RF_SEQCONFIG2_FROMRX_TOUNUSED_000 0x00 // Default +#define RF_SEQCONFIG2_FROMRX_TORXPKT_ONPLDRDY 0x20 +#define RF_SEQCONFIG2_FROMRX_TOLPS_ONPLDRDY 0x40 +#define RF_SEQCONFIG2_FROMRX_TORXPKT_ONCRCOK 0x60 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONRSSI 0x80 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONSYNC 0xA0 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONPREAMBLE 0xC0 +#define RF_SEQCONFIG2_FROMRX_TOUNUSED_111 0xE0 + +#define RF_SEQCONFIG2_FROMRXTIMEOUT_MASK 0xE7 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TORXRESTART 0x00 // Default +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOTX 0x08 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOLPS 0x10 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOSEQUENCEROFF 0x18 + +#define RF_SEQCONFIG2_FROMRXPKT_MASK 0xF8 +#define RF_SEQCONFIG2_FROMRXPKT_TOSEQUENCEROFF 0x00 // Default +#define RF_SEQCONFIG2_FROMRXPKT_TOTX_ONFIFOEMPTY 0x01 +#define RF_SEQCONFIG2_FROMRXPKT_TOLPS 0x02 +#define RF_SEQCONFIG2_FROMRXPKT_TOSYNTHESIZERRX 0x03 +#define RF_SEQCONFIG2_FROMRXPKT_TORX 0x04 + +/*! + * RegTimerResol + */ +#define RF_TIMERRESOL_TIMER1RESOL_MASK 0xF3 +#define RF_TIMERRESOL_TIMER1RESOL_OFF 0x00 // Default +#define RF_TIMERRESOL_TIMER1RESOL_000064_US 0x04 +#define RF_TIMERRESOL_TIMER1RESOL_004100_US 0x08 +#define RF_TIMERRESOL_TIMER1RESOL_262000_US 0x0C + +#define RF_TIMERRESOL_TIMER2RESOL_MASK 0xFC +#define RF_TIMERRESOL_TIMER2RESOL_OFF 0x00 // Default +#define RF_TIMERRESOL_TIMER2RESOL_000064_US 0x01 +#define RF_TIMERRESOL_TIMER2RESOL_004100_US 0x02 +#define RF_TIMERRESOL_TIMER2RESOL_262000_US 0x03 + +/*! + * RegTimer1Coef + */ +#define RF_TIMER1COEF_TIMER1COEFFICIENT 0xF5 // Default + +/*! + * RegTimer2Coef + */ +#define RF_TIMER2COEF_TIMER2COEFFICIENT 0x20 // Default + +/*! + * RegImageCal + */ +#define RF_IMAGECAL_AUTOIMAGECAL_MASK 0x7F +#define RF_IMAGECAL_AUTOIMAGECAL_ON 0x80 +#define RF_IMAGECAL_AUTOIMAGECAL_OFF 0x00 // Default + +#define RF_IMAGECAL_IMAGECAL_MASK 0xBF +#define RF_IMAGECAL_IMAGECAL_START 0x40 + +#define RF_IMAGECAL_IMAGECAL_RUNNING 0x20 +#define RF_IMAGECAL_IMAGECAL_DONE 0x00 // Default + +#define RF_IMAGECAL_TEMPCHANGE_HIGHER 0x08 +#define RF_IMAGECAL_TEMPCHANGE_LOWER 0x00 + +#define RF_IMAGECAL_TEMPTHRESHOLD_MASK 0xF9 +#define RF_IMAGECAL_TEMPTHRESHOLD_05 0x00 +#define RF_IMAGECAL_TEMPTHRESHOLD_10 0x02 // Default +#define RF_IMAGECAL_TEMPTHRESHOLD_15 0x04 +#define RF_IMAGECAL_TEMPTHRESHOLD_20 0x06 + +#define RF_IMAGECAL_TEMPMONITOR_MASK 0xFE +#define RF_IMAGECAL_TEMPMONITOR_ON 0x00 // Default +#define RF_IMAGECAL_TEMPMONITOR_OFF 0x01 + +/*! + * RegTemp (Read Only) + */ + +/*! + * RegLowBat + */ +#define RF_LOWBAT_MASK 0xF7 +#define RF_LOWBAT_ON 0x08 +#define RF_LOWBAT_OFF 0x00 // Default + +#define RF_LOWBAT_TRIM_MASK 0xF8 +#define RF_LOWBAT_TRIM_1695 0x00 +#define RF_LOWBAT_TRIM_1764 0x01 +#define RF_LOWBAT_TRIM_1835 0x02 // Default +#define RF_LOWBAT_TRIM_1905 0x03 +#define RF_LOWBAT_TRIM_1976 0x04 +#define RF_LOWBAT_TRIM_2045 0x05 +#define RF_LOWBAT_TRIM_2116 0x06 +#define RF_LOWBAT_TRIM_2185 0x07 + +/*! + * RegIrqFlags1 + */ +#define RF_IRQFLAGS1_MODEREADY 0x80 + +#define RF_IRQFLAGS1_RXREADY 0x40 + +#define RF_IRQFLAGS1_TXREADY 0x20 + +#define RF_IRQFLAGS1_PLLLOCK 0x10 + +#define RF_IRQFLAGS1_RSSI 0x08 + +#define RF_IRQFLAGS1_TIMEOUT 0x04 + +#define RF_IRQFLAGS1_PREAMBLEDETECT 0x02 + +#define RF_IRQFLAGS1_SYNCADDRESSMATCH 0x01 + +/*! + * RegIrqFlags2 + */ +#define RF_IRQFLAGS2_FIFOFULL 0x80 + +#define RF_IRQFLAGS2_FIFOEMPTY 0x40 + +#define RF_IRQFLAGS2_FIFOLEVEL 0x20 + +#define RF_IRQFLAGS2_FIFOOVERRUN 0x10 + +#define RF_IRQFLAGS2_PACKETSENT 0x08 + +#define RF_IRQFLAGS2_PAYLOADREADY 0x04 + +#define RF_IRQFLAGS2_CRCOK 0x02 + +#define RF_IRQFLAGS2_LOWBAT 0x01 + +/*! + * RegDioMapping1 + */ +#define RF_DIOMAPPING1_DIO0_MASK 0x3F +#define RF_DIOMAPPING1_DIO0_00 0x00 // Default +#define RF_DIOMAPPING1_DIO0_01 0x40 +#define RF_DIOMAPPING1_DIO0_10 0x80 +#define RF_DIOMAPPING1_DIO0_11 0xC0 + +#define RF_DIOMAPPING1_DIO1_MASK 0xCF +#define RF_DIOMAPPING1_DIO1_00 0x00 // Default +#define RF_DIOMAPPING1_DIO1_01 0x10 +#define RF_DIOMAPPING1_DIO1_10 0x20 +#define RF_DIOMAPPING1_DIO1_11 0x30 + +#define RF_DIOMAPPING1_DIO2_MASK 0xF3 +#define RF_DIOMAPPING1_DIO2_00 0x00 // Default +#define RF_DIOMAPPING1_DIO2_01 0x04 +#define RF_DIOMAPPING1_DIO2_10 0x08 +#define RF_DIOMAPPING1_DIO2_11 0x0C + +#define RF_DIOMAPPING1_DIO3_MASK 0xFC +#define RF_DIOMAPPING1_DIO3_00 0x00 // Default +#define RF_DIOMAPPING1_DIO3_01 0x01 +#define RF_DIOMAPPING1_DIO3_10 0x02 +#define RF_DIOMAPPING1_DIO3_11 0x03 + +/*! + * RegDioMapping2 + */ +#define RF_DIOMAPPING2_DIO4_MASK 0x3F +#define RF_DIOMAPPING2_DIO4_00 0x00 // Default +#define RF_DIOMAPPING2_DIO4_01 0x40 +#define RF_DIOMAPPING2_DIO4_10 0x80 +#define RF_DIOMAPPING2_DIO4_11 0xC0 + +#define RF_DIOMAPPING2_DIO5_MASK 0xCF +#define RF_DIOMAPPING2_DIO5_00 0x00 // Default +#define RF_DIOMAPPING2_DIO5_01 0x10 +#define RF_DIOMAPPING2_DIO5_10 0x20 +#define RF_DIOMAPPING2_DIO5_11 0x30 + +#define RF_DIOMAPPING2_MAP_MASK 0xFE +#define RF_DIOMAPPING2_MAP_PREAMBLEDETECT 0x01 +#define RF_DIOMAPPING2_MAP_RSSI 0x00 // Default + +/*! + * RegVersion (Read Only) + */ + +/*! + * RegPllHop + */ +#define RF_PLLHOP_FASTHOP_MASK 0x7F +#define RF_PLLHOP_FASTHOP_ON 0x80 +#define RF_PLLHOP_FASTHOP_OFF 0x00 // Default + +/*! + * RegTcxo + */ +#define RF_TCXO_TCXOINPUT_MASK 0xEF +#define RF_TCXO_TCXOINPUT_ON 0x10 +#define RF_TCXO_TCXOINPUT_OFF 0x00 // Default + +/*! + * RegPaDac + */ +#define RF_PADAC_20DBM_MASK 0xF8 +#define RF_PADAC_20DBM_ON 0x07 +#define RF_PADAC_20DBM_OFF 0x04 // Default + +/*! + * RegFormerTemp + */ + +/*! + * RegBitrateFrac + */ +#define RF_BITRATEFRAC_MASK 0xF0 + +/*! + * RegAgcRef + */ + +/*! + * RegAgcThresh1 + */ + +/*! + * RegAgcThresh2 + */ + +/*! + * RegAgcThresh3 + */ + +/*! + * RegPll + */ +#define RF_PLL_BANDWIDTH_MASK 0x3F +#define RF_PLL_BANDWIDTH_75 0x00 +#define RF_PLL_BANDWIDTH_150 0x40 +#define RF_PLL_BANDWIDTH_225 0x80 +#define RF_PLL_BANDWIDTH_300 0xC0 // Default + +#endif // __SX1276_REGS_FSK_H__ diff --git a/src/radio/sx1276/sx1276Regs-LoRa.h b/src/radio/sx1276/sx1276Regs-LoRa.h new file mode 100644 index 000000000..eafcdd9b5 --- /dev/null +++ b/src/radio/sx1276/sx1276Regs-LoRa.h @@ -0,0 +1,554 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + ©2013 Semtech + +Description: SX1276 LoRa modem registers and bits definitions + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __SX1276_REGS_LORA_H__ +#define __SX1276_REGS_LORA_H__ + +/*! + * ============================================================================ + * SX1276 Internal registers Address + * ============================================================================ + */ +#define REG_LR_FIFO 0x00 +// Common settings +#define REG_LR_OPMODE 0x01 +#define REG_LR_FRFMSB 0x06 +#define REG_LR_FRFMID 0x07 +#define REG_LR_FRFLSB 0x08 +// Tx settings +#define REG_LR_PACONFIG 0x09 +#define REG_LR_PARAMP 0x0A +#define REG_LR_OCP 0x0B +// Rx settings +#define REG_LR_LNA 0x0C +// LoRa registers +#define REG_LR_FIFOADDRPTR 0x0D +#define REG_LR_FIFOTXBASEADDR 0x0E +#define REG_LR_FIFORXBASEADDR 0x0F +#define REG_LR_FIFORXCURRENTADDR 0x10 +#define REG_LR_IRQFLAGSMASK 0x11 +#define REG_LR_IRQFLAGS 0x12 +#define REG_LR_RXNBBYTES 0x13 +#define REG_LR_RXHEADERCNTVALUEMSB 0x14 +#define REG_LR_RXHEADERCNTVALUELSB 0x15 +#define REG_LR_RXPACKETCNTVALUEMSB 0x16 +#define REG_LR_RXPACKETCNTVALUELSB 0x17 +#define REG_LR_MODEMSTAT 0x18 +#define REG_LR_PKTSNRVALUE 0x19 +#define REG_LR_PKTRSSIVALUE 0x1A +#define REG_LR_RSSIVALUE 0x1B +#define REG_LR_HOPCHANNEL 0x1C +#define REG_LR_MODEMCONFIG1 0x1D +#define REG_LR_MODEMCONFIG2 0x1E +#define REG_LR_SYMBTIMEOUTLSB 0x1F +#define REG_LR_PREAMBLEMSB 0x20 +#define REG_LR_PREAMBLELSB 0x21 +#define REG_LR_PAYLOADLENGTH 0x22 +#define REG_LR_PAYLOADMAXLENGTH 0x23 +#define REG_LR_HOPPERIOD 0x24 +#define REG_LR_FIFORXBYTEADDR 0x25 +#define REG_LR_MODEMCONFIG3 0x26 +#define REG_LR_FEIMSB 0x28 +#define REG_LR_FEIMID 0x29 +#define REG_LR_FEILSB 0x2A +#define REG_LR_RSSIWIDEBAND 0x2C +#define REG_LR_DETECTOPTIMIZE 0x31 +#define REG_LR_INVERTIQ 0x33 +#define REG_LR_DETECTIONTHRESHOLD 0x37 +// end of documented register in datasheet +// I/O settings +#define REG_LR_DIOMAPPING1 0x40 +#define REG_LR_DIOMAPPING2 0x41 +// Version +#define REG_LR_VERSION 0x42 +// Additional settings +#define REG_LR_PLLHOP 0x44 +#define REG_LR_TCXO 0x4B +#define REG_LR_PADAC 0x4D +#define REG_LR_FORMERTEMP 0x5B +#define REG_LR_BITRATEFRAC 0x5D +#define REG_LR_AGCREF 0x61 +#define REG_LR_AGCTHRESH1 0x62 +#define REG_LR_AGCTHRESH2 0x63 +#define REG_LR_AGCTHRESH3 0x64 +#define REG_LR_PLL 0x70 + +/*! + * ============================================================================ + * SX1276 LoRa bits control definition + * ============================================================================ + */ + +/*! + * RegFifo + */ + +/*! + * RegOpMode + */ +#define RFLR_OPMODE_LONGRANGEMODE_MASK 0x7F +#define RFLR_OPMODE_LONGRANGEMODE_OFF 0x00 // Default +#define RFLR_OPMODE_LONGRANGEMODE_ON 0x80 + +#define RFLR_OPMODE_ACCESSSHAREDREG_MASK 0xBF +#define RFLR_OPMODE_ACCESSSHAREDREG_ENABLE 0x40 +#define RFLR_OPMODE_ACCESSSHAREDREG_DISABLE 0x00 // Default + +#define RFLR_OPMODE_FREQMODE_ACCESS_MASK 0xF7 +#define RFLR_OPMODE_FREQMODE_ACCESS_LF 0x08 // Default +#define RFLR_OPMODE_FREQMODE_ACCESS_HF 0x00 + +#define RFLR_OPMODE_MASK 0xF8 +#define RFLR_OPMODE_SLEEP 0x00 +#define RFLR_OPMODE_STANDBY 0x01 // Default +#define RFLR_OPMODE_SYNTHESIZER_TX 0x02 +#define RFLR_OPMODE_TRANSMITTER 0x03 +#define RFLR_OPMODE_SYNTHESIZER_RX 0x04 +#define RFLR_OPMODE_RECEIVER 0x05 +// LoRa specific modes +#define RFLR_OPMODE_RECEIVER_SINGLE 0x06 +#define RFLR_OPMODE_CAD 0x07 + +/*! + * RegFrf (MHz) + */ +#define RFLR_FRFMSB_434_MHZ 0x6C // Default +#define RFLR_FRFMID_434_MHZ 0x80 // Default +#define RFLR_FRFLSB_434_MHZ 0x00 // Default + +/*! + * RegPaConfig + */ +#define RFLR_PACONFIG_PASELECT_MASK 0x7F +#define RFLR_PACONFIG_PASELECT_PABOOST 0x80 +#define RFLR_PACONFIG_PASELECT_RFO 0x00 // Default + +#define RFLR_PACONFIG_MAX_POWER_MASK 0x8F + +#define RFLR_PACONFIG_OUTPUTPOWER_MASK 0xF0 + +/*! + * RegPaRamp + */ +#define RFLR_PARAMP_TXBANDFORCE_MASK 0xEF +#define RFLR_PARAMP_TXBANDFORCE_BAND_SEL 0x10 +#define RFLR_PARAMP_TXBANDFORCE_AUTO 0x00 // Default + +#define RFLR_PARAMP_MASK 0xF0 +#define RFLR_PARAMP_3400_US 0x00 +#define RFLR_PARAMP_2000_US 0x01 +#define RFLR_PARAMP_1000_US 0x02 +#define RFLR_PARAMP_0500_US 0x03 +#define RFLR_PARAMP_0250_US 0x04 +#define RFLR_PARAMP_0125_US 0x05 +#define RFLR_PARAMP_0100_US 0x06 +#define RFLR_PARAMP_0062_US 0x07 +#define RFLR_PARAMP_0050_US 0x08 +#define RFLR_PARAMP_0040_US 0x09 // Default +#define RFLR_PARAMP_0031_US 0x0A +#define RFLR_PARAMP_0025_US 0x0B +#define RFLR_PARAMP_0020_US 0x0C +#define RFLR_PARAMP_0015_US 0x0D +#define RFLR_PARAMP_0012_US 0x0E +#define RFLR_PARAMP_0010_US 0x0F + +/*! + * RegOcp + */ +#define RFLR_OCP_MASK 0xDF +#define RFLR_OCP_ON 0x20 // Default +#define RFLR_OCP_OFF 0x00 + +#define RFLR_OCP_TRIM_MASK 0xE0 +#define RFLR_OCP_TRIM_045_MA 0x00 +#define RFLR_OCP_TRIM_050_MA 0x01 +#define RFLR_OCP_TRIM_055_MA 0x02 +#define RFLR_OCP_TRIM_060_MA 0x03 +#define RFLR_OCP_TRIM_065_MA 0x04 +#define RFLR_OCP_TRIM_070_MA 0x05 +#define RFLR_OCP_TRIM_075_MA 0x06 +#define RFLR_OCP_TRIM_080_MA 0x07 +#define RFLR_OCP_TRIM_085_MA 0x08 +#define RFLR_OCP_TRIM_090_MA 0x09 +#define RFLR_OCP_TRIM_095_MA 0x0A +#define RFLR_OCP_TRIM_100_MA 0x0B // Default +#define RFLR_OCP_TRIM_105_MA 0x0C +#define RFLR_OCP_TRIM_110_MA 0x0D +#define RFLR_OCP_TRIM_115_MA 0x0E +#define RFLR_OCP_TRIM_120_MA 0x0F +#define RFLR_OCP_TRIM_130_MA 0x10 +#define RFLR_OCP_TRIM_140_MA 0x11 +#define RFLR_OCP_TRIM_150_MA 0x12 +#define RFLR_OCP_TRIM_160_MA 0x13 +#define RFLR_OCP_TRIM_170_MA 0x14 +#define RFLR_OCP_TRIM_180_MA 0x15 +#define RFLR_OCP_TRIM_190_MA 0x16 +#define RFLR_OCP_TRIM_200_MA 0x17 +#define RFLR_OCP_TRIM_210_MA 0x18 +#define RFLR_OCP_TRIM_220_MA 0x19 +#define RFLR_OCP_TRIM_230_MA 0x1A +#define RFLR_OCP_TRIM_240_MA 0x1B + +/*! + * RegLna + */ +#define RFLR_LNA_GAIN_MASK 0x1F +#define RFLR_LNA_GAIN_G1 0x20 // Default +#define RFLR_LNA_GAIN_G2 0x40 +#define RFLR_LNA_GAIN_G3 0x60 +#define RFLR_LNA_GAIN_G4 0x80 +#define RFLR_LNA_GAIN_G5 0xA0 +#define RFLR_LNA_GAIN_G6 0xC0 + +#define RFLR_LNA_BOOST_LF_MASK 0xE7 +#define RFLR_LNA_BOOST_LF_DEFAULT 0x00 // Default + +#define RFLR_LNA_BOOST_HF_MASK 0xFC +#define RFLR_LNA_BOOST_HF_OFF 0x00 // Default +#define RFLR_LNA_BOOST_HF_ON 0x03 + +/*! + * RegFifoAddrPtr + */ +#define RFLR_FIFOADDRPTR 0x00 // Default + +/*! + * RegFifoTxBaseAddr + */ +#define RFLR_FIFOTXBASEADDR 0x80 // Default + +/*! + * RegFifoTxBaseAddr + */ +#define RFLR_FIFORXBASEADDR 0x00 // Default + +/*! + * RegFifoRxCurrentAddr (Read Only) + */ + +/*! + * RegIrqFlagsMask + */ +#define RFLR_IRQFLAGS_RXTIMEOUT_MASK 0x80 +#define RFLR_IRQFLAGS_RXDONE_MASK 0x40 +#define RFLR_IRQFLAGS_PAYLOADCRCERROR_MASK 0x20 +#define RFLR_IRQFLAGS_VALIDHEADER_MASK 0x10 +#define RFLR_IRQFLAGS_TXDONE_MASK 0x08 +#define RFLR_IRQFLAGS_CADDONE_MASK 0x04 +#define RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL_MASK 0x02 +#define RFLR_IRQFLAGS_CADDETECTED_MASK 0x01 + +/*! + * RegIrqFlags + */ +#define RFLR_IRQFLAGS_RXTIMEOUT 0x80 +#define RFLR_IRQFLAGS_RXDONE 0x40 +#define RFLR_IRQFLAGS_PAYLOADCRCERROR 0x20 +#define RFLR_IRQFLAGS_VALIDHEADER 0x10 +#define RFLR_IRQFLAGS_TXDONE 0x08 +#define RFLR_IRQFLAGS_CADDONE 0x04 +#define RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL 0x02 +#define RFLR_IRQFLAGS_CADDETECTED 0x01 + +/*! + * RegFifoRxNbBytes (Read Only) + */ + +/*! + * RegRxHeaderCntValueMsb (Read Only) + */ + +/*! + * RegRxHeaderCntValueLsb (Read Only) + */ + + +/*! + * RegRxPacketCntValueMsb (Read Only) + */ + + +/*! + * RegRxPacketCntValueLsb (Read Only) + */ + + +/*! + * RegModemStat (Read Only) + */ +#define RFLR_MODEMSTAT_RX_CR_MASK 0x1F +#define RFLR_MODEMSTAT_MODEM_STATUS_MASK 0xE0 + +/*! + * RegPktSnrValue (Read Only) + */ + + + /*! + * RegPktRssiValue (Read Only) + */ + + +/*! + * RegRssiValue (Read Only) + */ + +/*! + * RegHopChannel (Read Only) + */ +#define RFLR_HOPCHANNEL_PLL_LOCK_TIMEOUT_MASK 0x7F +#define RFLR_HOPCHANNEL_PLL_LOCK_FAIL 0x80 +#define RFLR_HOPCHANNEL_PLL_LOCK_SUCCEED 0x00 // Default + +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_MASK 0xBF +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_ON 0x40 +#define RFLR_HOPCHANNEL_CRCONPAYLOAD_OFF 0x00 // Default + +#define RFLR_HOPCHANNEL_CHANNEL_MASK 0x3F + +/*! + * RegModemConfig1 + */ +#define RFLR_MODEMCONFIG1_BW_MASK 0x0F +#define RFLR_MODEMCONFIG1_BW_7_81_KHZ 0x00 +#define RFLR_MODEMCONFIG1_BW_10_41_KHZ 0x10 +#define RFLR_MODEMCONFIG1_BW_15_62_KHZ 0x20 +#define RFLR_MODEMCONFIG1_BW_20_83_KHZ 0x30 +#define RFLR_MODEMCONFIG1_BW_31_25_KHZ 0x40 +#define RFLR_MODEMCONFIG1_BW_41_66_KHZ 0x50 +#define RFLR_MODEMCONFIG1_BW_62_50_KHZ 0x60 +#define RFLR_MODEMCONFIG1_BW_125_KHZ 0x70 // Default +#define RFLR_MODEMCONFIG1_BW_250_KHZ 0x80 +#define RFLR_MODEMCONFIG1_BW_500_KHZ 0x90 + +#define RFLR_MODEMCONFIG1_CODINGRATE_MASK 0xF1 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_5 0x02 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_6 0x04 // Default +#define RFLR_MODEMCONFIG1_CODINGRATE_4_7 0x06 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_8 0x08 + +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_MASK 0xFE +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_ON 0x01 +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_OFF 0x00 // Default + +/*! + * RegModemConfig2 + */ +#define RFLR_MODEMCONFIG2_SF_MASK 0x0F +#define RFLR_MODEMCONFIG2_SF_6 0x60 +#define RFLR_MODEMCONFIG2_SF_7 0x70 // Default +#define RFLR_MODEMCONFIG2_SF_8 0x80 +#define RFLR_MODEMCONFIG2_SF_9 0x90 +#define RFLR_MODEMCONFIG2_SF_10 0xA0 +#define RFLR_MODEMCONFIG2_SF_11 0xB0 +#define RFLR_MODEMCONFIG2_SF_12 0xC0 + +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_MASK 0xF7 +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_ON 0x08 +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_OFF 0x00 + +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK 0xFB +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_ON 0x04 +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_OFF 0x00 // Default + +#define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK 0xFC +#define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB 0x00 // Default + +/*! + * RegSymbTimeoutLsb + */ +#define RFLR_SYMBTIMEOUTLSB_SYMBTIMEOUT 0x64 // Default + +/*! + * RegPreambleLengthMsb + */ +#define RFLR_PREAMBLELENGTHMSB 0x00 // Default + +/*! + * RegPreambleLengthLsb + */ +#define RFLR_PREAMBLELENGTHLSB 0x08 // Default + +/*! + * RegPayloadLength + */ +#define RFLR_PAYLOADLENGTH 0x0E // Default + +/*! + * RegPayloadMaxLength + */ +#define RFLR_PAYLOADMAXLENGTH 0xFF // Default + +/*! + * RegHopPeriod + */ +#define RFLR_HOPPERIOD_FREQFOPPINGPERIOD 0x00 // Default + +/*! + * RegFifoRxByteAddr (Read Only) + */ + +/*! + * RegModemConfig3 + */ +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_MASK 0xF7 +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_ON 0x08 +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_OFF 0x00 // Default + +#define RFLR_MODEMCONFIG3_AGCAUTO_MASK 0xFB +#define RFLR_MODEMCONFIG3_AGCAUTO_ON 0x04 // Default +#define RFLR_MODEMCONFIG3_AGCAUTO_OFF 0x00 + +/*! + * RegFeiMsb (Read Only) + */ + +/*! + * RegFeiMid (Read Only) + */ + +/*! + * RegFeiLsb (Read Only) + */ + +/*! + * RegRssiWideband (Read Only) + */ + +/*! + * RegDetectOptimize + */ +#define RFLR_DETECTIONOPTIMIZE_MASK 0xF8 +#define RFLR_DETECTIONOPTIMIZE_SF7_TO_SF12 0x03 // Default +#define RFLR_DETECTIONOPTIMIZE_SF6 0x05 + +/*! + * RegInvertIQ + */ +#define RFLR_INVERTIQ_MASK 0xBF +#define RFLR_INVERTIQ_OFF 0x00 +#define RFLR_INVERTIQ_ON 0x40 + +/*! + * RegDetectionThreshold + */ +#define RFLR_DETECTIONTHRESH_SF7_TO_SF12 0x0A // Default +#define RFLR_DETECTIONTHRESH_SF6 0x0C + +/*! + * RegDioMapping1 + */ +#define RFLR_DIOMAPPING1_DIO0_MASK 0x3F +#define RFLR_DIOMAPPING1_DIO0_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO0_01 0x40 +#define RFLR_DIOMAPPING1_DIO0_10 0x80 +#define RFLR_DIOMAPPING1_DIO0_11 0xC0 + +#define RFLR_DIOMAPPING1_DIO1_MASK 0xCF +#define RFLR_DIOMAPPING1_DIO1_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO1_01 0x10 +#define RFLR_DIOMAPPING1_DIO1_10 0x20 +#define RFLR_DIOMAPPING1_DIO1_11 0x30 + +#define RFLR_DIOMAPPING1_DIO2_MASK 0xF3 +#define RFLR_DIOMAPPING1_DIO2_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO2_01 0x04 +#define RFLR_DIOMAPPING1_DIO2_10 0x08 +#define RFLR_DIOMAPPING1_DIO2_11 0x0C + +#define RFLR_DIOMAPPING1_DIO3_MASK 0xFC +#define RFLR_DIOMAPPING1_DIO3_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO3_01 0x01 +#define RFLR_DIOMAPPING1_DIO3_10 0x02 +#define RFLR_DIOMAPPING1_DIO3_11 0x03 + +/*! + * RegDioMapping2 + */ +#define RFLR_DIOMAPPING2_DIO4_MASK 0x3F +#define RFLR_DIOMAPPING2_DIO4_00 0x00 // Default +#define RFLR_DIOMAPPING2_DIO4_01 0x40 +#define RFLR_DIOMAPPING2_DIO4_10 0x80 +#define RFLR_DIOMAPPING2_DIO4_11 0xC0 + +#define RFLR_DIOMAPPING2_DIO5_MASK 0xCF +#define RFLR_DIOMAPPING2_DIO5_00 0x00 // Default +#define RFLR_DIOMAPPING2_DIO5_01 0x10 +#define RFLR_DIOMAPPING2_DIO5_10 0x20 +#define RFLR_DIOMAPPING2_DIO5_11 0x30 + +#define RFLR_DIOMAPPING2_MAP_MASK 0xFE +#define RFLR_DIOMAPPING2_MAP_PREAMBLEDETECT 0x01 +#define RFLR_DIOMAPPING2_MAP_RSSI 0x00 // Default + +/*! + * RegVersion (Read Only) + */ + +/*! + * RegPllHop + */ +#define RFLR_PLLHOP_FASTHOP_MASK 0x7F +#define RFLR_PLLHOP_FASTHOP_ON 0x80 +#define RFLR_PLLHOP_FASTHOP_OFF 0x00 // Default + +/*! + * RegTcxo + */ +#define RFLR_TCXO_TCXOINPUT_MASK 0xEF +#define RFLR_TCXO_TCXOINPUT_ON 0x10 +#define RFLR_TCXO_TCXOINPUT_OFF 0x00 // Default + +/*! + * RegPaDac + */ +#define RFLR_PADAC_20DBM_MASK 0xF8 +#define RFLR_PADAC_20DBM_ON 0x07 +#define RFLR_PADAC_20DBM_OFF 0x04 // Default + +/*! + * RegFormerTemp + */ + +/*! + * RegBitrateFrac + */ +#define RF_BITRATEFRAC_MASK 0xF0 + +/*! + * RegAgcRef + */ + +/*! + * RegAgcThresh1 + */ + +/*! + * RegAgcThresh2 + */ + +/*! + * RegAgcThresh3 + */ + +/*! + * RegPll + */ +#define RF_PLL_BANDWIDTH_MASK 0x3F +#define RF_PLL_BANDWIDTH_75 0x00 +#define RF_PLL_BANDWIDTH_150 0x40 +#define RF_PLL_BANDWIDTH_225 0x80 +#define RF_PLL_BANDWIDTH_300 0xC0 // Default + +#endif // __SX1276_REGS_LORA_H__ diff --git a/src/system/adc.c b/src/system/adc.c index 7337b9677..c2d1d9935 100644 --- a/src/system/adc.c +++ b/src/system/adc.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: Internal ADC implementation +Description: Implements a generic ADC driver License: Revised BSD License, see LICENSE.TXT file include in the project diff --git a/src/system/adc.h b/src/system/adc.h index c717e1752..08a482c1c 100644 --- a/src/system/adc.h +++ b/src/system/adc.h @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: Implements the STM32 internal ADC block +Description: Implements a generic ADC driver License: Revised BSD License, see LICENSE.TXT file include in the project diff --git a/src/system/crypto/aes.c b/src/system/crypto/aes.c index 621fb1e21..ad10b52e1 100644 --- a/src/system/crypto/aes.c +++ b/src/system/crypto/aes.c @@ -521,7 +521,7 @@ return_type aes_set_key( const unsigned char key[], length_type keylen, aes_cont break; default: ctx->rnd = 0; - return -1; + return ( uint_8t )-1; } block_copy_nn(ctx->ksch, key, keylen); hi = (keylen + 28) << 2; @@ -587,7 +587,7 @@ return_type aes_encrypt( const unsigned char in[N_BLOCK], unsigned char out[N_B copy_and_key( out, s1, ctx->ksch + r * N_BLOCK ); } else - return -1; + return ( uint_8t )-1; return 0; } diff --git a/src/system/fifo.h b/src/system/fifo.h index 621b18948..cc76dbdc7 100644 --- a/src/system/fifo.h +++ b/src/system/fifo.h @@ -19,7 +19,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include /*! - * FIFO + * FIFO structure */ typedef struct Fifo_s { @@ -29,16 +29,52 @@ typedef struct Fifo_s uint16_t Size; }Fifo_t; +/*! + * Initializes the FIFO structure + * + * \param [IN] fifo Pointer to the FIFO object + * \param [IN] buffer Buffer to be used as FIFO + * \param [IN] size Size of the buffer + */ void FifoInit( Fifo_t *fifo, uint8_t *buffer, uint16_t size ); +/*! + * Pushes data to the FIFO + * + * \param [IN] fifo Pointer to the FIFO object + * \param [IN] data Data to be pushed into the FIFO + */ void FifoPush( Fifo_t *fifo, uint8_t data ); +/*! + * Pops data from the FIFO + * + * \param [IN] fifo Pointer to the FIFO object + * \retval data Data popped from the FIFO + */ uint8_t FifoPop( Fifo_t *fifo ); +/*! + * Flushes the FIFO + * + * \param [IN] fifo Pointer to the FIFO object + */ void FifoFlush( Fifo_t *fifo ); +/*! + * Checks if the FIFO is empty + * + * \param [IN] fifo Pointer to the FIFO object + * \retval isEmpty true: FIFO is empty, false FIFO is not empty + */ bool IsFifoEmpty( Fifo_t *fifo ); +/*! + * Checks if the FIFO is full + * + * \param [IN] fifo Pointer to the FIFO object + * \retval isFull true: FIFO is full, false FIFO is not full + */ bool IsFifoFull( Fifo_t *fifo ); #endif // __FIFO_H__ diff --git a/src/system/gpio.h b/src/system/gpio.h index 87b9073a0..da03fe403 100644 --- a/src/system/gpio.h +++ b/src/system/gpio.h @@ -106,7 +106,7 @@ typedef void( GpioIrqHandler )( void ); /*! * \brief Initializes the given GPIO object * - * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] obj Pointer to the GPIO object * \param [IN] pin Pin name ( please look in pinName-board.h file ) * \param [IN] mode Pin mode [PIN_INPUT, PIN_OUTPUT, * PIN_ALTERNATE_FCT, PIN_ANALOGIC] @@ -119,9 +119,9 @@ void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinT /*! * \brief GPIO IRQ Initialization * - * \param [IN] obj Pointer to the GPIO object to be initialized + * \param [IN] obj Pointer to the GPIO object * \param [IN] irqMode IRQ mode [NO_IRQ, IRQ_RISING_EDGE, - * IRQ_FALLING_EDGE, IRQ_RISING_FALLING_EDGE] + * IRQ_FALLING_EDGE, IRQ_RISING_FALLING_EDGE] * \param [IN] irqPriority IRQ priority [IRQ_VERY_LOW_PRIORITY, IRQ_LOW_PRIORITY * IRQ_MEDIUM_PRIORITY, IRQ_HIGH_PRIORITY * IRQ_VERY_HIGH_PRIORITY] @@ -129,21 +129,26 @@ void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinT */ void GpioSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler ); +/*! + * \brief Removes the interrupt from the object + * + * \param [IN] obj Pointer to the GPIO object + */ void GpioRemoveInterrupt( Gpio_t *obj ); /*! * \brief Writes the given value to the GPIO output * - * \param [IN] obj Pointer to the GPIO object - * \param [IN] value New GPIO output value + * \param [IN] obj Pointer to the GPIO object + * \param [IN] value New GPIO output value */ void GpioWrite( Gpio_t *obj, uint32_t value ); /*! * \brief Reads the current GPIO input value * - * \param [IN] obj Pointer to the GPIO object - * \retval value Current GPIO input value + * \param [IN] obj Pointer to the GPIO object + * \retval value Current GPIO input value */ uint32_t GpioRead( Gpio_t *obj ); diff --git a/src/peripherals/up501.c b/src/system/gps.c similarity index 60% rename from src/peripherals/up501.c rename to src/system/gps.c index 116fc490f..07225e140 100644 --- a/src/peripherals/up501.c +++ b/src/system/gps.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: Generic driver for the GPS receiver UP501 +Description: Generic driver for any GPS receiver License: Revised BSD License, see LICENSE.TXT file include in the project @@ -18,27 +18,17 @@ Maintainer: Miguel Luis and Gregory Cristian #include #include #include "board.h" -#include "up501.h" +#include "gps.h" +#define TRIGGER_GPS_CNT 10 -/*! - * FIFO buffers size - */ -//#define FIFO_TX_SIZE 128 -#define FIFO_RX_SIZE 128 - -//uint8_t TxBuffer[FIFO_TX_SIZE]; -uint8_t RxBuffer[FIFO_RX_SIZE]; - -#define TRIGGER_GPS_CNT 10 - -/* Various type of NMEA data we can receive with the UP501 */ +/* Various type of NMEA data we can receive with the Gps */ const char NmeaDataTypeGPGGA[] = "GPGGA"; const char NmeaDataTypeGPGSA[] = "GPGSA"; const char NmeaDataTypeGPGSV[] = "GPGSV"; const char NmeaDataTypeGPRMC[] = "GPRMC"; -/* Value used for the convertion of the postion from DMS to decimal */ +/* Value used for the conversion of the position from DMS to decimal */ const int32_t MaxNorthPosition = 8388607; // 2^23 - 1 const int32_t MaxSouthPosition = 8388608; // -2^23 const int32_t MaxEastPosition = 8388607; // 2^23 - 1 @@ -56,70 +46,40 @@ static uint16_t Altitude = 0xFFFF; static uint32_t PpsCnt = 0; -int8_t NmeaString[128]; -uint8_t NmeaStringSize = 0; - -void UartIrqNotify( UartNotifyId_t id ) -{ - uint8_t data; - if( id == UART_NOTIFY_RX ) - { - if( UartGetChar( &Uart1, &data ) == 0 ) - { - if( ( data == '$' ) || ( NmeaStringSize >= 128 ) ) - { - NmeaStringSize = 0; - } - - NmeaString[NmeaStringSize++] = ( int8_t )data; - - if( data == '\n' ) - { - NmeaString[NmeaStringSize] = '\0'; - UP501ParseGpsData( NmeaString, NmeaStringSize ); - UartDeInit( &Uart1 ); - BlockLowPowerDuringTask ( false ); - } - } - } -} +bool PpsDetected = false; -void UP501OnPpsSignal( void ) +void GpsPpsHandler( bool *parseData ) { + PpsDetected = true; PpsCnt++; -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin1, 0 ); - GpioWrite( &DbgPin1, 1 ); - GpioWrite( &DbgPin1, 0 ); -#endif + *parseData = false; + if( PpsCnt >= TRIGGER_GPS_CNT ) { PpsCnt = 0; -#if defined( USE_DEBUG_PINS ) - GpioWrite( &DbgPin2, 0 ); - GpioWrite( &DbgPin2, 1 ); - GpioWrite( &DbgPin2, 0 ); -#endif BlockLowPowerDuringTask ( true ); - UartInit( &Uart1, UART_1, UART_TX, UART_RX ); - UartConfig( &Uart1, RX_ONLY, 9600, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL ); + *parseData = true; } } -void UP501Init( void ) +void GpsInit( void ) { - NmeaStringSize = 0; - //FifoInit( &Uart1.FifoTx, TxBuffer, FIFO_TX_SIZE ); - FifoInit( &Uart1.FifoRx, RxBuffer, FIFO_RX_SIZE ); - Uart1.IrqNotify = UartIrqNotify; - -// GpioWrite( &GpsPowerEn, 1 ); // power down the GPS - GpioWrite( &GpsPowerEn, 0 ); // power up the GPS - GpioInit( &GpsPps, GPS_PPS, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); - GpioSetInterrupt( &GpsPps, IRQ_FALLING_EDGE, IRQ_VERY_LOW_PRIORITY, &UP501OnPpsSignal ); + PpsDetected = false; + GpsMcuInit( ); } -void UP501ConvertPositionIntoBinary( void ) +bool GpsGetPpsDetectedState( void ) +{ + bool state = false; + + __disable_irq( ); + state = PpsDetected; + PpsDetected = false; + __enable_irq( ); + return state; +} + +void GpsConvertPositionIntoBinary( void ) { long double temp; @@ -146,7 +106,7 @@ void UP501ConvertPositionIntoBinary( void ) } } -void UP501ConvertPositionFromStringToNumerical( void ) +void GpsConvertPositionFromStringToNumerical( void ) { int i; @@ -193,7 +153,7 @@ void UP501ConvertPositionFromStringToNumerical( void ) } -uint8_t UP501GetLatestGpsPositionDouble ( double *lati, double *longi ) +uint8_t GpsGetLatestGpsPositionDouble ( double *lati, double *longi ) { if( ( Latitude != 0 ) || ( Longitude != 0 ) ) { @@ -207,24 +167,29 @@ uint8_t UP501GetLatestGpsPositionDouble ( double *lati, double *longi ) } } -uint8_t UP501GetLatestGpsPositionBinary ( int32_t *latiBin, int32_t *longiBin ) +uint8_t GpsGetLatestGpsPositionBinary ( int32_t *latiBin, int32_t *longiBin ) { + __disable_irq( ); if( ( Latitude != 0 ) || ( Longitude != 0 ) ) { *latiBin = LatitudeBinary; *longiBin = LongitudeBinary; + __enable_irq( ); return SUCCESS; } else { *latiBin = 0; *longiBin = 0; + __enable_irq( ); return FAIL; } + } -uint16_t UP501GetLatestGpsAltitude (void) +uint16_t GpsGetLatestGpsAltitude (void) { + __disable_irq( ); if( ( Latitude != 0 ) || ( Longitude != 0 ) ) { Altitude = atoi( NmeaGpsData.NmeaAltitude ); @@ -233,51 +198,52 @@ uint16_t UP501GetLatestGpsAltitude (void) { Altitude = 0xFFFF; } - + __enable_irq( ); + return Altitude; } /*! - * Calculate the checksum for a NMEA string + * Calculates the checksum for a NMEA sentence * * Skip the first '$' if necessary and calculate checksum until '*' character is * reached (or buffSize exceeded). * - * \retval chkPosIdx Position of the checksum in the string + * \retval chkPosIdx Position of the checksum in the sentence */ -int32_t UP501NmeaChecksum( int8_t *nmeaStr, int32_t nmeaStrSize, int8_t * checksum ) +int32_t GpsNmeaChecksum( int8_t *nmeaStr, int32_t nmeaStrSize, int8_t * checksum ) { - int i = 0; - uint8_t checkNum = 0; + int i = 0; + uint8_t checkNum = 0; - // Check input parameters - if( ( nmeaStr == NULL ) || ( checksum == NULL ) || ( nmeaStrSize <= 1 ) ) + // Check input parameters + if( ( nmeaStr == NULL ) || ( checksum == NULL ) || ( nmeaStrSize <= 1 ) ) { - return -1; - } + return -1; + } - // Skip the first '$' if necessary - if( nmeaStr[i] == '$' ) + // Skip the first '$' if necessary + if( nmeaStr[i] == '$' ) { - i += 1; - } + i += 1; + } - // XOR until '*' or max length is reached - while( nmeaStr[i] != '*' ) + // XOR until '*' or max length is reached + while( nmeaStr[i] != '*' ) { - checkNum ^= nmeaStr[i]; - i += 1; - if( i >= nmeaStrSize ) + checkNum ^= nmeaStr[i]; + i += 1; + if( i >= nmeaStrSize ) { - return -1; - } - } + return -1; + } + } - // Convert checksum value to 2 hexadecimal characters - checksum[0] = Nibble2HexChar( checkNum / 16 ); // upper nibble - checksum[1] = Nibble2HexChar( checkNum % 16 ); // lower nibble + // Convert checksum value to 2 hexadecimal characters + checksum[0] = Nibble2HexChar( checkNum / 16 ); // upper nibble + checksum[1] = Nibble2HexChar( checkNum % 16 ); // lower nibble - return i + 1; + return i + 1; } /*! @@ -285,37 +251,37 @@ int32_t UP501NmeaChecksum( int8_t *nmeaStr, int32_t nmeaStrSize, int8_t * checks * present at the end of it. * Return true if it matches */ -static bool UP501NmeaValidateChecksum( int8_t *serialBuff, int32_t buffSize ) +static bool GpsNmeaValidateChecksum( int8_t *serialBuff, int32_t buffSize ) { - int32_t checksumIndex; - int8_t checksum[2]; // 2 characters to calculate NMEA checksum + int32_t checksumIndex; + int8_t checksum[2]; // 2 characters to calculate NMEA checksum - checksumIndex = UP501NmeaChecksum( serialBuff, buffSize, checksum ); + checksumIndex = GpsNmeaChecksum( serialBuff, buffSize, checksum ); - // could we calculate a verification checksum ? - if( checksumIndex < 0 ) + // could we calculate a verification checksum ? + if( checksumIndex < 0 ) { - return false; - } + return false; + } - // check if there are enough char in the serial buffer to read checksum - if( checksumIndex >= ( buffSize - 2 ) ) + // check if there are enough char in the serial buffer to read checksum + if( checksumIndex >= ( buffSize - 2 ) ) { - return false; - } + return false; + } - // check the checksum per se - if( ( serialBuff[checksumIndex] == checksum[0] ) && ( serialBuff[checksumIndex + 1] == checksum[1] ) ) + // check the checksum + if( ( serialBuff[checksumIndex] == checksum[0] ) && ( serialBuff[checksumIndex + 1] == checksum[1] ) ) { - return true; - } + return true; + } else { - return false; - } + return false; + } } -uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) +uint8_t GpsParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) { uint8_t i = 1; uint8_t j = 0; @@ -326,16 +292,18 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) return FAIL; } - if( UP501NmeaValidateChecksum( rxBuffer, rxBufferSize ) == false ) + if( GpsNmeaValidateChecksum( rxBuffer, rxBufferSize ) == false ) { return FAIL; } fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 6 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 6 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -346,10 +314,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) { // NmeaUtcTime fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 11 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 11 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -357,10 +327,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLatitude fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 10 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 10 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -368,10 +340,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLatitudePole fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -379,10 +353,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLongitude fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 11 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 11 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -390,10 +366,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLongitudePole fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -401,10 +379,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaFixQuality fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -412,10 +392,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaSatelliteTracked fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 3 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 3 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -423,10 +405,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaHorizontalDilution fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 6 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 6 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -434,10 +418,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaAltitude fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 8 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 8 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -445,10 +431,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaAltitudeUnit fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -456,10 +444,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaHeightGeoid fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 8 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 8 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -467,27 +457,31 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaHeightGeoidUnit fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { NmeaGpsData.NmeaHeightGeoidUnit[j] = rxBuffer[i]; } - UP501FormatGpsData( ); + GpsFormatGpsData( ); return SUCCESS; } else if ( strncmp( ( const char* )NmeaGpsData.NmeaDataType, ( const char* )NmeaDataTypeGPRMC, 5 ) == 0 ) { // NmeaUtcTime fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 11 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 11 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -495,10 +489,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaDataStatus fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -506,10 +502,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLatitude fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 10 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 10 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -517,10 +515,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLatitudePole fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -528,10 +528,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLongitude fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 11 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 11 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -539,10 +541,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaLongitudePole fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 2 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 2 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -550,10 +554,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaSpeed fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 8 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 8 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -561,10 +567,12 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaDetectionAngle fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 8 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 8 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { @@ -572,17 +580,19 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } // NmeaDate fieldSize = 0; - while( rxBuffer[i + fieldSize++] != ',' ); - if( fieldSize > 8 ) + while( rxBuffer[i + fieldSize++] != ',' ) { - return FAIL; + if( fieldSize > 8 ) + { + return FAIL; + } } for( j = 0; j < fieldSize; j++, i++ ) { NmeaGpsData.NmeaDate[j] = rxBuffer[i]; } - UP501FormatGpsData( ); + GpsFormatGpsData( ); return SUCCESS; } else @@ -591,13 +601,13 @@ uint8_t UP501ParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ) } } -void UP501FormatGpsData( void ) +void GpsFormatGpsData( void ) { - UP501ConvertPositionFromStringToNumerical( ); - UP501ConvertPositionIntoBinary( ); + GpsConvertPositionFromStringToNumerical( ); + GpsConvertPositionIntoBinary( ); } -void UP501ResetPosition( void ) +void GpsResetPosition( void ) { Altitude = 0xFFFF; Latitude = 0; diff --git a/src/system/gps.h b/src/system/gps.h new file mode 100644 index 000000000..f7ccbd7a7 --- /dev/null +++ b/src/system/gps.h @@ -0,0 +1,122 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + +Description: Generic driver for the GPS receiver UP501 + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis and Gregory Cristian +*/ +#ifndef __GPS_H__ +#define __GPS_H__ + +/* Structure to handle the GPS parsed data in ASCII */ +typedef struct +{ + char NmeaDataType[6]; + char NmeaUtcTime[11]; + char NmeaDataStatus[2]; + char NmeaLatitude[10]; + char NmeaLatitudePole[2]; + char NmeaLongitude[11]; + char NmeaLongitudePole[2]; + char NmeaFixQuality[2]; + char NmeaSatelliteTracked[3]; + char NmeaHorizontalDilution[6]; + char NmeaAltitude[8]; + char NmeaAltitudeUnit[2]; + char NmeaHeightGeoid[8]; + char NmeaHeightGeoidUnit[2]; + char NmeaSpeed[8]; + char NmeaDetectionAngle[8]; + char NmeaDate[8]; +}tNmeaGpsData; + +extern tNmeaGpsData NmeaGpsData; + +/*! + * \brief Initializes the handling of the GPS receiver + */ +void GpsInit( void ); + +/*! + * \brief PPS signal handling function + */ +void GpsPpsHandler( bool *parseData ); + +/*! + * \brief PPS signal handling function + * + * \retval ppsDetected State of PPS signal. + */ +bool GpsGetPpsDetectedState( void ); + +/*! + * \brief Converts the latest Position (latitude and longitude) into a binary + * number + */ +void GpsConvertPositionIntoBinary( void ); + +/*! + * \brief Converts the latest Position (latitude and Longitude) from ASCII into + * DMS numerical format + */ +void GpsConvertPositionFromStringToNumerical( void ); + +/*! + * \brief Gets the latest Position (latitude and Longitude) as two double values + * if available + * + * \param [OUT] lati Latitude value + * \param [OUT] longi Longitude value + * + * \retval status [SUCCESS, FAIL] + */ +uint8_t GpsGetLatestGpsPositionDouble ( double *lati, double *longi ); + +/*! + * \brief Gets the latest Position (latitude and Longitude) as two binary values + * if available + * + * \param [OUT] latiBin Latitude value + * \param [OUT] longiBin Longitude value + * + * \retval status [SUCCESS, FAIL] + */ +uint8_t GpsGetLatestGpsPositionBinary ( int32_t *latiBin, int32_t *longiBin ); + +/*! + * \brief Parses the NMEA sentence. + * + * \remark Only parses GPGGA and GPRMC sentences + * + * \param [IN] rxBuffer Data buffer to be parsed + * \param [IN] rxBufferSize Size of data buffer + * + * \retval status [SUCCESS, FAIL] + */ +uint8_t GpsParseGpsData( int8_t *rxBuffer, int32_t rxBufferSize ); + +/*! + * \brief Returns the latest altitude from the parsed NMEA sentence + * + * \retval altitude + */ +uint16_t GpsGetLatestGpsAltitude (void); + +/*! + * \brief Format GPS data into numeric and binary formats + */ +void GpsFormatGpsData( void ); + +/*! + * \brief Resets the GPS position variables + */ +void GpsResetPosition( void ); + +#endif // __GPS_H__ diff --git a/src/system/i2c.c b/src/system/i2c.c index 290bf0824..7d32dd849 100644 --- a/src/system/i2c.c +++ b/src/system/i2c.c @@ -49,7 +49,7 @@ uint8_t I2cWrite( I2c_t *obj, uint8_t deviceAddress, uint8_t registerAddress, ui { if( I2cMcuWriteBuffer( obj, deviceAddress, registerAddress, data, 1 ) == FAIL ) { - // if first attemp fail due to an IRQ, try a second time + // if first attempt fails due to an IRQ, try a second time if( I2cMcuWriteBuffer( obj, deviceAddress, registerAddress, data, 1 ) == FAIL ) { return FAIL; @@ -76,7 +76,7 @@ uint8_t I2cWriteBuffer( I2c_t *obj, uint8_t deviceAddress, uint8_t registerAddre { if( I2cMcuWriteBuffer( obj, deviceAddress, registerAddress, data, size ) == FAIL ) { - // if first attemp fail due to an IRQ, try a second time + // if first attempt fails due to an IRQ, try a second time if( I2cMcuWriteBuffer( obj, deviceAddress, registerAddress, data, size ) == FAIL ) { return FAIL; diff --git a/src/system/i2c.h b/src/system/i2c.h index 4825b0b37..617e0ef53 100644 --- a/src/system/i2c.h +++ b/src/system/i2c.h @@ -90,5 +90,4 @@ uint8_t I2cRead( I2c_t *obj, uint8_t deviceAddress, uint8_t registerAddress, uin */ uint8_t I2cReadBuffer( I2c_t *obj, uint8_t deviceAddress, uint8_t registerAddress, uint8_t *data, uint8_t size ); - #endif // __I2C_H__ diff --git a/src/system/spi.h b/src/system/spi.h index 7ba8f5309..2f3317cd5 100644 --- a/src/system/spi.h +++ b/src/system/spi.h @@ -57,7 +57,7 @@ void SpiDeInit( Spi_t *obj ); void SpiFormat( Spi_t *obj, int8_t bits, int8_t cpol, int8_t cpha, int8_t slave ); /*! - * \brief + * \brief Sets the SPI speed * * \param [IN] obj SPI object * \param [IN] hz SPI clock frequency in hz diff --git a/src/system/timer.c b/src/system/timer.c index dbfd1efcf..33db82eae 100644 --- a/src/system/timer.c +++ b/src/system/timer.c @@ -33,9 +33,9 @@ static TimerEvent_t *TimerListHead = NULL; * next timer to expire. * * \param [IN] obj Timer object to be become the new head - * \param [IN] remainingTime Remaining time of the pevious head to be replaced + * \param [IN] remainingTime Remaining time of the previous head to be replaced */ -void TimerInsertNewHeadTimer( TimerEvent_t *obj, uint32_t remainingTime ); +static void TimerInsertNewHeadTimer( TimerEvent_t *obj, uint32_t remainingTime ); /*! * \brief Adds a timer to the list. @@ -46,7 +46,7 @@ void TimerInsertNewHeadTimer( TimerEvent_t *obj, uint32_t remainingTime ); * \param [IN] obj Timer object to be added to the list * \param [IN] remainingTime Remaining time of the running head after which the object may be added */ -void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ); +static void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ); /*! * \brief Sets a timeout with the duration "timestamp" @@ -55,6 +55,14 @@ void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ); */ static void TimerSetTimeout( TimerEvent_t *obj ); +/*! + * \brief Check if the Object to be added is not already in the list + * + * \param [IN] timestamp Delay duration + * \retval [out] true (the object is already in the list) or false + */ +static bool TimerExists( TimerEvent_t *obj ); + /*! * \brief Read the timer value of the currently running timer */ @@ -67,6 +75,7 @@ void TimerInit( TimerEvent_t *obj, void ( *callback )( void ) ) obj->ReloadValue = 0; obj->IsRunning = false; obj->Callback = callback; + obj->Next = NULL; } void TimerStart( TimerEvent_t *obj ) @@ -76,8 +85,9 @@ void TimerStart( TimerEvent_t *obj ) __disable_irq( ); - if( obj == NULL ) + if( ( obj == NULL ) || ( TimerExists( obj ) == true ) ) { + __enable_irq( ); return; } @@ -116,7 +126,7 @@ void TimerStart( TimerEvent_t *obj ) __enable_irq( ); } -void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ) +static void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ) { uint32_t aggregatedTimestamp = 0; // hold the sum of timestamps uint32_t aggregatedTimestampNext = 0; // hold the sum of timestamps up to the next event @@ -170,7 +180,7 @@ void TimerInsertTimer( TimerEvent_t *obj, uint32_t remainingTime ) } } -void TimerInsertNewHeadTimer( TimerEvent_t *obj, uint32_t remainingTime ) +static void TimerInsertNewHeadTimer( TimerEvent_t *obj, uint32_t remainingTime ) { TimerEvent_t* cur = TimerListHead; @@ -251,12 +261,13 @@ void TimerStop( TimerEvent_t *obj ) // List is empty or the Obj to stop does not exist if( ( TimerListHead == NULL ) || ( obj == NULL ) ) { + __enable_irq( ); return; } - if( TimerListHead == obj ) // Stop the Head + if( TimerListHead == obj ) // Stop the Head { - if( TimerListHead->IsRunning == true ) // The head is already running + if( TimerListHead->IsRunning == true ) // The head is already running { elapsedTime = TimerGetValue( ); if( elapsedTime > obj->Timestamp ) @@ -279,7 +290,7 @@ void TimerStop( TimerEvent_t *obj ) TimerListHead = NULL; } } - else // Stop the head before it is started + else // Stop the head before it is started { if( TimerListHead->Next != NULL ) { @@ -293,7 +304,7 @@ void TimerStop( TimerEvent_t *obj ) } } } - else // Stop an object within the list + else // Stop an object within the list { remainingTime = obj->Timestamp; @@ -324,6 +335,21 @@ void TimerStop( TimerEvent_t *obj ) __enable_irq( ); } +static bool TimerExists( TimerEvent_t *obj ) +{ + TimerEvent_t* cur = TimerListHead; + + while( cur != NULL ) + { + if( cur == obj ) + { + return true; + } + cur = cur->Next; + } + return false; +} + void TimerReset( TimerEvent_t *obj ) { TimerStop( obj ); diff --git a/src/system/timer.h b/src/system/timer.h index 20e9dcb40..2936ea31b 100644 --- a/src/system/timer.h +++ b/src/system/timer.h @@ -31,7 +31,7 @@ typedef struct TimerEvent_s * \brief Initializes the timer object * * \remark TimerSetValue function must be called before starting the timer. - * this function initializes Timestamp and ReloadValue at 0. + * this function initializes timestamp and reload value at 0. * * \param [IN] obj Structure containing the timer object parameters * \param [IN] callback Function callback called at the end of the timeout diff --git a/src/system/uart.c b/src/system/uart.c index d70dac7a6..ecf83d9f6 100644 --- a/src/system/uart.c +++ b/src/system/uart.c @@ -6,7 +6,7 @@ (______/|_____)_|_|_| \__)_____)\____)_| |_| (C)2013 Semtech -Description: Uart basic implementation +Description: Implements the generic UART driver License: Revised BSD License, see LICENSE.TXT file include in the project @@ -14,6 +14,9 @@ Maintainer: Miguel Luis and Gregory Cristian */ #include "board.h" #include "uart-board.h" +#if defined( USE_USB_CDC ) +#include "uart-usb-board.h" +#endif #include "uart.h" @@ -29,7 +32,16 @@ void UartInit( Uart_t *obj, uint8_t uartId, PinNames tx, PinNames rx ) { obj->IsInitialized = true; - UartMcuInit( obj, uartId, tx, rx ); + if( uartId == UART_USB_CDC ) + { +#if defined( USE_USB_CDC ) + UartUsbInit( obj, uartId, NC, NC ); +#endif + } + else + { + UartMcuInit( obj, uartId, tx, rx ); + } } } @@ -40,23 +52,63 @@ void UartConfig( Uart_t *obj, UartMode_t mode, uint32_t baudrate, WordLength_t w // UartInit function must be called first. while( 1 ); } - UartMcuConfig( obj, mode, baudrate, wordLength, stopBits, parity, flowCtrl ); + if( obj->UartId == UART_USB_CDC ) + { +#if defined( USE_USB_CDC ) + UartUsbConfig( obj, mode, baudrate, wordLength, stopBits, parity, flowCtrl ); +#endif + } + else + { + UartMcuConfig( obj, mode, baudrate, wordLength, stopBits, parity, flowCtrl ); + } } void UartDeInit( Uart_t *obj ) { obj->IsInitialized = false; - UartMcuDeInit( obj ); + if( obj->UartId == UART_USB_CDC ) + { +#if defined( USE_USB_CDC ) + UartUsbDeInit( obj ); +#endif + } + else + { + UartMcuDeInit( obj ); + } } uint8_t UartPutChar( Uart_t *obj, uint8_t data ) { - return UartMcuPutChar( obj, data ); + if( obj->UartId == UART_USB_CDC ) + { +#if defined( USE_USB_CDC ) + return UartUsbPutChar( obj, data ); +#else + return 255; // Not supported +#endif + } + else + { + return UartMcuPutChar( obj, data ); + } } uint8_t UartGetChar( Uart_t *obj, uint8_t *data ) { - return UartMcuGetChar( obj, data ); + if( obj->UartId == UART_USB_CDC ) + { +#if defined( USE_USB_CDC ) + return UartUsbGetChar( obj, data ); +#else + return 255; // Not supported +#endif + } + else + { + return UartMcuGetChar( obj, data ); + } } uint8_t UartPutBuffer( Uart_t *obj, uint8_t *buffer, uint16_t size ) diff --git a/src/system/uart.h b/src/system/uart.h index 8d31087ff..b8a51d5cd 100644 --- a/src/system/uart.h +++ b/src/system/uart.h @@ -17,6 +17,9 @@ Maintainer: Miguel Luis and Gregory Cristian #include "fifo.h" +/*! + * UART notification identifier + */ typedef enum { UART_NOTIFY_TX,