blynk & neopixelring & w7500

Fork of WIZwiki-7500_Blynk by IOP

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BlynkDebug.cpp Source File

BlynkDebug.cpp

Go to the documentation of this file.
00001 /**
00002  * @file       BlynkDebug.cpp
00003  * @author     Volodymyr Shymanskyy
00004  * @license    This project is released under the MIT License (MIT)
00005  * @copyright  Copyright (c) 2015 Volodymyr Shymanskyy
00006  * @date       Jan 2015
00007  * @brief      Debug utilities for Arduino
00008  */
00009 #include <Blynk/BlynkDebug.h>
00010 
00011 #if defined(BLYNK_USE_AVR_WDT)
00012 
00013     #include <Arduino.h>
00014     #include <avr/wdt.h>
00015 
00016     size_t BlynkFreeRam()
00017     {
00018         extern int __heap_start, *__brkval;
00019         int v;
00020         return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
00021     }
00022 
00023     void wdt_init(void) __attribute__((naked)) __attribute__((section(".init3")));
00024 
00025     void wdt_init(void)
00026     {
00027         MCUSR = 0;
00028         wdt_disable();
00029 
00030         return;
00031     }
00032 
00033     void BlynkReset()
00034     {
00035         wdt_enable(WDTO_15MS);
00036         delay(50);
00037         void(*resetFunc)(void) = 0;
00038         resetFunc();
00039         for(;;) {} // To make compiler happy
00040     }
00041 
00042 #elif defined(__AVR__)
00043 
00044     #include <Arduino.h>
00045 
00046     size_t BlynkFreeRam()
00047     {
00048         extern int __heap_start, *__brkval;
00049         int v;
00050         return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
00051     }
00052 
00053     void BlynkReset()
00054     {
00055         void(*resetFunc)(void) = 0;
00056         resetFunc();
00057         for(;;) {}
00058     }
00059 
00060 #elif defined(ESP8266)
00061 
00062     #include <Arduino.h>
00063 
00064     size_t BlynkFreeRam()
00065     {
00066         return ESP.getFreeHeap();
00067     }
00068 
00069     void BlynkReset()
00070     {
00071         ESP.restart();
00072         for(;;) {}
00073     }
00074 
00075 #elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
00076 
00077     #include <Arduino.h>
00078 
00079     size_t BlynkFreeRam()
00080     {
00081         return 0;
00082     }
00083 
00084     void BlynkReset()
00085     {
00086         NVIC_SystemReset();
00087         for(;;) {}
00088     }
00089 
00090 #elif defined (PARTICLE) || defined(SPARK)
00091 
00092     #include "application.h"
00093 
00094     size_t BlynkFreeRam()
00095     {
00096         return 0;
00097     }
00098 
00099     void BlynkReset()
00100     {
00101         System.reset();
00102         for(;;) {} // To make compiler happy
00103     }
00104 
00105 #elif defined(__STM32F1__) || defined(__STM32F3__)
00106 
00107     #include <Arduino.h>
00108     #include <libmaple/nvic.h>
00109 
00110     size_t BlynkFreeRam()
00111     {
00112         return 0;
00113     }
00114 
00115     void BlynkReset()
00116     {
00117         nvic_sys_reset();
00118         for(;;) {}
00119     }
00120 
00121 // TODO:
00122 //#elif defined (TEENSYDUINO)
00123 //#elif defined (__STM32F4__)
00124 //#elif defined (ARDUINO_ARCH_ARC32)
00125 //#elif defined (__RFduino__) || defined (__Simblee__)
00126 
00127 #elif defined(MBED_LIBRARY_VERSION)
00128 
00129     #include "mbed.h"
00130 
00131     size_t BlynkFreeRam()
00132     {
00133         return 0;
00134     }
00135 
00136     void BlynkReset()
00137     {
00138         for(;;) {} // To make compiler happy
00139     }
00140 
00141 #else
00142 
00143     #if defined(BLYNK_DEBUG_ALL)
00144         #warning "Need to implement board-specific utilities"
00145     #endif
00146 
00147     size_t BlynkFreeRam()
00148     {
00149         return 0;
00150     }
00151 
00152     void BlynkReset()
00153     {
00154         for(;;) {} // To make compiler happy
00155     }
00156 
00157 #endif
00158 
00159 void BlynkFatal()
00160 {
00161     //delay(10000L);
00162     BlynkReset();
00163 }