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