blynk & neopixelring & w7500
Fork of WIZwiki-7500_Blynk by
utility/BlynkDebug.cpp@11:991ded8c9703, 2017-01-12 (annotated)
- Committer:
- Volodymyr Shymanskyy
- Date:
- Thu Jan 12 02:17:20 2017 +0200
- Revision:
- 11:991ded8c9703
- Parent:
- 9:7369ec77a3ea
- Child:
- 12:787e0f06e047
Update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vshymanskyy | 0:58b20b438383 | 1 | /** |
vshymanskyy | 0:58b20b438383 | 2 | * @file BlynkDebug.cpp |
vshymanskyy | 0:58b20b438383 | 3 | * @author Volodymyr Shymanskyy |
vshymanskyy | 0:58b20b438383 | 4 | * @license This project is released under the MIT License (MIT) |
vshymanskyy | 0:58b20b438383 | 5 | * @copyright Copyright (c) 2015 Volodymyr Shymanskyy |
vshymanskyy | 0:58b20b438383 | 6 | * @date Jan 2015 |
vshymanskyy | 0:58b20b438383 | 7 | * @brief Debug utilities for Arduino |
vshymanskyy | 0:58b20b438383 | 8 | */ |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 9 | #include <Blynk/BlynkDebug.h> |
vshymanskyy | 0:58b20b438383 | 10 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 11 | #if defined(BLYNK_USE_AVR_WDT) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 12 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 13 | #include <Arduino.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 14 | #include <avr/wdt.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 15 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 16 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 17 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 18 | extern int __heap_start, *__brkval; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 19 | int v; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 20 | return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 21 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 22 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 23 | void wdt_init(void) __attribute__((naked)) __attribute__((section(".init3"))); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 24 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 25 | void wdt_init(void) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 26 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 27 | MCUSR = 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 28 | wdt_disable(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 29 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 30 | return; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 31 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 32 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 33 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 34 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 35 | wdt_enable(WDTO_15MS); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 36 | delay(50); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 37 | void(*resetFunc)(void) = 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 38 | resetFunc(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 39 | for(;;) {} // To make compiler happy |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 40 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 41 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 42 | #elif defined(__AVR__) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 43 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 44 | #include <Arduino.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 45 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 46 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 47 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 48 | extern int __heap_start, *__brkval; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 49 | int v; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 50 | return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 51 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 52 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 53 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 54 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 55 | void(*resetFunc)(void) = 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 56 | resetFunc(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 57 | for(;;) {} |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 58 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 59 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 60 | #elif defined(ESP8266) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 61 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 62 | #include <Arduino.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 63 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 64 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 65 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 66 | return ESP.getFreeHeap(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 67 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 68 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 69 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 70 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 71 | ESP.restart(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 72 | for(;;) {} |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 73 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 74 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 75 | #elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 76 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 77 | #include <Arduino.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 78 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 79 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 80 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 81 | return 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 82 | } |
vshymanskyy | 0:58b20b438383 | 83 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 84 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 85 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 86 | NVIC_SystemReset(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 87 | for(;;) {} |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 88 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 89 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 90 | #elif defined (PARTICLE) || defined(SPARK) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 91 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 92 | #include "application.h" |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 93 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 94 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 95 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 96 | return 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 97 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 98 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 99 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 100 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 101 | System.reset(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 102 | for(;;) {} // To make compiler happy |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 103 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 104 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 105 | #elif defined(__STM32F1__) || defined(__STM32F3__) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 106 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 107 | #include <Arduino.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 108 | #include <libmaple/nvic.h> |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 109 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 110 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 111 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 112 | return 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 113 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 114 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 115 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 116 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 117 | nvic_sys_reset(); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 118 | for(;;) {} |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 119 | } |
vshymanskyy | 0:58b20b438383 | 120 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 121 | // TODO: |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 122 | //#elif defined (TEENSYDUINO) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 123 | //#elif defined (__STM32F4__) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 124 | //#elif defined (ARDUINO_ARCH_ARC32) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 125 | //#elif defined (__RFduino__) || defined (__Simblee__) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 126 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 127 | #elif defined(MBED_LIBRARY_VERSION) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 128 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 129 | #include "mbed.h" |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 130 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 131 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 132 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 133 | return 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 134 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 135 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 136 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 137 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 138 | for(;;) {} // To make compiler happy |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 139 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 140 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 141 | #else |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 142 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 143 | #if defined(BLYNK_DEBUG_ALL) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 144 | #warning "Need to implement board-specific utilities" |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 145 | #endif |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 146 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 147 | size_t BlynkFreeRam() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 148 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 149 | return 0; |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 150 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 151 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 152 | void BlynkReset() |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 153 | { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 154 | for(;;) {} // To make compiler happy |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 155 | } |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 156 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 157 | #endif |
vshymanskyy | 0:58b20b438383 | 158 | |
vshymanskyy | 0:58b20b438383 | 159 | void BlynkFatal() |
vshymanskyy | 0:58b20b438383 | 160 | { |
Volodymyr Shymanskyy |
11:991ded8c9703 | 161 | wait(10000L); |
vshymanskyy | 0:58b20b438383 | 162 | BlynkReset(); |
vshymanskyy | 0:58b20b438383 | 163 | } |