branch for tests with T265

Dependencies:   Lib_Cntrl AHRS Lib_Misc

Committer:
Kiwicjam
Date:
Fri Nov 22 08:40:26 2019 +0000
Revision:
4:dc844fde64d7
Parent:
2:e7874762cc25
Workin set, not running,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb2 2:e7874762cc25 1 /* Copyright (c) 2012 Nick Ryder, University of Oxford
altb2 2:e7874762cc25 2 * nick.ryder@physics.ox.ac.uk
altb2 2:e7874762cc25 3 *
altb2 2:e7874762cc25 4 * MIT License
altb2 2:e7874762cc25 5 *
altb2 2:e7874762cc25 6 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
altb2 2:e7874762cc25 7 * and associated documentation files (the "Software"), to deal in the Software without restriction,
altb2 2:e7874762cc25 8 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
altb2 2:e7874762cc25 9 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
altb2 2:e7874762cc25 10 * furnished to do so, subject to the following conditions:
altb2 2:e7874762cc25 11 *
altb2 2:e7874762cc25 12 * The above copyright notice and this permission notice shall be included in all copies or
altb2 2:e7874762cc25 13 * substantial portions of the Software.
altb2 2:e7874762cc25 14 *
altb2 2:e7874762cc25 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
altb2 2:e7874762cc25 16 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
altb2 2:e7874762cc25 17 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
altb2 2:e7874762cc25 18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
altb2 2:e7874762cc25 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
altb2 2:e7874762cc25 20 */
altb2 2:e7874762cc25 21
altb2 2:e7874762cc25 22
altb2 2:e7874762cc25 23 #include "Pulse.h"
altb2 2:e7874762cc25 24
altb2 2:e7874762cc25 25 PulseInOut::PulseInOut(PinName pin):
altb2 2:e7874762cc25 26 startval(0), pulsetime(), runtime(), io(pin) {
altb2 2:e7874762cc25 27 }
altb2 2:e7874762cc25 28
altb2 2:e7874762cc25 29
altb2 2:e7874762cc25 30 PulseInOut::~PulseInOut() {
altb2 2:e7874762cc25 31 }
altb2 2:e7874762cc25 32
altb2 2:e7874762cc25 33 void PulseInOut::write(int val) {
altb2 2:e7874762cc25 34 io.output();
altb2 2:e7874762cc25 35 io = val;
altb2 2:e7874762cc25 36 }
altb2 2:e7874762cc25 37
altb2 2:e7874762cc25 38 void PulseInOut::write_us(int val, int time) {
altb2 2:e7874762cc25 39 io.output();
altb2 2:e7874762cc25 40 io = val;
altb2 2:e7874762cc25 41 wait_us(time);
altb2 2:e7874762cc25 42 io = !val;
altb2 2:e7874762cc25 43 }
altb2 2:e7874762cc25 44
altb2 2:e7874762cc25 45 int PulseInOut::read_high_us() {
altb2 2:e7874762cc25 46 pulsetime.reset();
altb2 2:e7874762cc25 47 io.input();
altb2 2:e7874762cc25 48 while (io == 1) {
altb2 2:e7874762cc25 49 }
altb2 2:e7874762cc25 50 while (io == 0) {
altb2 2:e7874762cc25 51 }
altb2 2:e7874762cc25 52 pulsetime.start();
altb2 2:e7874762cc25 53 while (io == 1) {
altb2 2:e7874762cc25 54 }
altb2 2:e7874762cc25 55 pulsetime.stop();
altb2 2:e7874762cc25 56 return pulsetime.read_us();
altb2 2:e7874762cc25 57 }
altb2 2:e7874762cc25 58
altb2 2:e7874762cc25 59 int PulseInOut::read_high_us(int timeout) {
altb2 2:e7874762cc25 60 runtime.reset();
altb2 2:e7874762cc25 61 runtime.start();
altb2 2:e7874762cc25 62 pulsetime.reset();
altb2 2:e7874762cc25 63 io.input();
altb2 2:e7874762cc25 64 while (io == 1) {
altb2 2:e7874762cc25 65 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 66 }
altb2 2:e7874762cc25 67 while (io == 0) {
altb2 2:e7874762cc25 68 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 69 }
altb2 2:e7874762cc25 70 pulsetime.start();
altb2 2:e7874762cc25 71 while (io == 1) {
altb2 2:e7874762cc25 72 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 73 }
altb2 2:e7874762cc25 74 pulsetime.stop();
altb2 2:e7874762cc25 75 return pulsetime.read_us();
altb2 2:e7874762cc25 76 }
altb2 2:e7874762cc25 77
altb2 2:e7874762cc25 78 int PulseInOut::read_low_us() {
altb2 2:e7874762cc25 79 pulsetime.reset();
altb2 2:e7874762cc25 80 io.input();
altb2 2:e7874762cc25 81 while (io == 0) {
altb2 2:e7874762cc25 82 }
altb2 2:e7874762cc25 83 while (io == 1) {
altb2 2:e7874762cc25 84 }
altb2 2:e7874762cc25 85 pulsetime.start();
altb2 2:e7874762cc25 86 while (io == 0) {
altb2 2:e7874762cc25 87 }
altb2 2:e7874762cc25 88 pulsetime.stop();
altb2 2:e7874762cc25 89 return pulsetime.read_us();
altb2 2:e7874762cc25 90 }
altb2 2:e7874762cc25 91
altb2 2:e7874762cc25 92 int PulseInOut::read_low_us(int timeout) {
altb2 2:e7874762cc25 93 runtime.reset();
altb2 2:e7874762cc25 94 runtime.start();
altb2 2:e7874762cc25 95 pulsetime.reset();
altb2 2:e7874762cc25 96 io.input();
altb2 2:e7874762cc25 97 while (io == 0) {
altb2 2:e7874762cc25 98 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 99 }
altb2 2:e7874762cc25 100 while (io == 1) {
altb2 2:e7874762cc25 101 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 102 }
altb2 2:e7874762cc25 103 pulsetime.start();
altb2 2:e7874762cc25 104 while (io == 0) {
altb2 2:e7874762cc25 105 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 106 }
altb2 2:e7874762cc25 107 pulsetime.stop();
altb2 2:e7874762cc25 108 return pulsetime.read_us();
altb2 2:e7874762cc25 109 }
altb2 2:e7874762cc25 110
altb2 2:e7874762cc25 111 int PulseInOut::read_us() {
altb2 2:e7874762cc25 112 pulsetime.reset();
altb2 2:e7874762cc25 113 io.input();
altb2 2:e7874762cc25 114 startval = io;
altb2 2:e7874762cc25 115 while (io == startval) {
altb2 2:e7874762cc25 116 }
altb2 2:e7874762cc25 117 pulsetime.start();
altb2 2:e7874762cc25 118 while (io != startval) {
altb2 2:e7874762cc25 119 }
altb2 2:e7874762cc25 120 pulsetime.stop();
altb2 2:e7874762cc25 121 return pulsetime.read_us();
altb2 2:e7874762cc25 122 }
altb2 2:e7874762cc25 123
altb2 2:e7874762cc25 124 int PulseInOut::read_us(int timeout) {
altb2 2:e7874762cc25 125 runtime.reset();
altb2 2:e7874762cc25 126 runtime.start();
altb2 2:e7874762cc25 127 pulsetime.reset();
altb2 2:e7874762cc25 128 io.input();
altb2 2:e7874762cc25 129 startval = io;
altb2 2:e7874762cc25 130 while (io == startval) {
altb2 2:e7874762cc25 131 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 132 }
altb2 2:e7874762cc25 133 pulsetime.start();
altb2 2:e7874762cc25 134 while (io != startval) {
altb2 2:e7874762cc25 135 if (runtime.read_us() > timeout) return -1;
altb2 2:e7874762cc25 136 }
altb2 2:e7874762cc25 137 pulsetime.stop();
altb2 2:e7874762cc25 138 return pulsetime.read_us();
altb2 2:e7874762cc25 139 }