Iniciando no Symbian C++ para Serie 60 – Parte 03


Testando no aparelho vs testando no emulador:

Considerando a diferente natureza das plataformas WINS (emulador) e ARMi (o Hardware alvo), é natural esperar grandes diferenças entre as duas plataformas.No entanto, a equipe de programadores da Symbian Ltd e da Nokia fez um excelente trabalho, criando um emulador capaz de recriar a plataforma symbian no emulador EPOC , em seus aspectos mais críticos.

 
net-31-03-2008pic01.JPG

Mesmo sendo um excelente emulador, ainda existem questões por levar e consideração:

 

·                     Temporização:

Alem da execução no PC ser mais rápida. existem outras diferenças entre WINS e ARMi. Curiosamente, ARMi tem mais ticks de relógio que WINS ( 1/64 contra 1/10) ,embora a tela só possa ser atualizada 30 vezes por segundo no emulador.

 

·                     modelo de threads e processos:

A plataforma WINS usa o modelo de threads e processos do windows, e por isso chama-se WINS (Windows Single Process),pois todas as aplicações compartilham um único processo, mas rodam em threads diferentes, enquanto em ARMi , cada aplicação possui seu próprio processo. Para aplicações que dependem dessa organização, isso pode ser um fator complicante

 

·                     Memória e pilha:

a pilha e a memória para a plataforma WINS são ajustáveis. então , se sua aplicação requer mais memória, você coloca mais na configuração do emulador. infelizmente , com ARMi , não há como fazer muito neste sentido. podemos, no entanto pedir mais memória ao sistema dentre o pouco disponível.

 

·                     Alinhamento de palavra:

Diferentemente da WINS , a plataforma ARMi usa endereços alinhados em 32 bit, então acessos diretos a endereços que não estiverem nesse formato podem causar violações de acesso

 

Esqueleto de uma aplicação básica:

 

raiz da DLL->Application->Document->AppUi->View

 

 

Raiz de uma DLL:

 

Neste ponto, temos duas funções NewApplication e E32DLL.

a primeira , cria e retorna pro sistema operacional um ponteiro de aplicação segundo esse modelo. Já a segunda, E32DLL é o ponto de entrada da DLL, no entanto, essa função normalmente apenas retorna a constant KErrNone

 

Application , derivada de CEikApplication ,que é nova no Symbian 6 , mas que vem de CApaApplication do Epoc Release 5.

 

constrói o ambiente básico pra criar nossa aplicação básica. constrói também coisas como a cleanup stack ,que é uma estrutura de controle útil  pra preservar a memória do sistema em caso de problemas

Ex:

 

class MyApplication:public CEikApplication

{

private:

         CApaDocument* CreateDocumentL();

         TUid AppDllUid() const

         {

         return KUidMy1st;

         }

};

 

 

Document, derivada de CEikDocument , é nova para o Symbian 6 , mas deriva de CApaDocument, do Epoc Release 5.

 

Constrói uma poderosa estrutura de manipulação de dados persistentes, mas que para a Series 60 , não é tão utilizada. No Symbian em geral , é nesta parte do programa que cuida do documento aberto pelo programa.

 

 

Ex:

class MyDocument : public CEikDocument

         {

public:

         static MyDocument* NewL(CEikApplication& aApp);

         MyDocument(CEikApplication& aApp);

         void ConstructL();

private:

         CEikAppUi* CreateAppUiL()

         {

    return new(ELeave) MyAppUi;

         }

         };

 

 

AppUi, derivada de CEikAppUi que por sua vez é derivada de CCoeAppUi e as duas são novas para o Symbian 6.

ela é importante pq ela contem a informação da organização da interface com o usuário

bem como tratamento de eventos e outras características da aplicação na interação com o usuário.Ela também é responsável pela criação das Views da aplicação

Ex:

 

class MyAppUi : public CEikAppUi

    {

public:

    void ConstructL();

         ~MyAppUi();

private:

         CCoeControl* AppView;

         };

 

 

a View é justamente o que o nome sugere, a representação visual dos dados da aplicação. Ela é derivada de CCoeControl ,que existe desde o Epoc Release 5.

 

é na View que entra grande parte da costumização que transforma nossa aplicação.

Ex:

 

class MyAppView:public CCoeControl

{

public:

static MyAppView* NewL(const TRect& Rect);

         MyAppView();

         ~MyAppView();

        TInt32 PressState;

        void ConstructL(const TRect& Rect);

        TInt iX,iY;

private:

        CFbsBitmap* Teste;

         CFbsBitmap* Fundo;

        CPeriodic *iTimer;

         void Draw(const TRect& Rect) const;

        TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);

        static TInt Timedfunc(TAny* View);

        void ModifyBitmap();

        void UpdateScreen();

};

Dicionário Series 60:

middleware: camada intermediaria de software;

embedded: embarcado- refere-se a sistemas contidos inteiramente em uma única peça e que é impossível separar um componente do resto;

cross-plataform: plataforma cruzada- refere-se  ao desenvolvimento em uma plataforma, mas que somente será executado em outra plataforma;

Arquivos SIS: Symbian Instalation System- arquivos de instalação do sistema Symbian;

Heap: “zona” de memória. A memória disponível para livre alocação;

UI- User Interface. a interface com o usuário;

Engines: é a parte dos sistemas que processa os dados;
 

CORE: a parte mais interna do sistema, como os servers e o kernel

ARM , ARM4,ARMi,Thumb : ARM é o processador que dá vida ao sistema da Series 60 e ARM4,ARMi e Thumb são seus modos de operação. ARM4 é um modo em que o código é maior , mas é extremamente veloz. Thumb é um modo de operações pequenas, 16 bits, mais lento e econômicos em termos de energia. Já o ARMi é um modo intermediário, sendo compatível com os dois modos.

 

Conclusão:

 

Com este artigo, eu não digo que o leitor vai entender tudo sobre a Serie 60 da Nokia, mas com certeza já vai entrar para o mundo móbile preparado para aprender com a documentação online, que é farta e cada vez maior, com a literatura especializada e o com principal, com a experimentação.

 

Para um aprendizado mais profundo, recomendo ao leitor registrar-se no Fórum Nokia (www.forum.nokia.com) e no site Code Blood (www.codeblood.com.br). Para literatura em formato tradicional, recomendo o Developing Series 60 Applications, da EMCC softwate (ISBN:0-321-22722-0). Recomendo também a aquisição ou empréstimo de um aparelho Series 60. Nada supera o verdadeiro teste do aparelho (muito menos a alegria de ver seu programa funcionar no aparelho).

A partir de agora, tudo depende de você ,leitor, para se transformar em DESENVOLVEDOR – bons códigos!