-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathprocess.h
95 lines (83 loc) · 2.46 KB
/
process.h
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
/*
~~~~~~~
uvr2web
~~~~~~~
© Elias Kuiter 2013 (http://elias-kuiter.de)
process.h:
Processing of saved data frames
*/
namespace Process {
// ein Datenrahmen hat 64 Datenbytes + SYNC, also 64 * (8+1+1) + 16 = 656
// 656 * 2 = 1312 (das Doppelte eines Datenrahmens wird gespeichert,
// so dass ein ganzer Datenrahmen da ist)
// one data frame has 64 data bytes + SYNC, so 64 * (8+1+1) + 16 = 656
// 656 * 2 = 1312 (twice as much as a data frame is saved
// so there's one complete data frame
const int bit_number = (64 * (8 + 1 + 1) + 16) * 2 + additionalBits;
byte data_bits[bit_number / 8 + 1]; // jedes Bit wird in eine Bitmap einsortiert // every bit gets sorted into a bitmap
int start_bit; // erstes Bit des Datenrahmens // first bit of data frame
// Sensortypen
// sensor types
#define UNUSED 0b000
#define DIGITAL 0b001
#define TEMP 0b010
#define VOLUME_FLOW 0b011
#define RAYS 0b110
#define ROOM 0b111
// Modi für Raumsensor
// room sensor modes
#define AUTO 0b00
#define NORMAL 0b01
#define LOWER 0b10
#define STANDBY 0b11
// Zeitstempel der Regelung
// heating control timestamp
typedef struct {
byte minute;
byte hour;
byte day;
byte month;
int year;
boolean summer_time;
}
timestamp_t;
timestamp_t timestamp;
// sensor
typedef struct {
byte number;
byte type;
byte mode;
boolean invalid;
float value;
}
sensor_t;
sensor_t sensor;
// Wärmemengenzähler
// heat meter
typedef struct {
byte number;
boolean invalid;
float current_power;
float kwh;
int mwh;
}
heat_meter_t;
heat_meter_t heat_meter;
// Datenrahmen
// data frame
void start(); // Datenrahmen auswerten
boolean prepare(); // Datenrahmen vorbereiten
int analyze(); // Datenrahmen analysieren
void invert(); // Datenrahmen invertieren
byte read_bit(int pos); // aus Bitmap lesen // read from bitmap
void write_bit(int pos, byte set); // Bitmap beschreiben // write to bitmap
void trim(); // Datenrahmen in Bitmap schreiben // remove start and stop bits
boolean check_device(); // Datenrahmen überprüfen // verify data frame
// Informationen auslesen
// readout information
void fetch_timestamp(); // Zeitstempel
void fetch_sensor(int sensor); // Sensor
void fetch_heat_meter(int heat_meter); // Wärmemengenzähler
boolean fetch_output(int output); // Ausgang
int fetch_speed_step(int output); // Drehzahlstufe
}