1*993229b6Sjkunz /* 2*993229b6Sjkunz * BootImageGenerator.cpp 3*993229b6Sjkunz * elftosb 4*993229b6Sjkunz * 5*993229b6Sjkunz * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. 6*993229b6Sjkunz * See included license file for license details. 7*993229b6Sjkunz */ 8*993229b6Sjkunz 9*993229b6Sjkunz #include "BootImageGenerator.h" 10*993229b6Sjkunz #include "Logging.h" 11*993229b6Sjkunz 12*993229b6Sjkunz //! Name of product version option. 13*993229b6Sjkunz #define kProductVersionOption "productVersion" 14*993229b6Sjkunz 15*993229b6Sjkunz //! Name of component version option. 16*993229b6Sjkunz #define kComponentVersionOption "componentVersion" 17*993229b6Sjkunz 18*993229b6Sjkunz //! Name of option that specifies the drive tag for this .sb file. 19*993229b6Sjkunz #define kDriveTagOption "driveTag" 20*993229b6Sjkunz 21*993229b6Sjkunz using namespace elftosb; 22*993229b6Sjkunz processVersionOptions(BootImage * image)23*993229b6Sjkunzvoid BootImageGenerator::processVersionOptions(BootImage * image) 24*993229b6Sjkunz { 25*993229b6Sjkunz // bail if no option context was set 26*993229b6Sjkunz if (!m_options) 27*993229b6Sjkunz { 28*993229b6Sjkunz return; 29*993229b6Sjkunz } 30*993229b6Sjkunz 31*993229b6Sjkunz const StringValue * stringValue; 32*993229b6Sjkunz version_t version; 33*993229b6Sjkunz 34*993229b6Sjkunz // productVersion 35*993229b6Sjkunz if (m_options->hasOption(kProductVersionOption)) 36*993229b6Sjkunz { 37*993229b6Sjkunz stringValue = dynamic_cast<const StringValue *>(m_options->getOption(kProductVersionOption)); 38*993229b6Sjkunz if (stringValue) 39*993229b6Sjkunz { 40*993229b6Sjkunz version.set(*stringValue); 41*993229b6Sjkunz image->setProductVersion(version); 42*993229b6Sjkunz } 43*993229b6Sjkunz else 44*993229b6Sjkunz { 45*993229b6Sjkunz Log::log(Logger::WARNING, "warning: productVersion option is an unexpected type\n"); 46*993229b6Sjkunz } 47*993229b6Sjkunz } 48*993229b6Sjkunz 49*993229b6Sjkunz // componentVersion 50*993229b6Sjkunz if (m_options->hasOption(kComponentVersionOption)) 51*993229b6Sjkunz { 52*993229b6Sjkunz stringValue = dynamic_cast<const StringValue *>(m_options->getOption(kComponentVersionOption)); 53*993229b6Sjkunz if (stringValue) 54*993229b6Sjkunz { 55*993229b6Sjkunz version.set(*stringValue); 56*993229b6Sjkunz image->setComponentVersion(version); 57*993229b6Sjkunz } 58*993229b6Sjkunz else 59*993229b6Sjkunz { 60*993229b6Sjkunz Log::log(Logger::WARNING, "warning: componentVersion option is an unexpected type\n"); 61*993229b6Sjkunz } 62*993229b6Sjkunz } 63*993229b6Sjkunz } 64*993229b6Sjkunz processDriveTagOption(BootImage * image)65*993229b6Sjkunzvoid BootImageGenerator::processDriveTagOption(BootImage * image) 66*993229b6Sjkunz { 67*993229b6Sjkunz if (m_options->hasOption(kDriveTagOption)) 68*993229b6Sjkunz { 69*993229b6Sjkunz const IntegerValue * intValue = dynamic_cast<const IntegerValue *>(m_options->getOption(kDriveTagOption)); 70*993229b6Sjkunz if (intValue) 71*993229b6Sjkunz { 72*993229b6Sjkunz image->setDriveTag(intValue->getValue()); 73*993229b6Sjkunz } 74*993229b6Sjkunz else 75*993229b6Sjkunz { 76*993229b6Sjkunz Log::log(Logger::WARNING, "warning: driveTag option is an unexpected type\n"); 77*993229b6Sjkunz } 78*993229b6Sjkunz } 79*993229b6Sjkunz } 80*993229b6Sjkunz 81