Sample app on how to interface with the BC95 GSM NB IoT module on the RAK Wireless itracker

Committer:
knaresh89
Date:
Tue Feb 13 08:27:24 2018 +0000
Revision:
1:3ced3cedee8f
Parent:
0:6ca6723bc32e
code edit for gsm off functionality

Who changed what in which revision?

UserRevisionLine numberNew 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 1:3ced3cedee8f 45 void gsm_pwr_off()
knaresh89 1:3ced3cedee8f 46 {
knaresh89 1:3ced3cedee8f 47 gsm_on = 1;
knaresh89 1:3ced3cedee8f 48 wait_ms(200);
knaresh89 1:3ced3cedee8f 49 gsm_on = 0;
knaresh89 1:3ced3cedee8f 50 wait_ms(200);
knaresh89 1:3ced3cedee8f 51 }
knaresh89 1:3ced3cedee8f 52
knaresh89 0:6ca6723bc32e 53 void gsm_boot()
knaresh89 0:6ca6723bc32e 54 {
knaresh89 0:6ca6723bc32e 55 gsm_pwrkey = 0;
knaresh89 0:6ca6723bc32e 56 wait(2.0);
knaresh89 0:6ca6723bc32e 57 gsm_pwrkey = 1;
knaresh89 0:6ca6723bc32e 58 wait(1.0);
knaresh89 0:6ca6723bc32e 59 }
knaresh89 0:6ca6723bc32e 60
knaresh89 0:6ca6723bc32e 61 void check_gsm()
knaresh89 0:6ca6723bc32e 62 {
knaresh89 0:6ca6723bc32e 63 SEGGER_RTT_printf(0, "send ATI command to check GSM module \n");
knaresh89 0:6ca6723bc32e 64 gsm.printf("ATI\r\n");
knaresh89 0:6ca6723bc32e 65 wait(1);
knaresh89 0:6ca6723bc32e 66 }