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@10:61b4d6c67dd7, 2014-04-07 (annotated)
- Committer:
- joGenie
- Date:
- Mon Apr 07 18:33:53 2014 +0000
- Revision:
- 10:61b4d6c67dd7
- Parent:
- 9:40197c24ce2c
- Child:
- 11:9c0786fc06b4
With xbee
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 | 10:61b4d6c67dd7 | 13 | string pan("ACE"); |
joGenie | 10:61b4d6c67dd7 | 14 | |
joGenie | 10:61b4d6c67dd7 | 15 | trame = new Trame(p13, p14); |
joGenie | 10:61b4d6c67dd7 | 16 | trame->sendATCommand("ID", pan.c_str(), pan.length());// Set le PANID selon le fichier de config |
joGenie | 10:61b4d6c67dd7 | 17 | trame->sendATCommand("WR", 0, 0); // Écrit la valeur du PANID en mémoire |
joGenie | 10:61b4d6c67dd7 | 18 | trame->sendATCommand("AC", 0, 0); // Applique les changements effectués |
joGenie | 10:61b4d6c67dd7 | 19 | |
joGenie | 10:61b4d6c67dd7 | 20 | /*allMouvement[0x0002] = new Mouvement(0x0002, 0x0002, "Z vertical, main face au ciel"); |
joGenie | 8:9bf215a760f5 | 21 | allMouvement[0x0003] = new Mouvement(0x0003, 0x0003, "Z vertical, main face au ciel INVERSE"); |
joGenie | 8:9bf215a760f5 | 22 | allMouvement[0x0004] = new Mouvement(0x0004, 0x0004, "Z vertical, main face au sol"); |
joGenie | 8:9bf215a760f5 | 23 | allMouvement[0x0005] = new Mouvement(0x0005, 0x0005, "Z vertical, main face au sol INVERSE"); |
joGenie | 8:9bf215a760f5 | 24 | allMouvement[0x0006] = new Mouvement(0x0006, 0x0006, "Z horizontal"); |
joGenie | 8:9bf215a760f5 | 25 | allMouvement[0x0007] = new Mouvement(0x0007, 0x0007, "Z horizontal INVERSE"); |
joGenie | 3:17a4ceb30535 | 26 | |
joGenie | 8:9bf215a760f5 | 27 | allMouvement[0x0020] = new Mouvement(0x0020, 0x0020, "X vertical, main face au ciel"); |
joGenie | 8:9bf215a760f5 | 28 | allMouvement[0x0030] = new Mouvement(0x0030, 0x0030, "X vertical, main face au ciel INVERSE"); |
joGenie | 8:9bf215a760f5 | 29 | allMouvement[0x0040] = new Mouvement(0x0040, 0x0040, "X vertical, main face au sol"); |
joGenie | 8:9bf215a760f5 | 30 | allMouvement[0x0050] = new Mouvement(0x0050, 0x0050, "X vertical, main face au sol INVERSE"); |
joGenie | 8:9bf215a760f5 | 31 | allMouvement[0x0060] = new Mouvement(0x0060, 0x0060, "X horizontal"); |
joGenie | 8:9bf215a760f5 | 32 | allMouvement[0x0070] = new Mouvement(0x0070, 0x0070, "X horizontal INVERSE"); |
joGenie | 8:9bf215a760f5 | 33 | |
joGenie | 8:9bf215a760f5 | 34 | allMouvement[0x0200] = new Mouvement(0x0200, 0x0200, "Y vertical, main face au ciel"); |
joGenie | 8:9bf215a760f5 | 35 | allMouvement[0x0300] = new Mouvement(0x0300, 0x0300, "Y vertical, main face au ciel INVERSE"); |
joGenie | 8:9bf215a760f5 | 36 | allMouvement[0x0400] = new Mouvement(0x0400, 0x0400, "Y vertical, main face au sol"); |
joGenie | 8:9bf215a760f5 | 37 | allMouvement[0x0500] = new Mouvement(0x0500, 0x0500, "Y vertical, main face au sol INVERSE"); |
joGenie | 8:9bf215a760f5 | 38 | allMouvement[0x0600] = new Mouvement(0x0600, 0x0600, "Y horizontal"); |
joGenie | 10:61b4d6c67dd7 | 39 | allMouvement[0x0700] = new Mouvement(0x0700, 0x0700, "Y horizontal INVERSE");*/ |
joGenie | 8:9bf215a760f5 | 40 | } |
joGenie | 8:9bf215a760f5 | 41 | |
joGenie | 3:17a4ceb30535 | 42 | Analyzer::~Analyzer() |
joGenie | 8:9bf215a760f5 | 43 | { |
joGenie | 8:9bf215a760f5 | 44 | allMouvement.clear(); |
joGenie | 8:9bf215a760f5 | 45 | } |
joGenie | 8:9bf215a760f5 | 46 | |
joGenie | 6:ef8bfca9e69b | 47 | void Analyzer::setMinMax(signed char* values) |
joGenie | 3:17a4ceb30535 | 48 | { |
joGenie | 3:17a4ceb30535 | 49 | x.setMinMax(values[0]); |
joGenie | 3:17a4ceb30535 | 50 | y.setMinMax(values[1]); |
joGenie | 3:17a4ceb30535 | 51 | z.setMinMax(values[2]); |
joGenie | 3:17a4ceb30535 | 52 | } |
joGenie | 8:9bf215a760f5 | 53 | |
joGenie | 5:6313ddd0dfdd | 54 | void Analyzer::checkMouvement() |
joGenie | 5:6313ddd0dfdd | 55 | { |
joGenie | 8:9bf215a760f5 | 56 | bool deplacement[3] = {0}; |
joGenie | 8:9bf215a760f5 | 57 | int code_mouvement = 0; |
joGenie | 8:9bf215a760f5 | 58 | |
joGenie | 9:40197c24ce2c | 59 | deplacement[0] = x.isMouvement(); |
joGenie | 9:40197c24ce2c | 60 | deplacement[1] = y.isMouvement(); |
joGenie | 9:40197c24ce2c | 61 | deplacement[2] = z.isMouvement(); |
joGenie | 8:9bf215a760f5 | 62 | |
joGenie | 8:9bf215a760f5 | 63 | Serial pc(USBTX, USBRX); |
joGenie | 8:9bf215a760f5 | 64 | |
joGenie | 8:9bf215a760f5 | 65 | // Mouvement en x |
joGenie | 8:9bf215a760f5 | 66 | if(deplacement[0]) |
joGenie | 8:9bf215a760f5 | 67 | { |
joGenie | 8:9bf215a760f5 | 68 | if(x.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 69 | { |
joGenie | 8:9bf215a760f5 | 70 | code_mouvement = 0x1 << 9; // 0010 |
joGenie | 8:9bf215a760f5 | 71 | } |
joGenie | 8:9bf215a760f5 | 72 | else if(x.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 73 | { |
joGenie | 8:9bf215a760f5 | 74 | code_mouvement = 0x2 << 9; // 0100 |
joGenie | 8:9bf215a760f5 | 75 | } |
joGenie | 8:9bf215a760f5 | 76 | else |
joGenie | 8:9bf215a760f5 | 77 | { |
joGenie | 8:9bf215a760f5 | 78 | code_mouvement = 0x3 << 9; // 0110 |
joGenie | 8:9bf215a760f5 | 79 | } |
joGenie | 8:9bf215a760f5 | 80 | |
joGenie | 8:9bf215a760f5 | 81 | if(!x.sens) |
joGenie | 8:9bf215a760f5 | 82 | { |
joGenie | 8:9bf215a760f5 | 83 | code_mouvement = 0x1 << 8; // 0xx1 |
joGenie | 8:9bf215a760f5 | 84 | } |
joGenie | 8:9bf215a760f5 | 85 | } |
joGenie | 5:6313ddd0dfdd | 86 | |
joGenie | 8:9bf215a760f5 | 87 | // Mouvement en y |
joGenie | 8:9bf215a760f5 | 88 | if(deplacement[1]) |
joGenie | 8:9bf215a760f5 | 89 | { |
joGenie | 8:9bf215a760f5 | 90 | if(y.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 91 | { |
joGenie | 8:9bf215a760f5 | 92 | code_mouvement = 0x1 << 5; // 0xxx 0010 |
joGenie | 8:9bf215a760f5 | 93 | } |
joGenie | 8:9bf215a760f5 | 94 | else if(y.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 95 | { |
joGenie | 8:9bf215a760f5 | 96 | code_mouvement = 0x2 << 5; // 0xxx 0100 |
joGenie | 8:9bf215a760f5 | 97 | } |
joGenie | 8:9bf215a760f5 | 98 | else |
joGenie | 8:9bf215a760f5 | 99 | { |
joGenie | 8:9bf215a760f5 | 100 | code_mouvement = 0x3 << 5; // 0xxx 0110 |
joGenie | 8:9bf215a760f5 | 101 | } |
joGenie | 8:9bf215a760f5 | 102 | |
joGenie | 8:9bf215a760f5 | 103 | if(!y.sens) |
joGenie | 8:9bf215a760f5 | 104 | { |
joGenie | 8:9bf215a760f5 | 105 | code_mouvement = 0x1 << 4; // 0xxx 0yy1 |
joGenie | 8:9bf215a760f5 | 106 | } |
joGenie | 8:9bf215a760f5 | 107 | } |
joGenie | 8:9bf215a760f5 | 108 | |
joGenie | 8:9bf215a760f5 | 109 | // Mouvement en z |
joGenie | 8:9bf215a760f5 | 110 | if(deplacement[2]) |
joGenie | 8:9bf215a760f5 | 111 | { |
joGenie | 8:9bf215a760f5 | 112 | if(z.initial > SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 113 | { |
joGenie | 8:9bf215a760f5 | 114 | code_mouvement = 1 << 1; // 0xxx 0yyy 0010 |
joGenie | 8:9bf215a760f5 | 115 | } |
joGenie | 8:9bf215a760f5 | 116 | else if(z.initial < -SEUIL_DETECTION) |
joGenie | 8:9bf215a760f5 | 117 | { |
joGenie | 8:9bf215a760f5 | 118 | code_mouvement = 2 << 1; // 0xxx 0yyy 0100 |
joGenie | 8:9bf215a760f5 | 119 | } |
joGenie | 8:9bf215a760f5 | 120 | else |
joGenie | 8:9bf215a760f5 | 121 | { |
joGenie | 8:9bf215a760f5 | 122 | code_mouvement = 3 << 1; // 0xxx 0yyy 0110 |
joGenie | 8:9bf215a760f5 | 123 | } |
joGenie | 8:9bf215a760f5 | 124 | |
joGenie | 8:9bf215a760f5 | 125 | if(!z.sens) |
joGenie | 8:9bf215a760f5 | 126 | { |
joGenie | 8:9bf215a760f5 | 127 | code_mouvement = 1 << 0; // 0xxx 0yyy 0zz1 |
joGenie | 8:9bf215a760f5 | 128 | } |
joGenie | 8:9bf215a760f5 | 129 | } |
joGenie | 8:9bf215a760f5 | 130 | |
joGenie | 8:9bf215a760f5 | 131 | pc.printf("\n\r mouvement: %s, %s, %s", deplacement[0] ? "vrai" : "faux", |
joGenie | 8:9bf215a760f5 | 132 | deplacement[1] ? "vrai" : "faux", |
joGenie | 8:9bf215a760f5 | 133 | deplacement[2] ? "vrai" : "faux"); |
joGenie | 8:9bf215a760f5 | 134 | // pc.printf("\n\rInit: %i, min: %i, max: %i, sens: %s", x.initial, x.min, x.max, x.sens ? "acceleration":"deceleration"); |
joGenie | 8:9bf215a760f5 | 135 | // pc.printf("\n\rInit: %i, min: %i, max: %i, sens: %s", y.initial, y.min, y.max, y.sens ? "acceleration":"deceleration"); |
joGenie | 8:9bf215a760f5 | 136 | // pc.printf("\n\rInit: %i, min: %i, max: %i, sens: %s", z.initial, z.min, z.max, z.sens ? "acceleration":"deceleration"); |
joGenie | 7:89be89aeed5a | 137 | } |
joGenie | 8:9bf215a760f5 | 138 | |
joGenie | 7:89be89aeed5a | 139 | void Analyzer::setInitial(signed char* init) |
joGenie | 7:89be89aeed5a | 140 | { |
joGenie | 7:89be89aeed5a | 141 | x.setInitial(init[0]); |
joGenie | 7:89be89aeed5a | 142 | y.setInitial(init[1]); |
joGenie | 7:89be89aeed5a | 143 | z.setInitial(init[2]); |
joGenie | 5:6313ddd0dfdd | 144 | } |
joGenie | 8:9bf215a760f5 | 145 | |
joGenie | 3:17a4ceb30535 | 146 | extern "C" void *Analyzer_C_new() |
joGenie | 3:17a4ceb30535 | 147 | { |
joGenie | 3:17a4ceb30535 | 148 | return new Analyzer(); |
joGenie | 3:17a4ceb30535 | 149 | } |
joGenie | 8:9bf215a760f5 | 150 | |
joGenie | 3:17a4ceb30535 | 151 | extern "C" void Analyzer_C_delete(void *analyzer) |
joGenie | 3:17a4ceb30535 | 152 | { |
joGenie | 3:17a4ceb30535 | 153 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 3:17a4ceb30535 | 154 | delete an; |
joGenie | 3:17a4ceb30535 | 155 | } |
joGenie | 8:9bf215a760f5 | 156 | |
joGenie | 6:ef8bfca9e69b | 157 | extern "C" void Analyzer_C_setMinMax(signed char* values, void *analyzer) |
joGenie | 3:17a4ceb30535 | 158 | { |
joGenie | 3:17a4ceb30535 | 159 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 3:17a4ceb30535 | 160 | an->setMinMax(values); |
joGenie | 5:6313ddd0dfdd | 161 | } |
joGenie | 8:9bf215a760f5 | 162 | |
joGenie | 7:89be89aeed5a | 163 | extern "C" void Analyzer_C_setInitial(signed char* init, void *analyzer) |
joGenie | 7:89be89aeed5a | 164 | { |
joGenie | 7:89be89aeed5a | 165 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 7:89be89aeed5a | 166 | an->setInitial(init); |
joGenie | 7:89be89aeed5a | 167 | } |
joGenie | 8:9bf215a760f5 | 168 | |
joGenie | 5:6313ddd0dfdd | 169 | extern "C" void Analyzer_C_checkMouvement(void *analyzer) |
joGenie | 5:6313ddd0dfdd | 170 | { |
joGenie | 5:6313ddd0dfdd | 171 | Analyzer *an = (Analyzer*)analyzer; |
joGenie | 5:6313ddd0dfdd | 172 | an->checkMouvement(); |
joGenie | 8:9bf215a760f5 | 173 | } |