Документирование libinkview
На страницу Пред.  1, 2, 3, 4  След.
 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов The-eBook -> PocketBook -> PocketBook Free
 

Ваше отношение к созданию документации
Поддерживаю
71%
 71%  [ 20 ]
Поддерживаю и готов учавствовать
21%
 21%  [ 6 ]
Мне все равно
7%
 7%  [ 2 ]
Всего проголосовало : 28

Автор Сообщение

Vanuan
Продвинутый участник форума

Продвинутый участник форума



Зарегистрирован: 25.11.2011
Сообщения: 81



СообщениеДобавлено: 07.12.2011 16:10     Цитата

Цитата:
А реальный это фреймбуффер или виртуальный какой-нибудь, меня не волнует. Я так думаю что в связи с появлением многозадачности точно появятся виртуальные буфера для каждой задачи.


Всё понятно.

Это не имеет ничего общего с фреймбуфером. Это просто буферизованный вывод на экран.
Это нивелирует все достоинства настоящего фреймбуфера (нельзя использовать SDL, Qt, запустить иксы без каких-либо изменений в их код).

Очевидно, что мы говорим о разных фреймбуферах. Я имел в виду это:

fbdev = open("/dev/fb0", O_RDONLY);
buffer = mmap(0, 800*480*2, PROT_WRITE, MAP_SHARED, fbdev, 0);
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 07.12.2011 17:17     Цитата

Иксы запустить так просто нельзя, это да. С SDL не работал, не могу ничего сказать. А вот Qt - легко Smile За это и уважаю я Qt, хоть он и тяжел. А работая с этим "виртуальным" фреймбуффером ваше приложение не будет выглядеть "чужеродным элементом" на будущей многозадачной прошивке.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

Vanuan
Продвинутый участник форума

Продвинутый участник форума



Зарегистрирован: 25.11.2011
Сообщения: 81



СообщениеДобавлено: 08.12.2011 03:09     Цитата

Цитата:
Qt - легко

Просветите? Без написания драйвера? http://doc.qt.nokia.com/latest/qt-embedded-displaymanagement.html
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 08.12.2011 13:36     Цитата

Vanuan писал(а):
Цитата:
Qt - легко

Просветите? Без написания драйвера? http://doc.qt.nokia.com/latest/qt-embedded-displaymanagement.html


Можно с написанием, можно и без, потому что он уже написан. Что вам мешает "содрать" Qt с 603/903? Там Qt уже должно быть, потому что там должен был появиться новый броузер. Думаю этот Qt должен работать и на 602/902.

И давайте не отклоняться от темы.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 08.12.2011 13:54     Цитата

Vanuan писал(а):
Цитата:
Qt - легко

Просветите? Без написания драйвера? http://doc.qt.nokia.com/latest/qt-embedded-displaymanagement.html


На pocketbook qt реализовано не через Qt Embedded, а через Qt LightHouse, который интегрирован в qt 4.8.0.
Порт работает с использованием стандартных функций libinkview. Доступ к буферу происходит через GetCanvas.
PartialUpdate в данном случае работает в отдельном потоке, что позволяет qt выполнять вычисления в момент, пока происходит обновление участка.
 
Профиль Сообщение ^

Vanuan
Продвинутый участник форума

Продвинутый участник форума



Зарегистрирован: 25.11.2011
Сообщения: 81



СообщениеДобавлено: 08.12.2011 15:02     Цитата

Цитата:
Qt LightHouse


Спасибо за разъяснение Smile Похоже, я отстал от жизни.
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 18.12.2011 18:15     Цитата

Добрый день!

Спешу сообщить что сотрудники покетбука согласились способствовать данному проекту.

Еще несколько вопросов:

1. Назначение функций OpenScreen(), OpenScreenExt()?

2. ОЧЕНЬ ВАЖНЫЙ ВОПРОС. Как ведет себя устройство при отключении питания через кнопку и по таймеру? Все что мне удалось выяснить - вызывается main_handler() с EVT_EXIT и если через 5 секунд я не завершу обработку этого события, мою программу просто кильнут.

2.1. Можно ли на это как-то повлиять (если я хочу все-таки завершить все корректно, но завершение занимает более 5 сек)?
2.2. От куда по стеку вызывается main_handler() с EVT_EXIT при завершении программы? Кроме этого последнего раза main_handler() всегда вызывается из InkViewMain(). Когда приходит EVT_EXIT, он вызывается (судя по эмулятору) не из InkViewMain() а из iv_exit_actions(), которая в свою очередь в конце концов вызывается от куда? Мало того что программа завершается, так и не выходя из InkViewMain(), так еще и не вызываются деструкторы глобальных объектов...

