config AX12

Fork of configure_ax12_test_bras_module by CRAC Team

Committer:
slowness
Date:
Wed Feb 03 14:01:53 2016 +0000
Revision:
0:c03cffe402df
Pour configurer les AX12 avec la carte NXP1768 sur les Pin 9 et 10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slowness 0:c03cffe402df 1 /* mbed Microcontroller Library - Base
slowness 0:c03cffe402df 2 * Copyright (c) 2006-2008 ARM Limited. All rights reserved.
slowness 0:c03cffe402df 3 */
slowness 0:c03cffe402df 4
slowness 0:c03cffe402df 5 #ifndef MBED_BASE_H
slowness 0:c03cffe402df 6 #define MBED_BASE_H
slowness 0:c03cffe402df 7
slowness 0:c03cffe402df 8 #include "platform.h"
slowness 0:c03cffe402df 9 #include "PinNames.h"
slowness 0:c03cffe402df 10 #include "PeripheralNames.h"
slowness 0:c03cffe402df 11 #include <cstdlib>
slowness 0:c03cffe402df 12 #include "DirHandle.h"
slowness 0:c03cffe402df 13
slowness 0:c03cffe402df 14 namespace mbed {
slowness 0:c03cffe402df 15
slowness 0:c03cffe402df 16 #ifdef MBED_RPC
slowness 0:c03cffe402df 17 struct rpc_function {
slowness 0:c03cffe402df 18 const char *name;
slowness 0:c03cffe402df 19 void (*caller)(const char*, char*);
slowness 0:c03cffe402df 20 };
slowness 0:c03cffe402df 21
slowness 0:c03cffe402df 22 struct rpc_class {
slowness 0:c03cffe402df 23 const char *name;
slowness 0:c03cffe402df 24 const rpc_function *static_functions;
slowness 0:c03cffe402df 25 struct rpc_class *next;
slowness 0:c03cffe402df 26 };
slowness 0:c03cffe402df 27 #endif
slowness 0:c03cffe402df 28
slowness 0:c03cffe402df 29 /* Class Base
slowness 0:c03cffe402df 30 * The base class for most things
slowness 0:c03cffe402df 31 */
slowness 0:c03cffe402df 32 class Base {
slowness 0:c03cffe402df 33
slowness 0:c03cffe402df 34 public:
slowness 0:c03cffe402df 35
slowness 0:c03cffe402df 36 Base(const char *name = NULL);
slowness 0:c03cffe402df 37
slowness 0:c03cffe402df 38 virtual ~Base();
slowness 0:c03cffe402df 39
slowness 0:c03cffe402df 40 /* Function register_object
slowness 0:c03cffe402df 41 * Registers this object with the given name, so that it can be
slowness 0:c03cffe402df 42 * looked up with lookup. If this object has already been
slowness 0:c03cffe402df 43 * registered, then this just changes the name.
slowness 0:c03cffe402df 44 *
slowness 0:c03cffe402df 45 * Variables
slowness 0:c03cffe402df 46 * name - The name to give the object. If NULL we do nothing.
slowness 0:c03cffe402df 47 */
slowness 0:c03cffe402df 48 void register_object(const char *name);
slowness 0:c03cffe402df 49
slowness 0:c03cffe402df 50 /* Function name
slowness 0:c03cffe402df 51 * Returns the name of the object, or NULL if it has no name.
slowness 0:c03cffe402df 52 */
slowness 0:c03cffe402df 53 const char *name();
slowness 0:c03cffe402df 54
slowness 0:c03cffe402df 55 #ifdef MBED_RPC
slowness 0:c03cffe402df 56
slowness 0:c03cffe402df 57 /* Function rpc
slowness 0:c03cffe402df 58 * Call the given method with the given arguments, and write the
slowness 0:c03cffe402df 59 * result into the string pointed to by result. The default
slowness 0:c03cffe402df 60 * implementation calls rpc_methods to determine the supported
slowness 0:c03cffe402df 61 * methods.
slowness 0:c03cffe402df 62 *
slowness 0:c03cffe402df 63 * Variables
slowness 0:c03cffe402df 64 * method - The name of the method to call.
slowness 0:c03cffe402df 65 * arguments - A list of arguments separated by spaces.
slowness 0:c03cffe402df 66 * result - A pointer to a string to write the result into. May
slowness 0:c03cffe402df 67 * be NULL, in which case nothing is written.
slowness 0:c03cffe402df 68 *
slowness 0:c03cffe402df 69 * Returns
slowness 0:c03cffe402df 70 * true if method corresponds to a valid rpc method, or
slowness 0:c03cffe402df 71 * false otherwise.
slowness 0:c03cffe402df 72 */
slowness 0:c03cffe402df 73 virtual bool rpc(const char *method, const char *arguments, char *result);
slowness 0:c03cffe402df 74
slowness 0:c03cffe402df 75 /* Function get_rpc_methods
slowness 0:c03cffe402df 76 * Returns a pointer to an array describing the rpc methods
slowness 0:c03cffe402df 77 * supported by this object, terminated by either
slowness 0:c03cffe402df 78 * RPC_METHOD_END or RPC_METHOD_SUPER(Superclass).
slowness 0:c03cffe402df 79 *
slowness 0:c03cffe402df 80 * Example
slowness 0:c03cffe402df 81 * > class Example : public Base {
slowness 0:c03cffe402df 82 * > int foo(int a, int b) { return a + b; }
slowness 0:c03cffe402df 83 * > virtual const struct rpc_method *get_rpc_methods() {
slowness 0:c03cffe402df 84 * > static const rpc_method rpc_methods[] = {
slowness 0:c03cffe402df 85 * > { "foo", generic_caller<int, Example, int, int, &Example::foo> },
slowness 0:c03cffe402df 86 * > RPC_METHOD_SUPER(Base)
slowness 0:c03cffe402df 87 * > };
slowness 0:c03cffe402df 88 * > return rpc_methods;
slowness 0:c03cffe402df 89 * > }
slowness 0:c03cffe402df 90 * > };
slowness 0:c03cffe402df 91 */
slowness 0:c03cffe402df 92 virtual const struct rpc_method *get_rpc_methods();
slowness 0:c03cffe402df 93
slowness 0:c03cffe402df 94 /* Function rpc
slowness 0:c03cffe402df 95 * Use the lookup function to lookup an object and, if
slowness 0:c03cffe402df 96 * successful, call its rpc method
slowness 0:c03cffe402df 97 *
slowness 0:c03cffe402df 98 * Variables
slowness 0:c03cffe402df 99 * returns - false if name does not correspond to an object,
slowness 0:c03cffe402df 100 * otherwise the return value of the call to the object's rpc
slowness 0:c03cffe402df 101 * method.
slowness 0:c03cffe402df 102 */
slowness 0:c03cffe402df 103 static bool rpc(const char *name, const char *method, const char *arguments, char *result);
slowness 0:c03cffe402df 104
slowness 0:c03cffe402df 105 #endif
slowness 0:c03cffe402df 106
slowness 0:c03cffe402df 107 /* Function lookup
slowness 0:c03cffe402df 108 * Lookup and return the object that has the given name.
slowness 0:c03cffe402df 109 *
slowness 0:c03cffe402df 110 * Variables
slowness 0:c03cffe402df 111 * name - the name to lookup.
slowness 0:c03cffe402df 112 * len - the length of name.
slowness 0:c03cffe402df 113 */
slowness 0:c03cffe402df 114 static Base *lookup(const char *name, unsigned int len);
slowness 0:c03cffe402df 115
slowness 0:c03cffe402df 116 static DirHandle *opendir();
slowness 0:c03cffe402df 117 friend class BaseDirHandle;
slowness 0:c03cffe402df 118
slowness 0:c03cffe402df 119 protected:
slowness 0:c03cffe402df 120
slowness 0:c03cffe402df 121 static Base *_head;
slowness 0:c03cffe402df 122 Base *_next;
slowness 0:c03cffe402df 123 const char *_name;
slowness 0:c03cffe402df 124 bool _from_construct;
slowness 0:c03cffe402df 125
slowness 0:c03cffe402df 126 private:
slowness 0:c03cffe402df 127
slowness 0:c03cffe402df 128 #ifdef MBED_RPC
slowness 0:c03cffe402df 129 static rpc_class *_classes;
slowness 0:c03cffe402df 130
slowness 0:c03cffe402df 131 static const rpc_function _base_funcs[];
slowness 0:c03cffe402df 132 static rpc_class _base_class;
slowness 0:c03cffe402df 133 #endif
slowness 0:c03cffe402df 134
slowness 0:c03cffe402df 135 void delete_self();
slowness 0:c03cffe402df 136 static void list_objs(const char *arguments, char *result);
slowness 0:c03cffe402df 137 static void clear(const char*,char*);
slowness 0:c03cffe402df 138
slowness 0:c03cffe402df 139 static char *new_name(Base *p);
slowness 0:c03cffe402df 140
slowness 0:c03cffe402df 141 public:
slowness 0:c03cffe402df 142
slowness 0:c03cffe402df 143 #ifdef MBED_RPC
slowness 0:c03cffe402df 144 /* Function add_rpc_class
slowness 0:c03cffe402df 145 * Add the class to the list of classes which can have static
slowness 0:c03cffe402df 146 * methods called via rpc (the static methods which can be called
slowness 0:c03cffe402df 147 * are defined by that class' get_rpc_class() static method).
slowness 0:c03cffe402df 148 */
slowness 0:c03cffe402df 149 template<class C>
slowness 0:c03cffe402df 150 static void add_rpc_class() {
slowness 0:c03cffe402df 151 rpc_class *c = C::get_rpc_class();
slowness 0:c03cffe402df 152 c->next = _classes;
slowness 0:c03cffe402df 153 _classes = c;
slowness 0:c03cffe402df 154 }
slowness 0:c03cffe402df 155
slowness 0:c03cffe402df 156 template<class C>
slowness 0:c03cffe402df 157 static const char *construct() {
slowness 0:c03cffe402df 158 Base *p = new C();
slowness 0:c03cffe402df 159 p->_from_construct = true;
slowness 0:c03cffe402df 160 if(p->_name==NULL) {
slowness 0:c03cffe402df 161 p->register_object(new_name(p));
slowness 0:c03cffe402df 162 }
slowness 0:c03cffe402df 163 return p->_name;
slowness 0:c03cffe402df 164 }
slowness 0:c03cffe402df 165
slowness 0:c03cffe402df 166 template<class C, typename A1>
slowness 0:c03cffe402df 167 static const char *construct(A1 arg1) {
slowness 0:c03cffe402df 168 Base *p = new C(arg1);
slowness 0:c03cffe402df 169 p->_from_construct = true;
slowness 0:c03cffe402df 170 if(p->_name==NULL) {
slowness 0:c03cffe402df 171 p->register_object(new_name(p));
slowness 0:c03cffe402df 172 }
slowness 0:c03cffe402df 173 return p->_name;
slowness 0:c03cffe402df 174 }
slowness 0:c03cffe402df 175
slowness 0:c03cffe402df 176 template<class C, typename A1, typename A2>
slowness 0:c03cffe402df 177 static const char *construct(A1 arg1, A2 arg2) {
slowness 0:c03cffe402df 178 Base *p = new C(arg1,arg2);
slowness 0:c03cffe402df 179 p->_from_construct = true;
slowness 0:c03cffe402df 180 if(p->_name==NULL) {
slowness 0:c03cffe402df 181 p->register_object(new_name(p));
slowness 0:c03cffe402df 182 }
slowness 0:c03cffe402df 183 return p->_name;
slowness 0:c03cffe402df 184 }
slowness 0:c03cffe402df 185
slowness 0:c03cffe402df 186 template<class C, typename A1, typename A2, typename A3>
slowness 0:c03cffe402df 187 static const char *construct(A1 arg1, A2 arg2, A3 arg3) {
slowness 0:c03cffe402df 188 Base *p = new C(arg1,arg2,arg3);
slowness 0:c03cffe402df 189 p->_from_construct = true;
slowness 0:c03cffe402df 190 if(p->_name==NULL) {
slowness 0:c03cffe402df 191 p->register_object(new_name(p));
slowness 0:c03cffe402df 192 }
slowness 0:c03cffe402df 193 return p->_name;
slowness 0:c03cffe402df 194 }
slowness 0:c03cffe402df 195
slowness 0:c03cffe402df 196 template<class C, typename A1, typename A2, typename A3, typename A4>
slowness 0:c03cffe402df 197 static const char *construct(A1 arg1, A2 arg2, A3 arg3, A4 arg4) {
slowness 0:c03cffe402df 198 Base *p = new C(arg1,arg2,arg3,arg4);
slowness 0:c03cffe402df 199 p->_from_construct = true;
slowness 0:c03cffe402df 200 if(p->_name==NULL) {
slowness 0:c03cffe402df 201 p->register_object(new_name(p));
slowness 0:c03cffe402df 202 }
slowness 0:c03cffe402df 203 return p->_name;
slowness 0:c03cffe402df 204 }
slowness 0:c03cffe402df 205 #endif
slowness 0:c03cffe402df 206
slowness 0:c03cffe402df 207 };
slowness 0:c03cffe402df 208
slowness 0:c03cffe402df 209 /* Macro MBED_OBJECT_NAME_MAX
slowness 0:c03cffe402df 210 * The maximum size of object name (including terminating null byte)
slowness 0:c03cffe402df 211 * that will be recognised when using fopen to open a FileLike
slowness 0:c03cffe402df 212 * object, or when using the rpc function.
slowness 0:c03cffe402df 213 */
slowness 0:c03cffe402df 214 #define MBED_OBJECT_NAME_MAX 32
slowness 0:c03cffe402df 215
slowness 0:c03cffe402df 216 /* Macro MBED_METHOD_NAME_MAX
slowness 0:c03cffe402df 217 * The maximum size of rpc method name (including terminating null
slowness 0:c03cffe402df 218 * byte) that will be recognised by the rpc function (in rpc.h).
slowness 0:c03cffe402df 219 */
slowness 0:c03cffe402df 220 #define MBED_METHOD_NAME_MAX 32
slowness 0:c03cffe402df 221
slowness 0:c03cffe402df 222 } // namespace mbed
slowness 0:c03cffe402df 223
slowness 0:c03cffe402df 224 #endif
slowness 0:c03cffe402df 225