Идея в том, чтобы создать единую базу, из которой эльфы будут брать значения оффсетов в симах, инвентов и всего, что для каждой прошивки разное.
Файл имеет имя phone.db. Для каждой прошивки свой. Любое значение в базе занимает 4 байта. Каждое значение жёстко привязано к своему смещению в базе. В качестве параметра ниже приведённой функции используется как раз это смещение в базе.
Кидать его в папку /b/Elf/
Прочитать значение из базы можно следующей функцией
// оффсеты значений в базе
#define KEYPAD_LOCK 0
#define WORKING_TABLE 4
UINT32 fReadDB(UINT32 offset)
{
UINT32 result=0;
UINT32 readen;
FILE_HANDLE_T f;
WCHAR baseName[32] = L"file://b/Elf/phone.db";
if (DL_FsFFileExist( baseName) == TRUE ) // проверяем есть ли файл
{
f = DL_FsOpenFile(baseName, FILE_READ_MODE, 0);
if(f!=0x0000FFFF) // проверяем открыт ли файл
{
DL_FsFSeekFile( f, offset, 0);
DL_FsReadFile( &result, 4, 1, f, &readen );
DL_FsCloseFile(f);
}
}
return result;
}
Например, чтоб узнать заблокирована клавиатура или нет можно так
UINT32 offsetLock=0; // оффсет в базе телефона
UINT8 bLock=0; // 1-клава заблок., 0-разблок.
// читаем оффсет из phone.db
offsetLock = fReadDB(KEYPAD_LOCK);
DL_DbFeatureGetCurrentState( offsetLock, &bLock );
Только за, если кто то будет пополнять базу
Сообщение отредактировал om2804 - 23.1.2008, 14:19
Файл имеет имя phone.db. Для каждой прошивки свой. Любое значение в базе занимает 4 байта. Каждое значение жёстко привязано к своему смещению в базе. В качестве параметра ниже приведённой функции используется как раз это смещение в базе.
Кидать его в папку /b/Elf/
Прочитать значение из базы можно следующей функцией
Код
// оффсеты значений в базе
#define KEYPAD_LOCK 0
#define WORKING_TABLE 4
UINT32 fReadDB(UINT32 offset)
{
UINT32 result=0;
UINT32 readen;
FILE_HANDLE_T f;
WCHAR baseName[32] = L"file://b/Elf/phone.db";
if (DL_FsFFileExist( baseName) == TRUE ) // проверяем есть ли файл
{
f = DL_FsOpenFile(baseName, FILE_READ_MODE, 0);
if(f!=0x0000FFFF) // проверяем открыт ли файл
{
DL_FsFSeekFile( f, offset, 0);
DL_FsReadFile( &result, 4, 1, f, &readen );
DL_FsCloseFile(f);
}
}
return result;
}
Например, чтоб узнать заблокирована клавиатура или нет можно так
Код
UINT32 offsetLock=0; // оффсет в базе телефона
UINT8 bLock=0; // 1-клава заблок., 0-разблок.
// читаем оффсет из phone.db
offsetLock = fReadDB(KEYPAD_LOCK);
DL_DbFeatureGetCurrentState( offsetLock, &bLock );
Только за, если кто то будет пополнять базу
Сообщение отредактировал om2804 - 23.1.2008, 14:19