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 *
ICTFBI 0:4edb816d21e1 24 * @section DESCRIPTION
ICTFBI 0:4edb816d21e1 25 *
ICTFBI 0:4edb816d21e1 26 *This class sets up RPC communication over serial.
ICTFBI 0:4edb816d21e1 27 */
ICTFBI 0:4edb816d21e1 28 #ifndef INTERFACE
ICTFBI 0:4edb816d21e1 29 #define INTERFACE
ICTFBI 0:4edb816d21e1 30
ICTFBI 0:4edb816d21e1 31 /**
ICTFBI 0:4edb816d21e1 32 *Includes
ICTFBI 0:4edb816d21e1 33 */
ICTFBI 0:4edb816d21e1 34 #include "mbed.h"
ICTFBI 0:4edb816d21e1 35 #include "platform.h"
ICTFBI 0:4edb816d21e1 36 #include "rpc.h"
ICTFBI 0:4edb816d21e1 37 #include "RPCFunction.h"
ICTFBI 0:4edb816d21e1 38 #include "RPCVariable.h"
ICTFBI 0:4edb816d21e1 39
ICTFBI 0:4edb816d21e1 40
ICTFBI 0:4edb816d21e1 41 namespace mbed{
ICTFBI 0:4edb816d21e1 42 /**
ICTFBI 0:4edb816d21e1 43 *Provides an Interface to mbed over RPC.
ICTFBI 0:4edb816d21e1 44 *
ICTFBI 0:4edb816d21e1 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.
ICTFBI 0:4edb816d21e1 46 */
ICTFBI 0:4edb816d21e1 47 class SerialRPCInterface{
ICTFBI 0:4edb816d21e1 48 public:
ICTFBI 0:4edb816d21e1 49 /**
ICTFBI 0:4edb816d21e1 50 *Constructor
ICTFBI 0:4edb816d21e1 51 *
ICTFBI 0:4edb816d21e1 52 *Sets up RPC communication using serial communication.
ICTFBI 0:4edb816d21e1 53 *
ICTFBI 0:4edb816d21e1 54 *@param tx The transmit pin of the serial port.
ICTFBI 0:4edb816d21e1 55 *@param rx The receive pin of the serial port.
ICTFBI 0:4edb816d21e1 56 *@param baud Set the baud rate, default is 9600.
ICTFBI 0:4edb816d21e1 57 */
ICTFBI 0:4edb816d21e1 58 SerialRPCInterface(PinName tx, PinName rx, int baud = 9600);
ICTFBI 0:4edb816d21e1 59
ICTFBI 0:4edb816d21e1 60 /**
ICTFBI 0:4edb816d21e1 61 *Disable the RPC.
ICTFBI 0:4edb816d21e1 62 *
ICTFBI 0:4edb816d21e1 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.
ICTFBI 0:4edb816d21e1 64 */
ICTFBI 0:4edb816d21e1 65 void Disable(void);
ICTFBI 0:4edb816d21e1 66
ICTFBI 0:4edb816d21e1 67 /**
ICTFBI 0:4edb816d21e1 68 *Enable the RPC
ICTFBI 0:4edb816d21e1 69 *
ICTFBI 0:4edb816d21e1 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.
ICTFBI 0:4edb816d21e1 71 *
ICTFBI 0:4edb816d21e1 72 */
ICTFBI 0:4edb816d21e1 73 void Enable(void);
ICTFBI 0:4edb816d21e1 74
ICTFBI 0:4edb816d21e1 75 //The Serial Port
ICTFBI 0:4edb816d21e1 76 Serial pc;
ICTFBI 0:4edb816d21e1 77
ICTFBI 0:4edb816d21e1 78
ICTFBI 0:4edb816d21e1 79 private:
ICTFBI 0:4edb816d21e1 80 //Handle messgaes and take appropriate action
ICTFBI 0:4edb816d21e1 81 void _MsgProcess(void);
ICTFBI 0:4edb816d21e1 82 void _RegClasses(void);
ICTFBI 0:4edb816d21e1 83 void _RPCSerial();
ICTFBI 0:4edb816d21e1 84 bool _enabled;
ICTFBI 0:4edb816d21e1 85 char _command[256];
ICTFBI 0:4edb816d21e1 86 char _response[256];
ICTFBI 0:4edb816d21e1 87 bool _RPCflag;
ICTFBI 0:4edb816d21e1 88 };
ICTFBI 0:4edb816d21e1 89 }
ICTFBI 0:4edb816d21e1 90 #endif