3. void FullUpdateHQ() ? HQ = High Quality?

4. чем отличаются SetEventHandler() и SetEventHandlerExt()?

5. LeaveInkViewMain() - назначение функции? Судя по названию применяется тоже для выхода из программы. Проверял на эмуляторе, из InkViewMain() действителино выходит (в отличии от CloseApp()). Выходит что для завершения лучше использовать эту функцию или все-таки CloseApp()?

6. void SetAutoPowerOff(int en) - интервал времени до выключения устройства, тот что можно задать и через настройки? В чем задается? Действует только для текущей программы или и для всех последующих?
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

yuryfdr
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 18.06.2009
Сообщения: 694



СообщениеДобавлено: 18.12.2011 23:22     Цитата

sergeyvl писал(а):
1. Назначение функций OpenScreen(), OpenScreenExt()?

я так понимаю, что тут происходит инициализация данных для приложения.
Без её вызова (до вызова InkViewMain) "рушаться" ScreenWidth(), OpenFont() и т.д.

в directfb этот вызов есть, InkViewMain нет.
InkViewMain, ИМХО, выглядит примерно так:

OpenScreen();
....
SetEventHandler(arg_ivm);
....
while(...){
....
}
_________________
http://fedorchenko.net программы для PocketBook
 
Профиль Сообщение ^

pkb
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 01.11.2006
Сообщения: 1042



СообщениеДобавлено: 19.12.2011 05:13     Цитата

sergeyvl писал(а):
Когда приходит EVT_EXIT, он вызывается (судя по эмулятору) не из InkViewMain() а из iv_exit_actions(), которая в свою очередь в конце концов вызывается от куда?

atexit(iv_exit_actions)
 
Профиль Сообщение ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 21.12.2011 20:02     Цитата

sergeyvl писал(а):

2.2. От куда по стеку вызывается main_handler() с EVT_EXIT при завершении программы? Кроме этого последнего раза main_handler() всегда вызывается из InkViewMain(). Когда приходит EVT_EXIT, он вызывается (судя по эмулятору) не из InkViewMain() а из iv_exit_actions(), которая в свою очередь в конце концов вызывается от куда? Мало того что программа завершается, так и не выходя из InkViewMain(), так еще и не вызываются деструкторы глобальных объектов...

4. чем отличаются SetEventHandler() и SetEventHandlerExt()?


1) OpenScreen() - инициализирует некоторые структуры и позволяет, к примеру, произвести вывод сообщения на экран и т.п. до запуска InkViewMain.
4) SetEventHandlerEx в отличие от SetEventHandler просто переключает обработчик без отсылки сообщений EVT_HIDE и EVT_SHOW
 
Профиль Сообщение ^

yuryfdr
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 18.06.2009
Сообщения: 694



СообщениеДобавлено: 22.12.2011 00:06     Цитата

NetSpider писал(а):
1) OpenScreen() - инициализирует некоторые структуры и позволяет, к примеру, произвести вывод сообщения на экран и т.п. до запуска InkViewMain.

вопрос, а есть функция IsScreenOpened() или аналог?
а то повторный вызов OpenScreen() рушит, по крайней мере эмулятор.
и какая разница с OpenScreenExt()?
_________________
http://fedorchenko.net программы для PocketBook
 
Профиль Сообщение ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 22.12.2011 00:49     Цитата

yuryfdr писал(а):

вопрос, а есть функция IsScreenOpened() или аналог?
а то повторный вызов OpenScreen() рушит, по крайней мере эмулятор.
и какая разница с OpenScreenExt()?

- По поводу OpenScreenExt() ничего не знаю. Может кто из PocketBook подскажет.
- Про аналог IsScreenOpened не слышал. Не знаю зачем нужно вызывать OpenScreen второй раз в приложении. Я бы завел флаг на такой случай, если есть вероятность повторного вызова.
- void SetAutoPowerOff(int en). Включает/Выключает таймер автовыключения устройства. Время судя по всему берется из настроек. en принимает соответственно 0 или 1.
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 22.12.2011 21:21     Цитата

yuryfdr писал(а):
в directfb этот вызов есть, InkViewMain нет.
InkViewMain, ИМХО, выглядит примерно так:

OpenScreen();
....
SetEventHandler(arg_ivm);
....
while(...){
....
}


Спасибо, Юра.

Мне такой способ больше понравился. Можно запускать inkview в отдельном потоке и при этом корректно из него выходить (на 301+ у меня нет LeaveInkViewMain). Например, так:

Код:

   while (isRunning)
    {
        int type = 0, par1 = 0, par2 = 0, mod=0;
#ifdef INKVIEW_PRO
        if (hw_nextevent(&type, &mod, &par1, &par2))
#else
        if (hw_nextevent(&type, &par1, &par2))
#endif
        {
            qDebug("event(%d %d %d)", type, par1, par2);
            event(type,par1,par2); // Process event
        }
        usleep(10000);
    }


