#pragma once #include #include #include enum class IHex_Tags { DataRecord = 0x00, Eof = 0x01, Esar = 0x02, Elar = 0x04, Slar = 0x05 }; class ihex_loader { public: ihex_loader() = default; bool load_ihex(std::string filename); bool save_ihex(std::string filename); uint32_t get_start_address() { return _start_address; } void set_start_address(uint32_t start_address) { _start_address = start_address; } std::vector& get_application_data() { return _application; } void set_application_data(uint8_t* new_data, uint32_t new_data_len) { _application.clear(); for (uint32_t i = 0; i < new_data_len; i++) { _application.push_back(new_data[i]); } } private: uint32_t _start_address = 0; std::vector _application; uint8_t calc_crc8(std::string number) const; bool check_ihex_crc(std::string line) const; uint8_t mycrc(std::string line) const; };