Sample program on how to use the OPT3001 sensor on the RAKWirelss iTracker module

Committer:
knaresh89
Date:
Mon Feb 12 05:06:24 2018 +0000
Revision:
0:33cb2fa095df
Sample program on how to use the OPT3001 sensor on the RAKWireless iTracker module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
knaresh89 0:33cb2fa095df 1 /*********************************************************************
knaresh89 0:33cb2fa095df 2 * SEGGER MICROCONTROLLER GmbH & Co. KG *
knaresh89 0:33cb2fa095df 3 * Solutions for real time microcontroller applications *
knaresh89 0:33cb2fa095df 4 **********************************************************************
knaresh89 0:33cb2fa095df 5 * *
knaresh89 0:33cb2fa095df 6 * (c) 2014 - 2016 SEGGER Microcontroller GmbH & Co. KG *
knaresh89 0:33cb2fa095df 7 * *
knaresh89 0:33cb2fa095df 8 * www.segger.com Support: support@segger.com *
knaresh89 0:33cb2fa095df 9 * *
knaresh89 0:33cb2fa095df 10 **********************************************************************
knaresh89 0:33cb2fa095df 11 * *
knaresh89 0:33cb2fa095df 12 * SEGGER RTT * Real Time Transfer for embedded targets *
knaresh89 0:33cb2fa095df 13 * *
knaresh89 0:33cb2fa095df 14 **********************************************************************
knaresh89 0:33cb2fa095df 15 * *
knaresh89 0:33cb2fa095df 16 * All rights reserved. *
knaresh89 0:33cb2fa095df 17 * *
knaresh89 0:33cb2fa095df 18 * SEGGER strongly recommends to not make any changes *
knaresh89 0:33cb2fa095df 19 * to or modify the source code of this software in order to stay *
knaresh89 0:33cb2fa095df 20 * compatible with the RTT protocol and J-Link. *
knaresh89 0:33cb2fa095df 21 * *
knaresh89 0:33cb2fa095df 22 * Redistribution and use in source and binary forms, with or *
knaresh89 0:33cb2fa095df 23 * without modification, are permitted provided that the following *
knaresh89 0:33cb2fa095df 24 * conditions are met: *
knaresh89 0:33cb2fa095df 25 * *
knaresh89 0:33cb2fa095df 26 * o Redistributions of source code must retain the above copyright *
knaresh89 0:33cb2fa095df 27 * notice, this list of conditions and the following disclaimer. *
knaresh89 0:33cb2fa095df 28 * *
knaresh89 0:33cb2fa095df 29 * o Redistributions in binary form must reproduce the above *
knaresh89 0:33cb2fa095df 30 * copyright notice, this list of conditions and the following *
knaresh89 0:33cb2fa095df 31 * disclaimer in the documentation and/or other materials provided *
knaresh89 0:33cb2fa095df 32 * with the distribution. *
knaresh89 0:33cb2fa095df 33 * *
knaresh89 0:33cb2fa095df 34 * o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
knaresh89 0:33cb2fa095df 35 * nor the names of its contributors may be used to endorse or *
knaresh89 0:33cb2fa095df 36 * promote products derived from this software without specific *
knaresh89 0:33cb2fa095df 37 * prior written permission. *
knaresh89 0:33cb2fa095df 38 * *
knaresh89 0:33cb2fa095df 39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
knaresh89 0:33cb2fa095df 40 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
knaresh89 0:33cb2fa095df 41 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
knaresh89 0:33cb2fa095df 42 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
knaresh89 0:33cb2fa095df 43 * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
knaresh89 0:33cb2fa095df 44 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
knaresh89 0:33cb2fa095df 45 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
knaresh89 0:33cb2fa095df 46 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
knaresh89 0:33cb2fa095df 47 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
knaresh89 0:33cb2fa095df 48 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
knaresh89 0:33cb2fa095df 49 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
knaresh89 0:33cb2fa095df 50 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
knaresh89 0:33cb2fa095df 51 * DAMAGE. *
knaresh89 0:33cb2fa095df 52 * *
knaresh89 0:33cb2fa095df 53 **********************************************************************
knaresh89 0:33cb2fa095df 54 ---------------------------END-OF-HEADER------------------------------
knaresh89 0:33cb2fa095df 55 File : SEGGER_RTT.h
knaresh89 0:33cb2fa095df 56 Purpose : Implementation of SEGGER real-time transfer which allows
knaresh89 0:33cb2fa095df 57 real-time communication on targets which support debugger
knaresh89 0:33cb2fa095df 58 memory accesses while the CPU is running.
knaresh89 0:33cb2fa095df 59 Revision: $Rev: 4351 $
knaresh89 0:33cb2fa095df 60 ----------------------------------------------------------------------
knaresh89 0:33cb2fa095df 61 */
knaresh89 0:33cb2fa095df 62
knaresh89 0:33cb2fa095df 63 #ifndef SEGGER_RTT_H
knaresh89 0:33cb2fa095df 64 #define SEGGER_RTT_H
knaresh89 0:33cb2fa095df 65
knaresh89 0:33cb2fa095df 66 #include "SEGGER_RTT_Conf.h"
knaresh89 0:33cb2fa095df 67
knaresh89 0:33cb2fa095df 68 /*********************************************************************
knaresh89 0:33cb2fa095df 69 *
knaresh89 0:33cb2fa095df 70 * Defines, fixed
knaresh89 0:33cb2fa095df 71 *
knaresh89 0:33cb2fa095df 72 **********************************************************************
knaresh89 0:33cb2fa095df 73 */
knaresh89 0:33cb2fa095df 74
knaresh89 0:33cb2fa095df 75 /*********************************************************************
knaresh89 0:33cb2fa095df 76 *
knaresh89 0:33cb2fa095df 77 * Types
knaresh89 0:33cb2fa095df 78 *
knaresh89 0:33cb2fa095df 79 **********************************************************************
knaresh89 0:33cb2fa095df 80 */
knaresh89 0:33cb2fa095df 81
knaresh89 0:33cb2fa095df 82 //
knaresh89 0:33cb2fa095df 83 // Description for a circular buffer (also called "ring buffer")
knaresh89 0:33cb2fa095df 84 // which is used as up-buffer (T->H)
knaresh89 0:33cb2fa095df 85 //
knaresh89 0:33cb2fa095df 86 typedef struct {
knaresh89 0:33cb2fa095df 87 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
knaresh89 0:33cb2fa095df 88 char* pBuffer; // Pointer to start of buffer
knaresh89 0:33cb2fa095df 89 unsigned SizeOfBuffer; // Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.
knaresh89 0:33cb2fa095df 90 unsigned WrOff; // Position of next item to be written by either target.
knaresh89 0:33cb2fa095df 91 volatile unsigned RdOff; // Position of next item to be read by host. Must be volatile since it may be modified by host.
knaresh89 0:33cb2fa095df 92 unsigned Flags; // Contains configuration flags
knaresh89 0:33cb2fa095df 93 } SEGGER_RTT_BUFFER_UP;
knaresh89 0:33cb2fa095df 94
knaresh89 0:33cb2fa095df 95 //
knaresh89 0:33cb2fa095df 96 // Description for a circular buffer (also called "ring buffer")
knaresh89 0:33cb2fa095df 97 // which is used as down-buffer (H->T)
knaresh89 0:33cb2fa095df 98 //
knaresh89 0:33cb2fa095df 99 typedef struct {
knaresh89 0:33cb2fa095df 100 const char* sName; // Optional name. Standard names so far are: "Terminal", "SysView", "J-Scope_t4i4"
knaresh89 0:33cb2fa095df 101 char* pBuffer; // Pointer to start of buffer
knaresh89 0:33cb2fa095df 102 unsigned SizeOfBuffer; // Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.
knaresh89 0:33cb2fa095df 103 volatile unsigned WrOff; // Position of next item to be written by host. Must be volatile since it may be modified by host.
knaresh89 0:33cb2fa095df 104 unsigned RdOff; // Position of next item to be read by target (down-buffer).
knaresh89 0:33cb2fa095df 105 unsigned Flags; // Contains configuration flags
knaresh89 0:33cb2fa095df 106 } SEGGER_RTT_BUFFER_DOWN;
knaresh89 0:33cb2fa095df 107
knaresh89 0:33cb2fa095df 108 //
knaresh89 0:33cb2fa095df 109 // RTT control block which describes the number of buffers available
knaresh89 0:33cb2fa095df 110 // as well as the configuration for each buffer
knaresh89 0:33cb2fa095df 111 //
knaresh89 0:33cb2fa095df 112 //
knaresh89 0:33cb2fa095df 113 typedef struct {
knaresh89 0:33cb2fa095df 114 char acID[16]; // Initialized to "SEGGER RTT"
knaresh89 0:33cb2fa095df 115 int MaxNumUpBuffers; // Initialized to SEGGER_RTT_MAX_NUM_UP_BUFFERS (type. 2)
knaresh89 0:33cb2fa095df 116 int MaxNumDownBuffers; // Initialized to SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (type. 2)
knaresh89 0:33cb2fa095df 117 SEGGER_RTT_BUFFER_UP aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS]; // Up buffers, transferring information up from target via debug probe to host
knaresh89 0:33cb2fa095df 118 SEGGER_RTT_BUFFER_DOWN aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS]; // Down buffers, transferring information down from host via debug probe to target
knaresh89 0:33cb2fa095df 119 } SEGGER_RTT_CB;
knaresh89 0:33cb2fa095df 120
knaresh89 0:33cb2fa095df 121 /*********************************************************************
knaresh89 0:33cb2fa095df 122 *
knaresh89 0:33cb2fa095df 123 * Global data
knaresh89 0:33cb2fa095df 124 *
knaresh89 0:33cb2fa095df 125 **********************************************************************
knaresh89 0:33cb2fa095df 126 */
knaresh89 0:33cb2fa095df 127 extern SEGGER_RTT_CB _SEGGER_RTT;
knaresh89 0:33cb2fa095df 128
knaresh89 0:33cb2fa095df 129 /*********************************************************************
knaresh89 0:33cb2fa095df 130 *
knaresh89 0:33cb2fa095df 131 * RTT API functions
knaresh89 0:33cb2fa095df 132 *
knaresh89 0:33cb2fa095df 133 **********************************************************************
knaresh89 0:33cb2fa095df 134 */
knaresh89 0:33cb2fa095df 135 #ifdef __cplusplus
knaresh89 0:33cb2fa095df 136 extern "C" {
knaresh89 0:33cb2fa095df 137 #endif
knaresh89 0:33cb2fa095df 138 int SEGGER_RTT_AllocDownBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
knaresh89 0:33cb2fa095df 139 int SEGGER_RTT_AllocUpBuffer (const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
knaresh89 0:33cb2fa095df 140 int SEGGER_RTT_ConfigUpBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
knaresh89 0:33cb2fa095df 141 int SEGGER_RTT_ConfigDownBuffer (unsigned BufferIndex, const char* sName, void* pBuffer, unsigned BufferSize, unsigned Flags);
knaresh89 0:33cb2fa095df 142 int SEGGER_RTT_GetKey (void);
knaresh89 0:33cb2fa095df 143 unsigned SEGGER_RTT_HasData (unsigned BufferIndex);
knaresh89 0:33cb2fa095df 144 int SEGGER_RTT_HasKey (void);
knaresh89 0:33cb2fa095df 145 void SEGGER_RTT_Init (void);
knaresh89 0:33cb2fa095df 146 unsigned SEGGER_RTT_Read (unsigned BufferIndex, void* pBuffer, unsigned BufferSize);
knaresh89 0:33cb2fa095df 147 unsigned SEGGER_RTT_ReadNoLock (unsigned BufferIndex, void* pData, unsigned BufferSize);
knaresh89 0:33cb2fa095df 148 int SEGGER_RTT_SetNameDownBuffer (unsigned BufferIndex, const char* sName);
knaresh89 0:33cb2fa095df 149 int SEGGER_RTT_SetNameUpBuffer (unsigned BufferIndex, const char* sName);
knaresh89 0:33cb2fa095df 150 int SEGGER_RTT_SetFlagsDownBuffer (unsigned BufferIndex, unsigned Flags);
knaresh89 0:33cb2fa095df 151 int SEGGER_RTT_SetFlagsUpBuffer (unsigned BufferIndex, unsigned Flags);
knaresh89 0:33cb2fa095df 152 int SEGGER_RTT_WaitKey (void);
knaresh89 0:33cb2fa095df 153 unsigned SEGGER_RTT_Write (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
knaresh89 0:33cb2fa095df 154 unsigned SEGGER_RTT_WriteNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
knaresh89 0:33cb2fa095df 155 unsigned SEGGER_RTT_WriteSkipNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
knaresh89 0:33cb2fa095df 156 unsigned SEGGER_RTT_WriteString (unsigned BufferIndex, const char* s);
knaresh89 0:33cb2fa095df 157 void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
knaresh89 0:33cb2fa095df 158 //
knaresh89 0:33cb2fa095df 159 // Function macro for performance optimization
knaresh89 0:33cb2fa095df 160 //
knaresh89 0:33cb2fa095df 161 #define SEGGER_RTT_HASDATA(n) (_SEGGER_RTT.aDown[n].WrOff - _SEGGER_RTT.aDown[n].RdOff)
knaresh89 0:33cb2fa095df 162
knaresh89 0:33cb2fa095df 163 /*********************************************************************
knaresh89 0:33cb2fa095df 164 *
knaresh89 0:33cb2fa095df 165 * RTT "Terminal" API functions
knaresh89 0:33cb2fa095df 166 *
knaresh89 0:33cb2fa095df 167 **********************************************************************
knaresh89 0:33cb2fa095df 168 */
knaresh89 0:33cb2fa095df 169 int SEGGER_RTT_SetTerminal (char TerminalId);
knaresh89 0:33cb2fa095df 170 int SEGGER_RTT_TerminalOut (char TerminalId, const char* s);
knaresh89 0:33cb2fa095df 171
knaresh89 0:33cb2fa095df 172 /*********************************************************************
knaresh89 0:33cb2fa095df 173 *
knaresh89 0:33cb2fa095df 174 * RTT printf functions (require SEGGER_RTT_printf.c)
knaresh89 0:33cb2fa095df 175 *
knaresh89 0:33cb2fa095df 176 **********************************************************************
knaresh89 0:33cb2fa095df 177 */
knaresh89 0:33cb2fa095df 178 int SEGGER_RTT_printf(unsigned BufferIndex, const char * sFormat, ...);
knaresh89 0:33cb2fa095df 179 #ifdef __cplusplus
knaresh89 0:33cb2fa095df 180 }
knaresh89 0:33cb2fa095df 181 #endif
knaresh89 0:33cb2fa095df 182
knaresh89 0:33cb2fa095df 183 /*********************************************************************
knaresh89 0:33cb2fa095df 184 *
knaresh89 0:33cb2fa095df 185 * Defines
knaresh89 0:33cb2fa095df 186 *
knaresh89 0:33cb2fa095df 187 **********************************************************************
knaresh89 0:33cb2fa095df 188 */
knaresh89 0:33cb2fa095df 189
knaresh89 0:33cb2fa095df 190 //
knaresh89 0:33cb2fa095df 191 // Operating modes. Define behavior if buffer is full (not enough space for entire message)
knaresh89 0:33cb2fa095df 192 //
knaresh89 0:33cb2fa095df 193 #define SEGGER_RTT_MODE_NO_BLOCK_SKIP (0U) // Skip. Do not block, output nothing. (Default)
knaresh89 0:33cb2fa095df 194 #define SEGGER_RTT_MODE_NO_BLOCK_TRIM (1U) // Trim: Do not block, output as much as fits.
knaresh89 0:33cb2fa095df 195 #define SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL (2U) // Block: Wait until there is space in the buffer.
knaresh89 0:33cb2fa095df 196 #define SEGGER_RTT_MODE_MASK (3U)
knaresh89 0:33cb2fa095df 197
knaresh89 0:33cb2fa095df 198 //
knaresh89 0:33cb2fa095df 199 // Control sequences, based on ANSI.
knaresh89 0:33cb2fa095df 200 // Can be used to control color, and clear the screen
knaresh89 0:33cb2fa095df 201 //
knaresh89 0:33cb2fa095df 202 #define RTT_CTRL_RESET "" // Reset to default colors
knaresh89 0:33cb2fa095df 203 #define RTT_CTRL_CLEAR "" // Clear screen, reposition cursor to top left
knaresh89 0:33cb2fa095df 204
knaresh89 0:33cb2fa095df 205 #define RTT_CTRL_TEXT_BLACK ""
knaresh89 0:33cb2fa095df 206 #define RTT_CTRL_TEXT_RED ""
knaresh89 0:33cb2fa095df 207 #define RTT_CTRL_TEXT_GREEN ""
knaresh89 0:33cb2fa095df 208 #define RTT_CTRL_TEXT_YELLOW ""
knaresh89 0:33cb2fa095df 209 #define RTT_CTRL_TEXT_BLUE ""
knaresh89 0:33cb2fa095df 210 #define RTT_CTRL_TEXT_MAGENTA ""
knaresh89 0:33cb2fa095df 211 #define RTT_CTRL_TEXT_CYAN ""
knaresh89 0:33cb2fa095df 212 #define RTT_CTRL_TEXT_WHITE ""
knaresh89 0:33cb2fa095df 213
knaresh89 0:33cb2fa095df 214 #define RTT_CTRL_TEXT_BRIGHT_BLACK ""
knaresh89 0:33cb2fa095df 215 #define RTT_CTRL_TEXT_BRIGHT_RED ""
knaresh89 0:33cb2fa095df 216 #define RTT_CTRL_TEXT_BRIGHT_GREEN ""
knaresh89 0:33cb2fa095df 217 #define RTT_CTRL_TEXT_BRIGHT_YELLOW ""
knaresh89 0:33cb2fa095df 218 #define RTT_CTRL_TEXT_BRIGHT_BLUE ""
knaresh89 0:33cb2fa095df 219 #define RTT_CTRL_TEXT_BRIGHT_MAGENTA ""
knaresh89 0:33cb2fa095df 220 #define RTT_CTRL_TEXT_BRIGHT_CYAN ""
knaresh89 0:33cb2fa095df 221 #define RTT_CTRL_TEXT_BRIGHT_WHITE ""
knaresh89 0:33cb2fa095df 222
knaresh89 0:33cb2fa095df 223 #define RTT_CTRL_BG_BLACK ""
knaresh89 0:33cb2fa095df 224 #define RTT_CTRL_BG_RED ""
knaresh89 0:33cb2fa095df 225 #define RTT_CTRL_BG_GREEN ""
knaresh89 0:33cb2fa095df 226 #define RTT_CTRL_BG_YELLOW ""
knaresh89 0:33cb2fa095df 227 #define RTT_CTRL_BG_BLUE ""
knaresh89 0:33cb2fa095df 228 #define RTT_CTRL_BG_MAGENTA ""
knaresh89 0:33cb2fa095df 229 #define RTT_CTRL_BG_CYAN ""
knaresh89 0:33cb2fa095df 230 #define RTT_CTRL_BG_WHITE ""
knaresh89 0:33cb2fa095df 231
knaresh89 0:33cb2fa095df 232 #define RTT_CTRL_BG_BRIGHT_BLACK ""
knaresh89 0:33cb2fa095df 233 #define RTT_CTRL_BG_BRIGHT_RED ""
knaresh89 0:33cb2fa095df 234 #define RTT_CTRL_BG_BRIGHT_GREEN ""
knaresh89 0:33cb2fa095df 235 #define RTT_CTRL_BG_BRIGHT_YELLOW ""
knaresh89 0:33cb2fa095df 236 #define RTT_CTRL_BG_BRIGHT_BLUE ""
knaresh89 0:33cb2fa095df 237 #define RTT_CTRL_BG_BRIGHT_MAGENTA ""
knaresh89 0:33cb2fa095df 238 #define RTT_CTRL_BG_BRIGHT_CYAN ""
knaresh89 0:33cb2fa095df 239 #define RTT_CTRL_BG_BRIGHT_WHITE ""
knaresh89 0:33cb2fa095df 240
knaresh89 0:33cb2fa095df 241
knaresh89 0:33cb2fa095df 242 #endif
knaresh89 0:33cb2fa095df 243
knaresh89 0:33cb2fa095df 244 /*************************** End of file ****************************/