#pragma once

#include <vector>
#include "gcode.h"

namespace iosender {

class CoordinateSystem {
};

class Tool {
};

class Machine {
public:

    void Reset() {
//        // Sync with controller
//        if (GrblInfo.IsGrblHAL) {
//            GrblParserState.Get();
//            GrblWorkParameters.Get();
//        } else {
//            GrblParserState.Get(true);
//        }
//        coordinateSystems.Clear();
//        for (CoordinateSystem c : GrblWorkParameters.CoordinateSystems) {
//            coordinateSystems.Add(c);
//        }

    }

protected:
    double rpm_ = 0;
    bool isRelative = false;
    int _tool = 0;
    double offsets[9];
    double origin[9];
    double scaleFactors[9];
    double toolOffsets[9];
    std::vector<CoordinateSystem> coordinateSystems;
    std::vector<Tool> toolTable;
    Point6D machinePos;

private:

};

}