Test program for Infrared SoftSerial.

Dependencies:   Bf_SoftSerial_IR

Committer:
kenjiArai
Date:
Fri May 15 04:15:57 2020 +0000
Revision:
0:4350de08a6de
Test program for Infrared SoftSerial using Infrared LED & IR Detector.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:4350de08a6de 1 /*
kenjiArai 0:4350de08a6de 2 * Mbed Application program
kenjiArai 0:4350de08a6de 3 * IR TX & RX test program
kenjiArai 0:4350de08a6de 4 *
kenjiArai 0:4350de08a6de 5 * Copyright (c) 2020 Kenji Arai / JH1PJL
kenjiArai 0:4350de08a6de 6 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 0:4350de08a6de 7 * https://os.mbed.com/users/kenjiArai/
kenjiArai 0:4350de08a6de 8 * Created: May 15th, 2020
kenjiArai 0:4350de08a6de 9 * Revised: May 15th, 2020
kenjiArai 0:4350de08a6de 10 */
kenjiArai 0:4350de08a6de 11
kenjiArai 0:4350de08a6de 12 // Include --------------------------------------------------------------------
kenjiArai 0:4350de08a6de 13 #include "mbed.h"
kenjiArai 0:4350de08a6de 14 #include "Bf_SoftSerial_IR.h"
kenjiArai 0:4350de08a6de 15
kenjiArai 0:4350de08a6de 16 // Object ---------------------------------------------------------------------
kenjiArai 0:4350de08a6de 17 DigitalOut myled(LED1);
kenjiArai 0:4350de08a6de 18 DigitalOut test_point(A5);
kenjiArai 0:4350de08a6de 19 RawSerial pc(USBTX, USBRX);
kenjiArai 0:4350de08a6de 20 Bf_SoftSerial_IR ir_trx(PB_2, PA_14);
kenjiArai 0:4350de08a6de 21
kenjiArai 0:4350de08a6de 22 // RAM ------------------------------------------------------------------------
kenjiArai 0:4350de08a6de 23 CircularBuffer<char, 1024> pc_rxbuf; // PC receiving Buffer
kenjiArai 0:4350de08a6de 24
kenjiArai 0:4350de08a6de 25 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:4350de08a6de 26
kenjiArai 0:4350de08a6de 27 // Function prototypes --------------------------------------------------------
kenjiArai 0:4350de08a6de 28 static void pc_rx_handler(void);
kenjiArai 0:4350de08a6de 29
kenjiArai 0:4350de08a6de 30 //------------------------------------------------------------------------------
kenjiArai 0:4350de08a6de 31 // Control Program
kenjiArai 0:4350de08a6de 32 //------------------------------------------------------------------------------
kenjiArai 0:4350de08a6de 33 int main()
kenjiArai 0:4350de08a6de 34 {
kenjiArai 0:4350de08a6de 35 char c;
kenjiArai 0:4350de08a6de 36
kenjiArai 0:4350de08a6de 37 pc.attach(&pc_rx_handler, Serial::RxIrq);
kenjiArai 0:4350de08a6de 38 pc.printf("\r\nStart UART test program\r\n");
kenjiArai 0:4350de08a6de 39 while(true){
kenjiArai 0:4350de08a6de 40 //pc.printf("line:%d\r\n", __LINE__);
kenjiArai 0:4350de08a6de 41 if (!pc_rxbuf.empty()){
kenjiArai 0:4350de08a6de 42 pc_rxbuf.pop(c);
kenjiArai 0:4350de08a6de 43 ir_trx.putc(c);
kenjiArai 0:4350de08a6de 44 }
kenjiArai 0:4350de08a6de 45 if (ir_trx.readable()){
kenjiArai 0:4350de08a6de 46 c = ir_trx.getc();
kenjiArai 0:4350de08a6de 47 if ((c == '\r') || (c == '\n')){
kenjiArai 0:4350de08a6de 48 pc.putc('\r');
kenjiArai 0:4350de08a6de 49 pc.putc('\n');
kenjiArai 0:4350de08a6de 50 } else if (c == 0xff){
kenjiArai 0:4350de08a6de 51 ; // no action -> Noise!!
kenjiArai 0:4350de08a6de 52 } else {
kenjiArai 0:4350de08a6de 53 pc.putc(c);
kenjiArai 0:4350de08a6de 54 }
kenjiArai 0:4350de08a6de 55 }
kenjiArai 0:4350de08a6de 56 }
kenjiArai 0:4350de08a6de 57 }
kenjiArai 0:4350de08a6de 58
kenjiArai 0:4350de08a6de 59 static void pc_rx_handler(void)
kenjiArai 0:4350de08a6de 60 {
kenjiArai 0:4350de08a6de 61 while(pc.readable()) {
kenjiArai 0:4350de08a6de 62 pc_rxbuf.push(pc.getc());
kenjiArai 0:4350de08a6de 63 }
kenjiArai 0:4350de08a6de 64 }