Modified to run on Renesas GR Peach
Fork of mbed-rpc by
Diff: rpc.cpp
- Revision:
- 1:6919289a5946
- Parent:
- 0:efe8172b4113
--- a/rpc.cpp Tue Nov 20 17:23:59 2012 +0000 +++ b/rpc.cpp 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. */ #include "rpc.h" @@ -112,10 +106,10 @@ bool RPC::call(const char *request, char *reply) { if (request == NULL) return false; - + Arguments args(request); Reply r(reply); - + /* If there's no name print object and class names to result */ if (args.obj_name == NULL) { for (RPC *p = RPC::_head; p != NULL; p = p->_next) { @@ -126,20 +120,20 @@ } return true; } - + /* First try matching an instance */ RPC *p = lookup(args.obj_name); if (p != NULL) { /* Get the list of methods we support */ const rpc_method *cur_method = p->get_rpc_methods(); - + /* When there's no method print method names to result */ if (args.method_name == NULL) { while (true) { for (; cur_method->name != NULL; cur_method++) { r.putData<const char*>(cur_method->name); } - + /* write_name_arr's args are references, so result and cur_method will have changed */ if (cur_method->super != 0) { cur_method = cur_method->super(p); @@ -148,7 +142,7 @@ } } } - + /* Look through the methods for the one whose name matches */ while (true) { for (; cur_method->name != NULL; cur_method++) { @@ -157,17 +151,17 @@ return true; } } - + if (cur_method->super != 0) { cur_method = cur_method->super(p); } else { /* end of methods and no match */ return false; } - + } } - + /* Then try a class */ for (const rpc_class *q = _classes; q != NULL; q = q->next) { if (strcmp(q->name, args.obj_name) == 0) { @@ -190,7 +184,7 @@ } } } - + return false; }