diff --git a/FSW-qt/fsw-qt.pro.user b/FSW-qt/fsw-qt.pro.user --- a/FSW-qt/fsw-qt.pro.user +++ b/FSW-qt/fsw-qt.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/header/ccsds_types.h b/header/ccsds_types.h --- a/header/ccsds_types.h +++ b/header/ccsds_types.h @@ -4,12 +4,12 @@ #include "fsw_params_processing.h" #define CCSDS_PROTOCOLE_EXTRA_BYTES 4 +#define CCSDS_TC_TM_PACKET_OFFSET 7 #define CCSDS_TELEMETRY_HEADER_LENGTH 16+4 #define CCSDS_TM_PKT_MAX_SIZE 4412 #define CCSDS_TELECOMMAND_HEADER_LENGTH 10+4 #define CCSDS_TC_PKT_MAX_SIZE 256 #define CCSDS_TC_PKT_MIN_SIZE 16 -#define CCSDS_TC_TM_PACKET_OFFSET 7 #define CCSDS_PROCESS_ID 76 #define CCSDS_PACKET_CATEGORY 12 #define CCSDS_NODE_ADDRESS 0xfe @@ -20,18 +20,18 @@ #define DEFAULT_HKBIA 0x1e // 0001 1110 // PACKET ID -#define TM_PACKET_ID_TC_EXE 0x0cc1 // PID 76 CAT 1 -#define TM_PACKET_ID_HK 0x0cc4 // PID 76 CAT 4 -#define TM_PACKET_ID_PARAMETER_DUMP 0x0cc9 // PID 76 CAT 9 -#define TM_PACKET_ID_SCIENCE_NORMAL_BURST 0x0ccc // PID 76 CAT 12 -#define TM_PACKET_ID_SCIENCE_SBM1_SBM2 0x0cfc // PID 79 CAT 12 -#define TM_PACKET_PID_DEFAULT 76 -#define TM_PACKET_PID_BURST_SBM1_SBM2 79 -#define TM_PACKET_CAT_TC_EXE 1 -#define TM_PACKET_CAT_HK 4 -#define TM_PACKET_CAT_PARAMETER_DUMP 9 -#define TM_PACKET_CAT_SCIENCE 12 -#define TC_PACKET_CAT 12 +#define APID_TM_TC_EXE 0x0cc1 // PID 76 CAT 1 +#define APID_TM_HK 0x0cc4 // PID 76 CAT 4 +#define APID_TM_PARAMETER_DUMP 0x0cc9 // PID 76 CAT 9 +#define APID_TM_SCIENCE_NORMAL_BURST 0x0ccc // PID 76 CAT 12 +#define APID_TM_SCIENCE_SBM1_SBM2 0x0cfc // PID 79 CAT 12 +#define TM_PACKET_PID_DEFAULT 76 +#define TM_PACKET_PID_BURST_SBM1_SBM2 79 +#define TM_PACKET_CAT_TC_EXE 1 +#define TM_PACKET_CAT_HK 4 +#define TM_PACKET_CAT_PARAMETER_DUMP 9 +#define TM_PACKET_CAT_SCIENCE 12 +#define TC_PACKET_CAT 12 // PACKET SEQUENCE CONTROL #define TM_PACKET_SEQ_CTRL_CONTINUATION 0x00 // [0000 0000] @@ -207,7 +207,12 @@ enum apid_destid{ #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F1 (2628 - CCSDS_TC_TM_PACKET_OFFSET) // 52 * 25 * 2 + 28 - 7 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F2 (2428 - CCSDS_TC_TM_PACKET_OFFSET) // 48 * 25 * 2 + 28 - 7 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 (126 - CCSDS_TC_TM_PACKET_OFFSET) // 11 * 9 + 27 - 7 +#define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0 (356 - CCSDS_TC_TM_PACKET_OFFSET) // 11 * 30 + 25 - 7 +#define PACKET_LENGTH_TM_LFR_SCIENCE_BURST_BP2_F1 (806 - CCSDS_TC_TM_PACKET_OFFSET) // 26 * 30 + 26 - 7 #define PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0 (224 - CCSDS_TC_TM_PACKET_OFFSET) // 22 * 9 + 26 - 7 +#define PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP2_F0 (686 - CCSDS_TC_TM_PACKET_OFFSET) // 22 * 30 + 26 - 7 + +#define PACKET_LENGTH_DELTA 11 // 7 + 4 #define SPARE1_PUSVERSION_SPARE2 0x10 @@ -466,9 +471,9 @@ typedef struct { unsigned char sid; unsigned char biaStatusInfo; unsigned char acquisitionTime[6]; - unsigned char spare_source_data; + unsigned char source_data_spare[2]; unsigned char pa_lfr_bp_blk_nr[2]; -} Header_TM_LFR_SCIENCE_BP_NORM_t; +} Header_TM_LFR_SCIENCE_BP_with_spare_t; typedef struct { unsigned char targetLogicalAddress; @@ -489,7 +494,7 @@ typedef struct { unsigned char biaStatusInfo; unsigned char acquisitionTime[6]; unsigned char pa_lfr_bp_blk_nr[2]; -} Header_TM_LFR_SCIENCE_BP_SBM_t; +} Header_TM_LFR_SCIENCE_BP_t; typedef struct { //targetLogicalAddress is removed by the grspw module diff --git a/header/fsw_params.h b/header/fsw_params.h --- a/header/fsw_params.h +++ b/header/fsw_params.h @@ -18,36 +18,6 @@ typedef struct ring_node unsigned int status; } ring_node; -typedef struct ring_node_sm -{ - struct ring_node_sm *previous; - int buffer_address; - struct ring_node_sm *next; - unsigned int status; - unsigned int coarseTime; - unsigned int fineTime; -} ring_node_sm; - -typedef struct ring_node_bp -{ - struct ring_node_bp *previous; - struct ring_node_bp *next; - unsigned int status; - unsigned int coarseTime; - unsigned int fineTime; - Header_TM_LFR_SCIENCE_BP_SBM_t header; - unsigned char data[ 9 * 22 ]; -} ring_node_bp; - -typedef struct -{ - unsigned int status; - unsigned int coarseTime; - unsigned int fineTime; - Header_TM_LFR_SCIENCE_BP_NORM_t header; - unsigned char data[ 9 * 22 ]; -} ring_node_norm_bp; - //************************ // flight software version // this parameters is handled by the Qt project options @@ -85,15 +55,17 @@ typedef struct #define THR_MODE_NORMAL 1 #define THR_MODE_BURST 2 -#define RTEMS_EVENT_MODE_STANDBY RTEMS_EVENT_0 -#define RTEMS_EVENT_MODE_NORMAL RTEMS_EVENT_1 -#define RTEMS_EVENT_MODE_BURST RTEMS_EVENT_2 -#define RTEMS_EVENT_MODE_SBM1 RTEMS_EVENT_3 -#define RTEMS_EVENT_MODE_SBM2 RTEMS_EVENT_4 -#define RTEMS_EVENT_MODE_SBM2_WFRM RTEMS_EVENT_5 -#define RTEMS_EVENT_MODE_NORMAL_SWF_F0 RTEMS_EVENT_6 -#define RTEMS_EVENT_MODE_NORMAL_SWF_F1 RTEMS_EVENT_7 -#define RTEMS_EVENT_MODE_NORMAL_SWF_F2 RTEMS_EVENT_8 +#define RTEMS_EVENT_MODE_STANDBY RTEMS_EVENT_0 +#define RTEMS_EVENT_MODE_NORMAL RTEMS_EVENT_1 +#define RTEMS_EVENT_MODE_BURST RTEMS_EVENT_2 +#define RTEMS_EVENT_MODE_SBM1 RTEMS_EVENT_3 +#define RTEMS_EVENT_MODE_SBM2 RTEMS_EVENT_4 +#define RTEMS_EVENT_MODE_SBM2_WFRM RTEMS_EVENT_5 +#define RTEMS_EVENT_NORM_BP1_F0 RTEMS_EVENT_6 +#define RTEMS_EVENT_NORM_BP2_F0 RTEMS_EVENT_7 +#define RTEMS_EVENT_NORM_ASM_F0 RTEMS_EVENT_8 +#define RTEMS_EVENT_SBM1_BP1_F0 RTEMS_EVENT_9 +#define RTEMS_EVENT_SBM1_BP2_F0 RTEMS_EVENT_10 //**************************** // LFR DEFAULT MODE PARAMETERS @@ -203,11 +175,11 @@ typedef struct #define TASK_PRIORITY_STAT 200 #define TASK_PRIORITY_DUMB 200 -#define ACTION_MSG_QUEUE_COUNT 10 -#define ACTION_MSG_PKTS_COUNT 50 +#define ACTION_MSG_QUEUE_COUNT 10 +#define ACTION_MSG_PKTS_COUNT 50 //#define ACTION_MSG_PKTS_MAX_SIZE (PACKET_LENGTH_HK + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES) -#define ACTION_MSG_PKTS_MAX_SIZE (PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0 + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES) -#define ACTION_MSG_SPW_IOCTL_SEND_SIZE 24 // hlen *hdr dlen *data sent options +#define ACTION_MSG_PKTS_MAX_SIZE 810 // 806 + 4 => TM_LFR_SCIENCE_BURST_BP2_F1 +#define ACTION_MSG_SPW_IOCTL_SEND_SIZE 24 // hlen *hdr dlen *data sent options #define QUEUE_RECV 0 #define QUEUE_SEND 1 diff --git a/header/fsw_params_processing.h b/header/fsw_params_processing.h --- a/header/fsw_params_processing.h +++ b/header/fsw_params_processing.h @@ -12,7 +12,8 @@ #define NB_RING_NODES_ASM_F0 12 // AT LEAST 3 #define NB_RING_NODES_ASM_F1 2 // AT LEAST 3 #define NB_RING_NODES_ASM_F2 2 // AT LEAST 3 -#define NB_RING_NODES_BP1_SBM1 10 // AT LEAST 3 +#define NB_RING_NODES_SBM1_BP1 10 // AT LEAST 3 +#define NB_RING_NODES_SBM1_BP2 5 // AT LEAST 3 // #define NB_BINS_PER_ASM_F0 88 #define NB_BINS_PER_PKT_ASM_F0 44 @@ -42,12 +43,15 @@ #define NB_BINS_TO_AVERAGE_ASM_F2 8 #define NB_BINS_TO_AVERAGE_ASM_SBM1_F0 4 // -#define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 WORDS -#define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 WORDS -#define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 WORDS -#define TOTAL_SIZE_COMPRESSED_ASM_SBM1 550 // 22 * 25 WORDS -#define NB_AVERAGE_NORMAL_F0 384 // 96 * 4 -#define NB_AVERAGE_SBM1_F0 24 // 24 matrices at f0 = 0.25 second -#define NB_SM_TO_RECEIVE_BEFORE_AVF0 8 +#define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_SBM1 550 // 22 * 25 WORDS +#define NB_SM_BEFORE_NORM_BP1_F0 384 // 96 * 4 +#define NB_SM_BEFORE_NORM_BP2_F0 1920 // 96 * 20 +#define NB_SM_BEFORE_NORM_ASM_F0 384 // 384 matrices at f0 = 4.00 second +#define NB_SM_BEFORE_SBM1_BP1_F0 24 // 24 matrices at f0 = 0.25 second +#define NB_SM_BEFORE_SBM1_BP2_F0 96 // 96 matrices at f0 = 1.00 second +#define NB_SM_BEFORE_AVF0 8 #endif // FSW_PARAMS_PROCESSING_H diff --git a/header/fsw_processing.h b/header/fsw_processing.h --- a/header/fsw_processing.h +++ b/header/fsw_processing.h @@ -11,6 +11,38 @@ #include "fsw_params.h" #include "fsw_spacewire.h" +typedef struct ring_node_sm +{ + struct ring_node_sm *previous; + int buffer_address; + struct ring_node_sm *next; + unsigned int status; + unsigned int coarseTime; + unsigned int fineTime; +} ring_node_sm; + +typedef struct ring_node_bp +{ + struct ring_node_bp *previous; + struct ring_node_bp *next; + unsigned int status; + unsigned int coarseTime; + unsigned int fineTime; + Header_TM_LFR_SCIENCE_BP_t header; + unsigned char data[ 30 * 22 ]; // MAX size is 22 * 30 TM_LFR_SCIENCE_BURST_BP2_F1 +} ring_node_bp; + +typedef struct ring_node_bp_with_spare +{ + struct ring_node_bp_with_spare *previous; + struct ring_node_bp_with_spare *next; + unsigned int status; + unsigned int coarseTime; + unsigned int fineTime; + Header_TM_LFR_SCIENCE_BP_with_spare_t header; + unsigned char data[ 9 * 22 ]; +} ring_node_bp_with_spare; + extern volatile int sm_f0[ ]; extern volatile int sm_f1[ ]; extern volatile int sm_f2[ ]; @@ -27,6 +59,7 @@ extern rtems_id Task_id[20]; void init_sm_rings( void ); void reset_current_sm_ring_nodes( void ); +void reset_current_bp_ring_nodes( void ); // ISR void reset_nb_sm_f0( void ); @@ -41,7 +74,7 @@ rtems_task matr_task(rtems_task_argument //***************************** // Spectral matrices processing -void ASM_average(float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, +void SM_average(float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, ring_node_sm *ring_node_tab[], unsigned int firstTimeF0, unsigned int firstTimeF1 ); void ASM_reorganize_and_divide(float *averaged_spec_mat, float *averaged_spec_mat_reorganized, @@ -53,12 +86,23 @@ void ASM_convert(volatile float *input_m void ASM_send(Header_TM_LFR_SCIENCE_ASM_t *header, char *spectral_matrix, unsigned int sid, spw_ioctl_pkt_send *spw_ioctl_send, rtems_id queue_id); -void BP1_send( ring_node_bp *ring_node_to_send, unsigned int sid, rtems_id queue_id ); +void BP_send(char *data, + rtems_id queue_id , + unsigned int nbBytesToSend ); void init_header_asm( Header_TM_LFR_SCIENCE_ASM_t *header); -void init_headers_bp_ring_sbm1(); -void init_header_bp( Header_TM_LFR_SCIENCE_BP_SBM_t *header); +void init_bp_ring_sbm1_bp1( void ); +void init_bp_ring_sbm1_bp2( void ); +void init_headers_bp_ring_sbm1_bp1(); +void init_header_bp(Header_TM_LFR_SCIENCE_BP_t *header, + unsigned int apid, unsigned char sid, + unsigned int packetLength , unsigned char blkNr); +void init_header_bp_with_spare(Header_TM_LFR_SCIENCE_BP_with_spare_t *header, + unsigned int apid, unsigned char sid, + unsigned int packetLength, unsigned char blkNr ); void reset_spectral_matrix_regs( void ); +void set_time( unsigned char *time, unsigned int coarseTime, unsigned int fineTime ); + #endif // FSW_PROCESSING_H_INCLUDED diff --git a/src/fsw_init.c b/src/fsw_init.c --- a/src/fsw_init.c +++ b/src/fsw_init.c @@ -96,8 +96,10 @@ rtems_task Init( rtems_task_argument ign init_local_mode_parameters(); init_housekeeping_parameters(); - init_waveform_rings(); // initialize the waveform rings - init_sm_rings(); // initialize spectral matrices rings + init_waveform_rings(); // initialize the waveform rings + init_sm_rings(); // initialize spectral matrices rings + init_bp_ring_sbm1_bp1(); // initialize basic parameter ring for SBM1 BP1 set + init_bp_ring_sbm1_bp2(); // initialize basic parameter ring for SBM1 BP2 set reset_wfp_burst_enable(); reset_wfp_status(); diff --git a/src/fsw_misc.c b/src/fsw_misc.c --- a/src/fsw_misc.c +++ b/src/fsw_misc.c @@ -164,8 +164,8 @@ rtems_task hous_task(rtems_task_argument housekeeping_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; housekeeping_packet.reserved = DEFAULT_RESERVED; housekeeping_packet.userApplication = CCSDS_USER_APP; - housekeeping_packet.packetID[0] = (unsigned char) (TM_PACKET_ID_HK >> 8); - housekeeping_packet.packetID[1] = (unsigned char) (TM_PACKET_ID_HK); + housekeeping_packet.packetID[0] = (unsigned char) (APID_TM_HK >> 8); + housekeeping_packet.packetID[1] = (unsigned char) (APID_TM_HK); housekeeping_packet.packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; housekeeping_packet.packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; housekeeping_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_HK >> 8); @@ -374,8 +374,8 @@ void send_dumb_hk( void ) dummy_hk_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; dummy_hk_packet.reserved = DEFAULT_RESERVED; dummy_hk_packet.userApplication = CCSDS_USER_APP; - dummy_hk_packet.packetID[0] = (unsigned char) (TM_PACKET_ID_HK >> 8); - dummy_hk_packet.packetID[1] = (unsigned char) (TM_PACKET_ID_HK); + dummy_hk_packet.packetID[0] = (unsigned char) (APID_TM_HK >> 8); + dummy_hk_packet.packetID[1] = (unsigned char) (APID_TM_HK); dummy_hk_packet.packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; dummy_hk_packet.packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; dummy_hk_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_HK >> 8); diff --git a/src/fsw_processing.c b/src/fsw_processing.c --- a/src/fsw_processing.c +++ b/src/fsw_processing.c @@ -24,20 +24,22 @@ ring_node_sm *current_ring_node_sm_f2; //********************** // basic parameter rings ring_node_bp *current_node_sbm1_bp1_f0; -ring_node_bp bp_ring_sbm1[ NB_RING_NODES_BP1_SBM1 ]; +ring_node_bp *current_node_sbm1_bp2_f0; +ring_node_bp bp_ring_sbm1_bp1[ NB_RING_NODES_SBM1_BP1 ]; +ring_node_bp bp_ring_sbm1_bp2[ NB_RING_NODES_SBM1_BP2 ]; //***** // NORM // F0 -float asm_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; -float asm_f0_reorganized[ TIME_OFFSET + TOTAL_SIZE_SM ]; -char asm_f0_char [ TIME_OFFSET_IN_BYTES + (TOTAL_SIZE_SM * 2) ]; -float compressed_sm_f0 [ TIME_OFFSET + TOTAL_SIZE_COMPRESSED_ASM_F0 ]; +float asm_norm_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; +float asm_f0_reorganized [ TIME_OFFSET + TOTAL_SIZE_SM ]; +char asm_f0_char [ TIME_OFFSET_IN_BYTES + (TOTAL_SIZE_SM * 2) ]; +float compressed_sm_norm_f0[ TIME_OFFSET + TOTAL_SIZE_COMPRESSED_ASM_F0 ]; //***** // SBM1 -float averaged_sm_sbm1 [ TIME_OFFSET + TOTAL_SIZE_SM ]; -float compressed_sm_sbm1 [ TIME_OFFSET + TOTAL_SIZE_COMPRESSED_ASM_SBM1 ]; +float asm_sbm1_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; +float compressed_sm_sbm1[ TIME_OFFSET + TOTAL_SIZE_COMPRESSED_ASM_SBM1 ]; unsigned char LFR_BP1_F0[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_NORM_BP1_F0 * 2 ]; unsigned char LFR_BP1_F1[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_NORM_BP1_F1 ]; @@ -123,9 +125,10 @@ void reset_current_sm_ring_nodes( void ) ring_node_for_averaging_sm_f0 = sm_ring_f0; } -void reset_current_node_sbm1_bp1_f0( void ) +void reset_current_bp_ring_nodes( void ) { - current_node_sbm1_bp1_f0 = bp_ring_sbm1; + current_node_sbm1_bp1_f0 = bp_ring_sbm1_bp1; + current_node_sbm1_bp2_f0 = bp_ring_sbm1_bp2; } //*********************************************************** @@ -162,7 +165,7 @@ rtems_isr spectral_matrices_isr( rtems_v spectral_matrix_regs->status = spectral_matrix_regs->status & 0xfffffff3; // 0011 - if (nb_sm_f0 == (NB_SM_TO_RECEIVE_BEFORE_AVF0-1) ) + if (nb_sm_f0 == (NB_SM_BEFORE_AVF0-1) ) { ring_node_for_averaging_sm_f0 = current_ring_node_sm_f0; if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -179,7 +182,7 @@ rtems_isr spectral_matrices_isr( rtems_v rtems_isr spectral_matrices_isr_simu( rtems_vector_number vector ) { - if (nb_sm_f0 == (NB_SM_TO_RECEIVE_BEFORE_AVF0-1) ) + if (nb_sm_f0 == (NB_SM_BEFORE_AVF0-1) ) { ring_node_for_averaging_sm_f0 = current_ring_node_sm_f0; if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -211,64 +214,103 @@ rtems_task smiq_task(rtems_task_argument rtems_task avf0_task(rtems_task_argument argument) { int i; - static unsigned int nb_average_norm_f0; - static unsigned int nb_average_sbm1_f0; + static unsigned int nb_sm_norm_bp1_f0; + static unsigned int nb_sm_norm_bp2_f0; + static unsigned int nb_sm_norm_asm_f0; + static unsigned int nb_sm_sbm1_bp1_f0; + static unsigned int nb_sm_sbm1_bp2_f0; rtems_event_set event_out; + rtems_event_set event_for_matr; rtems_status_code status; ring_node_sm *ring_node_tab[8]; - nb_average_norm_f0 = 0; - nb_average_sbm1_f0 = 0; + nb_sm_norm_bp1_f0 = 0; + nb_sm_norm_bp2_f0 = 0; + nb_sm_norm_asm_f0 = 0; + nb_sm_sbm1_bp1_f0 = 0; + nb_sm_sbm1_bp2_f0 = 0; BOOT_PRINTF("in AVFO *** \n") while(1){ rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0 - ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-1] = ring_node_for_averaging_sm_f0; - for ( i = 2; i < (NB_SM_TO_RECEIVE_BEFORE_AVF0+1); i++ ) + ring_node_tab[NB_SM_BEFORE_AVF0-1] = ring_node_for_averaging_sm_f0; + for ( i = 2; i < (NB_SM_BEFORE_AVF0+1); i++ ) { ring_node_for_averaging_sm_f0 = ring_node_for_averaging_sm_f0->previous; - ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-i] = ring_node_for_averaging_sm_f0; + ring_node_tab[NB_SM_BEFORE_AVF0-i] = ring_node_for_averaging_sm_f0; } // copy time information in the asm_f0 buffer - asm_f0[0] = ring_node_tab[7]->coarseTime; - asm_f0[1] = ring_node_tab[7]->fineTime; - averaged_sm_sbm1[0] = ring_node_tab[7]->coarseTime; - averaged_sm_sbm1[1] = ring_node_tab[7]->fineTime; + asm_norm_f0[0] = ring_node_tab[7]->coarseTime; + asm_norm_f0[1] = ring_node_tab[7]->fineTime; + asm_sbm1_f0[0] = ring_node_tab[7]->coarseTime; + asm_sbm1_f0[1] = ring_node_tab[7]->fineTime; // compute the average and store it in the averaged_sm_f1 buffer - ASM_average( asm_f0, averaged_sm_sbm1, + SM_average( asm_norm_f0, asm_sbm1_f0, ring_node_tab, - nb_average_norm_f0, nb_average_sbm1_f0 ); - + nb_sm_norm_bp1_f0, nb_sm_sbm1_bp1_f0 ); // update nb_average - nb_average_norm_f0 = nb_average_norm_f0 + NB_SM_TO_RECEIVE_BEFORE_AVF0; - nb_average_sbm1_f0 = nb_average_sbm1_f0 + NB_SM_TO_RECEIVE_BEFORE_AVF0; + nb_sm_norm_bp1_f0 = nb_sm_norm_bp1_f0 + NB_SM_BEFORE_AVF0; + nb_sm_norm_bp2_f0 = nb_sm_norm_bp2_f0 + NB_SM_BEFORE_AVF0; + nb_sm_norm_asm_f0 = nb_sm_norm_asm_f0 + NB_SM_BEFORE_AVF0; + nb_sm_sbm1_bp1_f0 = nb_sm_sbm1_bp1_f0 + NB_SM_BEFORE_AVF0; + nb_sm_sbm1_bp2_f0 = nb_sm_sbm1_bp2_f0 + NB_SM_BEFORE_AVF0; - // launch actions depending on the current mode + //*********************************************************** + // build a composite event that will be sent to the MATR task + event_for_matr = 0x00; - if (nb_average_sbm1_f0 == NB_AVERAGE_SBM1_F0) + if (nb_sm_sbm1_bp1_f0 == NB_SM_BEFORE_SBM1_BP1_F0) { - nb_average_sbm1_f0 = 0; + nb_sm_sbm1_bp1_f0 = 0; if (lfrCurrentMode == LFR_MODE_SBM1) { - status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_SBM1 ); // sending an event to the task 7, BPF0 - if (status != RTEMS_SUCCESSFUL) - { - printf("in AVF0 *** Error sending RTEMS_EVENT_MODE_SBM1, code %d\n", status); - } + event_for_matr = event_for_matr | RTEMS_EVENT_SBM1_BP1_F0; } } - if (nb_average_norm_f0 == NB_AVERAGE_NORMAL_F0) { - nb_average_norm_f0 = 0; - status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_NORMAL ); // sending an event to the task 7, BPF0 - if (status != RTEMS_SUCCESSFUL) { - printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); + if (nb_sm_sbm1_bp2_f0 == NB_SM_BEFORE_SBM1_BP2_F0) + { + nb_sm_sbm1_bp2_f0 = 0; + if (lfrCurrentMode == LFR_MODE_SBM1) + { + event_for_matr = event_for_matr | RTEMS_EVENT_SBM1_BP2_F0; + } + } + + if (nb_sm_norm_bp1_f0 == NB_SM_BEFORE_NORM_BP1_F0) { + nb_sm_norm_bp1_f0 = 0; + if (lfrCurrentMode == LFR_MODE_NORMAL) + { + event_for_matr = event_for_matr | RTEMS_EVENT_NORM_BP1_F0; } } + + if (nb_sm_norm_bp2_f0 == NB_SM_BEFORE_NORM_BP2_F0) { + nb_sm_norm_bp2_f0 = 0; + if (lfrCurrentMode == LFR_MODE_NORMAL) + { + event_for_matr = event_for_matr | RTEMS_EVENT_NORM_BP2_F0; + } + } + + if (nb_sm_norm_asm_f0 == NB_SM_BEFORE_NORM_ASM_F0) { + nb_sm_norm_asm_f0 = 0; + if (lfrCurrentMode == LFR_MODE_NORMAL) + { + event_for_matr = event_for_matr | RTEMS_EVENT_NORM_ASM_F0; + } + } + + //********************************* + // send the composite event to MATR + status = rtems_event_send( Task_id[TASKID_MATR], event_for_matr ); + if (status != RTEMS_SUCCESSFUL) { + printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); + } } } @@ -279,10 +321,16 @@ rtems_task matr_task(rtems_task_argument rtems_status_code status; rtems_id queue_id; Header_TM_LFR_SCIENCE_ASM_t headerASM; - ring_node_norm_bp current_node_norm_bp1_f0; + ring_node_bp_with_spare current_node_norm_bp1_f0; + ring_node_bp current_node_norm_bp2_f0; init_header_asm( &headerASM ); -// init_header_bp( ¤t_node_norm_bp1_f0.header ); + init_header_bp_with_spare( ¤t_node_norm_bp1_f0.header, + APID_TM_SCIENCE_NORMAL_BURST, SID_NORM_BP1_F0, + PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0, NB_BINS_COMPRESSED_SM_F0 ); + init_header_bp( ¤t_node_norm_bp2_f0.header, + APID_TM_SCIENCE_NORMAL_BURST, SID_NORM_BP2_F0, + PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0, NB_BINS_COMPRESSED_SM_F0); status = get_message_queue_id_send( &queue_id ); if (status != RTEMS_SUCCESSFUL) @@ -293,51 +341,98 @@ rtems_task matr_task(rtems_task_argument BOOT_PRINTF("in MATR *** \n") while(1){ - rtems_event_receive( RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1, + rtems_event_receive( RTEMS_EVENT_NORM_BP1_F0 | RTEMS_EVENT_NORM_BP2_F0 | RTEMS_EVENT_NORM_ASM_F0 + | RTEMS_EVENT_SBM1_BP1_F0 | RTEMS_EVENT_SBM1_BP2_F0, RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); - if (event_out==RTEMS_EVENT_MODE_NORMAL) + //***** + //***** + // SBM1 + //***** + //***** + if (event_out & RTEMS_EVENT_SBM1_BP1_F0) { // 1) compress the matrix for Basic Parameters calculation - ASM_compress_reorganize_and_divide( asm_f0, compressed_sm_f0, - NB_AVERAGE_NORMAL_F0, + ASM_compress_reorganize_and_divide( asm_sbm1_f0, compressed_sm_sbm1, + NB_SM_BEFORE_SBM1_BP1_F0, + NB_BINS_COMPRESSED_SM_SBM1_F0, NB_BINS_TO_AVERAGE_ASM_SBM1_F0, + ASM_F0_INDICE_START); + // 2) compute the BP1 set + + // 3) send the BP1 set + set_time( current_node_sbm1_bp1_f0->header.time, + current_node_sbm1_bp1_f0->coarseTime, current_node_sbm1_bp1_f0->fineTime); + set_time( current_node_sbm1_bp1_f0->header.acquisitionTime, + current_node_sbm1_bp1_f0->coarseTime, current_node_sbm1_bp1_f0->fineTime); + BP_send( (char *) ¤t_node_sbm1_bp1_f0->header, queue_id, + PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0 + PACKET_LENGTH_DELTA); + // 4) update current_node_sbm1_bp1_f0 + current_node_sbm1_bp1_f0 = current_node_sbm1_bp1_f0->next; + if (event_out & RTEMS_EVENT_SBM1_BP2_F0) + { + // 1) compute the BP2 set + + // 2) send the BP2 set + set_time( current_node_sbm1_bp2_f0->header.time, + current_node_sbm1_bp2_f0->coarseTime, current_node_sbm1_bp2_f0->fineTime); + set_time( current_node_sbm1_bp2_f0->header.acquisitionTime, + current_node_sbm1_bp2_f0->coarseTime, current_node_sbm1_bp2_f0->fineTime); + BP_send( (char *) ¤t_node_sbm1_bp2_f0->header, queue_id, + PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0 + PACKET_LENGTH_DELTA); + } + } + + //***** + //***** + // NORM + //***** + //***** + if (event_out & RTEMS_EVENT_NORM_BP1_F0) + { + // 1) compress the matrix for Basic Parameters calculation + ASM_compress_reorganize_and_divide( asm_norm_f0, compressed_sm_norm_f0, + NB_SM_BEFORE_NORM_BP1_F0, NB_BINS_COMPRESSED_SM_F0, NB_BINS_TO_AVERAGE_ASM_F0, ASM_F0_INDICE_START ); // 2) compute the BP1 set // 3) send the BP1 set - BP1_send( ¤t_node_norm_bp1_f0, SID_NORM_BP1_F0, queue_id ); - // 4) reorganize the ASM and divide - ASM_reorganize_and_divide( asm_f0, asm_f0_reorganized, NB_AVERAGE_NORMAL_F0 ); - // 5) convert the float array in a char array + set_time( current_node_norm_bp1_f0.header.time, + current_node_norm_bp1_f0.coarseTime, current_node_norm_bp1_f0.fineTime); + set_time( current_node_norm_bp1_f0.header.acquisitionTime, + current_node_norm_bp1_f0.coarseTime, current_node_norm_bp1_f0.fineTime); + BP_send( (char *) ¤t_node_norm_bp1_f0.header, queue_id, + PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 + PACKET_LENGTH_DELTA); + if (event_out & RTEMS_EVENT_NORM_BP2_F0) + { + // 1) compute the BP2 set + + // 2) send the BP2 set + set_time( current_node_norm_bp2_f0.header.time, + current_node_norm_bp2_f0.coarseTime, current_node_norm_bp2_f0.fineTime); + set_time( current_node_norm_bp2_f0.header.acquisitionTime, + current_node_norm_bp2_f0.coarseTime, current_node_norm_bp2_f0.fineTime); + BP_send( (char *) ¤t_node_norm_bp2_f0.header, queue_id, + PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0 + PACKET_LENGTH_DELTA); + } + } + + if (event_out & RTEMS_EVENT_NORM_ASM_F0) + { + // 1) reorganize the ASM and divide + ASM_reorganize_and_divide( asm_norm_f0, asm_f0_reorganized, NB_SM_BEFORE_NORM_BP1_F0 ); + // 2) convert the float array in a char array ASM_convert( asm_f0_reorganized, asm_f0_char); - // 6) send the spectral matrix packets + // 3) send the spectral matrix packets ASM_send( &headerASM, asm_f0_char, SID_NORM_ASM_F0, &spw_ioctl_send_ASM, queue_id); } - else if (event_out==RTEMS_EVENT_MODE_SBM1) - { - // 1) compress the matrix for Basic Parameters calculation - ASM_compress_reorganize_and_divide( averaged_sm_sbm1, compressed_sm_sbm1, - NB_AVERAGE_SBM1_F0, - NB_BINS_COMPRESSED_SM_SBM1_F0, NB_BINS_TO_AVERAGE_ASM_SBM1_F0, - ASM_F0_INDICE_START); - // 2) compute the BP1 set - // 3) send the basic parameters set 1 packet - BP1_send( current_node_sbm1_bp1_f0, SID_SBM1_BP1_F0, queue_id ); - // 4) update current_node_sbm1_bp1_f0 - current_node_sbm1_bp1_f0 = current_node_sbm1_bp1_f0->next; - } - else - { - PRINTF1("ERR *** in MATR *** unexect event = %x\n", (unsigned int) event_out) - } } } //***************************** // Spectral matrices processing -void ASM_average( float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, +void SM_average( float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, ring_node_sm *ring_node_tab[], unsigned int nbAverageNormF0, unsigned int nbAverageSBM1F0 ) { @@ -372,7 +467,7 @@ void ASM_average( float *averaged_spec_m } else { - PRINTF2("ERR *** in ASM_average *** unexpected parameters %d %d\n", nbAverageNormF0, nbAverageSBM1F0) + PRINTF2("ERR *** in SM_average *** unexpected parameters %d %d\n", nbAverageNormF0, nbAverageSBM1F0) } } } @@ -521,65 +616,15 @@ void ASM_send(Header_TM_LFR_SCIENCE_ASM_ } } -void BP1_send( ring_node_bp *ring_node_to_send, unsigned int sid, rtems_id queue_id ) +void BP_send(char *data, rtems_id queue_id, unsigned int nbBytesToSend ) { - unsigned int length = 0; rtems_status_code status; - unsigned char nbBytesTosend; - // (1) BUILD THE DATA - switch(sid) - { - case SID_NORM_BP1_F0: - length = PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0; - ring_node_to_send->header.packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); - ring_node_to_send->header.packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); - ring_node_to_send->header.pa_lfr_bp_blk_nr[0] = (unsigned char) ( (NB_BINS_COMPRESSED_SM_F0) >> 8 ); // BLK_NR MSB - ring_node_to_send->header.pa_lfr_bp_blk_nr[1] = (unsigned char) (NB_BINS_COMPRESSED_SM_F0); // BLK_NR LSB - nbBytesTosend = PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 - + CCSDS_TC_TM_PACKET_OFFSET - + CCSDS_PROTOCOLE_EXTRA_BYTES; - case SID_SBM1_BP1_F0: - length = PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0; - ring_node_to_send->header.packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2 >> 8); - ring_node_to_send->header.packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2); - ring_node_to_send->header.pa_lfr_bp_blk_nr[0] = (unsigned char) ( (NB_BINS_COMPRESSED_SM_SBM1_F0) >> 8 ); // BLK_NR MSB - ring_node_to_send->header.pa_lfr_bp_blk_nr[1] = (unsigned char) (NB_BINS_COMPRESSED_SM_SBM1_F0); // BLK_NR LSB - nbBytesTosend = PACKET_LENGTH_TM_LFR_SCIENCE_SBM1_BP1_F0 - + CCSDS_TC_TM_PACKET_OFFSET - + CCSDS_PROTOCOLE_EXTRA_BYTES; - break; - default: - nbBytesTosend = 0; - PRINTF1("ERR *** in BP1_send *** unexpected sid %d\n", sid) - break; - } - - // (2) BUILD THE HEADER - ring_node_to_send->header.packetLength[0] = (unsigned char) (length>>8); - ring_node_to_send->header.packetLength[1] = (unsigned char) (length); - ring_node_to_send->header.sid = sid; - - // (3) SET PACKET TIME - ring_node_to_send->header.time[0] = (unsigned char) (ring_node_to_send->coarseTime>>24); - ring_node_to_send->header.time[1] = (unsigned char) (ring_node_to_send->coarseTime>>16); - ring_node_to_send->header.time[2] = (unsigned char) (ring_node_to_send->coarseTime>>8); - ring_node_to_send->header.time[3] = (unsigned char) (ring_node_to_send->coarseTime); - ring_node_to_send->header.time[4] = (unsigned char) (ring_node_to_send->fineTime>>8); - ring_node_to_send->header.time[5] = (unsigned char) (ring_node_to_send->fineTime); - // - ring_node_to_send->header.acquisitionTime[0] = (unsigned char) (ring_node_to_send->coarseTime>>24); - ring_node_to_send->header.acquisitionTime[1] = (unsigned char) (ring_node_to_send->coarseTime>>16); - ring_node_to_send->header.acquisitionTime[2] = (unsigned char) (ring_node_to_send->coarseTime>>8); - ring_node_to_send->header.acquisitionTime[3] = (unsigned char) (ring_node_to_send->coarseTime); - ring_node_to_send->header.acquisitionTime[4] = (unsigned char) (ring_node_to_send->fineTime>>8); - ring_node_to_send->header.acquisitionTime[5] = (unsigned char) (ring_node_to_send->fineTime); - - // (4) SEND PACKET - status = rtems_message_queue_send( queue_id, &ring_node_to_send->header, nbBytesTosend); + // SEND PACKET + status = rtems_message_queue_send( queue_id, data, nbBytesToSend); if (status != RTEMS_SUCCESSFUL) { - printf("ERR *** in BP1_send *** ERR %d\n", (int) status); + printf("ERR *** in BP_send *** ERR %d\n", (int) status); } } @@ -589,8 +634,8 @@ void init_header_asm( Header_TM_LFR_SCIE header->protocolIdentifier = CCSDS_PROTOCOLE_ID; header->reserved = 0x00; header->userApplication = CCSDS_USER_APP; - header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); - header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); header->packetSequenceControl[0] = 0xc0; header->packetSequenceControl[1] = 0x00; header->packetLength[0] = 0x00; @@ -615,52 +660,87 @@ void init_header_asm( Header_TM_LFR_SCIE header->pa_lfr_asm_blk_nr[1] = 0x00; // BLK_NR LSB } -void init_bp_ring_sbm1() +void init_bp_ring_sbm1_bp1( void ) +{ + unsigned int i; + + //******** + // F0 RING + bp_ring_sbm1_bp1[0].next = (ring_node_bp*) &bp_ring_sbm1_bp1[1]; + bp_ring_sbm1_bp1[0].previous = (ring_node_bp*) &bp_ring_sbm1_bp1[NB_RING_NODES_SBM1_BP1-1]; + + bp_ring_sbm1_bp1[NB_RING_NODES_SBM1_BP1-1].next = (ring_node_bp*) &bp_ring_sbm1_bp1[0]; + bp_ring_sbm1_bp1[NB_RING_NODES_SBM1_BP1-1].previous = (ring_node_bp*) &bp_ring_sbm1_bp1[NB_RING_NODES_SBM1_BP1-2]; + + for(i=1; itargetLogicalAddress = CCSDS_DESTINATION_ID; header->protocolIdentifier = CCSDS_PROTOCOLE_ID; header->reserved = 0x00; header->userApplication = CCSDS_USER_APP; - header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2 >> 8); - header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2); - header->packetSequenceControl[0] = 0xc0; + header->packetID[0] = (unsigned char) (apid >> 8); + header->packetID[1] = (unsigned char) (apid); + header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; header->packetSequenceControl[1] = 0x00; - header->packetLength[0] = 0x00; - header->packetLength[1] = 0x00; + header->packetLength[0] = (unsigned char) (packetLength >> 8); + header->packetLength[1] = (unsigned char) (packetLength); // DATA FIELD HEADER header->spare1_pusVersion_spare2 = 0x10; header->serviceType = TM_TYPE_LFR_SCIENCE; // service type header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype header->destinationID = TM_DESTINATION_ID_GROUND; // AUXILIARY DATA HEADER - header->sid = 0x00; + header->sid = sid; header->biaStatusInfo = 0x00; header->time[0] = 0x00; header->time[0] = 0x00; @@ -669,7 +749,39 @@ void init_header_bp(Header_TM_LFR_SCIENC header->time[0] = 0x00; header->time[0] = 0x00; header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB - header->pa_lfr_bp_blk_nr[1] = 0x00; // BLK_NR LSB + header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB +} + +void init_header_bp_with_spare(Header_TM_LFR_SCIENCE_BP_with_spare_t *header, + unsigned int apid, unsigned char sid, + unsigned int packetLength , unsigned char blkNr) +{ + header->targetLogicalAddress = CCSDS_DESTINATION_ID; + header->protocolIdentifier = CCSDS_PROTOCOLE_ID; + header->reserved = 0x00; + header->userApplication = CCSDS_USER_APP; + header->packetID[0] = (unsigned char) (apid >> 8); + header->packetID[1] = (unsigned char) (apid); + header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; + header->packetSequenceControl[1] = 0x00; + header->packetLength[0] = (unsigned char) (packetLength >> 8); + header->packetLength[1] = (unsigned char) (packetLength); + // DATA FIELD HEADER + header->spare1_pusVersion_spare2 = 0x10; + header->serviceType = TM_TYPE_LFR_SCIENCE; // service type + header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype + header->destinationID = TM_DESTINATION_ID_GROUND; + // AUXILIARY DATA HEADER + header->sid = sid; + header->biaStatusInfo = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB + header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB } void reset_spectral_matrix_regs( void ) @@ -699,6 +811,14 @@ void reset_spectral_matrix_regs( void ) //****************** // general functions +void set_time( unsigned char *time, unsigned int coarseTime, unsigned int fineTime ) +{ + time[0] = (unsigned char) (coarseTime>>24); + time[1] = (unsigned char) (coarseTime>>16); + time[2] = (unsigned char) (coarseTime>>8); + time[3] = (unsigned char) (coarseTime); + time[4] = (unsigned char) (fineTime>>8); + time[5] = (unsigned char) (fineTime); +} - diff --git a/src/tc_handler.c b/src/tc_handler.c --- a/src/tc_handler.c +++ b/src/tc_handler.c @@ -699,6 +699,7 @@ void launch_spectral_matrix( unsigned ch { reset_nb_sm_f0(); reset_current_sm_ring_nodes(); + reset_current_bp_ring_nodes(); reset_spectral_matrix_regs(); struct grgpio_regs_str *grgpio_regs = (struct grgpio_regs_str *) REGS_ADDR_GRGPIO; @@ -740,6 +741,7 @@ void launch_spectral_matrix_simu( unsign { reset_nb_sm_f0(); reset_current_sm_ring_nodes(); + reset_current_bp_ring_nodes(); reset_spectral_matrix_regs(); // Spectral Matrices simulator diff --git a/src/tc_load_dump_parameters.c b/src/tc_load_dump_parameters.c --- a/src/tc_load_dump_parameters.c +++ b/src/tc_load_dump_parameters.c @@ -479,8 +479,8 @@ void init_parameter_dump( void ) parameter_dump_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; parameter_dump_packet.reserved = CCSDS_RESERVED; parameter_dump_packet.userApplication = CCSDS_USER_APP; - parameter_dump_packet.packetID[0] = (unsigned char) (TM_PACKET_ID_PARAMETER_DUMP >> 8); - parameter_dump_packet.packetID[1] = (unsigned char) TM_PACKET_ID_PARAMETER_DUMP; + parameter_dump_packet.packetID[0] = (unsigned char) (APID_TM_PARAMETER_DUMP >> 8); + parameter_dump_packet.packetID[1] = (unsigned char) APID_TM_PARAMETER_DUMP; parameter_dump_packet.packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; parameter_dump_packet.packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; parameter_dump_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_PARAMETER_DUMP >> 8); diff --git a/src/tm_lfr_tc_exe.c b/src/tm_lfr_tc_exe.c --- a/src/tm_lfr_tc_exe.c +++ b/src/tm_lfr_tc_exe.c @@ -41,8 +41,8 @@ int send_tm_lfr_tc_exe_success( ccsdsTel TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_SUCCESS >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_SUCCESS ); @@ -106,8 +106,8 @@ int send_tm_lfr_tc_exe_inconsistent( ccs TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_INCONSISTENT >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_INCONSISTENT ); @@ -174,8 +174,8 @@ int send_tm_lfr_tc_exe_not_executable( c TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE ); @@ -242,8 +242,8 @@ int send_tm_lfr_tc_exe_not_implemented( TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED ); @@ -308,8 +308,8 @@ int send_tm_lfr_tc_exe_error( ccsdsTelec TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_ERROR >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_ERROR ); @@ -383,8 +383,8 @@ int send_tm_lfr_tc_exe_corrupted(ccsdsTe TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (TM_PACKET_ID_TC_EXE >> 8); - TM.packetID[1] = (unsigned char) (TM_PACKET_ID_TC_EXE ); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[1] = (unsigned char) (APID_TM_TC_EXE ); increment_seq_counter_destination_id( TM.packetSequenceControl, TC->sourceID ); TM.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_CORRUPTED >> 8); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_CORRUPTED ); diff --git a/src/wf_handler.c b/src/wf_handler.c --- a/src/wf_handler.c +++ b/src/wf_handler.c @@ -581,8 +581,8 @@ int init_header_snapshot_wf_table( unsig headerSWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID; headerSWF[ i ].reserved = DEFAULT_RESERVED; headerSWF[ i ].userApplication = CCSDS_USER_APP; - headerSWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); - headerSWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); + headerSWF[ i ].packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + headerSWF[ i ].packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; if (i == 6) { @@ -631,13 +631,13 @@ int init_header_continuous_wf_table( uns headerCWF[ i ].userApplication = CCSDS_USER_APP; if ( (sid == SID_SBM1_CWF_F1) || (sid == SID_SBM2_CWF_F2) ) { - headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2 >> 8); - headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2); + headerCWF[ i ].packetID[0] = (unsigned char) (APID_TM_SCIENCE_SBM1_SBM2 >> 8); + headerCWF[ i ].packetID[1] = (unsigned char) (APID_TM_SCIENCE_SBM1_SBM2); } else { - headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); - headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); + headerCWF[ i ].packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + headerCWF[ i ].packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); } headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_336 >> 8); @@ -674,8 +674,8 @@ int init_header_continuous_cwf3_light_ta headerCWF[ i ].reserved = DEFAULT_RESERVED; headerCWF[ i ].userApplication = CCSDS_USER_APP; - headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); - headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); + headerCWF[ i ].packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + headerCWF[ i ].packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_672 >> 8);