# HG changeset patch # User paul # Date 2017-01-16 07:32:23 # Node ID dc3755493cce52ecf271b76650cc412806802312 # Parent 4edb4fc1ba23dccfc3b9fcd77b718288921cb51f union usage removed from the sources (#897 Don_ArtVariables) #807 Don_Enumeration #801 Don_Initialisation_P2 diff --git a/.hgsubstate b/.hgsubstate --- a/.hgsubstate +++ b/.hgsubstate @@ -1,2 +1,2 @@ 3081d1f9bb20b2b64a192585337a292a9804e0c5 LFR_basic-parameters -d4a9a4d748d56d86427bfe03a6777fae4cfe3ae1 header/lfr_common_headers +7c46de6059673d3239fcc7103e16510727f35923 header/lfr_common_headers diff --git a/header/grlib_regs.h b/header/grlib_regs.h --- a/header/grlib_regs.h +++ b/header/grlib_regs.h @@ -119,6 +119,8 @@ typedef struct { #define BIT_WFP_BUFFER_1 0x02 #define RST_BITS_RUN_BURST_EN 0x80 // [1000 0000] burst f2, f1, f0 enable f3, f2, f1, f0 +#define BITS_WFP_ENABLE_ALL 0x0f // [0000 1111] enable f3, f2, f1, f0 +#define BITS_WFP_ENABLE_BURST 0x0c // [0000 1100] enable f3, f2 #define RUN_BURST_ENABLE_SBM2 0x60 // [0110 0000] enable f2 and f1 burst #define RUN_BURST_ENABLE_BURST 0x40 // [0100 0000] f2 burst enabled diff --git a/header/processing/fsw_processing.h b/header/processing/fsw_processing.h --- a/header/processing/fsw_processing.h +++ b/header/processing/fsw_processing.h @@ -15,6 +15,15 @@ #define MAX_SRC_DATA 780 // MAX size is 26 bins * 30 Bytes [TM_LFR_SCIENCE_BURST_BP2_F1] #define MAX_SRC_DATA_WITH_SPARE 143 // 13 bins * 11 Bytes +#define NODE_0 0 +#define NODE_1 1 +#define NODE_2 2 +#define NODE_3 3 +#define NODE_4 4 +#define NODE_5 5 +#define NODE_6 6 +#define NODE_7 7 + typedef struct ring_node_asm { struct ring_node_asm *next; @@ -205,14 +214,14 @@ void SM_average( float *averaged_spec_ma // + ( (int *) (ring_node_tab[6]->buffer_address) ) [ i ] // + ( (int *) (ring_node_tab[7]->buffer_address) ) [ i ]; - sum = ( incomingSMIsValid[0] * ((int *)(ring_node_tab[0]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[1] * ((int *)(ring_node_tab[1]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[2] * ((int *)(ring_node_tab[2]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[3] * ((int *)(ring_node_tab[3]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[4] * ((int *)(ring_node_tab[4]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[5] * ((int *)(ring_node_tab[5]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[6] * ((int *)(ring_node_tab[6]->buffer_address) )[ i ] ) - + ( incomingSMIsValid[7] * ((int *)(ring_node_tab[7]->buffer_address) )[ i ] ); + sum = ( incomingSMIsValid[BYTE_0] * ((int *)(ring_node_tab[NODE_0]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_1] * ((int *)(ring_node_tab[NODE_1]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_2] * ((int *)(ring_node_tab[NODE_2]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_3] * ((int *)(ring_node_tab[NODE_3]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_4] * ((int *)(ring_node_tab[NODE_4]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_5] * ((int *)(ring_node_tab[NODE_5]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_6] * ((int *)(ring_node_tab[NODE_6]->buffer_address) )[ i ] ) + + ( incomingSMIsValid[BYTE_7] * ((int *)(ring_node_tab[NODE_7]->buffer_address) )[ i ] ); if ( (nbAverageNORM == 0) && (nbAverageSBM == 0) ) { diff --git a/src/fsw_globals.c b/src/fsw_globals.c --- a/src/fsw_globals.c +++ b/src/fsw_globals.c @@ -85,7 +85,7 @@ unsigned short sequenceCounters_SCIENCE_ unsigned short sequenceCounters_SCIENCE_SBM1_SBM2 = 0; unsigned short sequenceCounters_TC_EXE[SEQ_CNT_NB_DEST_ID] = {0}; unsigned short sequenceCounters_TM_DUMP[SEQ_CNT_NB_DEST_ID] = {0}; -unsigned short sequenceCounterHK; +unsigned short sequenceCounterHK = {0}; spw_stats grspw_stats = {0}; // TC_LFR_UPDATE_INFO diff --git a/src/fsw_misc.c b/src/fsw_misc.c --- a/src/fsw_misc.c +++ b/src/fsw_misc.c @@ -349,9 +349,9 @@ rtems_task avgv_task(rtems_task_argument { #define MOVING_AVERAGE 16 rtems_status_code status; - unsigned int v[MOVING_AVERAGE]; - unsigned int e1[MOVING_AVERAGE]; - unsigned int e2[MOVING_AVERAGE]; + static unsigned int v[MOVING_AVERAGE] = {0}; + static unsigned int e1[MOVING_AVERAGE] = {0}; + static unsigned int e2[MOVING_AVERAGE] = {0}; float average_v; float average_e1; float average_e2; @@ -376,17 +376,10 @@ rtems_task avgv_task(rtems_task_argument } // initialize values - k = 0; indexOfOldValue = MOVING_AVERAGE - 1; - for (k = 0; k < MOVING_AVERAGE; k++) - { - v[k] = 0; - e1[k] = 0; - e2[k] = 0; - average_v = 0.; - average_e1 = 0.; - average_e2 = 0.; - } + average_v = 0.; + average_e1 = 0.; + average_e2 = 0.; k = 0; @@ -793,7 +786,7 @@ void increment_hk_counter( unsigned char } else { - delta = 255 - oldValue + newValue; + delta = (255 - oldValue) + newValue; } *counter = *counter + delta; @@ -906,7 +899,7 @@ void hk_lfr_le_me_he_update() unsigned int hk_lfr_he_cnt; - hk_lfr_he_cnt = ((unsigned int) housekeeping_packet.hk_lfr_he_cnt[0]) * 256 + housekeeping_packet.hk_lfr_he_cnt[1]; + hk_lfr_he_cnt = (((unsigned int) housekeeping_packet.hk_lfr_he_cnt[0]) * 256) + housekeeping_packet.hk_lfr_he_cnt[1]; //update the low severity error counter hk_lfr_le_update( ); diff --git a/src/fsw_processing_globals.c b/src/fsw_processing_globals.c --- a/src/fsw_processing_globals.c +++ b/src/fsw_processing_globals.c @@ -43,4 +43,6 @@ float K55_pe = 1; float K45_pe_re = 1; float K45_pe_im = 1; -float Alpha_M = M_PI/4; +#define ALPHA_M (M_PI / 4) + +float Alpha_M = ALPHA_M; diff --git a/src/fsw_spacewire.c b/src/fsw_spacewire.c --- a/src/fsw_spacewire.c +++ b/src/fsw_spacewire.c @@ -675,7 +675,9 @@ void spacewire_get_last_error( void ) unsigned char update_hk_lfr_last_er; memset(¤t, 0, sizeof(spw_stats)); - update_hk_lfr_last_er = 0; + hk_lfr_last_er_rid = INIT_CHAR; + hk_lfr_last_er_code = INIT_CHAR; + update_hk_lfr_last_er = INIT_CHAR; status = ioctl( fdSPW, SPACEWIRE_IOCTRL_GET_STATISTICS, ¤t ); diff --git a/src/processing/fsw_processing.c b/src/processing/fsw_processing.c --- a/src/processing/fsw_processing.c +++ b/src/processing/fsw_processing.c @@ -693,7 +693,7 @@ int getFBinMask( int index, unsigned cha int fbin; unsigned char *sy_lfr_fbins_fx_word1; - sy_lfr_fbins_fx_word1 = parameter_dump_packet.sy_lfr_fbins.fx.f0_word1; + sy_lfr_fbins_fx_word1 = parameter_dump_packet.sy_lfr_fbins_f0_word1; switch(channel) { @@ -793,9 +793,9 @@ void init_kcoeff_sbm_from_kcoeff_norm(fl { for (kcoeff=0; kcoeffdataAndCRC; for (k=0; k < BYTES_PER_MASKS_SET; k++) @@ -1490,7 +1490,7 @@ void init_parameter_dump( void ) // FBINS MASKS for (k=0; k < BYTES_PER_MASKS_SET; k++) { - parameter_dump_packet.sy_lfr_fbins.raw[k] = INT8_ALL_F; + parameter_dump_packet.sy_lfr_fbins_f0_word1[k] = INT8_ALL_F; } // PAS FILTER PARAMETERS @@ -1505,7 +1505,7 @@ void init_parameter_dump( void ) // LFR_RW_MASK for (k=0; k < BYTES_PER_MASKS_SET; k++) { - parameter_dump_packet.sy_lfr_rw_mask.raw[k] = INT8_ALL_F; + parameter_dump_packet.sy_lfr_rw_mask_f0_word1[k] = INT8_ALL_F; } // once the reaction wheels masks have been initialized, they have to be merged with the fbins masks diff --git a/src/wf_handler.c b/src/wf_handler.c --- a/src/wf_handler.c +++ b/src/wf_handler.c @@ -208,7 +208,7 @@ inline void waveform_isr_normal_sbm1_sbm //*** // F1 - if ( (waveform_picker_regs->status & 0x0c) != INIT_CHAR ) { // [0000 1100] check the f1 full bits + if ( (waveform_picker_regs->status & BITS_WFP_STATUS_F1) != INIT_CHAR ) { // [0000 1100] check the f1 full bits // (1) change the receiving buffer for the waveform picker ring_node_to_send_cwf_f1 = current_ring_node_f1->previous; current_ring_node_f1 = current_ring_node_f1->next; @@ -1167,11 +1167,11 @@ void set_wfp_burst_enable_register( unsi case LFR_MODE_SBM1: case LFR_MODE_SBM2: waveform_picker_regs->run_burst_enable = RUN_BURST_ENABLE_SBM2; // [0110 0000] enable f2 and f1 burst - waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 + waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable | BITS_WFP_ENABLE_ALL; // [1111] enable f3 f2 f1 f0 break; case LFR_MODE_BURST: waveform_picker_regs->run_burst_enable = RUN_BURST_ENABLE_BURST; // [0100 0000] f2 burst enabled - waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable | 0x0c; // [1100] enable f3 and f2 + waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable | BITS_WFP_ENABLE_BURST; // [1100] enable f3 and f2 break; default: waveform_picker_regs->run_burst_enable = INIT_CHAR; // [0000 0000] no burst enabled, no waveform enabled