Cristian Maglie
f9e6ef1913
[HID] Code cleanup (no semantic changes)
2015-10-02 11:59:23 +02:00
Cristian Maglie
efe6bc0b7b
[PUSB] Fixed checks on return values
2015-10-02 11:59:23 +02:00
Cristian Maglie
631e056806
[USB] Fixed some compiler warnings
2015-10-02 11:59:23 +02:00
Cristian Maglie
3cce436602
[PUSB] Fixed the correct number of endpoints
2015-10-02 11:59:23 +02:00
Cristian Maglie
4d6ab7431b
[PUSB] Fixed check for available endpoints
...
The check for available slot in PluggableUSB is done on the endpoint
and not on the number of plugged modules.
The modulesCount field is no longer useful and it has been removed.
2015-10-02 11:59:23 +02:00
Cristian Maglie
c5fd3853e6
[PUSB] No more static fields in PluggableUSB class
2015-10-02 11:59:23 +02:00
Cristian Maglie
a044f89f01
[PUSB] The latest fields are now set via constructor
2015-10-02 11:59:23 +02:00
Cristian Maglie
93e7f0b91b
[PUSB] callbacks are now pure virtual methods
...
This change allows the compiler to handle callbacks resolution.
Callbacks now must be implemented on the class that extends
PUSBListNode and this is forced by compiler by means of pure
virtual methods.
Also the calls to HID.interface() and HID.endpoint() can now
be simplified to interface() and endpoint() respectively since
the methods are no more static.
2015-10-02 11:59:23 +02:00
Cristian Maglie
4245515325
[PUSB] replaced u8 with uint8_t
2015-10-02 11:59:22 +02:00
Cristian Maglie
6d4cbd0ee5
[PUSB] Selected interface and endpoint are now part of PUSBListNode
...
The method
int8_t PluggableUSB::addFunction(PUSBListNode *, uint8_t *)
has been changed to
bool PluggableUSB::plug(PUSBListNode *node)
since both EP and Interfaces are now saved directly into node
2015-10-02 11:59:22 +02:00
Cristian Maglie
9b4c249090
[PUSB] Global functions PUSB_* are now methods of PluggableUSB class
2015-10-02 11:59:22 +02:00
Cristian Maglie
c25a5eefc7
[PUSB] PUSBCallback struct has been merged into PUSBListNode
...
This slightly simplifies PluggableUSB API.
2015-10-02 11:59:22 +02:00
Nico
219c9ac945
Removed not used PUSB_Begin()
2015-09-29 17:02:07 +02:00
Cristian Maglie
9baff248c4
[HID] Removed unused PUSBReturn structure
2015-09-28 17:05:35 +02:00
Nico
e4a5f61c53
Removed not needed Timer warning
...
Timer is declared above, so nothing is missing here.
2015-09-28 16:30:40 +02:00
Nico
7410817148
Removed Timer warnings when Timer 2 is not present
2015-09-28 16:30:40 +02:00
Nico
ab06fbcbf4
Remove Compiler Warning in Tone.cpp
2015-09-28 16:30:39 +02:00
Nico
a9005c7627
Fix compiler warning in CDC.cpp
2015-09-28 16:30:39 +02:00
Nico
021c79b372
Fix compiler warnings in USBCore.cpp
2015-09-28 16:30:39 +02:00
Martino Facchin
a68800a9dc
Merge pull request #3864 from facchinm/pulseInLongOVF
...
fix pulseInLong considering overflow
2015-09-25 16:05:35 +02:00
Cristian Maglie
e160f67fdf
Fixed another regression in IPAddress.h
...
If the includer tries to inlcude IPAddress.h without first including
WString.h the build will fail.
2015-09-24 15:52:32 +02:00
Cristian Maglie
e3d0628765
Merge branch 'patch-7' of https://github.com/NicoHood/Arduino
2015-09-21 12:03:26 +02:00
Martino Facchin
3d8b58a72e
fix pulseInLong considering overflow
...
fixes #3830
2015-09-21 11:59:20 +02:00
Martino Facchin
2d797cc1de
pulseInLong: fix incorrect timeout handling
2015-09-21 10:24:48 +02:00
Nico
3f854e723d
Fix CDC Serial buffer size determination
2015-09-20 11:08:49 +02:00
Nico
6c0439d1c0
Fix HW Serial buffer size determination
2015-09-20 11:07:19 +02:00
Cristian Maglie
cf77bfa352
Merge branch 'ethernet-dns-fix' of https://github.com/cmaglie/Arduino
2015-09-18 11:30:45 +02:00
Cristian Maglie
fc0659453d
Fixed wrong condition in turnOffPWM(..)
...
Fix #2163
2015-09-18 11:01:08 +02:00
Cristian Maglie
10a0bc3f14
Added IPAddress::fromString(....) function
2015-09-09 12:03:29 +02:00
Cristian Maglie
75489eef94
...and also a leading ','... (oops 2)
...
See #2408
2015-09-01 10:58:48 +02:00
Cristian Maglie
f9af55125e
Added missing #ifdef in WInterrupts.c... (oops)
...
See #2408
2015-09-01 10:11:43 +02:00
Cristian Maglie
bfe2a2928c
Added EXTERNAL_NUM_INTERRUPTS for AVR xxU2 series
2015-08-31 18:12:13 +02:00
Andrew J. Kroll
55276c9700
AVR: Faster Interrupts, no size change.
...
Fixes #2408
2015-08-31 13:55:07 +02:00
onovy
c0c69e38ed
Tone: Added missing break
2015-08-15 21:11:52 +02:00
Cristian Maglie
83a2836bbb
Merge branch 'cdc-settings' of https://github.com/matthijskooijman/Arduino
2015-08-14 13:37:00 +02:00
Martino Facchin
a1d6f9a4c1
Merge pull request #3640 from NicoHood/USB-Core-Fixes
...
Usb core fixes
2015-08-13 09:39:21 +02:00
NicoHood
e9bc450202
Added u2 Series support
2015-08-12 17:48:17 +02:00
NicoHood
21c111d42f
Precised USB Endpoint definitions
2015-08-12 17:48:17 +02:00
NicoHood
aa5a91f1a3
Added 16 byte endpoint support
2015-08-12 17:48:17 +02:00
NicoHood
3cf9e054e4
Added missing static inline to USB Recv function
2015-08-12 17:48:17 +02:00
NicoHood
efea1e62f9
Made Magic Key Settings more flexible
2015-08-12 17:48:09 +02:00
Chuck Todd
2e08ab180b
Print not Aborting on Write() failure
...
Print::write(const uint8_t *buffer, size_t size) and Print::print(const
__FlashStringHelper *ifsh) would continue calling write(char) after a
failed write(char) this behavior would render returned count unuseable
see arduino/Arduino issue #3614
2015-08-12 11:47:57 +02:00
Peter Van Hoyweghen
33f2757d4e
Add Serial_::availableForWrite().
...
This makes the CDC "Serial" object on the Leonardo and similar boards
support this recently introduced method as well. The CDC code in the sam
core is not changed.
2015-07-31 14:06:20 +02:00
Matthijs Kooijman
b6c7cc4e08
Prevent losing bytes in HardwareSerial::end()
...
end() already waited for the buffer to be empty, but then there could
still be two bytes in the hardware registers that still need to be
transmitted (which were dropped or kept in the buffer, depending on the
exact timing).
This changes the wait loop to a call to the flush() function, which
already takes care of really waiting for all bytes to be transmitted,
meaning it is safe to turn off the transmitter.
2015-07-31 14:06:20 +02:00
Matthijs Kooijman
d93c15ca5c
Add Serial_::readBreak() to process SEND_BREAK requests
...
This allows detecting when the USB host sends a break request and what
the value of the request was. See the comments in USBAPI.h for details.
This just modifies the avr core, not the sam core.
2015-07-31 14:06:19 +02:00
Matthijs Kooijman
172717cf6c
Expose serial settings from CDC virtual serial port
...
This allows a sketch to find out the settings chosen by the USB host
(computer) and act accordingly.
Other than reading the DTR flag and checking if the baudrate is 1200,
the regular CDC code doesn't actually use any of these settings.
By exposing these settings to the sketch, it can for example copy them
to the hardware UART, turning the Leonardo into a proper USB-to-serial
device. This can be useful to let the computer directly talk to whatever
device is connected to the hardware serial port (like an XBee module).
The Teensy core already supported these methods. This code was
independently developed, but the method names were chosen to match the
Teensy code, for compatibility (except that `dtr()` and `rtr()` return
`bool`, while the Teensy version return a `uint8_t`).
This change is applied to both the avr and sam cores, which have a very
similar CDC implementation.
2015-07-31 13:40:43 +02:00
Martino Facchin
a83da2c299
fix pluggableUSB linked list
2015-07-16 13:13:52 +02:00
Martino Facchin
f2973ba389
save RAM content overridden by bootloader magic
...
and restore it in case of aborted reboot
use RAMEND-1 as suggested by @yyyc514 in PR #2474
of course it's not a real solution but we cannot force everyone to update the bootloader using an external programmer
2015-07-16 13:13:52 +02:00
Martino Facchin
512e369e80
rename Setup typedef struct to USBSetup
...
was really too common
2015-07-16 13:13:52 +02:00
Martino Facchin
d2515993d5
fix HID headers
2015-07-16 13:13:51 +02:00
Martino Facchin
880b0468fe
fix HID descriptors bigger than 127 bytes
2015-07-16 13:13:51 +02:00
Martino Facchin
05f8a397a4
Add support for waking up a host via USB HID
...
this is a rework of commit fbcf94801b8bba7f1c8c79cc7ae402b6b9dbb2d3
2015-07-16 13:13:51 +02:00
Martino Facchin
a6d9868f82
remove setupUSB weak hook and replace with global constructors
...
thanks @matthijskooijman
2015-07-16 13:13:49 +02:00
Martino Facchin
fa573da910
rework PUSBCallbacks initialization
2015-07-16 13:13:39 +02:00
Martino Facchin
c4c2b15050
remove 3 endpoints to match at32u4 limit
2015-07-16 13:12:15 +02:00
Martino Facchin
1e08066640
add numInterfaces field to PUSBCallbacks
2015-07-16 13:12:15 +02:00
Martino Facchin
d13b52085e
implement PUSB modules as linked list
2015-07-16 13:12:14 +02:00
Martino Facchin
d1f15236ee
remove useless variables
2015-07-16 13:12:14 +02:00
Martino Facchin
32dd3a630b
make CDC function non removable
2015-07-16 13:12:14 +02:00
Martino Facchin
fdc0c84470
add weak setupUSB() hook
...
override this function to insert additional USB endpoints
2015-07-16 13:12:14 +02:00
Martino Facchin
29239164b5
remove useless variable
2015-07-16 13:12:14 +02:00
Martino Facchin
f7631cdee9
add PluggableUSB module
2015-07-16 13:12:14 +02:00
Martino Facchin
b5cc45b17d
move _initEndpoints from PROGMEM to RAM
2015-07-16 13:12:14 +02:00
Martino Facchin
6a508b6088
Use generic composite device descriptor
2015-07-16 13:12:13 +02:00
Martino Facchin
8282c2734e
Move EP defines to header
2015-07-16 13:12:13 +02:00
Martino Facchin
3750b26d29
Remove HID core library
2015-07-16 13:12:13 +02:00
Matthijs Kooijman
c6750aa1a1
Check for __cplusplus >= 201103L as well as __GXX_EXPERIMENTAL_CXX0X__
...
Gcc 4.8 defines __cplusplus as 201103L, so we can check for that now. It
still also defines __GXX_EXPERIMENTAL_CXX0X__, but this could help on
other compilers, or if gcc ever decides to stop defining the
experimental macro.
2015-07-16 13:06:10 +02:00
Federico Fissore
ebe8f65f65
Removed a handful of SVN expansion keywords. See #277
2015-07-03 10:38:07 +02:00
Matthijs Kooijman
4bb8c091ea
Warn about increasing HardwareSerial buffers to > 256
...
Properly supporting bigger buffers need better atomicity code, which
isn't implemented yet. Until it is, best to add a warning. See #2405 .
2015-06-18 16:36:07 +02:00
Martino Facchin
409ec76242
Add a Stream::find(char) method
2015-06-01 14:06:32 +00:00
Cristian Maglie
34b6872ff1
Fixed unused argument warning
2015-05-30 15:19:44 +02:00
Cristian Maglie
860a9ad815
Fixed unused variables warnings and indentation
2015-05-29 20:02:50 +02:00
chromhelm
9bf0f11e51
Saving some bytes in HardwareSerial::write
2015-05-29 18:12:24 +02:00
Martino Facchin
4b83b821d4
pulseIn: be consistent with standard API
...
return 0 if timeout has been reached
2015-05-29 15:01:38 +02:00
Martino Facchin
2c43b1ca34
pulseInASM: rework comment style
2015-05-29 15:01:38 +02:00
Martino Facchin
6b5f81c195
pulseIn: add alternative implementation based on micros()
...
pulseInLong is suitable for long pulses in interrupt context
2015-05-29 15:01:38 +02:00
Martino Facchin
3403bfe53d
pulseIn: modify function to use ASM implementation
2015-05-29 15:01:37 +02:00
Martino Facchin
b9a7b46a8e
pulseIn: add ASM implementation
...
this assembly code was generated by avr-gcc 4.8.3
2015-05-29 15:01:37 +02:00
Martino Facchin
16f9b83668
Revert "Temporary fix for pulseIn() regression."
...
This reverts commit 8ddc5198f6ef8b2816a61b7b0fcce99f927d11a0.
To be substituted by ASM generated code
2015-05-29 15:01:37 +02:00
Martino Facchin
5050d4d498
Merge pull request #3202 from Chris--A/randomSeed
...
Modified randomSeed, now uses unsigned long.
2015-05-28 10:54:26 +02:00
Martino Facchin
26bf5b5520
Merge pull request #3211 from Chris--A/println-optimize
...
Println optimize
2015-05-28 10:24:12 +02:00
Cristian Maglie
11314ea4f9
Merge pull request #3244 from Lauszus/INT2
...
Check if INT2 is actually defined before issuing warning in detachInterrupt
2015-05-28 09:51:25 +02:00
Martino Facchin
a272963181
Merge pull request #3207 from chromhelm/master
...
Fixed bug with HWSerial flushing
2015-05-28 09:44:46 +02:00
Kristian Sloth Lauszus
92d606ecdc
Check if INT2 is actually defined before issuing warning in detachInterrupt
...
This was caused after: https://github.com/arduino/Arduino/pull/3221
2015-05-28 03:42:32 +02:00
Victor Aprea
5c008014ab
Add missing case to detachinterrupt
2015-05-24 20:35:23 -04:00
Cristian Maglie
44a2f4ad24
Indent fix.
2015-05-22 17:23:46 +02:00
Cano
e817e54898
zero delay fix, ADC prescaler fix
2015-05-22 17:23:46 +02:00
Cano
f8fa2d8755
delayMicroseconds(): added support for 1Mhz, 12Mhz and 24Mhz
...
1Mhz is a default clock speed on Atmega328, many users run it on the
internal 1Mhz clock to save battery power. Up until now
delayMicroseconds() function wasn't taking this frequencies into an
account.
2015-05-22 17:23:45 +02:00
Chris--A
969ce0b007
Optimize printLn calls.
2015-05-22 23:00:07 +10:00
chromhelm
8c4caf1b67
Fixed bug with flushing
2015-05-21 21:42:40 +02:00
Chris--A
14e45da7da
Modified randomSeed, now uses unsigned long.
2015-05-21 16:52:42 +10:00
Nico
19dd4984a3
RX and TX Serial buffer sizes can now be defined independently
...
Fixes #2597
2015-05-12 15:09:48 +02:00
Cristian Maglie
ee1499dab2
Fixed indentation in Stream.cpp, no code change
2015-04-21 18:10:32 +02:00
Cristian Maglie
9b7eb8bae3
Fixed wrong bracket placement (see #3011 )
2015-04-21 18:07:42 +02:00
Kristian Sloth Lauszus
7536a6c349
Fixed: warning: comparison between signed and unsigned integer expressions
2015-04-21 00:08:11 +02:00
Kristian Sloth Lauszus
3a785745c0
Fixed: warning: suggest explicit braces to avoid ambiguous 'else'
2015-04-21 00:08:02 +02:00
Martino Facchin
e789c6a9b1
Merge branch 'jipp-master'
2015-04-14 10:13:58 +02:00
Jan
5a031e5e53
Fix for issue #292
...
Replaced direct register manipulation with calls to bitWrite(). Fixed TIMSK5 usage on Leonardo (as well as some other preprocessor statements).
2015-04-13 20:36:28 +02:00
jipp
7d46169c78
Update Tone.cpp
...
Tone.cpp stops compile when TCCR0A/TCCR0B defined and WGM01 not defined #2923
2015-04-13 16:18:18 +02:00
Jan
8cb220e93c
Update Tone.cpp
...
Rebased the bugfix from the original Google Code issue #292 to work with Arduino 1.6.x
Description of original fix provided by Pete62:
The later 8 bit AVR's use two registers (TCCRxA, TCCRxB) whereas the ATmega8 only uses a single register (TCCR2) to house the control bits for Timer 2. Bits were inadvertently being cleared.
2015-04-11 00:15:58 +02:00