Naresh Krish
/
itracker-mbed-os-example-gsm
Sample app on how to interface with the BC95 GSM NB IoT module on the RAK Wireless itracker
main.cpp@0:6ca6723bc32e, 2018-02-13 (annotated)
- Committer:
- knaresh89
- Date:
- Tue Feb 13 08:26:52 2018 +0000
- Revision:
- 0:6ca6723bc32e
- Child:
- 1:3ced3cedee8f
Sampel app for the GSM module on the RAK Wireless itracker; - basic support for serial interfacing; - added GSM module on/off functionality
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
knaresh89 | 0:6ca6723bc32e | 1 | #include "mbed.h" |
knaresh89 | 0:6ca6723bc32e | 2 | #include "SEGGER_RTT.h" |
knaresh89 | 0:6ca6723bc32e | 3 | |
knaresh89 | 0:6ca6723bc32e | 4 | DigitalOut gsm_on(p6); |
knaresh89 | 0:6ca6723bc32e | 5 | DigitalOut gsm_pwrkey(p15); |
knaresh89 | 0:6ca6723bc32e | 6 | |
knaresh89 | 0:6ca6723bc32e | 7 | void gsm_pwr_on(); |
knaresh89 | 0:6ca6723bc32e | 8 | void gsm_boot(); |
knaresh89 | 0:6ca6723bc32e | 9 | void check_gsm(); |
knaresh89 | 0:6ca6723bc32e | 10 | // main() runs in its own thread in the OS |
knaresh89 | 0:6ca6723bc32e | 11 | |
knaresh89 | 0:6ca6723bc32e | 12 | Serial gsm(p20, p12); // tx, rx |
knaresh89 | 0:6ca6723bc32e | 13 | |
knaresh89 | 0:6ca6723bc32e | 14 | void callback_ex() |
knaresh89 | 0:6ca6723bc32e | 15 | { |
knaresh89 | 0:6ca6723bc32e | 16 | // Note: you need to actually read from the serial to clear the RX interrupt |
knaresh89 | 0:6ca6723bc32e | 17 | while(10) { |
knaresh89 | 0:6ca6723bc32e | 18 | SEGGER_RTT_printf(0, "content from serial :: %c \n", gsm.getc()); |
knaresh89 | 0:6ca6723bc32e | 19 | } |
knaresh89 | 0:6ca6723bc32e | 20 | } |
knaresh89 | 0:6ca6723bc32e | 21 | |
knaresh89 | 0:6ca6723bc32e | 22 | int main() |
knaresh89 | 0:6ca6723bc32e | 23 | { |
knaresh89 | 0:6ca6723bc32e | 24 | gsm.baud(9600); |
knaresh89 | 0:6ca6723bc32e | 25 | gsm.attach(&callback_ex); |
knaresh89 | 0:6ca6723bc32e | 26 | |
knaresh89 | 0:6ca6723bc32e | 27 | SEGGER_RTT_printf(0, "POWERING GSM Module \n"); |
knaresh89 | 0:6ca6723bc32e | 28 | gsm_pwr_on(); |
knaresh89 | 0:6ca6723bc32e | 29 | SEGGER_RTT_printf(0, "INITIATING GSM MODULE bootup \n"); |
knaresh89 | 0:6ca6723bc32e | 30 | gsm_boot(); |
knaresh89 | 0:6ca6723bc32e | 31 | SEGGER_RTT_printf(0, "GSM power up sequence complete...check LED1 \n"); |
knaresh89 | 0:6ca6723bc32e | 32 | wait(30); |
knaresh89 | 0:6ca6723bc32e | 33 | for(int i=0; i<5; i++) check_gsm(); |
knaresh89 | 0:6ca6723bc32e | 34 | |
knaresh89 | 0:6ca6723bc32e | 35 | } |
knaresh89 | 0:6ca6723bc32e | 36 | |
knaresh89 | 0:6ca6723bc32e | 37 | void gsm_pwr_on() |
knaresh89 | 0:6ca6723bc32e | 38 | { |
knaresh89 | 0:6ca6723bc32e | 39 | gsm_on = 0; |
knaresh89 | 0:6ca6723bc32e | 40 | wait_ms(200); |
knaresh89 | 0:6ca6723bc32e | 41 | gsm_on = 1; |
knaresh89 | 0:6ca6723bc32e | 42 | wait_ms(200); |
knaresh89 | 0:6ca6723bc32e | 43 | } |
knaresh89 | 0:6ca6723bc32e | 44 | |
knaresh89 | 0:6ca6723bc32e | 45 | void gsm_boot() |
knaresh89 | 0:6ca6723bc32e | 46 | { |
knaresh89 | 0:6ca6723bc32e | 47 | gsm_pwrkey = 0; |
knaresh89 | 0:6ca6723bc32e | 48 | wait(2.0); |
knaresh89 | 0:6ca6723bc32e | 49 | gsm_pwrkey = 1; |
knaresh89 | 0:6ca6723bc32e | 50 | wait(1.0); |
knaresh89 | 0:6ca6723bc32e | 51 | } |
knaresh89 | 0:6ca6723bc32e | 52 | |
knaresh89 | 0:6ca6723bc32e | 53 | void check_gsm() |
knaresh89 | 0:6ca6723bc32e | 54 | { |
knaresh89 | 0:6ca6723bc32e | 55 | SEGGER_RTT_printf(0, "send ATI command to check GSM module \n"); |
knaresh89 | 0:6ca6723bc32e | 56 | gsm.printf("ATI\r\n"); |
knaresh89 | 0:6ca6723bc32e | 57 | wait(1); |
knaresh89 | 0:6ca6723bc32e | 58 | } |