ソースの整理中ですが、利用はできます。

Dependencies:   EthernetInterface HttpServer TextLCD mbed-rpc mbed-rtos mbed Socket lwip-eth lwip-sys lwip

Committer:
yueee_yt
Date:
Wed Mar 12 04:39:15 2014 +0000
Revision:
2:14b689a85306
Parent:
0:7766f6712673
bug fix

Who changed what in which revision?

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