HTTP RPC Server mit vordefinierten Objekten

Dependencies:   EthernetInterface HttpServer Servo mbed-rtos mbed

Fork of RPCHTTPServerVariable by th.iotkit2.ch

Mittels RPCVariable lassen sich lokale Variablen setzen. Diese Variablen können gesetzt write oder gelesen read werden.

Mittels Ticker u.ä. Varianten lassen sich damit auch Objektwerte setzen, welche von RPC nicht unterstützt werden, z.B. Servo's.

Client

Wert setzen: http://<IP-Adresse mbed>/rpc/servo2/write+0.5

Committer:
stefan1691
Date:
Sun Mar 20 07:39:09 2016 +0000
Revision:
17:752e17b9aab4
Parent:
14:3835863bc412
https statt http verhindert Fehler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 14:3835863bc412 1 /* mbed Microcontroller Library
stefan1691 14:3835863bc412 2 * Copyright (c) 2006-2013 ARM Limited
stefan1691 14:3835863bc412 3 *
stefan1691 14:3835863bc412 4 * Licensed under the Apache License, Version 2.0 (the "License");
stefan1691 14:3835863bc412 5 * you may not use this file except in compliance with the License.
stefan1691 14:3835863bc412 6 * You may obtain a copy of the License at
stefan1691 14:3835863bc412 7 *
stefan1691 14:3835863bc412 8 * http://www.apache.org/licenses/LICENSE-2.0
stefan1691 14:3835863bc412 9 *
stefan1691 14:3835863bc412 10 * Unless required by applicable law or agreed to in writing, software
stefan1691 14:3835863bc412 11 * distributed under the License is distributed on an "AS IS" BASIS,
stefan1691 14:3835863bc412 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
stefan1691 14:3835863bc412 13 * See the License for the specific language governing permissions and
stefan1691 14:3835863bc412 14 * limitations under the License.
stefan1691 14:3835863bc412 15 */
stefan1691 14:3835863bc412 16 #include "RPCFunction.h"
stefan1691 14:3835863bc412 17
stefan1691 14:3835863bc412 18 namespace mbed {
stefan1691 14:3835863bc412 19
stefan1691 14:3835863bc412 20 //Custom rpc method caller for execute so that the string will not be delimited by anything
stefan1691 14:3835863bc412 21 void rpc_method_caller_run(RPC *this_ptr, Arguments *arguments, Reply *result) {
stefan1691 14:3835863bc412 22 ((static_cast<RPCFunction*>(this_ptr))->run)(arguments, result);
stefan1691 14:3835863bc412 23 }
stefan1691 14:3835863bc412 24
stefan1691 14:3835863bc412 25 RPCFunction::RPCFunction(void (*f)(Arguments*, Reply*), const char* name) : RPC(name) {
stefan1691 14:3835863bc412 26 _ftr = f;
stefan1691 14:3835863bc412 27 }
stefan1691 14:3835863bc412 28
stefan1691 14:3835863bc412 29 //Just run the attached function using the string thats in private memory - or just using null values,
stefan1691 14:3835863bc412 30 void RPCFunction::run(Arguments* args, Reply* r) {
stefan1691 14:3835863bc412 31 (*_ftr)(args, r);
stefan1691 14:3835863bc412 32 }
stefan1691 14:3835863bc412 33
stefan1691 14:3835863bc412 34 const rpc_method *RPCFunction::get_rpc_methods() {
stefan1691 14:3835863bc412 35 static const rpc_method rpc_methods[] = {
stefan1691 14:3835863bc412 36 {"run", rpc_method_caller_run }, //Run using custom caller, all characters accepted in string
stefan1691 14:3835863bc412 37 RPC_METHOD_SUPER(RPC)
stefan1691 14:3835863bc412 38 };
stefan1691 14:3835863bc412 39 return rpc_methods;
stefan1691 14:3835863bc412 40 }
stefan1691 14:3835863bc412 41
stefan1691 14:3835863bc412 42 }