example-ublox-csim-cellular

Dependencies:   ublox-at-cellular-interface ublox-cellular-base

Committer:
mudassar0121
Date:
Fri Nov 08 12:01:17 2019 +0500
Revision:
0:daa596318097
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mudassar0121 0:daa596318097 1 /* mbed Microcontroller Library
mudassar0121 0:daa596318097 2 * Copyright (c) 2017 u-blox
mudassar0121 0:daa596318097 3 *
mudassar0121 0:daa596318097 4 * Licensed under the Apache License, Version 2.0 (the "License");
mudassar0121 0:daa596318097 5 * you may not use this file except in compliance with the License.
mudassar0121 0:daa596318097 6 * You may obtain a copy of the License at
mudassar0121 0:daa596318097 7 *
mudassar0121 0:daa596318097 8 * http://www.apache.org/licenses/LICENSE-2.0
mudassar0121 0:daa596318097 9 *
mudassar0121 0:daa596318097 10 * Unless required by applicable law or agreed to in writing, software
mudassar0121 0:daa596318097 11 * distributed under the License is distributed on an "AS IS" BASIS,
mudassar0121 0:daa596318097 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mudassar0121 0:daa596318097 13 * See the License for the specific language governing permissions and
mudassar0121 0:daa596318097 14 * limitations under the License.
mudassar0121 0:daa596318097 15 */
mudassar0121 0:daa596318097 16 #include "mbed.h"
mudassar0121 0:daa596318097 17 #include "UbloxATCellularInterface.h"
mudassar0121 0:daa596318097 18
mudassar0121 0:daa596318097 19
mudassar0121 0:daa596318097 20 // INTERFACE_CLASS *interface = new INTERFACE_CLASS();
mudassar0121 0:daa596318097 21 // If you need to debug the cellular interface, comment out the
mudassar0121 0:daa596318097 22 // instantiation above and uncomment the one below.
mudassar0121 0:daa596318097 23 // For the N2xx interface, change xxx to MBED_CONF_UBLOX_CELL_BAUD_RATE,
mudassar0121 0:daa596318097 24 // while for the non-N2xx interface change it to MBED_CONF_UBLOX_CELL_N2XX_BAUD_RATE
mudassar0121 0:daa596318097 25 UbloxATCellularInterface *interface = new UbloxATCellularInterface(MDMTXD, MDMRXD, 115200, false);
mudassar0121 0:daa596318097 26
mudassar0121 0:daa596318097 27 // LEDs
mudassar0121 0:daa596318097 28 DigitalOut ledRed(LED1, 1);
mudassar0121 0:daa596318097 29 DigitalOut ledGreen(LED2, 1);
mudassar0121 0:daa596318097 30 DigitalOut ledBlue(LED3, 1);
mudassar0121 0:daa596318097 31
mudassar0121 0:daa596318097 32 void swap(char* a, char* b)
mudassar0121 0:daa596318097 33 {
mudassar0121 0:daa596318097 34 char c;
mudassar0121 0:daa596318097 35
mudassar0121 0:daa596318097 36 c = *a;
mudassar0121 0:daa596318097 37 *a = *b;
mudassar0121 0:daa596318097 38 *b = c;
mudassar0121 0:daa596318097 39 }
mudassar0121 0:daa596318097 40
mudassar0121 0:daa596318097 41 void csim_read_imsi(char* imsi)
mudassar0121 0:daa596318097 42 {
mudassar0121 0:daa596318097 43 char response[20], SW1[3], SW2[3];
mudassar0121 0:daa596318097 44
mudassar0121 0:daa596318097 45 if (interface->csim_select_file(14, "00A40000023F00")) {
mudassar0121 0:daa596318097 46 if (interface->csim_select_file(14, "00A40000027F20")) {
mudassar0121 0:daa596318097 47 if (interface->csim_select_file(14, "00A40000026F07")) {
mudassar0121 0:daa596318097 48 int len = interface->csim_read_file(10, "00B0000009", response, SW1, SW2);
mudassar0121 0:daa596318097 49 if (strcmp(SW1 , "90") == 0 && strcmp(SW2 , "00") == 0) {
mudassar0121 0:daa596318097 50 for (int a = 2; a < len - 4; a = a + 2) {
mudassar0121 0:daa596318097 51 swap(&response[a], &response[a+1]);
mudassar0121 0:daa596318097 52 }
mudassar0121 0:daa596318097 53 memcpy(imsi, response+3, 15);
mudassar0121 0:daa596318097 54 imsi[15] = '\0';
mudassar0121 0:daa596318097 55 }
mudassar0121 0:daa596318097 56 }
mudassar0121 0:daa596318097 57 }
mudassar0121 0:daa596318097 58 }
mudassar0121 0:daa596318097 59 }
mudassar0121 0:daa596318097 60
mudassar0121 0:daa596318097 61 void csim_read_iccid(char* iccid)
mudassar0121 0:daa596318097 62 {
mudassar0121 0:daa596318097 63 char response[25], SW1[3], SW2[3];
mudassar0121 0:daa596318097 64
mudassar0121 0:daa596318097 65 if (interface->csim_select_file(14, "00A40000023F00")) {
mudassar0121 0:daa596318097 66 if (interface->csim_select_file(14, "00A40000022FE2")) {
mudassar0121 0:daa596318097 67 int len = interface->csim_read_file(10, "00B0000010", response, SW1, SW2);
mudassar0121 0:daa596318097 68 if (strcmp(SW1 , "90") == 0 && strcmp(SW2 , "00") == 0) {
mudassar0121 0:daa596318097 69 for (int a = 0; a < len - 4; a = a + 2) {
mudassar0121 0:daa596318097 70 swap(&response[a], &response[a+1]);
mudassar0121 0:daa596318097 71 }
mudassar0121 0:daa596318097 72 memcpy(iccid, response, 19);
mudassar0121 0:daa596318097 73 iccid[20] = '\0';
mudassar0121 0:daa596318097 74 }
mudassar0121 0:daa596318097 75 }
mudassar0121 0:daa596318097 76 }
mudassar0121 0:daa596318097 77 }
mudassar0121 0:daa596318097 78
mudassar0121 0:daa596318097 79 int main()
mudassar0121 0:daa596318097 80 {
mudassar0121 0:daa596318097 81 printf("\r\nu-blox C030 U201 and R412M reading the modem IMSI and ICCID using CSIM\n\r\n\r");
mudassar0121 0:daa596318097 82
mudassar0121 0:daa596318097 83 char imsi[20], iccid[20];
mudassar0121 0:daa596318097 84
mudassar0121 0:daa596318097 85 interface->init();
mudassar0121 0:daa596318097 86
mudassar0121 0:daa596318097 87 csim_read_imsi(imsi);
mudassar0121 0:daa596318097 88 printf("IMSI = %s \r\n\r\n", imsi);
mudassar0121 0:daa596318097 89
mudassar0121 0:daa596318097 90 csim_read_iccid(iccid);
mudassar0121 0:daa596318097 91 printf("ICCID = %s \r\n", iccid);
mudassar0121 0:daa596318097 92
mudassar0121 0:daa596318097 93
mudassar0121 0:daa596318097 94 // Set the LED states
mudassar0121 0:daa596318097 95 ledRed = 0;
mudassar0121 0:daa596318097 96 ledGreen = 1;
mudassar0121 0:daa596318097 97 ledBlue = 1;
mudassar0121 0:daa596318097 98
mudassar0121 0:daa596318097 99 // Main loop
mudassar0121 0:daa596318097 100 while(1) {
mudassar0121 0:daa596318097 101 wait(1);
mudassar0121 0:daa596318097 102 // Shift the LED states
mudassar0121 0:daa596318097 103 int carry = ledBlue;
mudassar0121 0:daa596318097 104 ledBlue = ledRed;
mudassar0121 0:daa596318097 105 ledRed = ledGreen;
mudassar0121 0:daa596318097 106 ledGreen = carry;
mudassar0121 0:daa596318097 107 }
mudassar0121 0:daa596318097 108 }
mudassar0121 0:daa596318097 109 // End Of File