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