scs_events.c File Reference

#include "scs_events.h"
#include "scs_timer.h"
#include "system.h"
#include "sys/alt_irq.h"
#include "scs_pc_uart.h"
#include "scs_io_uart.h"
#include "scs_utils.h"

Defines

#define FE_STR_SIZE   21
 buffers auxiliares para convertir a cadenas los eventos para el envio el evento de frecuencia se envia como XFETTTTTTTTFFFFCC el evento de cambio de se envia como XVETTTTTTTTVVMM el evento de cambio de IO se envia como XIOTTTTTTTTDD
#define VS_STR_SIZE   15
#define IO_STR_SIZE   13

Functions

void get_events (void)
 Para el registro de eventos mantengo una cola para cad tipo cada cola es una queue de structs del tipo de evento el registro se llama desde las isr, ademas de proteger la concurrencia (que se esta logrando impidiendo interrupciones anidadas) se debe salir de la llamada lo mas rapido posible, por tanto si una ola esta llena, el evento se descarta.
void scs_events_init (scs_fp_queue_t *trs_ptr)
 inicializa las colas de eventos
void scs_save_event (enum scs_event_type tipo, void *params)
 Registra el evento, requiere el tipo y un puntero a una estructura con los datos del evento la estructura se interpreta en funcion del tipo de evento.
void scs_events_send_all_fe_queue (void)
 Envia todos los eventos de frecuencia de la cola La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.
void scs_events_send_all_ve_queue (void)
 Envia todos los eventos de cambio de pines de la cola La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.
void scs_events_send_all_io_queue (void)
 Envia todos los eventos de lectura IO La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.

Variables

alt_u8 fe_event_str [FE_STR_SIZE]
alt_u8 vs_event_str [VS_STR_SIZE]
alt_u8 io_event_str [IO_STR_SIZE]

Define Documentation

#define FE_STR_SIZE   21

buffers auxiliares para convertir a cadenas los eventos para el envio el evento de frecuencia se envia como XFETTTTTTTTFFFFCC el evento de cambio de se envia como XVETTTTTTTTVVMM el evento de cambio de IO se envia como XIOTTTTTTTTDD

#define IO_STR_SIZE   13

#define VS_STR_SIZE   15


Function Documentation

void get_events ( void   ) 

Para el registro de eventos mantengo una cola para cad tipo cada cola es una queue de structs del tipo de evento el registro se llama desde las isr, ademas de proteger la concurrencia (que se esta logrando impidiendo interrupciones anidadas) se debe salir de la llamada lo mas rapido posible, por tanto si una ola esta llena, el evento se descarta.

TODO avisar de la cola llena de alguna formausado para enviar tarea que vacia los eventos al pc

para el envio de eventos al pc, hay que tener cuidado en que se envien mas rapido de lo que se generan de lo contrario, podria quedar esta funcion retornando eventos indefinidamente en esta implementacion, se asume que se generan eventos a una taza mucho menor que la taza de envio por tanto es seguro que esta funcion retorna en un lapso breve. TODO implementar un el control de tiempo de ejecucion de esta funcion para evaluar cuanto permanece en ejecucion TODO este control temporal podria usarse para obligar a salir de la funcion luego de cierto tiempo

envio todos los eventos de frecuencia

envio todos los eventos de cambio de pines

envio todos los eventos de lectura de IO

void scs_events_init ( scs_fp_queue_t trs_ptr  ) 

inicializa las colas de eventos

void scs_events_send_all_fe_queue ( void   ) 

Envia todos los eventos de frecuencia de la cola La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.

veo si hay eventos

si no hay nada, salgo.

si hay, saco uno para convertir a string

acomodo el evento en el string

void scs_events_send_all_io_queue ( void   ) 

Envia todos los eventos de lectura IO La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.

veo si hay eventos

si no hay nada, salgo.

si hay, saco uno para convertir a string

acomodo el evento en el string

void scs_events_send_all_ve_queue ( void   ) 

Envia todos los eventos de cambio de pines de la cola La funcion usa send_data de scs_pc_uart, la cual puede quedar bloqueada en caso de estar enviando datos al momento de ser llamada.

veo si hay eventos

si no hay nada, salgo.

si hay, saco uno para convertir a string

acomodo el evento en el string

void scs_save_event ( enum scs_event_type  tipo,
void *  params 
)

Registra el evento, requiere el tipo y un puntero a una estructura con los datos del evento la estructura se interpreta en funcion del tipo de evento.

Los valores de la estructura se copian al lugar de memoria gestionado por este modulo.

Parameters:
tipo tipo de evento
params puntero a la estructura de datos del evento, es interpretado en funcion del tipo de evento

obtengo el timestamp

proceso los parametros en funcion del tipo de evento

ver si hay espacio en la cola, si no hay salir y/o iniciar vaciado de datos. (ahora no hace nada)

agregar a la cola

ver si hay espacio en la cola, si no hay salir y/o iniciar vaciado de datos. (ahora no hace nada)

agregar a la cola

ver si hay espacio en la cola, si no hay salir y/o iniciar vaciado de datos. (ahora no hace nada)

agregar a la cola


Variable Documentation

alt_u8 fe_event_str[FE_STR_SIZE]

alt_u8 io_event_str[IO_STR_SIZE]

alt_u8 vs_event_str[VS_STR_SIZE]


Generated on Mon Sep 15 01:00:59 2008 for SimCardSniffer by  doxygen 1.5.6