summaryrefslogtreecommitdiff
path: root/Mode/Mode.h
blob: ac5d839088ea279fdb44d9ff056687eaaa54f94d (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
#ifndef __MODE_H__
#define __MODE_H__

#include "DOGS102.h"
#include "ButtonHandler.h"
#include "GPSPARSER.h"

class Mode {
    public:
        typedef enum {
            single = 0,
            sweep
        } DataType;

        typedef struct {
            DataType type;
            int32_t index;
            bool status;
            int32_t lock;
            GPSPARSER::longitude gps_longitude;
            GPSPARSER::latitude gps_latitude;
            int16_t gps_altitude;
            struct tm gps_time;
            int16_t rssi_up;
            int16_t snr_up;
            int16_t rssi_down;
            int16_t snr_down;
            uint8_t data_rate;
            uint8_t power;
        } DataItem;

        Mode(DOGS102* lcd, ButtonHandler* buttons);
        ~Mode();

        virtual bool start() = 0;

    protected:
        bool deleteDataFile();
        bool appendDataFile(const DataItem& data);

        DOGS102* _lcd;
        ButtonHandler* _buttons;
        uint32_t _index;
        osThreadId _main_id;
        static const char* _file_name;
};

#endif