summaryrefslogtreecommitdiff
path: root/i/chuck/src/es/es.hh
blob: 9096dec79c9e60dae52c6ca46ed074f67f285e8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef es_hh
#define es_hh
// es.hh
// chuck - programme du robot 2007 {{{
//
// Copyright (C) 2007 Romain Becquet
//
// Robot APB Team/Efrei 2007.
//        Web: http://assos.efrei.fr/si2e/
//      Email: si2e AT efrei DOT fr
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// }}}

#include "proto/proto.hh"

#include <string>
#include <vector>

class Config;

/// G�re la carte es et ses capteurs et actionneurs
class Es : public Proto::Receiver
{
  public:
    enum ascen{UP,DOWN};
    typedef std::vector<int> Sharps;   
    private:
	// Objet Proto de communication vers la carte es
	Proto proto_;
	// le tty est ...
	std::string tty_;
	/// Syst�me de log
	Log log_;
	/// For LCD communication
	char lcd_mess_char_[16];
	/// Key pressed by the LCD Keyboard
	int lcdKeyPressed_, lcdKeyStat_;
	/// Frontal choc !
	bool front_sensor_;
	/// Ack frequency
	int ackFreq_;
	/// Main stat frequency
	int mainStat_;
	/// Sharps
	Sharps sharps_;
	/// Others module, jack & colour
	bool jackIn_, colorModeBlue_;
	int othersStat_;
	/// Stat of front sensors
	int rvbSniffFrontStat_;
	int thresholdFrontSensors_, thresholdBallSensors_, thresholdHoleSensors_;
	/// Si la turbine avant est allum�
	bool frontTurbineIsFull_;

    public:
	/// Constructeur
	Es (const Config & config);
	/// On attend ...
	bool wait (int timeout = -1);
	/// R�cup�re le File Descriptor
	int getFd (void);
	/// d�finition du receiver::receive
	void receive (char command, const Proto::Frame & frame);
	/// sync..
	bool sync (void);
	/// Charge les param�tre du fichier de config
	void loadConfig (const Config & config);

	/// Initialise les capteurs et actionneurs, reset
	void reset (void);
	/// Stat for the main ()
	void setMainStat (int freq);
	/// Shut up !
	void shutUp (void);
	/// Set frequency of ack
	void setAckStat (int freq);
	/// Get the state of the jack
	bool isJackOut (void);
	/// Get the color mode of the button
	bool isColorModeBlue (void);



	/// Set frequency of jack, selectoul printed out function
	/// Use this function with frequency 0 to disable this stat.
	void setOthersStat (int freq);


	/// Set update frequency of sharps
	void setSharpUpdate (int sharp_mask, int freq);
	/// Set statistics frequency of sharps
	void setSharpStat (int sharp_mask, int freq);
	/// Set configuration of threshold sharps
	void setSharpThreshold (int sharp_num, int threshold_high,
				int threshold_low);

	/// Print something on the LCD (max 32 char)
	void lcdPrint (const std::string &message);
	/// Get the current pressed keys of the LCD
	void lcdGetKey (int freq);
	
	///Activ� l'assenceur
	void bouge_ascenceur(int sens,uint8_t vit,uint8_t tps);
	///rotate Left or Right
	int setcolorsens(void);
	//a faire
	void roulo_roule(int vit);
	
    private:
	/// Update system for one sensor
	void updateAnalysisSensor (int value, int index, int threshold);
};
#endif // es_hh