Resultados 1 al 1 de 1
  1. #1
    ElfMaker Avatar de AdrianDroid
    Fecha de ingreso
    18/may/2009
    Móvil
    -
    Mensajes
    263

    Post Explicacion de un Source "Hello Word"

    Conseptos basicos

    Hola compañeros de TopSony en este post tratare de explicarles de una manera sencilla y clara las dudas que se nos llegan a presentar la primera o las primeras veces que vemos el codigo de un elf.

    Nombre y Extension de los archivos

    El nombre y la extencion de los archivos que tenemos dentro de un codigo fuente (source) son muy importantes ,Tomaremos como ejemplo el source del elf Helow world la carpeta de este source contiene en su interior los archivos:

    *HelloWorld.eww
    *main.c
    *main.dep
    *main.ewp


    El archivo HelloWorld.eww es el espacio de trabajo es el que se encarga de juntar todos los archivos del source en el compilador para que nosotros podamos manipularlos mas facilmente desde el compilador.

    El archivo main.c es el mas importante del source este contiene el codigo de la programcion del elf(que modificaremos con el compilador).

    Los archivos como el main.dep con terminacion *DEP se crean la primera vez que creas el elf.

    Los archivos como el main.ewp con terminacion *EWP guardan informacion esencial del espacio de trabajo como el nombre con el que se creara el elf etc.....

    Comencemos con el codigo!!!

    Despues de haver entendido bien lo anterior podemos comenzar a ver las partes mas importantes del codigo de un elf , este es el codigo del main.c del source del Hellow world.

    #include "..\\include\Lib_Clara.h"
    #include "..\\include\Dir.h"

    u16 timer; // ID òàéìå*à
    int lamp=0; // òåêóùàÿ ÿ*êîñòü ëàìïû
    BOOK * HWBook;

    int TerminateElf(void * ,BOOK* book)
    {
    FreeBook(book);
    return(1);
    }

    typedef struct
    {
    BOOK * book;
    }MSG;

    int ShowAuthorInfo(void *mess ,BOOK* book)
    {
    MSG * msg = (MSG*)mess;
    MessageBox(EMPTY_SID,STR("Hello Wordl!\n\nExample elf.."), NOIMAGE, 1, 5000,msg->book);
    return(1);
    }

    const PAGE_MSG HW_PageEvents[]@ "DYN_PAGE" ={
    ELF_TERMINATE_EVENT , TerminateElf,
    ELF_SHOW_INFO_EVENT , ShowAuthorInfo,
    0,0
    };

    PAGE_DESC base_page ={"HW_BasePage",0,HW_PageEvents};


    void elf_exit(void)

    {
    kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
    }



    void onTimer (u16 unk , void * data)
    {
    {
    // ïå*åçàïóñêàåì òàéìå*
    Timer_ReSet(&timer,500,onTimer,0);
    // ïå*åêëþ÷àåì ëàìïó
    SetLampLevel(lamp^=0x10);
    }
    }

    void onCloseHWBook(BOOK * book)
    {
    if (book)
    {
    Timer_Kill(&timer);
    StatusIndication_ShowNotes(EMPTY_SID);
    SetLampLevel(0);
    SUBPROC(elf_exit);
    }
    }

    BOOK * CreateHWBook()
    {
    HWBook= new BOOK;
    CreateBook(HWBook,onCloseHWBook,&base_page,"Exampl e",-1,0);
    return(HWBook);
    }




    int main (void)
    {
    CreateHWBook();
    // âûâîäèì òåêñò â "çàìåòêè" íà StandBy
    StatusIndication_ShowNotes(STR("Hello World!"));
    // çàïóñêàåì òàéìå* íà 0.5 ñåê.
    timer=Timer_Set(500,onTimer,0);
    return(0);
    }
    Include:

    Como notaron en la parte de hasta arriba del codigo aparecen dos lineas que comienzan con #include

    #include "..\\include\Lib_Clara.h"
    #include "..\\include\Dir.h"
    Lapalabra include en español significa incluir la finalidad de estas 2 lineas es incluir 2 librerias al dodigo del elf.

    ¿Como sabemos que son librerias?Lo sabemos por que tienen extencion *h y las esta yamando desde la carpeta include que esta con nuestros demas sources dentro de la carpeta ELFMkaing.

    La Lib_Clara.h es la que contiene todas las funciones conocidas hasta el momento de hay es de donde se yaman alas funciones que ocupamos cuando hacemos o modificamos un elf.

    La libreria Dir.h contiene rutas predefinidas del telefono para que las podamos yamar desde hai sin tener que escribirlas nosotros de nuevo.

    Constantes:
    Como su nombre lo dice son constantes aqui vemos representadas las mas importantes.

    int TerminateElf(void * ,BOOK* book)
    {
    FreeBook(book);
    return(1);
    }

    int ShowAuthorInfo(void *mess ,BOOK* book)
    {
    MSG * msg = (MSG*)mess;
    MessageBox(EMPTY_SID,STR("Hello Wordl!\n\nExample elf.."), NOIMAGE, 1, 5000,msg->book);
    return(1);
    }

    const PAGE_MSG HW_PageEvents[]@ "DYN_PAGE" ={
    ELF_TERMINATE_EVENT , TerminateElf,
    ELF_SHOW_INFO_EVENT , ShowAuthorInfo,
    0,0
    };
    ¿Donde encontramos las contantes?
    En el archivo DYN_tag.h que esta dentro de la carpeta \ELFmaking\SE\include

    ¿Para que nos sirven las constantes?
    Para decirle al SE que cuando suceda sierta constante ejecute una determinada accion.

    ¿Como se usan?
    Primero en esta parte:

    [code=cpp] const PAGE_MSG HW_PageEvents[]@ "DYN_PAGE" ={
    ELF_TERMINATE_EVENT , TerminateElf,
    ELF_SHOW_INFO_EVENT , ShowAuthorInfo,
    0,0
    };[/code]
    Devemos definir que constantes vamos a usar, en este caso vamos a usar las constantes:
    *ELF_TERMINATE_EVENT
    *ELF_SHOW_INFO_EVENT


    a continuacion de cada una de eyas devemos poner una coma y el nombre que se le dara parauasarse dentro del codigo del elf en este caso se les asignaron los nombres:
    *TerminateElf
    *ShowAuthorInfo


    Arriba de donde definimos las constantes que vamos a usar se pone esto:

    int TerminateElf(void * ,BOOK* book)
    {
    FreeBook(book);
    return(1);
    }

    int ShowAuthorInfo(void *mess ,BOOK* book)
    {
    MSG * msg = (MSG*)mess;
    MessageBox(EMPTY_SID,STR("Hello Wordl!\n\nExample elf.."), NOIMAGE, 1, 5000,msg->book);
    return(1);
    }
    Como ya notaron los nombres de los bloques de codigo son los que definimos anterior mente:
    *TerminateElf
    *ShowAuthorInfo


    El qe se llama int TerminateElf(void * ,BOOK* book) dentro tiene lo que ara el elf al ser cerrado.

    El que se llama int ShowAuthorInfo(void *mess ,BOOK* book) dentro tiene lo que pasara al susceder la constante de la informacion del autor que es cuanod en el BookManager vemos el About de algun elf.

    El Book del elf:

    Cuando digo el Book del elf me refiero al book que se crea en el BookManager con el nombre de nuestro elf , para poder crear el book del elf devemos tener definidas en el codigo ciertas cosas,que se les muestran acontinuacion:

    BOOK * HWBook;
    typedef struct
    {
    BOOK * book;
    }MSG;
    void elf_exit(void)

    {
    kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
    }
    void onCloseHWBook(BOOK * book)
    {
    if (book)
    {
    Timer_Kill(&timer);
    StatusIndication_ShowNotes(EMPTY_SID);
    SetLampLevel(0);
    SUBPROC(elf_exit);
    }
    }
    BOOK * CreateHWBook()
    {
    HWBook= new BOOK;
    CreateBook(HWBook,onCloseHWBook,&base_page,"Exampl e",-1,0);
    return(HWBook);
    }
    Esto:

    BOOK * HWBook;
    typedef struct
    {
    BOOK * book;
    }MSG;
    void elf_exit(void)

    {
    kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
    }[/code]
    simplemente va hay no se los explicare para no confundirlos.

    los que es muy importante que comprendan son estos 2:

    [code=cpp] void onCloseHWBook(BOOK * book)
    {
    if (book)
    {
    Timer_Kill(&timer);
    StatusIndication_ShowNotes(EMPTY_SID);
    SetLampLevel(0);
    SUBPROC(elf_exit);
    }
    }
    BOOK * CreateHWBook()
    {
    HWBook= new BOOK;
    CreateBook(HWBook,onCloseHWBook,&base_page,"Exampl e",-1,0);
    return(HWBook);
    }
    El void onCloseHWBook(BOOK * book) dentro tiene lo que se ejecutara al cerrar el Book de nuestro elf.

    El BOOK * CreateHWBook()sirve para crear el nuevo Book y para decidir el nombre de su elf en el BookManager en este caso se llama "Example".

    int main (void):

    Todo lo que esta dentro del int main (void) es lo que ara el elf encuanto lo inicies.
    EJEMPLO:

    int main (void)
    {
    CreateHWBook();
    // âûâîäèì òåêñò â "çàìåòêè" íà StandBy
    StatusIndication_ShowNotes(STR("Hello World!"));
    // çàïóñêàåì òàéìå* íà 0.5 ñåê.
    timer=Timer_Set(500,onTimer,0);
    return(0);
    }
    La linea CreateHWBook(); esta llamando al bloque de codigo he vimos hace unos moentos para crear el Book del elf.

    Las lineas que al principio tiene // son comentarios en este caso estan encriptados.

    La linea StatusIndication_ShowNotes(STR("Hello World!")); le esta diciendo al elf que ponga una nota en el standby con el texto Hello World!.

    La linea timer=Timer_Set(500,onTimer,0); no se las explicare aHora se las explicare mas adelante en un post posterior a este.

    El return tampoco se los explicare aHora par no confundirlos.

    Bueno espero les aya sido de ayuda este post y ahora entiendan un poco mas como es que funciona la programacion de un elf, no me que mas que decir solo ECHENLE GANITAS!!
    Última edición por albertnet3; 20/10/2010 a las 17:56:21

Información de tema

Usuarios viendo este tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas similares

  1. Respuestas: 1
    Último mensaje: 18/06/2013, 20:36:51
  2. [AYUDA] ERROR - ERR_SEVERITY="MAJOR";ERR_CLASS="SECURITY_CLASS";ER R_STATIC="SIN_HEAD_VER";ER
    Por dizzi_mania en el foro Firmware - Actualización - Despersonalización - Cambio de idioma
    Respuestas: 0
    Último mensaje: 18/06/2013, 20:09:28
  3. Respuestas: 0
    Último mensaje: 15/04/2011, 22:26:17
  4. Pedido de "Source" de sensor de movimiento
    Por Razgriz PR en el foro Menús Flash
    Respuestas: 0
    Último mensaje: 28/04/2009, 14:20:26
  5. Tema Flash "Circle" & "Vegeta Skull" Para k850 y DB3150
    Por gil3005 en el foro Menús Flash
    Respuestas: 0
    Último mensaje: 29/11/2008, 20:45:26

Etiquetas para este tema

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •