mbed libraries for KL25Z
Revision 9:663789d7729f, committed 2013-02-18
- Comitter:
- emilmont
- Date:
- Mon Feb 18 09:41:56 2013 +0000
- Parent:
- 8:c14af7958ef5
- Commit message:
- Update mbed-KL25Z to latest build
Changed in this revision
diff -r c14af7958ef5 -r 663789d7729f AnalogIn.h --- a/AnalogIn.h Fri Nov 09 11:33:53 2012 +0000 +++ b/AnalogIn.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - AnalogIn - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_ANALOGIN_H #define MBED_ANALOGIN_H @@ -8,6 +20,8 @@ #if DEVICE_ANALOGIN +#include "analogin_api.h" + namespace mbed { /** An analog input, used for reading the voltage on a pin @@ -15,11 +29,11 @@ * Example: * @code * // Print messages when the AnalogIn is greater than 50% - * + * * #include "mbed.h" - * + * * AnalogIn temperature(p20); - * + * * int main() { * while(1) { * if(temperature > 0.5) { @@ -35,23 +49,29 @@ /** Create an AnalogIn, connected to the specified pin * - * @param pin AnalogIn pin to connect to + * @param pin AnalogIn pin to connect to * @param name (optional) A string to identify the object */ - AnalogIn(PinName pin); - + AnalogIn(PinName pin) { + analogin_init(&_adc, pin); + } + /** Read the input voltage, represented as a float in the range [0.0, 1.0] * * @returns A floating-point value representing the current input voltage, measured as a percentage */ - float read(); + float read() { + return analogin_read(&_adc); + } /** Read the input voltage, represented as an unsigned short in the range [0x0, 0xFFFF] * * @returns - * 16-bit unsigned short representing the current input voltage, normalised to a 16-bit value + * 16-bit unsigned short representing the current input voltage, normalised to a 16-bit value */ - unsigned short read_u16(); + unsigned short read_u16() { + return analogin_read_u16(&_adc); + } #ifdef MBED_OPERATORS /** An operator shorthand for read() @@ -62,16 +82,18 @@ * @code * float x = volume.read(); * float x = volume; - * + * * if(volume.read() > 0.25) { ... } * if(volume > 0.25) { ... } * @endcode */ - operator float(); + operator float() { + return read(); + } #endif protected: - ADCName _adc; + analogin_t _adc; }; } // namespace mbed
diff -r c14af7958ef5 -r 663789d7729f AnalogOut.h --- a/AnalogOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/AnalogOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - AnalogOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_ANALOGOUT_H #define MBED_ANALOGOUT_H @@ -8,6 +20,8 @@ #if DEVICE_ANALOGOUT +#include "analogout_api.h" + namespace mbed { /** An analog output, used for setting the voltage on a pin @@ -15,9 +29,9 @@ * Example: * @code * // Make a sawtooth output - * + * * #include "mbed.h" - * + * * AnalogOut tri(p18); * int main() { * while(1) { @@ -35,52 +49,69 @@ public: /** Create an AnalogOut connected to the specified pin - * + * * @param AnalogOut pin to connect to (18) */ - AnalogOut(PinName pin); - + AnalogOut(PinName pin) { + analogout_init(&_dac, pin); + } + /** Set the output voltage, specified as a percentage (float) * - * @param value A floating-point value representing the output voltage, + * @param value A floating-point value representing the output voltage, * specified as a percentage. The value should lie between * 0.0f (representing 0v / 0%) and 1.0f (representing 3.3v / 100%). * Values outside this range will be saturated to 0.0f or 1.0f. */ - void write(float value); - + void write(float value) { + analogout_write(&_dac, value); + } + /** Set the output voltage, represented as an unsigned short in the range [0x0, 0xFFFF] * * @param value 16-bit unsigned short representing the output voltage, * normalised to a 16-bit value (0x0000 = 0v, 0xFFFF = 3.3v) */ - void write_u16(unsigned short value); + void write_u16(unsigned short value) { + analogout_write_u16(&_dac, value); + } /** Return the current output voltage setting, measured as a percentage (float) * * @returns - * A floating-point value representing the current voltage being output on the pin, + * A floating-point value representing the current voltage being output on the pin, * measured as a percentage. The returned value will lie between * 0.0f (representing 0v / 0%) and 1.0f (representing 3.3v / 100%). * * @note * This value may not match exactly the value set by a previous write(). */ - float read(); + float read() { + return analogout_read(&_dac); + } #ifdef MBED_OPERATORS /** An operator shorthand for write() */ - AnalogOut& operator= (float percent); - AnalogOut& operator= (AnalogOut& rhs); + AnalogOut& operator= (float percent) { + write(percent); + return *this; + } + + AnalogOut& operator= (AnalogOut& rhs) { + write(rhs.read()); + return *this; + } /** An operator shorthand for read() */ - operator float(); + operator float() { + return read(); + } #endif protected: - DACName _dac; + dac_t _dac; }; } // namespace mbed
diff -r c14af7958ef5 -r 663789d7729f BusIn.h --- a/BusIn.h Fri Nov 09 11:33:53 2012 +0000 +++ b/BusIn.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - DigitalIn - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_BUSIN_H #define MBED_BUSIN_H @@ -23,16 +35,16 @@ * @note * It is only required to specify as many pin variables as is required * for the bus; the rest will default to NC (not connected) - */ + */ BusIn(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC, PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC, PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC, PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC); BusIn(PinName pins[16]); - + virtual ~BusIn(); - + /** Read the value of the input bus * * @returns
diff -r c14af7958ef5 -r 663789d7729f BusInOut.h --- a/BusInOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/BusInOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - BusInOut - * Copyright (c) 2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_BUSINOUT_H #define MBED_BUSINOUT_H @@ -13,7 +25,7 @@ class BusInOut { public: - + /** Create an BusInOut, connected to the specified pins * * @param p<n> DigitalInOut pin to connect to bus bit p<n> (p5-p30, NC) @@ -21,7 +33,7 @@ * @note * It is only required to specify as many pin variables as is required * for the bus; the rest will default to NC (not connected) - */ + */ BusInOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC, PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC, PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC, @@ -39,7 +51,7 @@ */ void write(int value); - + /** Read the value currently output on the bus * * @returns @@ -60,7 +72,7 @@ * @param mode PullUp, PullDown, PullNone */ void mode(PinMode pull); - + #ifdef MBED_OPERATORS /** A shorthand for write() */
diff -r c14af7958ef5 -r 663789d7729f BusOut.h --- a/BusOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/BusOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - BusOut - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_BUSOUT_H #define MBED_BUSOUT_H @@ -21,7 +33,7 @@ * @note * It is only required to specify as many pin variables as is required * for the bus; the rest will default to NC (not connected) - */ + */ BusOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC, PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC, PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
diff -r c14af7958ef5 -r 663789d7729f CAN.h --- a/CAN.h Fri Nov 09 11:33:53 2012 +0000 +++ b/CAN.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - can - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_CAN_H #define MBED_CAN_H @@ -8,11 +20,10 @@ #if DEVICE_CAN -#include "can_helper.h" +#include "can_api.h" +#include "can_helper.h" #include "FunctionPointer.h" -#include <string.h> - namespace mbed { /** CANMessage class @@ -29,7 +40,7 @@ id = 0; memset(data, 0, 8); } - + /** Creates CAN message with specific content. */ CANMessage(int _id, const char *_data, char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) { @@ -64,23 +75,23 @@ * Example: * @code * #include "mbed.h" - * + * * Ticker ticker; * DigitalOut led1(LED1); * DigitalOut led2(LED2); * CAN can1(p9, p10); * CAN can2(p30, p29); - * + * * char counter = 0; - * + * * void send() { * if(can1.write(CANMessage(1337, &counter, 1))) { * printf("Message sent: %d\n", counter); * counter++; - * } + * } * led1 = !led1; * } - * + * * int main() { * ticker.attach(&send, 1); * CANMessage msg; @@ -88,15 +99,15 @@ * if(can2.read(msg)) { * printf("Message received: %d\n\n", msg.data[0]); * led2 = !led2; - * } + * } * wait(0.2); * } - * } + * } * @endcode */ CAN(PinName rd, PinName td); virtual ~CAN(); - + /** Set the frequency of the CAN interface * * @param hz The bus frequency in hertz @@ -106,7 +117,7 @@ * 0 otherwise */ int frequency(int hz); - + /** Write a CANMessage to the bus. * * @param msg The CANMessage to write. @@ -116,9 +127,9 @@ * 1 if write was successful */ int write(CANMessage msg); - + /** Read a CANMessage from the bus. - * + * * @param msg A CANMessage to read to. * * @returns @@ -126,19 +137,19 @@ * 1 if message arrived */ int read(CANMessage &msg); - + /** Reset CAN interface. * * To use after error overflow. */ void reset(); - + /** Puts or removes the CAN interface into silent monitoring mode * * @param silent boolean indicating whether to go into silent mode or not */ void monitor(bool silent); - + /** Returns number of read errors to detect read overflow errors. */ unsigned char rderror(); @@ -153,7 +164,7 @@ * @param fptr A pointer to a void function, or 0 to set as none */ void attach(void (*fptr)(void)); - + /** Attach a member function to call whenever a CAN frame received interrupt * is generated. * @@ -169,11 +180,11 @@ remove_interrupt(); } } - + private: - CANName _id; + can_t _can; FunctionPointer _rxirq; - + void setup_interrupt(void); void remove_interrupt(void); };
diff -r c14af7958ef5 -r 663789d7729f DigitalIn.h --- a/DigitalIn.h Fri Nov 09 11:33:53 2012 +0000 +++ b/DigitalIn.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - DigitalIn - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_DIGITALIN_H #define MBED_DIGITALIN_H @@ -15,12 +27,12 @@ * Example: * @code * // Flash an LED while a DigitalIn is true - * + * * #include "mbed.h" - * + * * DigitalIn enable(p5); * DigitalOut led(LED1); - * + * * int main() { * while(1) { * if(enable) { @@ -39,22 +51,28 @@ * @param pin DigitalIn pin to connect to * @param name (optional) A string to identify the object */ - DigitalIn(PinName pin); - + DigitalIn(PinName pin) { + gpio_init(&gpio, pin, PIN_INPUT); + } + /** Read the input, represented as 0 or 1 (int) * * @returns - * An integer representing the state of the input pin, + * An integer representing the state of the input pin, * 0 for logical 0, 1 for logical 1 */ - int read(); - + int read() { + return gpio_read(&gpio); + } + /** Set the input pin mode * * @param mode PullUp, PullDown, PullNone, OpenDrain */ - void mode(PinMode pull); - + void mode(PinMode pull) { + gpio_mode(&gpio, pull); + } + #ifdef MBED_OPERATORS /** An operator shorthand for read() */ @@ -64,7 +82,7 @@ #endif protected: - gpio_object gpio; + gpio_t gpio; }; } // namespace mbed
diff -r c14af7958ef5 -r 663789d7729f DigitalInOut.h --- a/DigitalInOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/DigitalInOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,79 +1,103 @@ -/* mbed Microcontroller Library - DigitalInOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_DIGITALINOUT_H -#define MBED_DIGITALINOUT_H - -#include "platform.h" - -#include "gpio_api.h" - -namespace mbed { - -/** A digital input/output, used for setting or reading a bi-directional pin - */ -class DigitalInOut { - -public: - /** Create a DigitalInOut connected to the specified pin - * - * @param pin DigitalInOut pin to connect to - */ - DigitalInOut(PinName pin); - - /** Set the output, specified as 0 or 1 (int) - * - * @param value An integer specifying the pin output value, - * 0 for logical 0, 1 (or any other non-zero value) for logical 1 - */ - void write(int value); - - /** Return the output setting, represented as 0 or 1 (int) - * - * @returns - * an integer representing the output setting of the pin if it is an output, - * or read the input if set as an input - */ - int read(); - - /** Set as an output - */ - void output(); - - /** Set as an input - */ - void input(); - - /** Set the input pin mode - * - * @param mode PullUp, PullDown, PullNone, OpenDrain - */ - void mode(PinMode pull); - -#ifdef MBED_OPERATORS - /** A shorthand for write() - */ - DigitalInOut& operator= (int value) { - write(value); - return *this; - } - - DigitalInOut& operator= (DigitalInOut& rhs) { - write(rhs.read()); - return *this; - } - - /** A shorthand for read() - */ - operator int() { - return read(); - } -#endif - -protected: - gpio_object gpio; -}; - -} // namespace mbed - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DIGITALINOUT_H +#define MBED_DIGITALINOUT_H + +#include "platform.h" + +#include "gpio_api.h" + +namespace mbed { + +/** A digital input/output, used for setting or reading a bi-directional pin + */ +class DigitalInOut { + +public: + /** Create a DigitalInOut connected to the specified pin + * + * @param pin DigitalInOut pin to connect to + */ + DigitalInOut(PinName pin) { + gpio_init(&gpio, pin, PIN_INPUT); + } + + /** Set the output, specified as 0 or 1 (int) + * + * @param value An integer specifying the pin output value, + * 0 for logical 0, 1 (or any other non-zero value) for logical 1 + */ + void write(int value) { + gpio_write(&gpio, value); + } + + /** Return the output setting, represented as 0 or 1 (int) + * + * @returns + * an integer representing the output setting of the pin if it is an output, + * or read the input if set as an input + */ + int read() { + return gpio_read(&gpio); + } + + /** Set as an output + */ + void output() { + gpio_dir(&gpio, PIN_OUTPUT); + } + + /** Set as an input + */ + void input() { + gpio_dir(&gpio, PIN_INPUT); + } + + /** Set the input pin mode + * + * @param mode PullUp, PullDown, PullNone, OpenDrain + */ + void mode(PinMode pull) { + gpio_mode(&gpio, pull); + } + +#ifdef MBED_OPERATORS + /** A shorthand for write() + */ + DigitalInOut& operator= (int value) { + write(value); + return *this; + } + + DigitalInOut& operator= (DigitalInOut& rhs) { + write(rhs.read()); + return *this; + } + + /** A shorthand for read() + */ + operator int() { + return read(); + } +#endif + +protected: + gpio_t gpio; +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f DigitalOut.h --- a/DigitalOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/DigitalOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - DigitalOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_DIGITALOUT_H #define MBED_DIGITALOUT_H @@ -15,9 +27,9 @@ * @code * // Toggle a LED * #include "mbed.h" - * + * * DigitalOut led(LED1); - * + * * int main() { * while(1) { * led = !led; @@ -33,27 +45,29 @@ * * @param pin DigitalOut pin to connect to */ - DigitalOut(PinName pin); - + DigitalOut(PinName pin) { + gpio_init(&gpio, pin, PIN_OUTPUT); + } + /** Set the output, specified as 0 or 1 (int) * - * @param value An integer specifying the pin output value, - * 0 for logical 0, 1 (or any other non-zero value) for logical 1 + * @param value An integer specifying the pin output value, + * 0 for logical 0, 1 (or any other non-zero value) for logical 1 */ void write(int value) { gpio_write(&gpio, value); } - + /** Return the output setting, represented as 0 or 1 (int) * * @returns - * an integer representing the output setting of the pin, + * an integer representing the output setting of the pin, * 0 for logical 0, 1 for logical 1 */ int read() { return gpio_read(&gpio); } - + #ifdef MBED_OPERATORS /** A shorthand for write() */ @@ -61,12 +75,12 @@ write(value); return *this; } - + DigitalOut& operator= (DigitalOut& rhs) { write(rhs.read()); return *this; } - + /** A shorthand for read() */ operator int() { @@ -75,9 +89,9 @@ #endif protected: - gpio_object gpio; + gpio_t gpio; }; } // namespace mbed -#endif +#endif
diff -r c14af7958ef5 -r 663789d7729f DirHandle.h --- a/DirHandle.h Fri Nov 09 11:33:53 2012 +0000 +++ b/DirHandle.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,15 +1,29 @@ -/* mbed Microcontroller Library - DirHandler - * Copyright (c) 2008-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_DIRHANDLE_H #define MBED_DIRHANDLE_H -#ifdef __ARMCC_VERSION -# define NAME_MAX 255 +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) +# define NAME_MAX 255 typedef int mode_t; + #else -# include <sys/syslimits.h> +# include <sys/syslimits.h> #endif + #include "FileHandle.h" struct dirent { @@ -23,7 +37,7 @@ * at least closedir, readdir and rewinddir. * * If a FileSystemLike class defines the opendir method, then the - * directories of an object of that type can be accessed by + * directories of an object of that type can be accessed by * DIR *d = opendir("/example/directory") (or opendir("/example") * to open the root of the filesystem), and then using readdir(d) etc. * @@ -41,7 +55,7 @@ * -1 on error. */ virtual int closedir()=0; - + /** Return the directory entry at the current position, and * advances the position to the next entry. * @@ -69,7 +83,7 @@ * @param location The location to seek to. Must be a value returned by telldir. */ virtual void seekdir(off_t location) { } - + virtual ~DirHandle() {} };
diff -r c14af7958ef5 -r 663789d7729f Ethernet.h --- a/Ethernet.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Ethernet.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,158 +1,170 @@ -/* mbed Microcontroller Library - Ethernet - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_ETHERNET_H -#define MBED_ETHERNET_H - -#include "platform.h" - -#if DEVICE_ETHERNET - -namespace mbed { - -/** An ethernet interface, to use with the ethernet pins. - * - * Example: - * @code - * // Read destination and source from every ethernet packet - * - * #include "mbed.h" - * - * Ethernet eth; - * - * int main() { - * char buf[0x600]; - * - * while(1) { - * int size = eth.receive(); - * if(size > 0) { - * eth.read(buf, size); - * printf("Destination: %02X:%02X:%02X:%02X:%02X:%02X\n", - * buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); - * printf("Source: %02X:%02X:%02X:%02X:%02X:%02X\n", - * buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]); - * } - * - * wait(1); - * } - * } - * @endcode - */ -class Ethernet { - -public: - - /** Initialise the ethernet interface. - */ - Ethernet(); - - /** Powers the hardware down. - */ - virtual ~Ethernet(); - - enum Mode { - AutoNegotiate, - HalfDuplex10, - FullDuplex10, - HalfDuplex100, - FullDuplex100 - }; - - /** Writes into an outgoing ethernet packet. - * - * It will append size bytes of data to the previously written bytes. - * - * @param data An array to write. - * @param size The size of data. - * - * @returns - * The number of written bytes. - */ - int write(const char *data, int size); - - /** Send an outgoing ethernet packet. - * - * After filling in the data in an ethernet packet it must be send. - * Send will provide a new packet to write to. - * - * @returns - * 0 if the sending was failed, - * 1 if the package is successfully sent. - */ - int send(); - - /** Recevies an arrived ethernet packet. - * - * Receiving an ethernet packet will drop the last received ethernet packet - * and make a new ethernet packet ready to read. - * If no ethernet packet is arrived it will return 0. - * - * @returns - * 0 if no ethernet packet is arrived, - * or the size of the arrived packet. - */ - int receive(); - - /** Read from an recevied ethernet packet. - * - * After receive returnd a number bigger than 0it is - * possible to read bytes from this packet. - * Read will write up to size bytes into data. - * - * It is possible to use read multible times. - * Each time read will start reading after the last read byte before. - * - * @returns - * The number of byte read. - */ - int read(char *data, int size); - - /** Gives the ethernet address of the mbed. - * - * @param mac Must be a pointer to a 6 byte char array to copy the ethernet address in. - */ - void address(char *mac); - - /** Returns if an ethernet link is pressent or not. It takes a wile after Ethernet initializion to show up. - * - * @returns - * 0 if no ethernet link is pressent, - * 1 if an ethernet link is pressent. - * - * Example: - * @code - * // Using the Ethernet link function - * #include "mbed.h" - * - * Ethernet eth; - * - * int main() { - * wait(1); // Needed after startup. - * if (eth.link()) { - * printf("online\n"); - * } else { - * printf("offline\n"); - * } - * } - * @endcode - */ - int link(); - - /** Sets the speed and duplex parameters of an ethernet link - * - * - AutoNegotiate Auto negotiate speed and duplex - * - HalfDuplex10 10 Mbit, half duplex - * - FullDuplex10 10 Mbit, full duplex - * - HalfDuplex100 100 Mbit, half duplex - * - FullDuplex100 100 Mbit, full duplex - * - * @param mode the speed and duplex mode to set the link to: - */ - void set_link(Mode mode); -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_ETHERNET_H +#define MBED_ETHERNET_H + +#include "platform.h" + +#if DEVICE_ETHERNET + +namespace mbed { + +/** An ethernet interface, to use with the ethernet pins. + * + * Example: + * @code + * // Read destination and source from every ethernet packet + * + * #include "mbed.h" + * + * Ethernet eth; + * + * int main() { + * char buf[0x600]; + * + * while(1) { + * int size = eth.receive(); + * if(size > 0) { + * eth.read(buf, size); + * printf("Destination: %02X:%02X:%02X:%02X:%02X:%02X\n", + * buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); + * printf("Source: %02X:%02X:%02X:%02X:%02X:%02X\n", + * buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]); + * } + * + * wait(1); + * } + * } + * @endcode + */ +class Ethernet { + +public: + + /** Initialise the ethernet interface. + */ + Ethernet(); + + /** Powers the hardware down. + */ + virtual ~Ethernet(); + + enum Mode { + AutoNegotiate, + HalfDuplex10, + FullDuplex10, + HalfDuplex100, + FullDuplex100 + }; + + /** Writes into an outgoing ethernet packet. + * + * It will append size bytes of data to the previously written bytes. + * + * @param data An array to write. + * @param size The size of data. + * + * @returns + * The number of written bytes. + */ + int write(const char *data, int size); + + /** Send an outgoing ethernet packet. + * + * After filling in the data in an ethernet packet it must be send. + * Send will provide a new packet to write to. + * + * @returns + * 0 if the sending was failed, + * 1 if the package is successfully sent. + */ + int send(); + + /** Recevies an arrived ethernet packet. + * + * Receiving an ethernet packet will drop the last received ethernet packet + * and make a new ethernet packet ready to read. + * If no ethernet packet is arrived it will return 0. + * + * @returns + * 0 if no ethernet packet is arrived, + * or the size of the arrived packet. + */ + int receive(); + + /** Read from an recevied ethernet packet. + * + * After receive returnd a number bigger than 0it is + * possible to read bytes from this packet. + * Read will write up to size bytes into data. + * + * It is possible to use read multible times. + * Each time read will start reading after the last read byte before. + * + * @returns + * The number of byte read. + */ + int read(char *data, int size); + + /** Gives the ethernet address of the mbed. + * + * @param mac Must be a pointer to a 6 byte char array to copy the ethernet address in. + */ + void address(char *mac); + + /** Returns if an ethernet link is pressent or not. It takes a wile after Ethernet initializion to show up. + * + * @returns + * 0 if no ethernet link is pressent, + * 1 if an ethernet link is pressent. + * + * Example: + * @code + * // Using the Ethernet link function + * #include "mbed.h" + * + * Ethernet eth; + * + * int main() { + * wait(1); // Needed after startup. + * if (eth.link()) { + * printf("online\n"); + * } else { + * printf("offline\n"); + * } + * } + * @endcode + */ + int link(); + + /** Sets the speed and duplex parameters of an ethernet link + * + * - AutoNegotiate Auto negotiate speed and duplex + * - HalfDuplex10 10 Mbit, half duplex + * - FullDuplex10 10 Mbit, full duplex + * - HalfDuplex100 100 Mbit, half duplex + * - FullDuplex100 100 Mbit, full duplex + * + * @param mode the speed and duplex mode to set the link to: + */ + void set_link(Mode mode); +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f FileBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileBase.h Mon Feb 18 09:41:56 2013 +0000 @@ -0,0 +1,75 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_FILEBASE_H +#define MBED_FILEBASE_H + +typedef int FILEHANDLE; + +#include <stdio.h> + +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) +# define O_RDONLY 0 +# define O_WRONLY 1 +# define O_RDWR 2 +# define O_CREAT 0x0200 +# define O_TRUNC 0x0400 +# define O_APPEND 0x0008 + +# define NAME_MAX 255 + +typedef int mode_t; +typedef int ssize_t; +typedef long off_t; + +#else +# include <sys/fcntl.h> +# include <sys/types.h> +# include <sys/syslimits.h> +#endif + +#include "platform.h" + +namespace mbed { + +typedef enum { + FilePathType, + FileSystemPathType +} PathType; + +class FileBase { +public: + FileBase(const char *name, PathType t); + + virtual ~FileBase(); + + const char* getName(void); + PathType getPathType(void); + + static FileBase *lookup(const char *name, unsigned int len); + + static FileBase *get(int n); + +protected: + static FileBase *_head; + + FileBase *_next; + const char *_name; + PathType _path_type; +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f FileHandle.h --- a/FileHandle.h Fri Nov 09 11:33:53 2012 +0000 +++ b/FileHandle.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - FileHandler - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_FILEHANDLE_H #define MBED_FILEHANDLE_H @@ -7,14 +19,16 @@ typedef int FILEHANDLE; #include <stdio.h> -#ifdef __ARMCC_VERSION + +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) typedef int ssize_t; typedef long off_t; + #else -#include <sys/types.h> +# include <sys/types.h> #endif -namespace mbed { +namespace mbed { /** An OO equivalent of the internal FILEHANDLE variable * and associated _sys_* functions. @@ -22,7 +36,7 @@ * FileHandle is an abstract class, needing at least sys_write and * sys_read to be implmented for a simple interactive device. * - * No one ever directly tals to/instanciates a FileHandle - it gets + * No one ever directly tals to/instanciates a FileHandle - it gets * created by FileSystem, and wrapped up by stdio. */ class FileHandle { @@ -96,7 +110,7 @@ lseek(pos, SEEK_SET); return res; } - + virtual ~FileHandle(); };
diff -r c14af7958ef5 -r 663789d7729f FileLike.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileLike.h Mon Feb 18 09:41:56 2013 +0000 @@ -0,0 +1,44 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_FILELIKE_H +#define MBED_FILELIKE_H + +#include "FileBase.h" +#include "FileHandle.h" + +namespace mbed { + +/* Class FileLike + * A file-like object is one that can be opened with fopen by + * fopen("/name", mode). It is intersection of the classes Base and + * FileHandle. + */ +class FileLike : public FileHandle, public FileBase { + +public: + /* Constructor FileLike + * + * Variables + * name - The name to use to open the file. + */ + FileLike(const char *name); + + virtual ~FileLike(); +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f FilePath.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FilePath.h Mon Feb 18 09:41:56 2013 +0000 @@ -0,0 +1,45 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_FILEPATH_H +#define MBED_FILEPATH_H + +#include "platform.h" + +#include "FileSystemLike.h" +#include "FileLike.h" + +namespace mbed { + +class FilePath { +public: + FilePath(const char* file_path); + + const char* fileName(void); + + bool isFileSystem(void); + FileSystemLike* fileSystem(void); + + bool isFile(void); + FileLike* file(void); + +private: + const char* file_name; + FileBase* fb; +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f FileSystemLike.h --- a/FileSystemLike.h Fri Nov 09 11:33:53 2012 +0000 +++ b/FileSystemLike.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,132 +1,104 @@ -/* mbed Microcontroller Library - FileSystemLike - * Copyright (c) 2008-2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_FILESYSTEMLIKE_H -#define MBED_FILESYSTEMLIKE_H - -#ifdef __ARMCC_VERSION -# define O_RDONLY 0 -# define O_WRONLY 1 -# define O_RDWR 2 -# define O_CREAT 0x0200 -# define O_TRUNC 0x0400 -# define O_APPEND 0x0008 -typedef int mode_t; - -#else -# include <sys/fcntl.h> -#endif - -#include "platform.h" - -#include "FileHandle.h" -#include "DirHandle.h" - -namespace mbed { - -/** A filesystem-like object is one that can be used to open files - * though it by fopen("/name/filename", mode) - * - * Implementations must define at least open (the default definitions - * of the rest of the functions just return error values). - */ -class FileSystemLike { - -public: - /** FileSystemLike constructor - * - * @param name The name to use for the filesystem. - */ - FileSystemLike(const char *name); - - virtual ~FileSystemLike(); - - /* Function lookup - * Lookup and return the object that has the given name. - * - * Variables - * name - the name to lookup. - * len - the length of name. - */ - static FileSystemLike *lookup(const char *name, unsigned int len); - - static DirHandle *opendir(); - friend class BaseDirHandle; - - /** Opens a file from the filesystem - * - * @param filename The name of the file to open. - * @param flags One of O_RDONLY, O_WRONLY, or O_RDWR, OR'd with - * zero or more of O_CREAT, O_TRUNC, or O_APPEND. - * - * @returns - * A pointer to a FileHandle object representing the - * file on success, or NULL on failure. - */ - virtual FileHandle *open(const char *filename, int flags) = 0; - - /** Remove a file from the filesystem. - * - * @param filename the name of the file to remove. - * @param returns 0 on success, -1 on failure. - */ - virtual int remove(const char *filename) { return -1; }; - - /** Rename a file in the filesystem. - * - * @param oldname the name of the file to rename. - * @param newname the name to rename it to. - * - * @returns - * 0 on success, - * -1 on failure. - */ - virtual int rename(const char *oldname, const char *newname) { return -1; }; - - /** Opens a directory in the filesystem and returns a DirHandle - * representing the directory stream. - * - * @param name The name of the directory to open. - * - * @returns - * A DirHandle representing the directory stream, or - * NULL on failure. - */ - virtual DirHandle *opendir(const char *name) { return NULL; }; - - /** Creates a directory in the filesystem. - * - * @param name The name of the directory to create. - * @param mode The permissions to create the directory with. - * - * @returns - * 0 on success, - * -1 on failure. - */ - virtual int mkdir(const char *name, mode_t mode) { return -1; } - - // TODO other filesystem functions (mkdir, rm, rn, ls etc) - -protected: - static FileSystemLike *_head; - FileSystemLike *_next; - const char *_name; -}; - -class FilePath { -public: - FilePath(const char* file_path); - - const char* fileName(void); - FileSystemLike* fileSystem(void); - - static FileSystemLike* getFileSystem(const char* path); - -private: - const char* file_name; - FileSystemLike* fs; -}; - -} // namespace mbed - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_FILESYSTEMLIKE_H +#define MBED_FILESYSTEMLIKE_H + +#include "platform.h" + +#include "FileBase.h" +#include "FileHandle.h" +#include "DirHandle.h" + +namespace mbed { + +/** A filesystem-like object is one that can be used to open files + * though it by fopen("/name/filename", mode) + * + * Implementations must define at least open (the default definitions + * of the rest of the functions just return error values). + */ +class FileSystemLike : public FileBase { + +public: + /** FileSystemLike constructor + * + * @param name The name to use for the filesystem. + */ + FileSystemLike(const char *name); + + virtual ~FileSystemLike(); + + static DirHandle *opendir(); + friend class BaseDirHandle; + + /** Opens a file from the filesystem + * + * @param filename The name of the file to open. + * @param flags One of O_RDONLY, O_WRONLY, or O_RDWR, OR'd with + * zero or more of O_CREAT, O_TRUNC, or O_APPEND. + * + * @returns + * A pointer to a FileHandle object representing the + * file on success, or NULL on failure. + */ + virtual FileHandle *open(const char *filename, int flags) = 0; + + /** Remove a file from the filesystem. + * + * @param filename the name of the file to remove. + * @param returns 0 on success, -1 on failure. + */ + virtual int remove(const char *filename) { return -1; }; + + /** Rename a file in the filesystem. + * + * @param oldname the name of the file to rename. + * @param newname the name to rename it to. + * + * @returns + * 0 on success, + * -1 on failure. + */ + virtual int rename(const char *oldname, const char *newname) { return -1; }; + + /** Opens a directory in the filesystem and returns a DirHandle + * representing the directory stream. + * + * @param name The name of the directory to open. + * + * @returns + * A DirHandle representing the directory stream, or + * NULL on failure. + */ + virtual DirHandle *opendir(const char *name) { return NULL; }; + + /** Creates a directory in the filesystem. + * + * @param name The name of the directory to create. + * @param mode The permissions to create the directory with. + * + * @returns + * 0 on success, + * -1 on failure. + */ + virtual int mkdir(const char *name, mode_t mode) { return -1; } + + // TODO other filesystem functions (mkdir, rm, rn, ls etc) +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f FunctionPointer.h --- a/FunctionPointer.h Fri Nov 09 11:33:53 2012 +0000 +++ b/FunctionPointer.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,12 +1,24 @@ -/* mbed Microcontroller Library - FunctionPointer - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_FUNCTIONPOINTER_H #define MBED_FUNCTIONPOINTER_H #include <string.h> -namespace mbed { +namespace mbed { /** A class for storing and calling a pointer to a static or member void function */ @@ -14,31 +26,31 @@ public: /** Create a FunctionPointer, attaching a static function - * + * * @param function The void static function to attach (default is none) */ FunctionPointer(void (*function)(void) = 0); /** Create a FunctionPointer, attaching a member function - * + * * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the void member function to attach + * @param function The address of the void member function to attach */ template<typename T> FunctionPointer(T *object, void (T::*member)(void)) { attach(object, member); } - + /** Attach a static function - * + * * @param function The void static function to attach (default is none) */ void attach(void (*function)(void) = 0); - + /** Attach a member function - * + * * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the void member function to attach + * @param function The address of the void member function to attach */ template<typename T> void attach(T *object, void (T::*member)(void)) { @@ -47,7 +59,7 @@ _membercaller = &FunctionPointer::membercaller<T>; _function = 0; } - + /** Call the attached static or member function */ void call(); @@ -60,7 +72,7 @@ memcpy((char*)&m, member, sizeof(m)); (o->*m)(); } - + void (*_function)(void); // static function pointer - 0 if none attached void *_object; // object this pointer - 0 if none attached char _member[16]; // raw member function pointer storage - converted back by registered _membercaller
diff -r c14af7958ef5 -r 663789d7729f I2C.h --- a/I2C.h Fri Nov 09 11:33:53 2012 +0000 +++ b/I2C.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - I2C - * Copyright (c) 2007-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_I2C_H #define MBED_I2C_H @@ -8,6 +20,8 @@ #if DEVICE_I2C +#include "i2c_api.h" + namespace mbed { /** An I2C Master, used for communicating with I2C slave devices @@ -61,14 +75,14 @@ * the address is forced to 1 to indicate a read. * * @param address 8-bit I2C slave address [ addr | 1 ] - * @param data Pointer to the byte-array to read data in to + * @param data Pointer to the byte-array to read data in to * @param length Number of bytes to read * @param repeated Repeated start, true - don't send stop at end * * @returns * 0 on success (ack), * non-0 on failure (nack) - */ + */ int read(int address, char *data, int length, bool repeated = false); /** Read a single byte from the I2C bus @@ -86,14 +100,14 @@ * the address is forced to 0 to indicate a write. * * @param address 8-bit I2C slave address [ addr | 0 ] - * @param data Pointer to the byte-array data to send + * @param data Pointer to the byte-array data to send * @param length Number of bytes to send * @param repeated Repeated start, true - do not send stop at end * * @returns * 0 on success (ack), * non-0 on failure (nack) - */ + */ int write(int address, const char *data, int length, bool repeated = false); /** Write single byte out on the I2C bus @@ -117,8 +131,8 @@ protected: void aquire(); - - I2CName _i2c; + + i2c_t _i2c; static I2C *_owner; int _hz; };
diff -r c14af7958ef5 -r 663789d7729f I2CSlave.h --- a/I2CSlave.h Fri Nov 09 11:33:53 2012 +0000 +++ b/I2CSlave.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - I2CSlave - * Copyright (c) 2007-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_I2C_SLAVE_H #define MBED_I2C_SLAVE_H @@ -8,6 +20,8 @@ #if DEVICE_I2CSLAVE +#include "i2c_api.h" + namespace mbed { /** An I2C Slave, used for communicating with an I2C Master device @@ -27,7 +41,7 @@ * while (1) { * int i = slave.receive(); * switch (i) { - * case I2CSlave::ReadAddressed: + * case I2CSlave::ReadAddressed: * slave.write(msg, strlen(msg) + 1); // Includes null char * break; * case I2CSlave::WriteGeneral: @@ -42,7 +56,7 @@ * for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer * } * } - * @endcode + * @endcode */ class I2CSlave { @@ -74,7 +88,7 @@ * - NoData - the slave has not been addressed * - ReadAddressed - the master has requested a read from this slave * - WriteAddressed - the master is writing to this slave - * - WriteGeneral - the master is writing to all slave + * - WriteGeneral - the master is writing to all slave */ int receive(void); @@ -87,7 +101,7 @@ * 0 on success, * non-0 otherwise */ - int read(char *data, int length); + int read(char *data, int length); /** Read a single byte from an I2C master. * @@ -130,7 +144,7 @@ void stop(void); protected: - I2CName _i2c; + i2c_t _i2c; }; } // namespace mbed
diff -r c14af7958ef5 -r 663789d7729f InterruptIn.h --- a/InterruptIn.h Fri Nov 09 11:33:53 2012 +0000 +++ b/InterruptIn.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - InterruptIn - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_INTERRUPTIN_H #define MBED_INTERRUPTIN_H @@ -50,13 +62,13 @@ */ InterruptIn(PinName pin); virtual ~InterruptIn(); - + int read(); #ifdef MBED_OPERATORS operator int(); #endif - + /** Attach a function to call when a rising edge occurs on the input * * @param fptr A pointer to a void function, or 0 to set as none @@ -64,7 +76,7 @@ void rise(void (*fptr)(void)); /** Attach a member function to call when a rising edge occurs on the input - * + * * @param tptr pointer to the object to call the member function on * @param mptr pointer to the member function to be called */ @@ -81,7 +93,7 @@ void fall(void (*fptr)(void)); /** Attach a member function to call when a falling edge occurs on the input - * + * * @param tptr pointer to the object to call the member function on * @param mptr pointer to the member function to be called */ @@ -96,13 +108,13 @@ * @param mode PullUp, PullDown, PullNone */ void mode(PinMode pull); - + static void _irq_handler(uint32_t id, gpio_irq_event event); - + protected: - gpio_object gpio; - gpio_irq_object gpio_irq; - + gpio_t gpio; + gpio_irq_t gpio_irq; + FunctionPointer _rise; FunctionPointer _fall; };
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/capi.ar Binary file KL25Z/ARM/capi.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/cmsis_nvic.o Binary file KL25Z/ARM/cmsis_nvic.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/core_cm0.o Binary file KL25Z/ARM/core_cm0.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/cpp.ar Binary file KL25Z/ARM/cpp.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/mbed.ar Binary file KL25Z/ARM/mbed.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/startup_MKL25Z4.o Binary file KL25Z/ARM/startup_MKL25Z4.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/sys.o Binary file KL25Z/ARM/sys.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/ARM/system_MKL25Z4.o Binary file KL25Z/ARM/system_MKL25Z4.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/PeripheralNames.h --- a/KL25Z/PeripheralNames.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/PeripheralNames.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,7 +1,17 @@ -/* mbed Microcontroller Library - PeripheralNames - * Copyright (C) 2008-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * Provides the mappings for peripherals + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_PERIPHERALNAMES_H #define MBED_PERIPHERALNAMES_H @@ -19,11 +29,11 @@ } UARTName; #define STDIO_UART_TX USBTX #define STDIO_UART_RX USBRX -#define STDIO_UART UART_0 - -typedef enum { - I2C_0 = (int)I2C0_BASE, - I2C_1 = (int)I2C1_BASE, +#define STDIO_UART UART_0 + +typedef enum { + I2C_0 = (int)I2C0_BASE, + I2C_1 = (int)I2C1_BASE, } I2CName; #define TPM_SHIFT 8 @@ -34,10 +44,10 @@ PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3 PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4 PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5 - + PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0 PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1 - + PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0 PWM_10 = (2 << TPM_SHIFT) | (1) // TPM2 CH1 } PWMName; @@ -61,12 +71,12 @@ typedef enum { DAC_0 = 0 -} DACName; - - -typedef enum { - SPI_0 = (int)SPI0_BASE, - SPI_1 = (int)SPI1_BASE, +} DACName; + + +typedef enum { + SPI_0 = (int)SPI0_BASE, + SPI_1 = (int)SPI1_BASE, } SPIName; #ifdef __cplusplus
diff -r c14af7958ef5 -r 663789d7729f KL25Z/PinNames.h --- a/KL25Z/PinNames.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/PinNames.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,7 +1,17 @@ -/* mbed Microcontroller Library - PinNames - * Copyright (C) 2008-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * Provides the mapping of mbed DIP and LPC Pin Names + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_PINNAMES_H #define MBED_PINNAMES_H @@ -180,21 +190,21 @@ PTE29 = 0x4074, PTE30 = 0x4078, PTE31 = 0x407c, - + LED_RED = PTB18, LED_GREEN = PTB19, LED_BLUE = PTD1, - + // mbed original LED naming LED1 = LED_BLUE, LED2 = LED_GREEN, LED3 = LED_RED, LED4 = LED_RED, - + // USB Pins USBTX = PTA2, USBRX = PTA1, - + // Arduino Headers D0 = PTA1, D1 = PTA2, @@ -212,14 +222,14 @@ D13 = PTD1, D14 = PTE0, D15 = PTE1, - + A0 = PTB0, A1 = PTB1, A2 = PTB2, A3 = PTB3, A4 = PTC2, A5 = PTC1, - + // Not connected NC = (int)0xFFFFFFFF } PinName;
diff -r c14af7958ef5 -r 663789d7729f KL25Z/PortNames.h --- a/KL25Z/PortNames.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/PortNames.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - PortName - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_PORTNAMES_H #define MBED_PORTNAMES_H
diff -r c14af7958ef5 -r 663789d7729f KL25Z/core_cm0plus.h --- a/KL25Z/core_cm0plus.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/core_cm0plus.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,8 +1,8 @@ /**************************************************************************//** * @file core_cm0plus.h * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File - * @version V3.01 - * @date 22. March 2012 + * @version V3.02 + * @date 05. November 2012 * * @note * Copyright (C) 2009-2012 ARM Limited. All rights reserved. @@ -701,9 +701,9 @@ { if(IRQn < 0) { - return((uint32_t)((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0+ system interrupts */ + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ else { - return((uint32_t)((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ } @@ -751,9 +751,9 @@ */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ - SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + SysTick->LOAD = ticks - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */ SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
diff -r c14af7958ef5 -r 663789d7729f KL25Z/core_cmInstr.h --- a/KL25Z/core_cmInstr.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/core_cmInstr.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,8 +1,8 @@ /**************************************************************************//** * @file core_cmInstr.h * @brief CMSIS Cortex-M Core Instruction Access Header File - * @version V3.02 - * @date 08. May 2012 + * @version V3.03 + * @date 29. August 2012 * * @note * Copyright (C) 2009-2012 ARM Limited. All rights reserved. @@ -146,6 +146,17 @@ #define __ROR __ror +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + + #if (__CORTEX_M >= 0x03) /** \brief Reverse bit order of value @@ -422,6 +433,17 @@ } +/** \brief Breakpoint + + This function causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + #if (__CORTEX_M >= 0x03) /** \brief Reverse bit order of value
diff -r c14af7958ef5 -r 663789d7729f KL25Z/device.h --- a/KL25Z/device.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/device.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-20012 ARM Limited. All rights reserved. + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_DEVICE_H #define MBED_DEVICE_H @@ -23,18 +35,22 @@ #define DEVICE_CAN 0 -#define DEVICE_RTC 0 +#define DEVICE_RTC 1 #define DEVICE_ETHERNET 0 #define DEVICE_PWMOUT 1 +#define DEVICE_SEMIHOST 1 #define DEVICE_LOCALFILESYSTEM 0 +#define DEVICE_ID_LENGTH 24 #define DEVICE_SLEEP 0 #define DEVICE_DEBUG_AWARENESS 0 +#define DEVICE_STDIO_MESSAGES 1 + #include "objects.h" #endif
diff -r c14af7958ef5 -r 663789d7729f KL25Z/gpio_object.h --- a/KL25Z/gpio_object.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/gpio_object.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,36 +1,48 @@ -/* mbed Microcontroller Library - gpio_object - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_GPIO_OBJECT_H -#define MBED_GPIO_OBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - PinName pin; - uint32_t mask; - - __IO uint32_t *reg_dir; - __IO uint32_t *reg_set; - __IO uint32_t *reg_clr; - __I uint32_t *reg_in; -} gpio_object; - -static inline void gpio_write(gpio_object *obj, int value) { - if (value) - *obj->reg_set = obj->mask; - else - *obj->reg_clr = obj->mask; -} - -static inline int gpio_read(gpio_object *obj) { - return ((*obj->reg_in & obj->mask) ? 1 : 0); -} - -#ifdef __cplusplus -} -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_OBJECT_H +#define MBED_GPIO_OBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PinName pin; + uint32_t mask; + + __IO uint32_t *reg_dir; + __IO uint32_t *reg_set; + __IO uint32_t *reg_clr; + __I uint32_t *reg_in; +} gpio_t; + +static inline void gpio_write(gpio_t *obj, int value) { + if (value) + *obj->reg_set = obj->mask; + else + *obj->reg_clr = obj->mask; +} + +static inline int gpio_read(gpio_t *obj) { + return ((*obj->reg_in & obj->mask) ? 1 : 0); +} + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f KL25Z/objects.h --- a/KL25Z/objects.h Fri Nov 09 11:33:53 2012 +0000 +++ b/KL25Z/objects.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,47 +1,75 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-20012 ARM Limited. All rights reserved. - */ -#ifndef MBED_OBJECTS_H -#define MBED_OBJECTS_H - -#include "cmsis.h" -#include "PortNames.h" -#include "PeripheralNames.h" -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct gpio_irq_object_s { - uint32_t port; - uint32_t pin; - uint32_t ch; -}; - -struct port_object_s { - __IO uint32_t *reg_dir; - __IO uint32_t *reg_out; - __I uint32_t *reg_in; - PortName port; - uint32_t mask; -}; - -struct pwmout_object_s { - __IO uint32_t *MOD; - __IO uint32_t *CNT; - __IO uint32_t *CnV; -}; - -struct serial_object_s { - UARTLP_Type *uart; - int index; -}; - -#include "gpio_object.h" - -#ifdef __cplusplus -} -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PortNames.h" +#include "PeripheralNames.h" +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct gpio_irq_s { + uint32_t port; + uint32_t pin; + uint32_t ch; +}; + +struct port_s { + __IO uint32_t *reg_dir; + __IO uint32_t *reg_out; + __I uint32_t *reg_in; + PortName port; + uint32_t mask; +}; + +struct pwmout_s { + __IO uint32_t *MOD; + __IO uint32_t *CNT; + __IO uint32_t *CnV; +}; + +struct serial_s { + UARTLP_Type *uart; + int index; +}; + +struct analogin_s { + ADCName adc; +}; + +struct dac_s { + DACName dac; +}; + +struct i2c_s { + I2C_Type *i2c; +}; + +struct spi_s { + SPI_Type *spi; +}; + +#include "gpio_object.h" + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/capi.ar Binary file KL25Z/uARM/capi.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/cmsis_nvic.o Binary file KL25Z/uARM/cmsis_nvic.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/core_cm0.o Binary file KL25Z/uARM/core_cm0.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/cpp.ar Binary file KL25Z/uARM/cpp.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/mbed.ar Binary file KL25Z/uARM/mbed.ar has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/startup_MKL25Z4.o Binary file KL25Z/uARM/startup_MKL25Z4.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/sys.o Binary file KL25Z/uARM/sys.o has changed
diff -r c14af7958ef5 -r 663789d7729f KL25Z/uARM/system_MKL25Z4.o Binary file KL25Z/uARM/system_MKL25Z4.o has changed
diff -r c14af7958ef5 -r 663789d7729f LocalFileSystem.h --- a/LocalFileSystem.h Fri Nov 09 11:33:53 2012 +0000 +++ b/LocalFileSystem.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - LocalFileSystem - * Copyright (c) 2008-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_LOCALFILESYSTEM_H #define MBED_LOCALFILESYSTEM_H @@ -18,19 +30,19 @@ public: LocalFileHandle(FILEHANDLE fh); - + virtual int close(); - + virtual ssize_t write(const void *buffer, size_t length); - + virtual ssize_t read(void *buffer, size_t length); - + virtual int isatty(); - + virtual off_t lseek(off_t position, int whence); - + virtual int fsync(); - + virtual off_t flen(); protected: @@ -38,10 +50,10 @@ int pos; }; -/** A filesystem for accessing the local mbed Microcontroller USB disk drive +/** A filesystem for accessing the local mbed Microcontroller USB disk drive * - * This allows programs to read and write files on the same disk drive that is used to program the - * mbed Microcontroller. Once created, the standard C file access functions are used to open, + * This allows programs to read and write files on the same disk drive that is used to program the + * mbed Microcontroller. Once created, the standard C file access functions are used to open, * read and write files. * * Example: @@ -52,8 +64,8 @@ * * int main() { * FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing - * fprintf(fp, "Hello World!"); - * fclose(fp); + * fprintf(fp, "Hello World!"); + * fclose(fp); * remove("/local/out.txt"); // Removes the file "out.txt" from the local file system * * DIR *d = opendir("/local"); // Opens the root directory of the local file system @@ -76,7 +88,7 @@ public: LocalFileSystem(const char* n) : FileSystemLike(n) { - + } virtual FileHandle *open(const char* name, int flags);
diff -r c14af7958ef5 -r 663789d7729f PortIn.h --- a/PortIn.h Fri Nov 09 11:33:53 2012 +0000 +++ b/PortIn.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,75 +1,93 @@ -/* mbed Microcontroller Library - PortInOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_PORTIN_H -#define MBED_PORTIN_H - -#include "platform.h" - -#if DEVICE_PORTIN - -#include "port_api.h" - -namespace mbed { - -/** A multiple pin digital input - * - * Example: - * @code - * // Switch on an LED if any of mbed pins 21-26 is high - * - * #include "mbed.h" - * - * PortIn p(Port2, 0x0000003F); // p21-p26 - * DigitalOut ind(LED4); - * - * int main() { - * while(1) { - * int pins = p.read(); - * if(pins) { - * ind = 1; - * } else { - * ind = 0; - * } - * } - * } - * @endcode - */ -class PortIn { -public: - - /** Create an PortIn, connected to the specified port - * - * @param port Port to connect to (Port0-Port5) - * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) - */ - PortIn(PortName port, int mask = 0xFFFFFFFF); - - /** Read the value currently output on the port - * - * @returns - * An integer with each bit corresponding to associated port pin setting - */ - int read(); - - /** Set the input pin mode - * - * @param mode PullUp, PullDown, PullNone, OpenDrain - */ - void mode(PinMode mode); - - /** A shorthand for read() - */ - operator int() { - return read(); - } - -private: - port_object _port; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTIN_H +#define MBED_PORTIN_H + +#include "platform.h" + +#if DEVICE_PORTIN + +#include "port_api.h" + +namespace mbed { + +/** A multiple pin digital input + * + * Example: + * @code + * // Switch on an LED if any of mbed pins 21-26 is high + * + * #include "mbed.h" + * + * PortIn p(Port2, 0x0000003F); // p21-p26 + * DigitalOut ind(LED4); + * + * int main() { + * while(1) { + * int pins = p.read(); + * if(pins) { + * ind = 1; + * } else { + * ind = 0; + * } + * } + * } + * @endcode + */ +class PortIn { +public: + + /** Create an PortIn, connected to the specified port + * + * @param port Port to connect to (Port0-Port5) + * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) + */ + PortIn(PortName port, int mask = 0xFFFFFFFF) { + port_init(&_port, port, mask, PIN_INPUT); + } + + /** Read the value currently output on the port + * + * @returns + * An integer with each bit corresponding to associated port pin setting + */ + int read() { + return port_read(&_port); + } + + /** Set the input pin mode + * + * @param mode PullUp, PullDown, PullNone, OpenDrain + */ + void mode(PinMode mode) { + port_mode(&_port, mode); + } + + /** A shorthand for read() + */ + operator int() { + return read(); + } + +private: + port_t _port; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f PortInOut.h --- a/PortInOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/PortInOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,80 +1,104 @@ -/* mbed Microcontroller Library - PortInOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_PORTINOUT_H -#define MBED_PORTINOUT_H - -#include "platform.h" - -#if DEVICE_PORTINOUT - -#include "port_api.h" - -namespace mbed { - -/** A multiple pin digital in/out used to set/read multiple bi-directional pins - */ -class PortInOut { -public: - - /** Create an PortInOut, connected to the specified port - * - * @param port Port to connect to (Port0-Port5) - * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) - */ - PortInOut(PortName port, int mask = 0xFFFFFFFF); - - /** Write the value to the output port - * - * @param value An integer specifying a bit to write for every corresponding port pin - */ - void write(int value); - - /** Read the value currently output on the port - * - * @returns - * An integer with each bit corresponding to associated port pin setting - */ - int read(); - - /** Set as an output - */ - void output(); - - /** Set as an input - */ - void input(); - - /** Set the input pin mode - * - * @param mode PullUp, PullDown, PullNone, OpenDrain - */ - void mode(PinMode mode); - - /** A shorthand for write() - */ - PortInOut& operator= (int value) { - write(value); - return *this; - } - - PortInOut& operator= (PortInOut& rhs) { - write(rhs.read()); - return *this; - } - - /** A shorthand for read() - */ - operator int() { - return read(); - } - -private: - port_object _port; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTINOUT_H +#define MBED_PORTINOUT_H + +#include "platform.h" + +#if DEVICE_PORTINOUT + +#include "port_api.h" + +namespace mbed { + +/** A multiple pin digital in/out used to set/read multiple bi-directional pins + */ +class PortInOut { +public: + + /** Create an PortInOut, connected to the specified port + * + * @param port Port to connect to (Port0-Port5) + * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) + */ + PortInOut(PortName port, int mask = 0xFFFFFFFF) { + port_init(&_port, port, mask, PIN_INPUT); + } + + /** Write the value to the output port + * + * @param value An integer specifying a bit to write for every corresponding port pin + */ + void write(int value) { + port_write(&_port, value); + } + + /** Read the value currently output on the port + * + * @returns + * An integer with each bit corresponding to associated port pin setting + */ + int read() { + return port_read(&_port); + } + + /** Set as an output + */ + void output() { + port_dir(&_port, PIN_OUTPUT); + } + + /** Set as an input + */ + void input() { + port_dir(&_port, PIN_INPUT); + } + + /** Set the input pin mode + * + * @param mode PullUp, PullDown, PullNone, OpenDrain + */ + void mode(PinMode mode) { + port_mode(&_port, mode); + } + + /** A shorthand for write() + */ + PortInOut& operator= (int value) { + write(value); + return *this; + } + + PortInOut& operator= (PortInOut& rhs) { + write(rhs.read()); + return *this; + } + + /** A shorthand for read() + */ + operator int() { + return read(); + } + +private: + port_t _port; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f PortOut.h --- a/PortOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/PortOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,86 +1,104 @@ -/* mbed Microcontroller Library - PortOut - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_PORTOUT_H -#define MBED_PORTOUT_H - -#include "platform.h" - -#if DEVICE_PORTOUT - -#include "port_api.h" - -namespace mbed { -/** A multiple pin digital out - * - * Example: - * @code - * // Toggle all four LEDs - * - * #include "mbed.h" - * - * // LED1 = P1.18 LED2 = P1.20 LED3 = P1.21 LED4 = P1.23 - * #define LED_MASK 0x00B40000 - * - * PortOut ledport(Port1, LED_MASK); - * - * int main() { - * while(1) { - * ledport = LED_MASK; - * wait(1); - * ledport = 0; - * wait(1); - * } - * } - * @endcode - */ -class PortOut { -public: - - /** Create an PortOut, connected to the specified port - * - * @param port Port to connect to (Port0-Port5) - * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) - */ - PortOut(PortName port, int mask = 0xFFFFFFFF); - - /** Write the value to the output port - * - * @param value An integer specifying a bit to write for every corresponding PortOut pin - */ - void write(int value); - - /** Read the value currently output on the port - * - * @returns - * An integer with each bit corresponding to associated PortOut pin setting - */ - int read(); - - /** A shorthand for write() - */ - PortOut& operator= (int value) { - write(value); - return *this; - } - - PortOut& operator= (PortOut& rhs) { - write(rhs.read()); - return *this; - } - - /** A shorthand for read() - */ - operator int() { - return read(); - } - -private: - port_object _port; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PORTOUT_H +#define MBED_PORTOUT_H + +#include "platform.h" + +#if DEVICE_PORTOUT + +#include "port_api.h" + +namespace mbed { +/** A multiple pin digital out + * + * Example: + * @code + * // Toggle all four LEDs + * + * #include "mbed.h" + * + * // LED1 = P1.18 LED2 = P1.20 LED3 = P1.21 LED4 = P1.23 + * #define LED_MASK 0x00B40000 + * + * PortOut ledport(Port1, LED_MASK); + * + * int main() { + * while(1) { + * ledport = LED_MASK; + * wait(1); + * ledport = 0; + * wait(1); + * } + * } + * @endcode + */ +class PortOut { +public: + + /** Create an PortOut, connected to the specified port + * + * @param port Port to connect to (Port0-Port5) + * @param mask A bitmask to identify which bits in the port should be included (0 - ignore) + */ + PortOut(PortName port, int mask = 0xFFFFFFFF) { + port_init(&_port, port, mask, PIN_OUTPUT); + } + + /** Write the value to the output port + * + * @param value An integer specifying a bit to write for every corresponding PortOut pin + */ + void write(int value) { + port_write(&_port, value); + } + + /** Read the value currently output on the port + * + * @returns + * An integer with each bit corresponding to associated PortOut pin setting + */ + int read() { + return port_read(&_port); + } + + /** A shorthand for write() + */ + PortOut& operator= (int value) { + write(value); + return *this; + } + + PortOut& operator= (PortOut& rhs) { + write(rhs.read()); + return *this; + } + + /** A shorthand for read() + */ + operator int() { + return read(); + } + +private: + port_t _port; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f PwmOut.h --- a/PwmOut.h Fri Nov 09 11:33:53 2012 +0000 +++ b/PwmOut.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - PwmOut - * Copyright (c) 2007-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_PWMOUT_H #define MBED_PWMOUT_H @@ -19,7 +31,7 @@ * #include "mbed.h" * * PwmOut led(LED1); - * + * * int main() { * while(1) { * led = led + 0.01; @@ -46,70 +58,97 @@ * * @param pin PwmOut pin to connect to */ - PwmOut(PinName pin); + PwmOut(PinName pin) { + pwmout_init(&_pwm, pin); + } /** Set the ouput duty-cycle, specified as a percentage (float) * - * @param value A floating-point value representing the output duty-cycle, + * @param value A floating-point value representing the output duty-cycle, * specified as a percentage. The value should lie between * 0.0f (representing on 0%) and 1.0f (representing on 100%). * Values outside this range will be saturated to 0.0f or 1.0f. */ - void write(float value); + void write(float value) { + pwmout_write(&_pwm, value); + } /** Return the current output duty-cycle setting, measured as a percentage (float) * * @returns - * A floating-point value representing the current duty-cycle being output on the pin, + * A floating-point value representing the current duty-cycle being output on the pin, * measured as a percentage. The returned value will lie between * 0.0f (representing on 0%) and 1.0f (representing on 100%). * * @note * This value may not match exactly the value set by a previous <write>. */ - float read(); - + float read() { + return pwmout_read(&_pwm); + } + /** Set the PWM period, specified in seconds (float), keeping the duty cycle the same. * * @note * The resolution is currently in microseconds; periods smaller than this * will be set to zero. */ - void period(float seconds); + void period(float seconds) { + pwmout_period(&_pwm, seconds); + } /** Set the PWM period, specified in milli-seconds (int), keeping the duty cycle the same. */ - void period_ms(int ms); + void period_ms(int ms) { + pwmout_period_ms(&_pwm, ms); + } /** Set the PWM period, specified in micro-seconds (int), keeping the duty cycle the same. */ - void period_us(int us); + void period_us(int us) { + pwmout_period_us(&_pwm, us); + } /** Set the PWM pulsewidth, specified in seconds (float), keeping the period the same. */ - void pulsewidth(float seconds); + void pulsewidth(float seconds) { + pwmout_pulsewidth(&_pwm, seconds); + } /** Set the PWM pulsewidth, specified in milli-seconds (int), keeping the period the same. */ - void pulsewidth_ms(int ms); + void pulsewidth_ms(int ms) { + pwmout_pulsewidth_ms(&_pwm, ms); + } /** Set the PWM pulsewidth, specified in micro-seconds (int), keeping the period the same. */ - void pulsewidth_us(int us); + void pulsewidth_us(int us) { + pwmout_pulsewidth_us(&_pwm, us); + } #ifdef MBED_OPERATORS /** A operator shorthand for write() */ - PwmOut& operator= (float value); - PwmOut& operator= (PwmOut& rhs); - + PwmOut& operator= (float value) { + write(value); + return *this; + } + + PwmOut& operator= (PwmOut& rhs) { + write(rhs.read()); + return *this; + } + /** An operator shorthand for read() */ - operator float(); + operator float() { + return read(); + } #endif protected: - pwmout_object _pwm; + pwmout_t _pwm; }; } // namespace mbed
diff -r c14af7958ef5 -r 663789d7729f SPI.h --- a/SPI.h Fri Nov 09 11:33:53 2012 +0000 +++ b/SPI.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,95 +1,109 @@ -/* mbed Microcontroller Library - SPI - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SPI_H -#define MBED_SPI_H - -#include "platform.h" - -#if DEVICE_SPI - -namespace mbed { - -/** A SPI Master, used for communicating with SPI slave devices - * - * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz - * - * Most SPI devices will also require Chip Select and Reset signals. These - * can be controlled using <DigitalOut> pins - * - * Example: - * @code - * // Send a byte to a SPI slave, and record the response - * - * #include "mbed.h" - * - * SPI device(p5, p6, p7); // mosi, miso, sclk - * - * int main() { - * int response = device.write(0xFF); - * } - * @endcode - */ -class SPI { - -public: - - /** Create a SPI master connected to the specified pins - * - * Pin Options: - * (5, 6, 7) or (11, 12, 13) - * - * mosi or miso can be specfied as NC if not used - * - * @param mosi SPI Master Out, Slave In pin - * @param miso SPI Master In, Slave Out pin - * @param sclk SPI Clock pin - */ - SPI(PinName mosi, PinName miso, PinName sclk); - - /** Configure the data transmission format - * - * @param bits Number of bits per SPI frame (4 - 16) - * @param mode Clock polarity and phase mode (0 - 3) - * - * @code - * mode | POL PHA - * -----+-------- - * 0 | 0 0 - * 1 | 0 1 - * 2 | 1 0 - * 3 | 1 1 - * @endcode - */ - void format(int bits, int mode = 0); - - /** Set the spi bus clock frequency - * - * @param hz SCLK frequency in hz (default = 1MHz) - */ - void frequency(int hz = 1000000); - - /** Write to the SPI Slave and return the response - * - * @param value Data to be sent to the SPI slave - * - * @returns - * Response from the SPI slave - */ - virtual int write(int value); - -protected: - SPIName _spi; - - void aquire(void); - static SPI *_owner; - int _bits; - int _mode; - int _hz; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SPI_H +#define MBED_SPI_H + +#include "platform.h" + +#if DEVICE_SPI + +#include "spi_api.h" + +namespace mbed { + +/** A SPI Master, used for communicating with SPI slave devices + * + * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz + * + * Most SPI devices will also require Chip Select and Reset signals. These + * can be controlled using <DigitalOut> pins + * + * Example: + * @code + * // Send a byte to a SPI slave, and record the response + * + * #include "mbed.h" + * + * SPI device(p5, p6, p7); // mosi, miso, sclk + * + * int main() { + * int response = device.write(0xFF); + * } + * @endcode + */ +class SPI { + +public: + + /** Create a SPI master connected to the specified pins + * + * Pin Options: + * (5, 6, 7) or (11, 12, 13) + * + * mosi or miso can be specfied as NC if not used + * + * @param mosi SPI Master Out, Slave In pin + * @param miso SPI Master In, Slave Out pin + * @param sclk SPI Clock pin + */ + SPI(PinName mosi, PinName miso, PinName sclk); + + /** Configure the data transmission format + * + * @param bits Number of bits per SPI frame (4 - 16) + * @param mode Clock polarity and phase mode (0 - 3) + * + * @code + * mode | POL PHA + * -----+-------- + * 0 | 0 0 + * 1 | 0 1 + * 2 | 1 0 + * 3 | 1 1 + * @endcode + */ + void format(int bits, int mode = 0); + + /** Set the spi bus clock frequency + * + * @param hz SCLK frequency in hz (default = 1MHz) + */ + void frequency(int hz = 1000000); + + /** Write to the SPI Slave and return the response + * + * @param value Data to be sent to the SPI slave + * + * @returns + * Response from the SPI slave + */ + virtual int write(int value); + +protected: + spi_t _spi; + + void aquire(void); + static SPI *_owner; + int _bits; + int _mode; + int _hz; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f SPIHalfDuplex.h --- a/SPIHalfDuplex.h Fri Nov 09 11:33:53 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* mbed Microcontroller Library - SPIHalfDuplex - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SPIHALFDUPLEX_H -#define MBED_SPIHALFDUPLEX_H - -#include "platform.h" - -#if DEVICE_SPI - -#include "SPI.h" - -namespace mbed { - -/** A SPI half-duplex master, used for communicating with SPI slave devices - * over a shared data line. - * - * The default format is set to 8-bits for both master and slave, and a - * clock frequency of 1MHz - * - * Most SPI devies will also require Chip Select and Reset signals. These - * can be controlled using <DigitalOut> pins. - * - * Although this is for a shared data line, both MISO and MOSI are defined, - * and should be tied together externally to the mbed. This class handles - * the tri-stating of the MOSI pin. - * - * Example: - * @code - * // Send a byte to a SPI half-duplex slave, and record the response - * - * #include "mbed.h" - * - * SPIHalfDuplex device(p5, p6, p7) // mosi, miso, sclk - * - * int main() { - * int respone = device.write(0xAA); - * } - * @endcode - */ - -class SPIHalfDuplex : public SPI { - -public: - - /** Create a SPI half-duplex master connected to the specified pins - * - * Pin Options: - * (5, 6, 7) or (11, 12, 13) - * - * mosi or miso can be specfied as NC if not used - * - * @param mosi SPI Master Out, Slave In pin - * @param miso SPI Master In, Slave Out pin - * @param sclk SPI Clock pin - * @param name (optional) A string to identify the object - */ - SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk); - - /** Write to the SPI Slave and return the response - * - * @param value Data to be sent to the SPI slave - * - * @returns - * Response from the SPI slave - */ - virtual int write(int value); - - /** Set the number of databits expected from the slave, from 4-16 - * - * @param sbits Number of expected bits in the slave response - */ - void slave_format(int sbits); - -protected: - PinName _mosi; - PinName _miso; - int _sbits; -}; // End of class - -} // End of namespace mbed - -#endif - -#endif
diff -r c14af7958ef5 -r 663789d7729f SPISlave.h --- a/SPISlave.h Fri Nov 09 11:33:53 2012 +0000 +++ b/SPISlave.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,112 +1,126 @@ -/* mbed Microcontroller Library - SPISlave - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SPISLAVE_H -#define MBED_SPISLAVE_H - -#include "platform.h" - -#if DEVICE_SPISLAVE - -namespace mbed { - -/** A SPI slave, used for communicating with a SPI Master device - * - * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz - * - * Example: - * @code - * // Reply to a SPI master as slave - * - * #include "mbed.h" - * - * SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel - * - * int main() { - * device.reply(0x00); // Prime SPI with first reply - * while(1) { - * if(device.receive()) { - * int v = device.read(); // Read byte from master - * v = (v + 1) % 0x100; // Add one to it, modulo 256 - * device.reply(v); // Make this the next reply - * } - * } - * } - * @endcode - */ -class SPISlave { - -public: - - /** Create a SPI slave connected to the specified pins - * - * Pin Options: - * (5, 6, 7i, 8) or (11, 12, 13, 14) - * - * mosi or miso can be specfied as NC if not used - * - * @param mosi SPI Master Out, Slave In pin - * @param miso SPI Master In, Slave Out pin - * @param sclk SPI Clock pin - * @param ssel SPI chip select pin - * @param name (optional) A string to identify the object - */ - SPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel); - - /** Configure the data transmission format - * - * @param bits Number of bits per SPI frame (4 - 16) - * @param mode Clock polarity and phase mode (0 - 3) - * - * @code - * mode | POL PHA - * -----+-------- - * 0 | 0 0 - * 1 | 0 1 - * 2 | 1 0 - * 3 | 1 1 - * @endcode - */ - void format(int bits, int mode = 0); - - /** Set the spi bus clock frequency - * - * @param hz SCLK frequency in hz (default = 1MHz) - */ - void frequency(int hz = 1000000); - - /** Polls the SPI to see if data has been received - * - * @returns - * 0 if no data, - * 1 otherwise - */ - int receive(void); - - /** Retrieve data from receive buffer as slave - * - * @returns - * the data in the receive buffer - */ - int read(void); - - /** Fill the transmission buffer with the value to be written out - * as slave on the next received message from the master. - * - * @param value the data to be transmitted next - */ - void reply(int value); - -protected: - SPIName _spi; - - int _bits; - int _mode; - int _hz; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SPISLAVE_H +#define MBED_SPISLAVE_H + +#include "platform.h" + +#if DEVICE_SPISLAVE + +#include "spi_api.h" + +namespace mbed { + +/** A SPI slave, used for communicating with a SPI Master device + * + * The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz + * + * Example: + * @code + * // Reply to a SPI master as slave + * + * #include "mbed.h" + * + * SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel + * + * int main() { + * device.reply(0x00); // Prime SPI with first reply + * while(1) { + * if(device.receive()) { + * int v = device.read(); // Read byte from master + * v = (v + 1) % 0x100; // Add one to it, modulo 256 + * device.reply(v); // Make this the next reply + * } + * } + * } + * @endcode + */ +class SPISlave { + +public: + + /** Create a SPI slave connected to the specified pins + * + * Pin Options: + * (5, 6, 7i, 8) or (11, 12, 13, 14) + * + * mosi or miso can be specfied as NC if not used + * + * @param mosi SPI Master Out, Slave In pin + * @param miso SPI Master In, Slave Out pin + * @param sclk SPI Clock pin + * @param ssel SPI chip select pin + * @param name (optional) A string to identify the object + */ + SPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel); + + /** Configure the data transmission format + * + * @param bits Number of bits per SPI frame (4 - 16) + * @param mode Clock polarity and phase mode (0 - 3) + * + * @code + * mode | POL PHA + * -----+-------- + * 0 | 0 0 + * 1 | 0 1 + * 2 | 1 0 + * 3 | 1 1 + * @endcode + */ + void format(int bits, int mode = 0); + + /** Set the spi bus clock frequency + * + * @param hz SCLK frequency in hz (default = 1MHz) + */ + void frequency(int hz = 1000000); + + /** Polls the SPI to see if data has been received + * + * @returns + * 0 if no data, + * 1 otherwise + */ + int receive(void); + + /** Retrieve data from receive buffer as slave + * + * @returns + * the data in the receive buffer + */ + int read(void); + + /** Fill the transmission buffer with the value to be written out + * as slave on the next received message from the master. + * + * @param value the data to be transmitted next + */ + void reply(int value); + +protected: + spi_t _spi; + + int _bits; + int _mode; + int _hz; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f Serial.h --- a/Serial.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Serial.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,114 +1,138 @@ -/* mbed Microcontroller Library - Serial - * Copyright (c) 2007-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SERIAL_H -#define MBED_SERIAL_H - -#include "platform.h" - -#if DEVICE_SERIAL - -#include "Stream.h" -#include "FunctionPointer.h" -#include "serial_api.h" - -namespace mbed { - -/** A serial port (UART) for communication with other serial devices - * - * Can be used for Full Duplex communication, or Simplex by specifying - * one pin as NC (Not Connected) - * - * Example: - * @code - * // Print "Hello World" to the PC - * - * #include "mbed.h" - * - * Serial pc(USBTX, USBRX); - * - * int main() { - * pc.printf("Hello World\n"); - * } - * @endcode - */ -class Serial : public Stream { - -public: - - /** Create a Serial port, connected to the specified transmit and receive pins - * - * @param tx Transmit pin - * @param rx Receive pin - * - * @note - * Either tx or rx may be specified as NC if unused - */ - Serial(PinName tx, PinName rx); - - /** Set the baud rate of the serial port - * - * @param baudrate The baudrate of the serial port (default = 9600). - */ - void baud(int baudrate); - - /** Set the transmission format used by the Serial port - * - * @param bits The number of bits in a word (5-8; default = 8) - * @param parity The parity used (Serial::None, Serial::Odd, Serial::Even, Serial::Forced1, Serial::Forced0; default = Serial::None) - * @param stop The number of stop bits (1 or 2; default = 1) - */ - void format(int bits = 8, SerialParity parity=ParityNone, int stop_bits=1); - - /** Determine if there is a character available to read - * - * @returns - * 1 if there is a character available to read, - * 0 otherwise - */ - int readable(); - - /** Determine if there is space available to write a character - * - * @returns - * 1 if there is space to write a character, - * 0 otherwise - */ - int writeable(); - - /** Attach a function to call whenever a serial interrupt is generated - * - * @param fptr A pointer to a void function, or 0 to set as none - * @param type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty) - */ - void attach(void (*fptr)(void), SerialIrq type=RxIrq); - - /** Attach a member function to call whenever a serial interrupt is generated - * - * @param tptr pointer to the object to call the member function on - * @param mptr pointer to the member function to be called - * @param type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty) - */ - template<typename T> - void attach(T* tptr, void (T::*mptr)(void), SerialIrq type=RxIrq) { - if((mptr != NULL) && (tptr != NULL)) { - _irq[type].attach(tptr, mptr); - serial_irq_set(&_serial, type, 1); - } - } - - static void _irq_handler(uint32_t id, SerialIrq irq_type); - -protected: - virtual int _getc(); - virtual int _putc(int c); - - serial_object _serial; - FunctionPointer _irq[2]; -}; - -} // namespace mbed - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SERIAL_H +#define MBED_SERIAL_H + +#include "platform.h" + +#if DEVICE_SERIAL + +#include "Stream.h" +#include "FunctionPointer.h" +#include "serial_api.h" + +namespace mbed { + +/** A serial port (UART) for communication with other serial devices + * + * Can be used for Full Duplex communication, or Simplex by specifying + * one pin as NC (Not Connected) + * + * Example: + * @code + * // Print "Hello World" to the PC + * + * #include "mbed.h" + * + * Serial pc(USBTX, USBRX); + * + * int main() { + * pc.printf("Hello World\n"); + * } + * @endcode + */ +class Serial : public Stream { + +public: + /** Create a Serial port, connected to the specified transmit and receive pins + * + * @param tx Transmit pin + * @param rx Receive pin + * + * @note + * Either tx or rx may be specified as NC if unused + */ + Serial(PinName tx, PinName rx, const char *name=NULL); + + /** Set the baud rate of the serial port + * + * @param baudrate The baudrate of the serial port (default = 9600). + */ + void baud(int baudrate); + + enum Parity { + None = 0, + Odd, + Even, + Forced1, + Forced0 + }; + + enum IrqType { + RxIrq = 0, + TxIrq + }; + + /** Set the transmission format used by the Serial port + * + * @param bits The number of bits in a word (5-8; default = 8) + * @param parity The parity used (Serial::None, Serial::Odd, Serial::Even, Serial::Forced1, Serial::Forced0; default = Serial::None) + * @param stop The number of stop bits (1 or 2; default = 1) + */ + void format(int bits = 8, Parity parity=Serial::None, int stop_bits=1); + + /** Determine if there is a character available to read + * + * @returns + * 1 if there is a character available to read, + * 0 otherwise + */ + int readable(); + + /** Determine if there is space available to write a character + * + * @returns + * 1 if there is space to write a character, + * 0 otherwise + */ + int writeable(); + + /** Attach a function to call whenever a serial interrupt is generated + * + * @param fptr A pointer to a void function, or 0 to set as none + * @param type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty) + */ + void attach(void (*fptr)(void), IrqType type=RxIrq); + + /** Attach a member function to call whenever a serial interrupt is generated + * + * @param tptr pointer to the object to call the member function on + * @param mptr pointer to the member function to be called + * @param type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty) + */ + template<typename T> + void attach(T* tptr, void (T::*mptr)(void), IrqType type=RxIrq) { + if((mptr != NULL) && (tptr != NULL)) { + _irq[type].attach(tptr, mptr); + serial_irq_set(&_serial, (SerialIrq)type, 1); + } + } + + static void _irq_handler(uint32_t id, SerialIrq irq_type); + +protected: + virtual int _getc(); + virtual int _putc(int c); + + serial_t _serial; + FunctionPointer _irq[2]; +}; + +} // namespace mbed + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f SerialHalfDuplex.h --- a/SerialHalfDuplex.h Fri Nov 09 11:33:53 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* mbed Microcontroller Library - SerialHalfDuplex - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SERIALHALFDUPLEX_H -#define MBED_SERIALHALFDUPLEX_H - -#include "platform.h" - -#if DEVICE_SERIAL - -#include "Serial.h" -#include "gpio_api.h" - -namespace mbed { - -/** A serial port (UART) for communication with other devices using - * Half-Duplex, allowing transmit and receive on a single - * shared transmit and receive line. Only one end should be transmitting - * at a time. - * - * Both the tx and rx pin should be defined, and wired together. - * This is in addition to them being wired to the other serial - * device to allow both read and write functions to operate. - * - * For Simplex and Full-Duplex Serial communication, see Serial() - * - * Example: - * @code - * // Send a byte to a second HalfDuplex device, and read the response - * - * #include "mbed.h" - * - * // p9 and p10 should be wired together to form "a" - * // p28 and p27 should be wired together to form "b" - * // p9/p10 should be wired to p28/p27 as the Half Duplex connection - * - * SerialHalfDuplex a(p9, p10); - * SerialHalfDuplex b(p28, p27); - * - * void b_rx() { // second device response - * b.putc(b.getc() + 4); - * } - * - * int main() { - * b.attach(&b_rx); - * for (int c = 'A'; c < 'Z'; c++) { - * a.putc(c); - * printf("sent [%c]\n", c); - * wait(0.5); // b should respond - * if (a.readable()) { - * printf("received [%c]\n", a.getc()); - * } - * } - * } - * @endcode - */ -class SerialHalfDuplex : public Serial { - -public: - /** Create a half-duplex serial port, connected to the specified transmit - * and receive pins. - * - * These pins should be wired together, as well as to the target device - * - * @param tx Transmit pin - * @param rx Receive pin - */ - SerialHalfDuplex(PinName tx, PinName rx); - -protected: - gpio_object gpio; - - virtual int _putc(int c); - virtual int _getc(void); - -}; // End class SerialHalfDuplex - -} // End namespace - -#endif - -#endif
diff -r c14af7958ef5 -r 663789d7729f Stream.h --- a/Stream.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Stream.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,18 +1,30 @@ -/* mbed Microcontroller Library - Stream - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_STREAM_H #define MBED_STREAM_H #include "platform.h" -#include "FileHandle.h" +#include "FileLike.h" namespace mbed { -class Stream : public FileHandle { +class Stream : public FileLike { public: - Stream(void); + Stream(const char *name=NULL); virtual ~Stream(); int putc(int c); @@ -21,7 +33,7 @@ char *gets(char *s, int size); int printf(const char* format, ...); int scanf(const char* format, ...); - + operator std::FILE*() {return _file;} protected: @@ -35,7 +47,7 @@ virtual int _putc(int c) = 0; virtual int _getc() = 0; - + std::FILE *_file; };
diff -r c14af7958ef5 -r 663789d7729f Ticker.h --- a/Ticker.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Ticker.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - Ticker - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_TICKER_H #define MBED_TICKER_H @@ -11,7 +23,7 @@ /** A Ticker is used to call a function at a recurring interval * - * You can use as many seperate Ticker objects as you require. + * You can use as many seperate Ticker objects as you require. * * Example: * @code @@ -22,9 +34,9 @@ * Ticker timer; * DigitalOut led1(LED1); * DigitalOut led2(LED2); - * + * * int flip = 0; - * + * * void attime() { * flip = !flip; * } @@ -54,7 +66,7 @@ void attach(void (*fptr)(void), float t) { attach_us(fptr, t * 1000000.0f); } - + /** Attach a member function to be called by the Ticker, specifiying the interval in seconds * * @param tptr pointer to the object to call the member function on @@ -65,7 +77,7 @@ void attach(T* tptr, void (T::*mptr)(void), float t) { attach_us(tptr, mptr, t * 1000000.0f); } - + /** Attach a function to be called by the Ticker, specifiying the interval in micro-seconds * * @param fptr pointer to the function to be called @@ -81,13 +93,13 @@ * @param tptr pointer to the object to call the member function on * @param mptr pointer to the member function to be called * @param t the time between calls in micro-seconds - */ + */ template<typename T> void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) { _function.attach(tptr, mptr); setup(t); } - + /** Detach the function */ void detach(); @@ -95,7 +107,7 @@ protected: void setup(unsigned int t); virtual void handler(); - + unsigned int _delay; FunctionPointer _function; };
diff -r c14af7958ef5 -r 663789d7729f Timeout.h --- a/Timeout.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Timeout.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - Timeout - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_TIMEOUT_H #define MBED_TIMEOUT_H @@ -10,23 +22,23 @@ /** A Timeout is used to call a function at a point in the future * - * You can use as many seperate Timeout objects as you require. + * You can use as many seperate Timeout objects as you require. * * Example: * @code * // Blink until timeout. * * #include "mbed.h" - * + * * Timeout timeout; * DigitalOut led(LED1); - * + * * int on = 1; - * + * * void attimeout() { * on = 0; * } - * + * * int main() { * timeout.attach(&attimeout, 5); * while(on) {
diff -r c14af7958ef5 -r 663789d7729f Timer.h --- a/Timer.h Fri Nov 09 11:33:53 2012 +0000 +++ b/Timer.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,76 +1,88 @@ -/* mbed Microcontroller Library - Timer - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_TIMER_H -#define MBED_TIMER_H - -#include "platform.h" - -namespace mbed { - -/** A general purpose timer - * - * Example: - * @code - * // Count the time to toggle a LED - * - * #include "mbed.h" - * - * Timer timer; - * DigitalOut led(LED1); - * int begin, end; - * - * int main() { - * timer.start(); - * begin = timer.read_us(); - * led = !led; - * end = timer.read_us(); - * printf("Toggle the led takes %d us", end - begin); - * } - * @endcode - */ -class Timer { - -public: - Timer(); - - /** Start the timer - */ - void start(); - - /** Stop the timer - */ - void stop(); - - /** Reset the timer to 0. - * - * If it was already counting, it will continue - */ - void reset(); - - /** Get the time passed in seconds - */ - float read(); - - /** Get the time passed in mili-seconds - */ - int read_ms(); - - /** Get the time passed in micro-seconds - */ - int read_us(); - -#ifdef MBED_OPERATORS - operator float(); -#endif - -protected: - int slicetime(); - int _running; // whether the timer is running - unsigned int _start; // the start time of the latest slice - int _time; // any accumulated time from previous slices -}; - -} // namespace mbed - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_TIMER_H +#define MBED_TIMER_H + +#include "platform.h" + +namespace mbed { + +/** A general purpose timer + * + * Example: + * @code + * // Count the time to toggle a LED + * + * #include "mbed.h" + * + * Timer timer; + * DigitalOut led(LED1); + * int begin, end; + * + * int main() { + * timer.start(); + * begin = timer.read_us(); + * led = !led; + * end = timer.read_us(); + * printf("Toggle the led takes %d us", end - begin); + * } + * @endcode + */ +class Timer { + +public: + Timer(); + + /** Start the timer + */ + void start(); + + /** Stop the timer + */ + void stop(); + + /** Reset the timer to 0. + * + * If it was already counting, it will continue + */ + void reset(); + + /** Get the time passed in seconds + */ + float read(); + + /** Get the time passed in mili-seconds + */ + int read_ms(); + + /** Get the time passed in micro-seconds + */ + int read_us(); + +#ifdef MBED_OPERATORS + operator float(); +#endif + +protected: + int slicetime(); + int _running; // whether the timer is running + unsigned int _start; // the start time of the latest slice + int _time; // any accumulated time from previous slices +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f TimerEvent.h --- a/TimerEvent.h Fri Nov 09 11:33:53 2012 +0000 +++ b/TimerEvent.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,40 +1,52 @@ -/* mbed Microcontroller Library - TimerEvent - * Copyright (c) 2007-2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_TIMEREVENT_H -#define MBED_TIMEREVENT_H - -#include "us_ticker_api.h" - -namespace mbed { - -/** Base abstraction for timer interrupts -*/ -class TimerEvent { -public: - TimerEvent(); - - /** The handler registered with the underlying timer interrupt - */ - static void irq(uint32_t id); - - /** Destruction removes it... - */ - virtual ~TimerEvent(); - -protected: - // The handler called to service the timer event of the derived class - virtual void handler() = 0; - - // insert in to linked list - void insert(unsigned int timestamp); - - // remove from linked list, if in it - void remove(); - - ticker_event event; -}; - -} // namespace mbed - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_TIMEREVENT_H +#define MBED_TIMEREVENT_H + +#include "us_ticker_api.h" + +namespace mbed { + +/** Base abstraction for timer interrupts +*/ +class TimerEvent { +public: + TimerEvent(); + + /** The handler registered with the underlying timer interrupt + */ + static void irq(uint32_t id); + + /** Destruction removes it... + */ + virtual ~TimerEvent(); + +protected: + // The handler called to service the timer event of the derived class + virtual void handler() = 0; + + // insert in to linked list + void insert(unsigned int timestamp); + + // remove from linked list, if in it + void remove(); + + ticker_event_t event; +}; + +} // namespace mbed + +#endif
diff -r c14af7958ef5 -r 663789d7729f analogin_api.h --- a/analogin_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/analogin_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,26 +1,39 @@ -/* mbed Microcontroller Library - analogin_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_ANALOGIN_API_H -#define MBED_ANALOGIN_API_H - -#include "device.h" - -#if DEVICE_ANALOGIN - -#ifdef __cplusplus -extern "C" { -#endif - -ADCName analogin_init(PinName pin); - -float analogin_read(ADCName adc); -uint16_t analogin_read_u16(ADCName adc); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_ANALOGIN_API_H +#define MBED_ANALOGIN_API_H + +#include "device.h" + +#if DEVICE_ANALOGIN + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct analogin_s analogin_t; + +void analogin_init (analogin_t *obj, PinName pin); +float analogin_read (analogin_t *obj); +uint16_t analogin_read_u16(analogin_t *obj); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f analogout_api.h --- a/analogout_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/analogout_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,29 +1,42 @@ -/* mbed Microcontroller Library - analogout_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_ANALOGOUT_API_H -#define MBED_ANALOGOUT_API_H - -#include "device.h" - -#if DEVICE_ANALOGOUT - -#ifdef __cplusplus -extern "C" { -#endif - -DACName analogout_init(PinName pin); -void analogout_free(DACName dac); - -void analogout_write(DACName dac, float value); -void analogout_write_u16(DACName dac, uint16_t value); -float analogout_read(DACName dac); -uint16_t analogout_read_u16(DACName dac); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_ANALOGOUT_API_H +#define MBED_ANALOGOUT_API_H + +#include "device.h" + +#if DEVICE_ANALOGOUT + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct dac_s dac_t; + +void analogout_init (dac_t *obj, PinName pin); +void analogout_free (dac_t *obj); +void analogout_write (dac_t *obj, float value); +void analogout_write_u16(dac_t *obj, uint16_t value); +float analogout_read (dac_t *obj); +uint16_t analogout_read_u16 (dac_t *obj); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f can_api.h --- a/can_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/can_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - can_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_CAN_API_H #define MBED_CAN_API_H @@ -8,7 +20,7 @@ #if DEVICE_CAN -#include "PinNames.h" +#include "PinNames.h" #include "PeripheralNames.h" #include "can_helper.h" @@ -16,19 +28,17 @@ extern "C" { #endif -CANName can_init(PinName rd, PinName td); -void can_free(CANName id); - -int can_frequency(CANName id, int hz); +typedef struct can_s can_t; -int can_write(CANName id, CAN_Message, int cc); -int can_read(CANName id, CAN_Message *msg); - -void can_reset(CANName id); -unsigned char can_rderror(CANName id); -unsigned char can_tderror(CANName id); - -void can_monitor(CANName id, int silent); +void can_init (can_t *obj, PinName rd, PinName td); +void can_free (can_t *obj); +int can_frequency(can_t *obj, int hz); +int can_write (can_t *obj, CAN_Message, int cc); +int can_read (can_t *obj, CAN_Message *msg); +void can_reset (can_t *obj); +unsigned char can_rderror (can_t *obj); +unsigned char can_tderror (can_t *obj); +void can_monitor (can_t *obj, int silent); #ifdef __cplusplus };
diff -r c14af7958ef5 -r 663789d7729f can_helper.h --- a/can_helper.h Fri Nov 09 11:33:53 2012 +0000 +++ b/can_helper.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,15 +1,27 @@ -/* mbed Microcontroller Library - can_helper - * Copyright (c) 2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_CAN_HELPER_H #define MBED_CAN_HELPER_H +#if DEVICE_CAN + #ifdef __cplusplus extern "C" { #endif -#if DEVICE_CAN - enum CANFormat { CANStandard = 0, CANExtended = 1 @@ -31,10 +43,10 @@ }; typedef struct CAN_Message CAN_Message; -#endif - #ifdef __cplusplus }; #endif +#endif + #endif // MBED_CAN_HELPER_H
diff -r c14af7958ef5 -r 663789d7729f error.h --- a/error.h Fri Nov 09 11:33:53 2012 +0000 +++ b/error.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - error - * Copyright (c) 2006-2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_ERROR_H #define MBED_ERROR_H @@ -28,12 +40,12 @@ * error("That shouldn't have happened!"); * @endcode * - * If the mbed running the program executes this function, it will print the + * If the mbed running the program executes this function, it will print the * message via the USB serial port, and then die with the blue lights of death! * - * The message can use printf-style formatting, so you can report variables in the + * The message can use printf-style formatting, so you can report variables in the * message too. For example, you could use this to check a run-time condition: - * + * * @code * if(x >= 5) { * error("expected x to be less than 5, but got %d", x); @@ -42,12 +54,13 @@ */ #include <stdlib.h> +#include "device.h" -#ifdef NDEBUG - #define error(...) (exit(1)) -#else +#ifdef DEVICE_STDIO_MESSAGES #include <stdio.h> #define error(...) (fprintf(stderr, __VA_ARGS__), exit(1)) +#else + #define error(...) (exit(1)) #endif #endif
diff -r c14af7958ef5 -r 663789d7729f ethernet_api.h --- a/ethernet_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/ethernet_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - ethernet_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_ETHERNET_API_H #define MBED_ETHERNET_API_H
diff -r c14af7958ef5 -r 663789d7729f gpio_api.h --- a/gpio_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/gpio_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,28 +1,40 @@ -/* mbed Microcontroller Library - gpio_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_GPIO_API_H -#define MBED_GPIO_API_H - -#include "device.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Set the given pin as GPIO - * @param pin The pin to be set as GPIO - * @return The GPIO port mask for this pin - **/ -uint32_t gpio_set(PinName pin); - -/* GPIO object */ -void gpio_init(gpio_object *obj, PinName pin, PinDirection direction); -void gpio_mode(gpio_object *obj, PinMode mode); -void gpio_dir (gpio_object *obj, PinDirection direction); - -#ifdef __cplusplus -} -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_API_H +#define MBED_GPIO_API_H + +#include "device.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set the given pin as GPIO + * @param pin The pin to be set as GPIO + * @return The GPIO port mask for this pin + **/ +uint32_t gpio_set(PinName pin); + +/* GPIO object */ +void gpio_init(gpio_t *obj, PinName pin, PinDirection direction); +void gpio_mode(gpio_t *obj, PinMode mode); +void gpio_dir (gpio_t *obj, PinDirection direction); + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f gpio_irq_api.h --- a/gpio_irq_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/gpio_irq_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,35 +1,47 @@ -/* mbed Microcontroller Library - gpio_irq_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_GPIO_IRQ_API_H -#define MBED_GPIO_IRQ_API_H - -#include "device.h" - -#if DEVICE_INTERRUPTIN - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - IRQ_NONE, - IRQ_RISE, - IRQ_FALL -} gpio_irq_event; - -typedef struct gpio_irq_object_s gpio_irq_object; - -typedef void (*gpio_irq_handler)(uint32_t id, gpio_irq_event event); - -int gpio_irq_init(gpio_irq_object *obj, PinName pin, gpio_irq_handler handler, uint32_t id); -void gpio_irq_free(gpio_irq_object *obj); -void gpio_irq_set (gpio_irq_object *obj, gpio_irq_event event, uint32_t enable); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_GPIO_IRQ_API_H +#define MBED_GPIO_IRQ_API_H + +#include "device.h" + +#if DEVICE_INTERRUPTIN + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + IRQ_NONE, + IRQ_RISE, + IRQ_FALL +} gpio_irq_event; + +typedef struct gpio_irq_s gpio_irq_t; + +typedef void (*gpio_irq_handler)(uint32_t id, gpio_irq_event event); + +int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32_t id); +void gpio_irq_free(gpio_irq_t *obj); +void gpio_irq_set (gpio_irq_t *obj, gpio_irq_event event, uint32_t enable); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f i2c_api.h --- a/i2c_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/i2c_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,40 +1,53 @@ -/* mbed Microcontroller Library - i2c_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_I2C_API_H -#define MBED_I2C_API_H - -#include "device.h" - -#if DEVICE_I2C - -#ifdef __cplusplus -extern "C" { -#endif - -I2CName i2c_init(PinName sda, PinName scl); - -void i2c_frequency (I2CName i2c, int hz); -int i2c_start (I2CName i2c); -void i2c_stop (I2CName i2c); -int i2c_read (I2CName i2c, int address, char *data, int length, int stop); -int i2c_write (I2CName i2c, int address, const char *data, int length, int stop); -void i2c_reset (I2CName i2c); -int i2c_byte_read (I2CName i2c, int last); -int i2c_byte_write(I2CName i2c, int data); - -#if DEVICE_I2CSLAVE -void i2c_slave_mode (I2CName i2c, int enable_slave); -int i2c_slave_receive(I2CName i2c); -int i2c_slave_read (I2CName i2c, char *data, int length); -int i2c_slave_write (I2CName i2c, const char *data, int length); -void i2c_slave_address(I2CName i2c, int idx, uint32_t address, uint32_t mask); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_I2C_API_H +#define MBED_I2C_API_H + +#include "device.h" + +#if DEVICE_I2C + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct i2c_s i2c_t; + +void i2c_init (i2c_t *obj, PinName sda, PinName scl); +void i2c_frequency (i2c_t *obj, int hz); +int i2c_start (i2c_t *obj); +void i2c_stop (i2c_t *obj); +int i2c_read (i2c_t *obj, int address, char *data, int length, int stop); +int i2c_write (i2c_t *obj, int address, const char *data, int length, int stop); +void i2c_reset (i2c_t *obj); +int i2c_byte_read (i2c_t *obj, int last); +int i2c_byte_write (i2c_t *obj, int data); + +#if DEVICE_I2CSLAVE +void i2c_slave_mode (i2c_t *obj, int enable_slave); +int i2c_slave_receive(i2c_t *obj); +int i2c_slave_read (i2c_t *obj, char *data, int length); +int i2c_slave_write (i2c_t *obj, const char *data, int length); +void i2c_slave_address(i2c_t *obj, int idx, uint32_t address, uint32_t mask); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f mbed.h --- a/mbed.h Fri Nov 09 11:33:53 2012 +0000 +++ b/mbed.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,15 +1,26 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2011 ARM Limited. All rights reserved. + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_H #define MBED_H -#define MBED_LIBRARY_VERSION 29 - +#define MBED_LIBRARY_VERSION 30 + +#include "platform.h" + // Useful C libraries -#include <stdio.h> -#include <stdlib.h> -#include <string.h> #include <math.h> #include <time.h> @@ -31,10 +42,8 @@ #include "AnalogOut.h" #include "PwmOut.h" #include "Serial.h" -#include "SerialHalfDuplex.h" #include "SPI.h" #include "SPISlave.h" -#include "SPIHalfDuplex.h" #include "I2C.h" #include "I2CSlave.h" #include "Ethernet.h" @@ -47,6 +56,7 @@ #include "LocalFileSystem.h" #include "InterruptIn.h" #include "wait_api.h" +#include "sleep_api.h" #include "rtc_time.h" using namespace mbed;
diff -r c14af7958ef5 -r 663789d7729f mbed_debug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_debug.h Mon Feb 18 09:41:56 2013 +0000 @@ -0,0 +1,66 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEBUG_H +#define MBED_DEBUG_H +#include "device.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef DEVICE_STDIO_MESSAGES +#include <stdio.h> +#include <stdarg.h> + +/** Output a debug message + * + * @param format printf-style format string, followed by variables + */ +static inline void debug(const char *format, ...) { + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); +} + +/** Conditionally output a debug message + * + * NOTE: If the condition is constant false (!= 1) and the compiler optimization + * level is greater than 0, then the whole function will be compiled away. + * + * @param condition output only if condition is true (== 1) + * @param format printf-style format string, followed by variables + */ +static inline void debug_if(int condition, const char *format, ...) { + if (condition == 1) { + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); + } +} + +#else +static inline void debug(const char *format, ...) {} +static inline void debug_if(int condition, const char *format, ...) {} + +#endif + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f mbed_interface.h --- a/mbed_interface.h Fri Nov 09 11:33:53 2012 +0000 +++ b/mbed_interface.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,23 +1,39 @@ -/** Functions to control the mbed interface +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * mbed Microcontrollers have a built-in interface to provide functionality such as - * drag-n-drop download, reset, serial-over-usb, and access to the mbed local file - * system. These functions provide means to control the interface suing semihost - * calls it supports. - */ - -/* mbed Microcontroller Library - mbed_interface - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_INTERFACE_H #define MBED_INTERFACE_H +#include "device.h" + #ifdef __cplusplus extern "C" { #endif +#if DEVICE_SEMIHOST + +/** Functions to control the mbed interface + * + * mbed Microcontrollers have a built-in interface to provide functionality such as + * drag-n-drop download, reset, serial-over-usb, and access to the mbed local file + * system. These functions provide means to control the interface suing semihost + * calls it supports. + */ + /** Determine whether the mbed interface is connected, based on whether debug is enabled - * + * * @returns * 1 if interface is connected, * 0 otherwise @@ -41,9 +57,9 @@ */ int mbed_interface_disconnect(void); -/** This will disconnect the debug aspect of the interface, and if the USB cable is not +/** This will disconnect the debug aspect of the interface, and if the USB cable is not * connected, also power down the interface. If the USB cable is connected, the interface - * will remain powered up and visible to the host + * will remain powered up and visible to the host * * @returns * 0 if successful, @@ -62,6 +78,8 @@ */ int mbed_interface_uid(char *uid); +#endif + /** This returns a unique 6-byte MAC address, based on the interface UID * If the interface is not present, it returns a default fixed MAC address (00:02:F7:F0:00:00) * @@ -72,7 +90,7 @@ */ void mbed_mac_address(char *mac); -/** Cause the mbed to flash the BLOD LED sequence +/** Cause the mbed to flash the BLOD (Blue LEDs Of Death) sequence */ void mbed_die(void);
diff -r c14af7958ef5 -r 663789d7729f pinmap.h --- a/pinmap.h Fri Nov 09 11:33:53 2012 +0000 +++ b/pinmap.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,32 +1,44 @@ -/* mbed Microcontroller Library - pinmap - * Copyright (c) 2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_PINMAP_H -#define MBED_PINMAP_H - -#include "PinNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -PinName parse_pins(const char *str); - -typedef struct { - PinName pin; - int peripheral; - int function; -} PinMap; - -void pin_function(PinName pin, int function); -void pin_mode (PinName pin, PinMode mode); - -uint32_t pinmap_peripheral(PinName pin, const PinMap* map); -uint32_t pinmap_merge (uint32_t a, uint32_t b); -void pinmap_pinout (PinName pin, const PinMap *map); - -#ifdef __cplusplus -} -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINMAP_H +#define MBED_PINMAP_H + +#include "PinNames.h" + +#ifdef __cplusplus +extern "C" { +#endif + +PinName parse_pins(const char *str); + +typedef struct { + PinName pin; + int peripheral; + int function; +} PinMap; + +void pin_function(PinName pin, int function); +void pin_mode (PinName pin, PinMode mode); + +uint32_t pinmap_peripheral(PinName pin, const PinMap* map); +uint32_t pinmap_merge (uint32_t a, uint32_t b); +void pinmap_pinout (PinName pin, const PinMap *map); + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f platform.h --- a/platform.h Fri Nov 09 11:33:53 2012 +0000 +++ b/platform.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,18 +1,30 @@ -/* mbed Microcontroller Library - platform - * Copyright (c) 2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_PLATFORM_H -#define MBED_PLATFORM_H - -#define MBED_OPERATORS 1 - -#include "device.h" -#include "PinNames.h" -#include "PeripheralNames.h" - -#include <cstddef> -#include <cstdlib> -#include <cstdio> -#include <cstring> - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PLATFORM_H +#define MBED_PLATFORM_H + +#define MBED_OPERATORS 1 + +#include "device.h" +#include "PinNames.h" +#include "PeripheralNames.h" + +#include <cstddef> +#include <cstdlib> +#include <cstdio> +#include <cstring> + +#endif
diff -r c14af7958ef5 -r 663789d7729f port_api.h --- a/port_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/port_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - portmap - * Copyright (c) 2010-2011 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_PORTMAP_H #define MBED_PORTMAP_H @@ -12,15 +24,15 @@ extern "C" { #endif -typedef struct port_object_s port_object; +typedef struct port_s port_t; PinName port_pin(PortName port, int pin_n); -void port_init (port_object *obj, PortName port, int mask, PinDirection dir); -void port_mode (port_object *obj, PinMode mode); -void port_dir (port_object *obj, PinDirection dir); -void port_write(port_object *obj, int value); -int port_read (port_object *obj); +void port_init (port_t *obj, PortName port, int mask, PinDirection dir); +void port_mode (port_t *obj, PinMode mode); +void port_dir (port_t *obj, PinDirection dir); +void port_write(port_t *obj, int value); +int port_read (port_t *obj); #ifdef __cplusplus }
diff -r c14af7958ef5 -r 663789d7729f pwmout_api.h --- a/pwmout_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/pwmout_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,37 +1,49 @@ -/* mbed Microcontroller Library - pwmout_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_PWMOUT_API_H -#define MBED_PWMOUT_API_H - -#include "device.h" - -#if DEVICE_PWMOUT - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct pwmout_object_s pwmout_object; - -void pwmout_init (pwmout_object* obj, PinName pin); -void pwmout_free (pwmout_object* obj); - -void pwmout_write (pwmout_object* obj, float percent); -float pwmout_read (pwmout_object* obj); - -void pwmout_period (pwmout_object* obj, float seconds); -void pwmout_period_ms (pwmout_object* obj, int ms); -void pwmout_period_us (pwmout_object* obj, int us); - -void pwmout_pulsewidth (pwmout_object* obj, float seconds); -void pwmout_pulsewidth_ms(pwmout_object* obj, int ms); -void pwmout_pulsewidth_us(pwmout_object* obj, int us); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PWMOUT_API_H +#define MBED_PWMOUT_API_H + +#include "device.h" + +#if DEVICE_PWMOUT + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct pwmout_s pwmout_t; + +void pwmout_init (pwmout_t* obj, PinName pin); +void pwmout_free (pwmout_t* obj); + +void pwmout_write (pwmout_t* obj, float percent); +float pwmout_read (pwmout_t* obj); + +void pwmout_period (pwmout_t* obj, float seconds); +void pwmout_period_ms (pwmout_t* obj, int ms); +void pwmout_period_us (pwmout_t* obj, int us); + +void pwmout_pulsewidth (pwmout_t* obj, float seconds); +void pwmout_pulsewidth_ms(pwmout_t* obj, int ms); +void pwmout_pulsewidth_us(pwmout_t* obj, int us); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f rtc_api.h --- a/rtc_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/rtc_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,30 +1,42 @@ -/* mbed Microcontroller Library - rtc_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_RTC_API_H -#define MBED_RTC_API_H - -#include "device.h" - -#if DEVICE_RTC - -#include <time.h> - -#ifdef __cplusplus -extern "C" { -#endif - -void rtc_init(void); -void rtc_free(void); -int rtc_isenabled(void); - -time_t rtc_read(void); -void rtc_write(time_t t); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_RTC_API_H +#define MBED_RTC_API_H + +#include "device.h" + +#if DEVICE_RTC + +#include <time.h> + +#ifdef __cplusplus +extern "C" { +#endif + +void rtc_init(void); +void rtc_free(void); +int rtc_isenabled(void); + +time_t rtc_read(void); +void rtc_write(time_t t); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f rtc_time.h --- a/rtc_time.h Fri Nov 09 11:33:53 2012 +0000 +++ b/rtc_time.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,62 +1,74 @@ -/** Implementation of the C time.h functions - * - * Provides mechanisms to set and read the current time, based - * on the microcontroller Real-Time Clock (RTC), plus some - * standard C manipulation and formating functions. - * - * Example: - * @code - * #include "mbed.h" - * - * int main() { - * set_time(1256729737); // Set RTC time to Wed, 28 Oct 2009 11:35:37 - * - * while(1) { - * time_t seconds = time(NULL); - * - * printf("Time as seconds since January 1, 1970 = %d\n", seconds); - * - * printf("Time as a basic string = %s", ctime(&seconds)); - * - * char buffer[32]; - * strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); - * printf("Time as a custom formatted string = %s", buffer); - * - * wait(1); - * } - * } - * @endcode - */ - -/* mbed Microcontroller Library - rtc_time - * Copyright (c) 2009 ARM Limited. All rights reserved. - */ - -#include <time.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** Set the current time - * - * Initialises and sets the time of the microcontroller Real-Time Clock (RTC) - * to the time represented by the number of seconds since January 1, 1970 - * (the UNIX timestamp). - * - * @param t Number of seconds since January 1, 1970 (the UNIX timestamp) - * - * Example: - * @code - * #include "mbed.h" - * - * int main() { - * set_time(1256729737); // Set time to Wed, 28 Oct 2009 11:35:37 - * } - * @endcode - */ -void set_time(time_t t); - -#ifdef __cplusplus -} -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <time.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** Implementation of the C time.h functions + * + * Provides mechanisms to set and read the current time, based + * on the microcontroller Real-Time Clock (RTC), plus some + * standard C manipulation and formating functions. + * + * Example: + * @code + * #include "mbed.h" + * + * int main() { + * set_time(1256729737); // Set RTC time to Wed, 28 Oct 2009 11:35:37 + * + * while(1) { + * time_t seconds = time(NULL); + * + * printf("Time as seconds since January 1, 1970 = %d\n", seconds); + * + * printf("Time as a basic string = %s", ctime(&seconds)); + * + * char buffer[32]; + * strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); + * printf("Time as a custom formatted string = %s", buffer); + * + * wait(1); + * } + * } + * @endcode + */ + +/** Set the current time + * + * Initialises and sets the time of the microcontroller Real-Time Clock (RTC) + * to the time represented by the number of seconds since January 1, 1970 + * (the UNIX timestamp). + * + * @param t Number of seconds since January 1, 1970 (the UNIX timestamp) + * + * Example: + * @code + * #include "mbed.h" + * + * int main() { + * set_time(1256729737); // Set time to Wed, 28 Oct 2009 11:35:37 + * } + * @endcode + */ +void set_time(time_t t); + +#ifdef __cplusplus +} +#endif
diff -r c14af7958ef5 -r 663789d7729f semihost_api.h --- a/semihost_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/semihost_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,84 +1,93 @@ -/* mbed Microcontroller Library - semihost_api - * Copyright (c) 2006-2009 ARM Limited. All rights reserved. - */ -#ifndef MBED_SEMIHOST_H -#define MBED_SEMIHOST_H - -#include "device.h" -#include "toolchain.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* __semihost intrinsic - This intrinsic inserts an SVC or BKPT instruction into the instruction stream - generated by the compiler. It enables you to make semihosting calls from C or - C++ that are independent of the target architecture. - */ -#ifndef __CC_ARM -/* Semihost implementation taken from: - * git://github.com/elua/elua.git/src/semifs.c - */ - -/* SWI numbers for RDI (Angel) monitors */ -#ifdef __thumb__ -#define AngelSWI 0xAB -#else -#define AngelSWI 0x123456 -#endif -/* For Thumb-2 code use the BKPT instruction instead of SWI */ -#ifdef __thumb2__ -#define AngelSWIInsn "bkpt" -#define AngelSWIAsm bkpt -#else -#define AngelSWIInsn "swi" -#define AngelSWIAsm swi -#endif - -inline int __semihost(int reason, const void *arg) { - int value; - asm volatile ("mov r0, %1; mov r1, %2; " AngelSWIInsn " %a3; mov %0, r0" - : "=r" (value) /* Outputs */ - : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */ - : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc" - /* Clobbers r0 and r1, and lr if in supervisor mode */); - /* Accordingly to page 13-77 of ARM DUI 0040D other registers - can also be clobbered. Some memory positions may also be - changed by a system call, so they should not be kept in - registers. Note: we are assuming the manual is right and - Angel is respecting the APCS. */ - - return value; -} - -#endif - -#if DEVICE_LOCALFILESYSTEM -FILEHANDLE semihost_open(const char* name, int openmode); -int semihost_close(FILEHANDLE fh); -int semihost_read(FILEHANDLE fh, unsigned char* buffer, unsigned int length, int mode); -int semihost_write(FILEHANDLE fh, const unsigned char* buffer, unsigned int length, int mode); -int semihost_ensure(FILEHANDLE fh); -long semihost_flen(FILEHANDLE fh); -int semihost_seek(FILEHANDLE fh, long position); -int semihost_istty(FILEHANDLE fh); - -int semihost_remove(const char *name); -int semihost_rename(const char *old_name, const char *new_name); -#endif - -int semihost_uid(char *uid); -int semihost_reset(void); -int semihost_vbus(void); -int semihost_powerdown(void); -int semihost_exit(void); - -int semihost_connected(void); -int semihost_disabledebug(void); - -#ifdef __cplusplus -} -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SEMIHOST_H +#define MBED_SEMIHOST_H + +#include "device.h" +#include "toolchain.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if DEVICE_SEMIHOST + +#ifndef __CC_ARM + +#if defined(__ICCARM__) +inline int __semihost(int reason, const void *arg) { + return __semihosting(reason, (void*)arg); +} +#else + +#ifdef __thumb__ +# define AngelSWI 0xAB +# define AngelSWIInsn "bkpt" +# define AngelSWIAsm bkpt +#else +# define AngelSWI 0x123456 +# define AngelSWIInsn "swi" +# define AngelSWIAsm swi +#endif + +inline int __semihost(int reason, const void *arg) { + int value; + + asm volatile ( + "mov r0, %1" "\n\t" + "mov r1, %2" "\n\t" + AngelSWIInsn " %a3" "\n\t" + "mov %0, r0" + : "=r" (value) /* output operands */ + : "r" (reason), "r" (arg), "i" (AngelSWI) /* input operands */ + : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc" /* list of clobbered registers */ + ); + + return value; +} +#endif +#endif + +#if DEVICE_LOCALFILESYSTEM +FILEHANDLE semihost_open(const char* name, int openmode); +int semihost_close (FILEHANDLE fh); +int semihost_read (FILEHANDLE fh, unsigned char* buffer, unsigned int length, int mode); +int semihost_write (FILEHANDLE fh, const unsigned char* buffer, unsigned int length, int mode); +int semihost_ensure(FILEHANDLE fh); +long semihost_flen (FILEHANDLE fh); +int semihost_seek (FILEHANDLE fh, long position); +int semihost_istty (FILEHANDLE fh); + +int semihost_remove(const char *name); +int semihost_rename(const char *old_name, const char *new_name); +#endif + +int semihost_uid(char *uid); +int semihost_reset(void); +int semihost_vbus(void); +int semihost_powerdown(void); +int semihost_exit(void); + +int semihost_connected(void); +int semihost_disabledebug(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f serial_api.h --- a/serial_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/serial_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,57 +1,66 @@ -/* mbed Microcontroller Library - serial_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SERIAL_API_H -#define MBED_SERIAL_API_H - -#include "device.h" - -#if DEVICE_SERIAL - -#include "PinNames.h" -#include "PeripheralNames.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - ParityNone = 0, - ParityOdd = 1, - ParityEven = 2, - ParityForced1 = 3, - ParityForced0 = 4 -} SerialParity; - -typedef enum { - TxIrq, - RxIrq -} SerialIrq; - -typedef void (*uart_irq_handler)(uint32_t id, SerialIrq event); - -typedef struct serial_object_s serial_object; - -void serial_init (serial_object *obj, PinName tx, PinName rx); -void serial_free (serial_object *obj); -void serial_baud (serial_object *obj, int baudrate); -void serial_format (serial_object *obj, int data_bits, SerialParity parity, int stop_bits); - -void serial_irq_handler(serial_object *obj, uart_irq_handler handler, uint32_t id); -void serial_irq_set (serial_object *obj, SerialIrq irq, uint32_t enable); - -int serial_getc (serial_object *obj); -void serial_putc (serial_object *obj, int c); -int serial_readable (serial_object *obj); -int serial_writable (serial_object *obj); -void serial_clear (serial_object *obj); - -void serial_pinout_tx(PinName tx); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SERIAL_API_H +#define MBED_SERIAL_API_H + +#include "device.h" + +#if DEVICE_SERIAL + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + ParityNone = 0, + ParityOdd = 1, + ParityEven = 2, + ParityForced1 = 3, + ParityForced0 = 4 +} SerialParity; + +typedef enum { + RxIrq, + TxIrq +} SerialIrq; + +typedef void (*uart_irq_handler)(uint32_t id, SerialIrq event); + +typedef struct serial_s serial_t; + +void serial_init (serial_t *obj, PinName tx, PinName rx); +void serial_free (serial_t *obj); +void serial_baud (serial_t *obj, int baudrate); +void serial_format (serial_t *obj, int data_bits, SerialParity parity, int stop_bits); + +void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id); +void serial_irq_set (serial_t *obj, SerialIrq irq, uint32_t enable); + +int serial_getc (serial_t *obj); +void serial_putc (serial_t *obj, int c); +int serial_readable (serial_t *obj); +int serial_writable (serial_t *obj); +void serial_clear (serial_t *obj); + +void serial_pinout_tx(PinName tx); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f sleep_api.h --- a/sleep_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/sleep_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,52 +1,64 @@ -/* mbed Microcontroller Library - sleep_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ -#ifndef MBED_SLEEP_API_H -#define MBED_SLEEP_API_H - -#include "device.h" - -#if DEVICE_SLEEP - -#ifdef __cplusplus -extern "C" { -#endif - -/** Send the microcontroller to sleep - * - * The processor is setup ready for sleep, and sent to sleep using __WFI(). In this mode, the - * system clock to the core is stopped until a reset or an interrupt occurs. This eliminates - * dynamic power used by the processor, memory systems and buses. The processor, peripheral and - * memory state are maintained, and the peripherals continue to work and can generate interrupts. - * - * The processor can be woken up by any internal peripheral interrupt or external pin interrupt. - * - * @note - * The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored. - * Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be - * able to access the LocalFileSystem - */ -void sleep(void); - -/** Send the microcontroller to deep sleep - * - * This processor is setup ready for deep sleep, and sent to sleep using __WFI(). This mode - * has the same sleep features as sleep plus it powers down peripherals and clocks. All state - * is still maintained. - * - * The processor can only be woken up by an external interrupt on a pin or a watchdog timer. - * - * @note - * The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored. - * Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be - * able to access the LocalFileSystem - */ -void deepsleep(void); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_SLEEP_API_H +#define MBED_SLEEP_API_H + +#include "device.h" + +#if DEVICE_SLEEP + +#ifdef __cplusplus +extern "C" { +#endif + +/** Send the microcontroller to sleep + * + * The processor is setup ready for sleep, and sent to sleep using __WFI(). In this mode, the + * system clock to the core is stopped until a reset or an interrupt occurs. This eliminates + * dynamic power used by the processor, memory systems and buses. The processor, peripheral and + * memory state are maintained, and the peripherals continue to work and can generate interrupts. + * + * The processor can be woken up by any internal peripheral interrupt or external pin interrupt. + * + * @note + * The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored. + * Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be + * able to access the LocalFileSystem + */ +void sleep(void); + +/** Send the microcontroller to deep sleep + * + * This processor is setup ready for deep sleep, and sent to sleep using __WFI(). This mode + * has the same sleep features as sleep plus it powers down peripherals and clocks. All state + * is still maintained. + * + * The processor can only be woken up by an external interrupt on a pin or a watchdog timer. + * + * @note + * The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored. + * Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be + * able to access the LocalFileSystem + */ +void deepsleep(void); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f spi_api.h --- a/spi_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/spi_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,7 +1,18 @@ -/* mbed Microcontroller Library - spi_api - * Copyright (c) 2009-2011 ARM Limited. All rights reserved. - */ - +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #ifndef MBED_SPI_API_H #define MBED_SPI_API_H @@ -11,22 +22,23 @@ #ifdef __cplusplus extern "C" { -#endif +#endif -SPIName spi_init(PinName mosi, PinName miso, PinName sclk, PinName ssel); -void spi_free(SPIName spi); +typedef struct spi_s spi_t; -void spi_format(SPIName spi, int bits, int mode, int slave); -void spi_frequency(SPIName spi, int hz); -int spi_master_write(SPIName spi, int value); -int spi_slave_receive(SPIName spi); -int spi_slave_read(SPIName spi); -void spi_slave_write(SPIName spi, int value); -int spi_busy(SPIName spi); +void spi_init (spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel); +void spi_free (spi_t *obj); +void spi_format (spi_t *obj, int bits, int mode, int slave); +void spi_frequency (spi_t *obj, int hz); +int spi_master_write (spi_t *obj, int value); +int spi_slave_receive(spi_t *obj); +int spi_slave_read (spi_t *obj); +void spi_slave_write (spi_t *obj, int value); +int spi_busy (spi_t *obj); #ifdef __cplusplus } -#endif +#endif #endif
diff -r c14af7958ef5 -r 663789d7729f toolchain.h --- a/toolchain.h Fri Nov 09 11:33:53 2012 +0000 +++ b/toolchain.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,16 +1,35 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2009 ARM Limited. All rights reserved. - */ - -#ifndef MBED_TOOLCHAIN_H -#define MBED_TOOLCHAIN_H - -#if defined(TOOLCHAIN_ARM) || defined(TOOLCHAIN_uARM) -#include <rt_sys.h> -#endif - -#ifndef FILEHANDLE -typedef int FILEHANDLE; -#endif - -#endif +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_TOOLCHAIN_H +#define MBED_TOOLCHAIN_H + +#if defined(TOOLCHAIN_ARM) || defined(TOOLCHAIN_uARM) +#include <rt_sys.h> +#endif + +#ifndef FILEHANDLE +typedef int FILEHANDLE; +#endif + +#if defined (__ICCARM__) +# define WEAK __weak +# define PACKED __packed +#else +# define WEAK __attribute__((weak)) +# define PACKED __attribute__((packed)) +#endif + +#endif
diff -r c14af7958ef5 -r 663789d7729f us_ticker_api.h --- a/us_ticker_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/us_ticker_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,5 +1,17 @@ -/* mbed Microcontroller Library - us_ticker_api - * Copyright (c) 2009 ARM Limited. All rights reserved. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef MBED_US_TICKER_API_H #define MBED_US_TICKER_API_H @@ -19,10 +31,10 @@ uint32_t timestamp; uint32_t id; struct ticker_event_s *next; -} ticker_event; +} ticker_event_t; -void us_ticker_insert_event(ticker_event *obj, unsigned int timestamp, uint32_t id); -void us_ticker_remove_event(ticker_event *obj); +void us_ticker_insert_event(ticker_event_t *obj, unsigned int timestamp, uint32_t id); +void us_ticker_remove_event(ticker_event_t *obj); #ifdef __cplusplus }
diff -r c14af7958ef5 -r 663789d7729f wait_api.h --- a/wait_api.h Fri Nov 09 11:33:53 2012 +0000 +++ b/wait_api.h Mon Feb 18 09:41:56 2013 +0000 @@ -1,3 +1,25 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_WAIT_API_H +#define MBED_WAIT_API_H + +#ifdef __cplusplus +extern "C" { +#endif + /** Generic wait functions. * * These provide simple NOP type wait capabilities. @@ -18,17 +40,6 @@ * } */ -/* mbed Microcontroller Library - wait_api - * Copyright (c) 2009 ARM Limited. All rights reserved. - */ - -#ifndef MBED_WAIT_API_H -#define MBED_WAIT_API_H - -#ifdef __cplusplus -extern "C" { -#endif - /** Waits for a number of seconds, with microsecond resolution (within * the accuracy of single precision floating point). *