Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed PowerControl
Fork of Projet_S5 by
analyzer.cpp@14:67f44035ef61, 2014-04-13 (annotated)
- Committer:
- trixrabbit
- Date:
- Sun Apr 13 19:13:28 2014 +0000
- Revision:
- 14:67f44035ef61
- Parent:
- 12:16390cea4420
- Child:
- 15:337d1c619d64
plus de printf
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joGenie | 9:40197c24ce2c | 1 | /*! |
joGenie | 9:40197c24ce2c | 2 | * \file analyzer.cpp |
joGenie | 9:40197c24ce2c | 3 | * \brief Class that analyzes the mouvement in C and C++ |
joGenie | 9:40197c24ce2c | 4 | * \author Equipe P02 |
joGenie | 9:40197c24ce2c | 5 | * \version 0.1 |
joGenie | 9:40197c24ce2c | 6 | * \date 02/04/2014 |
joGenie | 9:40197c24ce2c | 7 | */ |
joGenie | 9:40197c24ce2c | 8 | |
joGenie | 3:17a4ceb30535 | 9 | #include "analyzer.h" |
joGenie | 8:9bf215a760f5 | 10 | |
joGenie | 3:17a4ceb30535 | 11 | Analyzer::Analyzer() |
joGenie | 8:9bf215a760f5 | 12 | { |
joGenie | 8:9bf215a760f5 | 13 | } |
joGenie | 8:9bf215a760f5 | 14 | |
joGenie | 3:17a4ceb30535 | 15 | Analyzer::~Analyzer() |
joGenie | 8:9bf215a760f5 | 16 | { |
joGenie | 8:9bf215a760f5 | 17 | allMouvement.clear(); |
joGenie | 8:9bf215a760f5 | 18 | } |
joGenie | 11:9c0786fc06b4 | 19 | |
joGenie | 11:9c0786fc06b4 | 20 | void Analyzer::initialize() |
joGenie | 11:9c0786fc06b4 | 21 | { |
joGenie | 11:9c0786fc06b4 | 22 | DigitalOut reset(p8); |
joGenie | 11:9c0786fc06b4 | 23 | reset = 0; |
joGenie | 11:9c0786fc06b4 | 24 | wait(0.4); |
joGenie | 11:9c0786fc06b4 | 25 | reset = 1; |
joGenie | 11:9c0786fc06b4 | 26 | |
joGenie | 12:16390cea4420 | 27 | trame = new Trame(p13, p14); |
joGenie | 11:9c0786fc06b4 | 28 | |
joGenie | 12:16390cea4420 | 29 | allMouvement[0x0002] = new Mouvement(0x0002, 0x0002, "Z vertical, vers le ciel", hand); |
joGenie | 12:16390cea4420 | 30 | allMouvement[0x0003] = new Mouvement(0x0003, 0x0003, "Z vertical, vers le ciel INVERSE", hand); |
joGenie | 12:16390cea4420 | 31 | allMouvement[0x0004] = new Mouvement(0x0004, 0x0004, "Z vertical, vers le sol", hand); |
joGenie | 12:16390cea4420 | 32 | allMouvement[0x0005] = new Mouvement(0x0005, 0x0005, "Z vertical, vers le sol INVERSE", hand); |
joGenie | 12:16390cea4420 | 33 | allMouvement[0x0006] = new Mouvement(0x0006, 0x0006, "Z horizontal", hand); |
joGenie | 12:16390cea4420 | 34 | allMouvement[0x0007] = new Mouvement(0x0007, 0x0007, "Z horizontal INVERSE", hand); |
joGenie | 11:9c0786fc06b4 | 35 | |
joGenie | 12:16390cea4420 | 36 | allMouvement[0x0020] = new Mouvement(0x0020, 0x0020, "X vertical, vers le ciel", hand); |
joGenie | 12:16390cea4420 | 37 | allMouvement[0x0030] = new Mouvement(0x0030, 0x0030, "X vertical, vers le ciel INVERSE", hand); |
joGenie | 12:16390cea4420 | 38 | allMouvement[0x0040] = new Mouvement(0x0040, 0x0040, "X vertical, vers le sol", hand); |
joGenie | 12:16390cea4420 | 39 | allMouvement[0x0050] = new Mouvement(0x0050, 0x0050, "X vertical, vers le sol INVERSE", hand); |
joGenie | 12:16390cea4420 | 40 | allMouvement[0x0060] = new Mouvement(0x0060, 0x0060, "X horizontal", hand); |
joGenie | 12:16390cea4420 | 41 | allMouvement[0x0070] = new Mouvement(0x0070, 0x0070, "X horizontal INVERSE", hand); |
joGenie | 11:9c0786fc06b4 | 42 | |
joGenie | 12:16390cea4420 | 43 | allMouvement[0x0200] = new Mouvement(0x0200, 0x0200, "Y vertical, vers le ciel", hand); |
joGenie | 12:16390cea4420 | 44 | allMouvement[0x0300] = new Mouvement(0x0300, 0x0300, "Y vertical, vers le ciel INVERSE", hand); |
joGenie | 12:16390cea4420 | 45 | allMouvement[0x0400] = new Mouvement(0x0400, 0x0400, "Y vertical, vers le sol", hand); |
joGenie | 12:16390cea4420 | 46 | allMouvement[0x0500] = new Mouvement(0x0500, 0x0500, "Y vertical, vers le sol INVERSE", hand); |
joGenie | 12:16390cea4420 | 47 | allMouvement[0x0600] = new Mouvement(0x0600, 0x0600, "Y horizontal", hand); |
joGenie | 12:16390cea4420 | 48 | allMouvement[0x0700] = new Mouvement(0x0700, 0x0700, "Y horizontal INVERSE", hand); |
joGenie | 11:9c0786fc06b4 | 49 | } |
joGenie | 8:9bf215a760f5 | 50 | |
joGenie | 6:ef8bfca9e69b | 51 | void Analyzer::setMinMax(signed char* values) |
joGenie | 3:17a4ceb30535 | 52 | { |
joGenie | 3:17a4ceb30535 | 53 | x.setMinMax(values[0]); |
joGenie | 3:17a4ceb30535 | 54 | y.setMinMax(values[1]); |
joGenie | 3:17a4ceb30535 | 55 | z.setMinMax(values[2]); |
joGenie | 3:17a4ceb30535 | 56 | } |
joGenie | 8:9bf215a760f5 | 57 | |
joGenie | 5:6313ddd0dfdd | 58 | void Analyzer::checkMouvement() |
joGenie | 5:6313ddd0dfdd | 59 | { |
joGenie | 8:9bf215a760f5 | 60 | bool deplacement[3] = {0}; |
joGenie | 8:9bf215a760f5 | 61 | int code_mouvement = 0; |
joGenie | 8:9bf215a760f5 | 62 | |
joGenie | 9:40197c24ce2c | 63 | deplacement[0] = x.isMouvement(); |
joGenie | 9:40197c24ce2c | 64 | deplacement[1] = y.isMouvement(); |
joGenie | 9:40197c24ce2c | 65 | deplacement[2] = z.isMouvement(); |
joGenie | 8:9bf215a760f5 | 66 | |
joGenie | 8:9bf215a760f5 | 67 | |
joGenie | 8:9bf215a760f5 | 68 | // Mouvement en x |
joGenie | 8:9bf215a760f5 | 69 | if(deplacement[0]) |
joGenie | 8:9bf215a760f5 | 70 | { |
joGenie | 8:9bf215a760f5 | 71 | if(x.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 72 | { |
joGenie | 11:9c0786fc06b4 | 73 | code_mouvement |= 0x1 << 9; // 0010 |
joGenie | 8:9bf215a760f5 | 74 | } |
joGenie | 8:9bf215a760f5 | 75 | else if(x.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 76 | { |
joGenie | 11:9c0786fc06b4 | 77 | code_mouvement |= 0x2 << 9; // 0100 |
joGenie | 8:9bf215a760f5 | 78 | } |
joGenie | 8:9bf215a760f5 | 79 | else |
joGenie | 8:9bf215a760f5 | 80 | { |
joGenie | 11:9c0786fc06b4 | 81 | code_mouvement |= 0x3 << 9; // 0110 |
joGenie | 8:9bf215a760f5 | 82 | } |
joGenie | 8:9bf215a760f5 | 83 | |
joGenie | 8:9bf215a760f5 | 84 | if(!x.sens) |
joGenie | 8:9bf215a760f5 | 85 | { |
joGenie | 11:9c0786fc06b4 | 86 | code_mouvement |= 0x1 << 8; // 0xx1 |
joGenie | 8:9bf215a760f5 | 87 | } |
joGenie | 8:9bf215a760f5 | 88 | } |
joGenie | 5:6313ddd0dfdd | 89 | |
joGenie | 8:9bf215a760f5 | 90 | // Mouvement en y |
joGenie | 8:9bf215a760f5 | 91 | if(deplacement[1]) |
joGenie | 8:9bf215a760f5 | 92 | { |
joGenie | 8:9bf215a760f5 | 93 | if(y.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 94 | { |
joGenie | 11:9c0786fc06b4 | 95 | code_mouvement |= 0x1 << 5; // 0xxx 0010 |
joGenie | 8:9bf215a760f5 | 96 | } |
joGenie | 8:9bf215a760f5 | 97 | else if(y.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 98 | { |
joGenie | 11:9c0786fc06b4 | 99 | code_mouvement |= 0x2 << 5; // 0xxx 0100 |
joGenie | 8:9bf215a760f5 | 100 | } |
joGenie | 8:9bf215a760f5 | 101 | else |
joGenie | 8:9bf215a760f5 | 102 | { |
joGenie | 11:9c0786fc06b4 | 103 | code_mouvement |= 0x3 << 5; // 0xxx 0110 |
joGenie | 8:9bf215a760f5 | 104 | } |
joGenie | 8:9bf215a760f5 | 105 | |
joGenie | 8:9bf215a760f5 | 106 | if(!y.sens) |
joGenie | 8:9bf215a760f5 | 107 | { |
joGenie | 11:9c0786fc06b4 | 108 | code_mouvement |= 0x1 << 4; // 0xxx 0yy1 |
joGenie | 8:9bf215a760f5 | 109 | } |
joGenie | 8:9bf215a760f5 | 110 | } |
joGenie | 8:9bf215a760f5 | 111 | |
joGenie | 8:9bf215a760f5 | 112 | // Mouvement en z |
joGenie | 8:9bf215a760f5 | 113 | if(deplacement[2]) |
joGenie | 8:9bf215a760f5 | 114 | { |
joGenie | 8:9bf215a760f5 | 115 | if(z.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 116 | { |
joGenie | 11:9c0786fc06b4 | 117 | code_mouvement |= 1 << 1; // 0xxx 0yyy 0010 |
joGenie | 8:9bf215a760f5 | 118 | } |
joGenie | 8:9bf215a760f5 | 119 | else if(z.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 120 | { |
joGenie | 11:9c0786fc06b4 | 121 | code_mouvement |= 2 << 1; // 0xxx 0yyy 0100 |
joGenie | 8:9bf215a760f5 | 122 | } |
joGenie | 8:9bf215a760f5 | 123 | else |
joGenie | 8:9bf215a760f5 | 124 | { |
joGenie | 11:9c0786fc06b4 | 125 | code_mouvement |= 3 << 1; // 0xxx 0yyy 0110 |
joGenie | 8:9bf215a760f5 | 126 | } |
joGenie | 8:9bf215a760f5 | 127 | |
joGenie | 8:9bf215a760f5 | 128 | if(!z.sens) |
joGenie | 8:9bf215a760f5 | 129 | { |
joGenie | 11:9c0786fc06b4 | 130 | code_mouvement |= 1 << 0; // 0xxx 0yyy 0zz1 |
joGenie | 8:9bf215a760f5 | 131 | } |
joGenie | 8:9bf215a760f5 | 132 | } |
joGenie | 8:9bf215a760f5 | 133 | |
joGenie | 11:9c0786fc06b4 | 134 | map<int,Mouvement*>::iterator it; |
joGenie | 11:9c0786fc06b4 | 135 | it = allMouvement.find(code_mouvement); |
trixrabbit | 14:67f44035ef61 | 136 | |
joGenie | 12:16390cea4420 | 137 | if(it != allMouvement.end()) |
joGenie | 12:16390cea4420 | 138 | it->second->sendData(trame); |
joGenie | 7:89be89aeed5a | 139 | } |
joGenie | 12:16390cea4420 | 140 | |
joGenie | 7:89be89aeed5a | 141 | void Analyzer::setInitial(signed char* init) |
joGenie | 7:89be89aeed5a | 142 | { |
joGenie | 7:89be89aeed5a | 143 | x.setInitial(init[0]); |
joGenie | 7:89be89aeed5a | 144 | y.setInitial(init[1]); |
joGenie | 7:89be89aeed5a | 145 | z.setInitial(init[2]); |
joGenie | 5:6313ddd0dfdd | 146 | } |
joGenie | 8:9bf215a760f5 | 147 | |
joGenie | 3:17a4ceb30535 | 148 | extern "C" void *Analyzer_C_new() |
joGenie | 3:17a4ceb30535 | 149 | { |
joGenie | 3:17a4ceb30535 | 150 | return new Analyzer(); |
joGenie | 3:17a4ceb30535 | 151 | } |
joGenie | 8:9bf215a760f5 | 152 | |
joGenie | 3:17a4ceb30535 | 153 | extern "C" void Analyzer_C_delete(void *analyzer) |
joGenie | 3:17a4ceb30535 | 154 | { |
joGenie | 3:17a4ceb30535 | 155 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 3:17a4ceb30535 | 156 | delete an; |
joGenie | 3:17a4ceb30535 | 157 | } |
joGenie | 11:9c0786fc06b4 | 158 | |
joGenie | 11:9c0786fc06b4 | 159 | extern "C" void Analyzer_C_Initialize(void *analyzer) |
joGenie | 11:9c0786fc06b4 | 160 | { |
joGenie | 11:9c0786fc06b4 | 161 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 11:9c0786fc06b4 | 162 | an->initialize(); |
joGenie | 11:9c0786fc06b4 | 163 | } |
joGenie | 8:9bf215a760f5 | 164 | |
joGenie | 6:ef8bfca9e69b | 165 | extern "C" void Analyzer_C_setMinMax(signed char* values, void *analyzer) |
joGenie | 3:17a4ceb30535 | 166 | { |
joGenie | 3:17a4ceb30535 | 167 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 3:17a4ceb30535 | 168 | an->setMinMax(values); |
joGenie | 5:6313ddd0dfdd | 169 | } |
joGenie | 8:9bf215a760f5 | 170 | |
joGenie | 7:89be89aeed5a | 171 | extern "C" void Analyzer_C_setInitial(signed char* init, void *analyzer) |
joGenie | 7:89be89aeed5a | 172 | { |
joGenie | 7:89be89aeed5a | 173 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 7:89be89aeed5a | 174 | an->setInitial(init); |
joGenie | 7:89be89aeed5a | 175 | } |
joGenie | 8:9bf215a760f5 | 176 | |
joGenie | 5:6313ddd0dfdd | 177 | extern "C" void Analyzer_C_checkMouvement(void *analyzer) |
joGenie | 5:6313ddd0dfdd | 178 | { |
joGenie | 5:6313ddd0dfdd | 179 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 5:6313ddd0dfdd | 180 | an->checkMouvement(); |
joGenie | 8:9bf215a760f5 | 181 | } |
joGenie | 12:16390cea4420 | 182 | |
joGenie | 12:16390cea4420 | 183 | extern "C" void Analyzer_C_setHand(bool h, void *analyzer) |
joGenie | 12:16390cea4420 | 184 | { |
joGenie | 12:16390cea4420 | 185 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 12:16390cea4420 | 186 | an->setHand(h); |
joGenie | 12:16390cea4420 | 187 | } |