Документирование libinkview
Goto page Previous  1, 2, 3, 4  Next
 
View unanswered posts
Post new topic   Reply to topic    The-eBook Forum Index -> PocketBook -> PocketBook Free
 

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

Author Message

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

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



Joined: 25 Nov 2011
Posts: 81



PostPosted: 07.12.2011 16:10     Quote

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


Всё понятно.

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

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

fbdev = open("/dev/fb0", O_RDONLY);
buffer = mmap(0, 800*480*2, PROT_WRITE, MAP_SHARED, fbdev, 0);
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 07.12.2011 17:17     Quote

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

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

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



Joined: 25 Nov 2011
Posts: 81



PostPosted: 08.12.2011 03:09     Quote

Quote:
Qt - легко

Просветите? Без написания драйвера? http://doc.qt.nokia.com/latest/qt-embedded-displaymanagement.html
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 08.12.2011 13:36     Quote

Vanuan wrote:
Quote:
Qt - легко

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


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

И давайте не отклоняться от темы.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
View user's profile Send private message E-mail Skype ICQ ^

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

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



Joined: 15 Jun 2011
Posts: 55



PostPosted: 08.12.2011 13:54     Quote

Vanuan wrote:
Quote:
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 выполнять вычисления в момент, пока происходит обновление участка.
 
View user's profile Send private message ^

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

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



Joined: 25 Nov 2011
Posts: 81



PostPosted: 08.12.2011 15:02     Quote

Quote:
Qt LightHouse


Спасибо за разъяснение Smile Похоже, я отстал от жизни.
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 18.12.2011 18:15     Quote

Добрый день!

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

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

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
 
View user's profile Send private message E-mail Skype ICQ ^

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

Член клуба The eBook



Joined: 18 Jun 2009
Posts: 694



PostPosted: 18.12.2011 23:22     Quote

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

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

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

OpenScreen();
....
SetEventHandler(arg_ivm);
....
while(...){
....
}
_________________
http://fedorchenko.net программы для PocketBook
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 01 Nov 2006
Posts: 1042



PostPosted: 19.12.2011 05:13     Quote

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

atexit(iv_exit_actions)
 
View user's profile Send private message ^

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

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



Joined: 15 Jun 2011
Posts: 55



PostPosted: 21.12.2011 20:02     Quote

sergeyvl wrote:

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
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 18 Jun 2009
Posts: 694



PostPosted: 22.12.2011 00:06     Quote

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

вопрос, а есть функция IsScreenOpened() или аналог?
а то повторный вызов OpenScreen() рушит, по крайней мере эмулятор.
и какая разница с OpenScreenExt()?
_________________
http://fedorchenko.net программы для PocketBook
 
View user's profile Send private message ^

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

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



Joined: 15 Jun 2011
Posts: 55



PostPosted: 22.12.2011 00:49     Quote

yuryfdr wrote:

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

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

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 22.12.2011 21:21     Quote

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

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


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

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

Code:

   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
 
View user's profile Send private message E-mail Skype ICQ ^

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

Член клуба The eBook



Joined: 18 Jun 2009
Posts: 694



PostPosted: 22.12.2011 21:55     Quote

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


а там тоже что-то типа while, я уже не помню. ковырял, когда исходники выложили. (если собирать sdk 1.0.х и inkinternal.h от 15 SDK, там как раз ошибки посыпятся.)
_________________
http://fedorchenko.net программы для PocketBook
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 23.12.2011 11:28     Quote

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


Нашел. void hw_setled(int state) (inkinternal.h). Только почему-то в новом inkinternal.h ее нет, хотя в libinkview.so присутствует.
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
View user's profile Send private message E-mail Skype ICQ ^

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

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



Joined: 15 Jun 2011
Posts: 55



PostPosted: 23.12.2011 11:55     Quote

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

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


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

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

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

sergeyvl wrote:

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

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

sergeyvl wrote:

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

Точно сказать не могу, но думаю намного больше. Ведь в спящем режиме останавливается все, засыпают потоки и т.п. и только особые события могут заставить процессор возобновить свою работу.
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 28.12.2011 13:12     Quote

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

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

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

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

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

2.
yuryfdr wrote:
вопрос, а есть функция 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
 
View user's profile Send private message E-mail Skype ICQ ^

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

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



Joined: 30 Nov 2011
Posts: 196



PostPosted: 30.12.2011 12:46     Quote

sergeyvl wrote:

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

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

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

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

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


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

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

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

#define OB_ADDTOLAST 0x01

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

#define OB_WITHRETURN 0x02

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

#define OB_PARAMSFIRST 0x04

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

#define OB_NONEWTASK 0x08

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

#define OB_SOFTUPDATE 0x10

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

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

см. вопрос 3
sergeyvl wrote:

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 если лежит горизонтально).
 
View user's profile Send private message ^

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

Член клуба The eBook



Joined: 12 Nov 2010
Posts: 1240


Location: Украина. Харьков

PostPosted: 30.12.2011 12:49     Quote

a.k., спасибо!
_________________
Шахматы - PocketBook,Kindle,Onyx,Kobo,Android
 
View user's profile Send private message E-mail Skype ICQ ^

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

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



Joined: 07 Feb 2012
Posts: 1


Location: Dontetsk, Ukraine

PostPosted: 07.02.2012 22:56     Quote

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

Code:

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 всё заработало нормально без изменений в коде.
 
View user's profile Send private message ^
Display posts from previous:   
Post new topic   Reply to topic    The-eBook Forum Index -> PocketBook -> PocketBook Free All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

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