An example Program for the SimpleSerialProtocol Library, This program will receive a packet, then echo it back to the client

Dependencies:   mbed SimpleSerialProtocol MODSERIAL

A simple example program that receives a packet over serial and echos it back.

I include this java program to show an example client application, all this program does is send packets as fast as it can without filling up its output buffer, the mbed will echo these packets back.

This is a good benchmark of the serial connection, and should show about 11KB/s at 115200baud

/media/uploads/p3p/serialecho.zip

example command: java -jar SerialEcho.jar com3 115200

Committer:
p3p
Date:
Fri Jan 27 14:30:34 2012 +0000
Revision:
3:8ac7e37d0e0e
Parent:
2:8799090c0fe4
Child:
9:81ea54f202e9
Updated to reflect changes in the SimpleSerialProtocol API

Who changed what in which revision?

UserRevisionLine numberNew contents of line
p3p 2:8799090c0fe4 1 #ifndef _TEST_PROTOCOL_H
p3p 2:8799090c0fe4 2 #define _TEST_PROTOCOL_H
p3p 2:8799090c0fe4 3
p3p 2:8799090c0fe4 4 #include <mbed.h>
p3p 2:8799090c0fe4 5 #include <SimpleSerialProtocol/Protocol.h>
p3p 2:8799090c0fe4 6
p3p 2:8799090c0fe4 7 //class will receive a packet and echo it back out
p3p 2:8799090c0fe4 8 class TestProtocol : public SimpleSerialProtocol::Protocol {
p3p 2:8799090c0fe4 9 public:
p3p 2:8799090c0fe4 10 TestProtocol() : Protocol(p9, p10, NC) { //LED1 to 4 for a status led, NC to disable
p3p 2:8799090c0fe4 11 _dma_port = 0; //set the dma port, must be unique per class 0 - 9
p3p 3:8ac7e37d0e0e 12 receiveCallback(1, this, &TestProtocol::onEchoPacket);
p3p 2:8799090c0fe4 13 }
p3p 2:8799090c0fe4 14 virtual ~TestProtocol() {};
p3p 3:8ac7e37d0e0e 15 void onEchoPacket(SimpleSerialProtocol::Packet* packet);
p3p 2:8799090c0fe4 16 void reply();
p3p 2:8799090c0fe4 17
p3p 2:8799090c0fe4 18 class EchoPacket : public SimpleSerialProtocol::Packet {
p3p 2:8799090c0fe4 19 public:
p3p 2:8799090c0fe4 20 EchoPacket() {}
p3p 2:8799090c0fe4 21 virtual ~EchoPacket() {}
p3p 2:8799090c0fe4 22
p3p 2:8799090c0fe4 23 #pragma pack(push, 1) //must pack the structure to byte boundary for raw recast to work reliably
p3p 2:8799090c0fe4 24 struct Interface {
p3p 2:8799090c0fe4 25 Interface() {
p3p 2:8799090c0fe4 26 type = 1; // initialise the type
p3p 2:8799090c0fe4 27 }
p3p 2:8799090c0fe4 28 uint8_t type;
p3p 2:8799090c0fe4 29 uint8_t data;
p3p 2:8799090c0fe4 30 uint16_t datashort;
p3p 2:8799090c0fe4 31 uint32_t dataint;
p3p 2:8799090c0fe4 32 float datafloat;
p3p 2:8799090c0fe4 33 } interface;
p3p 2:8799090c0fe4 34 #pragma pack(pop)
p3p 2:8799090c0fe4 35
p3p 2:8799090c0fe4 36 };
p3p 2:8799090c0fe4 37
p3p 2:8799090c0fe4 38 uint8_t temp;
p3p 2:8799090c0fe4 39 short temp1;
p3p 2:8799090c0fe4 40 int temp2;
p3p 2:8799090c0fe4 41 float temp3;
p3p 2:8799090c0fe4 42 };
p3p 2:8799090c0fe4 43
p3p 2:8799090c0fe4 44 #endif