Mercurial > public > ostc_companion
diff OSTC2cOperations.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/OSTC2cOperations.cpp Mon Jan 12 13:49:16 2026 +0000 +++ b/OSTC2cOperations.cpp Mon Jan 12 13:51:17 2026 +0000 @@ -48,7 +48,7 @@ #include <QDateTime> #include <QRegularExpression> -#define FIRMWARE_SIZE 0x17F40 +#define FIRMWARE_SIZE 0x17F40 // 64 bytes on Mk.2/2n/2c: #define FIRMWARE_BLOCK_SIZE 0x40 @@ -56,11 +56,10 @@ ////////////////////////////////////////////////////////////////////////////// OSTC2cOperations::OSTC2cOperations() - : HardwareOperations(), - _computerFirmware(0), - _computerSerial(0) -{ -} + : HardwareOperations() + , _computerFirmware(0) + , _computerSerial(0) +{} ////////////////////////////////////////////////////////////////////////////// @@ -78,13 +77,13 @@ _serial.purge(); _serial.writeByte('d'); int reply = _serial.readByte(); - if( reply != 'd' ) + if (reply != 'd') LOG_THROW("Write start"); - for(int a=4; a<256; ++a) { + for (int a = 4; a < 256; ++a) { _serial.writeByte(bank0[a]); reply = _serial.readByte(); - if( reply != bank0[a] ) + if (reply != bank0[a]) LOG_THROW("Write bank0 @ " << a); } @@ -111,23 +110,24 @@ try { readBank0(bank0); readBank1(bank1); - } catch(ReadTimeout) { + } catch (ReadTimeout) { LOG_THROW("No reply from OSTC Mk.2, 2n or 2c..."); } // Sanity check: - if( bank0[65] == 0xFF || bank1[1] > 99 || bank1[2] > 99 ) + if (bank0[65] == 0xFF || bank1[1] > 99 || bank1[2] > 99) LOG_THROW("Not an OSTC Mk.2, 2n or 2c..."); - _computerSerial = bank0[0] + bank0[1]*256; + _computerSerial = bank0[0] + bank0[1] * 256; _computerFirmware = bank1[1] * 100 + bank1[2]; - _customText = QString::fromLatin1((char*)bank0+65, 25).section('}', 0,0); + _customText = QString::fromLatin1((char *) bank0 + 65, 25).section('}', 0, 0); _description = QString("%1 #%2, v%3.%4, %5") - .arg(model()) - .arg(_computerSerial) - .arg(bank1[1]).arg(bank1[2], 2, 10, QChar('0')) - .arg( _customText ); + .arg(model()) + .arg(_computerSerial) + .arg(bank1[1]) + .arg(bank1[2], 2, 10, QChar('0')) + .arg(_customText); } int OSTC2cOperations::firmware() const @@ -162,12 +162,11 @@ QRegularExpression OSTC2cOperations::portTemplate() const { #if defined(Q_OS_MAC) - return QRegularExpression("tty.usbserial-.*", - QRegularExpression::CaseInsensitiveOption); + return QRegularExpression("tty.usbserial-.*", QRegularExpression::CaseInsensitiveOption); #elif defined(Q_OS_LINUX) return QRegularExpression("ttyUSB.*"); // default: case-sensitive #elif defined(Q_OS_WIN) - return QRegularExpression("COM.*"); // default: case-sensitive + return QRegularExpression("COM.*"); // default: case-sensitive #endif } QStringList OSTC2cOperations::listPorts() const @@ -192,8 +191,8 @@ HardwareOperations::CompanionFeatures OSTC2cOperations::supported() const { // No ICON. - return CompanionFeatures(PARAMETERS|DATE|NAME|DUMPSCREEN|FIRMWARE - |HELIUM_DIVE|CCR_DIVE); + return CompanionFeatures(PARAMETERS | DATE | NAME | DUMPSCREEN | FIRMWARE | HELIUM_DIVE + | CCR_DIVE); } ////////////////////////////////////////////////////////////////////////////// @@ -212,8 +211,7 @@ _serial.open(Settings::port, "OSTC2c"); getIdentity(); return true; - } - catch(const Exception& e){ + } catch (const Exception &e) { _serial.close(); LOG_THROW("Cannot connect " << Settings::port << ": " << e.what()); } @@ -227,7 +225,7 @@ return QSize(25, 1); } -void OSTC2cOperations::writeText(const QString& msg) +void OSTC2cOperations::writeText(const QString &msg) { // No hardware support for that. Just skip it, as it is done when // writting bank1... @@ -242,12 +240,12 @@ _serial.open(Settings::port, "OSTC2c"); _serial.writeByte(0xC1); - _serial.sleep(500); // 0.50 sec for bootloader to start. + _serial.sleep(500); // 0.50 sec for bootloader to start. //---- Send C1C1 to start upgrading firmware ----------------------------- unsigned char pic = 0; unsigned char ok = '?'; - for(int retry=0; retry < 10; ++retry) { + for (int retry = 0; retry < 10; ++retry) { _serial.writeByte(0xC1); _serial.sleep(5); _serial.writeByte(0xC1); @@ -255,31 +253,27 @@ try { pic = _serial.readByte(); - ok = _serial.readByte(); + ok = _serial.readByte(); break; - } - catch(const ReadTimeout&) { - if( retry == 9 ) + } catch (const ReadTimeout &) { + if (retry == 9) LOG_THROW("Cannot start firmware upgrade: timeout."); - LOG_INFO("Connecting OSTC2c (" << (retry+1) << "/10)..."); + LOG_INFO("Connecting OSTC2c (" << (retry + 1) << "/10)..."); } } //---- Check PIC type ---------------------------------------------------- LOG_TRACE("Pic = " << int(pic)); - if( ! pic ) + if (!pic) LOG_THROW("Cannot sync firmware upgrade. Cannot detect chip"); - if( pic != 0x57 - || ok != 'K' - ) - LOG_THROW( "Cannot sync firmware upgrade. Bad chip " << int(pic) << " " << ok); + if (pic != 0x57 || ok != 'K') + LOG_THROW("Cannot sync firmware upgrade. Bad chip " << int(pic) << " " << ok); - _serial.sleep(50); // Wait 0.050 sec here. + _serial.sleep(50); // Wait 0.050 sec here. return; - } - catch(const Exception& e) { + } catch (const Exception &e) { _serial.close(); LOG_THROW("Cannot connect " << Settings::port << ": " << e.what()); } @@ -290,7 +284,8 @@ bool OSTC2cOperations::disconnect(bool /*closing*/) { - if( ! _serial.isOpen() ) return false; + if (!_serial.isOpen()) + return false; LOG_TRACE("Disconnecting."); @@ -312,15 +307,15 @@ buffer[4] = date.date().day(); buffer[5] = date.date().year() % 100; - _serial.sleep(100); // Make sure last command is finished. + _serial.sleep(100); // Make sure last command is finished. _serial.purge(); _serial.writeByte('b'); // 0x62 unsigned char reply = _serial.readByte(); - if( reply != 'b' ) - LOG_THROW( "sync time" ); + if (reply != 'b') + LOG_THROW("sync time"); - _serial.writeBlock( buffer, sizeof buffer); + _serial.writeBlock(buffer, sizeof buffer); _serial.sleep(100); } @@ -328,13 +323,11 @@ void OSTC2cOperations::setName(const QString &newName) { - QByteArray padded = (newName + QString(25, '}')) - .left(25) - .toLatin1(); + QByteArray padded = (newName + QString(25, '}')).left(25).toLatin1(); byte bank0[256] = {0}; readBank0(bank0); - memcpy(bank0+65, padded.constData(), 25); + memcpy(bank0 + 65, padded.constData(), 25); writeBank0(bank0); // Then get the new identity: @@ -343,7 +336,7 @@ ////////////////////////////////////////////////////////////////////////////// -void OSTC2cOperations::setIcons(const QString &/*fileName*/) +void OSTC2cOperations::setIcons(const QString & /*fileName*/) { LOG_THROW("Not supported"); } @@ -354,42 +347,35 @@ { QImage image(320, 240, QImage::Format_RGB32); - //---- Send dump screen command ------------------------------------- + //---- Send dump screen command ------------------------------------- unsigned char reply; _serial.writeByte('l'); reply = _serial.readByte(); - if( reply != 'l' ) - LOG_THROW( "Dumpscreen command failed: " << (int)reply ); + if (reply != 'l') + LOG_THROW("Dumpscreen command failed: " << (int) reply); //---- Read image ---------------------------------------------------- int percent = 0; try { - for(int x=0; x<320; ++x) - { - int p = x/16; // 5% steps - if( p != percent ) - { - PROGRESS(p, 320/16); + for (int x = 0; x < 320; ++x) { + int p = x / 16; // 5% steps + if (p != percent) { + PROGRESS(p, 320 / 16); percent = p; } int pix = 0, count = 0; - for(int y=0; y<240; ++y, --count) - { - if( count <= 0 ) - { + for (int y = 0; y < 240; ++y, --count) { + if (count <= 0) { count = _serial.readByte(); - if( (count & 0x80) == 0 ) + if ((count & 0x80) == 0) pix = 0; - else if( (count & 0xC0) == 0xC0 ) - { + else if ((count & 0xC0) == 0xC0) { pix = 0xFFFF; count &= 0x3F; - } - else - { + } else { unsigned char bpix[2]; _serial.readBlock(bpix, 2); pix = (bpix[0] << 8) + bpix[1]; @@ -400,91 +386,93 @@ // Bit extension 5bits --> 8bits: // 12345123.45 = (12345 * 0b100001) / 4 // 12345612.3456 = (123456 * 0xb1000001) / 16 - int r = (31 & (pix >> 11)) * 255/31; - int g = (63 & (pix >> 5)) * 255/63; - int b = (31 & pix ) * 255/31; - image.setPixel(x, y, qRgb( r, g, b)); + int r = (31 & (pix >> 11)) * 255 / 31; + int g = (63 & (pix >> 5)) * 255 / 63; + int b = (31 & pix) * 255 / 31; + image.setPixel(x, y, qRgb(r, g, b)); } } - } - catch( ReadTimeout ) { + } catch (ReadTimeout) { LOG_THROW("Missing image data..."); } //---- Done ---------------------------------------------------------- PROGRESS_RESET(); - LOG_INFO( "Screen dumped." ); + LOG_INFO("Screen dumped."); return image; } ////////////////////////////////////////////////////////////////////////////// -void OSTC2cOperations::loadFirmware(HexFile& hex, const QString& fileName) const +void OSTC2cOperations::loadFirmware(HexFile &hex, const QString &fileName) const { hex.allocate(FIRMWARE_SIZE); hex.load(fileName); //---- Patch Firmware intialization GOTO --------------------------------- - memcpy((void*)(hex.data() + 0x17F38), // To bootloader vector - (void*)(hex.data() + 0x00000), // From fw reset code + memcpy((void *) (hex.data() + 0x17F38), // To bootloader vector + (void *) (hex.data() + 0x00000), // From fw reset code 8); // Up to 8 bytes... static unsigned char byteCode[8] = { - 0xA0, 0xEF, 0xBF, 0xF0, // goto 0x1F740 (bootloader 19k) - 0x00, 0x00, // nop - 0x00, 0x00 // nop + 0xA0, + 0xEF, + 0xBF, + 0xF0, // goto 0x1F740 (bootloader 19k) + 0x00, + 0x00, // nop + 0x00, + 0x00 // nop }; - memcpy((void*)(hex.data() + 0x00000), // To OSTC reset vector - (void*)(byteCode), // From go back to bootloader. + memcpy((void *) (hex.data() + 0x00000), // To OSTC reset vector + (void *) (byteCode), // From go back to bootloader. 8); // Up to 8 bytes... } ////////////////////////////////////////////////////////////////////////////// -static void -uploadBlock(Serial& serial, const HexFile& hex, size_t addr) +static void uploadBlock(Serial &serial, const HexFile &hex, size_t addr) { const unsigned char count = FIRMWARE_BLOCK_SIZE; - assert( 0 < count && count < 255 ); - assert((addr+count) <= FIRMWARE_SIZE ); + assert(0 < count && count < 255); + assert((addr + count) <= FIRMWARE_SIZE); unsigned char reply = 0; unsigned char header[4]; header[0] = 0x1F & (addr >> 16); - header[1] = 0xFF & (addr >> 8); + header[1] = 0xFF & (addr >> 8); header[2] = 0xFF & (addr); header[3] = count; unsigned char crc = header[0] + header[1] + header[2] + header[3]; - for(int i=0; i<count; ++i) - crc += hex.data()[addr+i]; + for (int i = 0; i < count; ++i) + crc += hex.data()[addr + i]; crc = -crc; // Sum should make zero. try { serial.writeBlock(header, sizeof header); - serial.writeBlock(hex.data()+addr, count); + serial.writeBlock(hex.data() + addr, count); serial.writeByte(crc); - } catch(...) { + } catch (...) { goto WriteFailed; } - serial.sleep(20); // 18msec for a FLASH row write, plus VAT. + serial.sleep(20); // 18msec for a FLASH row write, plus VAT. reply = serial.readByte(); - if( reply != 'K' ) - { + if (reply != 'K') { serial.close(); - LOG_THROW( QString("Bad checksum at 0x%1").arg((unsigned int)addr, 0, 16, QChar('0'))); + LOG_THROW(QString("Bad checksum at 0x%1").arg((unsigned int) addr, 0, 16, QChar('0'))); } return; WriteFailed: serial.close(); - LOG_THROW( QString("Write failed") ); + LOG_THROW(QString("Write failed")); } -void OSTC2cOperations::upgradeFW(const QString& fileName) +void OSTC2cOperations::upgradeFW(const QString &fileName) { //---- Load and check firmware --------------------------------------- LOG_TRACE("Loading firmware '" << fileName << "'."); @@ -497,11 +485,9 @@ //---- Let's do it ------------------------------------------------------- int percent = 0; - for(size_t addr = FIRMWARE_BLOCK_SIZE; addr < FIRMWARE_SIZE; addr += FIRMWARE_BLOCK_SIZE) - { - int p = int((addr*200.0f) / float(FIRMWARE_SIZE) + 0.5f); - if( p > percent ) - { + for (size_t addr = FIRMWARE_BLOCK_SIZE; addr < FIRMWARE_SIZE; addr += FIRMWARE_BLOCK_SIZE) { + int p = int((addr * 200.0f) / float(FIRMWARE_SIZE) + 0.5f); + if (p > percent) { PROGRESS(percent, 200); percent = p; } @@ -522,20 +508,20 @@ return; } -void OSTC2cOperations::getAllHeader(unsigned char* pBuffer) +void OSTC2cOperations::getAllHeader(unsigned char *pBuffer) { return; } -void OSTC2cOperations::writeAllHeader(unsigned char* pBuffer) +void OSTC2cOperations::writeAllHeader(unsigned char *pBuffer) { return; } -void OSTC2cOperations::getAllSamples(unsigned char* pBuffer) +void OSTC2cOperations::getAllSamples(unsigned char *pBuffer) { return; } -void OSTC2cOperations::writeAllSamples(unsigned char* pBuffer) +void OSTC2cOperations::writeAllSamples(unsigned char *pBuffer) { return; }
