Initial commit
Added all files from SVN.
Each hardware module or functional group has files for each relevant architecture or family. Eventually the makefile will pull in the correct version of the files and the user will only have to supply the relevant architecture or family name.
Next update to dma_channel module.
- Changed attr struct so that it now stores hardware settings that are locked at initialization.
- Changed the base_address mechanism, so now the user provides a channel_number and the initialization function calculates/sets the base_address and stores it privately.
- Allowed user to get access to both buffer A and B pointers and sizes in the dma_channel_t struct type. This eliminates the need for get/set functions for the buffers and also removed the burden of trying to decide which buffer to show the user.
- Added better validity checking of dma_channel_t type (dma_is_valid function improved).
- Made better use of bitops library.
Forgot a few things in the previous commit. Minor changes, mostly documentation related.
Added dma_channel.h which checks the compiler and chip types and includes the correct dma_channel code depending on the macros defined by the build environment.
- UART -
Finished revamp of basic UART library functionality. It now utilizes the private object more and has more abstraction away from the hardware. It allows the user to choose a major and minor mode which then sets up the hardware in specific ways.
The buffer system has also been updated and cleaned up. Each direction (TX and RX) have four buffer options, hardware FIFO only, DMA, software, and hybrid (i.e. DMA+software). The user can choose the type of buffer and the size of the buffer for each type.

- Delays -
Added some delay functions to the library.

- DMA -
Cleaned up the DMA channel library. Made it a bit closer to the hardware so that it can be a bit more flexible in terms of how it is set up.

- Bit Ops -
Added some new bit operations and fixed a few bugs. The macros need to be renamed, however, because they have a terrible naming convention.
UART, CAN Bus

- UART -
Minor changes to private variable names (moved underscore to suffix instead of prefix).

- CAN Bus -
Finished first draft of xc16 header file. Contains a global struct as a namespace, a canbus object for storing public and private variables, various enumerations, the attribute object definition, and a message and header definition.
Added new private function declarations and skeleton definitions to xc16 c file.
Added private object definition.
Added global canbus object definition.
Finished first draft of init(), clean_up(), and set_mode().
CAN Bus

== CAN Bus ==
- Filled in code for set_mask(), assign_mask(), and set_filter() functions.
- Added a union to the canbus message struct which allows the user (and us) to break up the EID into a low (16-bit) part and a high (2-bit) part.
CAN Bus

== CAN Bus ==
- Forgot to add code to assign mask to all filters in assign_mask().
- Moved if statement for NONE to beginning of assign_mask() so that it exits the function immediately.
CAN Bus

== CAN Bus ==
- Filled in code for set_buffer_pointer(). Used a variable to store the buffer pointer value instead of computing it for each possible filter.
CAN Bus

== CAN Bus ==
- Changed assign_mask() so that the mask to be assigned is determined at the start instead of inside each if statement. Then that value is used throughout the rest of the function to assign the predetermined mask to each filter.
CAN Bus

== CAN Bus ==
- Removed open mechanism in favor of buffers always "open".
- Buffer direction may only be set at initialization of the object.
- Connect() and disconnect() functions added instead of set_buffer_pointer(), enable_filter(), and disable_filter(). Connect() both sets buffer pointer and enables filter. Disconnect() disables filter.
- A filter may only be connected to a buffer if the buffer is marked RX.
- Removed unused functions (e.g. close(), is_open(), etc.).
- Added buffer directions to attr struct so user may initialize direction of buffers 0-7.
CAN Bus

== CAN Bus ==
- Fixed a bug in canbus_init() where a buffer in the FIFO region could still be marked TX. No check was made to determine if buffers were in the FIFO region before initializing them to TX.
CAN Bus

== CAN Bus ==
- Finished read() function.
- Finished peek() function.
- Fixed connect() so buffer pointer is set correctly (particularly with FIFO). Previously, buffer pointer was never set even though it was used to assign each filter's buffer pointer bits.
- Changed values of CANBUS_BUFFER_x enumeration. Moved FIFO to end as a special value so that values would be the same as the buffer number they represent. This was part of the reason for the change listed above to connect().
- Added more input checks to write().
- Modified canbus_message_t storage format to be more optimized.
CAN Bus

== CAN Bus ==
- Finished is_empty() function.
CAN Bus

== CAN Bus ==
- Added canbus.h which includes the correct compiler/hardware specific canbus code.
- Added canbus_hw.h which defines constants dependent on the particular hardware.
- Added canbus_xc16.def which contains the user modifiable options of the code.
- Debugged syntax errors for first compile of canbus code.
CAN Bus

== CAN Bus ==
- Removed anonymous structs and unions from attr struct (not supported in C89/C99).
- Flattened attr struct slightly and put each settings group into it's own named struct.
- Fixed any code associated with the new attr struct.
CAN Bus

== CAN Bus ==
- Fixed bugs and got module to send and receive a message correctly. Transmits from B0 and receives using Filter 0/Mask 0 and receives into B1.
CAN Bus

== CAN Bus ==
- Fixed an issue in buffer_exists() function where supplying the FIFO buffer would return that the FIFO didn't exist when it should always exist.
- Also made a few debug changes that remove some warnings about unused variables.
PWM

== PWM ==
- Added the XC16 versions of the PWM module (both header and source files).
- Header file contains first draft of PWM interface, including attr struct, module struct, and global struct, as well as required enumerations.