Includes library modifications to allow access to AIN_4 (AIN_0 / 5)

Committer:
bryantaylor
Date:
Tue Sep 20 21:26:12 2016 +0000
Revision:
0:eafc3fd41f75
hackathon

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bryantaylor 0:eafc3fd41f75 1 /* mbed Microcontroller Library
bryantaylor 0:eafc3fd41f75 2 * Copyright (c) 2006-2013 ARM Limited
bryantaylor 0:eafc3fd41f75 3 *
bryantaylor 0:eafc3fd41f75 4 * Licensed under the Apache License, Version 2.0 (the "License");
bryantaylor 0:eafc3fd41f75 5 * you may not use this file except in compliance with the License.
bryantaylor 0:eafc3fd41f75 6 * You may obtain a copy of the License at
bryantaylor 0:eafc3fd41f75 7 *
bryantaylor 0:eafc3fd41f75 8 * http://www.apache.org/licenses/LICENSE-2.0
bryantaylor 0:eafc3fd41f75 9 *
bryantaylor 0:eafc3fd41f75 10 * Unless required by applicable law or agreed to in writing, software
bryantaylor 0:eafc3fd41f75 11 * distributed under the License is distributed on an "AS IS" BASIS,
bryantaylor 0:eafc3fd41f75 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
bryantaylor 0:eafc3fd41f75 13 * See the License for the specific language governing permissions and
bryantaylor 0:eafc3fd41f75 14 * limitations under the License.
bryantaylor 0:eafc3fd41f75 15 */
bryantaylor 0:eafc3fd41f75 16 #ifndef RPCVARIABLE_H_
bryantaylor 0:eafc3fd41f75 17 #define RPCVARIABLE_H_
bryantaylor 0:eafc3fd41f75 18
bryantaylor 0:eafc3fd41f75 19 #include "rpc.h"
bryantaylor 0:eafc3fd41f75 20
bryantaylor 0:eafc3fd41f75 21 namespace mbed {
bryantaylor 0:eafc3fd41f75 22
bryantaylor 0:eafc3fd41f75 23 /**
bryantaylor 0:eafc3fd41f75 24 *Class to read and set an attached variable using the RPC
bryantaylor 0:eafc3fd41f75 25 *
bryantaylor 0:eafc3fd41f75 26 */
bryantaylor 0:eafc3fd41f75 27 template<class T>
bryantaylor 0:eafc3fd41f75 28 class RPCVariable: public RPC {
bryantaylor 0:eafc3fd41f75 29 public:
bryantaylor 0:eafc3fd41f75 30 /**
bryantaylor 0:eafc3fd41f75 31 * Constructor
bryantaylor 0:eafc3fd41f75 32 *
bryantaylor 0:eafc3fd41f75 33 *@param ptr Pointer to the variable to make accessible over RPC. Any type of
bryantaylor 0:eafc3fd41f75 34 *variable can be connected
bryantaylor 0:eafc3fd41f75 35 *@param name The name of that this object will be over RPC
bryantaylor 0:eafc3fd41f75 36 */
bryantaylor 0:eafc3fd41f75 37 template<class A>
bryantaylor 0:eafc3fd41f75 38 RPCVariable(A * ptr, const char * name) : RPC(name) {
bryantaylor 0:eafc3fd41f75 39 _ptr = ptr;
bryantaylor 0:eafc3fd41f75 40 }
bryantaylor 0:eafc3fd41f75 41 /**
bryantaylor 0:eafc3fd41f75 42 *Read the variable over RPC.
bryantaylor 0:eafc3fd41f75 43 *
bryantaylor 0:eafc3fd41f75 44 *@return The value of the variable
bryantaylor 0:eafc3fd41f75 45 */
bryantaylor 0:eafc3fd41f75 46 T read() {
bryantaylor 0:eafc3fd41f75 47 return (*_ptr);
bryantaylor 0:eafc3fd41f75 48 }
bryantaylor 0:eafc3fd41f75 49 /**
bryantaylor 0:eafc3fd41f75 50 *Write a value to the variable over RPC
bryantaylor 0:eafc3fd41f75 51 *
bryantaylor 0:eafc3fd41f75 52 *@param The value to be written to the attached variable.
bryantaylor 0:eafc3fd41f75 53 */
bryantaylor 0:eafc3fd41f75 54 void write(T value) {
bryantaylor 0:eafc3fd41f75 55 *_ptr = value;
bryantaylor 0:eafc3fd41f75 56 }
bryantaylor 0:eafc3fd41f75 57
bryantaylor 0:eafc3fd41f75 58 virtual const struct rpc_method *get_rpc_methods();
bryantaylor 0:eafc3fd41f75 59 static struct rpc_class *get_rpc_class();
bryantaylor 0:eafc3fd41f75 60
bryantaylor 0:eafc3fd41f75 61 private:
bryantaylor 0:eafc3fd41f75 62 T * _ptr;
bryantaylor 0:eafc3fd41f75 63 };
bryantaylor 0:eafc3fd41f75 64
bryantaylor 0:eafc3fd41f75 65 template<class T>
bryantaylor 0:eafc3fd41f75 66 const rpc_method *RPCVariable<T>::get_rpc_methods() {
bryantaylor 0:eafc3fd41f75 67 static const rpc_method rpc_methods[] = {
bryantaylor 0:eafc3fd41f75 68 {"read" , rpc_method_caller<T, RPCVariable, &RPCVariable::read> },
bryantaylor 0:eafc3fd41f75 69 {"write", rpc_method_caller<RPCVariable, T, &RPCVariable::write> },
bryantaylor 0:eafc3fd41f75 70 RPC_METHOD_SUPER(RPC)
bryantaylor 0:eafc3fd41f75 71 };
bryantaylor 0:eafc3fd41f75 72 return rpc_methods;
bryantaylor 0:eafc3fd41f75 73 }
bryantaylor 0:eafc3fd41f75 74
bryantaylor 0:eafc3fd41f75 75 template<class T>
bryantaylor 0:eafc3fd41f75 76 rpc_class *RPCVariable<T>::get_rpc_class() {
bryantaylor 0:eafc3fd41f75 77 static const rpc_function funcs[] = {
bryantaylor 0:eafc3fd41f75 78 "new", rpc_function_caller<const char*, T, const char*, &RPC::construct<RPCVariable, T, const char*> > ,
bryantaylor 0:eafc3fd41f75 79 RPC_METHOD_END
bryantaylor 0:eafc3fd41f75 80 };
bryantaylor 0:eafc3fd41f75 81 static rpc_class c = {"RPCVariable", funcs, NULL};
bryantaylor 0:eafc3fd41f75 82 return &c;
bryantaylor 0:eafc3fd41f75 83 }
bryantaylor 0:eafc3fd41f75 84
bryantaylor 0:eafc3fd41f75 85 }
bryantaylor 0:eafc3fd41f75 86
bryantaylor 0:eafc3fd41f75 87 #endif //RPCVARIABLE_H_