For RevB MBED Hardware, with the new boot sequence. This example establishes a transparent link between the mbed USB CDC port and the modem (LISA) on the C027. You can use it to use the standard u-blox tools such as m-center or any terminal program. These tools can then connect to the serial port and talk directly to the modem. Baudrate should be set to 115200 baud and is fixed. m-center can be downloaded from u-blox website following this link: http://www.u-blox.com/en/evaluation-tools-a-software/u-center/m-center.html

Dependencies:   C027-REVB UbloxUSBModem mbed

Committer:
dixter1
Date:
Sat Dec 14 01:16:42 2013 +0000
Revision:
3:ac79848028c3
Parent:
1:15b5edb4a91f
Child:
6:2d7edb824271
Cleanup inappropriate changes to this baseline.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dixter1 0:92ab4f4846f8 1 #include "mbed.h"
dixter1 0:92ab4f4846f8 2 #include "C027.h"
dixter1 0:92ab4f4846f8 3 #include "WANDongle.h"
dixter1 0:92ab4f4846f8 4 #include "USBSerialStream.h"
dixter1 0:92ab4f4846f8 5 #include "UbloxCDMAModemInitializer.h"
dixter1 0:92ab4f4846f8 6 #include "UbloxGSMModemInitializer.h"
dixter1 0:92ab4f4846f8 7
dixter1 0:92ab4f4846f8 8 DigitalOut mdm_activity(LED);
dixter1 0:92ab4f4846f8 9
dixter1 0:92ab4f4846f8 10 int main()
dixter1 0:92ab4f4846f8 11 {
dixter1 0:92ab4f4846f8 12 int led_toggle_count = 5;
dixter1 0:92ab4f4846f8 13
dixter1 0:92ab4f4846f8 14 // the instantiation of the type, calls C027::C027
dixter1 0:92ab4f4846f8 15 C027 c027;
dixter1 0:92ab4f4846f8 16
dixter1 1:15b5edb4a91f 17 c027.mdmPower(true,false);
dixter1 1:15b5edb4a91f 18
dixter1 1:15b5edb4a91f 19 // enable the GPS, and connect it
dixter1 1:15b5edb4a91f 20 // to the m3.
dixter1 1:15b5edb4a91f 21 c027.gpsPower(true, false);
dixter1 0:92ab4f4846f8 22
dixter1 0:92ab4f4846f8 23 #if 0
dixter1 0:92ab4f4846f8 24 while(1) {
dixter1 0:92ab4f4846f8 25 mdm_activity = !mdm_activity;
dixter1 0:92ab4f4846f8 26 wait(0.2);
dixter1 0:92ab4f4846f8 27 }
dixter1 0:92ab4f4846f8 28 #else
dixter1 0:92ab4f4846f8 29 while( led_toggle_count-- > 0 )
dixter1 0:92ab4f4846f8 30 {
dixter1 0:92ab4f4846f8 31 mdm_activity = !mdm_activity;
dixter1 0:92ab4f4846f8 32 wait(0.2);
dixter1 0:92ab4f4846f8 33 }
dixter1 0:92ab4f4846f8 34 #endif
dixter1 0:92ab4f4846f8 35
dixter1 0:92ab4f4846f8 36 // open the mdm serial port
dixter1 0:92ab4f4846f8 37 WANDongle mdmDongle;
dixter1 0:92ab4f4846f8 38 USBSerialStream mdmStream(mdmDongle.getSerial(1/* the CDC usually 0 or 1, LISA-C requires CDC1*/));
dixter1 0:92ab4f4846f8 39 USBHost* host = USBHost::getHostInst();
dixter1 0:92ab4f4846f8 40 mdmDongle.addInitializer(new UbloxCDMAModemInitializer(host));
dixter1 0:92ab4f4846f8 41 mdmDongle.addInitializer(new UbloxGSMModemInitializer(host));
dixter1 0:92ab4f4846f8 42
dixter1 0:92ab4f4846f8 43 // open the PC serial port and (use the same baudrate)
dixter1 0:92ab4f4846f8 44 Serial pc(USBTX, USBRX);
dixter1 0:92ab4f4846f8 45 pc.baud(MDMBAUD);
dixter1 0:92ab4f4846f8 46
dixter1 3:ac79848028c3 47 pc.printf( "M3->USB CDC connection ready\r\n");
dixter1 1:15b5edb4a91f 48
dixter1 0:92ab4f4846f8 49 while (1)
dixter1 0:92ab4f4846f8 50 {
dixter1 0:92ab4f4846f8 51 uint8_t buf[64];
dixter1 0:92ab4f4846f8 52 size_t len;
dixter1 0:92ab4f4846f8 53 int i;
dixter1 0:92ab4f4846f8 54
dixter1 0:92ab4f4846f8 55 if (!mdmDongle.connected())
dixter1 0:92ab4f4846f8 56 {
dixter1 0:92ab4f4846f8 57 mdmDongle.tryConnect();
dixter1 0:92ab4f4846f8 58 }
dixter1 0:92ab4f4846f8 59 else
dixter1 0:92ab4f4846f8 60 {
dixter1 0:92ab4f4846f8 61
dixter1 0:92ab4f4846f8 62 // transfer data from pc to modem
dixter1 0:92ab4f4846f8 63 len = mdmStream.space();
dixter1 0:92ab4f4846f8 64 if (len>0)
dixter1 0:92ab4f4846f8 65 {
dixter1 0:92ab4f4846f8 66 if (len > sizeof(buf))
dixter1 0:92ab4f4846f8 67 len = sizeof(buf);
dixter1 0:92ab4f4846f8 68 for (i = 0; (i < len) && pc.readable(); )
dixter1 0:92ab4f4846f8 69 buf[i++] = pc.getc();
dixter1 0:92ab4f4846f8 70 if (OK == mdmStream.write(buf, i))
dixter1 0:92ab4f4846f8 71 /* do something? */;
dixter1 0:92ab4f4846f8 72 }
dixter1 0:92ab4f4846f8 73 // transfer data from modem to pc
dixter1 0:92ab4f4846f8 74 len = mdmStream.available();
dixter1 0:92ab4f4846f8 75 if ((len>0) && pc.writeable())
dixter1 0:92ab4f4846f8 76 {
dixter1 0:92ab4f4846f8 77 if (len > sizeof(buf))
dixter1 0:92ab4f4846f8 78 len = sizeof(buf);
dixter1 0:92ab4f4846f8 79 if (OK == mdmStream.read(buf, &len, len))
dixter1 0:92ab4f4846f8 80 {
dixter1 0:92ab4f4846f8 81 for (i = 0; (i < len); )
dixter1 0:92ab4f4846f8 82 {
dixter1 0:92ab4f4846f8 83 mdm_activity=!mdm_activity;
dixter1 0:92ab4f4846f8 84 pc.putc(buf[i++]);
dixter1 0:92ab4f4846f8 85 }
dixter1 0:92ab4f4846f8 86
dixter1 0:92ab4f4846f8 87 // default the led to off
dixter1 0:92ab4f4846f8 88 mdm_activity=0;
dixter1 0:92ab4f4846f8 89 }
dixter1 0:92ab4f4846f8 90 }
dixter1 0:92ab4f4846f8 91 }
dixter1 0:92ab4f4846f8 92 }
dixter1 0:92ab4f4846f8 93 }