/// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-

#ifndef AP_Compass_VRBRAIN_H
#define AP_Compass_VRBRAIN_H

#include "Compass.h"

class AP_Compass_VRBRAIN : public Compass
{
public:
    AP_Compass_VRBRAIN() : Compass() {
        product_id = AP_COMPASS_TYPE_VRBRAIN;
        _num_instances = 0;
    }
    bool        init(void);
    bool        read(void);
    void        accumulate(void);

    // return the number of compass instances
    uint8_t get_count(void) const { return _num_instances; }

    // return the primary compass
    uint8_t get_primary(void) const;

private:
    uint8_t _num_instances;
    int _mag_fd[COMPASS_MAX_INSTANCES];
    Vector3f _sum[COMPASS_MAX_INSTANCES];
    uint32_t _count[COMPASS_MAX_INSTANCES];
    uint64_t _last_timestamp[COMPASS_MAX_INSTANCES];
    bool _is_external[COMPASS_MAX_INSTANCES];
};

#endif // AP_Compass_VRBRAIN_H