diff --git a/FSW-qt/Makefile b/FSW-qt/Makefile --- a/FSW-qt/Makefile +++ b/FSW-qt/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: bin/fsw -# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Mar 28 13:24:20 2014 +# Generated by qmake (2.01a) (Qt 4.8.5) on: Tue Apr 1 12:03:12 2014 # Project: fsw-qt.pro # Template: app # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro @@ -10,7 +10,7 @@ CC = sparc-rtems-gcc CXX = sparc-rtems-g++ -DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=5 -DVHDL_DEV -DPRINT_MESSAGES_ON_CONSOLE +DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=5 -DPRINT_MESSAGES_ON_CONSOLE -DPRINT_TASK_STATISTICS CFLAGS = -pipe -O3 -Wall $(DEFINES) CXXFLAGS = -pipe -O3 -Wall $(DEFINES) INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header -I../../LFR_basic-parameters diff --git a/FSW-qt/fsw-qt.pro b/FSW-qt/fsw-qt.pro --- a/FSW-qt/fsw-qt.pro +++ b/FSW-qt/fsw-qt.pro @@ -1,7 +1,7 @@ TEMPLATE = app # CONFIG += console v8 sim # CONFIG options = verbose *** boot_messages *** debug_messages *** cpu_usage_report *** stack_report *** vhdl_dev *** debug_tch -CONFIG += console verbose vhdl_dev +CONFIG += console verbose cpu_usage_report CONFIG -= qt include(./sparc.pri) diff --git a/FSW-qt/fsw-qt.pro.user b/FSW-qt/fsw-qt.pro.user --- a/FSW-qt/fsw-qt.pro.user +++ b/FSW-qt/fsw-qt.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/header/ccsds_types.h b/header/ccsds_types.h --- a/header/ccsds_types.h +++ b/header/ccsds_types.h @@ -447,6 +447,28 @@ typedef struct { } Header_TM_LFR_SCIENCE_ASM_t; typedef struct { + unsigned char targetLogicalAddress; + unsigned char protocolIdentifier; + unsigned char reserved; + unsigned char userApplication; + unsigned char packetID[2]; + unsigned char packetSequenceControl[2]; + unsigned char packetLength[2]; + // DATA FIELD HEADER + unsigned char spare1_pusVersion_spare2; + unsigned char serviceType; + unsigned char serviceSubType; + unsigned char destinationID; + unsigned char time[6]; + // AUXILIARY HEADER + unsigned char sid; + unsigned char biaStatusInfo; + unsigned char acquisitionTime[6]; + unsigned char spare_source_data; + unsigned char pa_lfr_bp_blk_nr[2]; +} Header_TM_LFR_SCIENCE_BP_t; + +typedef struct { //targetLogicalAddress is removed by the grspw module unsigned char protocolIdentifier; unsigned char reserved; diff --git a/header/fsw_params.h b/header/fsw_params.h --- a/header/fsw_params.h +++ b/header/fsw_params.h @@ -18,6 +18,16 @@ typedef struct ring_node unsigned int status; } ring_node; +typedef struct ring_node_sm +{ + struct ring_node_sm *previous; + int buffer_address; + struct ring_node_sm *next; + unsigned int status; + unsigned int coarseTime; + unsigned int fineTime; +} ring_node_sm; + //************************ // flight software version // this parameters is handled by the Qt project options diff --git a/header/fsw_params_nb_bytes.h b/header/fsw_params_nb_bytes.h --- a/header/fsw_params_nb_bytes.h +++ b/header/fsw_params_nb_bytes.h @@ -4,12 +4,12 @@ // TC_LFR_LOAD_COMMON_PAR // TC_LFR_LOAD_NORMAL_PAR -#define BYTE_POS_SY_LFR_N_SWF_L 0 -#define BYTE_POS_SY_LFR_N_SWF_P 2 -#define BYTE_POS_SY_LFR_N_ASM_P 4 -#define BYTE_POS_SY_LFR_N_BP_P0 6 -#define BYTE_POS_SY_LFR_N_BP_P1 7 -#define BYTE_POS_SY_LFR_N_CWF_LONG_F3 8 +#define DATAFIELD_POS_SY_LFR_N_SWF_L 0 +#define DATAFIELD_POS_SY_LFR_N_SWF_P 2 +#define DATAFIELD_POS_SY_LFR_N_ASM_P 4 +#define DATAFIELD_POS_SY_LFR_N_BP_P0 6 +#define DATAFIELD_POS_SY_LFR_N_BP_P1 7 +#define DATAFIELD_POS_SY_LFR_N_CWF_LONG_F3 8 // TC_LFR_LOAD_BURST_PAR diff --git a/header/fsw_params_processing.h b/header/fsw_params_processing.h --- a/header/fsw_params_processing.h +++ b/header/fsw_params_processing.h @@ -38,10 +38,12 @@ #define NB_BINS_TO_AVERAGE_ASM_F1 8 #define NB_BINS_TO_AVERAGE_ASM_F2 8 // -#define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 -#define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 -#define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 -#define NB_AVERAGE_NORMAL_f0 96*4 +#define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 WORDS +#define TOTAL_SIZE_COMPRESSED_ASM_SBM1 550 // 22 * 25 WORDS +#define NB_AVERAGE_NORMAL_f0 384 // 96 * 4 +#define NB_AVERAGE_SBM1_f0 24 // 24 matrices at f0 = 0.25 second #define NB_SM_TO_RECEIVE_BEFORE_AVF0 8 typedef struct { diff --git a/header/fsw_processing.h b/header/fsw_processing.h --- a/header/fsw_processing.h +++ b/header/fsw_processing.h @@ -38,11 +38,14 @@ rtems_task avf0_task(rtems_task_argument rtems_task smiq_task(rtems_task_argument argument); // added to test the spectral matrix simulator rtems_task matr_task(rtems_task_argument argument); -void matrix_reset(volatile float *averaged_spec_mat); void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1); void BP2_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat); // void init_header_asm( Header_TM_LFR_SCIENCE_ASM_t *header); +void matrix_reset(volatile float *averaged_spec_mat); +void ASM_average(float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, + ring_node_sm *ring_node_tab[], + unsigned int firstTimeF0, unsigned int firstTimeF1 ); void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ); void ASM_compress( float *averaged_spec_mat, unsigned char fChannel, float *compressed_spec_mat ); void ASM_convert(volatile float *input_matrix, char *output_matrix); diff --git a/src/fsw_init.c b/src/fsw_init.c --- a/src/fsw_init.c +++ b/src/fsw_init.c @@ -232,7 +232,7 @@ void init_local_mode_parameters( void ) void reset_local_time( void ) { - time_management_regs->coarse_time_load = 0x80000000; + time_management_regs->ctrl = 0x02; // software reset, coarse time = 0x80000000 } void create_names( void ) // create all names for tasks and queues diff --git a/src/fsw_misc.c b/src/fsw_misc.c --- a/src/fsw_misc.c +++ b/src/fsw_misc.c @@ -384,6 +384,12 @@ void send_dumb_hk( void ) 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.sid = SID_HK; // init status word diff --git a/src/fsw_processing.c b/src/fsw_processing.c --- a/src/fsw_processing.c +++ b/src/fsw_processing.c @@ -13,20 +13,29 @@ //************************ // spectral matrices rings -ring_node sm_ring_f0[NB_RING_NODES_ASM_F0]; -ring_node sm_ring_f1[NB_RING_NODES_ASM_F1]; -ring_node sm_ring_f2[NB_RING_NODES_ASM_F2]; -ring_node *current_ring_node_sm_f0; -ring_node *ring_node_for_averaging_sm_f0; -ring_node *current_ring_node_sm_f1; -ring_node *current_ring_node_sm_f2; +ring_node_sm sm_ring_f0[NB_RING_NODES_ASM_F0]; +ring_node_sm sm_ring_f1[NB_RING_NODES_ASM_F1]; +ring_node_sm sm_ring_f2[NB_RING_NODES_ASM_F2]; +ring_node_sm *current_ring_node_sm_f0; +ring_node_sm *ring_node_for_averaging_sm_f0; +ring_node_sm *current_ring_node_sm_f1; +ring_node_sm *current_ring_node_sm_f2; BP1_t data_BP1[ NB_BINS_COMPRESSED_SM_F0 ]; + +//***** +// NORM +// F0 float averaged_sm_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; float averaged_sm_f0_reorganized[ TIME_OFFSET + TOTAL_SIZE_SM ]; -char averaged_sm_f0_char [ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_SM ]; +char averaged_sm_f0_char [ TIME_OFFSET_IN_BYTES + (TOTAL_SIZE_SM * 2) ]; float compressed_sm_f0 [ TOTAL_SIZE_COMPRESSED_ASM_F0 ]; +//***** +// SBM1 +float averaged_sm_sbm1 [ TIME_OFFSET + TOTAL_SIZE_SM ]; +float compressed_sm_sbm1 [ TOTAL_SIZE_COMPRESSED_ASM_SBM1 ]; + unsigned char LFR_BP1_F0[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F0 * 2 ]; unsigned char LFR_BP1_F1[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F1 ]; unsigned char LFR_BP1_F2[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F2 ]; @@ -38,58 +47,58 @@ void init_sm_rings( void ) unsigned char i; // F0 RING - sm_ring_f0[0].next = (ring_node*) &sm_ring_f0[1]; - sm_ring_f0[0].previous = (ring_node*) &sm_ring_f0[NB_RING_NODES_ASM_F0-1]; + sm_ring_f0[0].next = (ring_node_sm*) &sm_ring_f0[1]; + sm_ring_f0[0].previous = (ring_node_sm*) &sm_ring_f0[NB_RING_NODES_ASM_F0-1]; sm_ring_f0[0].buffer_address = (int) &sm_f0[ 0 ]; - sm_ring_f0[NB_RING_NODES_ASM_F0-1].next = (ring_node*) &sm_ring_f0[0]; - sm_ring_f0[NB_RING_NODES_ASM_F0-1].previous = (ring_node*) &sm_ring_f0[NB_RING_NODES_ASM_F0-2]; + sm_ring_f0[NB_RING_NODES_ASM_F0-1].next = (ring_node_sm*) &sm_ring_f0[0]; + sm_ring_f0[NB_RING_NODES_ASM_F0-1].previous = (ring_node_sm*) &sm_ring_f0[NB_RING_NODES_ASM_F0-2]; sm_ring_f0[NB_RING_NODES_ASM_F0-1].buffer_address = (int) &sm_f0[ (NB_RING_NODES_ASM_F0-1) * TOTAL_SIZE_SM ]; for(i=1; iprevious; ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-i] = ring_node_for_averaging_sm_f0; } - averaged_sm_f0[0] = ( (int *) (ring_node_tab[7]->buffer_address) ) [0]; - averaged_sm_f0[1] = ( (int *) (ring_node_tab[7]->buffer_address) ) [1]; - for(i=0; icoarseTime; + averaged_sm_f0[1] = ring_node_tab[7]->fineTime; + averaged_sm_f1[0] = ring_node_tab[7]->coarseTime; + averaged_sm_f1[1] = ring_node_tab[7]->fineTime; + + // compute the average and store it in the averaged_sm_f1 buffer + ASM_average( averaged_sm_f0, averaged_sm_f1, + ring_node_tab, + nb_average_norm, nb_average_sbm1 ); + + + // update nb_average + nb_average_norm = nb_average_norm + NB_SM_TO_RECEIVE_BEFORE_AVF0; + nb_average_sbm1 = nb_average_sbm1 + NB_SM_TO_RECEIVE_BEFORE_AVF0; + + // launch actions depending on the current mode + if (lfrCurrentMode == LFR_MODE_SBM1) { - averaged_sm_f0[i] = ( (int *) (ring_node_tab[0]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[1]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[2]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[3]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[4]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[5]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[6]->buffer_address) ) [i + TIME_OFFSET] - + ( (int *) (ring_node_tab[7]->buffer_address) ) [i + TIME_OFFSET]; + if (nb_average_sbm1 == NB_AVERAGE_SBM1_f0) { + nb_average_sbm1 = 0; + status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_SBM1 ); // sending an event to the task 7, BPF0 + if (status != RTEMS_SUCCESSFUL) { + printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); + } + } } - - nb_average = nb_average + NB_SM_TO_RECEIVE_BEFORE_AVF0; - if (nb_average == NB_AVERAGE_NORMAL_f0) { - nb_average = 0; - status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_0 ); // sending an event to the task 7, BPF0 - if (status != RTEMS_SUCCESSFUL) { - printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); + if (lfrCurrentMode == LFR_MODE_NORMAL) + { + if (nb_average_norm == NB_AVERAGE_NORMAL_f0) { + nb_average_norm = 0; + status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_NORMAL ); // sending an event to the task 7, BPF0 + if (status != RTEMS_SUCCESSFUL) { + printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); + } } } } @@ -258,16 +284,33 @@ rtems_task matr_task(rtems_task_argument fill_averaged_spectral_matrix( ); while(1){ - rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0 - // 1) compress the matrix for Basic Parameters calculation - ASM_compress( averaged_sm_f0, 0, compressed_sm_f0 ); - // 2) -// BP1_set( (float *) &compressed_sm_f0[TIME_OFFSET], NB_BINS_COMPRESSED_SM_F0, (unsigned char *) &LFR_BP1_F0[TIME_OFFSET_IN_BYTES] ); - // 3) convert the float array in a char array - ASM_reorganize( averaged_sm_f0, averaged_sm_f0_reorganized ); - ASM_convert( averaged_sm_f0_reorganized, averaged_sm_f0_char); - // 4) send the spectral matrix packets - ASM_send( &headerASM, averaged_sm_f0_char, SID_NORM_ASM_F0, &spw_ioctl_send_ASM, queue_id); + rtems_event_receive( RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1, + RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); + if (event_out==RTEMS_EVENT_MODE_NORMAL) + { + // 1) compress the matrix for Basic Parameters calculation + ASM_compress( averaged_sm_f0, 0, compressed_sm_f0 ); + // 2) compute the BP1 set + + // 3) convert the float array in a char array + ASM_reorganize( averaged_sm_f0, averaged_sm_f0_reorganized ); + ASM_convert( averaged_sm_f0_reorganized, averaged_sm_f0_char); + // 4) send the spectral matrix packets + ASM_send( &headerASM, averaged_sm_f0_char, SID_NORM_ASM_F0, &spw_ioctl_send_ASM, queue_id); + } + else if (event_out==RTEMS_EVENT_MODE_SBM1) + { + // 1) compress the matrix for Basic Parameters calculation + ASM_compress( averaged_sm_f1, 0, compressed_sm_f1 ); + // 2) compute the BP1 set + + // 4) send the basic parameters set 1 packet + BP1_send( ); + } + else + { + PRINTF1("ERR *** in MATR *** unexect event = %x\n", (unsigned int) event_out) + } } } @@ -282,6 +325,47 @@ void matrix_reset(volatile float *averag } } +void ASM_average( float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, + ring_node_sm *ring_node_tab[], + unsigned int firstTimeF0, unsigned int firstTimeF1 ) +{ + float sum; + unsigned int i; + + for(i=0; ibuffer_address) ) [ i ] + + ( (int *) (ring_node_tab[1]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[2]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[3]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[4]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[5]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[6]->buffer_address) ) [ i ] + + ( (int *) (ring_node_tab[7]->buffer_address) ) [ i ]; + + if ( (firstTimeF0 == 0) && (firstTimeF1 == 0) ) + { + averaged_spec_mat_f0[ i ] = averaged_spec_mat_f0[ i ] + sum; + averaged_spec_mat_f1[ i ] = averaged_spec_mat_f1[ i ] + sum; + } + else if ( (firstTimeF0 == 0) && (firstTimeF1 != 0) ) + { + averaged_spec_mat_f0[ i ] = averaged_spec_mat_f0[ i ] + sum; + averaged_spec_mat_f1[ i ] = sum; + } + else if ( (firstTimeF0 != 0) && (firstTimeF1 == 0) ) + { + averaged_spec_mat_f0[ i ] = sum; + averaged_spec_mat_f1[ i ] = averaged_spec_mat_f1[ i ] + sum; + } + else + { + averaged_spec_mat_f0[ i ] = sum; + averaged_spec_mat_f1[ i ] = sum; + } + } +} + void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ) { int frequencyBin; @@ -440,6 +524,11 @@ void ASM_send(Header_TM_LFR_SCIENCE_ASM_ } } +void BP1_send() +{ + +} + void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1){ int i; int j; @@ -655,6 +744,36 @@ void init_header_asm( Header_TM_LFR_SCIE header->pa_lfr_asm_blk_nr[1] = 0x00; // BLK_NR LSB } +void init_header_bp( Header_TM_LFR_SCIENCE_BP_t *header) +{ + header->targetLogicalAddress = CCSDS_DESTINATION_ID; + header->protocolIdentifier = CCSDS_PROTOCOLE_ID; + header->reserved = 0x00; + header->userApplication = CCSDS_USER_APP; +// header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); +// header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); + header->packetSequenceControl[0] = 0xc0; + header->packetSequenceControl[1] = 0x00; + header->packetLength[0] = 0x00; + header->packetLength[1] = 0x00; + // DATA FIELD HEADER + header->spare1_pusVersion_spare2 = 0x10; + header->serviceType = TM_TYPE_LFR_SCIENCE; // service type + header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype + header->destinationID = TM_DESTINATION_ID_GROUND; + // AUXILIARY DATA HEADER + header->sid = 0x00; + header->biaStatusInfo = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->time[0] = 0x00; + header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB + header->pa_lfr_bp_blk_nr[1] = 0x00; // BLK_NR LSB +} + void fill_averaged_spectral_matrix(void) { /** This function fills spectral matrices related buffers with arbitrary data. diff --git a/src/tc_handler.c b/src/tc_handler.c --- a/src/tc_handler.c +++ b/src/tc_handler.c @@ -532,7 +532,7 @@ int enter_mode( unsigned char mode, unsi #endif status = restart_science_tasks(); launch_waveform_picker( mode, transitionCoarseTime ); -// launch_spectral_matrix( mode ); + launch_spectral_matrix_simu( mode ); } else if ( mode == LFR_MODE_STANDBY ) { @@ -701,7 +701,6 @@ void launch_spectral_matrix( unsigned ch reset_current_sm_ring_nodes(); reset_spectral_matrix_regs(); -#ifdef VHDL_DEV struct grgpio_regs_str *grgpio_regs = (struct grgpio_regs_str *) REGS_ADDR_GRGPIO; grgpio_regs->io_port_direction_register = grgpio_regs->io_port_direction_register | 0x01; // [0001 1000], 0 = output disabled, 1 = output enabled @@ -710,12 +709,7 @@ void launch_spectral_matrix( unsigned ch LEON_Clear_interrupt( IRQ_SPECTRAL_MATRIX ); LEON_Unmask_interrupt( IRQ_SPECTRAL_MATRIX ); set_run_matrix_spectral( 1 ); -#else - // Spectral Matrices simulator - timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR ); - LEON_Clear_interrupt( IRQ_SM_SIMULATOR ); - LEON_Unmask_interrupt( IRQ_SM_SIMULATOR ); -#endif + } void set_irq_on_new_ready_matrix( unsigned char value ) 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 @@ -262,8 +262,8 @@ int set_sy_lfr_n_swf_l( ccsdsTelecommand unsigned char lsb; rtems_status_code status; - msb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_SWF_L ]; - lsb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_SWF_L+1 ]; + msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L ]; + lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L+1 ]; tmp = ( unsigned int ) floor( ( ( msb*256 ) + lsb ) / 16 @@ -271,7 +271,7 @@ int set_sy_lfr_n_swf_l( ccsdsTelecommand if ( (tmp < 16) || (tmp > 2048) ) // the snapshot period is a multiple of 16 { // 2048 is the maximum limit due to the size of the buffers - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, BYTE_POS_SY_LFR_N_SWF_L+10, lsb ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_L+10, lsb ); result = WRONG_APP_DATA; } else if (tmp != 2048) @@ -304,14 +304,14 @@ int set_sy_lfr_n_swf_p(ccsdsTelecommandP unsigned char lsb; rtems_status_code status; - msb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_SWF_P ]; - lsb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_SWF_P+1 ]; + msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P ]; + lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P+1 ]; tmp = msb * 256 + lsb; if ( tmp < 16 ) { - status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, BYTE_POS_SY_LFR_N_SWF_P+10, lsb ); + status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_P+10, lsb ); result = WRONG_APP_DATA; } else @@ -337,8 +337,8 @@ int set_sy_lfr_n_asm_p( ccsdsTelecommand unsigned char msb; unsigned char lsb; - msb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_ASM_P ]; - lsb = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_ASM_P+1 ]; + msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P ]; + lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P+1 ]; parameter_dump_packet.sy_lfr_n_asm_p[0] = msb; parameter_dump_packet.sy_lfr_n_asm_p[1] = lsb; @@ -360,7 +360,7 @@ int set_sy_lfr_n_bp_p0( ccsdsTelecommand status = LFR_SUCCESSFUL; - parameter_dump_packet.sy_lfr_n_bp_p0 = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_BP_P0 ]; + parameter_dump_packet.sy_lfr_n_bp_p0 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_BP_P0 ]; return status; } @@ -378,7 +378,7 @@ int set_sy_lfr_n_bp_p1(ccsdsTelecommandP status = LFR_SUCCESSFUL; - parameter_dump_packet.sy_lfr_n_bp_p1 = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_BP_P1 ]; + parameter_dump_packet.sy_lfr_n_bp_p1 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_BP_P1 ]; return status; } @@ -396,7 +396,7 @@ int set_sy_lfr_n_cwf_long_f3(ccsdsTeleco status = LFR_SUCCESSFUL; - parameter_dump_packet.sy_lfr_n_cwf_long_f3 = TC->dataAndCRC[ BYTE_POS_SY_LFR_N_CWF_LONG_F3 ]; + parameter_dump_packet.sy_lfr_n_cwf_long_f3 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_CWF_LONG_F3 ]; return status; } diff --git a/src/wf_handler.c b/src/wf_handler.c --- a/src/wf_handler.c +++ b/src/wf_handler.c @@ -748,12 +748,12 @@ int send_waveform_SWF( volatile int *wav // SET PACKET TIME compute_acquisition_time( coarseTime, fineTime, sid, i, headerSWF[ i ].acquisitionTime ); // - headerSWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - headerSWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - headerSWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - headerSWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); - headerSWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); - headerSWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); + headerSWF[ i ].time[0] = headerSWF[ i ].acquisitionTime[0]; + headerSWF[ i ].time[1] = headerSWF[ i ].acquisitionTime[1]; + headerSWF[ i ].time[2] = headerSWF[ i ].acquisitionTime[2]; + headerSWF[ i ].time[3] = headerSWF[ i ].acquisitionTime[3]; + headerSWF[ i ].time[4] = headerSWF[ i ].acquisitionTime[4]; + headerSWF[ i ].time[5] = headerSWF[ i ].acquisitionTime[5]; // SEND PACKET status = rtems_message_queue_send( queue_id, &spw_ioctl_send_SWF, ACTION_MSG_SPW_IOCTL_SEND_SIZE); if (status != RTEMS_SUCCESSFUL) { @@ -807,12 +807,12 @@ int send_waveform_CWF(volatile int *wave // SET PACKET TIME compute_acquisition_time( coarseTime, fineTime, sid, i, headerCWF[ i ].acquisitionTime); // - headerCWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - headerCWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - headerCWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - headerCWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); - headerCWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); - headerCWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); + headerCWF[ i ].time[0] = headerCWF[ i ].acquisitionTime[0]; + headerCWF[ i ].time[1] = headerCWF[ i ].acquisitionTime[1]; + headerCWF[ i ].time[2] = headerCWF[ i ].acquisitionTime[2]; + headerCWF[ i ].time[3] = headerCWF[ i ].acquisitionTime[3]; + headerCWF[ i ].time[4] = headerCWF[ i ].acquisitionTime[4]; + headerCWF[ i ].time[5] = headerCWF[ i ].acquisitionTime[5]; // SEND PACKET if (sid == SID_NORM_CWF_LONG_F3) { @@ -892,12 +892,12 @@ int send_waveform_CWF3_light(volatile in // SET PACKET TIME compute_acquisition_time( coarseTime, fineTime, SID_NORM_CWF_F3, i, headerCWF[ i ].acquisitionTime ); // - headerCWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); - headerCWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); - headerCWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); - headerCWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); - headerCWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); - headerCWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); + headerCWF[ i ].time[0] = headerCWF[ i ].acquisitionTime[0]; + headerCWF[ i ].time[1] = headerCWF[ i ].acquisitionTime[1]; + headerCWF[ i ].time[2] = headerCWF[ i ].acquisitionTime[2]; + headerCWF[ i ].time[3] = headerCWF[ i ].acquisitionTime[3]; + headerCWF[ i ].time[4] = headerCWF[ i ].acquisitionTime[4]; + headerCWF[ i ].time[5] = headerCWF[ i ].acquisitionTime[5]; // SEND PACKET status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF)); if (status != RTEMS_SUCCESSFUL) {