Commit graph

262 commits

Author SHA1 Message Date
Marti Bolivar
ad33982885 wirish: Clean up includes; other fixups.
Clean up various core files' includes to fit this pattern:

- Header files include what they use.
- CPP files include their header first
- Include order is libmaple proper headers, then wirish
  headers (modulo CPP rule above).

wirish.h: Move HIGH and LOW to io.h, and the boolean and byte typedefs
into wirish_types.h. These don't belong in wirish.h.

Add include guards to wirish_debug.h. Oops.

wirish_digital.cpp: Use standard bool instead of "boolean".

Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
2011-10-18 15:12:21 -04:00
Marti Bolivar
494f05b236 usb: Disentangle CDC ACM functionality.
Add new usb_cdcacm.h, which provides the virtual serial port API.
This file (and new usb_cdcacm.c) consolidate the VCOM support, which
was previously distributed through descriptors.[hc], usb.[hc],
usb_callbacks.[hc], and usb_config.h.

Add usb_init_usblib() to usb.h, as a way of initializing the USB
peripheral in terms of the data structures required by usb_lib.  This
is used by the new usb_cdcacm_enable().

Create new usb_lib_globals.h, with declarations for the usb_lib global
state which is most used throughout the rest of the libmaple USB stack.

Remove descriptors.c and usb_callbacks.[hc]; they are no longer
necessary.

Update the USB README accordingly.

Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
2011-10-18 13:30:18 -04:00
Marti Bolivar
17e67dff76 usb: Cleanups and renames.
Rename setupUSB() and disableUSB() to usb_cdcacm_enable() and
usb_cdcacm_disable(), respectively.

Remove usbSendHello(). This shouldn't exist.

Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
2011-10-18 13:30:17 -04:00
Marti Bolivar
545aae4459 usb: Move some board-specific configuration to Wirish.
Create new BOARD_USB_DISC_DEV and BOARD_USB_DISC_BIT board-specific
values.  Use these as arguments to setupUSB() and disableUSB().  This
helps make the USB stack more generic, and goes towards the resolution
of an important FIXME.

Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
2011-10-18 13:30:17 -04:00
David Kiliani
1873871aea Add support for the Olimex STM32 H103 board.
Pin layout and header files for the STM32 H103 prototype board from
Olimex featuring an STM32F103RBT6 chip. This commit contains all
necessary changes to compile with BOARD=olimex_stm32_h103.

Signed-off-by: David Kiliani <mail@davidkiliani.de>
2011-09-27 16:44:53 -04:00
Marti Bolivar
0697f5d0d6 maple_native.cpp: Cosmetics.
Stick FSMC_BCR_MTYP_SRAM among the bitfields assigned to the BCR
write.  Technically not necessary (SRAM is the default after reset),
but good for readability and future-proofing.
2011-09-12 21:29:50 -04:00
Marti Bolivar
626e4e06f0 Maple Native: Fix BOARD_NR_USED_PINS, boardUsedPins. 2011-09-09 15:33:11 -04:00
Marti Bolivar
aad2377ae3 Update outdated stm32.h usages.
stm32.h has been updated to prefix its definitions.  Update the rest
of libmaple to take this into account.
2011-09-07 23:34:23 -04:00
Marti Bolivar
4a98ddaccb wirish/boards: Move includes into .cpp files.
The headers just #define some numbers, so there's no need for them to
be including libmaple headers.
2011-09-01 09:38:39 -04:00
Marti Bolivar
d349f7cd6b maple_native.cpp: Add FSMC FIXME to resolve for 0.0.12. 2011-09-01 09:35:11 -04:00
Marti Bolivar
1769ba3a05 maple-native.cpp: Comment tweak.
First in what is sure to be a long series of efforts in educating
people that you can have GPIOs 56--100 or the SRAM chip, but not both.
2011-08-31 15:32:29 -04:00
Marti Bolivar
15b9adcf66 maple_native.cpp: mark initSRAMChip() static. 2011-08-31 15:00:54 -04:00
Marti Bolivar
d055e99a9f maple_native.h: Fix USART pins.
These apparently didn't get updated from an earlier prototype's
values.
2011-08-30 18:16:00 -04:00
Marti Bolivar
b1b71c5e09 HardwareSerial.h: Remove documentation TODO.
It's difficult to document HardwareSerial's interface fully in
HardwareSerial.h, since most of the methods people care about are
inherited from Print, anyway.  Stick with documenting this interface
by hand for the foreseeable future.
2011-08-16 06:13:48 -04:00
Marti Bolivar
8a3aa2a29b HardwareSerial.cpp: Respect PCLK1 and PCLK2. 2011-08-16 06:13:48 -04:00
Marti Bolivar
fcb4afcd50 HardwareSerial: Add pin accessors. 2011-08-16 06:13:48 -04:00
Marti Bolivar
96c474d94b HardwareSerial: trivial code reordering 2011-08-16 06:13:48 -04:00
Marti Bolivar
5710942d83 HardwareSPI.cpp: minor HardwareSPI::send() cleanup. 2011-08-16 06:13:48 -04:00
Marti Bolivar
e1c0b0cfee HardwareSPI: Add pin accessors. 2011-08-16 06:13:41 -04:00
Marti Bolivar
ab8d721c05 HardwareTimer.cpp: fix HardwareTimer::setPeriod() 2011-06-14 16:35:10 -04:00
Marti Bolivar
f36a1d9849 Remove reST documentation, attendant updates.
The documentation covers topics not specifically relevant to libmaple,
so it doesn't make sense for it to be part of the libmaple source
distribution.

