Projet S5 Info / Mbed 2 deprecated Projet_S5

Dependencies:   mbed PowerControl

Fork of Projet_S5 by Jonathan Tousignant

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?

UserRevisionLine numberNew 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 }