Mercurial > public > ostc_companion
diff HexFile.cpp @ 8:21ce6187d32e
Minor changes done by automatic style checker
| author | Ideenmodellierer |
|---|---|
| date | Mon, 12 Jan 2026 13:51:17 +0000 |
| parents | 0b3630a29ad8 |
| children |
line wrap: on
line diff
--- a/HexFile.cpp Mon Jan 12 13:49:16 2026 +0000 +++ b/HexFile.cpp Mon Jan 12 13:51:17 2026 +0000 @@ -53,16 +53,19 @@ /////////////////////////////////////////////////////////////////////////////// HexFile::HexFile() -: _memSize(0), + : _memSize(0) + , #ifdef FROG_MASTER - _baseAddress(0), + _baseAddress(0) + , #endif - _buffer(0) + _buffer(0) {} HexFile::~HexFile() { - delete[] _buffer; _buffer = 0; + delete[] _buffer; + _buffer = 0; } /////////////////////////////////////////////////////////////////////////////// @@ -79,8 +82,8 @@ bool HexFile::sqwiz(size_t newMemSize) { - if( newMemSize >= _memSize ) { - LOG_THROW( "Squiz failed" ); + if (newMemSize >= _memSize) { + LOG_THROW("Squiz failed"); } _memSize = newMemSize; return true; @@ -93,65 +96,61 @@ void HexFile::readLine() { QByteArray line = _file.readLine(); - if( line[0] != ':' ) - LOG_THROW( "Bad HEX format" ); + if (line[0] != ':') + LOG_THROW("Bad HEX format"); unsigned char checksum = 0; bool ok = true; - for(int i=1; ok && i<line.length(); i+=2) { - if( line[i]=='\r' || line[i]=='\n' ) + for (int i = 1; ok && i < line.length(); i += 2) { + if (line[i] == '\r' || line[i] == '\n') break; - checksum += line.mid(i,2).toInt(&ok,16); + checksum += line.mid(i, 2).toInt(&ok, 16); } - if( ! ok ) - LOG_THROW( "Bad HEX header" ); - if( checksum != 0 ) - LOG_THROW( "Bad HEX checksum" ); + if (!ok) + LOG_THROW("Bad HEX header"); + if (checksum != 0) + LOG_THROW("Bad HEX checksum"); - int len = line.mid(1,2).toInt(0, 16); - int addr = line.mid(3,2).toInt(0, 16) << 8 - | line.mid(5,2).toInt(0, 16); - int type = line.mid(7,2).toInt(0, 16); + int len = line.mid(1, 2).toInt(0, 16); + int addr = line.mid(3, 2).toInt(0, 16) << 8 | line.mid(5, 2).toInt(0, 16); + int type = line.mid(7, 2).toInt(0, 16); - switch( type ) - { + switch (type) { case 00: //---- Data record ---------------------------------------------- - if( _baseAddress == 0x300000 ) // Skip configuration bits. + if (_baseAddress == 0x300000) // Skip configuration bits. return; - if( _baseAddress == 0xF00000 ) // Skip internal prom reset. + if (_baseAddress == 0xF00000) // Skip internal prom reset. return; - for(int i=0; i<len; i++, ++addr) - { + for (int i = 0; i < len; i++, ++addr) { size_t a = _baseAddress + addr; - if( a >= _memSize ) - LOG_THROW( "BAD HEX address" ); + if (a >= _memSize) + LOG_THROW("BAD HEX address"); - if( _buffer[a] != 0xFF ) - LOG_THROW( "Double write" ); + if (_buffer[a] != 0xFF) + LOG_THROW("Double write"); - _buffer[a] = line.mid(9+i*2,2).toInt(&ok,16); - if( !ok ) - LOG_THROW( "Bad HEX byte" ); + _buffer[a] = line.mid(9 + i * 2, 2).toInt(&ok, 16); + if (!ok) + LOG_THROW("Bad HEX byte"); bytes++; } break; - case 01: //---- END OF FILE record --------------------------------------- + case 01: //---- END OF FILE record --------------------------------------- _file.seek(-1); // Force to end of file. break; case 02: //---- Segment address record ----------------------------------- - if( len != 2 || addr != 0 ) - LOG_THROW( "Bad HEX Segment Address record" ); - _baseAddress = line.mid(9,4).toInt(0,16) << 4; + if (len != 2 || addr != 0) + LOG_THROW("Bad HEX Segment Address record"); + _baseAddress = line.mid(9, 4).toInt(0, 16) << 4; break; case 04: //---- Extended Linear Address Record --------------------------- - if( len != 2 || addr != 0 ) - LOG_THROW( "Bad HEX Extended Linear Address Record" ); - _baseAddress = line.mid( 9,2).toInt(0,16) << 20 - | line.mid(11,2).toInt(0,16) << 16; + if (len != 2 || addr != 0) + LOG_THROW("Bad HEX Extended Linear Address Record"); + _baseAddress = line.mid(9, 2).toInt(0, 16) << 20 | line.mid(11, 2).toInt(0, 16) << 16; break; default: @@ -161,17 +160,16 @@ /////////////////////////////////////////////////////////////////////////////// -void HexFile::load(const QString& fileName) +void HexFile::load(const QString &fileName) { Q_ASSERT(_buffer); _file.setFileName(fileName); - if( ! _file.open(QIODevice::ReadOnly) ) + if (!_file.open(QIODevice::ReadOnly)) LOG_THROW("Can't open HEX file"); bytes = 0; - while( ! _file.atEnd() ) - { + while (!_file.atEnd()) { PROGRESS(_file.pos(), _file.size()); readLine(); } @@ -179,13 +177,13 @@ _file.close(); - LOG_TRACE( int(bytes/1024.0f) << "KB loaded (" - << int(bytes * 100.0f / _memSize) << "% of firmware area)."); + LOG_TRACE(int(bytes / 1024.0f) + << "KB loaded (" << int(bytes * 100.0f / _memSize) << "% of firmware area)."); } /////////////////////////////////////////////////////////////////////////////// -const unsigned char* HexFile::data() const +const unsigned char *HexFile::data() const { Q_ASSERT(_buffer); return _buffer; @@ -199,27 +197,26 @@ unsigned short low = 0; unsigned short high = 0; - for(size_t i=0; i < _memSize; ++i) - { - low += _buffer[i]; + for (size_t i = 0; i < _memSize; ++i) { + low += _buffer[i]; high += low; } - return (((unsigned int)high) << 16) + low; + return (((unsigned int) high) << 16) + low; } /////////////////////////////////////////////////////////////////////////////// #ifndef FROG_MASTER -void HexFile::saveEncrypted(const QString&, byte [16]) +void HexFile::saveEncrypted(const QString &, byte[16]) { - LOG_THROW( "No encryption" ); + LOG_THROW("No encryption"); } #else -void HexFile::saveEncrypted(const QString& fileName, byte secretKey[16]) +void HexFile::saveEncrypted(const QString &fileName, byte secretKey[16]) { _file.setFileName(fileName); - if( ! _file.open(QIODevice::WriteOnly|QIODevice::Truncate) ) - LOG_THROW( "Can't save to encrypted file" ); + if (!_file.open(QIODevice::WriteOnly | QIODevice::Truncate)) + LOG_THROW("Can't save to encrypted file"); QTextStream out(&_file); out.setIntegerBase(16); @@ -227,18 +224,16 @@ //---- Generates 128 bits of random initialization vector ---------------- Rijndael::CFB<128>::IV iv = {0}; - Rijndael::ECB<128> PRNG; PRNG.setupEncrypt(secretKey); - for(int i=0; i<sizeof iv; ++i) + Rijndael::ECB<128> PRNG; + PRNG.setupEncrypt(secretKey); + for (int i = 0; i < sizeof iv; ++i) iv[i] = PRNG.get_random() % 256; - size_t bytes = 0; // encrypted fake address - for(int i0 = 0; i0 < sizeof iv; i0+=0x10) - { - out << qSetFieldWidth(1) << ":" - << qSetFieldWidth(6) << bytes - << qSetFieldWidth(2); - for(int i=0; i<0x10; i++) - out << iv[i0+i]; + size_t bytes = 0; // encrypted fake address + for (int i0 = 0; i0 < sizeof iv; i0 += 0x10) { + out << qSetFieldWidth(1) << ":" << qSetFieldWidth(6) << bytes << qSetFieldWidth(2); + for (int i = 0; i < 0x10; i++) + out << iv[i0 + i]; out << qSetFieldWidth(1) << "\n"; bytes += 0x10; } @@ -250,15 +245,12 @@ PROGRESS(0, _memSize); byte encrypted[32]; - for(size_t addr = 0; addr < _memSize; addr += 0x10) - { + for (size_t addr = 0; addr < _memSize; addr += 0x10) { PROGRESS(addr, _memSize); enc.encrypt(_buffer + addr, encrypted); - out << qSetFieldWidth(1) << ":" - << qSetFieldWidth(6) << bytes - << qSetFieldWidth(2); - for(int i=0; i<16; i++) + out << qSetFieldWidth(1) << ":" << qSetFieldWidth(6) << bytes << qSetFieldWidth(2); + for (int i = 0; i < 16; i++) out << encrypted[i]; out << qSetFieldWidth(1) << "\n"; bytes += 16; @@ -266,18 +258,11 @@ //---- Process data ------------------------------------------------------ unsigned int sum = checksum(); // 33.29.BD.1D - out << qSetFieldWidth(1) << ":" - << qSetFieldWidth(6) << bytes - << qSetFieldWidth(2) - << ((sum ) & 0xff) - << ((sum>> 8) & 0xff) - << ((sum>>16) & 0xff) - << ((sum>>24) & 0xff) - << qSetFieldWidth(1) << "\n" - ; + out << qSetFieldWidth(1) << ":" << qSetFieldWidth(6) << bytes << qSetFieldWidth(2) + << ((sum) & 0xff) << ((sum >> 8) & 0xff) << ((sum >> 16) & 0xff) << ((sum >> 24) & 0xff) + << qSetFieldWidth(1) << "\n"; - qDebug().nospace() << int( bytes/1024.0f) << "KB saved into " - << fileName.section('/', -1); + qDebug().nospace() << int(bytes / 1024.0f) << "KB saved into " << fileName.section('/', -1); PROGRESS_RESET(); } @@ -285,33 +270,32 @@ /////////////////////////////////////////////////////////////////////////////// -void HexFile::loadEncrypted(const QString& fileName, unsigned char secretKey[16]) +void HexFile::loadEncrypted(const QString &fileName, unsigned char secretKey[16]) { Q_ASSERT(_buffer); _file.setFileName(fileName); - if( ! _file.open(QIODevice::ReadOnly) ) - LOG_THROW( "Cannot open HEX file " << fileName ); + if (!_file.open(QIODevice::ReadOnly)) + LOG_THROW("Cannot open HEX file " << fileName); //---- Read 128 bits of initialization vector ---------------------------- Rijndael::CFB<128>::IV iv = {0}; unsigned int bytes = 0; bool ok = true; - for(size_t i0 = 0; i0 < sizeof iv; i0+=0x10) - { + for (size_t i0 = 0; i0 < sizeof iv; i0 += 0x10) { QByteArray line = _file.readLine(); - if( line[0] != ':' ) - LOG_THROW( "Bad HEX line" ); + if (line[0] != ':') + LOG_THROW("Bad HEX line"); - unsigned int readAddr = line.mid(1,6).toInt(&ok, 16); - if( !ok || readAddr != bytes ) - LOG_THROW( "Bad HEX address" ); + unsigned int readAddr = line.mid(1, 6).toInt(&ok, 16); + if (!ok || readAddr != bytes) + LOG_THROW("Bad HEX address"); - for(int i=0; i<0x10; i++) - iv[i0+i] = line.mid(2*i+7,2).toInt(&ok, 16); - if( !ok ) - LOG_THROW( "Bad HEX file format" ); + for (int i = 0; i < 0x10; i++) + iv[i0 + i] = line.mid(2 * i + 7, 2).toInt(&ok, 16); + if (!ok) + LOG_THROW("Bad HEX file format"); bytes += 0x10; } @@ -320,39 +304,37 @@ Rijndael::CFB<128> dec(secretKey, iv); //---- Process data ------------------------------------------------------ - PROGRESS(0, (int)_memSize); + PROGRESS(0, (int) _memSize); Rijndael::Block encrypted; - for(size_t addr = 0; addr < _memSize; addr += 0x10) - { - PROGRESS((int)addr, (int)_memSize); + for (size_t addr = 0; addr < _memSize; addr += 0x10) { + PROGRESS((int) addr, (int) _memSize); QByteArray line = _file.readLine(); - if( line[0] != ':' ) - LOG_THROW( "Bad HEX line" ); + if (line[0] != ':') + LOG_THROW("Bad HEX line"); - unsigned int readAddr = line.mid(1,6).toInt(&ok, 16); - if( !ok || readAddr != bytes ) - LOG_THROW( "Bad HEX address" ); + unsigned int readAddr = line.mid(1, 6).toInt(&ok, 16); + if (!ok || readAddr != bytes) + LOG_THROW("Bad HEX address"); - for(int i=0; i<0x10; i++) - encrypted[i] = line.mid(2*i+7,2).toInt(&ok, 16); - if( !ok ) - LOG_THROW( "Bad HEX file format" ); + for (int i = 0; i < 0x10; i++) + encrypted[i] = line.mid(2 * i + 7, 2).toInt(&ok, 16); + if (!ok) + LOG_THROW("Bad HEX file format"); bytes += 0x10; - dec.decrypt(encrypted, *(Rijndael::Block*)(_buffer+addr)); + dec.decrypt(encrypted, *(Rijndael::Block *) (_buffer + addr)); } QByteArray line = _file.readLine(); - if( bytes != (unsigned int)line.mid(1,6).toInt(&ok, 16) || !ok ) - LOG_THROW( "Bad HEX address" ); + if (bytes != (unsigned int) line.mid(1, 6).toInt(&ok, 16) || !ok) + LOG_THROW("Bad HEX address"); - unsigned int sum = line.mid( 7,2).toInt(&ok, 16) - + (line.mid( 9,2).toInt(&ok, 16) << 8 ) - + (line.mid(11,2).toInt(&ok, 16) << 16) - + (line.mid(13,2).toInt(&ok, 16) << 24); - if( sum != checksum() ) - LOG_THROW( "Bad HEX checksum" ); + unsigned int sum = line.mid(7, 2).toInt(&ok, 16) + (line.mid(9, 2).toInt(&ok, 16) << 8) + + (line.mid(11, 2).toInt(&ok, 16) << 16) + + (line.mid(13, 2).toInt(&ok, 16) << 24); + if (sum != checksum()) + LOG_THROW("Bad HEX checksum"); PROGRESS_RESET(); }
