From a173bde68b7ce0b4b285e82c1433c49c4c76dc83 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Sat, 21 Aug 2021 13:23:51 -0700 Subject: [PATCH] Initial implementation of SRXE board and blinky example --- .github/workflows/linux.yml | 2 +- README.md | 1 + examples/srxe/blink/main.cpp | 24 +++++++++++++++ examples/srxe/blink/project.xml | 9 ++++++ src/modm/board/srxe/board.hpp | 45 +++++++++++++++++++++++++++ src/modm/board/srxe/board.xml | 15 +++++++++ src/modm/board/srxe/module.lb | 51 +++++++++++++++++++++++++++++++ tools/scripts/synchronize_docs.py | 1 + 8 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 examples/srxe/blink/main.cpp create mode 100644 examples/srxe/blink/project.xml create mode 100644 src/modm/board/srxe/board.hpp create mode 100644 src/modm/board/srxe/board.xml create mode 100644 src/modm/board/srxe/module.lb diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index a5452548cc..6722d31c22 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -176,7 +176,7 @@ jobs: - name: Examples AVR Series if: always() run: | - (cd examples && ../tools/scripts/examples_compile.py avr arduino_uno arduino_nano) + (cd examples && ../tools/scripts/examples_compile.py avr arduino_uno arduino_nano srxe) - name: Compile AVR Unittests AT90CAN if: always() run: | diff --git a/README.md b/README.md index 4d7b50d39b..93364df869 100644 --- a/README.md +++ b/README.md @@ -525,6 +525,7 @@ We have out-of-box support for many development boards including documentation. STM32-F4VE STM32F030-DEMO +Smart Response XE diff --git a/examples/srxe/blink/main.cpp b/examples/srxe/blink/main.cpp new file mode 100644 index 0000000000..f9c7723690 --- /dev/null +++ b/examples/srxe/blink/main.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2021, Tomasz Wasilczyk + * + * This file is part of the modm project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +// ---------------------------------------------------------------------------- + +#include + +int +main() +{ + Board::initialize(); + + while (true) + { + Board::LedDebug::toggle(); + modm::delay(1s); + } +} diff --git a/examples/srxe/blink/project.xml b/examples/srxe/blink/project.xml new file mode 100644 index 0000000000..5b21e4583c --- /dev/null +++ b/examples/srxe/blink/project.xml @@ -0,0 +1,9 @@ + + modm:srxe + + + + + modm:build:scons + + diff --git a/src/modm/board/srxe/board.hpp b/src/modm/board/srxe/board.hpp new file mode 100644 index 0000000000..aabd12dac7 --- /dev/null +++ b/src/modm/board/srxe/board.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2021, Tomasz Wasilczyk + * + * This file is part of the modm project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +// ---------------------------------------------------------------------------- + +#pragma once + +#include + +using namespace modm::platform; + +/// @ingroup modm_board_srxe +namespace Board { + +using namespace modm::literals; + +using SystemClock = modm::platform::SystemClock; + +using LedDebug = GpioB0; +using Leds = SoftwareGpioPort; + +namespace Display { + +using DC = GpioD6; +using CS = GpioE7; +using RST = GpioG2; + +} // namespace Display + +inline void +initialize() { + SystemClock::enable(); + + LedDebug::setOutput(); + + enableInterrupts(); +} + +} // namespace Board diff --git a/src/modm/board/srxe/board.xml b/src/modm/board/srxe/board.xml new file mode 100644 index 0000000000..1cf458ea1f --- /dev/null +++ b/src/modm/board/srxe/board.xml @@ -0,0 +1,15 @@ + + + + ../../../../repo.lb + + + + + + + + + modm:board:srxe + + diff --git a/src/modm/board/srxe/module.lb b/src/modm/board/srxe/module.lb new file mode 100644 index 0000000000..7519d18efd --- /dev/null +++ b/src/modm/board/srxe/module.lb @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Copyright (c) 2021, Tomasz Wasilczyk +# +# This file is part of the modm project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# ----------------------------------------------------------------------------- + +def init(module): + module.name = ":board:srxe" + module.description = """ +# Smart Response XE + +Smart Response XE is an obsolete classroom clicker, sold for as little as 5 USD on well known online auction site. +It's a compelling platform that's fully reverse engineered and ready to hack out of box, featuring: + - ATmega128RFA1 MCU + - 384x160 LCD display + - QWERTY keyboard + - External 1M SPI flash + - Exposed ISP and JTAG headers + - ZigBee transciever w/ antennas + - Powered by 4 AAA batteries + - Optional (unpopulated): + - RS232 + - Debug LED + - Buzzer + - Accelerometer +""" + +def prepare(module, options): + if not options[":target"].partname.startswith("atmega128rfa1"): + return False + + module.depends( + ":architecture:clock", + ":architecture:interrupt", + ":debug", + ":platform:clock", + ":platform:core", + ":platform:gpio", + ":platform:uart:0") + return True + +def build(env): + env.outbasepath = "modm/src/modm/board" + env.copy('.') + env.collect(":build:default.avrdude.programmer", "usbasp"); diff --git a/tools/scripts/synchronize_docs.py b/tools/scripts/synchronize_docs.py index 23db3c7ff2..ca92ae0bca 100755 --- a/tools/scripts/synchronize_docs.py +++ b/tools/scripts/synchronize_docs.py @@ -52,6 +52,7 @@ def name(raw_name): .replace("ARDUINO-UNO", "Arduino UNO")\ .replace("ARDUINO-NANO", "Arduino NANO")\ .replace("RASPBERRYPI", "Raspberry Pi")\ + .replace("SRXE", "Smart Response XE")\ .replace("GENERIC", "Generic")\ .replace("LINUX", "Linux")\ .replace("WINDOWS", "Windows")\