Library for Bert van Dam's book "ARM MICROCONTROLLERS" For all chapters with internet.

Dependencies:   mbed

Committer:
ICTFBI
Date:
Fri Oct 16 14:28:26 2015 +0000
Revision:
0:4edb816d21e1
Pre-update 16-10-15

Who changed what in which revision?

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