You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.5 KiB

8 years ago
8 years ago
8 years ago
8 years ago
  1. /**
  2. * @file TinyGsmCommon.h
  3. * @author Volodymyr Shymanskyy
  4. * @license LGPL-3.0
  5. * @copyright Copyright (c) 2016 Volodymyr Shymanskyy
  6. * @date Nov 2016
  7. */
  8. #ifndef TinyGsmCommon_h
  9. #define TinyGsmCommon_h
  10. #if defined(SPARK) || defined(PARTICLE)
  11. #include "Particle.h"
  12. #elif defined(ARDUINO)
  13. #if ARDUINO >= 100
  14. #include "Arduino.h"
  15. #else
  16. #include "WProgram.h"
  17. #endif
  18. #endif
  19. #include <Client.h>
  20. #include <TinyGsmFifo.h>
  21. #ifndef TINY_GSM_YIELD
  22. #define TINY_GSM_YIELD() { delay(0); }
  23. #endif
  24. #define TINY_GSM_ATTR_NOT_AVAILABLE __attribute__((error("Not available on this modem type")))
  25. #define TINY_GSM_ATTR_NOT_IMPLEMENTED __attribute__((error("Not implemented")))
  26. #if defined(__AVR__)
  27. #define TINY_GSM_PROGMEM PROGMEM
  28. typedef const __FlashStringHelper* GsmConstStr;
  29. #define GFP(x) (reinterpret_cast<GsmConstStr>(x))
  30. #define GF(x) F(x)
  31. #else
  32. #define TINY_GSM_PROGMEM
  33. typedef const char* GsmConstStr;
  34. #define GFP(x) x
  35. #define GF(x) x
  36. #endif
  37. #ifdef TINY_GSM_DEBUG
  38. namespace {
  39. template<typename T>
  40. static void DBG(T last) {
  41. TINY_GSM_DEBUG.println(last);
  42. }
  43. template<typename T, typename... Args>
  44. static void DBG(T head, Args... tail) {
  45. TINY_GSM_DEBUG.print(head);
  46. TINY_GSM_DEBUG.print(' ');
  47. DBG(tail...);
  48. }
  49. }
  50. #else
  51. #define DBG(...)
  52. #endif
  53. template<class T>
  54. const T& TinyGsmMin(const T& a, const T& b)
  55. {
  56. return (b < a) ? b : a;
  57. }
  58. template<class T>
  59. const T& TinyGsmMax(const T& a, const T& b)
  60. {
  61. return (b < a) ? a : b;
  62. }
  63. #endif