##// END OF EJS Templates
Added ability to relocate gcda and gcno files and added gcovr wrapper...
Added ability to relocate gcda and gcno files and added gcovr wrapper This allows to run tests separatly and merge coverage at the end.

File last commit:

r374:79e8ac429728 No PWD scrub with...
r398:57611985e772 R3++
Show More
tc_handler.h
117 lines | 4.4 KiB | text/x-c | CLexer
#ifndef TC_HANDLER_H_INCLUDED
#define TC_HANDLER_H_INCLUDED
#include <rtems.h>
#include <leon.h>
#include "tc_load_dump_parameters.h"
#include "tc_acceptance.h"
#include "tm_lfr_tc_exe.h"
#include "wf_handler.h"
#include "fsw_processing.h"
#include "lfr_cpu_usage_report.h"
#define MAX_DELTA_COARSE_TIME 3
#define NB_SCIENCE_TASKS 10
#define NB_ASM_TASKS 6
#define STATUS_0 0
#define STATUS_1 1
#define STATUS_2 2
#define STATUS_3 3
#define STATUS_4 4
#define STATUS_5 5
#define STATUS_6 6
#define STATUS_7 7
#define STATUS_8 8
#define STATUS_9 9
#define CAL_F0 625.
#define CAL_F1 10000.
#define CAL_W0 (2. * pi * CAL_F0)
#define CAL_W1 (2. * pi * CAL_F1)
#define CAL_A0 1.
#define CAL_A1 2.
#define CAL_FS 160256.410
#define CAL_SCALE_FACTOR (0.250 / 0.000654) // 191, 500 mVpp, 2 sinus waves => 500 mVpp each, amplitude = 250 mV
#define CAL_NB_PTS 256
#define CAL_DATA_MASK 0xfff
#define CAL_F_DIVISOR 38 // 25 MHz => 160 256 (39 - 1)
#define CAL_F_DIVISOR_MIN 38
#define CAL_F_DIVISOR_MAX (38*2*2*2*2)
// INTERLEAVED MODE
#define CAL_FS_INTER 240384.615
#define CAL_NB_PTS_INTER 384
#define CAL_DATA_MASK_INTER 0x3f
#define CAL_DATA_SHIFT_INTER 12
#define BYTES_FOR_2_SAMPLES 3 // one need 3 bytes = 24 bits to store 3 samples of 12 bits in interleaved mode
#define STEPS_FOR_STORAGE_INTER 128
#define CAL_F_DIVISOR_INTER 26 // 25 MHz => 240 384
extern unsigned int lastValidEnterModeTime;
extern unsigned char oneTcLfrUpdateTimeReceived;
//****
// ISR
rtems_isr commutation_isr1( rtems_vector_number vector );
rtems_isr commutation_isr2( rtems_vector_number vector );
//***********
// RTEMS TASK
rtems_task actn_task( rtems_task_argument unused );
//***********
// TC ACTIONS
int action_reset( ccsdsTelecommandPacket_t *TC, rtems_id queue_id, unsigned char *time );
int action_enter_mode(ccsdsTelecommandPacket_t *TC, rtems_id queue_id);
int action_update_info( ccsdsTelecommandPacket_t *TC, rtems_id queue_id );
int action_enable_calibration( ccsdsTelecommandPacket_t *TC, rtems_id queue_id, unsigned char *time );
int action_disable_calibration( ccsdsTelecommandPacket_t *TC, rtems_id queue_id, unsigned char *time );
int action_update_time( ccsdsTelecommandPacket_t *TC);
// mode transition
int check_mode_value( unsigned char requestedMode );
int check_mode_transition( unsigned char requestedMode );
void update_last_valid_transition_date( unsigned int transitionCoarseTime );
int check_transition_date( unsigned int transitionCoarseTime );
int stop_spectral_matrices( void );
int stop_current_mode( void );
int enter_mode_standby(void );
int enter_mode_normal( unsigned int transitionCoarseTime );
int enter_mode_burst( unsigned int transitionCoarseTime );
int enter_mode_sbm1( unsigned int transitionCoarseTime );
int enter_mode_sbm2( unsigned int transitionCoarseTime );
int restart_science_tasks( unsigned char lfrRequestedMode );
int restart_asm_tasks(unsigned char lfrRequestedMode );
int suspend_science_tasks(void);
int suspend_asm_tasks( void );
void launch_waveform_picker( unsigned char mode , unsigned int transitionCoarseTime );
void launch_spectral_matrix( void );
void set_sm_irq_onNewMatrix( unsigned char value );
void set_sm_irq_onError( unsigned char value );
// other functions
void updateLFRCurrentMode(unsigned char requestedMode);
void set_lfr_soft_reset( unsigned char value );
void reset_lfr( void );
// CALIBRATION
void setCalibrationPrescaler( unsigned int prescaler );
void setCalibrationDivisor( unsigned int divisionFactor );
void setCalibrationData( void );
void setCalibrationReload( bool state);
void setCalibrationEnable( bool state );
void setCalibrationInterleaved( bool state );
void setCalibration( bool state );
void configureCalibration( bool interleaved );
//
void update_last_TC_exe( ccsdsTelecommandPacket_t *TC , unsigned char *time );
void update_last_TC_rej(ccsdsTelecommandPacket_t *TC , unsigned char *time );
void close_action( ccsdsTelecommandPacket_t *TC, int result, rtems_id queue_id );
extern rtems_status_code get_message_queue_id_send( rtems_id *queue_id );
extern rtems_status_code get_message_queue_id_recv( rtems_id *queue_id );
#endif // TC_HANDLER_H_INCLUDED