serial_extend library for array data transmission and reception

Dependents:   receives_robot_wheel

serial_extend.h

Committer:
bousiya03
Date:
2014-10-05
Revision:
1:e808dd01f134
Parent:
0:fbf5705f90cc

File content as of revision 1:e808dd01f134:

/* 
 * array data transmission and reception library
 */ 

#ifndef SERIAL_EXTEND_H
#define SERIAL_EXTE_H

#include "mbed.h"

#define __SIZE(array) (sizeof(array) / sizeof(array[0]))


#define MAX_DATA_NUM 10
#define KEY 0//number of first data

/** array data transmission and reception class
 *
 * Example:
 * @code
 * #include"mbed.h"
 * #include"serial_extend.h"
 * #define KEYCODE 0x0A
 *   
 * BusOut check(LED3,LED4);
 *
 * uint8_t send_data[2]={0,0xF};
 * uint8_t get_data[2];
 *
 * serial_extend send(p9,p10);
 * serial_extend get(p28,p27);
 *
 * int main(){
 *    
 * send.write(send_data,KEYCODE);
 * get.read(get_data,KEYCODE);
 * for(int i=1;;i++){
 *    
 *       check = get_data[i];
 *       wait(0.1);
 *       if(i==2){i=0;}
 *   
 *   }
 * }
 * @endcode
 */
 
/*
 typedef enum {     
     write,
     read,
     both
     
     }dir_state;
 */    

class serial_extend{

    public:
    
        /** Create a serial_extend object onnected to the specified serial pin
         *
         * @param tx Serial tx pin
         * @param rx Serial rx pin
         */ 

        serial_extend(PinName tx,PinName rx);
        
        /**reception data
         *
         * @param readData array address
         * @param readKey KEYCODE
         */

        void read_data(uint8_t* readData,uint8_t readKey);
        
        /**send data
         *
         * @param writeData array address
         * @param writeKey KEYCODE
         */

        void write_data(uint8_t* writeData,uint8_t writeKey);

        /**transmit interrupt
         *
         *@param none
         */
        void TX(void);
        
        /**receive interrupt
         *
         *@param none
         */
        void RX(void);
        
        
        void start_read();
        
        void stop_read();
        
        void start_write();
        
        void stop_write();
        
        uint8_t readable_check();

    protected:

        RawSerial __serial__;

        volatile    uint8_t*    __readData;
        volatile    uint8_t     __readSize;
        volatile    uint8_t     __readKey;

        volatile    uint8_t*    __writeData;
        volatile    uint8_t     __writeSize;
        volatile    uint8_t     __writeKey;
        
        volatile    uint8_t     __stop_read;
        volatile    uint8_t     __stop_write;

};
#endif