Embedded C project:18/12/2014

Dependencies:   DS1307 TextLCD mbed

Committer:
ninoderkinderen
Date:
Thu Dec 18 09:35:49 2014 +0000
Revision:
0:8d87bc453349
Programma embedded C

Who changed what in which revision?

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