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 *
rikvandyck 0:e1edd52b1ee2 24 * @section DESCRIPTION
rikvandyck 0:e1edd52b1ee2 25 *
rikvandyck 0:e1edd52b1ee2 26 *This class sets up RPC communication over serial.
rikvandyck 0:e1edd52b1ee2 27 */
rikvandyck 0:e1edd52b1ee2 28 #ifndef INTERFACE
rikvandyck 0:e1edd52b1ee2 29 #define INTERFACE
rikvandyck 0:e1edd52b1ee2 30
rikvandyck 0:e1edd52b1ee2 31 /**
rikvandyck 0:e1edd52b1ee2 32 *Includes
rikvandyck 0:e1edd52b1ee2 33 */
rikvandyck 0:e1edd52b1ee2 34 #include "mbed.h"
rikvandyck 0:e1edd52b1ee2 35 #include "platform.h"
rikvandyck 0:e1edd52b1ee2 36 #include "rpc.h"
rikvandyck 0:e1edd52b1ee2 37 #include "RPCFunction.h"
rikvandyck 0:e1edd52b1ee2 38 #include "RPCVariable.h"
rikvandyck 0:e1edd52b1ee2 39
rikvandyck 0:e1edd52b1ee2 40
rikvandyck 0:e1edd52b1ee2 41 namespace mbed{
rikvandyck 0:e1edd52b1ee2 42 /**
rikvandyck 0:e1edd52b1ee2 43 *Provides an Interface to mbed over RPC.
rikvandyck 0:e1edd52b1ee2 44 *
rikvandyck 0:e1edd52b1ee2 45 *For the chosen communication type this class sets up the necessary interrupts to receive RPC messages. Receives the messages, passes them to the rpc function and then returns the result.
rikvandyck 0:e1edd52b1ee2 46 */
rikvandyck 0:e1edd52b1ee2 47 class SerialRPCInterface{
rikvandyck 0:e1edd52b1ee2 48 public:
rikvandyck 0:e1edd52b1ee2 49 /**
rikvandyck 0:e1edd52b1ee2 50 *Constructor
rikvandyck 0:e1edd52b1ee2 51 *
rikvandyck 0:e1edd52b1ee2 52 *Sets up RPC communication using serial communication.
rikvandyck 0:e1edd52b1ee2 53 *
rikvandyck 0:e1edd52b1ee2 54 *@param tx The transmit pin of the serial port.
rikvandyck 0:e1edd52b1ee2 55 *@param rx The receive pin of the serial port.
rikvandyck 0:e1edd52b1ee2 56 *@param baud Set the baud rate, default is 9600.
rikvandyck 0:e1edd52b1ee2 57 */
rikvandyck 0:e1edd52b1ee2 58 SerialRPCInterface(PinName tx, PinName rx, int baud = 9600);
rikvandyck 0:e1edd52b1ee2 59
rikvandyck 0:e1edd52b1ee2 60 /**
rikvandyck 0:e1edd52b1ee2 61 *Disable the RPC.
rikvandyck 0:e1edd52b1ee2 62 *
rikvandyck 0:e1edd52b1ee2 63 *This will stop RPC messages being recevied and interpreted by this library. This might be used to prevent RPC commands interrupting an important piece of code on mbed.
rikvandyck 0:e1edd52b1ee2 64 */
rikvandyck 0:e1edd52b1ee2 65 void Disable(void);
rikvandyck 0:e1edd52b1ee2 66
rikvandyck 0:e1edd52b1ee2 67 /**
rikvandyck 0:e1edd52b1ee2 68 *Enable the RPC
rikvandyck 0:e1edd52b1ee2 69 *
rikvandyck 0:e1edd52b1ee2 70 *This will set this class to receiving and executing RPC commands. The class starts in this mode so this function only needs to be called if you have previosuly disabled the RPC.
rikvandyck 0:e1edd52b1ee2 71 *
rikvandyck 0:e1edd52b1ee2 72 */
rikvandyck 0:e1edd52b1ee2 73 void Enable(void);
rikvandyck 0:e1edd52b1ee2 74
rikvandyck 0:e1edd52b1ee2 75 //The Serial Port
rikvandyck 0:e1edd52b1ee2 76 Serial pc;
rikvandyck 0:e1edd52b1ee2 77
rikvandyck 0:e1edd52b1ee2 78
rikvandyck 0:e1edd52b1ee2 79 private:
rikvandyck 0:e1edd52b1ee2 80 //Handle messgaes and take appropriate action
rikvandyck 0:e1edd52b1ee2 81 void _MsgProcess(void);
rikvandyck 0:e1edd52b1ee2 82 void _RegClasses(void);
rikvandyck 0:e1edd52b1ee2 83 void _RPCSerial();
rikvandyck 0:e1edd52b1ee2 84 bool _enabled;
rikvandyck 0:e1edd52b1ee2 85 char _command[256];
rikvandyck 0:e1edd52b1ee2 86 char _response[256];
rikvandyck 0:e1edd52b1ee2 87 bool _RPCflag;
rikvandyck 0:e1edd52b1ee2 88 };
rikvandyck 0:e1edd52b1ee2 89 }
rikvandyck 0:e1edd52b1ee2 90 #endif