STM32F103
Fork of mbed-rpc by
Diff: rpc.h
- Revision:
- 1:6919289a5946
- Parent:
- 0:efe8172b4113
--- a/rpc.h Tue Nov 20 17:23:59 2012 +0000 +++ b/rpc.h Mon Apr 22 17:50:11 2013 +0100 @@ -1,23 +1,17 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2012 ARM Limited + * Copyright (c) 2006-2013 ARM Limited * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. + * http://www.apache.org/licenses/LICENSE-2.0 * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #ifndef RPC_H #define RPC_H @@ -44,9 +38,9 @@ * The RPC class for most things */ class RPC { - + public: - + RPC(const char *name = NULL); virtual ~RPC(); @@ -69,7 +63,7 @@ * > }; */ virtual const struct rpc_method *get_rpc_methods(); - + static bool call(const char *buf, char *result); /* Function lookup @@ -108,35 +102,35 @@ c->next = _classes; _classes = c; } - + template<class C> static const char *construct() { RPC *p = new C(); p->_from_construct = true; return p->_name; } - + template<class C, typename A1> static const char *construct(A1 arg1) { RPC *p = new C(arg1); p->_from_construct = true; return p->_name; } - + template<class C, typename A1, typename A2> static const char *construct(A1 arg1, A2 arg2) { RPC *p = new C(arg1, arg2); p->_from_construct = true; return p->_name; } - + template<class C, typename A1, typename A2, typename A3> static const char *construct(A1 arg1, A2 arg2, A3 arg3) { RPC *p = new C(arg1, arg2, arg3); p->_from_construct = true; return p->_name; } - + template<class C, typename A1, typename A2, typename A3, typename A4> static const char *construct(A1 arg1, A2 arg2, A3 arg3, A4 arg4) { RPC *p = new C(arg1, arg2, arg3, arg4); @@ -177,7 +171,7 @@ template<class T, typename A1, void(T::*member)(A1)> void rpc_method_caller(RPC *this_ptr, Arguments *arguments, Reply *result) { A1 arg1 = arguments->getArg<A1>(); - + (static_cast<T*>(this_ptr)->*member)(arg1); } @@ -187,7 +181,7 @@ void rpc_method_caller(RPC *this_ptr, Arguments *arguments, Reply *result) { A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); - + (static_cast<T*>(this_ptr)->*member)(arg1, arg2); } @@ -198,7 +192,7 @@ A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); A3 arg3 = arguments->getArg<A3>(); - + (static_cast<T*>(this_ptr)->*member)(arg1, arg2, arg3); } @@ -215,7 +209,7 @@ template<typename R, class T, typename A1, R(T::*member)(A1)> void rpc_method_caller(RPC *this_ptr, Arguments *arguments, Reply *result) { A1 arg1 = arguments->getArg<A1>(); - + R res = (static_cast<T*>(this_ptr)->*member)(arg1); result->putData<R>(res); } @@ -226,7 +220,7 @@ void rpc_method_caller(RPC *this_ptr, Arguments *arguments, Reply *result) { A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); - + R res = (static_cast<T*>(this_ptr)->*member)(arg1, arg2); result->putData<R>(res); } @@ -238,7 +232,7 @@ A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); A3 arg3 = arguments->getArg<A3>(); - + R res = (static_cast<T*>(this_ptr)->*member)(arg1, arg2, arg3); result->putData<R>(res); } @@ -266,7 +260,7 @@ void rpc_function_caller(Arguments *arguments, Reply *result) { A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); - + R res = (*func)(arg1, arg2); result->putData<R>(res); } @@ -278,7 +272,7 @@ A1 arg1 = arguments->getArg<A1>(); A2 arg2 = arguments->getArg<A2>(); A3 arg3 = arguments->getArg<A3>(); - + R res = (*func)(arg1, arg2, arg3); result->putData<R>(res); } @@ -291,7 +285,7 @@ A2 arg2 = arguments->getArg<A2>(); A3 arg3 = arguments->getArg<A3>(); A4 arg4 = arguments->getArg<A4>(); - + R res = (*func)(arg1, arg2, arg3, arg4); result->putData<R>(res); }