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 "port_api.h"
stefan1691 14:3835863bc412 17
stefan1691 14:3835863bc412 18 namespace mbed {
stefan1691 14:3835863bc412 19
stefan1691 14:3835863bc412 20 PinName parse_pins(const char *str) {
stefan1691 14:3835863bc412 21 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368)
stefan1691 14:3835863bc412 22 static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14
stefan1691 14:3835863bc412 23 , p15, p16, p17, p18, p19, p20, p21, p22, p23
stefan1691 14:3835863bc412 24 , p24, p25, p26, p27, p28, p29, p30};
stefan1691 14:3835863bc412 25 #elif defined(TARGET_LPC1114)
stefan1691 14:3835863bc412 26 static const PinName pin_names[] = {dp1, dp2, dp4, dp5, dp6, dp9, dp10, dp11
stefan1691 14:3835863bc412 27 , dp13, dp14, dp15, dp16, dp17, dp18, dp23
stefan1691 14:3835863bc412 28 , dp24, dp25, dp26, dp27, dp28};
stefan1691 14:3835863bc412 29 #elif defined(TARGET_LPC4088)
stefan1691 14:3835863bc412 30 static const PinName pin_names[] = {NC, NC, NC, NC, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14
stefan1691 14:3835863bc412 31 , p15, p16, p17, p18, p19, p20, NC, NC, p23
stefan1691 14:3835863bc412 32 , p24, p25, p26, p27, p28, p29, p30, p31, p32
stefan1691 14:3835863bc412 33 , p33, p34, NC, NC, p37, p38, p39, NC, NC, NC, NC, NC, NC, NC};
stefan1691 14:3835863bc412 34 #elif defined(TARGET_LPC4088_DM)
stefan1691 14:3835863bc412 35 static const PinName pin_names[] = {p1, p2, p3, p4, NC, NC, p7, p8, p9, p10, p11, p12, p13, p14
stefan1691 14:3835863bc412 36 , p15, p16, p17, p18, p19, p20, p21, p22, p23
stefan1691 14:3835863bc412 37 , p24, p25, p26, NC, NC, p29, p30, NC, NC
stefan1691 14:3835863bc412 38 , NC, NC, NC, NC, NC, NC, NC, NC, p41, p42, p43, p44, p45, p46};
stefan1691 14:3835863bc412 39 #endif
stefan1691 14:3835863bc412 40
stefan1691 14:3835863bc412 41 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC812) || defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) || defined(TARGET_LPC1114)
stefan1691 14:3835863bc412 42 if (str[0] == 'P') { // Pn_n
stefan1691 14:3835863bc412 43 uint32_t port = str[1] - '0';
stefan1691 14:3835863bc412 44 uint32_t pin = str[3] - '0'; // Pn_n
stefan1691 14:3835863bc412 45 uint32_t pin2 = str[4] - '0'; // Pn_nn
stefan1691 14:3835863bc412 46 if (pin2 <= 9) {
stefan1691 14:3835863bc412 47 pin = pin * 10 + pin2;
stefan1691 14:3835863bc412 48 }
stefan1691 14:3835863bc412 49 return port_pin((PortName)port, pin);
stefan1691 14:3835863bc412 50
stefan1691 14:3835863bc412 51 #elif defined(TARGET_KL25Z) || defined(TARGET_KL05Z) || defined(TARGET_KL46Z) || defined(TARGET_K64F)
stefan1691 14:3835863bc412 52 if (str[0] == 'P' && str[1] == 'T') { // PTxn
stefan1691 14:3835863bc412 53 uint32_t port = str[2] - 'A';
stefan1691 14:3835863bc412 54 uint32_t pin = str[3] - '0'; // PTxn
stefan1691 14:3835863bc412 55 uint32_t pin2 = str[4] - '0'; // PTxnn
stefan1691 14:3835863bc412 56
stefan1691 14:3835863bc412 57 if (pin2 <= 9) {
stefan1691 14:3835863bc412 58 pin = pin * 10 + pin2;
stefan1691 14:3835863bc412 59 }
stefan1691 14:3835863bc412 60 return port_pin((PortName)port, pin);
stefan1691 14:3835863bc412 61 #endif
stefan1691 14:3835863bc412 62
stefan1691 14:3835863bc412 63 #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368)
stefan1691 14:3835863bc412 64 } else if (str[0] == 'p') { // pn
stefan1691 14:3835863bc412 65 uint32_t pin = str[1] - '0'; // pn
stefan1691 14:3835863bc412 66 uint32_t pin2 = str[2] - '0'; // pnn
stefan1691 14:3835863bc412 67 if (pin2 <= 9) {
stefan1691 14:3835863bc412 68 pin = pin * 10 + pin2;
stefan1691 14:3835863bc412 69 }
stefan1691 14:3835863bc412 70 if (pin < 5 || pin > 30) {
stefan1691 14:3835863bc412 71 return NC;
stefan1691 14:3835863bc412 72 }
stefan1691 14:3835863bc412 73 return pin_names[pin - 5];
stefan1691 14:3835863bc412 74 #elif defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM)
stefan1691 14:3835863bc412 75 } else if (str[0] == 'p') { // pn
stefan1691 14:3835863bc412 76 uint32_t pin = str[1] - '0'; // pn
stefan1691 14:3835863bc412 77 uint32_t pin2 = str[2] - '0'; // pnn
stefan1691 14:3835863bc412 78 if (pin2 <= 9) {
stefan1691 14:3835863bc412 79 pin = pin * 10 + pin2;
stefan1691 14:3835863bc412 80 }
stefan1691 14:3835863bc412 81 if (pin < 1 || pin > 46) {
stefan1691 14:3835863bc412 82 return NC;
stefan1691 14:3835863bc412 83 }
stefan1691 14:3835863bc412 84 return pin_names[pin - 1];
stefan1691 14:3835863bc412 85 #endif
stefan1691 14:3835863bc412 86
stefan1691 14:3835863bc412 87 } else if (str[0] == 'L') { // LEDn
stefan1691 14:3835863bc412 88 switch (str[3]) {
stefan1691 14:3835863bc412 89 case '1' : return LED1;
stefan1691 14:3835863bc412 90 case '2' : return LED2;
stefan1691 14:3835863bc412 91 case '3' : return LED3;
stefan1691 14:3835863bc412 92 case '4' : return LED4;
stefan1691 14:3835863bc412 93 }
stefan1691 14:3835863bc412 94
stefan1691 14:3835863bc412 95 } else if (str[0] == 'U') { // USB?X
stefan1691 14:3835863bc412 96 switch (str[3]) {
stefan1691 14:3835863bc412 97 case 'T' : return USBTX;
stefan1691 14:3835863bc412 98 case 'R' : return USBRX;
stefan1691 14:3835863bc412 99 }
stefan1691 14:3835863bc412 100 }
stefan1691 14:3835863bc412 101
stefan1691 14:3835863bc412 102 return NC;
stefan1691 14:3835863bc412 103 }
stefan1691 14:3835863bc412 104
stefan1691 14:3835863bc412 105 }