#include "scs_fp_queue.h"
#include "scs_freq.h"
#include "scs_pc_uart.h"
#include "scs_io_uart.h"
#include "scs_timer.h"
#include "scs_vs.h"
#include "scs_events.h"
#include "altera_avalon_pio_regs.h"
#include "system.h"
#include "sys/alt_irq.h"
Functions | |
void | start_capture (void) |
SimCardSniffer Modulo proncipal, une los modulos de la arquitectura, inicializa cada uno y pone en funcionamiento el sistema. | |
void | stop_capture (void) |
void | get_events (void) |
void | led_on (void) |
void | led_off (void) |
int | main (void) |
Variables | |
scs_fptr | new_task |
alt_irq_context | context |
contexto de interrupciones, es usado para habilitar y deshabilitar todas |
void get_events | ( | void | ) |
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 led_off | ( | void | ) |
se supone que se cuenta con un LED_PIO que escribiendo 1s en DATA prende leds.
void led_on | ( | void | ) |
se supone que se cuenta con un LED_PIO que escribiendo 1s en DATA prende leds.
int main | ( | void | ) |
inicializacion de la cola de tareas
inicializacion del modulo de gestion de eventos
inicializacion del modulo timer para la generacion de timestamps
inicializacion del modulo de deteccion de frecuencia de CLK
inicializo el modulo de captura de datos
comienzo la captura de datos
captura de reset
inicializacion del modulo de comunicacion con el PCm, se pasa un puntero a la lista de tareas para que se encolen las acciones
el bucle obtine permanentemente las tareas de la cola y las ejecuta
el acceso a las funciones de la cola de tareas debe ser atomico por ello se deshabilitan las irq ya que las taras son asignadas desde las isr la gestion de irq podria ser local a la implementacion de la cola de tareas o se podria hacer un wrapper que agregue esa funcionalidad.
al haber una tarea, se quita de la cola para ejecutar se podria implementar tareas con prioridades modificando el funcionamiento de la cola, haciendo que devuelva la de maayor prioridad
void start_capture | ( | void | ) |
SimCardSniffer Modulo proncipal, une los modulos de la arquitectura, inicializa cada uno y pone en funcionamiento el sistema.
codigo de las tareas
Gestiona la cola de tareasfunciones de la cola de tareas registros de pio para prender y apagar los leds TODO poner esto en un modulo aparte para hacer portablelista de tareas ejecutables
void stop_capture | ( | void | ) |
alt_irq_context context |
contexto de interrupciones, es usado para habilitar y deshabilitar todas