The Powerfile_C200 should be managing its own defaults, not the Orbiter, anyway.
i disagree. It's a global setting and the command should include the global format parameter when sent from the orbiter. Otherwise other disc libraries would have to duplicate code.
Why is the orbiter any more global than is the Powerfile? The Orbiter is the GUI, and it doesn't even have an interface to set the ripping parameter. If it did, and it sent the format param, then that should indeed override the defaults. The Powerfile is the ripping device, so it should be able to access and use its default as set in the DB - unless overridden by the Orbiter.
I'm not sure what you mean by "other disc libraries". They're all going to be subclasses of the Powerfile, if they do differ from it at all. In the meantime, the Powerfile itself is enough of an abstraction that the VGP-XL1B that I'm using (and is the reference machine for LMCE) is, in SW, just a "Powerfile". If a future device different enough from a Powerfile that it isn't a subclass of the existing class, its new class should have code to get its settings from the DB, including the rip format.
However, the actual object that executes the ripDiskWrapper.sh script is a RipTask object that is contained (inside a RipJob object) in the Disk_Drive_Functions object. Which the Powerfile object sends to, and which any disc management object will send to for ripping. The right place for the rip format default is in the RipTask or the RipJob, which should know about its own rip job parameters. However, the current default code in the Powerfile class that converts empty format properties into "ogg" prevents the RipTask or RipJob from detecting whether it's "ogg" only because it went to default. That Powerfile code should be removed, and moved to the RipTask or RipJob class. And really, the default format shouldn't be OGG, because it's lossy. Since FLAC is a lossless compressed format, I'd like to make the default FLAC. So the Orbiter can set the format, or else the RipJob sets it to the Installation Settings in the DB, or else the RipJob sets it to FLAC.
src/Powerfile_C200/Powerfile_C200.cpp lines 577-579:
RipJob *pRipJob = new RipJob(m_pPowerfileJukebox->m_pDatabase_pluto_media,
m_pPowerfileJukebox->m_pJobHandler,NULL,pSlot,iPK_Users,0,
pMessage ? pMessage->m_dwPK_Device_From : 0,[b]sFormat.empty() ? "ogg" : sFormat[/b],"",sFilename,"A",false,this);
src/Disk_Drive_Functions/RipTask.cpp lines 112-118:
strParameters = StringUtils::itos(m_pRipJob->m_pDisk_Drive_Functions->m_pCommand_Impl->m_dwPK_Device) + "\t"
+ StringUtils::itos(m_pJob->m_iID_get()) + "\t"
+ StringUtils::itos(m_iID_get()) + "\t"
+ ((RipJob *) m_pJob)->m_sFileName + "\t" + m_pRipJob->m_pDisk_Drive_Functions->m_sDrive + "\t"
+ StringUtils::itos(m_pRipJob->m_pDisk_Drive_Functions->m_mediaDiskStatus) + "\t"
+ StringUtils::itos(m_pRipJob->m_iPK_Users) + "\t"
+ [b]m_pRipJob->m_sFormat[/b] + "\t" + m_sTrack;
src/Disk_Drive_Functions/RipTask.cpp lines 132-140:
DCE::CMD_Spawn_Application
spawnApplication(m_pRipJob->m_pDisk_Drive_Functions->m_pCommand_Impl->m_dwPK_Device,
m_pRipJob->m_pDisk_Drive_Functions->m_pDevice_AppServer->m_dwPK_Device,
"/usr/pluto/bin/ripDiskWrapper.sh",
m_sSpawnName,
strParameters,
sResultMessage + "e",
sResultMessage + "s",
false, false, false, true);