Вот и понадобился мне inkinternal ...

Единственное, SetEventHandler(arg_ivm); в исходниках DirectFB я не нашел.

Еще одна проблема - лампочка все время горит.
1. Можно ли как-нибудь погасить лампочку но не входить при этом в спящий режим?
2. В мидори тоже все время горит лампочка??? Входа в спящий режим я не нашел нигде в DirectFB/Midori
3. Может кто знает на сколько больше потребляет процессор находясь не в спящем режиме (например в usleep'е) по сравнению со спящим режимом?
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

yuryfdr
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 18.06.2009
Сообщения: 694



СообщениеДобавлено: 22.12.2011 21:55     Цитата

sergeyvl писал(а):
Единственное, SetEventHandler(arg_ivm); в исходниках DirectFB я не нашел.


а там тоже что-то типа while, я уже не помню. ковырял, когда исходники выложили. (если собирать sdk 1.0.х и inkinternal.h от 15 SDK, там как раз ошибки посыпятся.)
_________________
http://fedorchenko.net программы для PocketBook
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 23.12.2011 11:28     Цитата

sergeyvl писал(а):
1. Можно ли как-нибудь погасить лампочку но не входить при этом в спящий режим?


Нашел. void hw_setled(int state) (inkinternal.h). Только почему-то в новом inkinternal.h ее нет, хотя в libinkview.so присутствует.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

NetSpider
Искушенный участник форума

Искушенный участник форума



Зарегистрирован: 15.06.2011
Сообщения: 55



СообщениеДобавлено: 23.12.2011 11:55     Цитата

sergeyvl писал(а):
yuryfdr писал(а):
в directfb этот вызов есть, InkViewMain нет.
InkViewMain, ИМХО, выглядит примерно так:

OpenScreen();
....
SetEventHandler(arg_ivm);
....
while(...){
....
}


Спасибо, Юра.

Мне такой способ больше понравился. Можно запускать inkview в отдельном потоке и при этом корректно из него выходить (на 301+ у меня нет LeaveInkViewMain). Например, так:

Нет. Такой способ без главного цикла inkview не пройдет. Там слишком много всего помимо работы спящего режима. В Midori wi-fi постоянно включен, поэтому про sleep режим там и не было речи. Qt изначально планировался не только для браузера, но и для портирования других программ. В нем как раз используется InkViewMain.

sergeyvl писал(а):

Еще одна проблема - лампочка все время горит.

Лампочка является индикатором работы устройства, когда она тухнет - устройство засыпает.

sergeyvl писал(а):

3. Может кто знает на сколько больше потребляет процессор находясь не в спящем режиме (например в usleep'е) по сравнению со спящим режимом?

Точно сказать не могу, но думаю намного больше. Ведь в спящем режиме останавливается все, засыпают потоки и т.п. и только особые события могут заставить процессор возобновить свою работу.
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 28.12.2011 13:12     Цитата

По результатам обновил документацию.

Огромное спасибо, NetSpider, yuryfdr, pkb за помощь и участие.

Очень надеюсь также что и представители компании подключатся к этому делу. Надобность в документации думаю не отпадет даже если libinkview откроют.

Еще пара вопросов.

1. Кроме LeaveInkViewMain есть еще способы выйти из InkViewMain? Дело в том, что такой полезной функции как LeaveInkViewMain не оказалось на 301+ в последней прошивке.

2.
yuryfdr писал(а):
вопрос, а есть функция IsScreenOpened() или аналог?


Вопрос не лишен смысла. Видимо есть. Иначе как работает InkViewMain после вызова OpenScreen?

3. Хотелось бы описание флагов для OpenBook:

#define OB_ADDTOLAST 0x01
#define OB_WITHRETURN 0x02
#define OB_PARAMSFIRST 0x04
#define OB_NONEWTASK 0x08
#define OB_SOFTUPDATE 0x10

Особенно OB_PARAMSFIRST, OB_NONEWTASK. Смысл остальных более-менее понятен.

4. При вызове OpenBook текущий процесс я так понимаю выгружается а потом загружается снова если стоит WITHRETURN? Или с появлением многозадачности он может и не выгружаться?

5. В каких единицах возвращает информацию

int ReadGSensor(int *x, int *y, int *z);
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

a.k.
Активный участник форума

Активный участник форума



Зарегистрирован: 30.11.2011
Сообщения: 196



СообщениеДобавлено: 30.12.2011 12:46     Цитата

sergeyvl писал(а):

Очень надеюсь также что и представители компании подключатся к этому делу. Надобность в документации думаю не отпадет даже если libinkview откроют.

Еще пара вопросов.

1. Кроме LeaveInkViewMain есть еще способы выйти из InkViewMain? Дело в том, что такой полезной функции как LeaveInkViewMain не оказалось на 301+ в последней прошивке.

Стандартных нету. Можно попробовать через setjmp/longjmp, должно работать.
sergeyvl писал(а):

2.
yuryfdr писал(а):
вопрос, а есть функция IsScreenOpened() или аналог?


Вопрос не лишен смысла. Видимо есть. Иначе как работает InkViewMain после вызова OpenScreen?

При открытии экрана устанавливается переменная ivstate.isopen (нужно инклудить inkinternal.h)
sergeyvl писал(а):

3. Хотелось бы описание флагов для OpenBook:

#define OB_ADDTOLAST 0x01

Добавляет книгу в список последних открытых
sergeyvl писал(а):

#define OB_WITHRETURN 0x02

Открывает книгу как новый процесс, после закрытия управление возвращается вызвавшему процессу. Для прошивки с многозадачностью значения не имеет.
sergeyvl писал(а):

#define OB_PARAMSFIRST 0x04

внутренний флаг, использовать не нужно
sergeyvl писал(а):

#define OB_NONEWTASK 0x08

Для прошивки с многозадачностью - открыть книгу в контексте текущей задачи, т.е. действие флага обратно OB_WITHRETURN (по умолчанию создаётся новая задача). Для прошивки без многозадачности значения не имеет
sergeyvl писал(а):

#define OB_SOFTUPDATE 0x10

Первое обновление будет без заливки чёрным.
sergeyvl писал(а):

4. При вызове OpenBook текущий процесс я так понимаю выгружается а потом загружается снова если стоит WITHRETURN? Или с появлением многозадачности он может и не выгружаться?

см. вопрос 3
sergeyvl писал(а):

5. В каких единицах возвращает информацию

int ReadGSensor(int *x, int *y, int *z);

x,y,z зависят от модели гиродатчика. Для MMA7455 (Pocket360) ускорение 1g=0x3F, для ADXL345 (60x,90x) 1g=0xFF
Сама функция возвращает ориентацию (0-3 как для SetOrientation, -1 если лежит горизонтально).
 
Профиль Сообщение ^

sergeyvl
Член клуба The eBook

Член клуба The eBook



Зарегистрирован: 12.11.2010
Сообщения: 1243


Откуда: Украина. Харьков

СообщениеДобавлено: 30.12.2011 12:49     Цитата

a.k., спасибо!
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
Профиль Сообщение E-mail Skype ICQ ^

trollixx
Новенький участник форума

Новенький участник форума



Зарегистрирован: 07.02.2012
Сообщения: 1


Откуда: Dontetsk, Ukraine

СообщениеДобавлено: 07.02.2012 22:56     Цитата

Подскажите, пожалуйста, конфигуратор с элементом CFG_CUSTOM не на всех прошивках работает или я его неправильно использую? Я хочу сделать пункт меню, в котором выбирается каталог на устройстве. Код:

Код:

static iconfig *u1SyncConfig = NULL;
static char localDir[255];

...

void localDirSelectHandler(char *path)
{
    if (path) {
        WriteString(u1SyncConfig, "localDir", path);
        UpdateCurrentConfigPage();
    }
}

void configItemChangeHandler(char *itemName)
{
    if (strcmp(itemName, "localDir") == 0) {
        OpenDirectorySelector("Select local directory for sync", localDir, 255, localDirSelectHandler);
    }
}

static iconfigedit defaultConfig[] = {
    {CFG_INFO, NULL, "Version", NULL, NULL, "0.1", NULL, NULL},
    {CFG_CUSTOM, NULL, "Local Synchronization Directory", NULL, "localDir", "/mnt/ext1/UbuntuOneSync/", NULL, NULL},
  { 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
};

...

OpenConfigEditor("Configuration", u1SyncConfig, defaultConfig, config_ok, configItemChangeHandler);


На эмуляторе работает, на 611 пункт "Local Synchronization Directory" вообще не виден.

Спасибо.

UPDATE: После обновления на 15.5 всё заработало нормально без изменений в коде.
 
Профиль Сообщение ^
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов The-eBook -> PocketBook -> PocketBook Free Часовой пояс: GMT + 4
На страницу Пред.  1, 2, 3, 4  След.
Страница 3 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

© The-eBook, 1999-2014. © Design by Prohorenkov
Syndicating News | Powered by phpBB © 2001, 2005 phpBB Group.
Хостинг предоставлен компанией DatForce     Яндекс.Метрика