serial_extend library for array data transmission and reception

Dependents:   receives_robot_wheel

Committer:
bousiya03
Date:
Sun Oct 05 01:00:00 2014 +0000
Revision:
1:e808dd01f134
Parent:
0:fbf5705f90cc
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bousiya03 0:fbf5705f90cc 1 /*
bousiya03 1:e808dd01f134 2 * array data transmission and reception library
bousiya03 1:e808dd01f134 3 */
bousiya03 0:fbf5705f90cc 4
bousiya03 1:e808dd01f134 5 #ifndef SERIAL_EXTEND_H
bousiya03 1:e808dd01f134 6 #define SERIAL_EXTE_H
bousiya03 0:fbf5705f90cc 7
bousiya03 0:fbf5705f90cc 8 #include "mbed.h"
bousiya03 0:fbf5705f90cc 9
bousiya03 0:fbf5705f90cc 10 #define __SIZE(array) (sizeof(array) / sizeof(array[0]))
bousiya03 0:fbf5705f90cc 11
bousiya03 0:fbf5705f90cc 12
bousiya03 0:fbf5705f90cc 13 #define MAX_DATA_NUM 10
bousiya03 0:fbf5705f90cc 14 #define KEY 0//number of first data
bousiya03 0:fbf5705f90cc 15
bousiya03 1:e808dd01f134 16 /** array data transmission and reception class
bousiya03 0:fbf5705f90cc 17 *
bousiya03 0:fbf5705f90cc 18 * Example:
bousiya03 0:fbf5705f90cc 19 * @code
bousiya03 0:fbf5705f90cc 20 * #include"mbed.h"
bousiya03 1:e808dd01f134 21 * #include"serial_extend.h"
bousiya03 1:e808dd01f134 22 * #define KEYCODE 0x0A
bousiya03 1:e808dd01f134 23 *
bousiya03 1:e808dd01f134 24 * BusOut check(LED3,LED4);
bousiya03 1:e808dd01f134 25 *
bousiya03 0:fbf5705f90cc 26 * uint8_t send_data[2]={0,0xF};
bousiya03 0:fbf5705f90cc 27 * uint8_t get_data[2];
bousiya03 1:e808dd01f134 28 *
bousiya03 0:fbf5705f90cc 29 * serial_extend send(p9,p10);
bousiya03 0:fbf5705f90cc 30 * serial_extend get(p28,p27);
bousiya03 0:fbf5705f90cc 31 *
bousiya03 0:fbf5705f90cc 32 * int main(){
bousiya03 0:fbf5705f90cc 33 *
bousiya03 1:e808dd01f134 34 * send.write(send_data,KEYCODE);
bousiya03 1:e808dd01f134 35 * get.read(get_data,KEYCODE);
bousiya03 0:fbf5705f90cc 36 * for(int i=1;;i++){
bousiya03 0:fbf5705f90cc 37 *
bousiya03 0:fbf5705f90cc 38 * check = get_data[i];
bousiya03 0:fbf5705f90cc 39 * wait(0.1);
bousiya03 0:fbf5705f90cc 40 * if(i==2){i=0;}
bousiya03 0:fbf5705f90cc 41 *
bousiya03 0:fbf5705f90cc 42 * }
bousiya03 0:fbf5705f90cc 43 * }
bousiya03 0:fbf5705f90cc 44 * @endcode
bousiya03 0:fbf5705f90cc 45 */
bousiya03 0:fbf5705f90cc 46
bousiya03 0:fbf5705f90cc 47 /*
bousiya03 0:fbf5705f90cc 48 typedef enum {
bousiya03 0:fbf5705f90cc 49 write,
bousiya03 0:fbf5705f90cc 50 read,
bousiya03 0:fbf5705f90cc 51 both
bousiya03 0:fbf5705f90cc 52
bousiya03 0:fbf5705f90cc 53 }dir_state;
bousiya03 0:fbf5705f90cc 54 */
bousiya03 0:fbf5705f90cc 55
bousiya03 0:fbf5705f90cc 56 class serial_extend{
bousiya03 0:fbf5705f90cc 57
bousiya03 0:fbf5705f90cc 58 public:
bousiya03 0:fbf5705f90cc 59
bousiya03 1:e808dd01f134 60 /** Create a serial_extend object onnected to the specified serial pin
bousiya03 0:fbf5705f90cc 61 *
bousiya03 0:fbf5705f90cc 62 * @param tx Serial tx pin
bousiya03 0:fbf5705f90cc 63 * @param rx Serial rx pin
bousiya03 0:fbf5705f90cc 64 */
bousiya03 0:fbf5705f90cc 65
bousiya03 0:fbf5705f90cc 66 serial_extend(PinName tx,PinName rx);
bousiya03 0:fbf5705f90cc 67
bousiya03 1:e808dd01f134 68 /**reception data
bousiya03 0:fbf5705f90cc 69 *
bousiya03 1:e808dd01f134 70 * @param readData array address
bousiya03 1:e808dd01f134 71 * @param readKey KEYCODE
bousiya03 0:fbf5705f90cc 72 */
bousiya03 0:fbf5705f90cc 73
bousiya03 0:fbf5705f90cc 74 void read_data(uint8_t* readData,uint8_t readKey);
bousiya03 0:fbf5705f90cc 75
bousiya03 1:e808dd01f134 76 /**send data
bousiya03 0:fbf5705f90cc 77 *
bousiya03 1:e808dd01f134 78 * @param writeData array address
bousiya03 1:e808dd01f134 79 * @param writeKey KEYCODE
bousiya03 0:fbf5705f90cc 80 */
bousiya03 0:fbf5705f90cc 81
bousiya03 0:fbf5705f90cc 82 void write_data(uint8_t* writeData,uint8_t writeKey);
bousiya03 0:fbf5705f90cc 83
bousiya03 1:e808dd01f134 84 /**transmit interrupt
bousiya03 0:fbf5705f90cc 85 *
bousiya03 0:fbf5705f90cc 86 *@param none
bousiya03 0:fbf5705f90cc 87 */
bousiya03 0:fbf5705f90cc 88 void TX(void);
bousiya03 1:e808dd01f134 89
bousiya03 1:e808dd01f134 90 /**receive interrupt
bousiya03 0:fbf5705f90cc 91 *
bousiya03 0:fbf5705f90cc 92 *@param none
bousiya03 0:fbf5705f90cc 93 */
bousiya03 0:fbf5705f90cc 94 void RX(void);
bousiya03 0:fbf5705f90cc 95
bousiya03 1:e808dd01f134 96
bousiya03 0:fbf5705f90cc 97 void start_read();
bousiya03 0:fbf5705f90cc 98
bousiya03 0:fbf5705f90cc 99 void stop_read();
bousiya03 0:fbf5705f90cc 100
bousiya03 0:fbf5705f90cc 101 void start_write();
bousiya03 0:fbf5705f90cc 102
bousiya03 0:fbf5705f90cc 103 void stop_write();
bousiya03 0:fbf5705f90cc 104
bousiya03 0:fbf5705f90cc 105 uint8_t readable_check();
bousiya03 0:fbf5705f90cc 106
bousiya03 0:fbf5705f90cc 107 protected:
bousiya03 0:fbf5705f90cc 108
bousiya03 0:fbf5705f90cc 109 RawSerial __serial__;
bousiya03 0:fbf5705f90cc 110
bousiya03 0:fbf5705f90cc 111 volatile uint8_t* __readData;
bousiya03 0:fbf5705f90cc 112 volatile uint8_t __readSize;
bousiya03 0:fbf5705f90cc 113 volatile uint8_t __readKey;
bousiya03 0:fbf5705f90cc 114
bousiya03 0:fbf5705f90cc 115 volatile uint8_t* __writeData;
bousiya03 0:fbf5705f90cc 116 volatile uint8_t __writeSize;
bousiya03 0:fbf5705f90cc 117 volatile uint8_t __writeKey;
bousiya03 0:fbf5705f90cc 118
bousiya03 0:fbf5705f90cc 119 volatile uint8_t __stop_read;
bousiya03 0:fbf5705f90cc 120 volatile uint8_t __stop_write;
bousiya03 0:fbf5705f90cc 121
bousiya03 0:fbf5705f90cc 122 };
bousiya03 0:fbf5705f90cc 123 #endif