diff --git a/.hgsubstate b/.hgsubstate --- a/.hgsubstate +++ b/.hgsubstate @@ -1,2 +1,2 @@ 3081d1f9bb20b2b64a192585337a292a9804e0c5 LFR_basic-parameters -3e4216a0e6981bead8bcb201012ebadb53f60dff header/lfr_common_headers +6bab694410c69700e3455ffba21ce58dbb4da870 header/lfr_common_headers diff --git a/header/fsw_misc.h b/header/fsw_misc.h --- a/header/fsw_misc.h +++ b/header/fsw_misc.h @@ -10,6 +10,30 @@ #include "fsw_spacewire.h" #include "lfr_cpu_usage_report.h" +#define LFR_RESET_CAUSE_UNKNOWN_CAUSE 0 +#define WATCHDOG_LOOP_PRINTF 10 +#define WATCHDOG_LOOP_DEBUG 3 + +#define DUMB_MESSAGE_NB 15 +#define NB_RTEMS_EVENTS 32 +#define EVENT_12 12 +#define EVENT_13 13 +#define EVENT_14 14 +#define DUMB_MESSAGE_0 "in DUMB *** default" +#define DUMB_MESSAGE_1 "in DUMB *** timecode_irq_handler" +#define DUMB_MESSAGE_2 "in DUMB *** f3 buffer changed" +#define DUMB_MESSAGE_3 "in DUMB *** in SMIQ *** Error sending event to AVF0" +#define DUMB_MESSAGE_4 "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ" +#define DUMB_MESSAGE_5 "in DUMB *** waveforms_simulator_isr" +#define DUMB_MESSAGE_6 "VHDL SM *** two buffers f0 ready" +#define DUMB_MESSAGE_7 "ready for dump" +#define DUMB_MESSAGE_8 "VHDL ERR *** spectral matrix" +#define DUMB_MESSAGE_9 "tick" +#define DUMB_MESSAGE_10 "VHDL ERR *** waveform picker" +#define DUMB_MESSAGE_11 "VHDL ERR *** unexpected ready matrix values" +#define DUMB_MESSAGE_12 "WATCHDOG timer" +#define DUMB_MESSAGE_13 "TIMECODE timer" +#define DUMB_MESSAGE_14 "TIMECODE ISR" enum lfr_reset_cause_t{ UNKNOWN_CAUSE, @@ -46,8 +70,6 @@ extern gptimer_regs_t *gptimer_regs; extern void ASR16_get_FPRF_IURF_ErrorCounters( unsigned int*, unsigned int* ); extern void CCR_getInstructionAndDataErrorCounters( unsigned int*, unsigned int* ); -#define LFR_RESET_CAUSE_UNKNOWN_CAUSE 0 - rtems_name name_hk_rate_monotonic; // name of the HK rate monotonic rtems_id HK_id; // id of the HK rate monotonic period rtems_name name_avgv_rate_monotonic; // name of the AVGV rate monotonic diff --git a/header/fsw_spacewire.h b/header/fsw_spacewire.h --- a/header/fsw_spacewire.h +++ b/header/fsw_spacewire.h @@ -13,6 +13,15 @@ #include "tc_handler.h" #include "fsw_init.h" +#define SPW_LINK_OK 5 +#define CONF_TCODE_CTRL 0x0909 // [Time Rx : Time Tx : Link error : Tick-out IRQ] +#define SPW_BIT_NP 0x00100000 // [NP] set the No port force bit +#define SPW_BIT_NP_MASK 0xffdfffff +#define SPW_BIT_RE 0x00010000 // [RE] set the RMAP Enable bit +#define SPW_BIT_RE_MASK 0xfffdffff +#define SPW_LINK_STAT_POS 21 +#define SPW_TIMECODE_MAX 63 + extern spw_stats grspw_stats; extern rtems_name timecode_timer_name; extern rtems_id timecode_timer_id; diff --git a/header/grlib_regs.h b/header/grlib_regs.h --- a/header/grlib_regs.h +++ b/header/grlib_regs.h @@ -30,6 +30,18 @@ typedef struct { volatile unsigned int unused; } timer_regs_t; +//************* +//************* +// GPTIMER_REGS + +#define GPTIMER_CLEAR_IRQ 0x00000010 // clear pending IRQ if any +#define GPTIMER_LD 0x00000004 // LD load value from the reload register +#define GPTIMER_EN 0x00000001 // EN enable the timer +#define GPTIMER_EN_MASK 0xfffffffe // EN enable the timer +#define GPTIMER_RS 0x00000002 // RS restart +#define GPTIMER_IE 0x00000008 // IE interrupt enable +#define GPTIMER_IE_MASK 0xffffffef // IE interrupt enable + typedef struct { volatile unsigned int scaler_value; volatile unsigned int scaler_reload; @@ -38,6 +50,25 @@ typedef struct { timer_regs_t timer[NB_GPTIMER]; } gptimer_regs_t; +//********************* +//********************* +// TIME_MANAGEMENT_REGS + +#define VAL_SOFTWARE_RESET 0x02 // [0010] software reset +#define VAL_LFR_SYNCHRONIZED 0x80000000 +#define BIT_SYNCHRONIZATION 31 +#define COARSE_TIME_MASK 0x7fffffff +#define SYNC_BIT_MASK 0x7f +#define SYNC_BIT 0x80 +#define BIT_CAL_RELOAD 0x00000010 +#define MASK_CAL_RELOAD 0xffffffef // [1110 1111] +#define BIT_CAL_ENABLE 0x00000040 +#define MASK_CAL_ENABLE 0xffffffbf // [1011 1111] +#define BIT_SET_INTERLEAVED 0x00000020 // [0010 0000] +#define MASK_SET_INTERLEAVED 0xffffffdf // [1101 1111] +#define BIT_SOFT_RESET 0x00000004 // [0100] +#define MASK_SOFT_RESET 0xfffffffb // [1011] + typedef struct { volatile int ctrl; // bit 0 forces the load of the coarse_time_load value and resets the fine_time // bit 1 is the soft reset for the time management module @@ -57,6 +88,45 @@ typedef struct { volatile unsigned int calData; } time_management_regs_t; +//********************* +//********************* +// WAVEFORM_PICKER_REGS + +#define BITS_WFP_STATUS_F3 0xc0 // [1100 0000] check the f3 full bits +#define BIT_WFP_BUF_F3_0 0x40 // [0100 0000] f3 buffer 0 is full +#define BIT_WFP_BUF_F3_1 0x80 // [1000 0000] f3 buffer 1 is full +#define RST_WFP_F3_0 0x00008840 // [1000 1000 0100 0000] +#define RST_WFP_F3_1 0x00008880 // [1000 1000 1000 0000] + +#define BITS_WFP_STATUS_F2 0x30 // [0011 0000] get the status bits for f2 +#define SHIFT_WFP_STATUS_F2 4 +#define BIT_WFP_BUF_F2_0 0x10 // [0001 0000] f2 buffer 0 is full +#define BIT_WFP_BUF_F2_1 0x20 // [0010 0000] f2 buffer 1 is full +#define RST_WFP_F2_0 0x00004410 // [0100 0100 0001 0000] +#define RST_WFP_F2_1 0x00004420 // [0100 0100 0010 0000] + +#define BITS_WFP_STATUS_F1 0x0c // [0000 1100] check the f1 full bits +#define BIT_WFP_BUF_F1_0 0x04 // [0000 0100] f1 buffer 0 is full +#define BIT_WFP_BUF_F1_1 0x08 // [0000 1000] f1 buffer 1 is full +#define RST_WFP_F1_0 0x00002204 // [0010 0010 0000 0100] f1 bits = 0 +#define RST_WFP_F1_1 0x00002208 // [0010 0010 0000 1000] f1 bits = 0 + +#define BITS_WFP_STATUS_F0 0x03 // [0000 0011] check the f0 full bits +#define RST_WFP_F0_0 0x00001101 // [0001 0001 0000 0001] +#define RST_WFP_F0_1 0x00001102 // [0001 0001 0000 0010] + +#define BIT_WFP_BUFFER_0 0x01 +#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 RUN_BURST_ENABLE_SBM2 0x60 // [0110 0000] enable f2 and f1 burst +#define RUN_BURST_ENABLE_BURST 0x40 // [0100 0000] f2 burst enabled + +#define DFLT_WFP_NB_DATA_BY_BUFFER 0xa7f // 0x30 *** 2688 - 1 => nb samples -1 +#define DFLT_WFP_SNAPSHOT_PARAM 0xa80 // 0x34 *** 2688 => nb samples +#define DFLT_WFP_BUFFER_LENGTH 0x1f8 // buffer length in burst = 3 * 2688 / 16 = 504 = 0x1f8 +#define DFLT_WFP_DELTA_F0_2 0x30 // 48 = 11 0000, max 7 bits + // PDB >= 0.1.28, 0x80000f54 typedef struct{ int data_shaping; // 0x00 00 *** R2 R1 R0 SP1 SP0 BW @@ -106,6 +176,29 @@ typedef struct{ volatile unsigned int e2; // 0x98 } waveform_picker_regs_0_1_18_t; +//********************* +//********************* +// SPECTRAL_MATRIX_REGS + +#define BITS_STATUS_F0 0x03 // [0011] +#define BITS_STATUS_F1 0x0c // [1100] +#define BITS_STATUS_F2 0x30 // [0011 0000] +#define BITS_HK_AA_SM 0x780 // [0111 1000 0000] +#define BITS_SM_ERR 0x7c0 // [0111 1100 0000] +#define BITS_STATUS_REG 0x7ff // [0111 1111 1111] +#define BIT_READY_0 0x1 // [01] +#define BIT_READY_1 0x2 // [10] +#define BIT_READY_0_1 0x3 // [11] +#define BIT_STATUS_F1_0 0x04 // [0100] +#define BIT_STATUS_F1_1 0x08 // [1000] +#define BIT_STATUS_F2_0 0x10 // [0001 0000] +#define BIT_STATUS_F2_1 0x20 // [0010 0000] +#define DEFAULT_MATRIX_LENGTH 0xc8 // 25 * 128 / 16 = 200 = 0xc8 +#define BIT_IRQ_ON_NEW_MATRIX 0x01 +#define MASK_IRQ_ON_NEW_MATRIX 0xfffffffe +#define BIT_IRQ_ON_ERROR 0x02 +#define MASK_IRQ_ON_ERROR 0xfffffffd + typedef struct { volatile int config; // 0x00 volatile int status; // 0x04 diff --git a/header/lfr_cpu_usage_report.h b/header/lfr_cpu_usage_report.h --- a/header/lfr_cpu_usage_report.h +++ b/header/lfr_cpu_usage_report.h @@ -29,4 +29,8 @@ unsigned char lfr_rtems_cpu_usage_report( void ); +#define CONST_100 100 +#define CONST_1000 1000 +#define CONST_100000 100000 + #endif // LFR_CPU_USAGE_REPORT_H 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 @@ -11,6 +11,10 @@ #include "fsw_params.h" +#define SBM_COEFF_PER_NORM_COEFF 2 +#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 + typedef struct ring_node_asm { struct ring_node_asm *next; @@ -24,24 +28,24 @@ typedef struct unsigned char protocolIdentifier; unsigned char reserved; unsigned char userApplication; - unsigned char packetID[2]; - unsigned char packetSequenceControl[2]; - unsigned char packetLength[2]; + unsigned char packetID[BYTES_PER_PACKETID]; + unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL]; + unsigned char packetLength[BYTES_PER_PKT_LEN]; // DATA FIELD HEADER unsigned char spare1_pusVersion_spare2; unsigned char serviceType; unsigned char serviceSubType; unsigned char destinationID; - unsigned char time[6]; + unsigned char time[BYTES_PER_TIME]; // AUXILIARY HEADER unsigned char sid; unsigned char pa_bia_status_info; unsigned char sy_lfr_common_parameters_spare; unsigned char sy_lfr_common_parameters; - unsigned char acquisitionTime[6]; - unsigned char pa_lfr_bp_blk_nr[2]; + unsigned char acquisitionTime[BYTES_PER_TIME]; + unsigned char pa_lfr_bp_blk_nr[BYTES_PER_BLKNR]; // SOURCE DATA - unsigned char data[ 780 ]; // MAX size is 26 bins * 30 Bytes [TM_LFR_SCIENCE_BURST_BP2_F1] + unsigned char data[ MAX_SRC_DATA ]; // MAX size is 26 bins * 30 Bytes [TM_LFR_SCIENCE_BURST_BP2_F1] } bp_packet; typedef struct @@ -50,25 +54,25 @@ typedef struct unsigned char protocolIdentifier; unsigned char reserved; unsigned char userApplication; - unsigned char packetID[2]; - unsigned char packetSequenceControl[2]; - unsigned char packetLength[2]; + unsigned char packetID[BYTES_PER_PACKETID]; + unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL]; + unsigned char packetLength[BYTES_PER_PKT_LEN]; // DATA FIELD HEADER unsigned char spare1_pusVersion_spare2; unsigned char serviceType; unsigned char serviceSubType; unsigned char destinationID; - unsigned char time[6]; + unsigned char time[BYTES_PER_TIME]; // AUXILIARY HEADER unsigned char sid; unsigned char pa_bia_status_info; unsigned char sy_lfr_common_parameters_spare; unsigned char sy_lfr_common_parameters; - unsigned char acquisitionTime[6]; + unsigned char acquisitionTime[BYTES_PER_TIME]; unsigned char source_data_spare; - unsigned char pa_lfr_bp_blk_nr[2]; + unsigned char pa_lfr_bp_blk_nr[BYTES_PER_BLKNR]; // SOURCE DATA - unsigned char data[ 143 ]; // 13 bins * 11 Bytes + unsigned char data[ MAX_SRC_DATA_WITH_SPARE ]; // 13 bins * 11 Bytes } bp_packet_with_spare; // only for TM_LFR_SCIENCE_NORMAL_BP1_F0 and F1 typedef struct asm_msg @@ -99,8 +103,8 @@ extern Packet_TM_LFR_PARAMETER_DUMP_t pa extern time_management_regs_t *time_management_regs; extern volatile spectral_matrix_regs_t *spectral_matrix_regs; -extern rtems_name misc_name[5]; -extern rtems_id Task_id[20]; /* array of task ids */ +extern rtems_name misc_name[]; +extern rtems_id Task_id[]; /* array of task ids */ ring_node * getRingNodeForAveraging( unsigned char frequencyChannel); // ISR @@ -173,7 +177,7 @@ void SM_average( float *averaged_spec_ma float sum; unsigned int i; unsigned int k; - unsigned char incomingSMIsValid[8]; + unsigned char incomingSMIsValid[NB_SM_BEFORE_AVF0_F1]; unsigned int numberOfValidSM; unsigned char isValid; @@ -181,7 +185,7 @@ void SM_average( float *averaged_spec_ma // PAS FILTERING // check acquisitionTime of the incoming data numberOfValidSM = 0; - for (k=0; k<8; k++) + for (k=0; kcoarseTime, ring_node_tab[k]->fineTime, channel ); incomingSMIsValid[k] = isValid; @@ -201,14 +205,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] == 1) ? ( (int *) (ring_node_tab[0]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[1] == 1) ? ( (int *) (ring_node_tab[1]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[2] == 1) ? ( (int *) (ring_node_tab[2]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[3] == 1) ? ( (int *) (ring_node_tab[3]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[4] == 1) ? ( (int *) (ring_node_tab[4]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[5] == 1) ? ( (int *) (ring_node_tab[5]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[6] == 1) ? ( (int *) (ring_node_tab[6]->buffer_address) ) [ i ] : 0.0 ) - + ( (incomingSMIsValid[7] == 1) ? ( (int *) (ring_node_tab[7]->buffer_address) ) [ i ] : 0.0 ); + 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 ] ); if ( (nbAverageNORM == 0) && (nbAverageSBM == 0) ) { @@ -278,13 +282,19 @@ void ASM_reorganize_and_divide( float *a for( frequencyBin = 0; frequencyBin < NB_BINS_PER_SM; frequencyBin++ ) { offsetASMReorganized = - frequencyBin * NB_VALUES_PER_SM + (frequencyBin * NB_VALUES_PER_SM) + asmComponent; offsetASM = - asmComponent * NB_BINS_PER_SM + (asmComponent * NB_BINS_PER_SM) + frequencyBin; - averaged_spec_mat_reorganized[offsetASMReorganized ] = - (divider != 0.0) ? averaged_spec_mat[ offsetASM ] / divider : 0.0; + if ( divider != INIT_FLOAT ) + { + averaged_spec_mat_reorganized[offsetASMReorganized ] = averaged_spec_mat[ offsetASM ] / divider; + } + else + { + averaged_spec_mat_reorganized[offsetASMReorganized ] = INIT_FLOAT; + } } } } @@ -304,12 +314,12 @@ void ASM_compress_reorganize_and_divide( for( frequencyBin = 0; frequencyBin < nbBinsCompressedMatrix; frequencyBin++ ) { offsetCompressed = // NO TIME OFFSET - frequencyBin * NB_VALUES_PER_SM + (frequencyBin * NB_VALUES_PER_SM) + asmComponent; offsetASM = // NO TIME OFFSET - asmComponent * NB_BINS_PER_SM + (asmComponent * NB_BINS_PER_SM) + ASMIndexStart - + frequencyBin * nbBinsToAverage; + + (frequencyBin * nbBinsToAverage); compressed_spec_mat[ offsetCompressed ] = 0; for ( k = 0; k < nbBinsToAverage; k++ ) { @@ -340,8 +350,8 @@ void ASM_convert( volatile float *input_ { for ( asmComponent=0; asmComponent 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 + extern unsigned int lastValidEnterModeTime; extern unsigned char oneTcLfrUpdateTimeReceived; diff --git a/header/tc_load_dump_parameters.h b/header/tc_load_dump_parameters.h --- a/header/tc_load_dump_parameters.h +++ b/header/tc_load_dump_parameters.h @@ -11,7 +11,25 @@ #include "basic_parameters_params.h" #include "avf0_prc0.h" -#define FLOAT_EQUAL_ZERO 0.001 +#define FLOAT_EQUAL_ZERO 0.001 +#define NB_BINS_TO_REMOVE 3 +#define FI_INTERVAL_COEFF 0.285 +#define BIN_MIN 0 +#define BIN_MAX 127 +#define DELTAF_F0 96. +#define DELTAF_F1 16. +#define DELTAF_F2 1. + +#define BIT_RW1_F1 0x80 +#define BIT_RW1_F2 0x40 +#define BIT_RW2_F1 0x20 +#define BIT_RW2_F2 0x10 +#define BIT_RW3_F1 0x08 +#define BIT_RW3_F2 0x04 +#define BIT_RW4_F1 0x02 +#define BIT_RW4_F2 0x01 + +#define SBM_KCOEFF_PER_NORM_KCOEFF 2 extern unsigned short sequenceCounterParameterDump; extern unsigned short sequenceCounters_TM_DUMP[]; diff --git a/header/wf_handler.h b/header/wf_handler.h --- a/header/wf_handler.h +++ b/header/wf_handler.h @@ -11,6 +11,33 @@ #include "fsw_params_wf_handler.h" #define pi 3.14159265359 +#define T0_IN_FINETIME ( 65536. / 24576. ) +#define T1_IN_FINETIME ( 65536. / 4096. ) +#define T2_IN_FINETIME ( 65536. / 256. ) +#define T3_IN_FINETIME ( 65536. / 16. ) + +#define TICKS_PER_T1 16 +#define TICKS_PER_T2 256 +#define TICKS_PER_S 65536. +#define MS_PER_S 1000. + +#define FREQ_F0 24576. +#define FREQ_F1 4096. +#define FREQ_F2 256. +#define FREQ_F3 16. + +#define DELTAT_F0 2731 // (2048. / 24576. / 2.) * 65536. = 2730.667; +#define DELTAT_F1 16384 // (2048. / 4096. / 2.) * 65536. = 16384; +#define DELTAT_F2 262144 // (2048. / 256. / 2.) * 65536. = 262144; + +#define OFFSET_2_BYTES 2 + +#define ONE_TICK_CORR_INTERVAL_0_MIN 0.5 +#define ONE_TICK_CORR_INTERVAL_0_MAX 1.0 +#define ONE_TICK_CORR_INTERVAL_1_MIN -1.0 +#define ONE_TICK_CORR_INTERVAL_1_MAX -0.5 +#define ONE_TICK_CORR 1 +#define CORR_MULT 2 extern int fdSPW; @@ -30,7 +57,7 @@ extern struct param_local_str param_loca extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST; extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2; -extern rtems_id Task_id[20]; /* array of task ids */ +extern rtems_id Task_id[]; /* array of task ids */ extern unsigned char lfrCurrentMode; diff --git a/src/fsw_config.c b/src/fsw_config.c --- a/src/fsw_config.c +++ b/src/fsw_config.c @@ -1,15 +1,16 @@ #include #include +#include // GRSPW0 resources struct drvmgr_key grlib_grspw_0n1_res[] = { - {"txBdCnt", KEY_TYPE_INT, {(unsigned int)50}}, // 7 SWF_F0, 7 SWF_F1, 7 SWF_F2, 7 CWF_F3, 7 CWF_F1 ou 7 CWF_F2 - {"rxBdCnt", KEY_TYPE_INT, {(unsigned int)10}}, - {"txDataSize", KEY_TYPE_INT, {(unsigned int)4096}}, - {"txHdrSize", KEY_TYPE_INT, {(unsigned int)34}}, - {"rxPktSize", KEY_TYPE_INT, {(unsigned int)200}}, - KEY_EMPTY +{"txBdCnt", KEY_TYPE_INT, {(unsigned int)TXBDCNT}}, // 7 SWF_F0, 7 SWF_F1, 7 SWF_F2, 7 CWF_F3, 7 CWF_F1 ou 7 CWF_F2 +{"rxBdCnt", KEY_TYPE_INT, {(unsigned int)RXBDCNT}}, +{"txDataSize", KEY_TYPE_INT, {(unsigned int)TXDATASIZE}}, +{"txHdrSize", KEY_TYPE_INT, {(unsigned int)TXHDRSIZE}}, +{"rxPktSize", KEY_TYPE_INT, {(unsigned int)RXPKTSIZE}}, +KEY_EMPTY }; // If RTEMS_DRVMGR_STARTUP is defined we override the "weak defaults" that is defined by the LEON3 BSP. diff --git a/src/fsw_globals.c b/src/fsw_globals.c --- a/src/fsw_globals.c +++ b/src/fsw_globals.c @@ -22,10 +22,13 @@ #include "fsw_params.h" #include "fsw_params_wf_handler.h" +#define NB_OF_TASKS 20 +#define NB_OF_MISC_NAMES 5 + // RTEMS GLOBAL VARIABLES -rtems_name misc_name[5]; -rtems_name Task_name[20]; /* array of task names */ -rtems_id Task_id[20]; /* array of task ids */ +rtems_name misc_name[NB_OF_MISC_NAMES]; +rtems_name Task_name[NB_OF_TASKS]; /* array of task names */ +rtems_id Task_id[NB_OF_TASKS]; /* array of task ids */ rtems_name timecode_timer_name; rtems_id timecode_timer_id; int fdSPW = 0; @@ -95,4 +98,5 @@ float cp_rpw_sc_rw4_f2; filterPar_t filterPar; fbins_masks_t fbins_masks; -unsigned int acquisitionDurations[3] = {ACQUISITION_DURATION_F0, ACQUISITION_DURATION_F1, ACQUISITION_DURATION_F2}; +unsigned int acquisitionDurations[NB_ACQUISITION_DURATION] += {ACQUISITION_DURATION_F0, ACQUISITION_DURATION_F1, ACQUISITION_DURATION_F2}; diff --git a/src/fsw_init.c b/src/fsw_init.c --- a/src/fsw_init.c +++ b/src/fsw_init.c @@ -164,16 +164,16 @@ rtems_task Init( rtems_task_argument ign init_k_coefficients_prc0(); init_k_coefficients_prc1(); init_k_coefficients_prc2(); - pa_bia_status_info = 0x00; - cp_rpw_sc_rw_f_flags = 0x00; - cp_rpw_sc_rw1_f1 = 0.0; - cp_rpw_sc_rw1_f2 = 0.0; - cp_rpw_sc_rw2_f1 = 0.0; - cp_rpw_sc_rw2_f2 = 0.0; - cp_rpw_sc_rw3_f1 = 0.0; - cp_rpw_sc_rw3_f2 = 0.0; - cp_rpw_sc_rw4_f1 = 0.0; - cp_rpw_sc_rw4_f2 = 0.0; + pa_bia_status_info = INIT_CHAR; + cp_rpw_sc_rw_f_flags = INIT_CHAR; + cp_rpw_sc_rw1_f1 = INIT_FLOAT; + cp_rpw_sc_rw1_f2 = INIT_FLOAT; + cp_rpw_sc_rw2_f1 = INIT_FLOAT; + cp_rpw_sc_rw2_f2 = INIT_FLOAT; + cp_rpw_sc_rw3_f1 = INIT_FLOAT; + cp_rpw_sc_rw3_f2 = INIT_FLOAT; + cp_rpw_sc_rw4_f1 = INIT_FLOAT; + cp_rpw_sc_rw4_f2 = INIT_FLOAT; // initialize filtering parameters filterPar.spare_sy_lfr_pas_filter_enabled = DEFAULT_SY_LFR_PAS_FILTER_ENABLED; filterPar.sy_lfr_pas_filter_modulus = DEFAULT_SY_LFR_PAS_FILTER_MODULUS; @@ -319,17 +319,17 @@ void init_local_mode_parameters( void ) for(i = 0; ictrl = time_management_regs->ctrl | 0x02; // [0010] software reset, coarse time = 0x80000000 + time_management_regs->ctrl = time_management_regs->ctrl | VAL_SOFTWARE_RESET; // [0010] software reset, coarse time = 0x80000000 } void create_names( void ) // create all names for tasks and queues @@ -403,7 +403,7 @@ int create_all_tasks( void ) // create a if (status == RTEMS_SUCCESSFUL) // SEND { status = rtems_task_create( - Task_name[TASKID_SEND], TASK_PRIORITY_SEND, RTEMS_MINIMUM_STACK_SIZE * 2, + Task_name[TASKID_SEND], TASK_PRIORITY_SEND, RTEMS_MINIMUM_STACK_SIZE * STACK_SIZE_MULT, RTEMS_DEFAULT_MODES, RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_SEND] ); @@ -446,7 +446,7 @@ int create_all_tasks( void ) // create a if (status == RTEMS_SUCCESSFUL) // PRC0 { status = rtems_task_create( - Task_name[TASKID_PRC0], TASK_PRIORITY_PRC0, RTEMS_MINIMUM_STACK_SIZE * 2, + Task_name[TASKID_PRC0], TASK_PRIORITY_PRC0, RTEMS_MINIMUM_STACK_SIZE * STACK_SIZE_MULT, RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT, RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC0] ); @@ -462,7 +462,7 @@ int create_all_tasks( void ) // create a if (status == RTEMS_SUCCESSFUL) // PRC1 { status = rtems_task_create( - Task_name[TASKID_PRC1], TASK_PRIORITY_PRC1, RTEMS_MINIMUM_STACK_SIZE * 2, + Task_name[TASKID_PRC1], TASK_PRIORITY_PRC1, RTEMS_MINIMUM_STACK_SIZE * STACK_SIZE_MULT, RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT, RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC1] ); @@ -478,7 +478,7 @@ int create_all_tasks( void ) // create a if (status == RTEMS_SUCCESSFUL) // PRC2 { status = rtems_task_create( - Task_name[TASKID_PRC2], TASK_PRIORITY_PRC2, RTEMS_MINIMUM_STACK_SIZE * 2, + Task_name[TASKID_PRC2], TASK_PRIORITY_PRC2, RTEMS_MINIMUM_STACK_SIZE * STACK_SIZE_MULT, RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT, RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC2] ); @@ -913,10 +913,10 @@ void init_ring(ring_node ring[], unsigne // BUFFER ADDRESS for(i=0; itimer[timer].ctrl = 0x00; // reset the control register + gptimer_regs->timer[timer].ctrl = INIT_CHAR; // reset the control register status = rtems_interrupt_catch( timer_isr, interrupt_level, &old_isr_handler) ; // see sparcv8.pdf p.76 for interrupt levels if (status!=RTEMS_SUCCESSFUL) @@ -45,11 +45,11 @@ void timer_start(unsigned char timer) * */ - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000010; // clear pending IRQ if any - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000004; // LD load value from the reload register - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000001; // EN enable the timer - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000002; // RS restart - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000008; // IE interrupt enable + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_CLEAR_IRQ; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_LD; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_EN; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_RS; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_IE; } void timer_stop(unsigned char timer) @@ -61,9 +61,9 @@ void timer_stop(unsigned char timer) * */ - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & 0xfffffffe; // EN enable the timer - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & 0xffffffef; // IE interrupt enable - gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000010; // clear pending IRQ if any + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & GPTIMER_EN_MASK; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & GPTIMER_IE_MASK; + gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | GPTIMER_CLEAR_IRQ; } void timer_set_clock_divider(unsigned char timer, unsigned int clock_divider) @@ -127,7 +127,7 @@ void watchdog_reload(void) * */ - gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | 0x00000004; // LD load value from the reload register + gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | GPTIMER_LD; } void watchdog_start(void) @@ -141,10 +141,10 @@ void watchdog_start(void) LEON_Clear_interrupt( IRQ_GPTIMER_WATCHDOG ); - gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | 0x00000010; // clear pending IRQ if any - gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | 0x00000004; // LD load value from the reload register - gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | 0x00000001; // EN enable the timer - gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | 0x00000008; // IE interrupt enable + gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | GPTIMER_CLEAR_IRQ; + gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | GPTIMER_LD; + gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | GPTIMER_EN; + gptimer_regs->timer[TIMER_WATCHDOG].ctrl = gptimer_regs->timer[TIMER_WATCHDOG].ctrl | GPTIMER_IE; LEON_Unmask_interrupt( IRQ_GPTIMER_WATCHDOG ); @@ -210,14 +210,14 @@ rtems_task load_task(rtems_task_argument status = rtems_rate_monotonic_period( watchdog_period_id, WATCHDOG_PERIOD ); watchdog_reload(); i = i + 1; - if ( i == 10 ) + if ( i == WATCHDOG_LOOP_PRINTF ) { i = 0; j = j + 1; PRINTF1("%d\n", j) } #ifdef DEBUG_WATCHDOG - if (j == 3 ) + if (j == WATCHDOG_LOOP_DEBUG ) { status = rtems_task_delete(RTEMS_SELF); } @@ -261,15 +261,15 @@ rtems_task hous_task(rtems_task_argument DEBUG_PRINTF1("startup HK, HK_id status = %d\n", period_status.state) while(period_status.state != RATE_MONOTONIC_EXPIRED ) // after SY_LFR_TIME_SYN_TIMEOUT ms, starts HK anyway { - if ((time_management_regs->coarse_time & 0x80000000) == 0x00000000) // check time synchronization + if ((time_management_regs->coarse_time & VAL_LFR_SYNCHRONIZED) == INT32_ALL_0) // check time synchronization { break; // break if LFR is synchronized } else { status = rtems_rate_monotonic_get_status( HK_id, &period_status ); -// sched_yield(); - status = rtems_task_wake_after( 10 ); // wait SY_LFR_DPU_CONNECT_TIMEOUT 100 ms = 10 * 10 ms + + status = rtems_task_wake_after( HK_SYNC_WAIT ); // wait HK_SYNCH_WAIT 100 ms = 10 * 10 ms } } status = rtems_rate_monotonic_cancel(HK_id); @@ -284,16 +284,16 @@ rtems_task hous_task(rtems_task_argument spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_6 ); } else { - housekeeping_packet.packetSequenceControl[0] = (unsigned char) (sequenceCounterHK >> 8); - housekeeping_packet.packetSequenceControl[1] = (unsigned char) (sequenceCounterHK ); + housekeeping_packet.packetSequenceControl[BYTE_0] = (unsigned char) (sequenceCounterHK >> SHIFT_1_BYTE); + housekeeping_packet.packetSequenceControl[BYTE_1] = (unsigned char) (sequenceCounterHK ); increment_seq_counter( &sequenceCounterHK ); - housekeeping_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - housekeeping_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - housekeeping_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - housekeeping_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); - housekeeping_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - housekeeping_packet.time[5] = (unsigned char) (time_management_regs->fine_time); + housekeeping_packet.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + housekeeping_packet.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + housekeeping_packet.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + housekeeping_packet.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + housekeeping_packet.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + housekeeping_packet.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); spacewire_update_hk_lfr_link_state( &housekeeping_packet.lfr_status_word[0] ); @@ -436,22 +436,22 @@ rtems_task dumb_task( rtems_task_argumen unsigned int fine_time = 0; rtems_event_set event_out; - char *DumbMessages[15] = {"in DUMB *** default", // RTEMS_EVENT_0 - "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1 - "in DUMB *** f3 buffer changed", // RTEMS_EVENT_2 - "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3 - "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4 - "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5 - "VHDL SM *** two buffers f0 ready", // RTEMS_EVENT_6 - "ready for dump", // RTEMS_EVENT_7 - "VHDL ERR *** spectral matrix", // RTEMS_EVENT_8 - "tick", // RTEMS_EVENT_9 - "VHDL ERR *** waveform picker", // RTEMS_EVENT_10 - "VHDL ERR *** unexpected ready matrix values", // RTEMS_EVENT_11 - "WATCHDOG timer", // RTEMS_EVENT_12 - "TIMECODE timer", // RTEMS_EVENT_13 - "TIMECODE ISR" // RTEMS_EVENT_14 - }; + char *DumbMessages[DUMB_MESSAGE_NB] = {DUMB_MESSAGE_0, // RTEMS_EVENT_0 + DUMB_MESSAGE_1, // RTEMS_EVENT_1 + DUMB_MESSAGE_2, // RTEMS_EVENT_2 + DUMB_MESSAGE_3, // RTEMS_EVENT_3 + DUMB_MESSAGE_4, // RTEMS_EVENT_4 + DUMB_MESSAGE_5, // RTEMS_EVENT_5 + DUMB_MESSAGE_6, // RTEMS_EVENT_6 + DUMB_MESSAGE_7, // RTEMS_EVENT_7 + DUMB_MESSAGE_8, // RTEMS_EVENT_8 + DUMB_MESSAGE_9, // RTEMS_EVENT_9 + DUMB_MESSAGE_10, // RTEMS_EVENT_10 + DUMB_MESSAGE_11, // RTEMS_EVENT_11 + DUMB_MESSAGE_12, // RTEMS_EVENT_12 + DUMB_MESSAGE_13, // RTEMS_EVENT_13 + DUMB_MESSAGE_14 // RTEMS_EVENT_14 + }; BOOT_PRINTF("in DUMB *** \n") @@ -462,23 +462,23 @@ rtems_task dumb_task( rtems_task_argumen | RTEMS_EVENT_14, RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT intEventOut = (unsigned int) event_out; - for ( i=0; i<32; i++) + for ( i=0; i> i) & 0x0001) != 0) + if ( ((intEventOut >> i) & 1) != 0) { coarse_time = time_management_regs->coarse_time; fine_time = time_management_regs->fine_time; - if (i==12) + if (i==EVENT_12) { - PRINTF1("%s\n", DumbMessages[12]) + PRINTF1("%s\n", DUMB_MESSAGE_12) } - if (i==13) + if (i==EVENT_13) { - PRINTF1("%s\n", DumbMessages[13]) + PRINTF1("%s\n", DUMB_MESSAGE_13) } - if (i==14) + if (i==EVENT_14) { - PRINTF1("%s\n", DumbMessages[1]) + PRINTF1("%s\n", DUMB_MESSAGE_1) } } } @@ -504,18 +504,18 @@ void init_housekeeping_parameters( void for(i = 0; i< sizeOfHK; i++) { - parameters[i] = 0x00; + parameters[i] = INIT_CHAR; } housekeeping_packet.targetLogicalAddress = CCSDS_DESTINATION_ID; housekeeping_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; housekeeping_packet.reserved = DEFAULT_RESERVED; housekeeping_packet.userApplication = CCSDS_USER_APP; - housekeeping_packet.packetID[0] = (unsigned char) (APID_TM_HK >> 8); + housekeeping_packet.packetID[0] = (unsigned char) (APID_TM_HK >> SHIFT_1_BYTE); 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); + housekeeping_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_HK >> SHIFT_1_BYTE); housekeeping_packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_HK ); housekeeping_packet.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; housekeeping_packet.serviceType = TM_TYPE_HK; @@ -529,13 +529,13 @@ void init_housekeeping_parameters( void // init software version housekeeping_packet.lfr_sw_version[0] = SW_VERSION_N1; housekeeping_packet.lfr_sw_version[1] = SW_VERSION_N2; - housekeeping_packet.lfr_sw_version[2] = SW_VERSION_N3; - housekeeping_packet.lfr_sw_version[3] = SW_VERSION_N4; + housekeeping_packet.lfr_sw_version[BYTE_2] = SW_VERSION_N3; + housekeeping_packet.lfr_sw_version[BYTE_3] = SW_VERSION_N4; // init fpga version parameters = (unsigned char *) (REGS_ADDR_VHDL_VERSION); - housekeeping_packet.lfr_fpga_version[0] = parameters[1]; // n1 - housekeeping_packet.lfr_fpga_version[1] = parameters[2]; // n2 - housekeeping_packet.lfr_fpga_version[2] = parameters[3]; // n3 + housekeeping_packet.lfr_fpga_version[BYTE_0] = parameters[BYTE_1]; // n1 + housekeeping_packet.lfr_fpga_version[BYTE_1] = parameters[BYTE_2]; // n2 + housekeeping_packet.lfr_fpga_version[BYTE_2] = parameters[BYTE_3]; // n3 housekeeping_packet.hk_lfr_q_sd_fifo_size = MSG_QUEUE_COUNT_SEND; housekeeping_packet.hk_lfr_q_rv_fifo_size = MSG_QUEUE_COUNT_RECV; @@ -555,8 +555,8 @@ void increment_seq_counter( unsigned sho unsigned short segmentation_grouping_flag; unsigned short sequence_cnt; - segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; // keep bits 7 downto 6 - sequence_cnt = (*packetSequenceControl) & 0x3fff; // [0011 1111 1111 1111] + segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << SHIFT_1_BYTE; // keep bits 7 downto 6 + sequence_cnt = (*packetSequenceControl) & SEQ_CNT_MASK; // [0011 1111 1111 1111] if ( sequence_cnt < SEQ_CNT_MAX) { @@ -576,11 +576,11 @@ void getTime( unsigned char *time) * */ - time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - time[2] = (unsigned char) (time_management_regs->coarse_time>>8); + time[0] = (unsigned char) (time_management_regs->coarse_time>>SHIFT_3_BYTES); + time[1] = (unsigned char) (time_management_regs->coarse_time>>SHIFT_2_BYTES); + time[2] = (unsigned char) (time_management_regs->coarse_time>>SHIFT_1_BYTE); time[3] = (unsigned char) (time_management_regs->coarse_time); - time[4] = (unsigned char) (time_management_regs->fine_time>>8); + time[4] = (unsigned char) (time_management_regs->fine_time>>SHIFT_1_BYTE); time[5] = (unsigned char) (time_management_regs->fine_time); } @@ -591,7 +591,7 @@ unsigned long long int getTimeAsUnsigned */ unsigned long long int time; - time = ( (unsigned long long int) (time_management_regs->coarse_time & 0x7fffffff) << 16 ) + time = ( (unsigned long long int) (time_management_regs->coarse_time & COARSE_TIME_MASK) << SHIFT_2_BYTES ) + time_management_regs->fine_time; return time; @@ -608,43 +608,43 @@ 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) (APID_TM_HK >> 8); + dummy_hk_packet.packetID[0] = (unsigned char) (APID_TM_HK >> SHIFT_1_BYTE); 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); + dummy_hk_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_HK >> SHIFT_1_BYTE); dummy_hk_packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_HK ); dummy_hk_packet.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; dummy_hk_packet.serviceType = TM_TYPE_HK; dummy_hk_packet.serviceSubType = TM_SUBTYPE_HK; dummy_hk_packet.destinationID = TM_DESTINATION_ID_GROUND; - dummy_hk_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - dummy_hk_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - dummy_hk_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - dummy_hk_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); - dummy_hk_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - dummy_hk_packet.time[5] = (unsigned char) (time_management_regs->fine_time); + dummy_hk_packet.time[0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + dummy_hk_packet.time[1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + dummy_hk_packet.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + dummy_hk_packet.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + dummy_hk_packet.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + dummy_hk_packet.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); dummy_hk_packet.sid = SID_HK; // init status word - dummy_hk_packet.lfr_status_word[0] = 0xff; - dummy_hk_packet.lfr_status_word[1] = 0xff; + dummy_hk_packet.lfr_status_word[0] = INT8_ALL_F; + dummy_hk_packet.lfr_status_word[1] = INT8_ALL_F; // init software version dummy_hk_packet.lfr_sw_version[0] = SW_VERSION_N1; dummy_hk_packet.lfr_sw_version[1] = SW_VERSION_N2; - dummy_hk_packet.lfr_sw_version[2] = SW_VERSION_N3; - dummy_hk_packet.lfr_sw_version[3] = SW_VERSION_N4; + dummy_hk_packet.lfr_sw_version[BYTE_2] = SW_VERSION_N3; + dummy_hk_packet.lfr_sw_version[BYTE_3] = SW_VERSION_N4; // init fpga version - parameters = (unsigned char *) (REGS_ADDR_WAVEFORM_PICKER + 0xb0); - dummy_hk_packet.lfr_fpga_version[0] = parameters[1]; // n1 - dummy_hk_packet.lfr_fpga_version[1] = parameters[2]; // n2 - dummy_hk_packet.lfr_fpga_version[2] = parameters[3]; // n3 + parameters = (unsigned char *) (REGS_ADDR_WAVEFORM_PICKER + APB_OFFSET_VHDL_REV); + dummy_hk_packet.lfr_fpga_version[BYTE_0] = parameters[BYTE_1]; // n1 + dummy_hk_packet.lfr_fpga_version[BYTE_1] = parameters[BYTE_2]; // n2 + dummy_hk_packet.lfr_fpga_version[BYTE_2] = parameters[BYTE_3]; // n3 parameters = (unsigned char *) &dummy_hk_packet.hk_lfr_cpu_load; - for (i=0; i<100; i++) + for (i=0; i<(BYTE_POS_HK_REACTION_WHEELS_FREQUENCY - BYTE_POS_HK_LFR_CPU_LOAD); i++) { - parameters[i] = 0xff; + parameters[i] = INT8_ALL_F; } get_message_queue_id_send( &queue_id ); @@ -668,12 +668,12 @@ void get_temperatures( unsigned char *te temp_pcb_ptr = (unsigned char *) &time_management_regs->temp_pcb; temp_fpga_ptr = (unsigned char *) &time_management_regs->temp_fpga; - temperatures[0] = temp_scm_ptr[2]; - temperatures[1] = temp_scm_ptr[3]; - temperatures[2] = temp_pcb_ptr[2]; - temperatures[3] = temp_pcb_ptr[3]; - temperatures[4] = temp_fpga_ptr[2]; - temperatures[5] = temp_fpga_ptr[3]; + temperatures[ BYTE_0 ] = temp_scm_ptr[ BYTE_2 ]; + temperatures[ BYTE_1 ] = temp_scm_ptr[ BYTE_3 ]; + temperatures[ BYTE_2 ] = temp_pcb_ptr[ BYTE_2 ]; + temperatures[ BYTE_3 ] = temp_pcb_ptr[ BYTE_3 ]; + temperatures[ BYTE_4 ] = temp_fpga_ptr[ BYTE_2 ]; + temperatures[ BYTE_5 ] = temp_fpga_ptr[ BYTE_3 ]; } void get_v_e1_e2_f3( unsigned char *spacecraft_potential ) @@ -686,12 +686,12 @@ void get_v_e1_e2_f3( unsigned char *spac e1_ptr = (unsigned char *) &waveform_picker_regs->e1; e2_ptr = (unsigned char *) &waveform_picker_regs->e2; - spacecraft_potential[0] = v_ptr[2]; - spacecraft_potential[1] = v_ptr[3]; - spacecraft_potential[2] = e1_ptr[2]; - spacecraft_potential[3] = e1_ptr[3]; - spacecraft_potential[4] = e2_ptr[2]; - spacecraft_potential[5] = e2_ptr[3]; + spacecraft_potential[ BYTE_0 ] = v_ptr[ BYTE_2 ]; + spacecraft_potential[ BYTE_1 ] = v_ptr[ BYTE_3 ]; + spacecraft_potential[ BYTE_2 ] = e1_ptr[ BYTE_2 ]; + spacecraft_potential[ BYTE_3 ] = e1_ptr[ BYTE_3 ]; + spacecraft_potential[ BYTE_4 ] = e2_ptr[ BYTE_2 ]; + spacecraft_potential[ BYTE_5 ] = e2_ptr[ BYTE_3 ]; } void get_cpu_load( unsigned char *resource_statistics ) @@ -710,7 +710,7 @@ void get_cpu_load( unsigned char *resour } // CPU_LOAD_AVE - resource_statistics[2] = 0; + resource_statistics[BYTE_2] = 0; #ifndef PRINT_TASK_STATISTICS rtems_cpu_usage_reset(); @@ -722,11 +722,13 @@ void set_hk_lfr_sc_potential_flag( bool { if (state == true) { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] | 0x40; // [0100 0000] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] | STATUS_WORD_SC_POTENTIAL_FLAG_BIT; // [0100 0000] } else { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] & 0xbf; // [1011 1111] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] & STATUS_WORD_SC_POTENTIAL_FLAG_MASK; // [1011 1111] } } @@ -734,11 +736,13 @@ void set_sy_lfr_pas_filter_enabled( bool { if (state == true) { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] | 0x20; // [0010 0000] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] | STATUS_WORD_SC_POTENTIAL_FLAG_BIT; // [0010 0000] } else { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] & 0xdf; // [1101 1111] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] & STATUS_WORD_SC_POTENTIAL_FLAG_MASK; // [1101 1111] } } @@ -746,11 +750,13 @@ void set_sy_lfr_watchdog_enabled( bool s { if (state == true) { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] | 0x10; // [0001 0000] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] | STATUS_WORD_WATCHDOG_BIT; // [0001 0000] } else { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] & 0xef; // [1110 1111] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] & STATUS_WORD_WATCHDOG_MASK; // [1110 1111] } } @@ -758,20 +764,23 @@ void set_hk_lfr_calib_enable( bool state { if (state == true) { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] | 0x08; // [0000 1000] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] | STATUS_WORD_CALIB_BIT; // [0000 1000] } else { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] & 0xf7; // [1111 0111] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] & STATUS_WORD_CALIB_MASK; // [1111 0111] } } void set_hk_lfr_reset_cause( enum lfr_reset_cause_t lfr_reset_cause ) { - housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] & 0xf8; // [1111 1000] + housekeeping_packet.lfr_status_word[1] = + housekeeping_packet.lfr_status_word[1] & STATUS_WORD_RESET_CAUSE_MASK; // [1111 1000] housekeeping_packet.lfr_status_word[1] = housekeeping_packet.lfr_status_word[1] - | (lfr_reset_cause & 0x07 ); // [0000 0111] + | (lfr_reset_cause & STATUS_WORD_RESET_CAUSE_BITS ); // [0000 0111] } @@ -799,7 +808,7 @@ void hk_lfr_le_update( void ) hk_lfr_le_t new_hk_lfr_le; unsigned int counter; - counter = ((unsigned int) housekeeping_packet.hk_lfr_le_cnt[0]) * 256 + housekeeping_packet.hk_lfr_le_cnt[1]; + counter = (((unsigned int) housekeeping_packet.hk_lfr_le_cnt[0]) * 256) + housekeeping_packet.hk_lfr_le_cnt[1]; // DPU new_hk_lfr_le.dpu_spw_parity = housekeeping_packet.hk_lfr_dpu_spw_parity; @@ -822,21 +831,21 @@ void hk_lfr_le_update( void ) // update the le counter // DPU - increment_hk_counter( new_hk_lfr_le.dpu_spw_parity, old_hk_lfr_le.dpu_spw_parity, counter ); - increment_hk_counter( new_hk_lfr_le.dpu_spw_disconnect,old_hk_lfr_le.dpu_spw_disconnect, counter ); - increment_hk_counter( new_hk_lfr_le.dpu_spw_escape, old_hk_lfr_le.dpu_spw_escape, counter ); - increment_hk_counter( new_hk_lfr_le.dpu_spw_credit, old_hk_lfr_le.dpu_spw_credit, counter ); - increment_hk_counter( new_hk_lfr_le.dpu_spw_write_sync,old_hk_lfr_le.dpu_spw_write_sync, counter ); + increment_hk_counter( new_hk_lfr_le.dpu_spw_parity, old_hk_lfr_le.dpu_spw_parity, &counter ); + increment_hk_counter( new_hk_lfr_le.dpu_spw_disconnect,old_hk_lfr_le.dpu_spw_disconnect, &counter ); + increment_hk_counter( new_hk_lfr_le.dpu_spw_escape, old_hk_lfr_le.dpu_spw_escape, &counter ); + increment_hk_counter( new_hk_lfr_le.dpu_spw_credit, old_hk_lfr_le.dpu_spw_credit, &counter ); + increment_hk_counter( new_hk_lfr_le.dpu_spw_write_sync,old_hk_lfr_le.dpu_spw_write_sync, &counter ); // TIMECODE - increment_hk_counter( new_hk_lfr_le.timecode_erroneous,old_hk_lfr_le.timecode_erroneous, counter ); - increment_hk_counter( new_hk_lfr_le.timecode_missing, old_hk_lfr_le.timecode_missing, counter ); - increment_hk_counter( new_hk_lfr_le.timecode_invalid, old_hk_lfr_le.timecode_invalid, counter ); + increment_hk_counter( new_hk_lfr_le.timecode_erroneous,old_hk_lfr_le.timecode_erroneous, &counter ); + increment_hk_counter( new_hk_lfr_le.timecode_missing, old_hk_lfr_le.timecode_missing, &counter ); + increment_hk_counter( new_hk_lfr_le.timecode_invalid, old_hk_lfr_le.timecode_invalid, &counter ); // TIME - increment_hk_counter( new_hk_lfr_le.time_timecode_it, old_hk_lfr_le.time_timecode_it, counter ); - increment_hk_counter( new_hk_lfr_le.time_not_synchro, old_hk_lfr_le.time_not_synchro, counter ); - increment_hk_counter( new_hk_lfr_le.time_timecode_ctr, old_hk_lfr_le.time_timecode_ctr, counter ); + increment_hk_counter( new_hk_lfr_le.time_timecode_it, old_hk_lfr_le.time_timecode_it, &counter ); + increment_hk_counter( new_hk_lfr_le.time_not_synchro, old_hk_lfr_le.time_not_synchro, &counter ); + increment_hk_counter( new_hk_lfr_le.time_timecode_ctr, old_hk_lfr_le.time_timecode_ctr, &counter ); // AHB - increment_hk_counter( new_hk_lfr_le.ahb_correctable, old_hk_lfr_le.ahb_correctable, counter ); + increment_hk_counter( new_hk_lfr_le.ahb_correctable, old_hk_lfr_le.ahb_correctable, &counter ); // DPU old_hk_lfr_le.dpu_spw_parity = new_hk_lfr_le.dpu_spw_parity; @@ -859,8 +868,8 @@ void hk_lfr_le_update( void ) // update housekeeping packet counters, convert unsigned int numbers in 2 bytes numbers // LE - housekeeping_packet.hk_lfr_le_cnt[0] = (unsigned char) ((hk_lfr_le_cnt & 0xff00) >> 8); - housekeeping_packet.hk_lfr_le_cnt[1] = (unsigned char) (hk_lfr_le_cnt & 0x00ff); + housekeeping_packet.hk_lfr_le_cnt[0] = (unsigned char) ((counter & BYTE0_MASK) >> SHIFT_1_BYTE); + housekeeping_packet.hk_lfr_le_cnt[1] = (unsigned char) (counter & BYTE1_MASK); } void hk_lfr_me_update( void ) @@ -869,7 +878,7 @@ void hk_lfr_me_update( void ) hk_lfr_me_t new_hk_lfr_me; unsigned int counter; - counter = ((unsigned int) housekeeping_packet.hk_lfr_me_cnt[0]) * 256 + housekeeping_packet.hk_lfr_me_cnt[1]; + counter = (((unsigned int) housekeeping_packet.hk_lfr_me_cnt[0]) * 256) + housekeeping_packet.hk_lfr_me_cnt[1]; // get the current values new_hk_lfr_me.dpu_spw_early_eop = housekeeping_packet.hk_lfr_dpu_spw_early_eop; @@ -878,10 +887,10 @@ void hk_lfr_me_update( void ) new_hk_lfr_me.dpu_spw_rx_too_big = housekeeping_packet.hk_lfr_dpu_spw_rx_too_big; // update the me counter - increment_hk_counter( new_hk_lfr_me.dpu_spw_early_eop, old_hk_lfr_me.dpu_spw_early_eop, counter ); - increment_hk_counter( new_hk_lfr_me.dpu_spw_invalid_addr, old_hk_lfr_me.dpu_spw_invalid_addr, counter ); - increment_hk_counter( new_hk_lfr_me.dpu_spw_eep, old_hk_lfr_me.dpu_spw_eep, counter ); - increment_hk_counter( new_hk_lfr_me.dpu_spw_rx_too_big, old_hk_lfr_me.dpu_spw_rx_too_big, counter ); + increment_hk_counter( new_hk_lfr_me.dpu_spw_early_eop, old_hk_lfr_me.dpu_spw_early_eop, &counter ); + increment_hk_counter( new_hk_lfr_me.dpu_spw_invalid_addr, old_hk_lfr_me.dpu_spw_invalid_addr, &counter ); + increment_hk_counter( new_hk_lfr_me.dpu_spw_eep, old_hk_lfr_me.dpu_spw_eep, &counter ); + increment_hk_counter( new_hk_lfr_me.dpu_spw_rx_too_big, old_hk_lfr_me.dpu_spw_rx_too_big, &counter ); // store the counters for the next time old_hk_lfr_me.dpu_spw_early_eop = new_hk_lfr_me.dpu_spw_early_eop; @@ -891,8 +900,8 @@ void hk_lfr_me_update( void ) // update housekeeping packet counters, convert unsigned int numbers in 2 bytes numbers // ME - housekeeping_packet.hk_lfr_me_cnt[0] = (unsigned char) ((hk_lfr_me_cnt & 0xff00) >> 8); - housekeeping_packet.hk_lfr_me_cnt[1] = (unsigned char) (hk_lfr_me_cnt & 0x00ff); + housekeeping_packet.hk_lfr_me_cnt[0] = (unsigned char) ((counter & BYTE0_MASK) >> SHIFT_1_BYTE); + housekeeping_packet.hk_lfr_me_cnt[1] = (unsigned char) (counter & BYTE1_MASK); } void hk_lfr_le_me_he_update() @@ -913,8 +922,8 @@ void hk_lfr_le_me_he_update() // update housekeeping packet counters, convert unsigned int numbers in 2 bytes numbers // HE - housekeeping_packet.hk_lfr_he_cnt[0] = (unsigned char) ((hk_lfr_he_cnt & 0xff00) >> 8); - housekeeping_packet.hk_lfr_he_cnt[1] = (unsigned char) (hk_lfr_he_cnt & 0x00ff); + housekeeping_packet.hk_lfr_he_cnt[0] = (unsigned char) ((hk_lfr_he_cnt & BYTE0_MASK) >> SHIFT_1_BYTE); + housekeeping_packet.hk_lfr_he_cnt[1] = (unsigned char) (hk_lfr_he_cnt & BYTE1_MASK); } @@ -924,7 +933,8 @@ void set_hk_lfr_time_not_synchro() int synchronizationBit; // get the synchronization bit - synchronizationBit = (time_management_regs->coarse_time & 0x80000000) >> 31; // 1000 0000 0000 0000 + synchronizationBit = + (time_management_regs->coarse_time & VAL_LFR_SYNCHRONIZED) >> BIT_SYNCHRONIZATION; // 1000 0000 0000 0000 switch (synchronizationBit) { @@ -978,6 +988,6 @@ void set_hk_lfr_ahb_correctable() // C + iurfErrorCounter + housekeeping_packet.hk_lfr_ahb_correctable; - housekeeping_packet.hk_lfr_ahb_correctable = (unsigned char) (ahb_correctable & 0xff); // [1111 1111] + housekeeping_packet.hk_lfr_ahb_correctable = (unsigned char) (ahb_correctable & INT8_ALL_F); // [1111 1111] } diff --git a/src/fsw_spacewire.c b/src/fsw_spacewire.c --- a/src/fsw_spacewire.c +++ b/src/fsw_spacewire.c @@ -57,14 +57,14 @@ rtems_task spiq_task(rtems_task_argument // [1] CHECK THE LINK status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (1) - if ( linkStatus != 5) { + if ( linkStatus != SPW_LINK_OK) { PRINTF1("in SPIQ *** linkStatus %d, wait...\n", linkStatus) status = rtems_task_wake_after( SY_LFR_DPU_CONNECT_TIMEOUT ); // wait SY_LFR_DPU_CONNECT_TIMEOUT 1000 ms } // [2] RECHECK THE LINK AFTER SY_LFR_DPU_CONNECT_TIMEOUT status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (2) - if ( linkStatus != 5 ) // [2.a] not in run state, reset the link + if ( linkStatus != SPW_LINK_OK ) // [2.a] not in run state, reset the link { spacewire_read_statistics(); status = spacewire_several_connect_attemps( ); @@ -122,8 +122,8 @@ rtems_task recv_task( rtems_task_argumen int len; ccsdsTelecommandPacket_t currentTC; - unsigned char computed_CRC[ 2 ]; - unsigned char currentTC_LEN_RCV[ 2 ]; + unsigned char computed_CRC[ BYTES_PER_CRC ]; + unsigned char currentTC_LEN_RCV[ BYTES_PER_PKT_LEN ]; unsigned char destinationID; unsigned int estimatedPacketLength; unsigned int parserCode; @@ -158,9 +158,9 @@ rtems_task recv_task( rtems_task_argumen PRINTF("in RECV *** packet lenght too short\n") } else { - estimatedPacketLength = (unsigned int) (len - CCSDS_TC_TM_PACKET_OFFSET - 3); // => -3 is for Prot ID, Reserved and User App bytes + estimatedPacketLength = (unsigned int) (len - CCSDS_TC_TM_PACKET_OFFSET - PROTID_RES_APP); // => -3 is for Prot ID, Reserved and User App bytes //PRINTF1("incoming TC with Length (byte): %d\n", len - 3); - currentTC_LEN_RCV[ 0 ] = (unsigned char) (estimatedPacketLength >> 8); + currentTC_LEN_RCV[ 0 ] = (unsigned char) (estimatedPacketLength >> SHIFT_1_BYTE); currentTC_LEN_RCV[ 1 ] = (unsigned char) (estimatedPacketLength ); // CHECK THE TC parserCode = tc_parser( ¤tTC, estimatedPacketLength, computed_CRC ) ; @@ -191,7 +191,7 @@ rtems_task recv_task( rtems_task_argumen else { // send valid TC to the action launcher status = rtems_message_queue_send( queue_recv_id, ¤tTC, - estimatedPacketLength + CCSDS_TC_TM_PACKET_OFFSET + 3); + estimatedPacketLength + CCSDS_TC_TM_PACKET_OFFSET + PROTID_RES_APP); } } } @@ -260,8 +260,8 @@ rtems_task send_task( rtems_task_argumen { charPtr[0] = incomingData[0]; charPtr[1] = incomingData[1]; - charPtr[2] = incomingData[2]; - charPtr[3] = incomingData[3]; + charPtr[BYTE_2] = incomingData[BYTE_2]; + charPtr[BYTE_3] = incomingData[BYTE_3]; incomingRingNodePtr = (ring_node*) ring_node_address; sid = incomingRingNodePtr->sid; if ( (sid==SID_NORM_CWF_LONG_F3) @@ -346,9 +346,9 @@ rtems_task link_task( rtems_task_argumen RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); PRINTF("in LINK *** wait for the link\n") status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status - while( linkStatus != 5) // wait for the link + while( linkStatus != SPW_LINK_OK) // wait for the link { - status = rtems_task_wake_after( 10 ); // monitor the link each 100ms + status = rtems_task_wake_after( SPW_LINK_WAIT ); // monitor the link each 100ms status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status watchdog_reload(); } @@ -447,9 +447,9 @@ int spacewire_configure_link( int fd ) spacewire_set_RE(1, REGS_ADDR_GRSPW); // [R]MAP [E]nable, the dedicated call seems to break the no port force configuration spw_ioctl_packetsize packetsize; - packetsize.rxsize = 228; - packetsize.txdsize = 4096; - packetsize.txhsize = 34; + packetsize.rxsize = SPW_RXSIZE; + packetsize.txdsize = SPW_TXDSIZE; + packetsize.txhsize = SPW_TXHSIZE; status = ioctl(fd, SPACEWIRE_IOCTRL_SET_RXBLOCK, 1); // sets the blocking mode for reception if (status!=RTEMS_SUCCESSFUL) { @@ -481,7 +481,7 @@ int spacewire_configure_link( int fd ) PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL\n") } // - status = ioctl(fd, SPACEWIRE_IOCTRL_SET_TCODE_CTRL, 0x0909); // [Time Rx : Time Tx : Link error : Tick-out IRQ] + status = ioctl(fd, SPACEWIRE_IOCTRL_SET_TCODE_CTRL, CONF_TCODE_CTRL); // [Time Rx : Time Tx : Link error : Tick-out IRQ] if (status!=RTEMS_SUCCESSFUL) { PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_TCODE_CTRL,\n") } @@ -546,10 +546,10 @@ void spacewire_set_NP( unsigned char val unsigned int *spwptr = (unsigned int*) regAddr; if (val == 1) { - *spwptr = *spwptr | 0x00100000; // [NP] set the No port force bit + *spwptr = *spwptr | SPW_BIT_NP; // [NP] set the No port force bit } if (val== 0) { - *spwptr = *spwptr & 0xffdfffff; + *spwptr = *spwptr & SPW_BIT_NP_MASK; } } @@ -568,11 +568,11 @@ void spacewire_set_RE( unsigned char val if (val == 1) { - *spwptr = *spwptr | 0x00010000; // [RE] set the RMAP Enable bit + *spwptr = *spwptr | SPW_BIT_RE; // [RE] set the RMAP Enable bit } if (val== 0) { - *spwptr = *spwptr & 0xfffdffff; + *spwptr = *spwptr & SPW_BIT_RE_MASK; } } @@ -775,24 +775,24 @@ void update_hk_lfr_last_er_fields(unsign coarseTimePtr = (unsigned char*) &time_management_regs->coarse_time; fineTimePtr = (unsigned char*) &time_management_regs->fine_time; - housekeeping_packet.hk_lfr_last_er_rid[0] = (unsigned char) ((rid & 0xff00) >> 8 ); - housekeeping_packet.hk_lfr_last_er_rid[1] = (unsigned char) (rid & 0x00ff); + housekeeping_packet.hk_lfr_last_er_rid[0] = (unsigned char) ((rid & BYTE0_MASK) >> SHIFT_1_BYTE ); + housekeeping_packet.hk_lfr_last_er_rid[1] = (unsigned char) (rid & BYTE1_MASK); housekeeping_packet.hk_lfr_last_er_code = code; housekeeping_packet.hk_lfr_last_er_time[0] = coarseTimePtr[0]; housekeeping_packet.hk_lfr_last_er_time[1] = coarseTimePtr[1]; - housekeeping_packet.hk_lfr_last_er_time[2] = coarseTimePtr[2]; - housekeeping_packet.hk_lfr_last_er_time[3] = coarseTimePtr[3]; - housekeeping_packet.hk_lfr_last_er_time[4] = fineTimePtr[2]; - housekeeping_packet.hk_lfr_last_er_time[5] = fineTimePtr[3]; + housekeeping_packet.hk_lfr_last_er_time[BYTE_2] = coarseTimePtr[BYTE_2]; + housekeeping_packet.hk_lfr_last_er_time[BYTE_3] = coarseTimePtr[BYTE_3]; + housekeeping_packet.hk_lfr_last_er_time[BYTE_4] = fineTimePtr[BYTE_2]; + housekeeping_packet.hk_lfr_last_er_time[BYTE_5] = fineTimePtr[BYTE_3]; } void update_hk_with_grspw_stats( void ) { //**************************** // DPU_SPACEWIRE_IF_STATISTICS - housekeeping_packet.hk_lfr_dpu_spw_pkt_rcv_cnt[0] = (unsigned char) (grspw_stats.packets_received >> 8); + housekeeping_packet.hk_lfr_dpu_spw_pkt_rcv_cnt[0] = (unsigned char) (grspw_stats.packets_received >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_dpu_spw_pkt_rcv_cnt[1] = (unsigned char) (grspw_stats.packets_received); - housekeeping_packet.hk_lfr_dpu_spw_pkt_sent_cnt[0] = (unsigned char) (grspw_stats.packets_sent >> 8); + housekeeping_packet.hk_lfr_dpu_spw_pkt_sent_cnt[0] = (unsigned char) (grspw_stats.packets_sent >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_dpu_spw_pkt_sent_cnt[1] = (unsigned char) (grspw_stats.packets_sent); //****************************************** @@ -817,9 +817,10 @@ void spacewire_update_hk_lfr_link_state( unsigned char linkState; statusRegisterPtr = (unsigned int *) (REGS_ADDR_GRSPW + APB_OFFSET_GRSPW_STATUS_REGISTER); - linkState = (unsigned char) ( ( (*statusRegisterPtr) >> 21) & 0x07); // [0000 0111] + linkState = + (unsigned char) ( ( (*statusRegisterPtr) >> SPW_LINK_STAT_POS) & STATUS_WORD_LINK_STATE_BITS); // [0000 0111] - *hk_lfr_status_word_0 = *hk_lfr_status_word_0 & 0xf8; // [1111 1000] set link state to 0 + *hk_lfr_status_word_0 = *hk_lfr_status_word_0 & STATUS_WORD_LINK_STATE_MASK; // [1111 1000] set link state to 0 *hk_lfr_status_word_0 = *hk_lfr_status_word_0 | linkState; // update hk_lfr_dpu_spw_link_state } @@ -827,7 +828,7 @@ void spacewire_update_hk_lfr_link_state( void increase_unsigned_char_counter( unsigned char *counter ) { // update the number of valid timecodes that have been received - if (*counter == 255) + if (*counter == UINT8_MAX) { *counter = 0; } @@ -858,7 +859,7 @@ unsigned int check_timecode_and_previous { if (currentTimecodeCtr == 0) { - if (previousTimecodeCtr == 63) + if (previousTimecodeCtr == SPW_TIMECODE_MAX) { ret = LFR_SUCCESSFUL; } @@ -1017,24 +1018,24 @@ void init_header_cwf( Header_TM_LFR_SCIE header->userApplication = CCSDS_USER_APP; header->packetSequenceControl[0]= TM_PACKET_SEQ_CTRL_STANDALONE; header->packetSequenceControl[1]= TM_PACKET_SEQ_CNT_DEFAULT; - header->packetLength[0] = 0x00; - header->packetLength[1] = 0x00; + header->packetLength[0] = INIT_CHAR; + header->packetLength[1] = INIT_CHAR; // DATA FIELD HEADER header->spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; header->serviceType = TM_TYPE_LFR_SCIENCE; // service type header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; // service subtype header->destinationID = TM_DESTINATION_ID_GROUND; - 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->time[BYTE_0] = INIT_CHAR; + header->time[BYTE_1] = INIT_CHAR; + header->time[BYTE_2] = INIT_CHAR; + header->time[BYTE_3] = INIT_CHAR; + header->time[BYTE_4] = INIT_CHAR; + header->time[BYTE_5] = INIT_CHAR; // AUXILIARY DATA HEADER - header->sid = 0x00; + header->sid = INIT_CHAR; header->pa_bia_status_info = DEFAULT_HKBIA; - header->blkNr[0] = 0x00; - header->blkNr[1] = 0x00; + header->blkNr[0] = INIT_CHAR; + header->blkNr[1] = INIT_CHAR; } void init_header_swf( Header_TM_LFR_SCIENCE_SWF_t *header ) @@ -1043,29 +1044,29 @@ void init_header_swf( Header_TM_LFR_SCIE header->protocolIdentifier = CCSDS_PROTOCOLE_ID; header->reserved = DEFAULT_RESERVED; header->userApplication = CCSDS_USER_APP; - header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> SHIFT_1_BYTE); header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; header->packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; - header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_336 >> 8); + header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_336 >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_336 ); // DATA FIELD HEADER header->spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; header->serviceType = TM_TYPE_LFR_SCIENCE; // service type header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; // service subtype header->destinationID = TM_DESTINATION_ID_GROUND; - 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->time[BYTE_0] = INIT_CHAR; + header->time[BYTE_1] = INIT_CHAR; + header->time[BYTE_2] = INIT_CHAR; + header->time[BYTE_3] = INIT_CHAR; + header->time[BYTE_4] = INIT_CHAR; + header->time[BYTE_5] = INIT_CHAR; // AUXILIARY DATA HEADER - header->sid = 0x00; + header->sid = INIT_CHAR; header->pa_bia_status_info = DEFAULT_HKBIA; - header->pktCnt = DEFAULT_PKTCNT; // PKT_CNT - header->pktNr = 0x00; - header->blkNr[0] = (unsigned char) (BLK_NR_CWF >> 8); + header->pktCnt = PKTCNT_SWF; // PKT_CNT + header->pktNr = INIT_CHAR; + header->blkNr[0] = (unsigned char) (BLK_NR_CWF >> SHIFT_1_BYTE); header->blkNr[1] = (unsigned char) (BLK_NR_CWF ); } @@ -1075,30 +1076,30 @@ void init_header_asm( Header_TM_LFR_SCIE header->protocolIdentifier = CCSDS_PROTOCOLE_ID; header->reserved = DEFAULT_RESERVED; header->userApplication = CCSDS_USER_APP; - header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> SHIFT_1_BYTE); header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; header->packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; - header->packetLength[0] = 0x00; - header->packetLength[1] = 0x00; + header->packetLength[0] = INIT_CHAR; + header->packetLength[1] = INIT_CHAR; // DATA FIELD HEADER header->spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; header->serviceType = TM_TYPE_LFR_SCIENCE; // service type header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_3; // service subtype header->destinationID = TM_DESTINATION_ID_GROUND; - 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->time[BYTE_0] = INIT_CHAR; + header->time[BYTE_1] = INIT_CHAR; + header->time[BYTE_2] = INIT_CHAR; + header->time[BYTE_3] = INIT_CHAR; + header->time[BYTE_4] = INIT_CHAR; + header->time[BYTE_5] = INIT_CHAR; // AUXILIARY DATA HEADER - header->sid = 0x00; - header->pa_bia_status_info = 0x00; - header->pa_lfr_pkt_cnt_asm = 0x00; - header->pa_lfr_pkt_nr_asm = 0x00; - header->pa_lfr_asm_blk_nr[0] = 0x00; - header->pa_lfr_asm_blk_nr[1] = 0x00; + header->sid = INIT_CHAR; + header->pa_bia_status_info = INIT_CHAR; + header->pa_lfr_pkt_cnt_asm = INIT_CHAR; + header->pa_lfr_pkt_nr_asm = INIT_CHAR; + header->pa_lfr_asm_blk_nr[0] = INIT_CHAR; + header->pa_lfr_asm_blk_nr[1] = INIT_CHAR; } int spw_send_waveform_CWF( ring_node *ring_node_to_send, @@ -1135,11 +1136,11 @@ int spw_send_waveform_CWF( ring_node *ri fineTime = ring_node_to_send->fineTime; dataPtr = (int*) ring_node_to_send->buffer_address; - header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_336 >> 8); + header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_336 >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_336 ); header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - header->blkNr[0] = (unsigned char) (BLK_NR_CWF >> 8); + header->blkNr[0] = (unsigned char) (BLK_NR_CWF >> SHIFT_1_BYTE); header->blkNr[1] = (unsigned char) (BLK_NR_CWF ); for (i=0; itime[0] = header->acquisitionTime[0]; header->time[1] = header->acquisitionTime[1]; - header->time[2] = header->acquisitionTime[2]; - header->time[3] = header->acquisitionTime[3]; - header->time[4] = header->acquisitionTime[4]; - header->time[5] = header->acquisitionTime[5]; + header->time[BYTE_2] = header->acquisitionTime[BYTE_2]; + header->time[BYTE_3] = header->acquisitionTime[BYTE_3]; + header->time[BYTE_4] = header->acquisitionTime[BYTE_4]; + header->time[BYTE_5] = header->acquisitionTime[BYTE_5]; // SET PACKET ID if ( (sid == SID_SBM1_CWF_F1) || (sid == SID_SBM2_CWF_F2) ) { - header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_SBM1_SBM2 >> 8); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_SBM1_SBM2 >> SHIFT_1_BYTE); header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_SBM1_SBM2); } else { - header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> SHIFT_1_BYTE); header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); } @@ -1223,7 +1224,7 @@ int spw_send_waveform_SWF( ring_node *ri header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - for (i=0; i<7; i++) // send waveform + for (i=0; ipacketSequenceControl, sid ); // SET PACKET LENGTH AND BLKNR - if (i == 6) + if (i == (PKTCNT_SWF-1)) { spw_ioctl_send_SWF.dlen = BLK_NR_224 * NB_BYTES_SWF_BLK; - header->packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_224 >> 8); + header->packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_224 >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_224 ); - header->blkNr[0] = (unsigned char) (BLK_NR_224 >> 8); + header->blkNr[0] = (unsigned char) (BLK_NR_224 >> SHIFT_1_BYTE); header->blkNr[1] = (unsigned char) (BLK_NR_224 ); } else { spw_ioctl_send_SWF.dlen = BLK_NR_304 * NB_BYTES_SWF_BLK; - header->packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_304 >> 8); + header->packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_304 >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_304 ); - header->blkNr[0] = (unsigned char) (BLK_NR_304 >> 8); + header->blkNr[0] = (unsigned char) (BLK_NR_304 >> SHIFT_1_BYTE); header->blkNr[1] = (unsigned char) (BLK_NR_304 ); } // SET PACKET TIME compute_acquisition_time( coarseTime, fineTime, sid, i, header->acquisitionTime ); // - header->time[0] = header->acquisitionTime[0]; - header->time[1] = header->acquisitionTime[1]; - header->time[2] = header->acquisitionTime[2]; - header->time[3] = header->acquisitionTime[3]; - header->time[4] = header->acquisitionTime[4]; - header->time[5] = header->acquisitionTime[5]; + header->time[BYTE_0] = header->acquisitionTime[BYTE_0]; + header->time[BYTE_1] = header->acquisitionTime[BYTE_1]; + header->time[BYTE_2] = header->acquisitionTime[BYTE_2]; + header->time[BYTE_3] = header->acquisitionTime[BYTE_3]; + header->time[BYTE_4] = header->acquisitionTime[BYTE_4]; + header->time[BYTE_5] = header->acquisitionTime[BYTE_5]; // SET SID header->sid = sid; @@ -1309,11 +1310,11 @@ int spw_send_waveform_CWF3_light( ring_n fineTime = ring_node_to_send->fineTime; dataPtr = (char*) ring_node_to_send->buffer_address; - header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_672 >> 8); + header->packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_672 >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_672 ); header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - header->blkNr[0] = (unsigned char) (BLK_NR_CWF_SHORT_F3 >> 8); + header->blkNr[0] = (unsigned char) (BLK_NR_CWF_SHORT_F3 >> SHIFT_1_BYTE); header->blkNr[1] = (unsigned char) (BLK_NR_CWF_SHORT_F3 ); //********************* @@ -1334,15 +1335,15 @@ int spw_send_waveform_CWF3_light( ring_n // SET PACKET TIME compute_acquisition_time( coarseTime, fineTime, SID_NORM_CWF_F3, i, header->acquisitionTime ); // - header->time[0] = header->acquisitionTime[0]; - header->time[1] = header->acquisitionTime[1]; - header->time[2] = header->acquisitionTime[2]; - header->time[3] = header->acquisitionTime[3]; - header->time[4] = header->acquisitionTime[4]; - header->time[5] = header->acquisitionTime[5]; + header->time[BYTE_0] = header->acquisitionTime[BYTE_0]; + header->time[BYTE_1] = header->acquisitionTime[BYTE_1]; + header->time[BYTE_2] = header->acquisitionTime[BYTE_2]; + header->time[BYTE_3] = header->acquisitionTime[BYTE_3]; + header->time[BYTE_4] = header->acquisitionTime[BYTE_4]; + header->time[BYTE_5] = header->acquisitionTime[BYTE_5]; // SET PACKET ID - header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> 8); + header->packetID[0] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST >> SHIFT_1_BYTE); header->packetID[1] = (unsigned char) (APID_TM_SCIENCE_NORMAL_BURST); // SEND PACKET @@ -1375,7 +1376,7 @@ void spw_send_asm_f0( ring_node *ring_no header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - for (i=0; i<3; i++) + for (i=0; iserviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; - header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F0_1) >> 8 ); // BLK_NR MSB + header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F0_1) >> SHIFT_1_BYTE ); // BLK_NR MSB header->pa_lfr_asm_blk_nr[1] = (unsigned char) (NB_BINS_PER_PKT_ASM_F0_1); // BLK_NR LSB } else @@ -1396,7 +1397,7 @@ void spw_send_asm_f0( ring_node *ring_no ]; length = PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F0_2; header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; - header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F0_2) >> 8 ); // BLK_NR MSB + header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F0_2) >> SHIFT_1_BYTE ); // BLK_NR MSB header->pa_lfr_asm_blk_nr[1] = (unsigned char) (NB_BINS_PER_PKT_ASM_F0_2); // BLK_NR LSB } @@ -1406,26 +1407,26 @@ void spw_send_asm_f0( ring_node *ring_no // (2) BUILD THE HEADER increment_seq_counter_source_id( header->packetSequenceControl, sid ); - header->packetLength[0] = (unsigned char) (length>>8); + header->packetLength[0] = (unsigned char) (length >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (length); header->sid = (unsigned char) sid; // SID - header->pa_lfr_pkt_cnt_asm = 3; + header->pa_lfr_pkt_cnt_asm = PKTCNT_ASM; header->pa_lfr_pkt_nr_asm = (unsigned char) (i+1); // (3) SET PACKET TIME - header->time[0] = (unsigned char) (coarseTime>>24); - header->time[1] = (unsigned char) (coarseTime>>16); - header->time[2] = (unsigned char) (coarseTime>>8); - header->time[3] = (unsigned char) (coarseTime); - header->time[4] = (unsigned char) (fineTime>>8); - header->time[5] = (unsigned char) (fineTime); + header->time[BYTE_0] = (unsigned char) (coarseTime >> SHIFT_3_BYTES); + header->time[BYTE_1] = (unsigned char) (coarseTime >> SHIFT_2_BYTES); + header->time[BYTE_2] = (unsigned char) (coarseTime >> SHIFT_1_BYTE); + header->time[BYTE_3] = (unsigned char) (coarseTime); + header->time[BYTE_4] = (unsigned char) (fineTime >> SHIFT_1_BYTE); + header->time[BYTE_5] = (unsigned char) (fineTime); // - header->acquisitionTime[0] = header->time[0]; - header->acquisitionTime[1] = header->time[1]; - header->acquisitionTime[2] = header->time[2]; - header->acquisitionTime[3] = header->time[3]; - header->acquisitionTime[4] = header->time[4]; - header->acquisitionTime[5] = header->time[5]; + header->acquisitionTime[BYTE_0] = header->time[BYTE_0]; + header->acquisitionTime[BYTE_1] = header->time[BYTE_1]; + header->acquisitionTime[BYTE_2] = header->time[BYTE_2]; + header->acquisitionTime[BYTE_3] = header->time[BYTE_3]; + header->acquisitionTime[BYTE_4] = header->time[BYTE_4]; + header->acquisitionTime[BYTE_5] = header->time[BYTE_5]; // (4) SEND PACKET status = ioctl( fdSPW, SPACEWIRE_IOCTRL_SEND, &spw_ioctl_send_ASM ); @@ -1455,7 +1456,7 @@ void spw_send_asm_f1( ring_node *ring_no header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - for (i=0; i<3; i++) + for (i=0; iserviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; - header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F1_1) >> 8 ); // BLK_NR MSB + header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F1_1) >> SHIFT_1_BYTE ); // BLK_NR MSB header->pa_lfr_asm_blk_nr[1] = (unsigned char) (NB_BINS_PER_PKT_ASM_F1_1); // BLK_NR LSB } else @@ -1476,7 +1477,7 @@ void spw_send_asm_f1( ring_node *ring_no ]; length = PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F1_2; header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_6; - header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F1_2) >> 8 ); // BLK_NR MSB + header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F1_2) >> SHIFT_1_BYTE ); // BLK_NR MSB header->pa_lfr_asm_blk_nr[1] = (unsigned char) (NB_BINS_PER_PKT_ASM_F1_2); // BLK_NR LSB } @@ -1486,26 +1487,26 @@ void spw_send_asm_f1( ring_node *ring_no // (2) BUILD THE HEADER increment_seq_counter_source_id( header->packetSequenceControl, sid ); - header->packetLength[0] = (unsigned char) (length>>8); + header->packetLength[0] = (unsigned char) (length >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (length); header->sid = (unsigned char) sid; // SID - header->pa_lfr_pkt_cnt_asm = 3; + header->pa_lfr_pkt_cnt_asm = PKTCNT_ASM; header->pa_lfr_pkt_nr_asm = (unsigned char) (i+1); // (3) SET PACKET TIME - header->time[0] = (unsigned char) (coarseTime>>24); - header->time[1] = (unsigned char) (coarseTime>>16); - header->time[2] = (unsigned char) (coarseTime>>8); - header->time[3] = (unsigned char) (coarseTime); - header->time[4] = (unsigned char) (fineTime>>8); - header->time[5] = (unsigned char) (fineTime); + header->time[BYTE_0] = (unsigned char) (coarseTime >> SHIFT_3_BYTES); + header->time[BYTE_1] = (unsigned char) (coarseTime >> SHIFT_2_BYTES); + header->time[BYTE_2] = (unsigned char) (coarseTime >> SHIFT_1_BYTE); + header->time[BYTE_3] = (unsigned char) (coarseTime); + header->time[BYTE_4] = (unsigned char) (fineTime >> SHIFT_1_BYTE); + header->time[BYTE_5] = (unsigned char) (fineTime); // - header->acquisitionTime[0] = header->time[0]; - header->acquisitionTime[1] = header->time[1]; - header->acquisitionTime[2] = header->time[2]; - header->acquisitionTime[3] = header->time[3]; - header->acquisitionTime[4] = header->time[4]; - header->acquisitionTime[5] = header->time[5]; + header->acquisitionTime[BYTE_0] = header->time[BYTE_0]; + header->acquisitionTime[BYTE_1] = header->time[BYTE_1]; + header->acquisitionTime[BYTE_2] = header->time[BYTE_2]; + header->acquisitionTime[BYTE_3] = header->time[BYTE_3]; + header->acquisitionTime[BYTE_4] = header->time[BYTE_4]; + header->acquisitionTime[BYTE_5] = header->time[BYTE_5]; // (4) SEND PACKET status = ioctl( fdSPW, SPACEWIRE_IOCTRL_SEND, &spw_ioctl_send_ASM ); @@ -1535,7 +1536,7 @@ void spw_send_asm_f2( ring_node *ring_no header->pa_bia_status_info = pa_bia_status_info; header->sy_lfr_common_parameters = parameter_dump_packet.sy_lfr_common_parameters; - for (i=0; i<3; i++) + for (i=0; iserviceSubType = TM_SUBTYPE_LFR_SCIENCE_3; - header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F2) >> 8 ); // BLK_NR MSB + header->pa_lfr_asm_blk_nr[0] = (unsigned char) ( (NB_BINS_PER_PKT_ASM_F2) >> SHIFT_1_BYTE ); // BLK_NR MSB header->pa_lfr_asm_blk_nr[1] = (unsigned char) (NB_BINS_PER_PKT_ASM_F2); // BLK_NR LSB spw_ioctl_send_ASM.hlen = HEADER_LENGTH_TM_LFR_SCIENCE_ASM; @@ -1553,26 +1554,26 @@ void spw_send_asm_f2( ring_node *ring_no // (2) BUILD THE HEADER increment_seq_counter_source_id( header->packetSequenceControl, sid ); - header->packetLength[0] = (unsigned char) (length>>8); + header->packetLength[0] = (unsigned char) (length >> SHIFT_1_BYTE); header->packetLength[1] = (unsigned char) (length); header->sid = (unsigned char) sid; // SID - header->pa_lfr_pkt_cnt_asm = 3; + header->pa_lfr_pkt_cnt_asm = PKTCNT_ASM; header->pa_lfr_pkt_nr_asm = (unsigned char) (i+1); // (3) SET PACKET TIME - header->time[0] = (unsigned char) (coarseTime>>24); - header->time[1] = (unsigned char) (coarseTime>>16); - header->time[2] = (unsigned char) (coarseTime>>8); - header->time[3] = (unsigned char) (coarseTime); - header->time[4] = (unsigned char) (fineTime>>8); - header->time[5] = (unsigned char) (fineTime); + header->time[BYTE_0] = (unsigned char) (coarseTime >> SHIFT_3_BYTES); + header->time[BYTE_1] = (unsigned char) (coarseTime >> SHIFT_2_BYTES); + header->time[BYTE_2] = (unsigned char) (coarseTime >> SHIFT_1_BYTE); + header->time[BYTE_3] = (unsigned char) (coarseTime); + header->time[BYTE_4] = (unsigned char) (fineTime >> SHIFT_1_BYTE); + header->time[BYTE_5] = (unsigned char) (fineTime); // - header->acquisitionTime[0] = header->time[0]; - header->acquisitionTime[1] = header->time[1]; - header->acquisitionTime[2] = header->time[2]; - header->acquisitionTime[3] = header->time[3]; - header->acquisitionTime[4] = header->time[4]; - header->acquisitionTime[5] = header->time[5]; + header->acquisitionTime[BYTE_0] = header->time[BYTE_0]; + header->acquisitionTime[BYTE_1] = header->time[BYTE_1]; + header->acquisitionTime[BYTE_2] = header->time[BYTE_2]; + header->acquisitionTime[BYTE_3] = header->time[BYTE_3]; + header->acquisitionTime[BYTE_4] = header->time[BYTE_4]; + header->acquisitionTime[BYTE_5] = header->time[BYTE_5]; // (4) SEND PACKET status = ioctl( fdSPW, SPACEWIRE_IOCTRL_SEND, &spw_ioctl_send_ASM ); @@ -1593,7 +1594,7 @@ void spw_send_k_dump( ring_node *ring_no kcoefficients_dump = (Packet_TM_LFR_KCOEFFICIENTS_DUMP_t *) ring_node_to_send->buffer_address; - packetLength = kcoefficients_dump->packetLength[0] * 256 + kcoefficients_dump->packetLength[1]; + packetLength = (kcoefficients_dump->packetLength[0] * CONST_256) + kcoefficients_dump->packetLength[1]; size = packetLength + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES; @@ -1605,5 +1606,5 @@ void spw_send_k_dump( ring_node *ring_no PRINTF2("in SEND *** (2.a) ERRNO = %d, size = %d\n", errno, size) } - ring_node_to_send->status = 0x00; + ring_node_to_send->status = INIT_CHAR; } diff --git a/src/lfr_cpu_usage_report.c b/src/lfr_cpu_usage_report.c --- a/src/lfr_cpu_usage_report.c +++ b/src/lfr_cpu_usage_report.c @@ -18,7 +18,8 @@ unsigned char lfr_rtems_cpu_usage_report uint32_t api_index; Thread_Control *the_thread; Objects_Information *information; - uint32_t ival, fval; + uint32_t ival; + uint32_t fval; #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; Timestamp_Control total; @@ -92,7 +93,7 @@ unsigned char lfr_rtems_cpu_usage_report uint64_t ival_64; ival_64 = the_thread->cpu_time_used; - ival_64 *= 100000; + ival_64 *= CONST_100000; ival = ival_64 / total_units; } else @@ -100,14 +101,14 @@ unsigned char lfr_rtems_cpu_usage_report ival = 0; } - fval = ival % 1000; - ival /= 1000; + fval = ival % CONST_1000; + ival /= CONST_1000; #endif } } } } - cpu_load = (unsigned char) (100 - ival); + cpu_load = (unsigned char) (CONST_100 - ival); return cpu_load; } diff --git a/src/processing/avf0_prc0.c b/src/processing/avf0_prc0.c --- a/src/processing/avf0_prc0.c +++ b/src/processing/avf0_prc0.c @@ -24,7 +24,6 @@ float asm_f0_patched_norm [ TOTAL_ float asm_f0_patched_burst_sbm [ TOTAL_SIZE_SM ]; float asm_f0_reorganized [ TOTAL_SIZE_SM ]; -char asm_f0_char [ TIME_OFFSET_IN_BYTES + (TOTAL_SIZE_SM * 2) ]; float compressed_sm_norm_f0[ TOTAL_SIZE_COMPRESSED_ASM_NORM_F0]; float compressed_sm_sbm_f0 [ TOTAL_SIZE_COMPRESSED_ASM_SBM_F0 ]; @@ -43,7 +42,7 @@ rtems_task avf0_task( rtems_task_argumen rtems_id queue_id_prc0; asm_msg msgForPRC; ring_node *nodeForAveraging; - ring_node *ring_node_tab[8]; + ring_node *ring_node_tab[NB_SM_BEFORE_AVF0_F1]; ring_node_asm *current_ring_node_asm_burst_sbm_f0; ring_node_asm *current_ring_node_asm_norm_f0; @@ -80,17 +79,17 @@ rtems_task avf0_task( rtems_task_argumen // initialize the mesage for the MATR task msgForPRC.norm = current_ring_node_asm_norm_f0; msgForPRC.burst_sbm = current_ring_node_asm_burst_sbm_f0; - msgForPRC.event = 0x00; // this composite event will be sent to the PRC0 task + msgForPRC.event = EVENT_SETS_NONE_PENDING; // this composite event will be sent to the PRC0 task // //**************************************** nodeForAveraging = getRingNodeForAveraging( 0 ); - ring_node_tab[NB_SM_BEFORE_AVF0-1] = nodeForAveraging; - for ( i = 2; i < (NB_SM_BEFORE_AVF0+1); i++ ) + ring_node_tab[NB_SM_BEFORE_AVF0_F1-1] = nodeForAveraging; + for ( i = 1; i < (NB_SM_BEFORE_AVF0_F1); i++ ) { nodeForAveraging = nodeForAveraging->previous; - ring_node_tab[NB_SM_BEFORE_AVF0-i] = nodeForAveraging; + ring_node_tab[NB_SM_BEFORE_AVF0_F1-i] = nodeForAveraging; } // compute the average and store it in the averaged_sm_f1 buffer @@ -101,11 +100,11 @@ rtems_task avf0_task( rtems_task_argumen &msgForPRC, 0 ); // 0 => frequency channel 0 // update nb_average - nb_norm_bp1 = nb_norm_bp1 + NB_SM_BEFORE_AVF0; - nb_norm_bp2 = nb_norm_bp2 + NB_SM_BEFORE_AVF0; - nb_norm_asm = nb_norm_asm + NB_SM_BEFORE_AVF0; - nb_sbm_bp1 = nb_sbm_bp1 + NB_SM_BEFORE_AVF0; - nb_sbm_bp2 = nb_sbm_bp2 + NB_SM_BEFORE_AVF0; + nb_norm_bp1 = nb_norm_bp1 + NB_SM_BEFORE_AVF0_F1; + nb_norm_bp2 = nb_norm_bp2 + NB_SM_BEFORE_AVF0_F1; + nb_norm_asm = nb_norm_asm + NB_SM_BEFORE_AVF0_F1; + nb_sbm_bp1 = nb_sbm_bp1 + NB_SM_BEFORE_AVF0_F1; + nb_sbm_bp2 = nb_sbm_bp2 + NB_SM_BEFORE_AVF0_F1; if (nb_sbm_bp1 == nb_sm_before_f0.burst_sbm_bp1) { @@ -169,7 +168,7 @@ rtems_task avf0_task( rtems_task_argumen //************************* // send the message to PRC - if (msgForPRC.event != 0x00) + if (msgForPRC.event != EVENT_SETS_NONE_PENDING) { status = rtems_message_queue_send( queue_id_prc0, (char *) &msgForPRC, MSG_QUEUE_SIZE_PRC0); } @@ -373,15 +372,16 @@ rtems_task prc0_task( rtems_task_argumen void reset_nb_sm_f0( unsigned char lfrMode ) { - nb_sm_before_f0.norm_bp1 = parameter_dump_packet.sy_lfr_n_bp_p0 * 96; - nb_sm_before_f0.norm_bp2 = parameter_dump_packet.sy_lfr_n_bp_p1 * 96; - nb_sm_before_f0.norm_asm = (parameter_dump_packet.sy_lfr_n_asm_p[0] * 256 + parameter_dump_packet.sy_lfr_n_asm_p[1]) * 96; - nb_sm_before_f0.sbm1_bp1 = parameter_dump_packet.sy_lfr_s1_bp_p0 * 24; // 0.25 s per digit - nb_sm_before_f0.sbm1_bp2 = parameter_dump_packet.sy_lfr_s1_bp_p1 * 96; - nb_sm_before_f0.sbm2_bp1 = parameter_dump_packet.sy_lfr_s2_bp_p0 * 96; - nb_sm_before_f0.sbm2_bp2 = parameter_dump_packet.sy_lfr_s2_bp_p1 * 96; - nb_sm_before_f0.burst_bp1 = parameter_dump_packet.sy_lfr_b_bp_p0 * 96; - nb_sm_before_f0.burst_bp2 = parameter_dump_packet.sy_lfr_b_bp_p1 * 96; + nb_sm_before_f0.norm_bp1 = parameter_dump_packet.sy_lfr_n_bp_p0 * NB_SM_PER_S_F0; + nb_sm_before_f0.norm_bp2 = parameter_dump_packet.sy_lfr_n_bp_p1 * NB_SM_PER_S_F0; + nb_sm_before_f0.norm_asm = + ( (parameter_dump_packet.sy_lfr_n_asm_p[0] * 256) + parameter_dump_packet.sy_lfr_n_asm_p[1]) * NB_SM_PER_S_F0; + nb_sm_before_f0.sbm1_bp1 = parameter_dump_packet.sy_lfr_s1_bp_p0 * NB_SM_PER_S1_BP_P0; // 0.25 s per digit + nb_sm_before_f0.sbm1_bp2 = parameter_dump_packet.sy_lfr_s1_bp_p1 * NB_SM_PER_S_F0; + nb_sm_before_f0.sbm2_bp1 = parameter_dump_packet.sy_lfr_s2_bp_p0 * NB_SM_PER_S_F0; + nb_sm_before_f0.sbm2_bp2 = parameter_dump_packet.sy_lfr_s2_bp_p1 * NB_SM_PER_S_F0; + nb_sm_before_f0.burst_bp1 = parameter_dump_packet.sy_lfr_b_bp_p0 * NB_SM_PER_S_F0; + nb_sm_before_f0.burst_bp2 = parameter_dump_packet.sy_lfr_b_bp_p1 * NB_SM_PER_S_F0; if (lfrMode == LFR_MODE_SBM1) { diff --git a/src/processing/avf1_prc1.c b/src/processing/avf1_prc1.c --- a/src/processing/avf1_prc1.c +++ b/src/processing/avf1_prc1.c @@ -25,7 +25,6 @@ float asm_f1_patched_norm [ TOTAL_ float asm_f1_patched_burst_sbm [ TOTAL_SIZE_SM ]; float asm_f1_reorganized [ TOTAL_SIZE_SM ]; -char asm_f1_char [ TOTAL_SIZE_SM * 2 ]; float compressed_sm_norm_f1[ TOTAL_SIZE_COMPRESSED_ASM_NORM_F1]; float compressed_sm_sbm_f1 [ TOTAL_SIZE_COMPRESSED_ASM_SBM_F1 ]; @@ -44,7 +43,7 @@ rtems_task avf1_task( rtems_task_argumen rtems_id queue_id_prc1; asm_msg msgForPRC; ring_node *nodeForAveraging; - ring_node *ring_node_tab[NB_SM_BEFORE_AVF0]; + ring_node *ring_node_tab[NB_SM_BEFORE_AVF0_F1]; ring_node_asm *current_ring_node_asm_burst_sbm_f1; ring_node_asm *current_ring_node_asm_norm_f1; @@ -81,17 +80,17 @@ rtems_task avf1_task( rtems_task_argumen // initialize the mesage for the MATR task msgForPRC.norm = current_ring_node_asm_norm_f1; msgForPRC.burst_sbm = current_ring_node_asm_burst_sbm_f1; - msgForPRC.event = 0x00; // this composite event will be sent to the PRC1 task + msgForPRC.event = EVENT_SETS_NONE_PENDING; // this composite event will be sent to the PRC1 task // //**************************************** nodeForAveraging = getRingNodeForAveraging( 1 ); - ring_node_tab[NB_SM_BEFORE_AVF1-1] = nodeForAveraging; - for ( i = 2; i < (NB_SM_BEFORE_AVF1+1); i++ ) + ring_node_tab[NB_SM_BEFORE_AVF0_F1-1] = nodeForAveraging; + for ( i = 1; i < (NB_SM_BEFORE_AVF0_F1); i++ ) { nodeForAveraging = nodeForAveraging->previous; - ring_node_tab[NB_SM_BEFORE_AVF1-i] = nodeForAveraging; + ring_node_tab[NB_SM_BEFORE_AVF0_F1-i] = nodeForAveraging; } // compute the average and store it in the averaged_sm_f1 buffer @@ -102,11 +101,11 @@ rtems_task avf1_task( rtems_task_argumen &msgForPRC, 1 ); // 1 => frequency channel 1 // update nb_average - nb_norm_bp1 = nb_norm_bp1 + NB_SM_BEFORE_AVF1; - nb_norm_bp2 = nb_norm_bp2 + NB_SM_BEFORE_AVF1; - nb_norm_asm = nb_norm_asm + NB_SM_BEFORE_AVF1; - nb_sbm_bp1 = nb_sbm_bp1 + NB_SM_BEFORE_AVF1; - nb_sbm_bp2 = nb_sbm_bp2 + NB_SM_BEFORE_AVF1; + nb_norm_bp1 = nb_norm_bp1 + NB_SM_BEFORE_AVF0_F1; + nb_norm_bp2 = nb_norm_bp2 + NB_SM_BEFORE_AVF0_F1; + nb_norm_asm = nb_norm_asm + NB_SM_BEFORE_AVF0_F1; + nb_sbm_bp1 = nb_sbm_bp1 + NB_SM_BEFORE_AVF0_F1; + nb_sbm_bp2 = nb_sbm_bp2 + NB_SM_BEFORE_AVF0_F1; if (nb_sbm_bp1 == nb_sm_before_f1.burst_sbm_bp1) { @@ -170,7 +169,7 @@ rtems_task avf1_task( rtems_task_argumen //************************* // send the message to PRC - if (msgForPRC.event != 0x00) + if (msgForPRC.event != EVENT_SETS_NONE_PENDING) { status = rtems_message_queue_send( queue_id_prc1, (char *) &msgForPRC, MSG_QUEUE_SIZE_PRC1); } @@ -365,13 +364,14 @@ rtems_task prc1_task( rtems_task_argumen void reset_nb_sm_f1( unsigned char lfrMode ) { - nb_sm_before_f1.norm_bp1 = parameter_dump_packet.sy_lfr_n_bp_p0 * 16; - nb_sm_before_f1.norm_bp2 = parameter_dump_packet.sy_lfr_n_bp_p1 * 16; - nb_sm_before_f1.norm_asm = (parameter_dump_packet.sy_lfr_n_asm_p[0] * 256 + parameter_dump_packet.sy_lfr_n_asm_p[1]) * 16; - nb_sm_before_f1.sbm2_bp1 = parameter_dump_packet.sy_lfr_s2_bp_p0 * 16; - nb_sm_before_f1.sbm2_bp2 = parameter_dump_packet.sy_lfr_s2_bp_p1 * 16; - nb_sm_before_f1.burst_bp1 = parameter_dump_packet.sy_lfr_b_bp_p0 * 16; - nb_sm_before_f1.burst_bp2 = parameter_dump_packet.sy_lfr_b_bp_p1 * 16; + nb_sm_before_f1.norm_bp1 = parameter_dump_packet.sy_lfr_n_bp_p0 * NB_SM_PER_S_F1; + nb_sm_before_f1.norm_bp2 = parameter_dump_packet.sy_lfr_n_bp_p1 * NB_SM_PER_S_F1; + nb_sm_before_f1.norm_asm = + ( (parameter_dump_packet.sy_lfr_n_asm_p[0] * 256) + parameter_dump_packet.sy_lfr_n_asm_p[1]) * NB_SM_PER_S_F1; + nb_sm_before_f1.sbm2_bp1 = parameter_dump_packet.sy_lfr_s2_bp_p0 * NB_SM_PER_S_F1; + nb_sm_before_f1.sbm2_bp2 = parameter_dump_packet.sy_lfr_s2_bp_p1 * NB_SM_PER_S_F1; + nb_sm_before_f1.burst_bp1 = parameter_dump_packet.sy_lfr_b_bp_p0 * NB_SM_PER_S_F1; + nb_sm_before_f1.burst_bp2 = parameter_dump_packet.sy_lfr_b_bp_p1 * NB_SM_PER_S_F1; if (lfrMode == LFR_MODE_SBM2) { diff --git a/src/processing/avf2_prc2.c b/src/processing/avf2_prc2.c --- a/src/processing/avf2_prc2.c +++ b/src/processing/avf2_prc2.c @@ -23,7 +23,6 @@ int buffer_asm_f2 [ NB_ float asm_f2_patched_norm [ TOTAL_SIZE_SM ]; float asm_f2_reorganized [ TOTAL_SIZE_SM ]; -char asm_f2_char [ TOTAL_SIZE_SM * 2 ]; float compressed_sm_norm_f2[ TOTAL_SIZE_COMPRESSED_ASM_NORM_F2]; float k_coeff_intercalib_f2[ NB_BINS_COMPRESSED_SM_F2 * NB_K_COEFF_PER_BIN ]; // 12 * 32 = 384 @@ -69,11 +68,11 @@ rtems_task avf2_task( rtems_task_argumen // initialize the mesage for the MATR task msgForPRC.norm = current_ring_node_asm_norm_f2; msgForPRC.burst_sbm = NULL; - msgForPRC.event = 0x00; // this composite event will be sent to the PRC2 task + msgForPRC.event = EVENT_SETS_NONE_PENDING; // this composite event will be sent to the PRC2 task // //**************************************** - nodeForAveraging = getRingNodeForAveraging( 2 ); + nodeForAveraging = getRingNodeForAveraging( CHANNELF2 ); // compute the average and store it in the averaged_sm_f2 buffer SM_average_f2( current_ring_node_asm_norm_f2->matrix, @@ -120,7 +119,7 @@ rtems_task avf2_task( rtems_task_argumen //************************* // send the message to PRC2 - if (msgForPRC.event != 0x00) + if (msgForPRC.event != EVENT_SETS_NONE_PENDING) { status = rtems_message_queue_send( queue_id_prc2, (char *) &msgForPRC, MSG_QUEUE_SIZE_PRC2); } @@ -253,7 +252,7 @@ void reset_nb_sm_f2( void ) { nb_sm_before_f2.norm_bp1 = parameter_dump_packet.sy_lfr_n_bp_p0; nb_sm_before_f2.norm_bp2 = parameter_dump_packet.sy_lfr_n_bp_p1; - nb_sm_before_f2.norm_asm = parameter_dump_packet.sy_lfr_n_asm_p[0] * 256 + parameter_dump_packet.sy_lfr_n_asm_p[1]; + nb_sm_before_f2.norm_asm = (parameter_dump_packet.sy_lfr_n_asm_p[0] * CONST_256) + parameter_dump_packet.sy_lfr_n_asm_p[1]; } void SM_average_f2( float *averaged_spec_mat_f2, @@ -266,7 +265,7 @@ void SM_average_f2( float *averaged_spec unsigned char keepMatrix; // test acquisitionTime validity - keepMatrix = acquisitionTimeIsValid( ring_node->coarseTime, ring_node->fineTime, 2 ); + keepMatrix = acquisitionTimeIsValid( ring_node->coarseTime, ring_node->fineTime, CHANNELF2 ); for(i=0; icoarseTimeNORM = ring_node->coarseTime; msgForMATR->fineTimeNORM = ring_node->fineTime; 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 @@ -42,13 +42,13 @@ ring_node * getRingNodeForAveraging( uns node = NULL; switch ( frequencyChannel ) { - case 0: + case CHANNELF0: node = ring_node_for_averaging_sm_f0; break; - case 1: + case CHANNELF1: node = ring_node_for_averaging_sm_f1; break; - case 2: + case CHANNELF2: node = ring_node_for_averaging_sm_f2; break; default: @@ -67,18 +67,18 @@ void spectral_matrices_isr_f0( int statu rtems_status_code status_code; ring_node *full_ring_node; - status = (unsigned char) (statusReg & 0x03); // [0011] get the status_ready_matrix_f0_x bits + status = (unsigned char) (statusReg & BITS_STATUS_F0); // [0011] get the status_ready_matrix_f0_x bits switch(status) { case 0: break; - case 3: + case BIT_READY_0_1: // UNEXPECTED VALUE - spectral_matrix_regs->status = 0x03; // [0011] + spectral_matrix_regs->status = BIT_READY_0_1; // [0011] status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 ); break; - case 1: + case BIT_READY_0: full_ring_node = current_ring_node_sm_f0->previous; full_ring_node->coarseTime = spectral_matrix_regs->f0_0_coarse_time; full_ring_node->fineTime = spectral_matrix_regs->f0_0_fine_time; @@ -86,7 +86,7 @@ void spectral_matrices_isr_f0( int statu spectral_matrix_regs->f0_0_address = current_ring_node_sm_f0->buffer_address; // if there are enough ring nodes ready, wake up an AVFx task nb_sm_f0 = nb_sm_f0 + 1; - if (nb_sm_f0 == NB_SM_BEFORE_AVF0) + if (nb_sm_f0 == NB_SM_BEFORE_AVF0_F1) { ring_node_for_averaging_sm_f0 = full_ring_node; if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -95,9 +95,9 @@ void spectral_matrices_isr_f0( int statu } nb_sm_f0 = 0; } - spectral_matrix_regs->status = 0x01; // [0000 0001] + spectral_matrix_regs->status = BIT_READY_0; // [0000 0001] break; - case 2: + case BIT_READY_1: full_ring_node = current_ring_node_sm_f0->previous; full_ring_node->coarseTime = spectral_matrix_regs->f0_1_coarse_time; full_ring_node->fineTime = spectral_matrix_regs->f0_1_fine_time; @@ -105,7 +105,7 @@ void spectral_matrices_isr_f0( int statu spectral_matrix_regs->f0_1_address = current_ring_node_sm_f0->buffer_address; // if there are enough ring nodes ready, wake up an AVFx task nb_sm_f0 = nb_sm_f0 + 1; - if (nb_sm_f0 == NB_SM_BEFORE_AVF0) + if (nb_sm_f0 == NB_SM_BEFORE_AVF0_F1) { ring_node_for_averaging_sm_f0 = full_ring_node; if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -114,7 +114,7 @@ void spectral_matrices_isr_f0( int statu } nb_sm_f0 = 0; } - spectral_matrix_regs->status = 0x02; // [0000 0010] + spectral_matrix_regs->status = BIT_READY_1; // [0000 0010] break; } } @@ -125,18 +125,18 @@ void spectral_matrices_isr_f1( int statu unsigned char status; ring_node *full_ring_node; - status = (unsigned char) ((statusReg & 0x0c) >> 2); // [1100] get the status_ready_matrix_f1_x bits + status = (unsigned char) ((statusReg & BITS_STATUS_F1) >> SHIFT_2_BITS); // [1100] get the status_ready_matrix_f1_x bits switch(status) { case 0: break; - case 3: + case BIT_READY_0_1: // UNEXPECTED VALUE - spectral_matrix_regs->status = 0xc0; // [1100] + spectral_matrix_regs->status = BITS_STATUS_F1; // [1100] status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 ); break; - case 1: + case BIT_READY_0: full_ring_node = current_ring_node_sm_f1->previous; full_ring_node->coarseTime = spectral_matrix_regs->f1_0_coarse_time; full_ring_node->fineTime = spectral_matrix_regs->f1_0_fine_time; @@ -144,7 +144,7 @@ void spectral_matrices_isr_f1( int statu spectral_matrix_regs->f1_0_address = current_ring_node_sm_f1->buffer_address; // if there are enough ring nodes ready, wake up an AVFx task nb_sm_f1 = nb_sm_f1 + 1; - if (nb_sm_f1 == NB_SM_BEFORE_AVF1) + if (nb_sm_f1 == NB_SM_BEFORE_AVF0_F1) { ring_node_for_averaging_sm_f1 = full_ring_node; if (rtems_event_send( Task_id[TASKID_AVF1], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -153,9 +153,9 @@ void spectral_matrices_isr_f1( int statu } nb_sm_f1 = 0; } - spectral_matrix_regs->status = 0x04; // [0000 0100] + spectral_matrix_regs->status = BIT_STATUS_F1_0; // [0000 0100] break; - case 2: + case BIT_READY_1: full_ring_node = current_ring_node_sm_f1->previous; full_ring_node->coarseTime = spectral_matrix_regs->f1_1_coarse_time; full_ring_node->fineTime = spectral_matrix_regs->f1_1_fine_time; @@ -163,7 +163,7 @@ void spectral_matrices_isr_f1( int statu spectral_matrix_regs->f1_1_address = current_ring_node_sm_f1->buffer_address; // if there are enough ring nodes ready, wake up an AVFx task nb_sm_f1 = nb_sm_f1 + 1; - if (nb_sm_f1 == NB_SM_BEFORE_AVF1) + if (nb_sm_f1 == NB_SM_BEFORE_AVF0_F1) { ring_node_for_averaging_sm_f1 = full_ring_node; if (rtems_event_send( Task_id[TASKID_AVF1], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) @@ -172,7 +172,7 @@ void spectral_matrices_isr_f1( int statu } nb_sm_f1 = 0; } - spectral_matrix_regs->status = 0x08; // [1000 0000] + spectral_matrix_regs->status = BIT_STATUS_F1_1; // [1000 0000] break; } } @@ -182,36 +182,36 @@ void spectral_matrices_isr_f2( int statu unsigned char status; rtems_status_code status_code; - status = (unsigned char) ((statusReg & 0x30) >> 4); // [0011 0000] get the status_ready_matrix_f2_x bits + status = (unsigned char) ((statusReg & BITS_STATUS_F2) >> SHIFT_4_BITS); // [0011 0000] get the status_ready_matrix_f2_x bits switch(status) { case 0: break; - case 3: + case BIT_READY_0_1: // UNEXPECTED VALUE - spectral_matrix_regs->status = 0x30; // [0011 0000] + spectral_matrix_regs->status = BITS_STATUS_F2; // [0011 0000] status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 ); break; - case 1: + case BIT_READY_0: ring_node_for_averaging_sm_f2 = current_ring_node_sm_f2->previous; current_ring_node_sm_f2 = current_ring_node_sm_f2->next; ring_node_for_averaging_sm_f2->coarseTime = spectral_matrix_regs->f2_0_coarse_time; ring_node_for_averaging_sm_f2->fineTime = spectral_matrix_regs->f2_0_fine_time; spectral_matrix_regs->f2_0_address = current_ring_node_sm_f2->buffer_address; - spectral_matrix_regs->status = 0x10; // [0001 0000] + spectral_matrix_regs->status = BIT_STATUS_F2_0; // [0001 0000] if (rtems_event_send( Task_id[TASKID_AVF2], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 ); } break; - case 2: + case BIT_READY_1: ring_node_for_averaging_sm_f2 = current_ring_node_sm_f2->previous; current_ring_node_sm_f2 = current_ring_node_sm_f2->next; ring_node_for_averaging_sm_f2->coarseTime = spectral_matrix_regs->f2_1_coarse_time; ring_node_for_averaging_sm_f2->fineTime = spectral_matrix_regs->f2_1_fine_time; spectral_matrix_regs->f2_1_address = current_ring_node_sm_f2->buffer_address; - spectral_matrix_regs->status = 0x20; // [0010 0000] + spectral_matrix_regs->status = BIT_STATUS_F2_1; // [0010 0000] if (rtems_event_send( Task_id[TASKID_AVF2], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 ); @@ -233,14 +233,14 @@ void spectral_matrix_isr_error_handler( //*************************************************** // the ASM status register is copied in the HK packet - housekeeping_packet.hk_lfr_vhdl_aa_sm = (unsigned char) (statusReg & 0x780 >> 7); // [0111 1000 0000] + housekeeping_packet.hk_lfr_vhdl_aa_sm = (unsigned char) ((statusReg & BITS_HK_AA_SM) >> SHIFT_7_BITS); // [0111 1000 0000] - if (statusReg & 0x7c0) // [0111 1100 0000] + if (statusReg & BITS_SM_ERR) // [0111 1100 0000] { status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_8 ); } - spectral_matrix_regs->status = spectral_matrix_regs->status & 0x7c0; + spectral_matrix_regs->status = spectral_matrix_regs->status & BITS_SM_ERR; } @@ -270,19 +270,19 @@ rtems_isr spectral_matrices_isr( rtems_v { // a restart sequence has to be launched switch (state) { case WAIT_FOR_F2: - if ((statusReg & 0x30) != 0x00) // [0011 0000] check the status_ready_matrix_f2_x bits + if ((statusReg & BITS_STATUS_F2) != INIT_CHAR) // [0011 0000] check the status_ready_matrix_f2_x bits { state = WAIT_FOR_F1; } break; case WAIT_FOR_F1: - if ((statusReg & 0x0c) != 0x00) // [0000 1100] check the status_ready_matrix_f1_x bits + if ((statusReg & BITS_STATUS_F1) != INIT_CHAR) // [0000 1100] check the status_ready_matrix_f1_x bits { state = WAIT_FOR_F0; } break; case WAIT_FOR_F0: - if ((statusReg & 0x03) != 0x00) // [0000 0011] check the status_ready_matrix_f0_x bits + if ((statusReg & BITS_STATUS_F0) != INIT_CHAR) // [0000 0011] check the status_ready_matrix_f0_x bits { state = WAIT_FOR_F2; thisIsAnASMRestart = 0; @@ -357,37 +357,37 @@ void BP_init_header( bp_packet *packet, { packet->targetLogicalAddress = CCSDS_DESTINATION_ID; packet->protocolIdentifier = CCSDS_PROTOCOLE_ID; - packet->reserved = 0x00; + packet->reserved = INIT_CHAR; packet->userApplication = CCSDS_USER_APP; - packet->packetID[0] = (unsigned char) (apid >> 8); + packet->packetID[0] = (unsigned char) (apid >> SHIFT_1_BYTE); packet->packetID[1] = (unsigned char) (apid); packet->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; - packet->packetSequenceControl[1] = 0x00; - packet->packetLength[0] = (unsigned char) (packetLength >> 8); + packet->packetSequenceControl[1] = INIT_CHAR; + packet->packetLength[0] = (unsigned char) (packetLength >> SHIFT_1_BYTE); packet->packetLength[1] = (unsigned char) (packetLength); // DATA FIELD HEADER - packet->spare1_pusVersion_spare2 = 0x10; + packet->spare1_pusVersion_spare2 = SPARE1_PUSVERSION_SPARE2; packet->serviceType = TM_TYPE_LFR_SCIENCE; // service type packet->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_3; // service subtype packet->destinationID = TM_DESTINATION_ID_GROUND; - packet->time[0] = 0x00; - packet->time[1] = 0x00; - packet->time[2] = 0x00; - packet->time[3] = 0x00; - packet->time[4] = 0x00; - packet->time[5] = 0x00; + packet->time[BYTE_0] = INIT_CHAR; + packet->time[BYTE_1] = INIT_CHAR; + packet->time[BYTE_2] = INIT_CHAR; + packet->time[BYTE_3] = INIT_CHAR; + packet->time[BYTE_4] = INIT_CHAR; + packet->time[BYTE_5] = INIT_CHAR; // AUXILIARY DATA HEADER packet->sid = sid; - packet->pa_bia_status_info = 0x00; - packet->sy_lfr_common_parameters_spare = 0x00; - packet->sy_lfr_common_parameters = 0x00; - packet->acquisitionTime[0] = 0x00; - packet->acquisitionTime[1] = 0x00; - packet->acquisitionTime[2] = 0x00; - packet->acquisitionTime[3] = 0x00; - packet->acquisitionTime[4] = 0x00; - packet->acquisitionTime[5] = 0x00; - packet->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB + packet->pa_bia_status_info = INIT_CHAR; + packet->sy_lfr_common_parameters_spare = INIT_CHAR; + packet->sy_lfr_common_parameters = INIT_CHAR; + packet->acquisitionTime[BYTE_0] = INIT_CHAR; + packet->acquisitionTime[BYTE_1] = INIT_CHAR; + packet->acquisitionTime[BYTE_2] = INIT_CHAR; + packet->acquisitionTime[BYTE_3] = INIT_CHAR; + packet->acquisitionTime[BYTE_4] = INIT_CHAR; + packet->acquisitionTime[BYTE_5] = INIT_CHAR; + packet->pa_lfr_bp_blk_nr[0] = INIT_CHAR; // BLK_NR MSB packet->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB } @@ -397,32 +397,32 @@ void BP_init_header_with_spare( bp_packe { packet->targetLogicalAddress = CCSDS_DESTINATION_ID; packet->protocolIdentifier = CCSDS_PROTOCOLE_ID; - packet->reserved = 0x00; + packet->reserved = INIT_CHAR; packet->userApplication = CCSDS_USER_APP; - packet->packetID[0] = (unsigned char) (apid >> 8); + packet->packetID[0] = (unsigned char) (apid >> SHIFT_1_BYTE); packet->packetID[1] = (unsigned char) (apid); packet->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; - packet->packetSequenceControl[1] = 0x00; - packet->packetLength[0] = (unsigned char) (packetLength >> 8); + packet->packetSequenceControl[1] = INIT_CHAR; + packet->packetLength[0] = (unsigned char) (packetLength >> SHIFT_1_BYTE); packet->packetLength[1] = (unsigned char) (packetLength); // DATA FIELD HEADER - packet->spare1_pusVersion_spare2 = 0x10; + packet->spare1_pusVersion_spare2 = SPARE1_PUSVERSION_SPARE2; packet->serviceType = TM_TYPE_LFR_SCIENCE; // service type packet->serviceSubType = TM_SUBTYPE_LFR_SCIENCE_3; // service subtype packet->destinationID = TM_DESTINATION_ID_GROUND; // AUXILIARY DATA HEADER packet->sid = sid; - packet->pa_bia_status_info = 0x00; - packet->sy_lfr_common_parameters_spare = 0x00; - packet->sy_lfr_common_parameters = 0x00; - packet->time[0] = 0x00; - packet->time[0] = 0x00; - packet->time[0] = 0x00; - packet->time[0] = 0x00; - packet->time[0] = 0x00; - packet->time[0] = 0x00; - packet->source_data_spare = 0x00; - packet->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB + packet->pa_bia_status_info = INIT_CHAR; + packet->sy_lfr_common_parameters_spare = INIT_CHAR; + packet->sy_lfr_common_parameters = INIT_CHAR; + packet->time[BYTE_0] = INIT_CHAR; + packet->time[BYTE_1] = INIT_CHAR; + packet->time[BYTE_2] = INIT_CHAR; + packet->time[BYTE_3] = INIT_CHAR; + packet->time[BYTE_4] = INIT_CHAR; + packet->time[BYTE_5] = INIT_CHAR; + packet->source_data_spare = INIT_CHAR; + packet->pa_lfr_bp_blk_nr[0] = INIT_CHAR; // BLK_NR MSB packet->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB } @@ -477,7 +477,7 @@ void reset_sm_status( void ) // ---------- 5 -- 4 -- 3 -- 2 -- 1 -- 0 -- // ready bits f2_1 f2_0 f1_1 f1_1 f0_1 f0_0 - spectral_matrix_regs->status = 0x7ff; // [0111 1111 1111] + spectral_matrix_regs->status = BITS_STATUS_REG; // [0111 1111 1111] } void reset_spectral_matrix_regs( void ) @@ -511,29 +511,30 @@ void reset_spectral_matrix_regs( void ) spectral_matrix_regs->f2_0_address = current_ring_node_sm_f2->previous->buffer_address; spectral_matrix_regs->f2_1_address = current_ring_node_sm_f2->buffer_address; - spectral_matrix_regs->matrix_length = 0xc8; // 25 * 128 / 16 = 200 = 0xc8 + spectral_matrix_regs->matrix_length = DEFAULT_MATRIX_LENGTH; // 25 * 128 / 16 = 200 = 0xc8 } void set_time( unsigned char *time, unsigned char * timeInBuffer ) { - time[0] = timeInBuffer[0]; - time[1] = timeInBuffer[1]; - time[2] = timeInBuffer[2]; - time[3] = timeInBuffer[3]; - time[4] = timeInBuffer[6]; - time[5] = timeInBuffer[7]; + time[BYTE_0] = timeInBuffer[BYTE_0]; + time[BYTE_1] = timeInBuffer[BYTE_1]; + time[BYTE_2] = timeInBuffer[BYTE_2]; + time[BYTE_3] = timeInBuffer[BYTE_3]; + time[BYTE_4] = timeInBuffer[BYTE_6]; + time[BYTE_5] = timeInBuffer[BYTE_7]; } unsigned long long int get_acquisition_time( unsigned char *timePtr ) { unsigned long long int acquisitionTimeAslong; - acquisitionTimeAslong = 0x00; - acquisitionTimeAslong = ( (unsigned long long int) (timePtr[0] & 0x7f) << 40 ) // [0111 1111] mask the synchronization bit - + ( (unsigned long long int) timePtr[1] << 32 ) - + ( (unsigned long long int) timePtr[2] << 24 ) - + ( (unsigned long long int) timePtr[3] << 16 ) - + ( (unsigned long long int) timePtr[6] << 8 ) - + ( (unsigned long long int) timePtr[7] ); + acquisitionTimeAslong = INIT_CHAR; + acquisitionTimeAslong = + ( (unsigned long long int) (timePtr[BYTE_0] & SYNC_BIT_MASK) << SHIFT_5_BYTES ) // [0111 1111] mask the synchronization bit + + ( (unsigned long long int) timePtr[BYTE_1] << SHIFT_4_BYTES ) + + ( (unsigned long long int) timePtr[BYTE_2] << SHIFT_3_BYTES ) + + ( (unsigned long long int) timePtr[BYTE_3] << SHIFT_2_BYTES ) + + ( (unsigned long long int) timePtr[BYTE_6] << SHIFT_1_BYTE ) + + ( (unsigned long long int) timePtr[BYTE_7] ); return acquisitionTimeAslong; } @@ -581,10 +582,10 @@ void extractReImVectors( float *inputASM float im; for (i=0; i> 3; - indexInTheChar = index - indexInChar * 8; + indexInChar = index >> SHIFT_3_BITS; + indexInTheChar = index - (indexInChar * BITS_PER_BYTE); - fbin = (int) ((sy_lfr_fbins_fx_word1[ NB_BYTES_PER_FREQ_MASK - 1 - indexInChar] >> indexInTheChar) & 0x1); + fbin = (int) ((sy_lfr_fbins_fx_word1[ BYTES_PER_MASK - 1 - indexInChar] >> indexInTheChar) & 1); return fbin; } @@ -722,21 +722,21 @@ unsigned char acquisitionTimeIsValid( un unsigned char pasFilteringIsEnabled; unsigned char ret; - pasFilteringIsEnabled = (filterPar.spare_sy_lfr_pas_filter_enabled & 0x01); // [0000 0001] + pasFilteringIsEnabled = (filterPar.spare_sy_lfr_pas_filter_enabled & 1); // [0000 0001] ret = 1; // compute acquisition time from caoarseTime and fineTime - acquisitionTime = ( ((u_int64_t)coarseTime) << 16 ) + acquisitionTime = ( ((u_int64_t)coarseTime) << SHIFT_2_BYTES ) + (u_int64_t) fineTime; // compute the timecode reference - timecodeReference = (u_int64_t) (floor( ((double) coarseTime) / ((double) filterPar.sy_lfr_pas_filter_modulus) ) - * ((double) filterPar.sy_lfr_pas_filter_modulus)) * 65536; + timecodeReference = (u_int64_t) ( (floor( ((double) coarseTime) / ((double) filterPar.sy_lfr_pas_filter_modulus) ) + * ((double) filterPar.sy_lfr_pas_filter_modulus)) * CONST_65536 ); // compute the acquitionTime range - offsetInFineTime = ((double) filterPar.sy_lfr_pas_filter_offset) * 65536; - shiftInFineTime = ((double) filterPar.sy_lfr_pas_filter_shift) * 65536; - tBadInFineTime = ((double) filterPar.sy_lfr_pas_filter_tbad) * 65536; + offsetInFineTime = ((double) filterPar.sy_lfr_pas_filter_offset) * CONST_65536; + shiftInFineTime = ((double) filterPar.sy_lfr_pas_filter_shift) * CONST_65536; + tBadInFineTime = ((double) filterPar.sy_lfr_pas_filter_tbad) * CONST_65536; acquisitionTimeRangeMin = timecodeReference @@ -785,8 +785,10 @@ void init_kcoeff_sbm_from_kcoeff_norm(fl { for (kcoeff=0; kcoeff -unsigned int lookUpTableForCRC[256]; +unsigned int lookUpTableForCRC[CONST_256]; //********************** // GENERAL USE FUNCTIONS @@ -25,7 +25,7 @@ unsigned int Crc_opt( unsigned char D, u * */ - return(((Chk << 8) & 0xff00)^lookUpTableForCRC [(((Chk >> 8)^D) & 0x00ff)]); + return(((Chk << SHIFT_1_BYTE) & BYTE0_MASK)^lookUpTableForCRC [(((Chk >> SHIFT_1_BYTE)^D) & BYTE1_MASK)]); } void initLookUpTableForCRC( void ) @@ -39,32 +39,32 @@ void initLookUpTableForCRC( void ) unsigned int i; unsigned int tmp; - for (i=0; i<256; i++) + for (i=0; i> 8); - crcAsTwoBytes[1] = (unsigned char) (Chk & 0x00ff); + crcAsTwoBytes[0] = (unsigned char) (Chk >> SHIFT_1_BYTE); + crcAsTwoBytes[1] = (unsigned char) (Chk & BYTE1_MASK); } //********************* @@ -125,9 +125,10 @@ int tc_parser(ccsdsTelecommandPacket_t * status = CCSDS_TM_VALID; // APID check *** APID on 2 bytes - pid = ((TCPacket->packetID[0] & 0x07)<<4) + ( (TCPacket->packetID[1]>>4) & 0x0f ); // PID = 11 *** 7 bits xxxxx210 7654xxxx - category = (TCPacket->packetID[1] & 0x0f); // PACKET_CATEGORY = 12 *** 4 bits xxxxxxxx xxxx3210 - packetLength = (TCPacket->packetLength[0] * 256) + TCPacket->packetLength[1]; + pid = ((TCPacket->packetID[0] & BITS_PID_0) << SHIFT_4_BITS) + + ( (TCPacket->packetID[1] >> SHIFT_4_BITS) & BITS_PID_1 ); // PID = 11 *** 7 bits xxxxx210 7654xxxx + category = (TCPacket->packetID[1] & BITS_CAT); // PACKET_CATEGORY = 12 *** 4 bits xxxxxxxx xxxx3210 + packetLength = (TCPacket->packetLength[0] * CONST_256) + TCPacket->packetLength[1]; packetType = TCPacket->serviceType; packetSubtype = TCPacket->serviceSubType; sid = TCPacket->sourceID; @@ -455,9 +456,9 @@ int tc_check_crc( ccsdsTelecommandPacket unsigned char * CCSDSContent; CCSDSContent = (unsigned char*) TCPacket->packetID; - GetCRCAsTwoBytes(CCSDSContent, computed_CRC, length + CCSDS_TC_TM_PACKET_OFFSET - 2); // 2 CRC bytes removed from the calculation of the CRC + GetCRCAsTwoBytes(CCSDSContent, computed_CRC, length + CCSDS_TC_TM_PACKET_OFFSET - BYTES_PER_CRC); // 2 CRC bytes removed from the calculation of the CRC - if (computed_CRC[0] != CCSDSContent[length + CCSDS_TC_TM_PACKET_OFFSET -2]) { + if (computed_CRC[0] != CCSDSContent[length + CCSDS_TC_TM_PACKET_OFFSET - BYTES_PER_CRC]) { status = INCOR_CHECKSUM; } else if (computed_CRC[1] != CCSDSContent[length + CCSDS_TC_TM_PACKET_OFFSET -1]) { diff --git a/src/tc_handler.c b/src/tc_handler.c --- a/src/tc_handler.c +++ b/src/tc_handler.c @@ -32,7 +32,7 @@ rtems_task actn_task( rtems_task_argumen ccsdsTelecommandPacket_t TC; // TC sent to the ACTN task size_t size; // size of the incoming TC packet unsigned char subtype; // subtype of the current TC packet - unsigned char time[6]; + unsigned char time[BYTES_PER_TIME]; rtems_id queue_rcv_id; rtems_id queue_snd_id; @@ -177,7 +177,7 @@ int action_enter_mode(ccsdsTelecommandPa requestedMode = bytePosPtr[ BYTE_POS_CP_MODE_LFR_SET ]; transitionCoarseTime_ptr = (unsigned int *) ( &bytePosPtr[ BYTE_POS_CP_LFR_ENTER_MODE_TIME ] ); - transitionCoarseTime = (*transitionCoarseTime_ptr) & 0x7fffffff; + transitionCoarseTime = (*transitionCoarseTime_ptr) & COARSE_TIME_MASK; status = check_mode_value( requestedMode ); @@ -262,24 +262,24 @@ int action_update_info(ccsdsTelecommandP bytePosPtr = (unsigned char *) &TC->packetID; // check LFR mode - mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET5 ] & 0x1e) >> 1; + mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET5 ] & BITS_LFR_MODE) >> SHIFT_LFR_MODE; status = check_update_info_hk_lfr_mode( mode ); if (status == LFR_SUCCESSFUL) // check TDS mode { - mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET6 ] & 0xf0) >> 4; + mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET6 ] & BITS_TDS_MODE) >> SHIFT_TDS_MODE; status = check_update_info_hk_tds_mode( mode ); } if (status == LFR_SUCCESSFUL) // check THR mode { - mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET6 ] & 0x0f); + mode = (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET6 ] & BITS_THR_MODE); status = check_update_info_hk_thr_mode( mode ); } if (status == LFR_SUCCESSFUL) // if the parameter check is successful { - val = housekeeping_packet.hk_lfr_update_info_tc_cnt[0] * 256 + val = (housekeeping_packet.hk_lfr_update_info_tc_cnt[0] * CONST_256) + housekeeping_packet.hk_lfr_update_info_tc_cnt[1]; val++; - housekeeping_packet.hk_lfr_update_info_tc_cnt[0] = (unsigned char) (val >> 8); + housekeeping_packet.hk_lfr_update_info_tc_cnt[0] = (unsigned char) (val >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_update_info_tc_cnt[1] = (unsigned char) (val); } @@ -290,9 +290,9 @@ int action_update_info(ccsdsTelecommandP // => pa_bia_mode_bias2_enabled 1 bit // => pa_bia_mode_bias3_enabled 1 bit // => pa_bia_on_off (cp_dpu_bias_on_off) - pa_bia_status_info = bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET2 ] & 0xfe; // [1111 1110] + pa_bia_status_info = bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET2 ] & BITS_BIA; // [1111 1110] pa_bia_status_info = pa_bia_status_info - | (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET1 ] & 0x1); + | (bytePosPtr[ BYTE_POS_UPDATE_INFO_PARAMETERS_SET1 ] & 1); // REACTION_WHEELS_FREQUENCY, copy the incoming parameters in the local variable (to be copied in HK packets) @@ -361,15 +361,15 @@ int action_update_time(ccsdsTelecommandP unsigned int val; - time_management_regs->coarse_time_load = (TC->dataAndCRC[0] << 24) - + (TC->dataAndCRC[1] << 16) - + (TC->dataAndCRC[2] << 8) - + TC->dataAndCRC[3]; + time_management_regs->coarse_time_load = (TC->dataAndCRC[BYTE_0] << SHIFT_3_BYTES) + + (TC->dataAndCRC[BYTE_1] << SHIFT_2_BYTES) + + (TC->dataAndCRC[BYTE_2] << SHIFT_1_BYTE) + + TC->dataAndCRC[BYTE_3]; - val = housekeeping_packet.hk_lfr_update_time_tc_cnt[0] * 256 + val = (housekeeping_packet.hk_lfr_update_time_tc_cnt[0] * CONST_256) + housekeeping_packet.hk_lfr_update_time_tc_cnt[1]; val++; - housekeeping_packet.hk_lfr_update_time_tc_cnt[0] = (unsigned char) (val >> 8); + housekeeping_packet.hk_lfr_update_time_tc_cnt[0] = (unsigned char) (val >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_update_time_tc_cnt[1] = (unsigned char) (val); oneTcLfrUpdateTimeReceived = 1; @@ -490,7 +490,7 @@ int check_transition_date( unsigned int } else { - localCoarseTime = time_management_regs->coarse_time & 0x7fffffff; + localCoarseTime = time_management_regs->coarse_time & COARSE_TIME_MASK; PRINTF2("localTime = %x, transitionTime = %x\n", localCoarseTime, transitionCoarseTime); @@ -503,7 +503,7 @@ int check_transition_date( unsigned int if (status == LFR_SUCCESSFUL) { deltaCoarseTime = transitionCoarseTime - localCoarseTime; - if ( deltaCoarseTime > 3 ) // SSS-CP-EQS-323 + if ( deltaCoarseTime > MAX_DELTA_COARSE_TIME ) // SSS-CP-EQS-323 { status = LFR_DEFAULT; PRINTF1("ERR *** in check_transition_date *** deltaCoarseTime = %x\n", deltaCoarseTime) @@ -906,76 +906,76 @@ int restart_science_tasks( unsigned char * */ - rtems_status_code status[10]; + rtems_status_code status[NB_SCIENCE_TASKS]; rtems_status_code ret; ret = RTEMS_SUCCESSFUL; - status[0] = rtems_task_restart( Task_id[TASKID_AVF0], lfrRequestedMode ); - if (status[0] != RTEMS_SUCCESSFUL) + status[STATUS_0] = rtems_task_restart( Task_id[TASKID_AVF0], lfrRequestedMode ); + if (status[STATUS_0] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF0 ERR %d\n", status[0]) + PRINTF1("in restart_science_task *** AVF0 ERR %d\n", status[STATUS_0]) } - status[1] = rtems_task_restart( Task_id[TASKID_PRC0], lfrRequestedMode ); - if (status[1] != RTEMS_SUCCESSFUL) + status[STATUS_1] = rtems_task_restart( Task_id[TASKID_PRC0], lfrRequestedMode ); + if (status[STATUS_1] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC0 ERR %d\n", status[1]) + PRINTF1("in restart_science_task *** PRC0 ERR %d\n", status[STATUS_1]) } - status[2] = rtems_task_restart( Task_id[TASKID_WFRM],1 ); - if (status[2] != RTEMS_SUCCESSFUL) + status[STATUS_2] = rtems_task_restart( Task_id[TASKID_WFRM],1 ); + if (status[STATUS_2] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** WFRM ERR %d\n", status[2]) + PRINTF1("in restart_science_task *** WFRM ERR %d\n", status[STATUS_2]) } - status[3] = rtems_task_restart( Task_id[TASKID_CWF3],1 ); - if (status[3] != RTEMS_SUCCESSFUL) + status[STATUS_3] = rtems_task_restart( Task_id[TASKID_CWF3],1 ); + if (status[STATUS_3] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** CWF3 ERR %d\n", status[3]) + PRINTF1("in restart_science_task *** CWF3 ERR %d\n", status[STATUS_3]) } - status[4] = rtems_task_restart( Task_id[TASKID_CWF2],1 ); - if (status[4] != RTEMS_SUCCESSFUL) + status[STATUS_4] = rtems_task_restart( Task_id[TASKID_CWF2],1 ); + if (status[STATUS_4] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** CWF2 ERR %d\n", status[4]) + PRINTF1("in restart_science_task *** CWF2 ERR %d\n", status[STATUS_4]) } - status[5] = rtems_task_restart( Task_id[TASKID_CWF1],1 ); - if (status[5] != RTEMS_SUCCESSFUL) + status[STATUS_5] = rtems_task_restart( Task_id[TASKID_CWF1],1 ); + if (status[STATUS_5] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** CWF1 ERR %d\n", status[5]) + PRINTF1("in restart_science_task *** CWF1 ERR %d\n", status[STATUS_5]) } - status[6] = rtems_task_restart( Task_id[TASKID_AVF1], lfrRequestedMode ); - if (status[6] != RTEMS_SUCCESSFUL) + status[STATUS_6] = rtems_task_restart( Task_id[TASKID_AVF1], lfrRequestedMode ); + if (status[STATUS_6] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF1 ERR %d\n", status[6]) + PRINTF1("in restart_science_task *** AVF1 ERR %d\n", status[STATUS_6]) } - status[7] = rtems_task_restart( Task_id[TASKID_PRC1],lfrRequestedMode ); - if (status[7] != RTEMS_SUCCESSFUL) + status[STATUS_7] = rtems_task_restart( Task_id[TASKID_PRC1],lfrRequestedMode ); + if (status[STATUS_7] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC1 ERR %d\n", status[7]) + PRINTF1("in restart_science_task *** PRC1 ERR %d\n", status[STATUS_7]) } - status[8] = rtems_task_restart( Task_id[TASKID_AVF2], 1 ); - if (status[8] != RTEMS_SUCCESSFUL) + status[STATUS_8] = rtems_task_restart( Task_id[TASKID_AVF2], 1 ); + if (status[STATUS_8] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF2 ERR %d\n", status[8]) + PRINTF1("in restart_science_task *** AVF2 ERR %d\n", status[STATUS_8]) } - status[9] = rtems_task_restart( Task_id[TASKID_PRC2], 1 ); - if (status[9] != RTEMS_SUCCESSFUL) + status[STATUS_9] = rtems_task_restart( Task_id[TASKID_PRC2], 1 ); + if (status[STATUS_9] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC2 ERR %d\n", status[9]) + PRINTF1("in restart_science_task *** PRC2 ERR %d\n", status[STATUS_9]) } - if ( (status[0] != RTEMS_SUCCESSFUL) || (status[1] != RTEMS_SUCCESSFUL) || - (status[2] != RTEMS_SUCCESSFUL) || (status[3] != RTEMS_SUCCESSFUL) || - (status[4] != RTEMS_SUCCESSFUL) || (status[5] != RTEMS_SUCCESSFUL) || - (status[6] != RTEMS_SUCCESSFUL) || (status[7] != RTEMS_SUCCESSFUL) || - (status[8] != RTEMS_SUCCESSFUL) || (status[9] != RTEMS_SUCCESSFUL) ) + if ( (status[STATUS_0] != RTEMS_SUCCESSFUL) || (status[STATUS_1] != RTEMS_SUCCESSFUL) || + (status[STATUS_2] != RTEMS_SUCCESSFUL) || (status[STATUS_3] != RTEMS_SUCCESSFUL) || + (status[STATUS_4] != RTEMS_SUCCESSFUL) || (status[STATUS_5] != RTEMS_SUCCESSFUL) || + (status[STATUS_6] != RTEMS_SUCCESSFUL) || (status[STATUS_7] != RTEMS_SUCCESSFUL) || + (status[STATUS_8] != RTEMS_SUCCESSFUL) || (status[STATUS_9] != RTEMS_SUCCESSFUL) ) { ret = RTEMS_UNSATISFIED; } @@ -997,50 +997,50 @@ int restart_asm_tasks( unsigned char lfr * */ - rtems_status_code status[6]; + rtems_status_code status[NB_ASM_TASKS]; rtems_status_code ret; ret = RTEMS_SUCCESSFUL; - status[0] = rtems_task_restart( Task_id[TASKID_AVF0], lfrRequestedMode ); - if (status[0] != RTEMS_SUCCESSFUL) + status[STATUS_0] = rtems_task_restart( Task_id[TASKID_AVF0], lfrRequestedMode ); + if (status[STATUS_0] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF0 ERR %d\n", status[0]) + PRINTF1("in restart_science_task *** AVF0 ERR %d\n", status[STATUS_0]) } - status[1] = rtems_task_restart( Task_id[TASKID_PRC0], lfrRequestedMode ); - if (status[1] != RTEMS_SUCCESSFUL) + status[STATUS_1] = rtems_task_restart( Task_id[TASKID_PRC0], lfrRequestedMode ); + if (status[STATUS_1] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC0 ERR %d\n", status[1]) + PRINTF1("in restart_science_task *** PRC0 ERR %d\n", status[STATUS_1]) } - status[2] = rtems_task_restart( Task_id[TASKID_AVF1], lfrRequestedMode ); - if (status[2] != RTEMS_SUCCESSFUL) + status[STATUS_2] = rtems_task_restart( Task_id[TASKID_AVF1], lfrRequestedMode ); + if (status[STATUS_2] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF1 ERR %d\n", status[2]) + PRINTF1("in restart_science_task *** AVF1 ERR %d\n", status[STATUS_2]) } - status[3] = rtems_task_restart( Task_id[TASKID_PRC1],lfrRequestedMode ); - if (status[3] != RTEMS_SUCCESSFUL) + status[STATUS_3] = rtems_task_restart( Task_id[TASKID_PRC1],lfrRequestedMode ); + if (status[STATUS_3] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC1 ERR %d\n", status[3]) + PRINTF1("in restart_science_task *** PRC1 ERR %d\n", status[STATUS_3]) } - status[4] = rtems_task_restart( Task_id[TASKID_AVF2], 1 ); - if (status[4] != RTEMS_SUCCESSFUL) + status[STATUS_4] = rtems_task_restart( Task_id[TASKID_AVF2], 1 ); + if (status[STATUS_4] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** AVF2 ERR %d\n", status[4]) + PRINTF1("in restart_science_task *** AVF2 ERR %d\n", status[STATUS_4]) } - status[5] = rtems_task_restart( Task_id[TASKID_PRC2], 1 ); - if (status[5] != RTEMS_SUCCESSFUL) + status[STATUS_5] = rtems_task_restart( Task_id[TASKID_PRC2], 1 ); + if (status[STATUS_5] != RTEMS_SUCCESSFUL) { - PRINTF1("in restart_science_task *** PRC2 ERR %d\n", status[5]) + PRINTF1("in restart_science_task *** PRC2 ERR %d\n", status[STATUS_5]) } - if ( (status[0] != RTEMS_SUCCESSFUL) || (status[1] != RTEMS_SUCCESSFUL) || - (status[2] != RTEMS_SUCCESSFUL) || (status[3] != RTEMS_SUCCESSFUL) || - (status[4] != RTEMS_SUCCESSFUL) || (status[5] != RTEMS_SUCCESSFUL) ) + if ( (status[STATUS_0] != RTEMS_SUCCESSFUL) || (status[STATUS_1] != RTEMS_SUCCESSFUL) || + (status[STATUS_2] != RTEMS_SUCCESSFUL) || (status[STATUS_3] != RTEMS_SUCCESSFUL) || + (status[STATUS_4] != RTEMS_SUCCESSFUL) || (status[STATUS_5] != RTEMS_SUCCESSFUL) ) { ret = RTEMS_UNSATISFIED; } @@ -1323,11 +1323,11 @@ void set_sm_irq_onNewMatrix( unsigned ch { if (value == 1) { - spectral_matrix_regs->config = spectral_matrix_regs->config | 0x01; + spectral_matrix_regs->config = spectral_matrix_regs->config | BIT_IRQ_ON_NEW_MATRIX; } else { - spectral_matrix_regs->config = spectral_matrix_regs->config & 0xfffffffe; // 1110 + spectral_matrix_regs->config = spectral_matrix_regs->config & MASK_IRQ_ON_NEW_MATRIX; // 1110 } } @@ -1335,11 +1335,11 @@ void set_sm_irq_onError( unsigned char v { if (value == 1) { - spectral_matrix_regs->config = spectral_matrix_regs->config | 0x02; + spectral_matrix_regs->config = spectral_matrix_regs->config | BIT_IRQ_ON_ERROR; } else { - spectral_matrix_regs->config = spectral_matrix_regs->config & 0xfffffffd; // 1101 + spectral_matrix_regs->config = spectral_matrix_regs->config & MASK_IRQ_ON_ERROR; // 1101 } } @@ -1358,67 +1358,75 @@ void setCalibrationDivisor( unsigned int time_management_regs->calDivisor = divisionFactor; } -void setCalibrationData( void ){ +void setCalibrationData( void ) +{ + /** This function is used to store the values used to drive the DAC in order to generate the SCM calibration signal + * + * @param void + * + * @return void + * + */ + unsigned int k; unsigned short data; float val; - float f0; - float f1; - float fs; float Ts; - float scaleFactor; - f0 = 625; - f1 = 10000; - fs = 160256.410; - Ts = 1. / fs; - scaleFactor = 0.250 / 0.000654; // 191, 500 mVpp, 2 sinus waves => 500 mVpp each, amplitude = 250 mV - - time_management_regs->calDataPtr = 0x00; + time_management_regs->calDataPtr = INIT_CHAR; // build the signal for the SCM calibration - for (k=0; k<256; k++) + for (k = 0; k < CAL_NB_PTS; k++) { - val = sin( 2 * pi * f0 * k * Ts ) - + sin( 2 * pi * f1 * k * Ts ); - data = (unsigned short) ((val * scaleFactor) + 2048); - time_management_regs->calData = data & 0xfff; + val = sin( 2 * pi * CAL_F0 * k * Ts ) + + sin( 2 * pi * CAL_F1 * k * Ts ); + data = (unsigned short) ((val * CAL_SCALE_FACTOR) + CONST_2048); + time_management_regs->calData = data & CAL_DATA_MASK; } } -void setCalibrationDataInterleaved( void ){ +void setCalibrationDataInterleaved( void ) +{ + /** This function is used to store the values used to drive the DAC in order to generate the SCM calibration signal + * + * @param void + * + * @return void + * + * In interleaved mode, one can store more values than in normal mode. + * The data are stored in bunch of 18 bits, 12 bits from one sample and 6 bits from another sample. + * T store 3 values, one need two write operations. + * s1 [ b11 b10 b9 b8 b7 b6 ] s0 [ b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b0 ] + * s1 [ b5 b4 b3 b2 b1 b0 ] s2 [ b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b0 ] + * + */ + unsigned int k; float val; - float f0; - float f1; - float fs; float Ts; - unsigned short data[384]; + unsigned short data[CAL_NB_PTS_INTER]; unsigned char *dataPtr; - f0 = 625; - f1 = 10000; - fs = 240384.615; - Ts = 1. / fs; + Ts = 1. / CAL_FS_INTER; - time_management_regs->calDataPtr = 0x00; + time_management_regs->calDataPtr = INIT_CHAR; // build the signal for the SCM calibration - for (k=0; k<384; k++) + for (k=0; kcalData = (data[k*3] & 0xfff) - + ( (dataPtr[0] & 0x3f) << 12); - time_management_regs->calData = (data[k*3 + 1] & 0xfff) - + ( (dataPtr[1] & 0x3f) << 12); + dataPtr = (unsigned char*) &data[ (k * BYTES_FOR_2_SAMPLES) + 2 ]; + time_management_regs->calData = ( data[ k * BYTES_FOR_2_SAMPLES ] & CAL_DATA_MASK ) + + ( (dataPtr[0] & CAL_DATA_MASK_INTER) << CAL_DATA_SHIFT_INTER); + time_management_regs->calData = ( data[(k * BYTES_FOR_2_SAMPLES) + 1] & CAL_DATA_MASK ) + + ( (dataPtr[1] & CAL_DATA_MASK_INTER) << CAL_DATA_SHIFT_INTER); } } @@ -1426,11 +1434,11 @@ void setCalibrationReload( bool state) { if (state == true) { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | 0x00000010; // [0001 0000] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | BIT_CAL_RELOAD; // [0001 0000] } else { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & 0xffffffef; // [1110 1111] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & MASK_CAL_RELOAD; // [1110 1111] } } @@ -1439,11 +1447,11 @@ void setCalibrationEnable( bool state ) // this bit drives the multiplexer if (state == true) { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | 0x00000040; // [0100 0000] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | BIT_CAL_ENABLE; // [0100 0000] } else { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & 0xffffffbf; // [1011 1111] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & MASK_CAL_ENABLE; // [1011 1111] } } @@ -1452,11 +1460,11 @@ void setCalibrationInterleaved( bool sta // this bit drives the multiplexer if (state == true) { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | 0x00000020; // [0010 0000] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl | BIT_SET_INTERLEAVED; // [0010 0000] } else { - time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & 0xffffffdf; // [1101 1111] + time_management_regs->calDACCtrl = time_management_regs->calDACCtrl & MASK_SET_INTERLEAVED; // [1101 1111] } } @@ -1482,14 +1490,14 @@ void configureCalibration( bool interlea if ( interleaved == true ) { setCalibrationInterleaved( true ); - setCalibrationPrescaler( 0 ); // 25 MHz => 25 000 000 - setCalibrationDivisor( 26 ); // => 240 384 + setCalibrationPrescaler( 0 ); // 25 MHz => 25 000 000 + setCalibrationDivisor( CAL_F_DIVISOR_INTER ); // => 240 384 setCalibrationDataInterleaved(); } else { - setCalibrationPrescaler( 0 ); // 25 MHz => 25 000 000 - setCalibrationDivisor( 38 ); // => 160 256 (39 - 1) + setCalibrationPrescaler( 0 ); // 25 MHz => 25 000 000 + setCalibrationDivisor( CAL_F_DIVISOR ); // => 160 256 (39 - 1) setCalibrationData(); } } @@ -1509,20 +1517,20 @@ void update_last_TC_exe( ccsdsTelecomman housekeeping_packet.hk_lfr_last_exe_tc_id[0] = TC->packetID[0]; housekeeping_packet.hk_lfr_last_exe_tc_id[1] = TC->packetID[1]; - housekeeping_packet.hk_lfr_last_exe_tc_type[0] = 0x00; + housekeeping_packet.hk_lfr_last_exe_tc_type[0] = INIT_CHAR; housekeeping_packet.hk_lfr_last_exe_tc_type[1] = TC->serviceType; - housekeeping_packet.hk_lfr_last_exe_tc_subtype[0] = 0x00; + housekeeping_packet.hk_lfr_last_exe_tc_subtype[0] = INIT_CHAR; housekeeping_packet.hk_lfr_last_exe_tc_subtype[1] = TC->serviceSubType; - housekeeping_packet.hk_lfr_last_exe_tc_time[0] = time[0]; - housekeeping_packet.hk_lfr_last_exe_tc_time[1] = time[1]; - housekeeping_packet.hk_lfr_last_exe_tc_time[2] = time[2]; - housekeeping_packet.hk_lfr_last_exe_tc_time[3] = time[3]; - housekeeping_packet.hk_lfr_last_exe_tc_time[4] = time[4]; - housekeeping_packet.hk_lfr_last_exe_tc_time[5] = time[5]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_0] = time[BYTE_0]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_1] = time[BYTE_1]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_2] = time[BYTE_2]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_3] = time[BYTE_3]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_4] = time[BYTE_4]; + housekeeping_packet.hk_lfr_last_exe_tc_time[BYTE_5] = time[BYTE_5]; - val = housekeeping_packet.hk_lfr_exe_tc_cnt[0] * 256 + housekeeping_packet.hk_lfr_exe_tc_cnt[1]; + val = (housekeeping_packet.hk_lfr_exe_tc_cnt[0] * CONST_256) + housekeeping_packet.hk_lfr_exe_tc_cnt[1]; val++; - housekeeping_packet.hk_lfr_exe_tc_cnt[0] = (unsigned char) (val >> 8); + housekeeping_packet.hk_lfr_exe_tc_cnt[0] = (unsigned char) (val >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_exe_tc_cnt[1] = (unsigned char) (val); } @@ -1539,20 +1547,20 @@ void update_last_TC_rej(ccsdsTelecommand housekeeping_packet.hk_lfr_last_rej_tc_id[0] = TC->packetID[0]; housekeeping_packet.hk_lfr_last_rej_tc_id[1] = TC->packetID[1]; - housekeeping_packet.hk_lfr_last_rej_tc_type[0] = 0x00; + housekeeping_packet.hk_lfr_last_rej_tc_type[0] = INIT_CHAR; housekeeping_packet.hk_lfr_last_rej_tc_type[1] = TC->serviceType; - housekeeping_packet.hk_lfr_last_rej_tc_subtype[0] = 0x00; + housekeeping_packet.hk_lfr_last_rej_tc_subtype[0] = INIT_CHAR; housekeeping_packet.hk_lfr_last_rej_tc_subtype[1] = TC->serviceSubType; - housekeeping_packet.hk_lfr_last_rej_tc_time[0] = time[0]; - housekeeping_packet.hk_lfr_last_rej_tc_time[1] = time[1]; - housekeeping_packet.hk_lfr_last_rej_tc_time[2] = time[2]; - housekeeping_packet.hk_lfr_last_rej_tc_time[3] = time[3]; - housekeeping_packet.hk_lfr_last_rej_tc_time[4] = time[4]; - housekeeping_packet.hk_lfr_last_rej_tc_time[5] = time[5]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_0] = time[BYTE_0]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_1] = time[BYTE_1]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_2] = time[BYTE_2]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_3] = time[BYTE_3]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_4] = time[BYTE_4]; + housekeeping_packet.hk_lfr_last_rej_tc_time[BYTE_5] = time[BYTE_5]; - val = housekeeping_packet.hk_lfr_rej_tc_cnt[0] * 256 + housekeeping_packet.hk_lfr_rej_tc_cnt[1]; + val = (housekeeping_packet.hk_lfr_rej_tc_cnt[0] * CONST_256) + housekeeping_packet.hk_lfr_rej_tc_cnt[1]; val++; - housekeeping_packet.hk_lfr_rej_tc_cnt[0] = (unsigned char) (val >> 8); + housekeeping_packet.hk_lfr_rej_tc_cnt[0] = (unsigned char) (val >> SHIFT_1_BYTE); housekeeping_packet.hk_lfr_rej_tc_cnt[1] = (unsigned char) (val); } @@ -1619,7 +1627,8 @@ void updateLFRCurrentMode( unsigned char */ // update the local value of lfrCurrentMode with the value contained in the housekeeping_packet structure - housekeeping_packet.lfr_status_word[0] = (unsigned char) ((requestedMode << 4) + 0x0d); + housekeeping_packet.lfr_status_word[0] = (housekeeping_packet.lfr_status_word[0] & STATUS_WORD_LFR_MODE_MASK) + + (unsigned char) ( requestedMode << STATUS_WORD_LFR_MODE_SHIFT ); lfrCurrentMode = requestedMode; } @@ -1627,11 +1636,11 @@ void set_lfr_soft_reset( unsigned char v { if (value == 1) { - time_management_regs->ctrl = time_management_regs->ctrl | 0x00000004; // [0100] + time_management_regs->ctrl = time_management_regs->ctrl | BIT_SOFT_RESET; // [0100] } else { - time_management_regs->ctrl = time_management_regs->ctrl & 0xfffffffb; // [1011] + time_management_regs->ctrl = time_management_regs->ctrl & MASK_SOFT_RESET; // [1011] } } 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 @@ -105,7 +105,7 @@ int action_load_burst_par(ccsdsTelecomma { if (sy_lfr_b_bp_p0 < DEFAULT_SY_LFR_B_BP_P0 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P0+10, sy_lfr_b_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P0 + DATAFIELD_OFFSET, sy_lfr_b_bp_p0 ); flag = WRONG_APP_DATA; } } @@ -114,7 +114,7 @@ int action_load_burst_par(ccsdsTelecomma { if (sy_lfr_b_bp_p1 < DEFAULT_SY_LFR_B_BP_P1 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P1+10, sy_lfr_b_bp_p1 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P1 + DATAFIELD_OFFSET, sy_lfr_b_bp_p1 ); flag = WRONG_APP_DATA; } } @@ -127,7 +127,7 @@ int action_load_burst_par(ccsdsTelecomma aux = ( (float ) sy_lfr_b_bp_p1 / sy_lfr_b_bp_p0 ) - floor(sy_lfr_b_bp_p1 / sy_lfr_b_bp_p0); if (aux > FLOAT_EQUAL_ZERO) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P0+10, sy_lfr_b_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_B_BP_P0 + DATAFIELD_OFFSET, sy_lfr_b_bp_p0 ); flag = LFR_DEFAULT; } } @@ -172,7 +172,7 @@ int action_load_sbm1_par(ccsdsTelecomman { if (sy_lfr_s1_bp_p0 < DEFAULT_SY_LFR_S1_BP_P0 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P0+10, sy_lfr_s1_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P0 + DATAFIELD_OFFSET, sy_lfr_s1_bp_p0 ); flag = WRONG_APP_DATA; } } @@ -181,7 +181,7 @@ int action_load_sbm1_par(ccsdsTelecomman { if (sy_lfr_s1_bp_p1 < DEFAULT_SY_LFR_S1_BP_P1 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P1+10, sy_lfr_s1_bp_p1 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P1 + DATAFIELD_OFFSET, sy_lfr_s1_bp_p1 ); flag = WRONG_APP_DATA; } } @@ -189,10 +189,11 @@ int action_load_sbm1_par(ccsdsTelecomman // check the consistency between sy_lfr_s1_bp_p0 and sy_lfr_s1_bp_p1 if (flag == LFR_SUCCESSFUL) { - aux = ( (float ) sy_lfr_s1_bp_p1 / (sy_lfr_s1_bp_p0*0.25) ) - floor(sy_lfr_s1_bp_p1 / (sy_lfr_s1_bp_p0*0.25)); + aux = ( (float ) sy_lfr_s1_bp_p1 / (sy_lfr_s1_bp_p0 * S1_BP_P0_SCALE) ) + - floor(sy_lfr_s1_bp_p1 / (sy_lfr_s1_bp_p0 * S1_BP_P0_SCALE)); if (aux > FLOAT_EQUAL_ZERO) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P0+10, sy_lfr_s1_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S1_BP_P0 + DATAFIELD_OFFSET, sy_lfr_s1_bp_p0 ); flag = LFR_DEFAULT; } } @@ -237,7 +238,7 @@ int action_load_sbm2_par(ccsdsTelecomman { if (sy_lfr_s2_bp_p0 < DEFAULT_SY_LFR_S2_BP_P0 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P0+10, sy_lfr_s2_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P0 + DATAFIELD_OFFSET, sy_lfr_s2_bp_p0 ); flag = WRONG_APP_DATA; } } @@ -246,7 +247,7 @@ int action_load_sbm2_par(ccsdsTelecomman { if (sy_lfr_s2_bp_p1 < DEFAULT_SY_LFR_S2_BP_P1 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P1+10, sy_lfr_s2_bp_p1 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P1 + DATAFIELD_OFFSET, sy_lfr_s2_bp_p1 ); flag = WRONG_APP_DATA; } } @@ -259,7 +260,7 @@ int action_load_sbm2_par(ccsdsTelecomman aux = ( (float ) sy_lfr_s2_bp_p1 / sy_lfr_s2_bp_p0 ) - floor(sy_lfr_s2_bp_p1 / sy_lfr_s2_bp_p0); if (aux > FLOAT_EQUAL_ZERO) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P0+10, sy_lfr_s2_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_S2_BP_P0 + DATAFIELD_OFFSET, sy_lfr_s2_bp_p0 ); flag = LFR_DEFAULT; } } @@ -332,25 +333,25 @@ int action_load_filter_par(ccsdsTelecomm { parameter_dump_packet.spare_sy_lfr_pas_filter_enabled = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_ENABLED ]; parameter_dump_packet.sy_lfr_pas_filter_modulus = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS ]; - parameter_dump_packet.sy_lfr_pas_filter_tbad[0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + 0 ]; - parameter_dump_packet.sy_lfr_pas_filter_tbad[1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + 1 ]; - parameter_dump_packet.sy_lfr_pas_filter_tbad[2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + 2 ]; - parameter_dump_packet.sy_lfr_pas_filter_tbad[3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + 3 ]; + parameter_dump_packet.sy_lfr_pas_filter_tbad[BYTE_0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + BYTE_0 ]; + parameter_dump_packet.sy_lfr_pas_filter_tbad[BYTE_1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + BYTE_1 ]; + parameter_dump_packet.sy_lfr_pas_filter_tbad[BYTE_2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + BYTE_2 ]; + parameter_dump_packet.sy_lfr_pas_filter_tbad[BYTE_3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + BYTE_3 ]; parameter_dump_packet.sy_lfr_pas_filter_offset = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_OFFSET ]; - parameter_dump_packet.sy_lfr_pas_filter_shift[0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + 0 ]; - parameter_dump_packet.sy_lfr_pas_filter_shift[1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + 1 ]; - parameter_dump_packet.sy_lfr_pas_filter_shift[2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + 2 ]; - parameter_dump_packet.sy_lfr_pas_filter_shift[3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + 3 ]; - parameter_dump_packet.sy_lfr_sc_rw_delta_f[0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + 0 ]; - parameter_dump_packet.sy_lfr_sc_rw_delta_f[1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + 1 ]; - parameter_dump_packet.sy_lfr_sc_rw_delta_f[2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + 2 ]; - parameter_dump_packet.sy_lfr_sc_rw_delta_f[3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + 3 ]; + parameter_dump_packet.sy_lfr_pas_filter_shift[BYTE_0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + BYTE_0 ]; + parameter_dump_packet.sy_lfr_pas_filter_shift[BYTE_1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + BYTE_1 ]; + parameter_dump_packet.sy_lfr_pas_filter_shift[BYTE_2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + BYTE_2 ]; + parameter_dump_packet.sy_lfr_pas_filter_shift[BYTE_3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + BYTE_3 ]; + parameter_dump_packet.sy_lfr_sc_rw_delta_f[BYTE_0] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + BYTE_0 ]; + parameter_dump_packet.sy_lfr_sc_rw_delta_f[BYTE_1] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + BYTE_1 ]; + parameter_dump_packet.sy_lfr_sc_rw_delta_f[BYTE_2] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + BYTE_2 ]; + parameter_dump_packet.sy_lfr_sc_rw_delta_f[BYTE_3] = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F + BYTE_3 ]; //**************************** // store PAS filter parameters // sy_lfr_pas_filter_enabled filterPar.spare_sy_lfr_pas_filter_enabled = parameter_dump_packet.spare_sy_lfr_pas_filter_enabled; - set_sy_lfr_pas_filter_enabled( parameter_dump_packet.spare_sy_lfr_pas_filter_enabled & 0x01 ); + set_sy_lfr_pas_filter_enabled( parameter_dump_packet.spare_sy_lfr_pas_filter_enabled & BIT_PAS_FILTER_ENABLED ); // sy_lfr_pas_filter_modulus filterPar.sy_lfr_pas_filter_modulus = parameter_dump_packet.sy_lfr_pas_filter_modulus; // sy_lfr_pas_filter_tbad @@ -399,54 +400,60 @@ int action_dump_kcoefficients(ccsdsTelec // 11 F0 bins, 13 F1 bins and 6 F2 bins kcoefficients_dump_1.destinationID = TC->sourceID; increment_seq_counter_destination_id_dump( kcoefficients_dump_1.packetSequenceControl, TC->sourceID ); - for( freq=0; - freqcoarse_time>>24); - kcoefficients_dump_1.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - kcoefficients_dump_1.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - kcoefficients_dump_1.time[3] = (unsigned char) (time_management_regs->coarse_time); - kcoefficients_dump_1.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - kcoefficients_dump_1.time[5] = (unsigned char) (time_management_regs->fine_time); + kcoefficients_dump_1.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + kcoefficients_dump_1.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + kcoefficients_dump_1.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + kcoefficients_dump_1.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + kcoefficients_dump_1.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + kcoefficients_dump_1.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // SEND DATA kcoefficient_node_1.status = 1; address = (unsigned int) &kcoefficient_node_1; @@ -460,24 +467,27 @@ int action_dump_kcoefficients(ccsdsTelec // 6 F2 bins kcoefficients_dump_2.destinationID = TC->sourceID; increment_seq_counter_destination_id_dump( kcoefficients_dump_2.packetSequenceControl, TC->sourceID ); - for( freq=0; freq<6; freq++ ) + for( freq = 0; + freq < KCOEFF_BLK_NR_PKT2; + freq++ ) { - kcoefficients_dump_2.kcoeff_blks[ freq*KCOEFF_BLK_SIZE + 1 ] = NB_BINS_COMPRESSED_SM_F0 + NB_BINS_COMPRESSED_SM_F1 + 6 + freq; - bin = freq + 6; + kcoefficients_dump_2.kcoeff_blks[ (freq*KCOEFF_BLK_SIZE) + 1 ] = KCOEFF_BLK_NR_PKT1 + freq; + bin = freq + KCOEFF_BLK_NR_PKT2; // printKCoefficients( freq, bin, k_coeff_intercalib_f2); for ( coeff=0; coeffcoarse_time>>24); - kcoefficients_dump_2.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - kcoefficients_dump_2.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - kcoefficients_dump_2.time[3] = (unsigned char) (time_management_regs->coarse_time); - kcoefficients_dump_2.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - kcoefficients_dump_2.time[5] = (unsigned char) (time_management_regs->fine_time); + kcoefficients_dump_2.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + kcoefficients_dump_2.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + kcoefficients_dump_2.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + kcoefficients_dump_2.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + kcoefficients_dump_2.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + kcoefficients_dump_2.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // SEND DATA kcoefficient_node_2.status = 1; address = (unsigned int) &kcoefficient_node_2; @@ -511,12 +521,12 @@ int action_dump_par( ccsdsTelecommandPac parameter_dump_packet.destinationID = TC->sourceID; // UPDATE TIME - parameter_dump_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - parameter_dump_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - parameter_dump_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - parameter_dump_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); - parameter_dump_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - parameter_dump_packet.time[5] = (unsigned char) (time_management_regs->fine_time); + parameter_dump_packet.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + parameter_dump_packet.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + parameter_dump_packet.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + parameter_dump_packet.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + parameter_dump_packet.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + parameter_dump_packet.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // SEND DATA status = rtems_message_queue_send( queue_id, ¶meter_dump_packet, PACKET_LENGTH_PARAMETER_DUMP + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES); @@ -551,15 +561,15 @@ int check_normal_par_consistency( ccsdsT // get parameters msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L ]; lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L+1 ]; - sy_lfr_n_swf_l = msb * 256 + lsb; + sy_lfr_n_swf_l = (msb * CONST_256) + lsb; msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P ]; lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P+1 ]; - sy_lfr_n_swf_p = msb * 256 + lsb; + sy_lfr_n_swf_p = (msb * CONST_256) + lsb; msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P ]; lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P+1 ]; - sy_lfr_n_asm_p = msb * 256 + lsb; + sy_lfr_n_asm_p = (msb * CONST_256) + lsb; sy_lfr_n_bp_p0 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_BP_P0 ]; @@ -570,17 +580,17 @@ int check_normal_par_consistency( ccsdsT //****************** // check consistency // sy_lfr_n_swf_l - if (sy_lfr_n_swf_l != 2048) + if (sy_lfr_n_swf_l != DFLT_SY_LFR_N_SWF_L) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_L+10, sy_lfr_n_swf_l ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_L + DATAFIELD_OFFSET, sy_lfr_n_swf_l ); flag = WRONG_APP_DATA; } // sy_lfr_n_swf_p if (flag == LFR_SUCCESSFUL) { - if ( sy_lfr_n_swf_p < 22 ) + if ( sy_lfr_n_swf_p < MIN_SY_LFR_N_SWF_P ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_P+10, sy_lfr_n_swf_p ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_P + DATAFIELD_OFFSET, sy_lfr_n_swf_p ); flag = WRONG_APP_DATA; } } @@ -589,7 +599,7 @@ int check_normal_par_consistency( ccsdsT { if (sy_lfr_n_bp_p0 < DFLT_SY_LFR_N_BP_P0) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P0+10, sy_lfr_n_bp_p0 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P0 + DATAFIELD_OFFSET, sy_lfr_n_bp_p0 ); flag = WRONG_APP_DATA; } } @@ -598,7 +608,7 @@ int check_normal_par_consistency( ccsdsT { if (sy_lfr_n_asm_p == 0) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_ASM_P+10, sy_lfr_n_asm_p ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_ASM_P + DATAFIELD_OFFSET, sy_lfr_n_asm_p ); flag = WRONG_APP_DATA; } } @@ -608,7 +618,7 @@ int check_normal_par_consistency( ccsdsT aux = ( (float ) sy_lfr_n_asm_p / sy_lfr_n_bp_p0 ) - floor(sy_lfr_n_asm_p / sy_lfr_n_bp_p0); if (aux > FLOAT_EQUAL_ZERO) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_ASM_P+10, sy_lfr_n_asm_p ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_ASM_P + DATAFIELD_OFFSET, sy_lfr_n_asm_p ); flag = WRONG_APP_DATA; } } @@ -617,7 +627,7 @@ int check_normal_par_consistency( ccsdsT { if (sy_lfr_n_bp_p1 < DFLT_SY_LFR_N_BP_P1) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P1+10, sy_lfr_n_bp_p1 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P1 + DATAFIELD_OFFSET, sy_lfr_n_bp_p1 ); flag = WRONG_APP_DATA; } } @@ -627,7 +637,7 @@ int check_normal_par_consistency( ccsdsT aux = ( (float ) sy_lfr_n_bp_p1 / sy_lfr_n_bp_p0 ) - floor(sy_lfr_n_bp_p1 / sy_lfr_n_bp_p0); if (aux > FLOAT_EQUAL_ZERO) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P1+10, sy_lfr_n_bp_p1 ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_BP_P1 + DATAFIELD_OFFSET, sy_lfr_n_bp_p1 ); flag = LFR_DEFAULT; } } @@ -988,19 +998,20 @@ void setFBinMask( unsigned char *fbins_m unsigned int whichByte; int selectedByte; int bin; - int binToRemove[3]; + int binToRemove[NB_BINS_TO_REMOVE]; int k; whichByte = 0; bin = 0; - binToRemove[0] = -1; - binToRemove[1] = -1; - binToRemove[2] = -1; + for (k = 0; k < NB_BINS_TO_REMOVE; k++) + { + binToRemove[k] = -1; + } // compute the frequency range to filter [ rw_f - delta_f/2; rw_f + delta_f/2 ] - f_RW_min = rw_f - filterPar.sy_lfr_sc_rw_delta_f / 2.; - f_RW_MAX = rw_f + filterPar.sy_lfr_sc_rw_delta_f / 2.; + f_RW_min = rw_f - (filterPar.sy_lfr_sc_rw_delta_f / 2.); + f_RW_MAX = rw_f + (filterPar.sy_lfr_sc_rw_delta_f / 2.); // compute the index of the frequency bin immediately below rw_f binBelow = (int) ( floor( ((double) rw_f) / ((double) deltaFreq)) ); @@ -1022,8 +1033,8 @@ void setFBinMask( unsigned char *fbins_m // compute the fi interval [fi - deltaFreq * 0.285, fi + deltaFreq * 0.285] fi = closestBin * deltaFreq; - fi_min = fi - (deltaFreq * 0.285); - fi_MAX = fi + (deltaFreq * 0.285); + fi_min = fi - (deltaFreq * FI_INTERVAL_COEFF); + fi_MAX = fi + (deltaFreq * FI_INTERVAL_COEFF); //************************************************************************************** // be careful here, one shall take into account that the bin 0 IS DROPPED in the spectra @@ -1047,16 +1058,17 @@ void setFBinMask( unsigned char *fbins_m binToRemove[2] = (-1); } - for (k = 0; k < 3; k++) + for (k = 0; k < NB_BINS_TO_REMOVE; k++) { bin = binToRemove[k]; - if ( (bin >= 0) && (bin <= 127) ) + if ( (bin >= BIN_MIN) && (bin <= BIN_MAX) ) { if (flag == 1) { - whichByte = (bin >> 3); // division by 8 - selectedByte = ( 1 << (bin - (whichByte * 8)) ); - fbins_mask[15 - whichByte] = fbins_mask[15 - whichByte] & ((unsigned char) (~selectedByte)); // bytes are ordered MSB first in the packets + whichByte = (bin >> SHIFT_3_BITS); // division by 8 + selectedByte = ( 1 << (bin - (whichByte * BITS_PER_BYTE)) ); + fbins_mask[BYTES_PER_MASK - 1 - whichByte] = + fbins_mask[BYTES_PER_MASK - 1 - whichByte] & ((unsigned char) (~selectedByte)); // bytes are ordered MSB first in the packets } } } @@ -1064,7 +1076,7 @@ void setFBinMask( unsigned char *fbins_m void build_sy_lfr_rw_mask( unsigned int channel ) { - unsigned char local_rw_fbins_mask[16]; + unsigned char local_rw_fbins_mask[BYTES_PER_MASK]; unsigned char *maskPtr; double deltaF; unsigned k; @@ -1072,59 +1084,59 @@ void build_sy_lfr_rw_mask( unsigned int k = 0; maskPtr = NULL; - deltaF = 1.; + deltaF = DELTAF_F2; switch (channel) { - case 0: + case CHANNELF0: maskPtr = parameter_dump_packet.sy_lfr_rw_mask.fx.f0_word1; - deltaF = 96.; + deltaF = DELTAF_F0; break; - case 1: + case CHANNELF1: maskPtr = parameter_dump_packet.sy_lfr_rw_mask.fx.f1_word1; - deltaF = 16.; + deltaF = DELTAF_F1; break; - case 2: + case CHANNELF2: maskPtr = parameter_dump_packet.sy_lfr_rw_mask.fx.f2_word1; - deltaF = 1.; + deltaF = DELTAF_F2; break; default: break; } - for (k = 0; k < 16; k++) + for (k = 0; k < BYTES_PER_MASK; k++) { - local_rw_fbins_mask[k] = 0xff; + local_rw_fbins_mask[k] = INT8_ALL_F; } // RW1 F1 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f1, deltaF, (cp_rpw_sc_rw_f_flags & 0x80) >> 7 ); // [1000 0000] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F1) >> SHIFT_7_BITS ); // [1000 0000] // RW1 F2 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f2, deltaF, (cp_rpw_sc_rw_f_flags & 0x40) >> 6 ); // [0100 0000] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F2) >> SHIFT_6_BITS ); // [0100 0000] // RW2 F1 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f1, deltaF, (cp_rpw_sc_rw_f_flags & 0x20) >> 5 ); // [0010 0000] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F1) >> SHIFT_5_BITS ); // [0010 0000] // RW2 F2 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f2, deltaF, (cp_rpw_sc_rw_f_flags & 0x10) >> 4 ); // [0001 0000] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F2) >> SHIFT_4_BITS ); // [0001 0000] // RW3 F1 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f1, deltaF, (cp_rpw_sc_rw_f_flags & 0x08) >> 3 ); // [0000 1000] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F1) >> SHIFT_3_BITS ); // [0000 1000] // RW3 F2 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f2, deltaF, (cp_rpw_sc_rw_f_flags & 0x04) >> 2 ); // [0000 0100] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F2) >> SHIFT_2_BITS ); // [0000 0100] // RW4 F1 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f1, deltaF, (cp_rpw_sc_rw_f_flags & 0x02) >> 1 ); // [0000 0010] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F1) >> 1 ); // [0000 0010] // RW4 F2 - setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f2, deltaF, (cp_rpw_sc_rw_f_flags & 0x01) ); // [0000 0001] + setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F2) ); // [0000 0001] // update the value of the fbins related to reaction wheels frequency filtering if (maskPtr != NULL) { - for (k = 0; k < 16; k++) + for (k = 0; k < BYTES_PER_MASK; k++) { maskPtr[k] = local_rw_fbins_mask[k]; } @@ -1133,9 +1145,9 @@ void build_sy_lfr_rw_mask( unsigned int void build_sy_lfr_rw_masks( void ) { - build_sy_lfr_rw_mask( 0 ); - build_sy_lfr_rw_mask( 1 ); - build_sy_lfr_rw_mask( 2 ); + build_sy_lfr_rw_mask( CHANNELF0 ); + build_sy_lfr_rw_mask( CHANNELF1 ); + build_sy_lfr_rw_mask( CHANNELF2 ); } void merge_fbins_masks( void ) @@ -1156,7 +1168,7 @@ void merge_fbins_masks( void ) rw_mask_f1 = parameter_dump_packet.sy_lfr_rw_mask.fx.f1_word1; rw_mask_f2 = parameter_dump_packet.sy_lfr_rw_mask.fx.f2_word1; - for( k=0; k < 16; k++ ) + for( k=0; k < BYTES_PER_MASK; k++ ) { fbins_masks.merged_fbins_mask_f0[k] = fbins_f0[k] & rw_mask_f0[k]; fbins_masks.merged_fbins_mask_f1[k] = fbins_f1[k] & rw_mask_f1[k]; @@ -1179,7 +1191,7 @@ int set_sy_lfr_fbins( ccsdsTelecommandPa fbins_mask_dump = parameter_dump_packet.sy_lfr_fbins.raw; fbins_mask_TC = TC->dataAndCRC; - for (k=0; k < NB_FBINS_MASKS * NB_BYTES_PER_FBINS_MASK; k++) + for (k=0; k < BYTES_PER_MASKS_SET; k++) { fbins_mask_dump[k] = fbins_mask_TC[k]; } @@ -1204,14 +1216,14 @@ int check_sy_lfr_filter_parameters( ccsd char *parPtr; flag = LFR_SUCCESSFUL; - sy_lfr_pas_filter_tbad = 0.0; - sy_lfr_pas_filter_shift = 0.0; - sy_lfr_sc_rw_delta_f = 0.0; + sy_lfr_pas_filter_tbad = INIT_FLOAT; + sy_lfr_pas_filter_shift = INIT_FLOAT; + sy_lfr_sc_rw_delta_f = INIT_FLOAT; parPtr = NULL; //*************** // get parameters - sy_lfr_pas_filter_enabled = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_ENABLED ] & 0x01; // [0000 0001] + sy_lfr_pas_filter_enabled = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_ENABLED ] & BIT_PAS_FILTER_ENABLED; // [0000 0001] sy_lfr_pas_filter_modulus = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS ]; copyFloatByChar( (unsigned char*) &sy_lfr_pas_filter_tbad, @@ -1236,18 +1248,18 @@ int check_sy_lfr_filter_parameters( ccsd //************************** // sy_lfr_pas_filter_modulus - if ( (sy_lfr_pas_filter_modulus < 4) || (sy_lfr_pas_filter_modulus > 8) ) + if ( (sy_lfr_pas_filter_modulus < MIN_PAS_FILTER_MODULUS) || (sy_lfr_pas_filter_modulus > MAX_PAS_FILTER_MODULUS) ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS+10, sy_lfr_pas_filter_modulus ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS + DATAFIELD_OFFSET, sy_lfr_pas_filter_modulus ); flag = WRONG_APP_DATA; } //*********************** // sy_lfr_pas_filter_tbad - if ( (sy_lfr_pas_filter_tbad < 0.0) || (sy_lfr_pas_filter_tbad > 4.0) ) + if ( (sy_lfr_pas_filter_tbad < MIN_PAS_FILTER_TBAD) || (sy_lfr_pas_filter_tbad > MAX_PAS_FILTER_TBAD) ) { parPtr = (char*) &sy_lfr_pas_filter_tbad; - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD+10, parPtr[3] ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD + DATAFIELD_OFFSET, parPtr[FLOAT_LSBYTE] ); flag = WRONG_APP_DATA; } @@ -1255,20 +1267,34 @@ int check_sy_lfr_filter_parameters( ccsd // sy_lfr_pas_filter_offset if (flag == LFR_SUCCESSFUL) { - if ( (sy_lfr_pas_filter_offset < 0) || (sy_lfr_pas_filter_offset > 7) ) + if ( (sy_lfr_pas_filter_offset < MIN_PAS_FILTER_OFFSET) || (sy_lfr_pas_filter_offset > MAX_PAS_FILTER_OFFSET) ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_OFFSET+10, sy_lfr_pas_filter_offset ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_OFFSET + DATAFIELD_OFFSET, sy_lfr_pas_filter_offset ); flag = WRONG_APP_DATA; } } //************************ // sy_lfr_pas_filter_shift - if ( (sy_lfr_pas_filter_shift < 0.0) || (sy_lfr_pas_filter_shift > 1.0) ) + if (flag == LFR_SUCCESSFUL) { - parPtr = (char*) &sy_lfr_pas_filter_shift; - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT+10, parPtr[3] ); - flag = WRONG_APP_DATA; + if ( (sy_lfr_pas_filter_shift < MIN_PAS_FILTER_SHIFT) || (sy_lfr_pas_filter_shift > MAX_PAS_FILTER_SHIFT) ) + { + parPtr = (char*) &sy_lfr_pas_filter_shift; + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT + DATAFIELD_OFFSET, parPtr[FLOAT_LSBYTE] ); + flag = WRONG_APP_DATA; + } + } + + //************************************* + // check global coherency of the values + if (flag == LFR_SUCCESSFUL) + { + if ( (sy_lfr_pas_filter_tbad + sy_lfr_pas_filter_offset + sy_lfr_pas_filter_shift) > sy_lfr_pas_filter_modulus ) + { + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS + DATAFIELD_OFFSET, sy_lfr_pas_filter_modulus ); + flag = WRONG_APP_DATA; + } } //********************* @@ -1306,7 +1332,7 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP if ( sy_lfr_kcoeff_frequency >= NB_BINS_COMPRESSED_SM ) { PRINTF1("ERR *** in set_sy_lfr_kcoeff_frequency *** sy_lfr_kcoeff_frequency = %d\n", sy_lfr_kcoeff_frequency) - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY + 10 + 1, + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY + DATAFIELD_OFFSET + 1, TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY + 1] ); // +1 to get the LSB instead of the MSB status = LFR_DEFAULT; } @@ -1342,7 +1368,7 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP // destination kcoeffNormPtr = (unsigned char*) &kcoeffPtr_norm[ (bin * NB_K_COEFF_PER_BIN) + kcoeff ]; // source - kcoeffLoadPtr = (unsigned char*) &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_1 + NB_BYTES_PER_FLOAT * kcoeff]; + kcoeffLoadPtr = (unsigned char*) &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_1 + (NB_BYTES_PER_FLOAT * kcoeff)]; // copy source to destination copyFloatByChar( kcoeffNormPtr, kcoeffLoadPtr ); } @@ -1353,10 +1379,10 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP for (kcoeff=0; kcoeffdataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_1 + NB_BYTES_PER_FLOAT * kcoeff]; + kcoeffLoadPtr = (unsigned char*) &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_1 + (NB_BYTES_PER_FLOAT * kcoeff)]; // copy source to destination copyFloatByChar( kcoeffSbmPtr_a, kcoeffLoadPtr ); copyFloatByChar( kcoeffSbmPtr_b, kcoeffLoadPtr ); @@ -1370,10 +1396,10 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP void copyFloatByChar( unsigned char *destination, unsigned char *source ) { - destination[0] = source[0]; - destination[1] = source[1]; - destination[2] = source[2]; - destination[3] = source[3]; + destination[BYTE_0] = source[BYTE_0]; + destination[BYTE_1] = source[BYTE_1]; + destination[BYTE_2] = source[BYTE_2]; + destination[BYTE_3] = source[BYTE_3]; } void floatToChar( float value, unsigned char* ptr) @@ -1381,10 +1407,10 @@ void floatToChar( float value, unsigned unsigned char* valuePtr; valuePtr = (unsigned char*) &value; - ptr[0] = valuePtr[0]; - ptr[1] = valuePtr[1]; - ptr[2] = valuePtr[2]; - ptr[3] = valuePtr[3]; + ptr[BYTE_0] = valuePtr[BYTE_0]; + ptr[BYTE_1] = valuePtr[BYTE_1]; + ptr[BYTE_2] = valuePtr[BYTE_2]; + ptr[BYTE_3] = valuePtr[BYTE_3]; } //********** @@ -1402,23 +1428,23 @@ 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) (APID_TM_PARAMETER_DUMP >> 8); + parameter_dump_packet.packetID[0] = (unsigned char) (APID_TM_PARAMETER_DUMP >> SHIFT_1_BYTE); 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); + parameter_dump_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_PARAMETER_DUMP >> SHIFT_1_BYTE); parameter_dump_packet.packetLength[1] = (unsigned char) PACKET_LENGTH_PARAMETER_DUMP; // DATA FIELD HEADER parameter_dump_packet.spare1_pusVersion_spare2 = SPARE1_PUSVERSION_SPARE2; parameter_dump_packet.serviceType = TM_TYPE_PARAMETER_DUMP; parameter_dump_packet.serviceSubType = TM_SUBTYPE_PARAMETER_DUMP; parameter_dump_packet.destinationID = TM_DESTINATION_ID_GROUND; - parameter_dump_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - parameter_dump_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - parameter_dump_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - parameter_dump_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); - parameter_dump_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - parameter_dump_packet.time[5] = (unsigned char) (time_management_regs->fine_time); + parameter_dump_packet.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + parameter_dump_packet.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + parameter_dump_packet.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + parameter_dump_packet.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + parameter_dump_packet.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + parameter_dump_packet.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); parameter_dump_packet.sid = SID_PARAMETER_DUMP; //****************** @@ -1428,11 +1454,11 @@ void init_parameter_dump( void ) //****************** // NORMAL PARAMETERS - parameter_dump_packet.sy_lfr_n_swf_l[0] = (unsigned char) (DFLT_SY_LFR_N_SWF_L >> 8); + parameter_dump_packet.sy_lfr_n_swf_l[0] = (unsigned char) (DFLT_SY_LFR_N_SWF_L >> SHIFT_1_BYTE); parameter_dump_packet.sy_lfr_n_swf_l[1] = (unsigned char) (DFLT_SY_LFR_N_SWF_L ); - parameter_dump_packet.sy_lfr_n_swf_p[0] = (unsigned char) (DFLT_SY_LFR_N_SWF_P >> 8); + parameter_dump_packet.sy_lfr_n_swf_p[0] = (unsigned char) (DFLT_SY_LFR_N_SWF_P >> SHIFT_1_BYTE); parameter_dump_packet.sy_lfr_n_swf_p[1] = (unsigned char) (DFLT_SY_LFR_N_SWF_P ); - parameter_dump_packet.sy_lfr_n_asm_p[0] = (unsigned char) (DFLT_SY_LFR_N_ASM_P >> 8); + parameter_dump_packet.sy_lfr_n_asm_p[0] = (unsigned char) (DFLT_SY_LFR_N_ASM_P >> SHIFT_1_BYTE); parameter_dump_packet.sy_lfr_n_asm_p[1] = (unsigned char) (DFLT_SY_LFR_N_ASM_P ); parameter_dump_packet.sy_lfr_n_bp_p0 = (unsigned char) DFLT_SY_LFR_N_BP_P0; parameter_dump_packet.sy_lfr_n_bp_p1 = (unsigned char) DFLT_SY_LFR_N_BP_P1; @@ -1455,14 +1481,14 @@ void init_parameter_dump( void ) //************ // FBINS MASKS - for (k=0; k < NB_FBINS_MASKS * NB_BYTES_PER_FBINS_MASK; k++) + for (k=0; k < BYTES_PER_MASKS_SET; k++) { - parameter_dump_packet.sy_lfr_fbins.raw[k] = 0xff; + parameter_dump_packet.sy_lfr_fbins.raw[k] = INT8_ALL_F; } // PAS FILTER PARAMETERS - parameter_dump_packet.pa_rpw_spare8_2 = 0x00; - parameter_dump_packet.spare_sy_lfr_pas_filter_enabled = 0x00; + parameter_dump_packet.pa_rpw_spare8_2 = INIT_CHAR; + parameter_dump_packet.spare_sy_lfr_pas_filter_enabled = INIT_CHAR; parameter_dump_packet.sy_lfr_pas_filter_modulus = DEFAULT_SY_LFR_PAS_FILTER_MODULUS; floatToChar( DEFAULT_SY_LFR_PAS_FILTER_TBAD, parameter_dump_packet.sy_lfr_pas_filter_tbad ); parameter_dump_packet.sy_lfr_pas_filter_offset = DEFAULT_SY_LFR_PAS_FILTER_OFFSET; @@ -1470,9 +1496,9 @@ void init_parameter_dump( void ) floatToChar( DEFAULT_SY_LFR_SC_RW_DELTA_F, parameter_dump_packet.sy_lfr_sc_rw_delta_f ); // LFR_RW_MASK - for (k=0; k < NB_FBINS_MASKS * NB_BYTES_PER_FBINS_MASK; k++) + for (k=0; k < BYTES_PER_MASKS_SET; k++) { - parameter_dump_packet.sy_lfr_rw_mask.raw[k] = 0xff; + parameter_dump_packet.sy_lfr_rw_mask.raw[k] = INT8_ALL_F; } // once the reaction wheels masks have been initialized, they have to be merged with the fbins masks @@ -1481,24 +1507,24 @@ void init_parameter_dump( void ) void init_kcoefficients_dump( void ) { - init_kcoefficients_dump_packet( &kcoefficients_dump_1, 1, 30 ); - init_kcoefficients_dump_packet( &kcoefficients_dump_2, 2, 6 ); + init_kcoefficients_dump_packet( &kcoefficients_dump_1, PKTNR_1, KCOEFF_BLK_NR_PKT1 ); + init_kcoefficients_dump_packet( &kcoefficients_dump_2, PKTNR_2, KCOEFF_BLK_NR_PKT2 ); kcoefficient_node_1.previous = NULL; kcoefficient_node_1.next = NULL; kcoefficient_node_1.sid = TM_CODE_K_DUMP; - kcoefficient_node_1.coarseTime = 0x00; - kcoefficient_node_1.fineTime = 0x00; + kcoefficient_node_1.coarseTime = INIT_CHAR; + kcoefficient_node_1.fineTime = INIT_CHAR; kcoefficient_node_1.buffer_address = (int) &kcoefficients_dump_1; - kcoefficient_node_1.status = 0x00; + kcoefficient_node_1.status = INIT_CHAR; kcoefficient_node_2.previous = NULL; kcoefficient_node_2.next = NULL; kcoefficient_node_2.sid = TM_CODE_K_DUMP; - kcoefficient_node_2.coarseTime = 0x00; - kcoefficient_node_2.fineTime = 0x00; + kcoefficient_node_2.coarseTime = INIT_CHAR; + kcoefficient_node_2.fineTime = INIT_CHAR; kcoefficient_node_2.buffer_address = (int) &kcoefficients_dump_2; - kcoefficient_node_2.status = 0x00; + kcoefficient_node_2.status = INIT_CHAR; } void init_kcoefficients_dump_packet( Packet_TM_LFR_KCOEFFICIENTS_DUMP_t *kcoefficients_dump, unsigned char pkt_nr, unsigned char blk_nr ) @@ -1506,41 +1532,42 @@ void init_kcoefficients_dump_packet( Pac unsigned int k; unsigned int packetLength; - packetLength = blk_nr * 130 + 20 - CCSDS_TC_TM_PACKET_OFFSET; // 4 bytes for the CCSDS header + packetLength = + ((blk_nr * KCOEFF_BLK_SIZE) + BYTE_POS_KCOEFFICIENTS_PARAMETES) - CCSDS_TC_TM_PACKET_OFFSET; // 4 bytes for the CCSDS header kcoefficients_dump->targetLogicalAddress = CCSDS_DESTINATION_ID; kcoefficients_dump->protocolIdentifier = CCSDS_PROTOCOLE_ID; kcoefficients_dump->reserved = CCSDS_RESERVED; kcoefficients_dump->userApplication = CCSDS_USER_APP; - kcoefficients_dump->packetID[0] = (unsigned char) (APID_TM_PARAMETER_DUMP >> 8);; - kcoefficients_dump->packetID[1] = (unsigned char) APID_TM_PARAMETER_DUMP;; + kcoefficients_dump->packetID[0] = (unsigned char) (APID_TM_PARAMETER_DUMP >> SHIFT_1_BYTE); + kcoefficients_dump->packetID[1] = (unsigned char) APID_TM_PARAMETER_DUMP; kcoefficients_dump->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; kcoefficients_dump->packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; - kcoefficients_dump->packetLength[0] = (unsigned char) (packetLength >> 8); + kcoefficients_dump->packetLength[0] = (unsigned char) (packetLength >> SHIFT_1_BYTE); kcoefficients_dump->packetLength[1] = (unsigned char) packetLength; // DATA FIELD HEADER kcoefficients_dump->spare1_pusVersion_spare2 = SPARE1_PUSVERSION_SPARE2; kcoefficients_dump->serviceType = TM_TYPE_K_DUMP; kcoefficients_dump->serviceSubType = TM_SUBTYPE_K_DUMP; kcoefficients_dump->destinationID= TM_DESTINATION_ID_GROUND; - kcoefficients_dump->time[0] = 0x00; - kcoefficients_dump->time[1] = 0x00; - kcoefficients_dump->time[2] = 0x00; - kcoefficients_dump->time[3] = 0x00; - kcoefficients_dump->time[4] = 0x00; - kcoefficients_dump->time[5] = 0x00; + kcoefficients_dump->time[BYTE_0] = INIT_CHAR; + kcoefficients_dump->time[BYTE_1] = INIT_CHAR; + kcoefficients_dump->time[BYTE_2] = INIT_CHAR; + kcoefficients_dump->time[BYTE_3] = INIT_CHAR; + kcoefficients_dump->time[BYTE_4] = INIT_CHAR; + kcoefficients_dump->time[BYTE_5] = INIT_CHAR; kcoefficients_dump->sid = SID_K_DUMP; - kcoefficients_dump->pkt_cnt = 2; - kcoefficients_dump->pkt_nr = pkt_nr; + kcoefficients_dump->pkt_cnt = KCOEFF_PKTCNT; + kcoefficients_dump->pkt_nr = PKTNR_1; kcoefficients_dump->blk_nr = blk_nr; //****************** // SOURCE DATA repeated N times with N in [0 .. PA_LFR_KCOEFF_BLK_NR] // one blk is 2 + 4 * 32 = 130 bytes, 30 blks max in one packet (30 * 130 = 3900) - for (k=0; k<3900; k++) + for (k=0; k<(KCOEFF_BLK_NR_PKT1 * KCOEFF_BLK_SIZE); k++) { - kcoefficients_dump->kcoeff_blks[k] = 0x00; + kcoefficients_dump->kcoeff_blks[k] = INIT_CHAR; } } @@ -1603,12 +1630,12 @@ void increment_seq_counter_destination_i break; } - segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; - sequence_cnt = sequenceCounters_TM_DUMP[ i ] & 0x3fff; + segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << SHIFT_1_BYTE; + sequence_cnt = sequenceCounters_TM_DUMP[ i ] & SEQ_CNT_MASK; new_packet_sequence_control = segmentation_grouping_flag | sequence_cnt ; - packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); + packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> SHIFT_1_BYTE); packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); // increment the sequence counter 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,22 +41,22 @@ int send_tm_lfr_tc_exe_success( ccsdsTel TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_SUCCESS >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_SUCCESS ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_OK; TM.destinationID = TC->sourceID; - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -106,24 +106,24 @@ int send_tm_lfr_tc_exe_inconsistent( ccs TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_INCONSISTENT >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_INCONSISTENT ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_NOK; TM.destinationID = TC->sourceID; - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // - TM.tc_failure_code[0] = (char) (WRONG_APP_DATA >> 8); + TM.tc_failure_code[0] = (char) (WRONG_APP_DATA >> SHIFT_1_BYTE); TM.tc_failure_code[1] = (char) (WRONG_APP_DATA ); TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -174,24 +174,24 @@ 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) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_NOK; TM.destinationID = TC->sourceID; // default destination id - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // - TM.tc_failure_code[0] = (char) (TC_NOT_EXE >> 8); + TM.tc_failure_code[0] = (char) (TC_NOT_EXE >> SHIFT_1_BYTE); TM.tc_failure_code[1] = (char) (TC_NOT_EXE ); TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -242,24 +242,24 @@ int send_tm_lfr_tc_exe_not_implemented( TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_NOK; TM.destinationID = TC->sourceID; // default destination id - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // - TM.tc_failure_code[0] = (char) (FUNCT_NOT_IMPL >> 8); + TM.tc_failure_code[0] = (char) (FUNCT_NOT_IMPL >> SHIFT_1_BYTE); TM.tc_failure_code[1] = (char) (FUNCT_NOT_IMPL ); TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -308,24 +308,24 @@ int send_tm_lfr_tc_exe_error( ccsdsTelec TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_ERROR >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_ERROR ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_NOK; TM.destinationID = TC->sourceID; // default destination id - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // - TM.tc_failure_code[0] = (char) (FAIL_DETECTED >> 8); + TM.tc_failure_code[0] = (char) (FAIL_DETECTED >> SHIFT_1_BYTE); TM.tc_failure_code[1] = (char) (FAIL_DETECTED ); TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -376,8 +376,8 @@ int send_tm_lfr_tc_exe_corrupted(ccsdsTe unsigned int estimatedPacketLength; unsigned char *packetDataField; - packetLength = (TC->packetLength[0] * 256) + TC->packetLength[1]; // compute the packet length parameter written in the TC - estimatedPacketLength = (unsigned int) (currentTC_LEN_RCV[0] * 256 + currentTC_LEN_RCV[1]); + packetLength = (TC->packetLength[0] * CONST_256) + TC->packetLength[1]; // compute the packet length parameter written in the TC + estimatedPacketLength = (unsigned int) ((currentTC_LEN_RCV[0] * CONST_256) + currentTC_LEN_RCV[1]); packetDataField = (unsigned char *) &TC->headerFlag_pusVersion_Ack; // get the beginning of the data field TM.targetLogicalAddress = CCSDS_DESTINATION_ID; @@ -385,24 +385,24 @@ int send_tm_lfr_tc_exe_corrupted(ccsdsTe TM.reserved = DEFAULT_RESERVED; TM.userApplication = CCSDS_USER_APP; // PACKET HEADER - TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> 8); + TM.packetID[0] = (unsigned char) (APID_TM_TC_EXE >> SHIFT_1_BYTE); 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[0] = (unsigned char) (PACKET_LENGTH_TC_EXE_CORRUPTED >> SHIFT_1_BYTE); TM.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_EXE_CORRUPTED ); // DATA FIELD HEADER TM.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; TM.serviceType = TM_TYPE_TC_EXE; TM.serviceSubType = TM_SUBTYPE_EXE_NOK; TM.destinationID = destinationID; - TM.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - TM.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - TM.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - TM.time[3] = (unsigned char) (time_management_regs->coarse_time); - TM.time[4] = (unsigned char) (time_management_regs->fine_time>>8); - TM.time[5] = (unsigned char) (time_management_regs->fine_time); + TM.time[BYTE_0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); + TM.time[BYTE_1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); + TM.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); + TM.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); + TM.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); + TM.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); // - TM.tc_failure_code[0] = (unsigned char) (CORRUPTED >> 8); + TM.tc_failure_code[0] = (unsigned char) (CORRUPTED >> SHIFT_1_BYTE); TM.tc_failure_code[1] = (unsigned char) (CORRUPTED ); TM.telecommand_pkt_id[0] = TC->packetID[0]; TM.telecommand_pkt_id[1] = TC->packetID[1]; @@ -494,12 +494,12 @@ void increment_seq_counter_destination_i break; } - segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; - sequence_cnt = sequenceCounters_TC_EXE[ i ] & 0x3fff; + segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << SHIFT_1_BYTE; + sequence_cnt = sequenceCounters_TC_EXE[ i ] & SEQ_CNT_MASK; new_packet_sequence_control = segmentation_grouping_flag | sequence_cnt ; - packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); + packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> SHIFT_1_BYTE); packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); // increment the sequence counter diff --git a/src/wf_handler.c b/src/wf_handler.c --- a/src/wf_handler.c +++ b/src/wf_handler.c @@ -58,13 +58,13 @@ ring_node * getRingNodeToSendCWF( unsign node = NULL; switch ( frequencyChannel ) { - case 1: + case CHANNELF1: node = ring_node_to_send_cwf_f1; break; - case 2: + case CHANNELF2: node = ring_node_to_send_cwf_f2; break; - case 3: + case CHANNELF3: node = ring_node_to_send_cwf_f3; break; default: @@ -80,13 +80,13 @@ ring_node * getRingNodeToSendSWF( unsign node = NULL; switch ( frequencyChannel ) { - case 0: + case CHANNELF0: node = ring_node_to_send_swf_f0; break; - case 1: + case CHANNELF1: node = ring_node_to_send_swf_f1; break; - case 2: + case CHANNELF2: node = ring_node_to_send_swf_f2; break; default: @@ -115,20 +115,20 @@ inline void waveforms_isr_f3( void ) { // in modes other than STANDBY and BURST, send the CWF_F3 data //*** // F3 - if ( (waveform_picker_regs->status & 0xc0) != 0x00 ) { // [1100 0000] check the f3 full bits + if ( (waveform_picker_regs->status & BITS_WFP_STATUS_F3) != INIT_CHAR ) { // [1100 0000] check the f3 full bits ring_node_to_send_cwf_f3 = current_ring_node_f3->previous; current_ring_node_f3 = current_ring_node_f3->next; - if ((waveform_picker_regs->status & 0x40) == 0x40){ // [0100 0000] f3 buffer 0 is full + if ((waveform_picker_regs->status & BIT_WFP_BUF_F3_0) == BIT_WFP_BUF_F3_0){ // [0100 0000] f3 buffer 0 is full ring_node_to_send_cwf_f3->coarseTime = waveform_picker_regs->f3_0_coarse_time; ring_node_to_send_cwf_f3->fineTime = waveform_picker_regs->f3_0_fine_time; waveform_picker_regs->addr_data_f3_0 = current_ring_node_f3->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00008840; // [1000 1000 0100 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F3_0; // [1000 1000 0100 0000] } - else if ((waveform_picker_regs->status & 0x80) == 0x80){ // [1000 0000] f3 buffer 1 is full + else if ((waveform_picker_regs->status & BIT_WFP_BUF_F3_1) == BIT_WFP_BUF_F3_1){ // [1000 0000] f3 buffer 1 is full ring_node_to_send_cwf_f3->coarseTime = waveform_picker_regs->f3_1_coarse_time; ring_node_to_send_cwf_f3->fineTime = waveform_picker_regs->f3_1_fine_time; waveform_picker_regs->addr_data_f3_1 = current_ring_node_f3->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00008880; // [1000 1000 1000 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F3_1; // [1000 1000 1000 0000] } if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ); @@ -142,12 +142,11 @@ inline void waveforms_isr_burst( void ) unsigned char status; rtems_status_code spare_status; - status = (waveform_picker_regs->status & 0x30) >> 4; // [0011 0000] get the status bits for f2 - + status = (waveform_picker_regs->status & BITS_WFP_STATUS_F2) >> SHIFT_WFP_STATUS_F2; // [0011 0000] get the status bits for f2 switch(status) { - case 1: + case BIT_WFP_BUFFER_0: ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_0_coarse_time; @@ -157,9 +156,9 @@ inline void waveforms_isr_burst( void ) if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ); } - waveform_picker_regs->status = waveform_picker_regs->status & 0x00004410; // [0100 0100 0001 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F2_0; // [0100 0100 0001 0000] break; - case 2: + case BIT_WFP_BUFFER_1: ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_1_coarse_time; @@ -169,7 +168,7 @@ inline void waveforms_isr_burst( void ) if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ); } - waveform_picker_regs->status = waveform_picker_regs->status & 0x00004420; // [0100 0100 0010 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F2_1; // [0100 0100 0010 0000] break; default: break; @@ -182,26 +181,26 @@ inline void waveform_isr_normal_sbm1_sbm //*** // F0 - if ( (waveform_picker_regs->status & 0x03) != 0x00 ) // [0000 0011] check the f0 full bits + if ( (waveform_picker_regs->status & BITS_WFP_STATUS_F0) != INIT_CHAR ) // [0000 0011] check the f0 full bits { swf0_ready_flag_f1 = true; swf0_ready_flag_f2 = true; ring_node_to_send_swf_f0 = current_ring_node_f0->previous; current_ring_node_f0 = current_ring_node_f0->next; - if ( (waveform_picker_regs->status & 0x01) == 0x01) + if ( (waveform_picker_regs->status & BIT_WFP_BUFFER_0) == BIT_WFP_BUFFER_0) { ring_node_to_send_swf_f0->coarseTime = waveform_picker_regs->f0_0_coarse_time; ring_node_to_send_swf_f0->fineTime = waveform_picker_regs->f0_0_fine_time; waveform_picker_regs->addr_data_f0_0 = current_ring_node_f0->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00001101; // [0001 0001 0000 0001] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F0_0; // [0001 0001 0000 0001] } - else if ( (waveform_picker_regs->status & 0x02) == 0x02) + else if ( (waveform_picker_regs->status & BIT_WFP_BUFFER_1) == BIT_WFP_BUFFER_1) { ring_node_to_send_swf_f0->coarseTime = waveform_picker_regs->f0_1_coarse_time; ring_node_to_send_swf_f0->fineTime = waveform_picker_regs->f0_1_fine_time; waveform_picker_regs->addr_data_f0_1 = current_ring_node_f0->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00001102; // [0001 0001 0000 0010] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F0_1; // [0001 0001 0000 0010] } // send an event to the WFRM task for resynchro activities status = rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_SWF_RESYNCH ); @@ -209,23 +208,23 @@ inline void waveform_isr_normal_sbm1_sbm //*** // F1 - if ( (waveform_picker_regs->status & 0x0c) != 0x00 ) { // [0000 1100] check the f1 full bits + if ( (waveform_picker_regs->status & 0x0c) != 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; - if ( (waveform_picker_regs->status & 0x04) == 0x04) + if ( (waveform_picker_regs->status & BIT_WFP_BUF_F1_0) == BIT_WFP_BUF_F1_0) { ring_node_to_send_cwf_f1->coarseTime = waveform_picker_regs->f1_0_coarse_time; ring_node_to_send_cwf_f1->fineTime = waveform_picker_regs->f1_0_fine_time; waveform_picker_regs->addr_data_f1_0 = current_ring_node_f1->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00002204; // [0010 0010 0000 0100] f1 bits = 0 + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F1_0; // [0010 0010 0000 0100] f1 bits = 0 } - else if ( (waveform_picker_regs->status & 0x08) == 0x08) + else if ( (waveform_picker_regs->status & BIT_WFP_BUF_F1_1) == BIT_WFP_BUF_F1_1) { ring_node_to_send_cwf_f1->coarseTime = waveform_picker_regs->f1_1_coarse_time; ring_node_to_send_cwf_f1->fineTime = waveform_picker_regs->f1_1_fine_time; waveform_picker_regs->addr_data_f1_1 = current_ring_node_f1->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00002208; // [0010 0010 0000 1000] f1 bits = 0 + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F1_1; // [0010 0010 0000 1000] f1 bits = 0 } // (2) send an event for the the CWF1 task for transmission (and snapshot extraction if needed) status = rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_NORM_S1_S2 ); @@ -233,24 +232,24 @@ inline void waveform_isr_normal_sbm1_sbm //*** // F2 - if ( (waveform_picker_regs->status & 0x30) != 0x00 ) { // [0011 0000] check the f2 full bit + if ( (waveform_picker_regs->status & BITS_WFP_STATUS_F2) != INIT_CHAR ) { // [0011 0000] check the f2 full bit // (1) change the receiving buffer for the waveform picker ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; ring_node_to_send_cwf_f2->sid = SID_SBM2_CWF_F2; current_ring_node_f2 = current_ring_node_f2->next; - if ( (waveform_picker_regs->status & 0x10) == 0x10) + if ( (waveform_picker_regs->status & BIT_WFP_BUF_F2_0) == BIT_WFP_BUF_F2_0) { ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_0_coarse_time; ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_0_fine_time; waveform_picker_regs->addr_data_f2_0 = current_ring_node_f2->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00004410; // [0100 0100 0001 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F2_0; // [0100 0100 0001 0000] } - else if ( (waveform_picker_regs->status & 0x20) == 0x20) + else if ( (waveform_picker_regs->status & BIT_WFP_BUF_F2_1) == BIT_WFP_BUF_F2_1) { ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_1_coarse_time; ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_1_fine_time; waveform_picker_regs->addr_data_f2_1 = current_ring_node_f2->buffer_address; - waveform_picker_regs->status = waveform_picker_regs->status & 0x00004420; // [0100 0100 0010 0000] + waveform_picker_regs->status = waveform_picker_regs->status & RST_WFP_F2_1; // [0100 0100 0010 0000] } // (2) send an event for the waveforms transmission status = rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_NORM_S1_S2 ); @@ -283,9 +282,9 @@ rtems_isr waveforms_isr( rtems_vector_nu //************************************************* // copy the status bits in the housekeeping packets housekeeping_packet.hk_lfr_vhdl_iir_cal = - (unsigned char) ((waveform_picker_regs->status & 0xff00) >> 8); + (unsigned char) ((waveform_picker_regs->status & BYTE0_MASK) >> SHIFT_1_BYTE); - if ( (waveform_picker_regs->status & 0xff00) != 0x00) // [1111 1111 0000 0000] check the error bits + if ( (waveform_picker_regs->status & BYTE0_MASK) != INIT_CHAR) // [1111 1111 0000 0000] check the error bits { spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_10 ); } @@ -397,12 +396,12 @@ rtems_task cwf3_task(rtems_task_argument // init the ring_node_cwf3_light structure ring_node_cwf3_light.buffer_address = (int) wf_cont_f3_light; - ring_node_cwf3_light.coarseTime = 0x00; - ring_node_cwf3_light.fineTime = 0x00; + ring_node_cwf3_light.coarseTime = INIT_CHAR; + ring_node_cwf3_light.fineTime = INIT_CHAR; ring_node_cwf3_light.next = NULL; ring_node_cwf3_light.previous = NULL; ring_node_cwf3_light.sid = SID_NORM_CWF_F3; - ring_node_cwf3_light.status = 0x00; + ring_node_cwf3_light.status = INIT_CHAR; BOOT_PRINTF("in CWF3 ***\n"); @@ -413,8 +412,8 @@ rtems_task cwf3_task(rtems_task_argument if ( (lfrCurrentMode == LFR_MODE_NORMAL) || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode==LFR_MODE_SBM2) ) { - ring_node_to_send_cwf = getRingNodeToSendCWF( 3 ); - if ( (parameter_dump_packet.sy_lfr_n_cwf_long_f3 & 0x01) == 0x01) + ring_node_to_send_cwf = getRingNodeToSendCWF( CHANNELF3 ); + if ( (parameter_dump_packet.sy_lfr_n_cwf_long_f3 & BIT_CWF_LONG_F3) == BIT_CWF_LONG_F3) { PRINTF("send CWF_LONG_F3\n"); ring_node_to_send_cwf_f3->sid = SID_NORM_CWF_LONG_F3; @@ -452,7 +451,7 @@ rtems_task cwf2_task(rtems_task_argument ring_node *ring_node_to_send; unsigned long long int acquisitionTimeF0_asLong; - acquisitionTimeF0_asLong = 0x00; + acquisitionTimeF0_asLong = INIT_CHAR; status = get_message_queue_id_send( &queue_id ); if (status != RTEMS_SUCCESSFUL) @@ -467,7 +466,7 @@ rtems_task cwf2_task(rtems_task_argument status = rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ); rtems_event_receive( RTEMS_EVENT_MODE_NORM_S1_S2 | RTEMS_EVENT_MODE_BURST, RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); - ring_node_to_send = getRingNodeToSendCWF( 2 ); + ring_node_to_send = getRingNodeToSendCWF( CHANNELF2 ); if (event_out == RTEMS_EVENT_MODE_BURST) { // data are sent whatever the transition time status = rtems_message_queue_send( queue_id, &ring_node_to_send, sizeof( ring_node* ) ); @@ -487,7 +486,7 @@ rtems_task cwf2_task(rtems_task_argument { ring_node_to_send_swf_f2 = ring_node_to_send_cwf_f2; // extract the snapshot - build_snapshot_from_ring( ring_node_to_send_swf_f2, 2, acquisitionTimeF0_asLong, + build_snapshot_from_ring( ring_node_to_send_swf_f2, CHANNELF2, acquisitionTimeF0_asLong, &ring_node_swf2_extracted, swf2_extracted ); extractSWF2 = false; swf2_ready = true; // once the snapshot at f2 is ready the CWF1 task will send an event to WFRM @@ -575,7 +574,7 @@ rtems_task swbd_task(rtems_task_argument rtems_event_set event_out; unsigned long long int acquisitionTimeF0_asLong; - acquisitionTimeF0_asLong = 0x00; + acquisitionTimeF0_asLong = INIT_CHAR; BOOT_PRINTF("in SWBD ***\n") @@ -656,6 +655,7 @@ int send_waveform_CWF3_light( ring_node */ unsigned int i; + unsigned int j; int ret; rtems_status_code status; @@ -674,12 +674,10 @@ int send_waveform_CWF3_light( ring_node for ( i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++) { sample = (char*) &dataPtr[ (i * NB_WORDS_SWF_BLK) ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) ] = sample[ 0 ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 1 ] = sample[ 1 ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 2 ] = sample[ 2 ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 3 ] = sample[ 3 ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 4 ] = sample[ 4 ]; - wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 5 ] = sample[ 5 ]; + for (j=0; j < CWF_BLK_SIZE; j++) + { + wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + j] = sample[ j ]; + } } // SEND PACKET @@ -695,57 +693,57 @@ void compute_acquisition_time( unsigned unsigned int sid, unsigned char pa_lfr_pkt_nr, unsigned char * acquisitionTime ) { unsigned long long int acquisitionTimeAsLong; - unsigned char localAcquisitionTime[6]; + unsigned char localAcquisitionTime[BYTES_PER_TIME]; double deltaT; - deltaT = 0.; + deltaT = INIT_FLOAT; - localAcquisitionTime[0] = (unsigned char) ( coarseTime >> 24 ); - localAcquisitionTime[1] = (unsigned char) ( coarseTime >> 16 ); - localAcquisitionTime[2] = (unsigned char) ( coarseTime >> 8 ); - localAcquisitionTime[3] = (unsigned char) ( coarseTime ); - localAcquisitionTime[4] = (unsigned char) ( fineTime >> 8 ); - localAcquisitionTime[5] = (unsigned char) ( fineTime ); + localAcquisitionTime[BYTE_0] = (unsigned char) ( coarseTime >> SHIFT_3_BYTES ); + localAcquisitionTime[BYTE_1] = (unsigned char) ( coarseTime >> SHIFT_2_BYTES ); + localAcquisitionTime[BYTE_2] = (unsigned char) ( coarseTime >> SHIFT_1_BYTE ); + localAcquisitionTime[BYTE_3] = (unsigned char) ( coarseTime ); + localAcquisitionTime[BYTE_4] = (unsigned char) ( fineTime >> SHIFT_1_BYTE ); + localAcquisitionTime[BYTE_5] = (unsigned char) ( fineTime ); - acquisitionTimeAsLong = ( (unsigned long long int) localAcquisitionTime[0] << 40 ) - + ( (unsigned long long int) localAcquisitionTime[1] << 32 ) - + ( (unsigned long long int) localAcquisitionTime[2] << 24 ) - + ( (unsigned long long int) localAcquisitionTime[3] << 16 ) - + ( (unsigned long long int) localAcquisitionTime[4] << 8 ) - + ( (unsigned long long int) localAcquisitionTime[5] ); + acquisitionTimeAsLong = ( (unsigned long long int) localAcquisitionTime[BYTE_0] << SHIFT_5_BYTES ) + + ( (unsigned long long int) localAcquisitionTime[BYTE_1] << SHIFT_4_BYTES ) + + ( (unsigned long long int) localAcquisitionTime[BYTE_2] << SHIFT_3_BYTES ) + + ( (unsigned long long int) localAcquisitionTime[BYTE_3] << SHIFT_2_BYTES ) + + ( (unsigned long long int) localAcquisitionTime[BYTE_4] << SHIFT_1_BYTE ) + + ( (unsigned long long int) localAcquisitionTime[BYTE_5] ); switch( sid ) { case SID_NORM_SWF_F0: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * 65536. / 24576. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * T0_IN_FINETIME ; break; case SID_NORM_SWF_F1: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * 65536. / 4096. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * T1_IN_FINETIME ; break; case SID_NORM_SWF_F2: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * 65536. / 256. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_304 * T2_IN_FINETIME ; break; case SID_SBM1_CWF_F1: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * 65536. / 4096. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * T1_IN_FINETIME ; break; case SID_SBM2_CWF_F2: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * 65536. / 256. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * T2_IN_FINETIME ; break; case SID_BURST_CWF_F2: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * 65536. / 256. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * T2_IN_FINETIME ; break; case SID_NORM_CWF_F3: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF_SHORT_F3 * 65536. / 16. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF_SHORT_F3 * T3_IN_FINETIME ; break; case SID_NORM_CWF_LONG_F3: - deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * 65536. / 16. ; + deltaT = ( (double ) (pa_lfr_pkt_nr) ) * BLK_NR_CWF * T3_IN_FINETIME ; break; default: @@ -756,12 +754,12 @@ void compute_acquisition_time( unsigned acquisitionTimeAsLong = acquisitionTimeAsLong + (unsigned long long int) deltaT; // - acquisitionTime[0] = (unsigned char) (acquisitionTimeAsLong >> 40); - acquisitionTime[1] = (unsigned char) (acquisitionTimeAsLong >> 32); - acquisitionTime[2] = (unsigned char) (acquisitionTimeAsLong >> 24); - acquisitionTime[3] = (unsigned char) (acquisitionTimeAsLong >> 16); - acquisitionTime[4] = (unsigned char) (acquisitionTimeAsLong >> 8 ); - acquisitionTime[5] = (unsigned char) (acquisitionTimeAsLong ); + acquisitionTime[BYTE_0] = (unsigned char) (acquisitionTimeAsLong >> SHIFT_5_BYTES); + acquisitionTime[BYTE_1] = (unsigned char) (acquisitionTimeAsLong >> SHIFT_4_BYTES); + acquisitionTime[BYTE_2] = (unsigned char) (acquisitionTimeAsLong >> SHIFT_3_BYTES); + acquisitionTime[BYTE_3] = (unsigned char) (acquisitionTimeAsLong >> SHIFT_2_BYTES); + acquisitionTime[BYTE_4] = (unsigned char) (acquisitionTimeAsLong >> SHIFT_1_BYTE ); + acquisitionTime[BYTE_5] = (unsigned char) (acquisitionTimeAsLong ); } @@ -788,10 +786,10 @@ void build_snapshot_from_ring( ring_node unsigned int deltaT_F1; unsigned long long int deltaT_F2; - deltaT_F0 = 2731; // (2048. / 24576. / 2.) * 65536. = 2730.667; - deltaT_F1 = 16384; // (2048. / 4096. / 2.) * 65536. = 16384; - deltaT_F2 = 262144; // (2048. / 256. / 2.) * 65536. = 262144; - sampleOffset_asLong = 0x00; + deltaT_F0 = DELTAT_F0; + deltaT_F1 = DELTAF_F1; + deltaT_F2 = DELTAF_F2; + sampleOffset_asLong = INIT_CHAR; // (1) get the f0 acquisition time => the value is passed in argument @@ -801,22 +799,22 @@ void build_snapshot_from_ring( ring_node // (3) compute the acquisition time of the current snapshot switch(frequencyChannel) { - case 1: // 1 is for F1 = 4096 Hz + case CHANNELF1: // 1 is for F1 = 4096 Hz acquisitionTime_asLong = centerTime_asLong - deltaT_F1; nb_ring_nodes = NB_RING_NODES_F1; - frequency_asLong = 4096; - nbTicksPerSample_asLong = 16; // 65536 / 4096; + frequency_asLong = FREQ_F1; + nbTicksPerSample_asLong = TICKS_PER_T1; // 65536 / 4096; break; - case 2: // 2 is for F2 = 256 Hz + case CHANNELF2: // 2 is for F2 = 256 Hz acquisitionTime_asLong = centerTime_asLong - deltaT_F2; nb_ring_nodes = NB_RING_NODES_F2; - frequency_asLong = 256; - nbTicksPerSample_asLong = 256; // 65536 / 256; + frequency_asLong = FREQ_F2; + nbTicksPerSample_asLong = TICKS_PER_T2; // 65536 / 256; break; default: acquisitionTime_asLong = centerTime_asLong; - frequency_asLong = 256; - nbTicksPerSample_asLong = 256; + frequency_asLong = FREQ_F2; + nbTicksPerSample_asLong = TICKS_PER_T2; break; } @@ -835,30 +833,30 @@ void build_snapshot_from_ring( ring_node } // (5) compute the number of samples to take in the current buffer - sampleOffset_asLong = ((acquisitionTime_asLong - bufferAcquisitionTime_asLong) * frequency_asLong ) >> 16; + sampleOffset_asLong = ((acquisitionTime_asLong - bufferAcquisitionTime_asLong) * frequency_asLong ) >> SHIFT_2_BYTES; nbSamplesPart1_asLong = NB_SAMPLES_PER_SNAPSHOT - sampleOffset_asLong; //PRINTF2("sampleOffset_asLong = %lld, nbSamplesPart1_asLong = %lld\n", sampleOffset_asLong, nbSamplesPart1_asLong); - // (6) compute the final acquisition time - acquisitionTime_asLong = bufferAcquisitionTime_asLong + - sampleOffset_asLong * nbTicksPerSample_asLong; + // (6) compute the final acquisition time + acquisitionTime_asLong = bufferAcquisitionTime_asLong + + (sampleOffset_asLong * nbTicksPerSample_asLong); // (7) copy the acquisition time at the beginning of the extrated snapshot ptr1 = (unsigned char*) &acquisitionTime_asLong; // fine time ptr2 = (unsigned char*) &ring_node_swf_extracted->fineTime; - ptr2[2] = ptr1[ 4 + 2 ]; - ptr2[3] = ptr1[ 5 + 2 ]; + ptr2[BYTE_2] = ptr1[ BYTE_4 + OFFSET_2_BYTES ]; + ptr2[BYTE_3] = ptr1[ BYTE_5 + OFFSET_2_BYTES ]; // coarse time ptr2 = (unsigned char*) &ring_node_swf_extracted->coarseTime; - ptr2[0] = ptr1[ 0 + 2 ]; - ptr2[1] = ptr1[ 1 + 2 ]; - ptr2[2] = ptr1[ 2 + 2 ]; - ptr2[3] = ptr1[ 3 + 2 ]; + ptr2[BYTE_0] = ptr1[ BYTE_0 + OFFSET_2_BYTES ]; + ptr2[BYTE_1] = ptr1[ BYTE_1 + OFFSET_2_BYTES ]; + ptr2[BYTE_2] = ptr1[ BYTE_2 + OFFSET_2_BYTES ]; + ptr2[BYTE_3] = ptr1[ BYTE_3 + OFFSET_2_BYTES ]; // re set the synchronization bit timeCharPtr = (unsigned char*) &ring_node_to_send->coarseTime; - ptr2[0] = ptr2[0] | (timeCharPtr[0] & 0x80); // [1000 0000] + ptr2[0] = ptr2[0] | (timeCharPtr[0] & SYNC_BIT); // [1000 0000] if ( (nbSamplesPart1_asLong >= NB_SAMPLES_PER_SNAPSHOT) | (nbSamplesPart1_asLong < 0) ) { @@ -895,15 +893,15 @@ double computeCorrection( unsigned char acquisitionTime = get_acquisition_time( timePtr ); // compute center time - centerTime = acquisitionTime + 2731; // (2048. / 24576. / 2.) * 65536. = 2730.667; - previousTick = centerTime - (centerTime & 0xffff); - nextTick = previousTick + 65536; + centerTime = acquisitionTime + DELTAT_F0; // (2048. / 24576. / 2.) * 65536. = 2730.667; + previousTick = centerTime - (centerTime & INT16_ALL_F); + nextTick = previousTick + TICKS_PER_S; deltaPreviousTick = centerTime - previousTick; deltaNextTick = nextTick - centerTime; - deltaPrevious_ms = ((double) deltaPreviousTick) / 65536. * 1000.; - deltaNext_ms = ((double) deltaNextTick) / 65536. * 1000.; + deltaPrevious_ms = (((double) deltaPreviousTick) / TICKS_PER_S) * MS_PER_S; + deltaNext_ms = (((double) deltaNextTick) / TICKS_PER_S) * MS_PER_S; PRINTF2(" delta previous = %.3f ms, delta next = %.2f ms\n", deltaPrevious_ms, deltaNext_ms); @@ -911,12 +909,12 @@ double computeCorrection( unsigned char if (deltaPreviousTick > deltaNextTick) { // the snapshot center is just before the second => increase delta_snapshot - correctionInF2 = + (deltaNext_ms * 256. / 1000. ); + correctionInF2 = + (deltaNext_ms * FREQ_F2 / MS_PER_S ); } else { // the snapshot center is just after the second => decrease delta_snapshot - correctionInF2 = - (deltaPrevious_ms * 256. / 1000. ); + correctionInF2 = - (deltaPrevious_ms * FREQ_F2 / MS_PER_S ); } PRINTF1(" correctionInF2 = %.2f\n", correctionInF2); @@ -930,24 +928,24 @@ void applyCorrection( double correction if (correction >= 0.) { - if ( (1. > correction) && (correction > 0.5) ) + if ( (ONE_TICK_CORR_INTERVAL_0_MIN < correction) && (correction < ONE_TICK_CORR_INTERVAL_0_MAX) ) { - correctionInt = 1; + correctionInt = ONE_TICK_CORR; } else { - correctionInt = 2 * floor(correction); + correctionInt = CORR_MULT * floor(correction); } } else { - if ( (-1. < correction) && (correction < -0.5) ) + if ( (ONE_TICK_CORR_INTERVAL_1_MIN < correction) && (correction < ONE_TICK_CORR_INTERVAL_1_MAX) ) { - correctionInt = -1; + correctionInt = -ONE_TICK_CORR; } else { - correctionInt = 2 * ceil(correction); + correctionInt = CORR_MULT * ceil(correction); } } waveform_picker_regs->delta_snapshot = waveform_picker_regs->delta_snapshot + correctionInt; @@ -964,7 +962,7 @@ void snapshot_resynchronization( unsigne * */ - static double correction = 0.; + static double correction = INIT_FLOAT; static resynchro_state state = MEASURE; static unsigned int nbSnapshots = 0; @@ -1015,7 +1013,7 @@ void reset_wfp_burst_enable( void ) */ // [1000 000] burst f2, f1, f0 enable f3, f2, f1, f0 - waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable & 0x80; + waveform_picker_regs->run_burst_enable = waveform_picker_regs->run_burst_enable & RST_BITS_RUN_BURST_EN; } void reset_wfp_status( void ) @@ -1026,7 +1024,7 @@ void reset_wfp_status( void ) * */ - waveform_picker_regs->status = 0xffff; + waveform_picker_regs->status = INT16_ALL_F; } void reset_wfp_buffer_addresses( void ) @@ -1091,13 +1089,13 @@ void reset_waveform_picker_regs( void ) DEBUG_PRINTF1("delta_f1 %x\n", waveform_picker_regs->delta_f1); DEBUG_PRINTF1("delta_f2 %x\n", waveform_picker_regs->delta_f2); // 2688 = 8 * 336 - waveform_picker_regs->nb_data_by_buffer = 0xa7f; // 0x30 *** 2688 - 1 => nb samples -1 - waveform_picker_regs->snapshot_param = 0xa80; // 0x34 *** 2688 => nb samples - waveform_picker_regs->start_date = 0x7fffffff; // 0x38 + waveform_picker_regs->nb_data_by_buffer = DFLT_WFP_NB_DATA_BY_BUFFER; // 0x30 *** 2688 - 1 => nb samples -1 + waveform_picker_regs->snapshot_param = DFLT_WFP_SNAPSHOT_PARAM; // 0x34 *** 2688 => nb samples + waveform_picker_regs->start_date = COARSE_TIME_MASK; // // coarse time and fine time registers are not initialized, they are volatile // - waveform_picker_regs->buffer_length = 0x1f8;// buffer length in burst = 3 * 2688 / 16 = 504 = 0x1f8 + waveform_picker_regs->buffer_length = DFLT_WFP_BUFFER_LENGTH; // buffer length in burst = 3 * 2688 / 16 = 504 = 0x1f8 } void set_wfp_data_shaping( void ) @@ -1117,12 +1115,12 @@ void set_wfp_data_shaping( void ) data_shaping = parameter_dump_packet.sy_lfr_common_parameters; waveform_picker_regs->data_shaping = - ( (data_shaping & 0x20) >> 5 ) // BW - + ( (data_shaping & 0x10) >> 3 ) // SP0 - + ( (data_shaping & 0x08) >> 1 ) // SP1 - + ( (data_shaping & 0x04) << 1 ) // R0 - + ( (data_shaping & 0x02) << 3 ) // R1 - + ( (data_shaping & 0x01) << 5 ); // R2 + ( (data_shaping & BIT_5) >> SHIFT_5_BITS ) // BW + + ( (data_shaping & BIT_4) >> SHIFT_3_BITS ) // SP0 + + ( (data_shaping & BIT_3) >> 1 ) // SP1 + + ( (data_shaping & BIT_2) << 1 ) // R0 + + ( (data_shaping & BIT_1) << SHIFT_3_BITS ) // R1 + + ( (data_shaping & BIT_0) << SHIFT_5_BITS ); // R2 } void set_wfp_burst_enable_register( unsigned char mode ) @@ -1141,15 +1139,15 @@ void set_wfp_burst_enable_register( unsi case LFR_MODE_NORMAL: case LFR_MODE_SBM1: case LFR_MODE_SBM2: - waveform_picker_regs->run_burst_enable = 0x60; // [0110 0000] enable f2 and f1 burst + 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 break; case LFR_MODE_BURST: - waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled + 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 break; default: - waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled + waveform_picker_regs->run_burst_enable = INIT_CHAR; // [0000 0000] no burst enabled, no waveform enabled break; } } @@ -1167,10 +1165,10 @@ void set_wfp_delta_snapshot( void ) unsigned int delta_snapshot; unsigned int delta_snapshot_in_T2; - delta_snapshot = parameter_dump_packet.sy_lfr_n_swf_p[0]*256 + delta_snapshot = (parameter_dump_packet.sy_lfr_n_swf_p[0] * CONST_256) + parameter_dump_packet.sy_lfr_n_swf_p[1]; - delta_snapshot_in_T2 = delta_snapshot * 256; + delta_snapshot_in_T2 = delta_snapshot * FREQ_F2; waveform_picker_regs->delta_snapshot = delta_snapshot_in_T2 - 1; // max 4 bytes } @@ -1181,11 +1179,11 @@ void set_wfp_delta_f0_f0_2( void ) float delta_f0_in_float; delta_snapshot = waveform_picker_regs->delta_snapshot; - nb_samples_per_snapshot = parameter_dump_packet.sy_lfr_n_swf_l[0] * 256 + parameter_dump_packet.sy_lfr_n_swf_l[1]; - delta_f0_in_float = nb_samples_per_snapshot / 2. * ( 1. / 256. - 1. / 24576.) * 256.; + nb_samples_per_snapshot = (parameter_dump_packet.sy_lfr_n_swf_l[0] * CONST_256) + parameter_dump_packet.sy_lfr_n_swf_l[1]; + delta_f0_in_float = (nb_samples_per_snapshot / 2.) * ( (1. / FREQ_F2) - (1. / FREQ_F0) ) * FREQ_F2; waveform_picker_regs->delta_f0 = delta_snapshot - floor( delta_f0_in_float ); - waveform_picker_regs->delta_f0_2 = 0x30; // 48 = 11 0000, max 7 bits + waveform_picker_regs->delta_f0_2 = DFLT_WFP_DELTA_F0_2; // 48 = 11 0000, max 7 bits } void set_wfp_delta_f1( void ) @@ -1205,8 +1203,8 @@ void set_wfp_delta_f1( void ) float delta_f1_in_float; delta_snapshot = waveform_picker_regs->delta_snapshot; - nb_samples_per_snapshot = parameter_dump_packet.sy_lfr_n_swf_l[0] * 256 + parameter_dump_packet.sy_lfr_n_swf_l[1]; - delta_f1_in_float = nb_samples_per_snapshot / 2. * ( 1. / 256. - 1. / 4096.) * 256.; + nb_samples_per_snapshot = (parameter_dump_packet.sy_lfr_n_swf_l[0] * CONST_256) + parameter_dump_packet.sy_lfr_n_swf_l[1]; + delta_f1_in_float = (nb_samples_per_snapshot / 2.) * ( (1. / FREQ_F2) - (1. / FREQ_F1) ) * FREQ_F2; waveform_picker_regs->delta_f1 = delta_snapshot - floor( delta_f1_in_float ); } @@ -1228,9 +1226,9 @@ void set_wfp_delta_f2( void ) // param unsigned int nb_samples_per_snapshot; delta_snapshot = waveform_picker_regs->delta_snapshot; - nb_samples_per_snapshot = parameter_dump_packet.sy_lfr_n_swf_l[0] * 256 + parameter_dump_packet.sy_lfr_n_swf_l[1]; + nb_samples_per_snapshot = (parameter_dump_packet.sy_lfr_n_swf_l[0] * CONST_256) + parameter_dump_packet.sy_lfr_n_swf_l[1]; - waveform_picker_regs->delta_f2 = delta_snapshot - nb_samples_per_snapshot / 2 - 1; + waveform_picker_regs->delta_f2 = delta_snapshot - (nb_samples_per_snapshot / 2) - 1; } //***************** @@ -1289,12 +1287,12 @@ void increment_seq_counter_source_id( un if (sequence_cnt != NULL) { - segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; - *sequence_cnt = (*sequence_cnt) & 0x3fff; + segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << SHIFT_1_BYTE; + *sequence_cnt = (*sequence_cnt) & SEQ_CNT_MASK; new_packet_sequence_control = segmentation_grouping_flag | (*sequence_cnt) ; - packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); + packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> SHIFT_1_BYTE); packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); // increment the sequence counter