bperrybap: while I appreciate your help in updating this library for Arduino 1.0, I wish you wouldn't spread so much negative FUD about the 1.0 release. Plenty of people have downloaded and are using it with little or no problems. I've actually been surprised at how few people seem to be running into issues and how quickly many libraries have been updated. While the release and its process certainly weren't perfect, it seems to be working well for many people. Plus, there are lots of nice new features / changes that make it worth upgrading.
As far as "lots of nice new features/changes that make it worth upgrading" goes, that
depends on if those features were wanted/needed. If those new features were
not needed, then the cost of using the new 1.0 release can potentially be quite high particularly
if it causes something that was previously working to break.
There is no question that 1.0 can be used without any issues but it only works
with little or no problems as long as users don't use anything that the 1.0 release breaks.
So today if users are confining their sketches to use only the libraries
that are supplied with 1.0, they generally will have a very good experience and will
probably not experience any issues.
I say "probably" because even when users do not use any 3rd party pre 1.0 libraries that have
not yet been updated for 1.0, they can still experience issues when using pre 1.0 sketches
with the 1.0 supplied core code and libraries.
While most of the likely issues for users using only the 1.0 supplied libraries
will be relatively "easy to fix" items like the changing of certain function call names in
things like the wire library API, or changing a parameter type in something like print() or write(),
there are another class of issues that are not so easy to fix.
Those generally fall into 2 categories:
- size/space (things are now larger)
- behavior changes (API functions don't work like they used to)
For example, if you had a sketch that just barely fit, it may no longer fit using 1.0
and while it may be possible to start trimming, in some cases, it may be very difficult
or impossible to trim enough to account for the larger 1.0 code.
Some issues can be quite difficult to track down and fix
like the changes in behavior of HardwareSerial and its RAM usage.
The new HardwareSerial behaves differently and there is no way to get
back to the old behavior even if you want/need to without having to go
in and modify HardwareSerial.cpp
For example, the RX buffers are now half the size. This may cause dropped rx
data in certain applications. The TX output is now buffered, which has the
potential to break certain applications.
One example of this, would be applications that previously did delays after sending a message to avoid
overrunning a remote receiver. The delay would now happen in parallel with
the sending of the data instead of after the last character of the message is sent.
============================================
I guess my biggest beef with the 1.0 release is how it is being handled
vs what it is.
In my view the 1.0 release was handled poorly particular when it comes
to trying to help less technical users through the transition.
I try to put myself in the situation of a newbie/less technical user.
I had something that works pre 1.0, now it doesn't and I get a whole
long list of errors. Or I download this cool/nifty sketch and library
and all it does it get errors with 1.0
IMHO, if the 1.0 release were better prepared to deal with the incompatibilities that
it has chosen to force on its user base, it would have put some additional things in place
to help deal with the transition.
For example:
A user experiencing issues can go the "Installation & Troubleshooting" forum
and find a sticky which leads you to here:
http://www.arduino.cc/en/Guide/Troubleshooting#uploadThere is NOTHING, not one word, on that page about Arduino 1.0 transition issues.
This page should have a link to a specific 1.0 transition page or wiki that has helpful information
on how to migrate sketches or libraries that are experiencing issues to work with 1.0
Also, instead of simply omitting files like WProgram.h and allowing the compiler
to spew out all kinds of error messages that have no meaning to newbies or
less technical folks, 1.0 could have created stub header files that use
#error to issue a nice clean error message and point users to a 1.0 transition
web page for more details on how to get things up and working again.
====
As things are now, pre 1.0 sketches that use un modified pre 1.0 libraries just break with slew
of compiler errors and the information on how to fix them in the form of a "how to"
doesn't seem to be readily available to newbies and less technical users.
And that is why I recommend people to people that are having issues
with 1.0 to consider not jumping to 1.0 just yet if they don't need any
of the 1.0 "goodies".
--- bill