Daiki Kato / Mbed OS GR-LYCHEE_ESP32_Serial_Bridge
Committer:
dkato
Date:
Wed Jan 10 01:57:43 2018 +0000
Revision:
0:22cb397754b4
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:22cb397754b4 1
dkato 0:22cb397754b4 2 #include "mbed.h"
dkato 0:22cb397754b4 3 #include "USBSerial.h"
dkato 0:22cb397754b4 4
dkato 0:22cb397754b4 5 USBSerial pc(0x1f00, 0x2012, 0x0001, false, 20480); // connect_blocking = false, buf_size = 20480
dkato 0:22cb397754b4 6 RawSerial wifi_serial(P7_1, P0_1);
dkato 0:22cb397754b4 7
dkato 0:22cb397754b4 8 InterruptIn button0(USER_BUTTON0);
dkato 0:22cb397754b4 9 InterruptIn button1(USER_BUTTON1);
dkato 0:22cb397754b4 10
dkato 0:22cb397754b4 11 DigitalOut wifi_en(P5_3);
dkato 0:22cb397754b4 12 DigitalOut wifi_io0(P3_14);
dkato 0:22cb397754b4 13
dkato 0:22cb397754b4 14 static uint8_t usb_send_buff[64];
dkato 0:22cb397754b4 15
dkato 0:22cb397754b4 16 static void settings_change(int baud, int bits, int parity, int stop) {
dkato 0:22cb397754b4 17 wifi_serial.baud(baud);
dkato 0:22cb397754b4 18 wifi_serial.format(bits, (SerialBase::Parity)parity, (stop == 0) ? 1 : stop);
dkato 0:22cb397754b4 19 }
dkato 0:22cb397754b4 20
dkato 0:22cb397754b4 21 static void button0_fall(void) {
dkato 0:22cb397754b4 22 wifi_en = 0;
dkato 0:22cb397754b4 23 }
dkato 0:22cb397754b4 24
dkato 0:22cb397754b4 25 static void button0_rise(void) {
dkato 0:22cb397754b4 26 wifi_en = 1;
dkato 0:22cb397754b4 27 }
dkato 0:22cb397754b4 28
dkato 0:22cb397754b4 29 static void button1_fall(void) {
dkato 0:22cb397754b4 30 wifi_io0 = 0;
dkato 0:22cb397754b4 31 }
dkato 0:22cb397754b4 32
dkato 0:22cb397754b4 33 static void button1_rise(void) {
dkato 0:22cb397754b4 34 wifi_io0 = 1;
dkato 0:22cb397754b4 35 }
dkato 0:22cb397754b4 36
dkato 0:22cb397754b4 37 int main() {
dkato 0:22cb397754b4 38 pc.attach(&settings_change);
dkato 0:22cb397754b4 39
dkato 0:22cb397754b4 40 // check ESP_IO0
dkato 0:22cb397754b4 41 if (button1 == 0) {
dkato 0:22cb397754b4 42 wifi_io0 = 0;
dkato 0:22cb397754b4 43 } else {
dkato 0:22cb397754b4 44 wifi_io0 = 1;
dkato 0:22cb397754b4 45 }
dkato 0:22cb397754b4 46
dkato 0:22cb397754b4 47 // button setting
dkato 0:22cb397754b4 48 button0.fall(&button0_fall);
dkato 0:22cb397754b4 49 button0.rise(&button0_rise);
dkato 0:22cb397754b4 50 button1.fall(&button1_fall);
dkato 0:22cb397754b4 51 button1.rise(&button1_rise);
dkato 0:22cb397754b4 52
dkato 0:22cb397754b4 53 // reset
dkato 0:22cb397754b4 54 wifi_en = 0;
dkato 0:22cb397754b4 55 Thread::wait(100);
dkato 0:22cb397754b4 56 wifi_en = 1;
dkato 0:22cb397754b4 57
dkato 0:22cb397754b4 58 while (1) {
dkato 0:22cb397754b4 59 if (wifi_serial.readable()) {
dkato 0:22cb397754b4 60 int idx = 0;
dkato 0:22cb397754b4 61 usb_send_buff[idx++] = wifi_serial.getc();
dkato 0:22cb397754b4 62 while (wifi_serial.readable() && (idx < 64)) {
dkato 0:22cb397754b4 63 usb_send_buff[idx++] = wifi_serial.getc();
dkato 0:22cb397754b4 64 }
dkato 0:22cb397754b4 65 pc.writeBlock(usb_send_buff, idx);
dkato 0:22cb397754b4 66 }
dkato 0:22cb397754b4 67 if (pc.readable()) {
dkato 0:22cb397754b4 68 wifi_serial.putc(pc._getc());
dkato 0:22cb397754b4 69 }
dkato 0:22cb397754b4 70 }
dkato 0:22cb397754b4 71 }