Cellular module AT Serial interface passthrough to Debug COM port. This program can be used on the C030 boards excluding the C030 N2xx version.

Revision:
0:fd90bb768e20
Child:
1:f39e92fcdf5e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 10 14:53:51 2018 +0000
@@ -0,0 +1,164 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2017 u-blox
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "mbed.h"
+#include "gnss.h"
+#include "battery_charger_bq24295.h"
+#include "UbloxCellularDriverGen.h"
+#include "onboard_modem_api.h"
+
+// Set the minimum input voltage limit for the BQ24295 to 3.8 Volt
+#define MIN_INPUT_VOLTAGE_LIMIT_MV  3880
+
+/* The example program for the u-blox C030 boards. It sets up
+ * - the GNSS module  for automatic fix
+ * - the I2C3 Bus to access BQ24295 Battery Charger
+ * - the BQ24295 Battery Charger for 3.88 Volt input supply threshold
+ * 
+ */
+
+// User LEDs
+DigitalOut ledRed(LED1, 1);
+DigitalOut ledGreen(LED2, 1);
+DigitalOut ledBlue(LED3, 1);
+
+// Ethernet socket LED 
+DigitalOut ledYellow(LED4,1);
+
+// User Button
+#ifdef TARGET_UBLOX_C027
+    // No user button on C027
+    InterruptIn userButton(NC);
+#else
+    InterruptIn userButton(SW0);
+#endif
+
+// GNSS
+GnssSerial gnss;
+
+// i2c3 Bus
+I2C i2c3(I2C_SDA_B, I2C_SCL_B);
+    
+// Battery Charger BQ24295
+BatteryChargerBq24295 charger;
+
+// Delay between LED changes in second
+volatile float delay = 0.5;
+
+// To check if the user pressed the User Button or not
+void threadBodyUserButtonCheck(void const *args){
+    float delayToggle = delay;
+    while (1){
+        if (userButton.read() == 1 ) {
+        // User Button is pressed 
+            delay = 0.1;
+            // Indicate with the Yellow LED on Ethernet socket 
+            ledYellow = 0;
+        }
+        else { 
+        // User button is released
+            delay = 0.5;
+            // Turn off the Yellow LED on Ethernet socket
+            ledYellow = 1;
+        }
+    }
+}
+
+RawSerial  pc(PD_5, PD_6);
+RawSerial  dev(PA_9, PA_10);
+ 
+void dev_recv()
+{
+
+    while(dev.readable()) {
+        pc.putc(dev.getc());
+    }
+}
+ 
+void pc_recv()
+{
+
+    while(pc.readable()) {
+        dev.putc(pc.getc());
+    }
+}
+/*
+** Out of the Box Demo for C030 variants
+** 
+*/
+
+int main()
+{
+    printf("u-blox C030-R410M Bring-up baseline using Out-of-the-Box Demo\n\r");
+
+    // GNSS initialisation
+    if(gnss.init()) {
+        printf("GNSS initialised.\n\r");
+    }
+    else {
+        printf("GNSS initialisation failure.\n\r");
+    }
+    
+    // The battery charger initialisation
+    if(charger.init(&i2c3)) {
+        printf("Battery charger initialised.\n\r");
+               
+        charger.setInputVoltageLimit(MIN_INPUT_VOLTAGE_LIMIT_MV); 
+        // Disable the battery charger's watchdog, otherwise it resets the battry charger
+        charger.setWatchdog(0);
+    } 
+    else {
+        printf("Battery charger initialisation failure.\n\r");    
+    }  
+    printf("\n\r"); 
+     
+    // The modem initialisation
+    onboard_modem_init();
+    
+    // Power up the modem
+    onboard_modem_power_up();
+    
+    // Create threadUserButtonCheck thread
+    Thread threadUserButtonCheck(threadBodyUserButtonCheck);
+
+    // Set the LED states
+    ledRed = 0;
+    ledGreen = 1;
+    ledBlue = 1;
+    
+    pc.baud(115200);
+    dev.baud(115200);
+ 
+    pc.attach(&pc_recv, Serial::RxIrq);
+    dev.attach(&dev_recv, Serial::RxIrq);
+ 
+    while(1) {
+        sleep();
+    }
+    
+    
+    // Main loop
+    while(1) {
+        wait(delay);
+        // Shift the LED states
+        int carry = ledBlue;
+        ledBlue = ledRed;
+        ledRed = ledGreen;
+        ledGreen = carry;
+    }
+}
+
+// End Of File
\ No newline at end of file