Commit b7233868 authored by Sigurd M. Albrektsen's avatar Sigurd M. Albrektsen
Browse files

Added initial parser (STIM)

parent f53f638b
Loading
Loading
Loading
Loading
+1 −0
Changes for parsers/CMakeLists.txt: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ endif()
set(SENTIBOARD_TEST_SRCS
  ${TEST_SRC_DIR}/testmain.cpp
  ${TEST_SRC_DIR}/sentiboard_reader_test.cpp
  ${TEST_SRC_DIR}/stim_parser_test.cpp
  ${TEST_SRC_DIR}/test_utils.cpp
)

+20 −8
Changes for parsers/include/sentiboard/Package.hpp: 20 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -19,11 +19,11 @@ class Package {
    bool SyncPackage(const std::shared_ptr<std::istream> inData);
    bool _isGood = false;
    bool _hasOnboardTimestamp = false;
    double _onboardTimestamp;
    double _onboardTimestamp = 0;

    uint32_t _tov;
    uint32_t _toa;
    uint32_t _tot;
    uint32_t _tov = 0;
    uint32_t _toa = 0;
    uint32_t _tot = 0;

    uint8_t _protocolVersion;

@@ -40,19 +40,31 @@ class Package {
    bool IsGood() {
        return _isGood;
    }
    size_t SensorIx() {
    size_t SensorIx() const {
        return _sensor_ix;
    }
    size_t OnboardTimestamp() const {
        return _onboardTimestamp;
    }

    uint32_t tov() {
    uint32_t tov() const {
        return _tov;
    }
    uint32_t toa() {
    uint32_t toa() const {
        return _toa;
    }
    uint32_t tot() {
    uint32_t tot() const {
        return _tot;
    }

    const size_t data_start_position() const;

    const uint8_t *data() const {
        return reinterpret_cast<const uint8_t *>(&_data[data_start_position()]);
    }
    const size_t data_len() const {
        return _data.size() - data_start_position() - 2;
    }
};

}  // namespace sentiboard
+54 −0
Changes for parsers/include/sentiboard/messages/ImuMessage.hpp: 54 added lines, 0 removed lines.
Original line number Diff line number Diff line
// Copyright [2017] <Sigurd M. Albrektsen>

#ifndef INCLUDE_SENTIBOARD_MESSAGES_IMUMESSAGE_HPP_
#define INCLUDE_SENTIBOARD_MESSAGES_IMUMESSAGE_HPP_

#include <tuple>
#include "SentiboardMessage.hpp"
#include "sentiboard/Package.hpp"

class ImuMessage : public SentiboardMessage {
 public:
    ImuMessage() { }
    ImuMessage(const sentiboard::Package package,
               std::tuple<float, float, float> accl,
               std::tuple<float, float, float> gyro,
               bool has_delta_values)
        : SentiboardMessage(package) {
        populate(package, accl, gyro, has_delta_values);
    }

    bool populate(const sentiboard::Package package,
                  std::tuple<float, float, float> accl,
                  std::tuple<float, float, float> gyro,
                  bool has_delta_values) {
        accl_ = accl;
        gyro_ = gyro;
        has_delta_values_ = has_delta_values;
        if(!SentiboardMessage::initialized()) {
            SentiboardMessage::populate(package);
        }
        return true;
    }

    void has_delta_values(bool val) {
        has_delta_values_ = true;
    }
    bool has_delta_values() {
        return has_delta_values_;
    }
    std::tuple<float, float, float> accl() {
        return accl_;
    }

    std::tuple<float, float, float> gyro() {
        return gyro_;
    }

private:
    std::tuple<float, float, float> accl_;
    std::tuple<float, float, float> gyro_;
    bool has_delta_values_;
};

#endif // INCLUDE_SENTIBOARD_MESSAGES_IMUMESSAGE_HPP_
+111 −0
Changes for parsers/include/sentiboard/messages/SentiboardMessage.hpp: 111 added lines, 0 removed lines.
Original line number Diff line number Diff line
// Copyright [2017] <Sigurd M. Albrektsen>

#ifndef INCLUDE_SENTIBOARD_MESSAGES_SENTIBOARDMESSAGE_HPP_
#define INCLUDE_SENTIBOARD_MESSAGES_SENTIBOARDMESSAGE_HPP_

#include "sentiboard/Package.hpp"

class SentiboardMessage {
public:
    SentiboardMessage(const sentiboard::Package& package) {
        populate(package);
    }
    SentiboardMessage() {
        initialized_ = false;
    }

    bool populate(const sentiboard::Package& package) {
        sensor_ix_ = package.SensorIx();
        tov_ = package.tov();
        toa_ = package.toa();
        tot_ = package.tot();
        onboard_timestamp_ = package.OnboardTimestamp();
        initialized_ = true;
        return true;
    }

    ~SentiboardMessage() { }

    SentiboardMessage(const SentiboardMessage& other) {// copy constructor
        sensor_ix_ = other.sensor_ix_;

        tov_ = other.tov_;
        toa_ = other.toa_;
        tot_ = other.tot_;

        onboard_timestamp_ = other.onboard_timestamp_;
    }

    //copy assignment
    SentiboardMessage& operator=(const SentiboardMessage& other) {
        sensor_ix_ = other.sensor_ix_;

        tov_ = other.tov_;
        toa_ = other.toa_;
        tot_ = other.tot_;

        onboard_timestamp_ = other.onboard_timestamp_;
        return *this;
    }

    //Copy constructor
    SentiboardMessage(const SentiboardMessage &&other) {
        sensor_ix_ = other.sensor_ix_;

        tov_ = other.tov_;
        toa_ = other.toa_;
        tot_ = other.tot_;

        onboard_timestamp_ = other.onboard_timestamp_;
    }
    //move assignment
    SentiboardMessage& operator=(SentiboardMessage&& other) {
        if(this == &other) {
            return *this;
        }

        this->sensor_ix_ = other.sensor_ix_;

        this->tov_ = other.tov_;
        this->toa_ = other.toa_;
        this->tot_ = other.tot_;

        this->onboard_timestamp_ = other.onboard_timestamp_;
        return *this;
    }

    uint8_t sensor_ix() const {
        return sensor_ix_;
    }

    uint32_t tov() const {
        return tov_;
    }
    uint32_t toa() const {
        return toa_;
    }
    uint32_t tot() const {
        return tot_;
    }

    double onboard_timestamp() const {
        return onboard_timestamp_;
    }

    bool initialized() {
        return initialized_;
    }

private:
    uint8_t sensor_ix_;

    uint32_t tov_;
    uint32_t toa_;
    uint32_t tot_;

    double onboard_timestamp_;

    bool initialized_;
};

#endif // INCLUDE_SENTIBOARD_MESSAGES_SENTIBOARDMESSAGE_HPP_
+16 −0
Changes for parsers/include/sentiboard/sensors/SentiboardParser.hpp: 16 added lines, 0 removed lines.
Original line number Diff line number Diff line
// Copyright [2017] <Sigurd M. Albrektsen>

#ifndef INCLUDE_SENTIBOARD_SENSORS_SENTIBOARDPARSER_HPP_
#define INCLUDE_SENTIBOARD_SENSORS_SENTIBOARDPARSER_HPP_

#include "sentiboard/messages/SentiboardMessage.hpp"

class SentiboardParser {
 public:
    virtual SentiboardMessage parse(const sentiboard::Package package) {
        SentiboardMessage msg(package);
        return msg;
    }
};

#endif  // INCLUDE_SENTIBOARD_SENSORS_SENTIBOARDPARSER_HPP_
Loading