Skip to content

Commit 1ae4208

Browse files
author
Hasnain Virk
authored
Merge pull request #13 from ARMmbed/add_docs
Adding documentation and making items configurable through json
2 parents 329fc7a + 0435252 commit 1ae4208

File tree

3 files changed

+142
-12
lines changed

3 files changed

+142
-12
lines changed

README.md

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,106 @@
1-
# mbed-os-example-cellular
1+
# Example cellulaur application for mbed OS
22

3+
This is a simple example based upon mbed-os celular APIs that demonstrates a simple TCP or UDP echo transaction with a public echo server.
4+
5+
## Getting started
6+
7+
This particular Cellular application uses a Cellular network and network-socket APIs that are provided as a part of [mbed-os](github.com/armmbed/mbed-os).
8+
9+
The program uses a [generic celular modem driver](https://github.com/ARMmbed/mbed-os/tree/master/features/netsocket/cellular/generic_modem_driver) utilizing an external IP stack (LWIP) standard 3GPP AT 27.007 AT commands to setup the cellular modem and registers to the network.
10+
After registration, the driver opens up a PPP (point-to-point protocol) pipe using LWIP with the cellular modem and connects to internet. This driver currently supports UART data connection type only between your cellular modem and MCU.
11+
12+
For more information on ARM mbed-os cellular APIs and porting guide, please visit [mbed-os Cellular Docs](https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/communication/cellular/).
13+
14+
### Download the application
15+
16+
```sh
17+
$ mbed import mbed-os-example-cellular
18+
$ cd mbed-os-example-cellular
19+
20+
#OR
21+
22+
$ git clone [email protected]:ARMmbed/mbed-os-example-cellular.git
23+
$ cd mbed-os-example-cellular
24+
```
25+
26+
### Change the network and SIM credentials
27+
28+
See the file `mbed_app.json` in te root directory of your application. This file contains all the user specific configurations needed by your application.
29+
Provide the pin code for your SIM crad as well as any APN settings if needed, e.g.,
30+
31+
```json
32+
"sim-pin-code": {
33+
"help": "SIM PIN code",
34+
"value": "\"1234\""
35+
},
36+
"apn": {
37+
"help": "The APN string to use for this SIM/network, set to 0 if none",
38+
"value": "\"internet\""
39+
},
40+
"username": {
41+
"help": "The user name string to use for this APN, set to zero if none",
42+
"value": 0
43+
},
44+
"password": {
45+
"help": "The password string to use for this APN, set to 0 if none",
46+
"value": 0
47+
}
48+
```
49+
50+
### Selecting socket type (TCP or UDP)
51+
52+
You can choose which socket type the application should use, e.g.,
53+
54+
```json
55+
56+
"sock-type": "TCP",
57+
58+
```
59+
60+
### Turning Modem AT echo trace on
61+
62+
If you like details and wish to know about all the AT interactions between the modem and your driver, turn on the modem AT echo trace.
63+
Set `modem_trace` field value to be true.
64+
65+
```json
66+
"modem_trace": {
67+
"help": "Turns AT command trace on/off from the cellular modem, defaults to off",
68+
"value": true
69+
},
70+
```
71+
72+
### Board support
73+
74+
The [generic celular modem driver](https://github.com/ARMmbed/mbed-os/tree/master/features/netsocket/cellular/generic_modem_driver) used by this application is written using only a standard AT command set and the uses PPP with a full fledge mbed-supported external IP stack. These abilities make the driver essentially generic, i.e., non-vendor specific. However, this particular driver is written for onboard-modem types, i.e., the modem exists on the mbed-enabled target as oppose to plugin-modules (shields). For more details, please check documentation [mbed-os Cellular Docs](https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/communication/cellular/).
75+
76+
Examples of mbed-enabled boards with onboard modem chips can be, [u-blox C027](https://developer.mbed.org/platforms/u-blox-C027/) and [MultiTech MTS Dragonfly](https://developer.mbed.org/platforms/MTS-Dragonfly/).
77+
78+
## Compiling the application
79+
80+
Use mbed-cli commands to generate a binary for the application, e.g., in case of GCC use the following command:
81+
82+
```sh
83+
$ mbed compile -m YOUR_TARGET_WITH_MODEM -t GCC_ARM
84+
```
85+
86+
## Running the application
87+
88+
Drag and drop the application binary from `BUILD/YOUR_TARGET_WITH_MODEM/GCC_ARM/mbed-os-example-cellular.bin` to your mbed-enabled target hardware which appears as a USB device on your host machine.
89+
90+
Attatch a serial console emulator of your choice (e.g., putty, minicom, screen etc) to your USB device, set the baudrate to be 115200 and reset your board by pressing reset button.
91+
92+
You should see an output similar to this:
93+
94+
```
95+
mbed-os-example-cellular, Connecting...
96+
97+
98+
Connection Established.
99+
UDP: Sent 4 Bytes to echo.u-blox.com
100+
Received from echo server 4 Bytes
101+
102+
103+
Success. Exiting
104+
105+
```
3106

main.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,30 @@
77
#define TCP 1
88

99
// SIM pin code goes here
10-
#define PIN_CODE "1234"
10+
#ifndef MBED_CONF_APP_SIM_PIN_CODE
11+
# define MBED_CONF_APP_SIM_PIN_CODE "1234"
12+
#endif
1113

12-
// Network credentials like APN go here, e.g.,
13-
// "apn, username, password"
14-
#define CREDENTIALS "internet"
14+
#ifndef MBED_CONF_APP_APN
15+
# define MBED_CONF_APP_APN "internet"
16+
#endif
17+
#ifndef MBED_CONF_APP_USERNAME
18+
# define MBED_CONF_APP_USERNAME NULL
19+
#endif
20+
#ifndef MBED_CONF_APP_PASSWORD
21+
# define MBED_CONF_APP_PASSWORD NULL
22+
#endif
1523

1624
// Number of retries /
1725
#define RETRY_COUNT 3
1826

1927
// CellularInterface object
2028
OnboardCellularInterface iface;
2129

22-
// NIST ntp hostname
30+
// Echo server hostname
2331
const char *host_name = "echo.u-blox.com";
2432

25-
// NIST ntp port
33+
// Echo server port (same for TCP and UDP)
2634
const int port = 7;
2735

2836
/**
@@ -135,10 +143,10 @@ int main()
135143
{
136144
iface.modem_debug_on(MBED_CONF_APP_MODEM_TRACE);
137145
/* Set Pin code for SIM card */
138-
iface.set_sim_pin(PIN_CODE);
146+
iface.set_sim_pin(MBED_CONF_APP_SIM_PIN_CODE);
139147

140148
/* Set network credentials here, e.g., APN*/
141-
iface.set_credentials(CREDENTIALS);
149+
iface.set_credentials(MBED_CONF_APP_APN, MBED_CONF_APP_USERNAME, MBED_CONF_APP_PASSWORD);
142150

143151
printf("\n\nmbed-os-example-cellular, Connecting...\n");
144152

mbed_app.json

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,26 @@
11
{
2-
"config": {
3-
"sock-type": "UDP",
4-
"modem_trace": false
2+
"config": {
3+
"sock-type": "UDP",
4+
"modem_trace": {
5+
"help": "Turns AT command trace on/off from the cellular modem, defaults to off",
6+
"value": false
7+
},
8+
"sim-pin-code": {
9+
"help": "SIM PIN code",
10+
"value": "\"1234\""
11+
},
12+
"apn": {
13+
"help": "The APN string to use for this SIM/network, set to 0 if none",
14+
"value": "\"internet\""
15+
},
16+
"username": {
17+
"help": "The user name string to use for this APN, set to zero if none",
18+
"value": 0
19+
},
20+
"password": {
21+
"help": "The password string to use for this APN, set to 0 if none",
22+
"value": 0
23+
}
524
},
625
"target_overrides": {
726
"*": {

0 commit comments

Comments
 (0)