Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: 1-RenBuggyTimed RenBED_RGB RenBED_RGB_PWM RenBED_RGB
Fork of mbed by
Base.h
- Committer:
- simon.ford@mbed.co.uk
- Date:
- 2008-11-27
- Revision:
- 4:5d1359a283bc
- Parent:
- 1:6b7f447ca868
- Child:
- 5:62573be585e9
File content as of revision 4:5d1359a283bc:
/* mbed Microcontroller Library - Base
* Copyright (c) 2006-2008 ARM Limited. All rights reserved.
* sford, jbrawn
*/
#ifndef MBED_BASE_H
#define MBED_BASE_H
#include <cstdlib>
namespace mbed {
/* Class Base
* The base class for most things
*/
class Base {
public:
Base(const char *name = NULL);
virtual ~Base();
/* Function register_object
* Registers this object with the given name, so that it can be
* looked up with lookup. If this object has already been
* registered, then this just changes the name.
*
* Variables
* name - The name to give the object. If NULL we do nothing.
*/
void register_object(const char *name);
/* Function name
* Returns the name of the object, or NULL if it has no name.
*/
const char *name();
/* Function rpc
* Call the given method with the given arguments, and write the
* result into the string pointed to by result. The default
* implementation calls rpc_methods to determine the supported
* methods.
*
* Variables
* method - The name of the method to call.
* arguments - A list of arguments separated by spaces.
* result - A pointer to a string to write the result into. May
* be NULL, in which case nothing is written.
* returns - true if method corresponds to a valid rpc method, or
* false otherwise.
*/
virtual bool rpc(const char *method, const char *arguments, char *result);
/* Function rpc_method
* Returns a pointer to an array describing the rpc methods
* supported by this object, terminated by RPC_METHOD_END.
*
* Example
*
* > class Example : public Base {
* > int foo(int a, int b) { return a + b; }
* > virtual const struct rpc_method *rpc_methods() {
* > static const rpc_method rpc_methods[] = {
* > { "foo", generic_caller<int, Example, int, int, &Example::foo> },
* > RPC_METHOD_END
* > };
* > return rpc_methods;
* > }
* > };
*/
virtual const struct rpc_method *rpc_methods();
/* Function rpc
* Use the lookup function to lookup an object and, if
* successful, call its rpc method
*
* Variables
* returns - false if name does not correspond to an object,
* otherwise the return value of the call to the object's rpc
* method.
*/
static bool rpc(const char *name, const char *method, const char *arguments, char *result);
/* Function lookup
* Lookup and return the object that has the given name.
*
* Variables
* name - the name to lookup.
* len - the length of name.
*/
static Base *lookup(const char *name, unsigned int len);
protected:
static Base *_head;
Base *_next;
const char *_name;
};
/* Macro MBED_OBJECT_NAME_MAX
* The maximum size of object name (including terminating null byte)
* that will be recognised when using fopen to open a FileLike
* object, or when using the rpc function.
*/
#define MBED_OBJECT_NAME_MAX 32
/* Macro MBED_METHOD_NAME_MAX
* The maximum size of rpc method name (including terminating null
* byte) that will be recognised by the rpc function (in rpc.h).
*/
#define MBED_METHOD_NAME_MAX 32
} // namespace mbed
#endif
