You are on page 1of 3

OBSERVACIONES SISTEMA DE GESTIN DE EVENTOS

____________________________________________
EVENT_STATE Event_Initialize(const Event_TopicDef *topic_table, uint16_t ntopic)
Esta funcin se encarga de pasar la lista de TOPICS y su el nmero de TOPICS
a la variable global Events de tipo Event_ResourcesDef.
Event *Event_Create(uint8_t type, int topic, osMessageQId os_msg)
Esta funcin funcin reserva memoria para un evento con la siguiente estruct
ura
EVENTO (Event) --> DEFINICIN (Event_TopicDef) -->TOPIC AL QUE VA ASOCI
ADO
-->DESCRIPCION (TEXTO PA
RA DEBUG)
-->INFO DEL TOPIC(Event_
TopicInfo)

-->ESTADO DEL TOPIC (EVENT_TOPIC_STATE)

-->RECUENTO DE ELEMENTOS PUBLICADOS AL EVENTO EN ESE MOMENTO


-->LISTA DE SUBSCRIPTORES
-->Identificacin RTOS del mensaje (osMessageQId)
Al final la funcin discrimina si el evento es de tipo PUBLICACIN O SUBSCRI
PCIN. Por norma general los eventos parecen de subscripcin y publicacin.
Como si se tratara de un mensaje normal alguien lo genera y alguien lo r
ecibe. Aunque por lo que he visto tambin existen eventos solo de publicacin.
Su funcin puede ser alterar un FLAG de lo que Csar denomina Core pero toda
va no lo tengo claro. Aunque rebuscando veo que el evento core_event est
subscrito al TOPIC_RTC. Pero es diferente evento. Acaso podemos subscribi
rnos a un FLAG concreto? Creo que todo deriva en que un evento es subcriptor
y publicador cuando el en si mismo puede publicar y recibir, pero no sig
nifica que uno publicador no pueda ser recibido. Si no que un evento publicador
solo puede emitir. Es decir que un evento es como un socket de mensajes.
uint16_t Event_Publish(Event *evt, uint32_t flags, void *msg)
La publicacin de un evento viene a ser el envo de un mensaje a los subscri
ptores del mismo. Por tanto pasamos el evento en s y el mensaje. Lo que no
se es porque enva tambin un FLAG. Aunque parece que el flag es es enviado
en el mensaje como un dato de la propia estructura que se define as:
Mensaje (Event_MessageDef)
-->Event (instancia al evento)
-->Event_TopicDef (No tiene sentido si t
enemos en cuenta que en Event est contenido)
-->flags alterados en el mensaje
-->Puntero a funcin de Handler
-->Puntero al propio mensaje
EVENT_STATE Event_Subscribe(Event *evt, int topic, uint32_t flags, Event_Handler
Func handler)
Para subscribirse a un evento hay que definir la funcin que haga el handl
ing del evento (realmente el mensaje del sistema operativo). Crea una variable
intermedia datum en la que almacena los flags, mensaje, instancia del ev
ento y el handler a la funcin. De esta manera y mediante esa variable insertamos
en la lista de subscriptores del evento en cuestin.
uint16_t Event_ProcessHandler(Event *evt, void *msg)
Cojemos el puntero a la funcin que est contenido en el cuerpo del mensaje.
Entonces Podemos llamar a la citada funcin que siempre cumplir la estructura:

typedef uint8_t (*Event_HandlerFunc)(int topic, uint32_t flags, void *ms


g); Una vez que hemos ejecutado la funcin descontaremos el contador de ack de not
ificacin
de eventos. EVENT_LOCK_PUB no funciona realmente
________________________________________________________________________________
________________________________________________________________________________
______
Pablo ha conseguido incrementar el rendimiento del algoritmo con el simple hecho
de cambiar los tipos de datos. De ser int a uint8_t, etc (es decir ha cambiado)
los
tipos estandar de 'C' a datos propios del micro.
________________________________________________________________________________
________________________________________________________________________________
_______
Tengo una pregunta con la dualidad del envo de imagenes. Es decir si en un princi
pio estamos enviando las imagenes cada 500ms (ya que el evento del cada frame es
mucho ms rpido). Porque respondemos tambin al comando 'F'. Estarn en diferente sock
et? Parece que el protocolo va por el puerto 80 (http://) en cambio el envo de in
formacin continua de imgenes es un envo desincronizado en el puerto 7000. De esta f
orma tenemos dos mtodos de comunicacin uno sincrono y otro asncrono con un modelo d
e pregunta-respuesta. El generador del envo sncrono es realmente la adquisicin desd
e la cmara. Si a los 500ms hay un frame disponible lo enchufo al stream que sale
por el puerto 7000.
________________________________________________________________________________
________________________________________________________________________________
_______
Si nos fijamos en el sistema de gestin (Subscripcin y desubscripcin) estamos plante
ando un sistema de observers al mensaje de OS. De esta manera hacemos una lista
de subscriptores y cuando capturamos el evento publicamos ese evento y todos eso
s subscriptores lo reciben. La notificacin en el caso del patrn observer es una mo
dificacin directa al elemento al que apunta esa determinada clase.
________________________________________________________________________________
________________________________________________________________________________
_______
Parece que he encontrado un parser xml lo suficientemente prctico como para inclu
irlo en un proyect. Este se llama ezxml. Tiene bastante ayuda incluida y parece
sencillo que podamos incluirlo en un proyecto.
________________________________________________________________________________
________________________________________________________________________________
_______
Para dejar solo la ejecucin del algoritmo hay que seguir los pasos que desencaden
an la ejecucin del mismo. El Handler de foto ready es el que captura el evento. E
l evento y el capturador del handler se llaman event_vision. No es tan sencillo
anular el sistema de eventos para dar prioridad al algoritmo. Porque? Probablemen
te porque todos los threads funcionan de tal manera que al hacer independientes
los eventos hace todo muy dependiente.
________________________________________________________________________________
________________________________________________________________________________
_______
CPACR
0x88
SCB
0x0d00
SCB_BASE
0xE000E000
ABS_ADDRESS
0xE000ED88
Envo TCP (la cabecera tiene 15 bytes)
Yo creo que nuestro error es o no activar bien la FPU (con eso me refiero a tene
rla mal configurada) o incluso que el rendimiento del microcontrolador haya sido
mal dimensionado con respecto a las necesidades de procesamiento.
________________________________________________________________________________

________________________________________________________________________________
_______

You might also like