USB-UART bridge for XBee with XCTU.

Dependencies:   USBDevice mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "BaseUsbUartBridge.h"
00002 DigitalOut led_xbee(LED1),led_usb(LED2),led_reset(LED3),led_heartbeat(LED4);
00003 RawSerial pc(MBED_UARTUSB);
00004 #if defined(TARGET_LPC4088)
00005 #define XBEE_UART P4_22,P4_23
00006 DigitalOut xbee_rts(P4_21);
00007 DigitalOut xbee_dtr(P4_19);
00008 DigitalOut xbee_reset(P4_17);
00009 DigitalIn reset_sw(P2_10);
00010 #define SW_MODE PullUp
00011 #elif defined(TARGET_LPC1768)
00012 #define XBEE_UART p9,p10
00013 DigitalOut xbee_rts(p21);
00014 DigitalOut xbee_dtr(p22);
00015 DigitalOut xbee_reset(p30);
00016 DigitalIn reset_sw(p14);
00017 #define SW_MODE PullDown
00018 #else
00019 #error "target error"
00020 #endif
00021 
00022 class USB_XBee : public BaseUsbUartBridge {
00023 public:
00024     USB_XBee(PinName tx, PinName rx) : BaseUsbUartBridge(tx, rx) {}
00025     virtual void controlLineStateChanged(int rts, int dtr){
00026         xbee_rts = rts ^ 1;
00027         xbee_dtr = dtr ^ 1;
00028     }
00029     virtual void monitor(src_t src, uint8_t c) {
00030         switch(src) {
00031             case _UART: led_xbee = !led_xbee; break;
00032             case _USB: led_usb = !led_usb; break;
00033         }
00034         //pc.putc(c);// debug
00035     }
00036 };
00037 
00038 USB_XBee usb_xbee(XBEE_UART);
00039 
00040 int main() {
00041     pc.baud(115200);
00042 
00043     xbee_rts = 0;
00044     xbee_dtr = 0;
00045     xbee_reset = 1;
00046     reset_sw.mode(SW_MODE);
00047     int prev_sw = 1;
00048 
00049     Timer heartbeat_t;
00050     heartbeat_t.reset();
00051     heartbeat_t.start();
00052     while(1) {
00053         if (reset_sw ^ prev_sw) {
00054             prev_sw = reset_sw;
00055             xbee_reset = prev_sw ^ (SW_MODE == PullDown ? 1 : 0);
00056             led_reset = xbee_reset;
00057         }
00058         if (heartbeat_t.read_ms() > 500) {
00059             heartbeat_t.reset();
00060             led_heartbeat = !led_heartbeat;
00061         }
00062         usb_xbee.poll();
00063     }
00064 }