brdbootldr/ubootldr/inc/bootldr.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 07 Jan 2010 13:38:45 +0200
changeset 10 36bfc973b146
parent 9 96e5fb8b040d
permissions -rw-r--r--
Revision: 201001 Kit: 201001

// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// bootldr\inc\bootldr.h
// 
//

#ifndef FILE_ID
#error File ID not specified
#endif

#include "bootloader_variantconfig.h"

#define BOOTLDR_VERSION_MAJOR 1
#define BOOTLDR_VERSION_MINOR 11

#ifndef PLATFORM_BUILD
#define PLATFORM_BUILD 0
#endif

#include <e32std.h>
#include <e32svr.h>
#include <e32cons.h>
#include <f32file.h>
#include <d32comm.h>

GLREF_C void BootFault(TUint aId, TInt aLine, char aFileName[]);
#define BOOT_FAULT()	BootFault(FILE_ID,__LINE__, __FILE__ )
#define TEST(c)		((void)((c)||(BOOT_FAULT(),0)))
#define CHECK(c)	((void)(((c)==0)||(RDebug::Print(_L("Error %d at line %d\n"),(c),__LINE__),BOOT_FAULT(),0)))

//#define _DEBUG_CORELDR_  1

#ifdef _DEBUG_CORELDR_        
    #define DEBUG_PRINT(m) PrintToScreen m;	\
                           RDebug::Print m;
#else
    #define DEBUG_PRINT(m)
#endif    

#define TROM_LOADER_HEADER_SIZE 0x100

GLREF_D TInt LoadDrive;
GLREF_D TInt LoadFile;
GLREF_D TInt LoadSize;
GLREF_D TInt ImageSize;
GLREF_D TInt ImageReadProgress;
GLREF_D TBool ImageHeaderPresent;
GLREF_D TBool ImageZip;
GLREF_D TBool LoadToFlash;
GLREF_D TBool FlashBootLoader;
GLREF_D TBuf<256> FileName;
GLREF_D TUint32 RamBootPhys;
GLREF_D TUint32 * ActualDestinationAddress;
GLREF_D TInt SerialDownloadPort;
GLREF_D TBps SerialBaud;
GLREF_D RFile bootFile;
GLREF_D TInt FileSize;
GLREF_D TBool ImageDeflated;
GLREF_D TBool RomLoaderHeaderExists;
GLREF_D TBusLocalDrive LocDrv;
GLREF_D TBool LocDrvChg;
GLREF_D TInt64 LocDrvPos;

enum TLoadDevice
	{
	ELoadDrive,
	ELoadSerial,
	ELoadUSBMS,
	EBootUSBMS,
	EBootEMMC
	};

GLREF_D TLoadDevice LoadDevice;

typedef TInt (*TInputFunc)(TUint8* aDest, TInt& aLength);
GLREF_D TInputFunc InputFunction;

typedef void (*TCloseInputFunc)();
GLREF_D TCloseInputFunc CloseInputFunction;

inline TInt ReadInputData(TUint8* aDest, TInt& aLength)
	{ return (*InputFunction)(aDest,aLength); }
inline void CloseInput()
	{ (*CloseInputFunction)(); }


GLREF_C TInt LoadDriver(const TDesC& aName, TBool aPdd);

// Graphical screen methods
GLREF_C void PrintToScreen(TRefByValue<const TDesC> aFmt,...);
GLREF_C void InitDisplay();
GLREF_C void ClearScreen();
GLREF_C void PutChar(TUint aChar);
GLREF_C void PutString(const TDesC& aBuf);
GLREF_C void InitProgressBar(TInt aId, TUint aLimit, const TDesC& aTitle);
GLREF_C void UpdateProgressBar(TInt aId, TUint aProgress);

// Menu
GLREF_C void StartMenu();
GLREF_C void EnableMenu();
GLREF_C void DisableMenu();

// Fundamental download methods
GLREF_C void DoDownload();
GLREF_C TInt DoZipDownload(RFile &aBootFile);
GLREF_C TInt DoDeflateDownload();
GLREF_C void Restart(TInt aCode);

// Media download
GLREF_C TBool SearchDrives();
GLREF_C TInt ReadFromFile(TUint8* aDest, TInt& aLength);
GLREF_C void CloseFile();
GLREF_C TInt GetInnerCompression(TBool &aImageDeflated, TBool &aRomLoaderHeaderExists);

// Local Drive Raw Access
GLREF_C TBool SearchDrivesRaw();
GLREF_C TInt ReadFromLocalDrive(TUint8* aDest, TInt& aLength);
GLREF_C void CloseLocalDrive();

// Serial download
GLREF_C TInt InitSerialDownload(TInt aPort);

// NOR FLASH methods
GLREF_C TInt InitFlashWrite();
GLREF_C void NotifyDataAvailable(TInt aTotalAmount);
GLREF_C void NotifyDownloadComplete();

// USB Mass Storage download
GLREF_C void TryUSBMS();
GLREF_C TBool StartUSBMS();

// Variant supplied methods
GLREF_C void VariantInit();
GLREF_C void ReadConfig();
GLREF_C void WriteConfig();

inline TLinAddr DestinationAddress()
	{ return (TLinAddr)ActualDestinationAddress; }