Commit Graph

21 Commits

Author SHA1 Message Date
Scott Allen 30fb448db5 Make lcdBootProgram[] a member of Arduboy2Core
The lcdBootProgram[] array, containing the commands to initialize
the OLED display, isn't considered to be part of the API.
To enforce this, and to avoid the possibility of conflicts from
other code using the same name, it has been changed from being a
global variable to a protected member of the Arduboy2Core class.
2020-07-25 18:38:04 -04:00
Scott Allen a04edf24c1 Move mainNoUSB() to its own class
Suggested and developed by @Pharap

The mainNoUSB() function was never intended to be used directly in
sketches. To help prevent this, it has been made a private member of
a new class, Arduboy2NoUSB, which declares main() as a friend.

The ARDUBOY_NO_USB macro has been modified appropriately.

The Arduboy2Core class now inherits Arduboy2NoUSB, for sketches that
improperly have their own main() which calls the old version of
mainNoUSB() instead of using the ARDUBOY_NO_USB macro.
2020-07-25 18:38:04 -04:00
Scott Allen 53096d87bf Refactor API code. Clarify and enhance user docs.
Includes some suggestions and guidance by @Pharap

API:
- Rename non-API function swap() to swapInt16()
- Make swapInt16(), drawCircleHelper(), fillCircleHelper() and
  struct BitStreamReader protected members of Arduboy2Base
- Add #define ARDUBOY_UNIT_NAME_BUFFER_SIZE for the size of a buffer
  to hold a Unit Name
- Move the position of the PROGMEM keyword for lcdBootProgram[]
  for consistency

Documentation:
- Remove absolute values referring to a Unit Name
- More details relating to the use of the Unit Name
- More details relating to the font and text functions
- Other minor documentation changes and spelling corrections
2020-07-24 17:15:13 -04:00
Scott Allen b854e2295f Make "static" the first keyword, for consistency
Suggested by @Pharap
2020-07-20 19:19:50 -04:00
Pharap a31e5091d6
Make width and height constexpr
This allows these functions to be used as constant expressions.
2019-05-31 06:38:43 +01:00
Pharap 1d49ce5df8 Move avr/wdt.h include to cpp file 2018-11-13 12:20:14 -05:00
Pharap 54d47ec04e
Remove unncessary limits.h includes 2018-09-03 07:37:16 +01:00
Scott Allen c00fee0a78 Add the ability to eliminate the USB stack code
Macro ARDUBOY_NO_USB will provide a substitute main() which will cause
the compiler to leave out the USB code. The macro also adds a check
for the DOWN button being pressed and, if so, will call the new
exitToBootloader() function.

New function exitToBootloader() will invoke the bootloader in command
mode, similar to pressing reset.
2018-03-11 05:40:44 -04:00
Scott Allen fb77929126 Refactor setRGBled() and add freeRGBled()
- setRGBled() has been rewritten to directly control the hardware
  instead of using the Arduino analogWrite() function.

- Added a two parameter version of setRGBled() that sets the brightness
  of one LED without affecting the others.

- Added function freeRGBled() for freeing the PWM control of the LEDs
  so they can be used digitally.

- Added example sketch RGBled.
2018-03-11 05:40:44 -04:00
Mr.Blinky 4788b1ab01 Refactor buttonsState()
By @MrBlinky
With some source code formatting and cleanup by @MLXXXp (Scott Allen).
2018-03-11 05:39:57 -04:00
Scott Allen ab1a7b3bdd Add delayShort() function
Same as Arduino delay() except takes a 16 bit value.
Mainly added to save some code in the library but can be used by
sketches for the same purpose.

Also changed a delay in bootLogoText() to match a previous change in
bootLogo()
2017-04-25 15:36:42 -04:00
Scott Allen fc61d180d9 Add displayOff() and displayOn() functions
displayOff() puts the display in low power mode.
displayOn() re-initializes the display after displayOff() is used.

The SPI initialization code was separated from the display
initialization code to facilitate the new functions.
2017-04-25 15:36:42 -04:00
Scott Allen 9bfb499169 Remove "inline" keywords and attributes
Optimization done by the compiler makes these unnecessary.
2017-04-25 15:36:42 -04:00
Scott Allen cfb5e89d5c Simplify initRandomSeed() to reduce code size
Use only an ADC reading from an unconnected pin shifted left 16 bits
then added to micros().
2017-04-25 15:36:42 -04:00
Scott Allen f294a045e0 Fix flashlight() and safeMode() for boot problem
- Timer 0 is disabled in flashlight() and safeMode() in case its
  variables overlap the bootloader "magic key" location.
- Flashlight mode never exits if invoked.
- Made safeMode() public for use as a smaller code size alternative
  to flashlight().
2017-04-25 15:36:42 -04:00
Scott Allen 1e7f251ce0 Direct control of ports and pins
This eliminates calls to pinMode(), digitalWrite(), functions to
initialize hardware, etc.

New 2 parameter version of digitalWriteRGB() added, which sets an
individual RGB LED on or off digitally.

New function SPItransfer() added to replace Arduino SPI.transfer().
2017-04-25 15:36:42 -04:00
Scott Allen 3e82f484a2 Add missing "details" keyword to Doxygen comments
Also add missing angle brackets around email address in library.properties
2017-02-06 18:09:50 -05:00
Scott Allen e5a7dc5982 Declare friend class Arduboy2Ex
A friend class named Arduboy2Ex is declared by the Arduboy2 classes.
The intention is to allow a sketch to create an Arduboy2Ex class which would
have access to the private and protected members of the Arduboy2 classes.
It is hoped that this may eliminate the need to create an entire local copy
of the library, in order to extend the functionality, in most circumstances.
2016-11-24 14:51:45 -05:00
Scott Allen 0b0c111757 Add clear option to display() and paintScreen()
Also remove some trailing whitespace
2016-11-24 14:51:45 -05:00
Scott Allen d89a2bd590 Improve embedded Doxygen documentation 2016-11-24 14:51:22 -05:00
Scott Allen 867f2d000c Rename Arduboy... classes to Arduboy2...
Change ArduboyCore to Arduboy2Core and ArduboyAudio to Arduboy2Audio
Rename files accordingly
Change version to 3.0.0
2016-11-21 16:29:46 -05:00
Renamed from src/ArduboyCore.h (Browse further)