Delete the docs/ tree, and prepare libmaple for use with the new
leaflabs-docs repo, which will contain the docs from now on.

* README: update to reflect this change

* support/doxygen/Doxyfile: This is the old docs/Doxyfile

* Makefile: Add a doxygen target

* wirish/comm/HardwareSerial.h: fix reference to docs/.  The comment
  informing maintainers that the HardwareSerial interface is
  documented by hand refers to the docs/ tree, which no longer exists.
  Update it to refer to the separate leaflabs-docs repository.

* support/scripts/copy-to-ide: No longer build the documentation
2011-06-11 20:05:33 -04:00
Marti Bolivar
5c847fda31 Update Print to match Arduino master.
Add base argument to integral Print methods, defaulting to DEC so as
not to break backwards compatibility.  Add precision argument to
floating-point Print methods.

These changes increase compatibility with the Arduino Print
implementation.
2011-06-08 16:39:04 -04:00
Marti Bolivar
5ceb99bc29 Revert "Add wiring_limits.h"
This reverts commit f960c41b1a.

Wait until the Wiring spec is complete to merge this into master.
2011-06-07 16:51:40 -04:00
Marti Bolivar
f960c41b1a Add wiring_limits.h
This file is analogous to the standard C header <limits.h>.  It
defines various constants within the Wiring language that we consider
to be implementation-defined.  The current version is a work in
progress; more constants may be added as time goes on.

The member constants defined in wiring_limits.h are currently limited
to the core Wiring language.  They do not include
implementation-defined values which pertain to the standard Wiring
libraries.
2011-06-07 15:37:27 -04:00
Marti Bolivar
450e1c6e17 Keep it 80-column clean.
Go through overlong source code lines and convert as many of them as
appropriate to be 80-column clean.  This mostly affects license
headers.  Overlong lines are determined by running following from the
libmaple base directory:

$ ack-grep --nocolor --nogroup --cpp --cc --ignore-dir=usb -- '.{80}'

Note that this excludes libmaple's usb subdirectory, which is still
full of ST code that doesn't follow the libmaple source code
guidelines.

Contents of ~/.ackrc (these won't matter, but are included for
completeness):

--ignore-dir=docs
--ignore-dir=build
--type-set
ld=.ld
--type-set
rst=.rst
--type-set
txt=.txt
--type-set
mk=.mk
2011-06-07 14:44:39 -04:00
Marti Bolivar
9d9275e7a0 Docs: Fix several board-specific values.
Ugh.

Fix BOARD_NR_ADC_PINS and boardADCPins on Maple, Maple Mini, and Maple
RET6 Edition:

Maple and Maple RET6 Ed. don't have ADC on pin 3.  Seems likely that
the error was due to AIN being missing on the silkscreen.  They also
have ADC on pin 13.  This is not really true due to the voltage drop
across the built-in LED.

Maple Mini really should not include BOARD_LED_PIN among its ADC pins,
since it's not broken out to a header.

Fix BOARD_NR_PWM_PINS and boardPWMPins on Maple and RET6 Ed:

Both boards falsely include pin 25 as a PWM pin.  Maple RET6 Edition
also lacks some PWM pins.

Fix BOARD_NR_SPI on Maple RET6 Edition:

SPI3 uses PB4, which is unusable since it's tied to NRST.  This means
that SPI3 is not available on the RET6 edition.  Decreasing
BOARD_NR_SPI to 2 to accomodate this.  Leave the BOARD_SPI3_*_PIN
defines intact so as not to further clutter the rest of the library
with RET6-specific wrinkles.
2011-05-26 02:42:07 -04:00
Marti Bolivar
e3dfbf4b5b Getting rid of the last 0.0.10 TODO.
We should be good to go.
2011-05-23 10:18:39 -04:00
Marti Bolivar
3b9cc70fb2 HardwareSerial.h: adding documentation TODO for 0.1.0 2011-05-20 15:21:59 -04:00
Marti Bolivar
cd723c2f0e adc.c: adc_init() doesn't set the RCC's ADC prescaler.
You have to call rcc_set_prescaler() yourself now.  adc_init() never
should have been doing that anyway.
2011-05-19 18:45:45 -04:00
Marti Bolivar
7444fc5a7a Punting the fix of Maple Native's boardUsedPins to 0.0.12. 2011-05-19 15:03:21 -04:00
Marti Bolivar
f92d5f4865 Fixing HardwareSPI.h mistake for non-LeafLabs boards.
"#warn" -> "#warning"; oops.
2011-05-12 04:37:30 -04:00
Perry Hung
914db021c3 i2c: Various fixes, extensions, documentation.
-Fix clock calculations for fast-mode support
-Add I2C_REMAP option to remap i2c1 (untested)
-Add I2C_BUS_RESET option to reset bus on initialization
-Add optional timeout parameter
-Doxygen comments
-Various cleanup

