Project_Embedded_C

Dependencies:   mbed DS1307 Servo TextLCD

Committer:
rikvandyck
Date:
Thu Dec 18 10:43:07 2014 +0000
Revision:
2:55b6fd49b738
Parent:
0:e1edd52b1ee2
Project_Embedded_C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rikvandyck 0:e1edd52b1ee2 1 /**
rikvandyck 0:e1edd52b1ee2 2 * @section LICENSE
rikvandyck 0:e1edd52b1ee2 3 *Copyright (c) 2010 ARM Ltd.
rikvandyck 0:e1edd52b1ee2 4 *
rikvandyck 0:e1edd52b1ee2 5 *Permission is hereby granted, free of charge, to any person obtaining a copy
rikvandyck 0:e1edd52b1ee2 6 *of this software and associated documentation files (the "Software"), to deal
rikvandyck 0:e1edd52b1ee2 7 *in the Software without restriction, including without limitation the rights
rikvandyck 0:e1edd52b1ee2 8 *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
rikvandyck 0:e1edd52b1ee2 9 *copies of the Software, and to permit persons to whom the Software is
rikvandyck 0:e1edd52b1ee2 10 *furnished to do so, subject to the following conditions:
rikvandyck 0:e1edd52b1ee2 11 *
rikvandyck 0:e1edd52b1ee2 12 *The above copyright notice and this permission notice shall be included in
rikvandyck 0:e1edd52b1ee2 13 *all copies or substantial portions of the Software.
rikvandyck 0:e1edd52b1ee2 14 *
rikvandyck 0:e1edd52b1ee2 15 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
rikvandyck 0:e1edd52b1ee2 16 *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
rikvandyck 0:e1edd52b1ee2 17 *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
rikvandyck 0:e1edd52b1ee2 18 *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
rikvandyck 0:e1edd52b1ee2 19 *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
rikvandyck 0:e1edd52b1ee2 20 *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
rikvandyck 0:e1edd52b1ee2 21 *THE SOFTWARE.
rikvandyck 0:e1edd52b1ee2 22 *
rikvandyck 0:e1edd52b1ee2 23 * @section Description
rikvandyck 0:e1edd52b1ee2 24 *This class provides an object which can be called over RPC to run the function which is attached to it.
rikvandyck 0:e1edd52b1ee2 25 *
rikvandyck 0:e1edd52b1ee2 26 */
rikvandyck 0:e1edd52b1ee2 27 #ifndef RPCFUNCTION_RPC
rikvandyck 0:e1edd52b1ee2 28 #define RPCFUNCTION_RPC
rikvandyck 0:e1edd52b1ee2 29 /**
rikvandyck 0:e1edd52b1ee2 30 *Includes
rikvandyck 0:e1edd52b1ee2 31 */
rikvandyck 0:e1edd52b1ee2 32 #include "mbed.h"
rikvandyck 0:e1edd52b1ee2 33 #include "platform.h"
rikvandyck 0:e1edd52b1ee2 34 #include "rpc.h"
rikvandyck 0:e1edd52b1ee2 35 #define STR_LEN 64
rikvandyck 0:e1edd52b1ee2 36 #include "platform.h"
rikvandyck 0:e1edd52b1ee2 37
rikvandyck 0:e1edd52b1ee2 38 #ifdef MBED_RPC
rikvandyck 0:e1edd52b1ee2 39 #include "rpc.h"
rikvandyck 0:e1edd52b1ee2 40 #endif
rikvandyck 0:e1edd52b1ee2 41 /**
rikvandyck 0:e1edd52b1ee2 42 *
rikvandyck 0:e1edd52b1ee2 43 *Class to call custom functions over RPC
rikvandyck 0:e1edd52b1ee2 44 *
rikvandyck 0:e1edd52b1ee2 45 */
rikvandyck 0:e1edd52b1ee2 46 class RPCFunction : public Base{
rikvandyck 0:e1edd52b1ee2 47 public:
rikvandyck 0:e1edd52b1ee2 48 /**
rikvandyck 0:e1edd52b1ee2 49 * Constructor
rikvandyck 0:e1edd52b1ee2 50 *
rikvandyck 0:e1edd52b1ee2 51 *@param f Pointer to the function to call. the function must be of the form void foo(char * input, char * output)
rikvandyck 0:e1edd52b1ee2 52 *@param name The name of this object
rikvandyck 0:e1edd52b1ee2 53 */
rikvandyck 0:e1edd52b1ee2 54 RPCFunction(void(*f)(char*, char*), const char* = NULL);
rikvandyck 0:e1edd52b1ee2 55
rikvandyck 0:e1edd52b1ee2 56 /**
rikvandyck 0:e1edd52b1ee2 57 *run
rikvandyck 0:e1edd52b1ee2 58 *
rikvandyck 0:e1edd52b1ee2 59 *Calls the attached function passing the string in but doesn't return the result.
rikvandyck 0:e1edd52b1ee2 60 *@param str The string to be passed into the attached function. This string can consist of any ASCII characters apart from escape codes. The usual limtations on argument content for RPC strings has been removed
rikvandyck 0:e1edd52b1ee2 61 *@return A string output from the function
rikvandyck 0:e1edd52b1ee2 62 */
rikvandyck 0:e1edd52b1ee2 63 char * run(char* str);
rikvandyck 0:e1edd52b1ee2 64
rikvandyck 0:e1edd52b1ee2 65 /**
rikvandyck 0:e1edd52b1ee2 66 *Reads the value of the output string.
rikvandyck 0:e1edd52b1ee2 67 *
rikvandyck 0:e1edd52b1ee2 68 *@returns the string outputted from the last time the function was called
rikvandyck 0:e1edd52b1ee2 69 */
rikvandyck 0:e1edd52b1ee2 70 char * read();
rikvandyck 0:e1edd52b1ee2 71
rikvandyck 0:e1edd52b1ee2 72
rikvandyck 0:e1edd52b1ee2 73 #ifdef MBED_RPC
rikvandyck 0:e1edd52b1ee2 74 virtual const struct rpc_method *get_rpc_methods();
rikvandyck 0:e1edd52b1ee2 75 #endif
rikvandyck 0:e1edd52b1ee2 76
rikvandyck 0:e1edd52b1ee2 77 private:
rikvandyck 0:e1edd52b1ee2 78 void (*_ftr)(char*, char*);
rikvandyck 0:e1edd52b1ee2 79
rikvandyck 0:e1edd52b1ee2 80 char _input[STR_LEN];
rikvandyck 0:e1edd52b1ee2 81 char _output[STR_LEN];
rikvandyck 0:e1edd52b1ee2 82
rikvandyck 0:e1edd52b1ee2 83 };
rikvandyck 0:e1edd52b1ee2 84 #endif