blob: 61687f194278fa17dbe24c09a66b73dcb5a701f1 (
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
|
#ifndef __MODE_H__
#define __MODE_H__
#include "DOGS102.h"
#include "ButtonHandler.h"
#include "mDot.h"
#include "LoRaHandler.h"
#include "GPSPARSER.h"
#include "ISL29011.h"
#include "MMA845x.h"
#include "MPL3115A2.h"
#include "FileName.h"
class Mode {
public:
typedef enum {
single = 0,
sweep
} DataType;
typedef struct {
DataType type;
int32_t index;
bool status;
bool gps_lock;
int32_t gps_sats;
GPSPARSER::longitude gps_longitude;
GPSPARSER::latitude gps_latitude;
int16_t gps_altitude;
struct tm gps_time;
LoRaHandler::LoRaPing ping;
uint8_t data_rate;
uint32_t power;
} DataItem;
typedef struct {
MMA845x_DATA accel_data;
MPL3115A2_DATA baro_data;
uint16_t lux_data;
uint32_t pressure;
} SensorItem;
Mode(DOGS102* lcd, ButtonHandler* buttons, mDot* dot, LoRaHandler* lora, GPSPARSER* gps);
~Mode();
virtual bool start() = 0;
protected:
bool deleteDataFile();
bool appendDataFile(const DataItem& data);
void updateData(DataItem& data, DataType type, bool status);
uint32_t getIndex(DataType type);
std::vector<uint8_t> formatSurveyData(DataItem& data);
std::vector<uint8_t> formatSensorData(SensorItem& data);
DOGS102* _lcd;
ButtonHandler* _buttons;
mDot* _dot;
LoRaHandler* _lora;
GPSPARSER* _gps;
osThreadId _main_id;
uint32_t _index;
uint8_t _band;
uint8_t _sub_band;
uint8_t _data_rate;
uint8_t _power;
uint32_t _next_tx;
ButtonHandler::ButtonEvent _be;
LoRaHandler::LoRaStatus _ls;
LoRaHandler::LoRaPing _ping_result;
uint8_t _state;
bool _send_data;
bool _gps_available;
};
#endif
|