10-bit slave addressing is untested until I have a device that speaks
such.
2011-05-12 04:07:33 -04:00
Marti Bolivar
f3d44dfa4e Adding SPI3 definitions for Maple RET6 Edition. 2011-05-11 13:23:30 -04:00
Marti Bolivar
ff5ae825d6 Converting all files to UNIX newlines.
Committing the results of running the following on the libmaple root
directory:

$ fromdos `grep --exclude-dir='[.]git' -Ilsr $'\r$' .`
2011-05-10 16:41:37 -04:00
Marti Bolivar
a20c3966b5 Putting updated HardwareTimer back into the build.
HardwareTimer was removed from the build when the timer refactor was
done; this redoes it in terms of the new timer.h interface.  A variety
of conflicting or badly designed bits were deprecated or removed.

I'm still not satisfied with this interface, as it's going to make
life difficult moving forward to high-density chips, where the
addition of basic timers means that the capture/compare methods won't
apply in some cases.  However, we need to get 0.0.10 out the door, so
it'll have to do for now.

The docs are up to date, and contain a warning that the Wirish API
isn't stable and a recommendation to use libmaple proper.
2011-05-06 19:30:49 -04:00
Marti Bolivar
194084baed Renaming "enum ExtIntTriggerMode_" -> "enum ExtIntTriggerMode".
Done for consistency the rest of the source.  Doesn't affect any
documented features.
2011-05-05 15:38:58 -04:00
Marti Bolivar
6c427d285f SPI fixups.
Initial post-review changes based on thread here:

77f707d7b8 (comments)
2011-05-04 17:23:54 -04:00
Marti Bolivar
5cf58d39d4 Maple Mini pin map fix.
Thanks, Xavier!
2011-05-04 13:36:52 -04:00
Marti Bolivar
bc745cd913 Making micros() counter underrun safe.
Thanks, ala42!
2011-05-04 13:31:53 -04:00
Marti Bolivar
e7d5f4c167 SerialUSB fixups. 2011-05-04 13:31:53 -04:00
Marti Bolivar
837e649dba Fixing USBSerial::read(void*, uint32). 2011-05-04 13:31:53 -04:00
Marti Bolivar
c436ffa1bb Native and FSMC cleanups.
Got rid of native_sram.h (and native_sram.cpp), and pushed their
functionality into maple_native.cpp.  Fixed includes in maple_native.h.

Fixed includes in fsmc.h.
2011-05-04 13:29:55 -04:00
Marti Bolivar
77f707d7b8 SPI refactor.
Still a polling driver, but the libmaple proper interface exposes
enough that users enable the various interrupts and define their own
IRQ handlers if they feel like it.

Wirish HardwareSPI interface was largely redone; it's more like the
Arduino implementation now, although there are some differences when I
didn't like their API.  The old methods are still there, but are
deprecated and slated for deletion in 0.1.0.

New board-specific values: BOARD_NR_SPI, BOARD_SPIx_NSS_PIN,
BOARD_SPIx_MOSI_PIN, BOARD_SPIx_MISO_PIN, and BOARD_SPIx_SCK_PIN, for
x from 1 to BOARD_NR_SPI.

Documentation was updated appropriately.
2011-04-28 14:23:30 -04:00
Marti Bolivar
d4552d602c maple_native.cpp updates/fixes. 2011-04-27 17:38:55 -04:00
Marti Bolivar
d5097adadf RET6 fixes 2011-04-27 15:33:06 -04:00
Marti Bolivar
95d1f62997 Removing Maple-specific values from WirinPinMode doxygen comment.
Comment changes only.
2011-04-26 03:27:33 -04:00
Marti Bolivar
2f07cb6f6c Better debug port support.
- gpio.h: afio_mapr_swj_config() renamed afio_cfg_debug_ports()

- [new] wirish_debug.h: disableDebugPorts(), enableDebugPorts()

- Maple, Maple Native, and Maple RET6 PIN_MAPs are now larger by 5,
  have mappings for the extra JTAG/SW pins.

  Documentation was updated appropriately.
2011-04-25 22:03:25 -04:00
Marti Bolivar
842096ba35 Minor Print cleanups. 2011-04-25 18:02:10 -04:00
Marti Bolivar
61ac368578 Updating Maple Native pins for prototype C. 2011-04-13 15:49:05 -04:00
Marti Bolivar
f72d2948a8 Compromise Print implementation.
The users really hated the code size requirements for an snprintf()-based
Print implementation, but I really hated how bad the old implementation was.

Revised version fixes bugs related to printing 64-bit values and has some
improved behavior when it comes to printing doubles.  Now, instead of
happily printing garbage values when large doubles are printed, we try
printing "<large double>" or "-<large double>" (depending on sign) when
the argument is too big for the old strategy to accommodate.
2011-04-12 17:44:27 -04:00