tc_handler.h
115 lines
| 4.3 KiB
| text/x-c
|
CLexer
/ header / tc_handler.h
paul@pc-solar1.lab-lpp.local
|
r5 | #ifndef TC_HANDLER_H_INCLUDED | ||
#define TC_HANDLER_H_INCLUDED | ||||
paul@pc-solar1.lab-lpp.local
|
r18 | |||
paul
|
r45 | #include <rtems.h> | ||
#include <leon.h> | ||||
paul
|
r40 | #include "tc_load_dump_parameters.h" | ||
paul
|
r45 | #include "tc_acceptance.h" | ||
paul
|
r40 | #include "tm_lfr_tc_exe.h" | ||
paul
|
r45 | #include "wf_handler.h" | ||
paul
|
r95 | #include "fsw_processing.h" | ||
paul@pc-solar1.lab-lpp.local
|
r18 | |||
paul
|
r134 | #include "lfr_cpu_usage_report.h" | ||
paul
|
r318 | #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 | ||||
paul
|
r339 | #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. | ||||
paul
|
r318 | #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) | ||||
// 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 | ||||
paul
|
r243 | extern unsigned int lastValidEnterModeTime; | ||
paul
|
r271 | extern unsigned char oneTcLfrUpdateTimeReceived; | ||
paul
|
r240 | |||
paul@pc-solar1.lab-lpp.local
|
r18 | //**** | ||
paul@pc-solar1.lab-lpp.local
|
r12 | // ISR | ||
paul@pc-solar1.lab-lpp.local
|
r18 | 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 | ||||
paul
|
r109 | int action_reset( ccsdsTelecommandPacket_t *TC, rtems_id queue_id, unsigned char *time ); | ||
paul
|
r111 | int action_enter_mode(ccsdsTelecommandPacket_t *TC, rtems_id queue_id); | ||
paul
|
r109 | 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); | ||||
paul
|
r33 | |||
paul@pc-solar1.lab-lpp.local
|
r23 | // mode transition | ||
paul
|
r109 | int check_mode_value( unsigned char requestedMode ); | ||
int check_mode_transition( unsigned char requestedMode ); | ||||
paul
|
r240 | void update_last_valid_transition_date( unsigned int transitionCoarseTime ); | ||
paul
|
r111 | int check_transition_date( unsigned int transitionCoarseTime ); | ||
paul
|
r238 | int stop_spectral_matrices( void ); | ||
paul
|
r98 | int stop_current_mode( void ); | ||
paul
|
r254 | int enter_mode_standby(void ); | ||
paul
|
r237 | 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 ); | ||||
paul
|
r171 | int restart_science_tasks( unsigned char lfrRequestedMode ); | ||
paul
|
r238 | int restart_asm_tasks(unsigned char lfrRequestedMode ); | ||
int suspend_science_tasks(void); | ||||
int suspend_asm_tasks( void ); | ||||
paul
|
r171 | void launch_waveform_picker( unsigned char mode , unsigned int transitionCoarseTime ); | ||
paul
|
r118 | void launch_spectral_matrix( void ); | ||
paul
|
r171 | void set_sm_irq_onNewMatrix( unsigned char value ); | ||
void set_sm_irq_onError( unsigned char value ); | ||||
paul
|
r33 | |||
paul@pc-solar1.lab-lpp.local
|
r23 | // other functions | ||
paul
|
r254 | void updateLFRCurrentMode(unsigned char requestedMode); | ||
paul
|
r171 | void set_lfr_soft_reset( unsigned char value ); | ||
void reset_lfr( void ); | ||||
paul
|
r187 | // 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 ); | ||||
paul
|
r206 | void setCalibration( bool state ); | ||
paul
|
r187 | void configureCalibration( bool interleaved ); | ||
// | ||||
paul
|
r107 | 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 ); | ||||
paul@pc-solar1.lab-lpp.local
|
r5 | |||
paul
|
r82 | 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 ); | ||||
paul@pc-solar1.lab-lpp.local
|
r5 | #endif // TC_HANDLER_H_INCLUDED | ||
paul@pc-solar1.lab-lpp.local
|
r18 | |||