Example program demonstrate the use of the User LEDs and the User Button. The example also initializes the I2C3 Bus for the battery charger BQ24295, sets the battery charger and the cellular module driver, powers up the cellular module. However, the UART2 , which is used for communicating with the module, is not configured. Hence, the Serial USB Sniffer could be used for exercising AT commands from a development PC.
Dependencies: ublox-cellular-base ublox-cellular-driver-gen battery-charger-bq24295 gnss
main.cpp
- Committer:
- Mudassar Hussain
- Date:
- 2018-02-23
- Revision:
- 5:8f44dab9cb6b
- Parent:
- 3:b9051f3f2fcd
- Child:
- 6:4d61a0f32573
File content as of revision 5:8f44dab9cb6b:
/* 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 "onboard_modem_api.h" // Set the minimum input voltage limit for the BQ24295 to 3.8 Volt #define MIN_INPUT_VOLTAGE_LIMIT_MV 3880 // User LEDs DigitalOut ledRed(LED1, 1); DigitalOut ledGreen(LED2, 1); DigitalOut ledBlue(LED3, 1); //GNSS 1V8_MAX IO power DigitalOut GNSSOn(GNSSEN, 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){ while (1){ if (userButton.read() == 1 ) { // User Button is pressed delay = 0.1; //Indicate the button is pressed ledYellow = 0; } else { // User button is released delay = 0.5; //Turn off the Yellow LED on Ethernet socket ledYellow = 1; } } } /* ** Out of the Box Demo for C030 variants ** ** Sets the modem then */ int main() { printf("u-blox C030 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 charger.init(&i2c3); charger.setInputVoltageLimit(MIN_INPUT_VOLTAGE_LIMIT_MV); // Disable the battery charger's watchdog, otherwise it resets the battry charger charger.setWatchdog(0); // Initialised the modem onboard_modem_init(); // Power up the modem onboard_modem_power_up(); // Create threadUserButtonCheck thread Thread threadUserButtonCheck(threadBodyUserButtonCheck); //Set GNSS IO On GNSSOn = 1; // Set the LED states ledRed = 0; ledGreen = 1; ledBlue = 1; printf("u-blox C030 Out-of-the-Box Demo: LED loop\n\r"); //Main loop while(1) { wait(delay); //Shift the LED states int carry = ledBlue; ledBlue = ledRed; ledRed = ledGreen; ledGreen = carry; } } // End Of File