Dependencies:   mbed

Revision:
0:15536fa79743
Child:
1:0872c208795f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LPC.h	Tue Sep 27 15:44:55 2011 +0000
@@ -0,0 +1,60 @@
+#ifndef MBED_LPC_H
+#define MBED_LPC_H
+#include "mbed.h"
+
+class SerialBuffered {
+public:
+    SerialBuffered();
+    SerialBuffered( size_t bufferSize, PinName tx, PinName rx );
+    virtual ~SerialBuffered();
+    int getc();                                             // will block till the next character turns up, or return -1 if there is a timeout
+    int readable();                                         // returns 1 if there is a character available to read, 0 otherwise
+    void setTimeout( float seconds );                       // maximum time in seconds that getc() should block while waiting for a character. Pass -1 to disable the timeout
+    size_t readBytes(char *bytes, size_t requested );       //Read requested bytes into a buffer, return number actually read, which may be less than requested if there has been a timeout
+    
+    void InitUART(int baud);                                //Sets the baud rate to a user-defined value
+    void TargetSendString(char string[]);                   //Sends a string to the board
+    void TargetSendStringAndCR(char string[]);              //Sends a string to the board followed by a carriage return character
+    int CheckTargetPresent(void);                           //Starts the handshaking and then verifies the type of chip from a returned ID code
+    int ProgramFile(char *fname);                           //Programs the UUEncoded data onto the RAM and the copies into the flash
+    int UUEncode(void);                                     //Encodes the file into UU-encoded format
+    int Encode3(void);                                      //Sub-function to UUEncode which encodes the 3 raw bytes into 4 UU-encoded bytes
+    int FirstEncode(void);                                  //Encodes the first UUEncoded line which needs the first checksum added to it as the 8th DWORD
+    int EndUUEncode(void);                                  //Function to encode the last 124 bytes of the 1024 byte blocks and output to enduuline[]
+    int SectorFill(int add);                                //Function to load the data onto the board, keeping track of position in FLASH memory
+    int IDCheck(int idcode);                                //Function that looks up the relevant information about the chip from a returned ID code
+
+private:
+    FILE *f;                                                //File pointer (binary file for writing to the chip and a temporary file with the checksum-added DWORD)
+    int lastSector;                                         //Variable defnining the number of sectors which exist in Flash memory on the specific LPC17xx chip
+    char strChipType[80];                                   //Char array containing the chip type
+    char fname[64];                                         //Char array containing the file name specified in the main.cpp
+    char buf[1024];                                         //Char array containing the currently returned string from the LPC17xx board
+    int n1, n2, n3, n4;                                     //UU-Encoded 4 bytes corresponding to the converted 3 raw bytes
+    int ch1, ch2, ch3;                                      //3 raw bytes for conversion into the 4 bytes above --^
+    int sum20, checksum;                                    //Checksum sent after a certain number of UU-Encoded lines
+    int lastByte;                                           //When the end of the file to be encoded has been reached this value defines the last byte in the last line to be sent to the board
+    bool readAll;                                           //Global variable determining if the file has been encoded and sent fully
+    char uuline[63];                                        //Contains the current UU-encoded line to be sent to the board next
+    char enduuline[51];                                     //Output array from EndUUEncode()
+    char sum[45], sum1[28];                                 //The char arrays assist in the conversion to big-endian for the FirstEncode() function
+    unsigned int id;                                        //ID code for the attached chip
+    int bytesfilled;                                        //Int to keep track of the position in the 1024 byte block (sets up triggering of switching to EndUUEncode()
+    int lines;                                              //Keeps track of the number of lines sent before a checksum (checksum should be sent after every 20 UUline block where possible
+    bool firstencode;                                       //True if no encoding of the file has been done
+    int maxsector;                                          //Number of sectors required in order to accommodate the program, based on filesize
+    long int filesize;                                      //Filesize is the...file...size (number of bytes in the file to load to the chip)
+    
+    //Serial Buffered
+    void handleInterrupt();
+    
+    uint8_t *m_buff;                                        //Points at a circular buffer, containing data from m_contentStart, for m_contentSize bytes, wrapping when you get to the end
+    uint16_t  m_contentStart;                               //Index of first bytes of content
+    uint16_t  m_contentEnd;                                 //Index of bytes after last byte of content
+    uint16_t m_buffSize;
+    float m_timeout;                                        //Can be user-defined
+    Timer m_timer;                                          //Timeout timer
+    
+    Serial target;
+};
+#endif
\ No newline at end of file