ads1115 only
Fork of mbed by
Revision 9:cf0d45ce28a6, committed 2009-04-15
- Comitter:
- simon.ford@mbed.co.uk
- Date:
- Wed Apr 15 14:15:04 2009 +0000
- Parent:
- 8:00a04e5cd407
- Child:
- 10:fcb9359f0959
- Commit message:
- Update library with fixes
* TimerEvent hang bugfix
* FileLike use as file pointer
Changed in this revision
--- a/FileLike.h Tue Feb 03 18:02:02 2009 +0000 +++ b/FileLike.h Wed Apr 15 14:15:04 2009 +0000 @@ -22,6 +22,7 @@ * name - The name to use to open the file. */ FileLike(const char *name) : Base(name) { } + virtual ~FileLike(); };
--- a/FileSystemLike.h Tue Feb 03 18:02:02 2009 +0000 +++ b/FileSystemLike.h Wed Apr 15 14:15:04 2009 +0000 @@ -84,6 +84,7 @@ * * Variables * name - The name of the directory to create. + * 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; }
--- a/FunctionPointer.h Tue Feb 03 18:02:02 2009 +0000 +++ b/FunctionPointer.h Wed Apr 15 14:15:04 2009 +0000 @@ -1,86 +1,86 @@ -/* mbed Microcontroller Library - FunctionPointer - * Copyright (c) 2007-2008, sford - */ - -#ifndef MBED_FUNCTIONPOINTER_H -#define MBED_FUNCTIONPOINTER_H - -#include "string.h" - -namespace mbed { - -/* Class FunctionPointer - * A class for storing and calling a pointer to a static or member void function - */ -class FunctionPointer { - -public: - - /* Constructor FunctionPointer - * Create a FunctionPointer, attaching a static function - * - * Variables - * function - The void static function to attach (default is none) - */ - FunctionPointer(void (*function)(void) = 0); - - /* Constructor FunctionPointer - * Create a FunctionPointer, attaching a member function - * - * Variables - * object - The object pointer to invoke the member function on (i.e. the this pointer) - * function - The address of the void member function to attach - */ - template<typename T> - FunctionPointer(T *object, void (T::*member)(void)) { - attach(object, member); - } - - /* Function attach - * Attach a static function - * - * Variables - * function - The void static function to attach (default is none) - */ - void attach(void (*function)(void) = 0); - - /* Function attach - * Attach a member function - * - * Variables - * object - The object pointer to invoke the member function on (i.e. the this pointer) - * function - The address of the void member function to attach - */ - template<typename T> - void attach(T *object, void (T::*member)(void)) { - _object = static_cast<void*>(object); - memcpy(_member, (char*)&member, sizeof(member)); - _membercaller = &FunctionPointer::membercaller<T>; - _function = 0; - } - - /* Function call - * Call the attached static or member function - */ - void call(); - -private: - - template<typename T> - static void membercaller(void *object, char *member) { - T* o = static_cast<T*>(object); - void (T::*m)(void); - 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 - void (*_membercaller)(void*, char*); // registered membercaller function to convert back and call _member on _object - -}; - -} - -#endif +/* mbed Microcontroller Library - FunctionPointer + * Copyright (c) 2007-2008, sford + */ + +#ifndef MBED_FUNCTIONPOINTER_H +#define MBED_FUNCTIONPOINTER_H + +#include "string.h" + +namespace mbed { + +/* Class FunctionPointer + * A class for storing and calling a pointer to a static or member void function + */ +class FunctionPointer { + +public: + + /* Constructor FunctionPointer + * Create a FunctionPointer, attaching a static function + * + * Variables + * function - The void static function to attach (default is none) + */ + FunctionPointer(void (*function)(void) = 0); + + /* Constructor FunctionPointer + * Create a FunctionPointer, attaching a member function + * + * Variables + * object - The object pointer to invoke the member function on (i.e. the this pointer) + * function - The address of the void member function to attach + */ + template<typename T> + FunctionPointer(T *object, void (T::*member)(void)) { + attach(object, member); + } + + /* Function attach + * Attach a static function + * + * Variables + * function - The void static function to attach (default is none) + */ + void attach(void (*function)(void) = 0); + + /* Function attach + * Attach a member function + * + * Variables + * object - The object pointer to invoke the member function on (i.e. the this pointer) + * function - The address of the void member function to attach + */ + template<typename T> + void attach(T *object, void (T::*member)(void)) { + _object = static_cast<void*>(object); + memcpy(_member, (char*)&member, sizeof(member)); + _membercaller = &FunctionPointer::membercaller<T>; + _function = 0; + } + + /* Function call + * Call the attached static or member function + */ + void call(); + +private: + + template<typename T> + static void membercaller(void *object, char *member) { + T* o = static_cast<T*>(object); + void (T::*m)(void); + 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 + void (*_membercaller)(void*, char*); // registered membercaller function to convert back and call _member on _object + +}; + +} + +#endif
--- a/LocalFileSystem.h Tue Feb 03 18:02:02 2009 +0000 +++ b/LocalFileSystem.h Wed Apr 15 14:15:04 2009 +0000 @@ -1,60 +1,60 @@ -/* mbed Microcontroller Library - SemihostFileSystem - * Copyright (c) 2007-2008, sford - */ - -#ifndef MBED_LOCALFILESYSTEM_H -#define MBED_LOCALFILESYSTEM_H - -#include "FileSystemLike.h" - -namespace mbed { - -/* Class: LocalFileSystem - * 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, - * read and write files. - * - * Example: - * > #include "mbed.h" - * > - * > LocalFileSystem local("local"); // Create the local filesystem under the name "local" - * > - * > 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); - * > 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 - * > struct dirent *p; - * > while((p = readdir(d)) != NULL) { // Print the names of the files in the local file system - * > printf("%s\n", p->d_name); // to stdout. - * > } - * > closedir(d); - * > } - * - * Implementation Notes: - * If the microcontroller program makes an access to the local drive, it will be marked as "removed" - * on the Host computer. This means it is no longer accessible from the Host Computer. - * - * The drive will only re-appear when the microcontroller program exists. Note that if the program does - * not exit, you will need to hold down reset on the mbed Microcontroller to be able to see the drive again! - */ -class LocalFileSystem : public FileSystemLike { - -public: - - LocalFileSystem(const char* n) : FileSystemLike(n) { - - } - - virtual FileHandle *open(const char* name, int flags); - virtual int remove(const char *filename); - virtual DirHandle *opendir(const char *name); -}; - -} // namespace mbed - -#endif +/* mbed Microcontroller Library - SemihostFileSystem + * Copyright (c) 2007-2008, sford + */ + +#ifndef MBED_LOCALFILESYSTEM_H +#define MBED_LOCALFILESYSTEM_H + +#include "FileSystemLike.h" + +namespace mbed { + +/* Class: LocalFileSystem + * 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, + * read and write files. + * + * Example: + * > #include "mbed.h" + * > + * > LocalFileSystem local("local"); // Create the local filesystem under the name "local" + * > + * > 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); + * > 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 + * > struct dirent *p; + * > while((p = readdir(d)) != NULL) { // Print the names of the files in the local file system + * > printf("%s\n", p->d_name); // to stdout. + * > } + * > closedir(d); + * > } + * + * Implementation Notes: + * If the microcontroller program makes an access to the local drive, it will be marked as "removed" + * on the Host computer. This means it is no longer accessible from the Host Computer. + * + * The drive will only re-appear when the microcontroller program exists. Note that if the program does + * not exit, you will need to hold down reset on the mbed Microcontroller to be able to see the drive again! + */ +class LocalFileSystem : public FileSystemLike { + +public: + + LocalFileSystem(const char* n) : FileSystemLike(n) { + + } + + virtual FileHandle *open(const char* name, int flags); + virtual int remove(const char *filename); + virtual DirHandle *opendir(const char *name); +}; + +} // namespace mbed + +#endif
--- a/Ticker.h Tue Feb 03 18:02:02 2009 +0000 +++ b/Ticker.h Wed Apr 15 14:15:04 2009 +0000 @@ -1,89 +1,89 @@ -/* mbed Microcontroller Library - Ticker - * Copyright (c) 2007-2008, sford - */ - -#ifndef MBED_TICKER_H -#define MBED_TICKER_H - -#include "TimerEvent.h" -#include "FunctionPointer.h" - -namespace mbed { - -/* Class: Ticker - * A Ticker is used to call a function at a recurring interval - * - * You can use as many seperate Ticker objects as you require. - */ -class Ticker : public TimerEvent { - -public: - - /* Function: attach - * Attach a function to be called by the Ticker, specifiying the interval in seconds - * - * Variables: - * fptr - pointer to the function to be called - * t - the time between calls in seconds - */ - void attach(void (*fptr)(void), float t) { - attach_us(fptr, t * 1000000.0f); - } - - /* Function: attach - * Attach a member function to be called by the Ticker, specifiying the interval in seconds - * - * Variables: - * tptr - pointer to the object to call the member function on - * mptr - pointer to the member function to be called - * t - the time between calls in seconds - */ - template<typename T> - void attach(T* tptr, void (T::*mptr)(void), float t) { - attach_us(tptr, mptr, t * 1000000.0f); - } - - /* Function: attach_us - * Attach a function to be called by the Ticker, specifiying the interval in micro-seconds - * - * Variables: - * fptr - pointer to the function to be called - * t - the time between calls in micro-seconds - */ - void attach_us(void (*fptr)(void), unsigned int t) { - _function.attach(fptr); - setup(t); - } - - /* Function: attach_us - * Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds - * - * Variables: - * tptr - pointer to the object to call the member function on - * mptr - pointer to the member function to be called - * 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); - } - - /* Function: detach - * Detach the function - */ - void detach(); - -protected: - - void setup(unsigned int t); - virtual void handler(); - - unsigned int _delay; - FunctionPointer _function; - -}; - -} - -#endif +/* mbed Microcontroller Library - Ticker + * Copyright (c) 2007-2008, sford + */ + +#ifndef MBED_TICKER_H +#define MBED_TICKER_H + +#include "TimerEvent.h" +#include "FunctionPointer.h" + +namespace mbed { + +/* Class: Ticker + * A Ticker is used to call a function at a recurring interval + * + * You can use as many seperate Ticker objects as you require. + */ +class Ticker : public TimerEvent { + +public: + + /* Function: attach + * Attach a function to be called by the Ticker, specifiying the interval in seconds + * + * Variables: + * fptr - pointer to the function to be called + * t - the time between calls in seconds + */ + void attach(void (*fptr)(void), float t) { + attach_us(fptr, t * 1000000.0f); + } + + /* Function: attach + * Attach a member function to be called by the Ticker, specifiying the interval in seconds + * + * Variables: + * tptr - pointer to the object to call the member function on + * mptr - pointer to the member function to be called + * t - the time between calls in seconds + */ + template<typename T> + void attach(T* tptr, void (T::*mptr)(void), float t) { + attach_us(tptr, mptr, t * 1000000.0f); + } + + /* Function: attach_us + * Attach a function to be called by the Ticker, specifiying the interval in micro-seconds + * + * Variables: + * fptr - pointer to the function to be called + * t - the time between calls in micro-seconds + */ + void attach_us(void (*fptr)(void), unsigned int t) { + _function.attach(fptr); + setup(t); + } + + /* Function: attach_us + * Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds + * + * Variables: + * tptr - pointer to the object to call the member function on + * mptr - pointer to the member function to be called + * 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); + } + + /* Function: detach + * Detach the function + */ + void detach(); + +protected: + + void setup(unsigned int t); + virtual void handler(); + + unsigned int _delay; + FunctionPointer _function; + +}; + +} + +#endif
--- a/Timeout.h Tue Feb 03 18:02:02 2009 +0000 +++ b/Timeout.h Wed Apr 15 14:15:04 2009 +0000 @@ -1,86 +1,86 @@ -/* mbed Microcontroller Library - Timeout - * Copyright (c) 2007-2008, sford - */ - -#ifndef MBED_TIMEOUT_H -#define MBED_TIMEOUT_H - -#include "Ticker.h" - -namespace mbed { - -/* Class: Timeout - * 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. - */ -class Timeout : public Ticker { - -#if 0 // For documentation - - /* Function: attach - * Attach a function to be called by the Timeout, specifiying the delay in seconds - * - * Variables: - * fptr - pointer to the function to be called - * t - the time before the call in seconds - */ - void attach(void (*fptr)(void), float t) { - attach_us(fptr, t * 1000000.0f); - } - - /* Function: attach - * Attach a member function to be called by the Timeout, specifiying the delay in seconds - * - * Variables: - * tptr - pointer to the object to call the member function on - * mptr - pointer to the member function to be called - * t - the time before the calls in seconds - */ - template<typename T> - void attach(T* tptr, void (T::*mptr)(void), float t) { - attach_us(tptr, mptr, t * 1000000.0f); - } - - /* Function: attach_us - * Attach a function to be called by the Timeout, specifiying the delay in micro-seconds - * - * Variables: - * fptr - pointer to the function to be called - * t - the time before the call in micro-seconds - */ - void attach_us(void (*fptr)(void), unsigned int t) { - _function.attach(fptr); - setup(t); - } - - /* Function: attach_us - * Attach a member function to be called by the Timeout, specifiying the delay in micro-seconds - * - * Variables: - * tptr - pointer to the object to call the member function on - * mptr - pointer to the member function to be called - * t - the time before the call in micro-seconds - */ - template<typename T> - void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) { - _function.attach(tptr, mptr); - setup(t); - } - - /* Function: detach - * Detach the function - */ - void detach(); - -#endif - -protected: - - virtual void handler(); - -}; - -} - -#endif +/* mbed Microcontroller Library - Timeout + * Copyright (c) 2007-2008, sford + */ + +#ifndef MBED_TIMEOUT_H +#define MBED_TIMEOUT_H + +#include "Ticker.h" + +namespace mbed { + +/* Class: Timeout + * 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. + */ +class Timeout : public Ticker { + +#if 0 // For documentation + + /* Function: attach + * Attach a function to be called by the Timeout, specifiying the delay in seconds + * + * Variables: + * fptr - pointer to the function to be called + * t - the time before the call in seconds + */ + void attach(void (*fptr)(void), float t) { + attach_us(fptr, t * 1000000.0f); + } + + /* Function: attach + * Attach a member function to be called by the Timeout, specifiying the delay in seconds + * + * Variables: + * tptr - pointer to the object to call the member function on + * mptr - pointer to the member function to be called + * t - the time before the calls in seconds + */ + template<typename T> + void attach(T* tptr, void (T::*mptr)(void), float t) { + attach_us(tptr, mptr, t * 1000000.0f); + } + + /* Function: attach_us + * Attach a function to be called by the Timeout, specifiying the delay in micro-seconds + * + * Variables: + * fptr - pointer to the function to be called + * t - the time before the call in micro-seconds + */ + void attach_us(void (*fptr)(void), unsigned int t) { + _function.attach(fptr); + setup(t); + } + + /* Function: attach_us + * Attach a member function to be called by the Timeout, specifiying the delay in micro-seconds + * + * Variables: + * tptr - pointer to the object to call the member function on + * mptr - pointer to the member function to be called + * t - the time before the call in micro-seconds + */ + template<typename T> + void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) { + _function.attach(tptr, mptr); + setup(t); + } + + /* Function: detach + * Detach the function + */ + void detach(); + +#endif + +protected: + + virtual void handler(); + +}; + +} + +#endif
--- a/TimerEvent.h Tue Feb 03 18:02:02 2009 +0000 +++ b/TimerEvent.h Wed Apr 15 14:15:04 2009 +0000 @@ -1,43 +1,43 @@ -/* mbed Microcontroller Library - TimerEvent - * Copyright (c) 2007-2008, sford - */ - -#ifndef MBED_TIMEREVENT_H -#define MBED_TIMEREVENT_H - -namespace mbed { - -// Base abstraction for timer interrupts -class TimerEvent { - -public: - - // The handler registered with the underlying timer interrupt - static void irq(); - - // 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(); - - // Get the current usec timestamp - static unsigned int timestamp(); - - static TimerEvent *_head; // The head of the list of the events, NULL if none - TimerEvent *_next; // Pointer to the next in the list, NULL if last - unsigned int _timestamp; // The timestamp at which the even should be triggered - -}; - -} - -#endif +/* mbed Microcontroller Library - TimerEvent + * Copyright (c) 2007-2008, sford + */ + +#ifndef MBED_TIMEREVENT_H +#define MBED_TIMEREVENT_H + +namespace mbed { + +// Base abstraction for timer interrupts +class TimerEvent { + +public: + + // The handler registered with the underlying timer interrupt + static void irq(); + + // 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(); + + // Get the current usec timestamp + static unsigned int timestamp(); + + static TimerEvent *_head; // The head of the list of the events, NULL if none + TimerEvent *_next; // Pointer to the next in the list, NULL if last + unsigned int _timestamp; // The timestamp at which the even should be triggered + +}; + +} + +#endif
Binary file mbed.ar has changed
--- a/mbed.h Tue Feb 03 18:02:02 2009 +0000 +++ b/mbed.h Wed Apr 15 14:15:04 2009 +0000 @@ -5,7 +5,7 @@ #ifndef MBED_H #define MBED_H -#define MBED_LIBRARY_VERSION 9 +#define MBED_LIBRARY_VERSION 10 // Useful C libraries #include <stdio.h>