roverSTM  UM2 2013
Projet M1 Navarro Benjamin
 All Classes Files Functions Groups Pages
registers.h
1 /*
2  * registers.h
3  *
4  * Created on: 9 fŽvr. 2013
5  * Author: Benjamin Navarro
6  */
7 
8 #ifndef REGISTERS_H_
9 #define REGISTERS_H_
10 
11 #include "stm32f4xx.h"
12 #include "nmea/nmea.h"
13 
14 // Variables addresses, not used, for reference only
15 typedef enum _registersAdd {
16  USDist = 0x00,
17  GPSLat = 0x02,
18  GPSLon = 0x0A,
19  Speed = 0x12,
20  Direction = 0x13,
21  GPSSignal = 0x17,
22  GPSFix = 0x18,
23  SatInView = 0x19,
24  SatInUse = 0x1A,
25  Bearing = 0x1B,
26  Roll = 0x1D,
27  Pitch = 0x1F
28 } registersAdd;
29 
30 extern uint16_t US_Distance;
31 extern int16_t heading;
32 extern int16_t roll;
33 extern int16_t pitch;
34 extern nmeaINFO GPSInfo;
35 extern nmeaPOS GPSPos;
36 extern int8_t speed;
37 extern float direction;
38 
39 extern uint8_t* register_map[];
40 
41 // Union of a float and a byte array
42 union floatUint8_t {
43  float value;
44  uint8_t bytes[sizeof(float)];
45 };
46 
47 // Union of a double and a byte array
49  double value;
50  uint8_t bytes[sizeof(double)];
51 };
52 
54 public:
55  registerOperations(uint8_t** regs = 0);
56 
57  void setRegisterMap(uint8_t** newregs);
58 
59  void setRegister(uint8_t address, uint8_t value);
60  void setRegister(uint8_t address, uint16_t value);
61  void setRegister(uint8_t address, uint32_t value);
62  void setRegister(uint8_t address, uint64_t value);
63  void setRegister(uint8_t address, int8_t value);
64  void setRegister(uint8_t address, int16_t value);
65  void setRegister(uint8_t address, int32_t value);
66  void setRegister(uint8_t address, int64_t value);
67  void setRegister(uint8_t address, float value);
68  void setRegister(uint8_t address, double value);
69 
70  uint8_t getRegister8(uint8_t address);
71  uint16_t getRegister16(uint8_t address);
72  uint32_t getRegister32(uint8_t address);
73  uint64_t getRegister64(uint8_t address);
74  int8_t getRegister8s(uint8_t address);
75  int16_t getRegister16s(uint8_t address);
76  int32_t getRegister32s(uint8_t address);
77  int64_t getRegister64s(uint8_t address);
78  float getRegisterFloat(uint8_t address);
79  double getRegisterDouble(uint8_t address);
80 
81 private:
82  uint8_t** registers;
83 };
84 
85 
86 #endif /* REGISTERS_H_ */