Mobile Life IoT project using the AT&T IoT Starter Kit Software and files for my device to monitor the status or our Airstream travel trailer RV. A full description of the project is at Hackster.IO here as part of the Realtime AT&T IoT Starter Kit Challenge: https://www.hackster.io/Anubus/mobile-life-iot-9c10be

Dependencies:   FXOS8700CQ MODSERIAL mbed

Revision:
0:bd276b1f1249
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/itm_output.cpp	Sun Apr 02 12:28:21 2017 +0000
@@ -0,0 +1,91 @@
+/* ===================================================================
+Copyright © 2016, AVNET Inc.  
+
+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.
+
+======================================================================== */
+
+//Used for ULINK output only
+//
+
+/* ITM registers */
+#define ITM_PORT0_U8          (*((volatile unsigned int  *)0xE0000000))
+#define ITM_PORT0_U32         (*((volatile unsigned long *)0xE0000000))
+#define ITM_TER               (*((volatile unsigned long *)0xE0000E00))
+#define ITM_TCR               (*((volatile unsigned long *)0xE0000E80))
+
+#define ITM_TCR_ITMENA_Msk    (1UL << 0)
+
+/*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+#define ITM_RXBUFFER_EMPTY    0x5AA55AA5
+
+/*!< Variable to receive characters. */
+extern
+volatile int ITM_RxBuffer;
+volatile int ITM_RxBuffer = ITM_RXBUFFER_EMPTY;
+
+/** \brief  ITM Send Character
+
+    The function transmits a character via the ITM channel 0, and
+    \li Just returns when no debugger is connected that has booked the output.
+    \li Is blocking when a debugger is connected, but the previous character
+        sent has not been transmitted.
+
+    \param [in]     ch  Character to transmit.
+
+    \returns            Character to transmit.
+ */
+int ITM_putc (int ch) {
+  if ((ITM_TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */
+      (ITM_TER & (1UL << 0)        )) { /* ITM Port #0 enabled */
+    while (ITM_PORT0_U32 == 0);
+    ITM_PORT0_U8 = (int)ch;
+  }
+  return (ch);
+}
+
+/** \brief  ITM Receive Character
+
+    The function inputs a character via the external variable \ref ITM_RxBuffer.
+    This variable is monitored and altered by the debugger to provide input.
+
+    \return             Received character.
+    \return         -1  No character pending.
+ */
+int ITM_getc (void) {
+  int ch = -1;                      /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;  /* ready for next character */
+  }
+
+  return (ch);
+}
+
+/** \brief  ITM send string
+
+    The function sends a null terminated string via the external variable \ref ITM_RxBuffer.
+    This variable is monitored and altered by the debugger to provide input.
+
+    \return             Received character.
+    \return         -1  No character pending.
+ */
+int ITM_puts (char * str) {
+  int i=0;
+
+  while(str[i])
+    ITM_putc(str[i++]);
+  return i;
+}
+