# HG changeset patch # User paul # Date 2017-02-06 15:03:54 # Node ID 4f755502e98f459725983c59e1ef8aafa1e13d95 # Parent 813855fbb23057f41d065dfb67efa53edde00b08 Correction of a bug in set_sy_lfr_kcoeff (misalignment) 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 @@ -109,6 +109,7 @@ int check_sy_lfr_filter_parameters( ccsd int set_sy_lfr_kcoeff(ccsdsTelecommandPacket_t *TC , rtems_id queue_id); void copyFloatByChar( unsigned char *destination, unsigned char *source ); void copyInt32ByChar( unsigned char *destination, unsigned char *source ); +void copyInt16ByChar( unsigned char *destination, unsigned char *source ); void floatToChar( float value, unsigned char* ptr); void init_parameter_dump( void ); diff --git a/src/fsw_misc.c b/src/fsw_misc.c --- a/src/fsw_misc.c +++ b/src/fsw_misc.c @@ -421,7 +421,7 @@ rtems_task avgv_task(rtems_task_argument if (k == (MOVING_AVERAGE-1)) { k = 0; - printf("tick\n"); + PRINTF("tick\n"); } else { diff --git a/src/fsw_spacewire.c b/src/fsw_spacewire.c --- a/src/fsw_spacewire.c +++ b/src/fsw_spacewire.c @@ -167,7 +167,7 @@ rtems_task recv_task( rtems_task_argumen } else { 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); + PRINTF1("incoming TC with Length (byte): %d\n", len - 3); currentTC_LEN_RCV[ 0 ] = (unsigned char) (estimatedPacketLength >> SHIFT_1_BYTE); currentTC_LEN_RCV[ 1 ] = (unsigned char) (estimatedPacketLength ); // CHECK THE TC diff --git a/src/tc_handler.c b/src/tc_handler.c --- a/src/tc_handler.c +++ b/src/tc_handler.c @@ -177,17 +177,11 @@ int action_enter_mode(ccsdsTelecommandPa unsigned int transitionCoarseTime; unsigned char * bytePosPtr; - printf("(0)\n"); bytePosPtr = (unsigned char *) &TC->packetID; - printf("(1)\n"); requestedMode = bytePosPtr[ BYTE_POS_CP_MODE_LFR_SET ]; - printf("(2)\n"); copyInt32ByChar( (char*) &transitionCoarseTime, &bytePosPtr[ BYTE_POS_CP_LFR_ENTER_MODE_TIME ] ); - printf("(3)\n"); transitionCoarseTime = transitionCoarseTime & COARSE_TIME_MASK; - printf("(4)\n"); status = check_mode_value( requestedMode ); - printf("(5)\n"); if ( status != LFR_SUCCESSFUL ) // the mode value is inconsistent { @@ -685,8 +679,6 @@ int enter_mode_normal( unsigned int tran status = RTEMS_UNSATISFIED; - printf("hop\n"); - switch( lfrCurrentMode ) { case LFR_MODE_STANDBY: 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 @@ -1420,7 +1420,6 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP unsigned int kcoeff; unsigned short sy_lfr_kcoeff_frequency; unsigned short bin; - unsigned short *freqPtr; float *kcoeffPtr_norm; float *kcoeffPtr_sbm; int status; @@ -1429,14 +1428,15 @@ int set_sy_lfr_kcoeff( ccsdsTelecommandP unsigned char *kcoeffSbmPtr_a; unsigned char *kcoeffSbmPtr_b; - status = LFR_SUCCESSFUL; - + sy_lfr_kcoeff_frequency = 0; + bin = 0; kcoeffPtr_norm = NULL; kcoeffPtr_sbm = NULL; - bin = 0; + status = LFR_SUCCESSFUL; - freqPtr = (unsigned short *) &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY]; - sy_lfr_kcoeff_frequency = *freqPtr; + // copy the value of the frequency byte by byte DO NOT USE A SHORT* POINTER + copyInt16ByChar( (unsigned char*) &sy_lfr_kcoeff_frequency, &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY] ); + if ( sy_lfr_kcoeff_frequency >= NB_BINS_COMPRESSED_SM ) { @@ -1519,6 +1519,12 @@ void copyInt32ByChar( unsigned char *des destination[BYTE_3] = source[BYTE_3]; } +void copyInt16ByChar( unsigned char *destination, unsigned char *source ) +{ + destination[BYTE_0] = source[BYTE_0]; + destination[BYTE_1] = source[BYTE_1]; +} + void floatToChar( float value, unsigned char* ptr) { unsigned char* valuePtr;