Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
48241ad08This file is pinned to the selected release. Download the original to open it in your design tool.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IoT-MBBR (masterthesis): firmware/EFM32HG222F64_iot-mbbr/src/BG96_at_driver.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IoT-MBBR (masterthesis)
</div>
<div id="projectbrief">Masterthesis upgrading a Moving Bed BioReactor with extra sensors and cloud connectivity.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('BG96__at__driver_8c_source.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">BG96_at_driver.c</div> </div>
</div><!--header-->
<div class="contents">
<a href="BG96__at__driver_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/***************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * @file BG96_at_driver.c</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * @brief BG96 AT-command driver functionality.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * @version 1.0</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * @author Brecht Van Eeckhoudt</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * ******************************************************************************</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * @section Versions</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * @li v1.0: Basic functionality to send measurements to the cloud using NB-IoT</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * without timeout functionality.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * ******************************************************************************</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * @section License</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> *</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * **Copyright (C) 2020 - Brecht Van Eeckhoudt**</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * it under the terms of the **GNU General Public License** as published by</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * the Free Software Foundation, either **version 3** of the License, or</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * *A copy of the GNU General Public License can be found in the `LICENSE`</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * file along with this source code.*</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * @n</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * Some methods use code obtained from examples from [Silicon Labs' GitHub](https://github.com/SiliconLabs/peripheral_examples).</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * These sections are licensed under the Silabs License Agreement. See the file</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * "Silabs_License_Agreement.txt" for details. Before using this software for</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> * any purpose, you must agree to the terms of that agreement.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> *</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <stdint.h></span> <span class="comment">/* (u)intXX_t */</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <stdbool.h></span> <span class="comment">/* "bool", "true", "false" */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "em_cmu.h"</span> <span class="comment">/* Clock Management Unit */</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "em_device.h"</span> <span class="comment">/* Include necessary MCU-specific header file */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "em_gpio.h"</span> <span class="comment">/* General Purpose IO */</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="BG96__at__driver_8h.html">BG96_at_driver.h</a>"</span> <span class="comment">/* Corresponding header file */</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="debug__dbprint_8h.html">debug_dbprint.h</a>"</span> <span class="comment">/* Enable or disable printing to UART */</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="delay_8h.html">delay.h</a>"</span> <span class="comment">/* Delay functionality */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="util__string_8h.html">util_string.h</a>"</span> <span class="comment">/* String functionality */</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="datatypes_8h.html">datatypes.h</a>"</span> <span class="comment">/* Definitions of the custom data-types */</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="credentials_8h.html">credentials.h</a>"</span> <span class="comment">/* DEVICE_ID and DEVICE_TOKEN */</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="pin__mapping_8h.html">pin_mapping.h</a>"</span> <span class="comment">/* PORT and PIN definitions */</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">/* Local definitions */</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#ab7a545d8f4f84c0cf50882f5bc22b2e3"> 59</a></span> <span class="preprocessor">#define PRINT_ID_TOKEN 0 </span><span class="comment">/* 0 = don't print ID & Token, 1 = print ID & Token */</span><span class="preprocessor"></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/* Local variables */</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">/* Convert ASCII to hex:</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment"> * => "-1" to get the correct length because the NULL termination character is at the end of the array</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * => "*2" because one ASCII char becomes two HEX chars</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> * => "+1" to add the NULL termination character at the end</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> */</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f"> 68</a></span> <span class="keywordtype">char</span> <a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>[2*(<span class="keyword">sizeof</span>(<a class="code" href="credentials_8h.html#a0b85963cace75e76ae726bcffb04eb70">DEVICE_ID</a>)-1) +1];</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87"> 69</a></span> <span class="keywordtype">char</span> <a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>[2*(<span class="keyword">sizeof</span>(<a class="code" href="credentials_8h.html#a218e759fa09c59d1f3190de2b5981241">DEVICE_TOKEN</a>)-1) +1];</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">/* Local prototypes */</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a> (<span class="keywordtype">bool</span> continueCode);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a> (<span class="keywordtype">bool</span> continueCode);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> * Initialize the GPIO pins and UART0 module necessary to communicate with</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> * the BG96 module.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a967e1e1153743d277ddfb50924c12b47"> 82</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#a967e1e1153743d277ddfb50924c12b47">initBG96</a> (<span class="keywordtype">void</span>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">/* Convert ID & Token */</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="util__string_8h.html#a89d835a0d811ae94a1616fef637d0ed4">charASCII_to_charHex</a>(<a class="code" href="credentials_8h.html#a0b85963cace75e76ae726bcffb04eb70">DEVICE_ID</a>, <a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="util__string_8h.html#a89d835a0d811ae94a1616fef637d0ed4">charASCII_to_charHex</a>(<a class="code" href="credentials_8h.html#a218e759fa09c59d1f3190de2b5981241">DEVICE_TOKEN</a>, <a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#if PRINT_ID_TOKEN == 1 </span><span class="comment">/* PRINT_ID_TOKEN */</span><span class="preprocessor"></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">"INFO: DEVICE_ID = "</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<a class="code" href="credentials_8h.html#a0b85963cace75e76ae726bcffb04eb70">DEVICE_ID</a>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">"INFO: DEVICE_ID_hex = "</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">"INFO: DEVICE_TOKEN = "</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<a class="code" href="credentials_8h.html#a218e759fa09c59d1f3190de2b5981241">DEVICE_TOKEN</a>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">"INFO: DEVICE_TOKEN_hex = "</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif </span><span class="comment">/* PRINT_ID_TOKEN */</span><span class="preprocessor"></span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">/* Enable oscillator to GPIO*/</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  CMU_ClockEnable(cmuClock_GPIO, <span class="keyword">true</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">/* Initialize GPIO pin for PWR key */</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">/* In the case of gpioModePushPull, the last argument directly sets the pin state */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GPIO_PinModeSet(<a class="code" href="pin__mapping_8h.html#ac80d37b0d3a3e8609cc71ca6ff379e5e">BG96_PWRKEY_PORT</a>, <a class="code" href="pin__mapping_8h.html#a210324315fc5bdc5614b1cd412fa34be">BG96_PWRKEY_PIN</a>, gpioModePushPull, 0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">/*</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment"> * USART_INITASYNC_DEFAULT:</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> * config.enable = usartEnable // Specifies whether TX and/or RX is enabled when initialization is completed</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> * // (Enable RX/TX when initialization is complete).</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"> * config.refFreq = 0 // USART/UART reference clock assumed when configuring baud rate setup</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> * // (0 = Use current configured reference clock for configuring baud rate).</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment"> * config.baudrate = 115200 // Desired baudrate (115200 bits/s).</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> * config.oversampling = usartOVS16 // Oversampling used (16x oversampling).</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment"> * config.databits = usartDatabits8 // Number of data bits in frame (8 data bits).</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"> * config.parity = usartNoParity // Parity mode to use (no parity).</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> * config.stopbits = usartStopbits1 // Number of stop bits to use (1 stop bit).</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> * config.mvdis = false // Majority Vote Disable for 16x, 8x and 6x oversampling modes (Do not disable majority vote).</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"> * config.prsRxEnable = false // Enable USART Rx via PRS (Not USART PRS input mode).</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> * config.prsRxCh = 0 // Select PRS channel for USART Rx. (Only valid if prsRxEnable is true - PRS channel 0).</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> * config.autoCsEnable = false // Auto CS enabling (Auto CS functionality enable/disable switch - disabled).</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> */</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  USART_InitAsync_TypeDef config = USART_INITASYNC_DEFAULT;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">/* Enable oscillator to USARTx modules */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a> == USART0) CMU_ClockEnable(cmuClock_USART0, <span class="keyword">true</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a> == USART1) CMU_ClockEnable(cmuClock_USART1, <span class="keyword">true</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">/* Set pin modes for UART TX and RX pins */</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span> (<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a> == USART0)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">switch</span> (<a class="code" href="pin__mapping_8h.html#a0c7fbec734379e8973d257ddb795f491">BG96_UART_LOC</a>)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GPIO_PinModeSet(gpioPortE, 11, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  GPIO_PinModeSet(gpioPortE, 10, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  GPIO_PinModeSet(gpioPortC, 10, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">/* No TX pin in this mode */</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  GPIO_PinModeSet(gpioPortE, 12, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  GPIO_PinModeSet(gpioPortE, 13, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  GPIO_PinModeSet(gpioPortB, 8, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  GPIO_PinModeSet(gpioPortB, 7, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">case</span> 5:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> 6:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  GPIO_PinModeSet(gpioPortC, 1, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  GPIO_PinModeSet(gpioPortC, 0, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">/* default: */</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">/* No default */</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a> == USART1)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">switch</span> (<a class="code" href="pin__mapping_8h.html#a0c7fbec734379e8973d257ddb795f491">BG96_UART_LOC</a>)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  GPIO_PinModeSet(gpioPortC, 1, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  GPIO_PinModeSet(gpioPortC, 0, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  GPIO_PinModeSet(gpioPortD, 6, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  GPIO_PinModeSet(gpioPortD, 7, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  GPIO_PinModeSet(gpioPortA, 0, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  GPIO_PinModeSet(gpioPortF, 2, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> 5:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  GPIO_PinModeSet(gpioPortC, 2, gpioModeInput, 0); <span class="comment">/* RX */</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  GPIO_PinModeSet(gpioPortC, 1, gpioModePushPull, 1); <span class="comment">/* TX */</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">/* default: */</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">/* No default */</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">/* Initialize USART asynchronous mode */</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  USART_InitAsync(<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>, &config);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">/* Route pins */</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">switch</span> (<a class="code" href="pin__mapping_8h.html#a0c7fbec734379e8973d257ddb795f491">BG96_UART_LOC</a>)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC1;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC2;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC3;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC4;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">case</span> 5:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC5;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">case</span> 6:</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC6;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>->ROUTE |= USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_DEFAULT;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment"> * Send measurements to the cloud using NB-IoT.</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment"> *</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment"> * @param[in] data</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"> * The measurements to send</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a7bdd8d94b5adc1338ddb5e3dc6412eb7"> 230</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#a7bdd8d94b5adc1338ddb5e3dc6412eb7">sendMeasurements</a> (<a class="code" href="structMeasurementData__t.html">MeasurementData_t</a> *<a class="code" href="main_8c.html#ad2c9072e6e6a5758dfc647e1a08a9509">data</a>)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">/* Begin transmission */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">bool</span> continueCode = <a class="code" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">"INFO: Sending the following values to the cloud:"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">" t1 = "</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a2a645143f7e2dae526c4dc529b39d531">t1</a>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", t2 = "</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a681606fed52aa7ef4ad54a1474a1e0cc">t2</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", p = "</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a04e469aeb83e080982d2ef28fbf7a020">p</a>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", n1 = "</span>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a3ca701413be06e7811b20c0b8a93b0fb">n1</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", n2 = "</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a01e1c006ea81bd1f57350022e6527d8a">n2</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", r = "</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(data-><a class="code" href="structMeasurementData__t.html#a70cd38d87f083652a4a993e5286595bb">r</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(<span class="stringliteral">", c = "</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="dbprint_8c.html#a05cd4086fbb7c752337b52c49c31d16b">dbprintlnInt</a>(data-><a class="code" href="structMeasurementData__t.html#a0936067670b28fc1b75c85a2060c984e">c</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">/* Convert values */</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">char</span> t1_hex[9]; <span class="comment">// TODO: Use less chars here because we use uint16_t (check if values aren't bigger than 0xFFFF)</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a2a645143f7e2dae526c4dc529b39d531">t1</a>, t1_hex); <span class="comment">// TODO: Make sure we can send negative values!</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">char</span> t2_hex[9];</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a681606fed52aa7ef4ad54a1474a1e0cc">t2</a>, t2_hex); <span class="comment">// TODO: Make sure we can send negative values!</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordtype">char</span> p_hex[9];</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a04e469aeb83e080982d2ef28fbf7a020">p</a>, p_hex);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordtype">char</span> n1_hex[9];</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a3ca701413be06e7811b20c0b8a93b0fb">n1</a>, n1_hex);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">char</span> n2_hex[9];</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a01e1c006ea81bd1f57350022e6527d8a">n2</a>, n2_hex);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">char</span> r_hex[9];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a70cd38d87f083652a4a993e5286595bb">r</a>, r_hex);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordtype">char</span> c_hex[9];</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(data-><a class="code" href="structMeasurementData__t.html#a0936067670b28fc1b75c85a2060c984e">c</a>, c_hex);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">/*</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="comment"> * http://cbor.me/</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="comment"> *</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="comment"> * Diagnostic:</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="comment"> * {</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="comment"> * "t1": 2345,</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="comment"> * "t2": 2345,</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="comment"> * "p": 2345,</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="comment"> * "n1": 2345,</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment"> * "n2": 2345,</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment"> * "r": 2345,</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="comment"> * "c": 2345</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="comment"> * }</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment"> *</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="comment"> * CBOR:</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment"> * A7 # map(7)</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="comment"> * 62 # text(2)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="comment"> * 7431 # "t1"</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="comment"> * 19 0929 # unsigned(2345) (19 ~ uint16_t)</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="comment"> * 62 # text(2)</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="comment"> * 7432 # "t2"</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment"> * 61 # text(1)</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment"> * 70 # "p"</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment"> * 62 # text(2)</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="comment"> * 6E31 # "n1"</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"> * 62 # text(2)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"> * 6E32 # "n2"</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment"> * 61 # text(1)</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment"> * 72 # "r"</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment"> * 61 # text(1)</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="comment"> * 63 # "c"</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment"> * 19 0929 # unsigned(2345)</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment"> */</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">/* Send commands */</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QISENDEX=0,\""</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"a762743119"</span>); <span class="comment">/* 0xa6 = map(7), 0x62 = text(2), 0x7431 = "t1", 0x19 = uint16_t */</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(t1_hex);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"62743219"</span>); <span class="comment">/* 0x62 = text(2), 0x7432 = "t2", 0x19 = uint16_t */</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(t2_hex);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"617019"</span>); <span class="comment">/* 0x61 = text(1), 0x70 = "p", 0x19 = uint16_t */</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(p_hex);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"626e3119"</span>); <span class="comment">/* 0x62 = text(2), 0x6e31 = "n1", 0x19 = uint16_t */</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(n1_hex);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"626e3219"</span>); <span class="comment">/* 0x62 = text(2), 0x6e32 = "n2", 0x19 = uint16_t */</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(n2_hex);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"617219"</span>); <span class="comment">/* 0x61 = text(1), 0x72 = "r", 0x19 = uint16_t */</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(r_hex);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"616319"</span>); <span class="comment">/* 0x61 = text(1), 0x63 = "c", 0x19 = uint16_t */</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(c_hex);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"\"\n\r"</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"SEND OK"</span>, 5);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="comment">/* End transmission */</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a>(continueCode);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"> * Send status to the cloud using NB-IoT.</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"> *</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> * @param[in] status</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment"> * The status value to send</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a5859703fe7faa10d31a003638e70a4c9"> 349</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#a5859703fe7faa10d31a003638e70a4c9">sendStatus</a> (<a class="code" href="vl53l1__types_8h.html#aef44329758059c91c76d334e8fc09700">int8_t</a> status)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">/* Begin transmission */</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">bool</span> continueCode = <a class="code" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">"INFO: Sending status "</span>);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(status);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">" to the cloud."</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">/* Convert values */</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">char</span> s_hex[9]; <span class="comment">// TODO: Use less chars here because we use uint16_t (check if values aren't bigger than 0xFFFF)</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(status, s_hex); <span class="comment">// TODO: Make sure we can send negative values!</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">/*</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="comment"> * http://cbor.me/</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="comment"> *</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="comment"> * Diagnostic:</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="comment"> * {</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="comment"> * "s": 2345</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="comment"> * }</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="comment"> *</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="comment"> * CBOR:</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="comment"> * A1 # map(1)</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="comment"> * 61 # text(1)</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="comment"> * 73 # "s"</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment"> * 19 0929 # unsigned(2345) (19 ~ uint16_t)</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment"> */</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">/* Send commands */</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QISENDEX=0,\""</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"a1617319"</span>); <span class="comment">/* 0xa1 = map(1), 0x61 = text(1), 0x73 = "s", 0x19 = uint16_t */</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(s_hex);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"\"\n\r"</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"SEND OK"</span>, 5);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">/* End transmission */</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a>(continueCode);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="comment"> * Send current pulses to the cloud using NB-IoT.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="comment"> *</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment"> * @param[in] number</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="comment"> * @li `0` - PULSE0 selected.</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="comment"> * @li `1` - PULSE0 selected.</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment"> *</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment"> * @param[in] pulse</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment"> * The pulse value to send</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#ac4e78d6ac2e813e06911e463c013d1e8"> 412</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#ac4e78d6ac2e813e06911e463c013d1e8">sendPulse</a> (<a class="code" href="vl53l1__types_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> number, <a class="code" href="vl53l1__types_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> pulse)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">/* Begin transmission */</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordtype">bool</span> continueCode = <a class="code" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">"INFO: Sending pulse(s) ["</span>);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a>(pulse);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">"] to the cloud."</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">/* Convert values */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">char</span> pulse_hex[9]; <span class="comment">// TODO: Use less chars here because we use uint16_t (check if values aren't bigger than 0xFFFF)</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a>(pulse, pulse_hex);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">/*</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment"> * http://cbor.me/</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment"> *</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment"> * Diagnostic:</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment"> * {</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="comment"> * "p1": 2345</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="comment"> * }</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="comment"> *</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment"> * CBOR:</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment"> * A1 # map(1)</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="comment"> * 62 # text(2)</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="comment"> * 7031 # "p1"</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment"> * 19 0929 # unsigned(2345) (19 ~ uint16_t)</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment"> */</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">/* Send commands */</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QISENDEX=0,\""</span>);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a>);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<a class="code" href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"0a"</span>); <span class="comment">/* \n */</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (number == 0) <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"a162703119"</span>); <span class="comment">/* 0xa1 = map(1), 0x62 = text(2), 0x7031 = "p1", 0x19 = uint16_t */</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (number == 1) <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"a162703219"</span>); <span class="comment">/* 0xa1 = map(1), 0x62 = text(2), 0x7032 = "p2", 0x19 = uint16_t */</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(pulse_hex);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"\"\n\r"</span>);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"SEND OK"</span>, 5);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="comment">/* End transmission */</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a>(continueCode);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * Code for the start of a NB-IoT transmission.</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> *</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"> * @note</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment"> * This is a static method because it's only internally used in this file</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment"> * and called by other methods if necessary.</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment"> *</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="comment"> * @param[in] continueCode</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment"> * Functionality to skip code if previous code failed.</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment"> *</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment"> * @return</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment"> * If the code finished okay/failed.</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3"> 479</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a> (<span class="keywordtype">bool</span> continueCode)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Powering on BG96"</span>);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="BG96__at__driver_8c.html#ae7c5267dba303cde0a6d8b25eab5fefd">powerBG96</a>(); <span class="comment">/* Power up BG96 */</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"APP RDY"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="delay_8h.html#aae86f940455b5957441f4331cdc0828d">sleep</a>(8); <span class="comment">// TODO: Wait some time before activating PDP?</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Sending Activate PDP command..."</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QIACT=1\r"</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">while</span> (!continueCode) <span class="comment">// TODO: update timeout functionality</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="delay_8h.html#aae86f940455b5957441f4331cdc0828d">sleep</a>(2); <span class="comment">/* Sleep for 2s */</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QIACT=1\r"</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Sending Create UDP command..."</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QIOPEN=1,0,\"UDP\",\"40.68.172.187\",8891\r"</span>); <span class="comment">// BEFORE: api.allthingstalk.io</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"+QIOPEN: 0,0"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> (continueCode);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment"> * Code for the end of a NB-IoT transmission.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment"> *</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment"> * @note</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="comment"> * This is a static method because it's only internally used in this file</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment"> * and called by other methods if necessary.</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment"> *</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="comment"> * @param[in] continueCode</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment"> * Functionality to skip code if previous code failed.</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="comment"> *</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment"> * @return</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment"> * If the code finished okay/failed.</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff"> 539</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a> (<span class="keywordtype">bool</span> continueCode)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Sending Deactivate PDP command..."</span>);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QIDEACT=1\r"</span>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span> (continueCode)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Sending Power down command..."</span>);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"AT+QPOWD\r"</span>);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"POWERED DOWN"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="dbprint_8c.html#a73de59bf0a689a086681070783a82df3">dbwarn</a>(<span class="stringliteral">"Powering down BG96 using hardware..."</span>);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <a class="code" href="BG96__at__driver_8c.html#ae7c5267dba303cde0a6d8b25eab5fefd">powerBG96</a>();</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <a class="code" href="delay_8h.html#aae86f940455b5957441f4331cdc0828d">sleep</a>(2); <span class="comment">// TODO: Wait less</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">return</span> (continueCode);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="comment"> * Method to enable the `power key` for 100ms to enable/disable the module.</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#ae7c5267dba303cde0a6d8b25eab5fefd"> 579</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#ae7c5267dba303cde0a6d8b25eab5fefd">powerBG96</a> (<span class="keywordtype">void</span>)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">/* Set PWK high for 100ms */</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  GPIO_PinOutSet(<a class="code" href="pin__mapping_8h.html#ac80d37b0d3a3e8609cc71ca6ff379e5e">BG96_PWRKEY_PORT</a>, <a class="code" href="pin__mapping_8h.html#a210324315fc5bdc5614b1cd412fa34be">BG96_PWRKEY_PIN</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="delay_8h.html#adb46f4276f5ddf111153701858f85df6">delay</a>(100);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  GPIO_PinOutClear(<a class="code" href="pin__mapping_8h.html#ac80d37b0d3a3e8609cc71ca6ff379e5e">BG96_PWRKEY_PORT</a>, <a class="code" href="pin__mapping_8h.html#a210324315fc5bdc5614b1cd412fa34be">BG96_PWRKEY_PIN</a>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="comment"> * Disable echo.</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a765a71bda12e7ca0d67cdae986b7bab2"> 592</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#a765a71bda12e7ca0d67cdae986b7bab2">disableEcho</a> (<span class="keywordtype">void</span>)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"Sending Disable Echo command..."</span>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordtype">bool</span> continueCode = <span class="keyword">true</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"ATE0\r"</span>);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">while</span> (!continueCode) <span class="comment">// TODO: update this code with timeout functionality?</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <a class="code" href="delay_8h.html#aae86f940455b5957441f4331cdc0828d">sleep</a>(2);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a>(<span class="stringliteral">"ATE0\r"</span>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  continueCode = <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a>(<span class="stringliteral">"OK"</span>, 5); <span class="comment">/* Wait for the correct response */</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="comment"> * Print a string (char array) to USARTx.</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="comment"> *</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="comment"> * @note</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="comment"> * If the input is not a string (ex.: `"Hello world!"`) but a char array,</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="comment"> * the input message (array) needs to end with NULL (`"\0"`)!</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="comment"> *</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment"> * @param[in] message</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="comment"> * The string to print to USARTx.</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef"> 623</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a> (<span class="keywordtype">char</span> *message)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="comment">/* "message[i] != 0" makes "uint32_t length = strlen(message)"</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="comment"> * not necessary (given string MUST be terminated by NULL for this to work) */</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">for</span> (<a class="code" href="vl53l1__types_8h.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> i = 0; message[i] != 0; i++)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  USART_Tx(<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>, message[i]);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment"> * Read a string (char array) from USARTx.</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> *</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> * @note</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> * The reading stops when a `"LF"` (Line Feed) character</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="comment"> * is received or the maximum length (`UART_BUFFER_SIZE`) is reached.</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="comment"> *</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="comment"> * @param[in] buf</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="comment"> * The buffer to put the resulting string in.@n</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="comment"> * **This needs to have a length of `UART_BUFFER_SIZE` for the function</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="comment"> * to work properly: `char buf[UART_BUFFER_SIZE];`!**</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a62169025472cd19a76a3bd16474f32c0"> 647</a></span> <span class="keywordtype">void</span> <a class="code" href="BG96__at__driver_8c.html#a62169025472cd19a76a3bd16474f32c0">readResponse</a> (<span class="keywordtype">char</span> *buf)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">for</span> (<a class="code" href="vl53l1__types_8h.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> i = 0; i < <a class="code" href="BG96__at__driver_8h.html#a0d57378e32bf8278011460740bc29f7f">UART_BUFFER_SIZE</a> - 1 ; i++ )</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordtype">char</span> localBuffer = USART_Rx(<a class="code" href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a>);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="comment">/* Check if a LF character is received */</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">if</span> (localBuffer == <span class="charliteral">'\n'</span>)</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="comment">/* End with a null termination character */</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  buf[i] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  buf[i] = localBuffer;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="comment"> * Wait for the correct response using sleep/timeout functionality.</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="comment"> *</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="comment"> * @param[in] response</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="comment"> * The correct response to look for.</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="comment"> *</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="comment"> * @param[in] timeout</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment"> * The timeout value.</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="comment"> *</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="comment"> * @return</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="comment"> * @li `true` - Module responded correctly before timeout.</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="comment"> * @li `false` - The module timed out or gave only incorrect responses.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7"> 682</a></span> <span class="keywordtype">bool</span> <a class="code" href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a> (<span class="keywordtype">char</span> *response, <a class="code" href="vl53l1__types_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> timeout)</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="vl53l1__types_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> i = 0;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> </div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordtype">char</span> rxBuf[<a class="code" href="BG96__at__driver_8h.html#a0d57378e32bf8278011460740bc29f7f">UART_BUFFER_SIZE</a>];</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">while</span> (i < timeout) <span class="comment">// TODO: update timeout functionality</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <a class="code" href="BG96__at__driver_8c.html#a62169025472cd19a76a3bd16474f32c0">readResponse</a>(rxBuf);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span> (<a class="code" href="util__string_8h.html#a13067df85bd8e1b61b747ec43b123888">stringStartsWith</a>((<span class="keywordtype">char</span> *)rxBuf, response))</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="comment">// Printing breaks timing!</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="comment">//#if DEBUG_DBPRINT == 1 /* DEBUG_DBPRINT */</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="comment">// dbprint("INFO: > ");</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="comment">// dbprint(response);</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="comment">// dbprintln("");</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="comment">//#endif /* DEBUG_DBPRINT */</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">return</span>(<span class="keyword">true</span>);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="util__string_8h.html#a13067df85bd8e1b61b747ec43b123888">stringStartsWith</a>((<span class="keywordtype">char</span> *)rxBuf, <span class="stringliteral">"ERROR"</span>))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="comment">// Printing breaks timing!</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="comment">//#if DEBUG_DBPRINT == 1 /* DEBUG_DBPRINT */</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="comment">// dbcrit(" > ERROR");</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="comment">//#endif /* DEBUG_DBPRINT */</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">return</span>(<span class="keyword">false</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> </div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  i++;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <a class="code" href="dbprint_8c.html#ad6b8e79e52a31b01f5816cdd62fb1746">dbprint_color</a>(<span class="stringliteral">"CRIT: Timeout reached while waiting on "</span>, <a class="code" href="dbprint_8h.html#a30d5293f29342e2bf8b795eb96a61607af80f9a890089d211842d59625e561f88">RED</a>);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <a class="code" href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a>(response);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <a class="code" href="dbprint_8c.html#ad6b8e79e52a31b01f5816cdd62fb1746">dbprint_color</a>(<span class="stringliteral">" command"</span>, <a class="code" href="dbprint_8h.html#a30d5293f29342e2bf8b795eb96a61607af80f9a890089d211842d59625e561f88">RED</a>);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">return</span>(<span class="keyword">false</span>);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> }</div><div class="ttc" id="structMeasurementData__t_html_a2a645143f7e2dae526c4dc529b39d531"><div class="ttname"><a href="structMeasurementData__t.html#a2a645143f7e2dae526c4dc529b39d531">MeasurementData_t::t1</a></div><div class="ttdeci">int32_t t1</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00066">datatypes.h:66</a></div></div>
<div class="ttc" id="dbprint_8c_html_a48c1f5d07dde14219473ff6a89a3f7ba"><div class="ttname"><a href="dbprint_8c.html#a48c1f5d07dde14219473ff6a89a3f7ba">dbprint</a></div><div class="ttdeci">void dbprint(char *message)</div><div class="ttdoc">Print a string (char array) to USARTx. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00375">dbprint.c:375</a></div></div>
<div class="ttc" id="structMeasurementData__t_html_a3ca701413be06e7811b20c0b8a93b0fb"><div class="ttname"><a href="structMeasurementData__t.html#a3ca701413be06e7811b20c0b8a93b0fb">MeasurementData_t::n1</a></div><div class="ttdeci">uint32_t n1</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00069">datatypes.h:69</a></div></div>
<div class="ttc" id="dbprint_8c_html_a05cd4086fbb7c752337b52c49c31d16b"><div class="ttname"><a href="dbprint_8c.html#a05cd4086fbb7c752337b52c49c31d16b">dbprintlnInt</a></div><div class="ttdeci">void dbprintlnInt(int32_t value)</div><div class="ttdoc">Print a number in decimal notation to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00776">dbprint.c:776</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a7bdd8d94b5adc1338ddb5e3dc6412eb7"><div class="ttname"><a href="BG96__at__driver_8c.html#a7bdd8d94b5adc1338ddb5e3dc6412eb7">sendMeasurements</a></div><div class="ttdeci">void sendMeasurements(MeasurementData_t *data)</div><div class="ttdoc">Send measurements to the cloud using NB-IoT. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00230">BG96_at_driver.c:230</a></div></div>
<div class="ttc" id="dbprint_8h_html_a30d5293f29342e2bf8b795eb96a61607af80f9a890089d211842d59625e561f88"><div class="ttname"><a href="dbprint_8h.html#a30d5293f29342e2bf8b795eb96a61607af80f9a890089d211842d59625e561f88">RED</a></div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8h_source.html#l00054">dbprint.h:54</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_ac515ded09dde185133c1de89670ccaff"><div class="ttname"><a href="BG96__at__driver_8c.html#ac515ded09dde185133c1de89670ccaff">transmissionEnd</a></div><div class="ttdeci">static bool transmissionEnd(bool continueCode)</div><div class="ttdoc">Code for the end of a NB-IoT transmission. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00539">BG96_at_driver.c:539</a></div></div>
<div class="ttc" id="credentials_8h_html_a218e759fa09c59d1f3190de2b5981241"><div class="ttname"><a href="credentials_8h.html#a218e759fa09c59d1f3190de2b5981241">DEVICE_TOKEN</a></div><div class="ttdeci">#define DEVICE_TOKEN</div><div class="ttdef"><b>Definition:</b> <a href="credentials_8h_source.html#l00017">credentials.h:17</a></div></div>
<div class="ttc" id="dbprint_8c_html_a5e059a469cca8341eb0a84e5c352f518"><div class="ttname"><a href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a></div><div class="ttdeci">void dbprintln(char *message)</div><div class="ttdoc">Print a string (char array) to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00397">dbprint.c:397</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_ae7c5267dba303cde0a6d8b25eab5fefd"><div class="ttname"><a href="BG96__at__driver_8c.html#ae7c5267dba303cde0a6d8b25eab5fefd">powerBG96</a></div><div class="ttdeci">void powerBG96(void)</div><div class="ttdoc">Method to enable the power key for 100ms to enable/disable the module. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00579">BG96_at_driver.c:579</a></div></div>
<div class="ttc" id="credentials_8h_html_a0b85963cace75e76ae726bcffb04eb70"><div class="ttname"><a href="credentials_8h.html#a0b85963cace75e76ae726bcffb04eb70">DEVICE_ID</a></div><div class="ttdeci">#define DEVICE_ID</div><div class="ttdef"><b>Definition:</b> <a href="credentials_8h_source.html#l00016">credentials.h:16</a></div></div>
<div class="ttc" id="vl53l1__types_8h_html_aef44329758059c91c76d334e8fc09700"><div class="ttname"><a href="vl53l1__types_8h.html#aef44329758059c91c76d334e8fc09700">int8_t</a></div><div class="ttdeci">signed char int8_t</div><div class="ttdoc">Typedef defining 8 bit char type. The developer should modify this to suit the platform being deploye...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00103">vl53l1_types.h:103</a></div></div>
<div class="ttc" id="pin__mapping_8h_html_a0c7fbec734379e8973d257ddb795f491"><div class="ttname"><a href="pin__mapping_8h.html#a0c7fbec734379e8973d257ddb795f491">BG96_UART_LOC</a></div><div class="ttdeci">#define BG96_UART_LOC</div><div class="ttdef"><b>Definition:</b> <a href="pin__mapping_8h_source.html#l00072">pin_mapping.h:72</a></div></div>
<div class="ttc" id="datatypes_8h_html"><div class="ttname"><a href="datatypes_8h.html">datatypes.h</a></div><div class="ttdoc">Definitions of the custom data-types used. </div></div>
<div class="ttc" id="main_8c_html_ad2c9072e6e6a5758dfc647e1a08a9509"><div class="ttname"><a href="main_8c.html#ad2c9072e6e6a5758dfc647e1a08a9509">data</a></div><div class="ttdeci">MeasurementData_t data</div><div class="ttdef"><b>Definition:</b> <a href="main_8c_source.html#l00086">main.c:86</a></div></div>
<div class="ttc" id="structMeasurementData__t_html_a0936067670b28fc1b75c85a2060c984e"><div class="ttname"><a href="structMeasurementData__t.html#a0936067670b28fc1b75c85a2060c984e">MeasurementData_t::c</a></div><div class="ttdeci">uint16_t c</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00072">datatypes.h:72</a></div></div>
<div class="ttc" id="pin__mapping_8h_html_a210324315fc5bdc5614b1cd412fa34be"><div class="ttname"><a href="pin__mapping_8h.html#a210324315fc5bdc5614b1cd412fa34be">BG96_PWRKEY_PIN</a></div><div class="ttdeci">#define BG96_PWRKEY_PIN</div><div class="ttdef"><b>Definition:</b> <a href="pin__mapping_8h_source.html#l00078">pin_mapping.h:78</a></div></div>
<div class="ttc" id="dbprint_8c_html_a73de59bf0a689a086681070783a82df3"><div class="ttname"><a href="dbprint_8c.html#a73de59bf0a689a086681070783a82df3">dbwarn</a></div><div class="ttdeci">void dbwarn(char *message)</div><div class="ttdoc">Print a warning string (char array) in yellow to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00523">dbprint.c:523</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a5859703fe7faa10d31a003638e70a4c9"><div class="ttname"><a href="BG96__at__driver_8c.html#a5859703fe7faa10d31a003638e70a4c9">sendStatus</a></div><div class="ttdeci">void sendStatus(int8_t status)</div><div class="ttdoc">Send status to the cloud using NB-IoT. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00349">BG96_at_driver.c:349</a></div></div>
<div class="ttc" id="util__string_8h_html"><div class="ttname"><a href="util__string_8h.html">util_string.h</a></div><div class="ttdoc">String (char array) conversion functionality. </div></div>
<div class="ttc" id="structMeasurementData__t_html_a681606fed52aa7ef4ad54a1474a1e0cc"><div class="ttname"><a href="structMeasurementData__t.html#a681606fed52aa7ef4ad54a1474a1e0cc">MeasurementData_t::t2</a></div><div class="ttdeci">int32_t t2</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00067">datatypes.h:67</a></div></div>
<div class="ttc" id="dbprint_8c_html_acb5d4e1082c625ad85d835d4e053d4d8"><div class="ttname"><a href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a></div><div class="ttdeci">void dbinfo(char *message)</div><div class="ttdoc">Print an info string (char array) to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00505">dbprint.c:505</a></div></div>
<div class="ttc" id="BG96__at__driver_8h_html_a0d57378e32bf8278011460740bc29f7f"><div class="ttname"><a href="BG96__at__driver_8h.html#a0d57378e32bf8278011460740bc29f7f">UART_BUFFER_SIZE</a></div><div class="ttdeci">#define UART_BUFFER_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8h_source.html#l00051">BG96_at_driver.h:51</a></div></div>
<div class="ttc" id="util__string_8h_html_a89d835a0d811ae94a1616fef637d0ed4"><div class="ttname"><a href="util__string_8h.html#a89d835a0d811ae94a1616fef637d0ed4">charASCII_to_charHex</a></div><div class="ttdeci">void charASCII_to_charHex(char *inbuf, char *outbuf)</div><div class="ttdoc">Convert an ASCII char array (string) to a hexadecimal char array. </div><div class="ttdef"><b>Definition:</b> <a href="util__string_8c_source.html#l00063">util_string.c:63</a></div></div>
<div class="ttc" id="util__string_8h_html_a13067df85bd8e1b61b747ec43b123888"><div class="ttname"><a href="util__string_8h.html#a13067df85bd8e1b61b747ec43b123888">stringStartsWith</a></div><div class="ttdeci">bool stringStartsWith(char *inbuf, char *sequence)</div><div class="ttdoc">Check if a given char array (string) starts with a given sequence. </div><div class="ttdef"><b>Definition:</b> <a href="util__string_8c_source.html#l00203">util_string.c:203</a></div></div>
<div class="ttc" id="pin__mapping_8h_html_a3d5b3139cf19e68c583ae14a2b93d327"><div class="ttname"><a href="pin__mapping_8h.html#a3d5b3139cf19e68c583ae14a2b93d327">BG96_UART</a></div><div class="ttdeci">#define BG96_UART</div><div class="ttdef"><b>Definition:</b> <a href="pin__mapping_8h_source.html#l00071">pin_mapping.h:71</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a62169025472cd19a76a3bd16474f32c0"><div class="ttname"><a href="BG96__at__driver_8c.html#a62169025472cd19a76a3bd16474f32c0">readResponse</a></div><div class="ttdeci">void readResponse(char *buf)</div><div class="ttdoc">Read a string (char array) from USARTx. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00647">BG96_at_driver.c:647</a></div></div>
<div class="ttc" id="structMeasurementData__t_html_a01e1c006ea81bd1f57350022e6527d8a"><div class="ttname"><a href="structMeasurementData__t.html#a01e1c006ea81bd1f57350022e6527d8a">MeasurementData_t::n2</a></div><div class="ttdeci">uint32_t n2</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00070">datatypes.h:70</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_acbb4ba00dc3b9e73395122e4c8d744ef"><div class="ttname"><a href="BG96__at__driver_8c.html#acbb4ba00dc3b9e73395122e4c8d744ef">sendCMD</a></div><div class="ttdeci">void sendCMD(char *message)</div><div class="ttdoc">Print a string (char array) to USARTx. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00623">BG96_at_driver.c:623</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a59f539f3e3957160c9fece220d299e6f"><div class="ttname"><a href="BG96__at__driver_8c.html#a59f539f3e3957160c9fece220d299e6f">DEVICE_ID_hex</a></div><div class="ttdeci">char DEVICE_ID_hex[2 *(sizeof(DEVICE_ID) -1)+1]</div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00068">BG96_at_driver.c:68</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a2c2316b05114fc4364a19281591f7aa7"><div class="ttname"><a href="BG96__at__driver_8c.html#a2c2316b05114fc4364a19281591f7aa7">waitForResponse</a></div><div class="ttdeci">bool waitForResponse(char *response, uint8_t timeout)</div><div class="ttdoc">Wait for the correct response using sleep/timeout functionality. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00682">BG96_at_driver.c:682</a></div></div>
<div class="ttc" id="credentials_8h_html"><div class="ttname"><a href="credentials_8h.html">credentials.h</a></div><div class="ttdoc">Header file containing DEVICE_ID and DEVICE_ID. </div></div>
<div class="ttc" id="structMeasurementData__t_html_a04e469aeb83e080982d2ef28fbf7a020"><div class="ttname"><a href="structMeasurementData__t.html#a04e469aeb83e080982d2ef28fbf7a020">MeasurementData_t::p</a></div><div class="ttdeci">uint32_t p</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00068">datatypes.h:68</a></div></div>
<div class="ttc" id="pin__mapping_8h_html_ac80d37b0d3a3e8609cc71ca6ff379e5e"><div class="ttname"><a href="pin__mapping_8h.html#ac80d37b0d3a3e8609cc71ca6ff379e5e">BG96_PWRKEY_PORT</a></div><div class="ttdeci">#define BG96_PWRKEY_PORT</div><div class="ttdef"><b>Definition:</b> <a href="pin__mapping_8h_source.html#l00077">pin_mapping.h:77</a></div></div>
<div class="ttc" id="pin__mapping_8h_html"><div class="ttname"><a href="pin__mapping_8h.html">pin_mapping.h</a></div><div class="ttdoc">The pin definitions for the custom board. </div></div>
<div class="ttc" id="structMeasurementData__t_html"><div class="ttname"><a href="structMeasurementData__t.html">MeasurementData_t</a></div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00064">datatypes.h:64</a></div></div>
<div class="ttc" id="delay_8h_html"><div class="ttname"><a href="delay_8h.html">delay.h</a></div><div class="ttdoc">Delay functionality. </div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a469ad8e3fdac7046c353a6eb5b5d01a3"><div class="ttname"><a href="BG96__at__driver_8c.html#a469ad8e3fdac7046c353a6eb5b5d01a3">transmissionBegin</a></div><div class="ttdeci">static bool transmissionBegin(bool continueCode)</div><div class="ttdoc">Code for the start of a NB-IoT transmission. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00479">BG96_at_driver.c:479</a></div></div>
<div class="ttc" id="debug__dbprint_8h_html"><div class="ttname"><a href="debug__dbprint_8h.html">debug_dbprint.h</a></div><div class="ttdoc">Enable or disable printing to UART with dbprint. </div></div>
<div class="ttc" id="delay_8h_html_adb46f4276f5ddf111153701858f85df6"><div class="ttname"><a href="delay_8h.html#adb46f4276f5ddf111153701858f85df6">delay</a></div><div class="ttdeci">void delay(uint32_t msDelay)</div><div class="ttdoc">Wait for a certain amount of milliseconds in EM2/3. </div><div class="ttdef"><b>Definition:</b> <a href="delay_8c_source.html#l00124">delay.c:124</a></div></div>
<div class="ttc" id="BG96__at__driver_8h_html"><div class="ttname"><a href="BG96__at__driver_8h.html">BG96_at_driver.h</a></div><div class="ttdoc">BG96 AT-command driver functionality. </div></div>
<div class="ttc" id="dbprint_8c_html_a4e4e18f85e358d8cc702ea8c2f190503"><div class="ttname"><a href="dbprint_8c.html#a4e4e18f85e358d8cc702ea8c2f190503">dbprintInt</a></div><div class="ttdeci">void dbprintInt(int32_t value)</div><div class="ttdoc">Print a number in decimal notation to USARTx. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00740">dbprint.c:740</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a967e1e1153743d277ddfb50924c12b47"><div class="ttname"><a href="BG96__at__driver_8c.html#a967e1e1153743d277ddfb50924c12b47">initBG96</a></div><div class="ttdeci">void initBG96(void)</div><div class="ttdoc">Initialize the GPIO pins and UART0 module necessary to communicate with the BG96 module. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00082">BG96_at_driver.c:82</a></div></div>
<div class="ttc" id="structMeasurementData__t_html_a70cd38d87f083652a4a993e5286595bb"><div class="ttname"><a href="structMeasurementData__t.html#a70cd38d87f083652a4a993e5286595bb">MeasurementData_t::r</a></div><div class="ttdeci">uint32_t r</div><div class="ttdef"><b>Definition:</b> <a href="datatypes_8h_source.html#l00071">datatypes.h:71</a></div></div>
<div class="ttc" id="delay_8h_html_aae86f940455b5957441f4331cdc0828d"><div class="ttname"><a href="delay_8h.html#aae86f940455b5957441f4331cdc0828d">sleep</a></div><div class="ttdeci">void sleep(uint32_t sSleep)</div><div class="ttdoc">Sleep for a certain amount of seconds in EM2/3. </div><div class="ttdef"><b>Definition:</b> <a href="delay_8c_source.html#l00293">delay.c:293</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a74b8529bdd8bee3bbf3879aaaa005d87"><div class="ttname"><a href="BG96__at__driver_8c.html#a74b8529bdd8bee3bbf3879aaaa005d87">DEVICE_TOKEN_hex</a></div><div class="ttdeci">char DEVICE_TOKEN_hex[2 *(sizeof(DEVICE_TOKEN) -1)+1]</div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00069">BG96_at_driver.c:69</a></div></div>
<div class="ttc" id="dbprint_8c_html_a36d9f16a26ecfc8540df56331bca3533"><div class="ttname"><a href="dbprint_8c.html#a36d9f16a26ecfc8540df56331bca3533">uint32_to_charHex</a></div><div class="ttdeci">static void uint32_to_charHex(char *buf, uint32_t value, bool spacing)</div><div class="ttdoc">Convert a uint32_t value to a hexadecimal char array (string). </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l01063">dbprint.c:1063</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_ac4e78d6ac2e813e06911e463c013d1e8"><div class="ttname"><a href="BG96__at__driver_8c.html#ac4e78d6ac2e813e06911e463c013d1e8">sendPulse</a></div><div class="ttdeci">void sendPulse(uint8_t number, uint8_t pulse)</div><div class="ttdoc">Send current pulses to the cloud using NB-IoT. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00412">BG96_at_driver.c:412</a></div></div>
<div class="ttc" id="dbprint_8c_html_ad6b8e79e52a31b01f5816cdd62fb1746"><div class="ttname"><a href="dbprint_8c.html#ad6b8e79e52a31b01f5816cdd62fb1746">dbprint_color</a></div><div class="ttdeci">void dbprint_color(char *message, dbprint_color_t color)</div><div class="ttdoc">Print a string (char array) to USARTx in a given color. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00423">dbprint.c:423</a></div></div>
<div class="ttc" id="vl53l1__types_8h_html_aba7bc1797add20fe3efdf37ced1182c5"><div class="ttname"><a href="vl53l1__types_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></div><div class="ttdeci">unsigned char uint8_t</div><div class="ttdoc">Typedef defining 8 bit unsigned char type. The developer should modify this to suit the platform bein...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00098">vl53l1_types.h:98</a></div></div>
<div class="ttc" id="BG96__at__driver_8c_html_a765a71bda12e7ca0d67cdae986b7bab2"><div class="ttname"><a href="BG96__at__driver_8c.html#a765a71bda12e7ca0d67cdae986b7bab2">disableEcho</a></div><div class="ttdeci">void disableEcho(void)</div><div class="ttdoc">Disable echo. </div><div class="ttdef"><b>Definition:</b> <a href="BG96__at__driver_8c_source.html#l00592">BG96_at_driver.c:592</a></div></div>
<div class="ttc" id="vl53l1__types_8h_html_a435d1572bf3f880d55459d9805097f62"><div class="ttname"><a href="vl53l1__types_8h.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></div><div class="ttdeci">unsigned int uint32_t</div><div class="ttdoc">Typedef defining 32 bit unsigned int type. The developer should modify this to suit the platform bein...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00078">vl53l1_types.h:78</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d9edf6c004b4a7ff14fe9ae7a92214ee.html">firmware</a></li><li class="navelem"><a class="el" href="dir_9a5a365c58dea0dc152d55f461feaba5.html">EFM32HG222F64_iot-mbbr</a></li><li class="navelem"><a class="el" href="dir_07cf71b65af3d7a9f5557ec1f8ea51c9.html">src</a></li><li class="navelem"><a class="el" href="BG96__at__driver_8c.html">BG96_at_driver.c</a></li>
<li class="footer">Generated on Thu Sep 3 2020 04:44:25 for IoT-MBBR (masterthesis) by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>