This is a console for interacting with Vodafone dongles.

Dependencies:   mbed-rtos VodafoneUSBModem mbed

This is a bridge between a serial driven console and a serial driven cellular modem or modem interface. This was written to complement our collaboration with mbed: See https://mbed.org/users/mbed_official/code/VodafoneUSBModem/ for further information.

For example, one can use GNU screen or PuTTY (two popular consoles) to interact with a Vodafone K3770 USB dongle. In the image below I used the UNIX version of PuTTY:

/media/uploads/ashleymills/atcons.png

Support is provided for line-based consoles, which send one line at a time, and for character based consoles.

For character based consoles, the following line-editing features are provided:

  • In-line editing (deletion, left/right arrow keys, insertion)
  • Command history (via up/down arrow keys)

Line buffer length, and command history depth, are compile-time options.

--

How to use:

Compile and save to mbed.

Connect PuTTY or GNU screen to serial port.

If you use GNU screen you probably already know what you are doing.

If you use PuTTY, you need to set the options to specify the serial device and, set the baud rate, and set the "Connection Type" to "Serial":

/media/uploads/ashleymills/putty0.png

You need to set the keyboard to send Control-H for backspace, and use "Linux" function keys and keypad:

/media/uploads/ashleymills/putty1.png

Committer:
ashleymills
Date:
Tue Sep 18 09:42:40 2012 +0000
Revision:
5:6841a01b3a69
Parent:
4:6971bded3ebd
Child:
6:93003e18889c
Added proper ms based timeout.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashleymills 0:6c831cc49d22 1 #pragma once
ashleymills 0:6c831cc49d22 2 #include "mbed.h"
ashleymills 0:6c831cc49d22 3
ashleymills 5:6841a01b3a69 4 #define BUFFER_WAIT_TIMEOUT_MS 2000
ashleymills 0:6c831cc49d22 5
ashleymills 0:6c831cc49d22 6 class Console {
ashleymills 0:6c831cc49d22 7 private:
ashleymills 0:6c831cc49d22 8 int _currentLine;
ashleymills 0:6c831cc49d22 9 int _usedLines;
ashleymills 0:6c831cc49d22 10
ashleymills 5:6841a01b3a69 11 long _bufferWaitTimeout_ms;
ashleymills 5:6841a01b3a69 12 char **_lines; //< Command history
ashleymills 0:6c831cc49d22 13
ashleymills 0:6c831cc49d22 14 int _linePos;
ashleymills 0:6c831cc49d22 15 int _prevLinePos;
ashleymills 1:719c0f047c34 16
ashleymills 0:6c831cc49d22 17 bool waitForInput();
ashleymills 0:6c831cc49d22 18 void loadPreviousBuffer();
ashleymills 0:6c831cc49d22 19 void loadNextBuffer();
ashleymills 4:6971bded3ebd 20
ashleymills 0:6c831cc49d22 21 void printLineBuffer();
ashleymills 0:6c831cc49d22 22 void printHistory();
ashleymills 0:6c831cc49d22 23 void printBuffer(int index);
ashleymills 0:6c831cc49d22 24 void reprintBuffer();
ashleymills 4:6971bded3ebd 25 void storeBuffer();
ashleymills 4:6971bded3ebd 26 void updateCharacterBased();
ashleymills 4:6971bded3ebd 27 void updateLineBased();
ashleymills 4:6971bded3ebd 28
ashleymills 4:6971bded3ebd 29 virtual void processCommand();
ashleymills 4:6971bded3ebd 30
ashleymills 4:6971bded3ebd 31
ashleymills 0:6c831cc49d22 32
ashleymills 0:6c831cc49d22 33 protected:
ashleymills 0:6c831cc49d22 34 char *_lineBuffer;
ashleymills 0:6c831cc49d22 35 int _lineLength;
ashleymills 0:6c831cc49d22 36 int _numLines;
ashleymills 1:719c0f047c34 37 Serial *_terminal;
ashleymills 2:8cc63f7a24cf 38 void clearBuffer();
ashleymills 4:6971bded3ebd 39 bool _characterBased;
ashleymills 0:6c831cc49d22 40
ashleymills 0:6c831cc49d22 41 public:
ashleymills 4:6971bded3ebd 42 Console(Serial *terminal, int lineLength, int numLines, bool characterBased);
ashleymills 0:6c831cc49d22 43 ~Console();
ashleymills 2:8cc63f7a24cf 44 virtual void update();
ashleymills 0:6c831cc49d22 45
ashleymills 0:6c831cc49d22 46 };