# HG changeset patch # User paul # Date 2013-11-21 16:35:21 # Node ID 335d64d1e4bf3aa17f59c425144a2d9d470c1c4d # Parent 4237b1096e59b6bf6406ef45abd2c03102282b1d Bug #861 Le bug sur les champs SEGMENTATION_GROUPING_FLAG et SEQUENCE_CNT des paquets TM_LFR_TC_EXE_CORRUPTED a été identifié et est corrigé. 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: Tue Nov 19 10:04:58 2013 +# Generated by qmake (2.01a) (Qt 4.8.5) on: Thu Nov 21 17:20:36 2013 # 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=0 -DPRINT_MESSAGES_ON_CONSOLE +DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=1 -DPRINT_MESSAGES_ON_CONSOLE CFLAGS = -pipe -O3 -Wall $(DEFINES) CXXFLAGS = -pipe -O3 -Wall $(DEFINES) INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header 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 @@ -11,7 +11,7 @@ SWVERSION=-1-0 DEFINES += SW_VERSION_N1=1 # major DEFINES += SW_VERSION_N2=0 # minor DEFINES += SW_VERSION_N3=0 # patch -DEFINES += SW_VERSION_N4=0 # internal +DEFINES += SW_VERSION_N4=1 # internal contains( CONFIG, verbose ) { DEFINES += PRINT_MESSAGES_ON_CONSOLE 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 @@ -146,8 +146,7 @@ enum apid_destid{ OBCP, SYSTEM_CONTROL, AOCS, - RPW_INTERNAL, - UNKNOWN + RPW_INTERNAL }; // SEQUENCE COUNTERS #define SEQ_CNT_MAX 16383 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 @@ -469,33 +469,26 @@ void increment_seq_counter_destination_i i = RPW_INTERNAL; break; default: - i = UNKNOWN; + i = GROUND; break; } - if (i != UNKNOWN) - { - segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; - sequence_cnt = sequenceCounters_TC_EXE[ i ] & 0x3fff; + segmentation_grouping_flag = TM_PACKET_SEQ_CTRL_STANDALONE << 8; + sequence_cnt = sequenceCounters_TC_EXE[ i ] & 0x3fff; - new_packet_sequence_control = segmentation_grouping_flag | sequence_cnt ; - - packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); - packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); + new_packet_sequence_control = segmentation_grouping_flag | sequence_cnt ; - // increment the sequence counter for the next packet - if ( sequenceCounters_TC_EXE[ i ] < SEQ_CNT_MAX) - { - sequenceCounters_TC_EXE[ i ] = sequenceCounters_TC_EXE[ i ] + 1; - } - else - { - sequenceCounters_TC_EXE[ i ] = 0; - } + packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); + packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); + + // increment the sequence counter for the next packet + if ( sequenceCounters_TC_EXE[ i ] < SEQ_CNT_MAX) + { + sequenceCounters_TC_EXE[ i ] = sequenceCounters_TC_EXE[ i ] + 1; } else { - DEBUG_PRINTF1("in increment_seq_counter_destination_id *** ERR destination ID %d not known\n", destination_id) + sequenceCounters_TC_EXE[ i ] = 0; } } diff --git a/src/wf_handler.c b/src/wf_handler.c --- a/src/wf_handler.c +++ b/src/wf_handler.c @@ -1198,26 +1198,28 @@ void increment_seq_counter_source_id( un } else { - sequence_cnt = &sequenceCounters_TC_EXE[ UNKNOWN ]; + sequence_cnt = NULL; PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid) } - segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8; - *sequence_cnt = (*sequence_cnt) & 0x3fff; + if (sequence_cnt != NULL) + { + segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8; + *sequence_cnt = (*sequence_cnt) & 0x3fff; - new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; + new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; - packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); - packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); + packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); + packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); - // increment the seuqence counter for the next packet - if ( *sequence_cnt < SEQ_CNT_MAX) - { - *sequence_cnt = *sequence_cnt + 1; + // increment the sequence counter for the next packet + if ( *sequence_cnt < SEQ_CNT_MAX) + { + *sequence_cnt = *sequence_cnt + 1; + } + else + { + *sequence_cnt = 0; + } } - else - { - *sequence_cnt = 0; - } - }