This program is just a simple serial port program for communication with mbedWrapper

Dependencies:   AndroidAccessory mbed

demokit.cpp

Committer:
p07gbar
Date:
2011-08-02
Revision:
0:4be11cf8cf0c

File content as of revision 0:4be11cf8cf0c:

/*
 * ADKTerm
 * 
 * Written by p07gbar
 * 
 * This program is just a simple serial port program for comunication with mbedWrapper
 */
#include "mbed.h"
#include "AndroidAccessory.h"


#define OUTL 100
#define INBL 100





class AdkTerm :public AndroidAccessory {
public:
    AdkTerm():AndroidAccessory(INBL,OUTL,
                                       "ARM",
                                       "mbed",
                                       "mbed Terminal",
                                       "0.1",
                                       "http://www.mbed.org",
                                       "0000000012345678"),pc(USBTX,USBRX) {};
    virtual int callbackRead(u8 *buff, int len);
    virtual void setupDevice();
    virtual void resetDevice();
    virtual int callbackWrite();

private:
    void serialIRQ();
    char buffer[OUTL];
    int bcount;
    Serial pc;
};



void AdkTerm::setupDevice() {
    pc.printf("Welcome to adkTerm\n\n\n\n\n\n\r");
    pc.attach(this, &AdkTerm::serialIRQ, Serial::RxIrq);
    for (int i = 0; i<OUTL; i++) {
        buffer[i] = 0;
    }
    bcount = 0;

}


void AdkTerm::resetDevice() {
    pc.printf("adkTerm reset\n\r");
    for (int i = 0; i<OUTL; i++) {
        buffer[i] = 0;
    }
    bcount = 0;
}

int AdkTerm::callbackRead(u8 *buf, int len) {
    pc.printf("%i  %s\n\r\n\n\n",len,buf);
    for (int i = 0; i<INBL;i++) {
        buf[i] = 0;
    }
    return 0;
}

int AdkTerm::callbackWrite() {
    pc.printf("DoneWrite\n\r");
    
    return 0;
}


void AdkTerm::serialIRQ() {
    buffer[bcount] = pc.getc();
    pc.putc(buffer[bcount]);

    if (buffer[bcount] == '\n' || buffer[bcount] == '\r') {
        u8* wbuf = _writebuff;
        for (int i = 0; i<OUTL; i++) {
            wbuf[i] = buffer[i];
            buffer[i] = 0;
        }
        pc.printf("Sending: %s\n\r",wbuf);
        
        this->write(wbuf,bcount);
        bcount = 0;
    } else {
        if (buffer[bcount] != 0x08 && buffer[bcount] != 0x7F ) {
            bcount++;
            if (bcount == OUTL) {
                bcount = 0;
            }
        } else {
        bcount--;
        
        }
    }
}



AdkTerm AdkTerm;



int main() {
    printf("Android Development Kit: start\r\n");

    AdkTerm.setupDevice();
    USBInit();
    while (1) {
        USBLoop();
    }

}