Target:
Source:
Actions:
Compare was calculated based on this common ancestor commit:
5af3ab05fe7b
Time | Author | Commit | Description | |||
---|---|---|---|---|---|---|
7 commits hidden, click expand to show them. |
@@ -1,2 +1,2 | |||
|
1 | 1 | 3081d1f9bb20b2b64a192585337a292a9804e0c5 LFR_basic-parameters |
|
2 | 7c46de6059673d3239fcc7103e16510727f35923 header/lfr_common_headers | |
|
2 | a34c50cabb1bc5e778bfc8374242e4683e4defc2 header/lfr_common_headers |
@@ -26,8 +26,12 | |||
|
26 | 26 | #define STATUS_8 8 |
|
27 | 27 | #define STATUS_9 9 |
|
28 | 28 | |
|
29 | #define CAL_F0 625 | |
|
30 | #define CAL_F1 10000 | |
|
29 | #define CAL_F0 625. | |
|
30 | #define CAL_F1 10000. | |
|
31 | #define CAL_W0 (2. * pi * CAL_F0) | |
|
32 | #define CAL_W1 (2. * pi * CAL_F1) | |
|
33 | #define CAL_A0 1. | |
|
34 | #define CAL_A1 2. | |
|
31 | 35 | #define CAL_FS 160256.410 |
|
32 | 36 | #define CAL_SCALE_FACTOR (0.250 / 0.000654) // 191, 500 mVpp, 2 sinus waves => 500 mVpp each, amplitude = 250 mV |
|
33 | 37 | #define CAL_NB_PTS 256 |
@@ -77,7 +77,7 unsigned int check_update_info_hk_lfr_mo | |||
|
77 | 77 | unsigned int check_update_info_hk_tds_mode( unsigned char mode ); |
|
78 | 78 | unsigned int check_update_info_hk_thr_mode( unsigned char mode ); |
|
79 | 79 | void getReactionWheelsFrequencies( ccsdsTelecommandPacket_t *TC ); |
|
80 | void setFBinMask(unsigned char *fbins_mask, float rw_f, unsigned char deltaFreq, unsigned char flag ); | |
|
80 | void setFBinMask(unsigned char *fbins_mask, float rw_f, unsigned char deltaFreq, unsigned char flag, float sy_lfr_rw_k ); | |
|
81 | 81 | void build_sy_lfr_rw_mask( unsigned int channel ); |
|
82 | 82 | void build_sy_lfr_rw_masks(); |
|
83 | 83 | void merge_fbins_masks( void ); |
@@ -91,6 +91,8 int check_sy_lfr_filter_parameters( ccsd | |||
|
91 | 91 | // KCOEFFICIENTS |
|
92 | 92 | int set_sy_lfr_kcoeff(ccsdsTelecommandPacket_t *TC , rtems_id queue_id); |
|
93 | 93 | void copyFloatByChar( unsigned char *destination, unsigned char *source ); |
|
94 | void copyInt32ByChar( unsigned char *destination, unsigned char *source ); | |
|
95 | void copyInt16ByChar( unsigned char *destination, unsigned char *source ); | |
|
94 | 96 | void floatToChar( float value, unsigned char* ptr); |
|
95 | 97 | |
|
96 | 98 | void init_parameter_dump( void ); |
@@ -64,7 +64,7 option(FSW_debug_tch "?" OFF) | |||
|
64 | 64 | set(SW_VERSION_N1 "3" CACHE STRING "Choose N1 FSW Version." FORCE) |
|
65 | 65 | set(SW_VERSION_N2 "1" CACHE STRING "Choose N2 FSW Version." FORCE) |
|
66 | 66 | set(SW_VERSION_N3 "0" CACHE STRING "Choose N3 FSW Version." FORCE) |
|
67 |
set(SW_VERSION_N4 " |
|
|
67 | set(SW_VERSION_N4 "7" CACHE STRING "Choose N4 FSW Version." FORCE) | |
|
68 | 68 | |
|
69 | 69 | if(FSW_verbose) |
|
70 | 70 | add_definitions(-DPRINT_MESSAGES_ON_CONSOLE) |
@@ -408,7 +408,7 rtems_task avgv_task(rtems_task_argument | |||
|
408 | 408 | if (k == (MOVING_AVERAGE-1)) |
|
409 | 409 | { |
|
410 | 410 | k = 0; |
|
411 |
|
|
|
411 | PRINTF("tick\n"); | |
|
412 | 412 | } |
|
413 | 413 | else |
|
414 | 414 | { |
@@ -727,12 +727,12 void set_sy_lfr_pas_filter_enabled( bool | |||
|
727 | 727 | if (state == true) |
|
728 | 728 | { |
|
729 | 729 | housekeeping_packet.lfr_status_word[1] = |
|
730 |
housekeeping_packet.lfr_status_word[1] | STATUS_WORD_ |
|
|
730 | housekeeping_packet.lfr_status_word[1] | STATUS_WORD_PAS_FILTER_ENABLED_BIT; // [0010 0000] | |
|
731 | 731 | } |
|
732 | 732 | else |
|
733 | 733 | { |
|
734 | 734 | housekeeping_packet.lfr_status_word[1] = |
|
735 |
housekeeping_packet.lfr_status_word[1] & STATUS_WORD_ |
|
|
735 | housekeeping_packet.lfr_status_word[1] & STATUS_WORD_PAS_FILTER_ENABLED_MASK; // [1101 1111] | |
|
736 | 736 | } |
|
737 | 737 | } |
|
738 | 738 | |
@@ -786,7 +786,7 void increment_hk_counter( unsigned char | |||
|
786 | 786 | } |
|
787 | 787 | else |
|
788 | 788 | { |
|
789 |
delta = ( |
|
|
789 | delta = (CONST_256 - oldValue) + newValue; | |
|
790 | 790 | } |
|
791 | 791 | |
|
792 | 792 | *counter = *counter + delta; |
@@ -798,7 +798,7 void hk_lfr_le_update( void ) | |||
|
798 | 798 | hk_lfr_le_t new_hk_lfr_le; |
|
799 | 799 | unsigned int counter; |
|
800 | 800 | |
|
801 | counter = (((unsigned int) housekeeping_packet.hk_lfr_le_cnt[0]) * 256) + housekeeping_packet.hk_lfr_le_cnt[1]; | |
|
801 | counter = (((unsigned int) housekeeping_packet.hk_lfr_le_cnt[0]) * CONST_256) + housekeeping_packet.hk_lfr_le_cnt[1]; | |
|
802 | 802 | |
|
803 | 803 | // DPU |
|
804 | 804 | new_hk_lfr_le.dpu_spw_parity = housekeeping_packet.hk_lfr_dpu_spw_parity; |
@@ -868,7 +868,7 void hk_lfr_me_update( void ) | |||
|
868 | 868 | hk_lfr_me_t new_hk_lfr_me; |
|
869 | 869 | unsigned int counter; |
|
870 | 870 | |
|
871 | counter = (((unsigned int) housekeeping_packet.hk_lfr_me_cnt[0]) * 256) + housekeeping_packet.hk_lfr_me_cnt[1]; | |
|
871 | counter = (((unsigned int) housekeeping_packet.hk_lfr_me_cnt[0]) * CONST_256) + housekeeping_packet.hk_lfr_me_cnt[1]; | |
|
872 | 872 | |
|
873 | 873 | // get the current values |
|
874 | 874 | new_hk_lfr_me.dpu_spw_early_eop = housekeeping_packet.hk_lfr_dpu_spw_early_eop; |
@@ -124,7 +124,7 rtems_task recv_task( rtems_task_argumen | |||
|
124 | 124 | */ |
|
125 | 125 | |
|
126 | 126 | int len; |
|
127 | ccsdsTelecommandPacket_t currentTC; | |
|
127 | ccsdsTelecommandPacket_t __attribute__((aligned(4))) currentTC; | |
|
128 | 128 | unsigned char computed_CRC[ BYTES_PER_CRC ]; |
|
129 | 129 | unsigned char currentTC_LEN_RCV[ BYTES_PER_PKT_LEN ]; |
|
130 | 130 | unsigned char destinationID; |
@@ -167,7 +167,7 rtems_task recv_task( rtems_task_argumen | |||
|
167 | 167 | } |
|
168 | 168 | else { |
|
169 | 169 | estimatedPacketLength = (unsigned int) (len - CCSDS_TC_TM_PACKET_OFFSET - PROTID_RES_APP); // => -3 is for Prot ID, Reserved and User App bytes |
|
170 |
|
|
|
170 | PRINTF1("incoming TC with Length (byte): %d\n", len - 3); | |
|
171 | 171 | currentTC_LEN_RCV[ 0 ] = (unsigned char) (estimatedPacketLength >> SHIFT_1_BYTE); |
|
172 | 172 | currentTC_LEN_RCV[ 1 ] = (unsigned char) (estimatedPacketLength ); |
|
173 | 173 | // CHECK THE TC |
@@ -190,10 +190,10 rtems_task prc0_task( rtems_task_argumen | |||
|
190 | 190 | rtems_status_code status; |
|
191 | 191 | rtems_id queue_id; |
|
192 | 192 | rtems_id queue_id_q_p0; |
|
193 | bp_packet_with_spare packet_norm_bp1; | |
|
194 | bp_packet packet_norm_bp2; | |
|
195 | bp_packet packet_sbm_bp1; | |
|
196 | bp_packet packet_sbm_bp2; | |
|
193 | bp_packet_with_spare __attribute__((aligned(4))) packet_norm_bp1; | |
|
194 | bp_packet __attribute__((aligned(4))) packet_norm_bp2; | |
|
195 | bp_packet __attribute__((aligned(4))) packet_sbm_bp1; | |
|
196 | bp_packet __attribute__((aligned(4))) packet_sbm_bp2; | |
|
197 | 197 | ring_node *current_ring_node_to_send_asm_f0; |
|
198 | 198 | float nbSMInASMNORM; |
|
199 | 199 | float nbSMInASMSBM; |
@@ -191,10 +191,10 rtems_task prc1_task( rtems_task_argumen | |||
|
191 | 191 | rtems_status_code status; |
|
192 | 192 | rtems_id queue_id_send; |
|
193 | 193 | rtems_id queue_id_q_p1; |
|
194 | bp_packet_with_spare packet_norm_bp1; | |
|
195 | bp_packet packet_norm_bp2; | |
|
196 | bp_packet packet_sbm_bp1; | |
|
197 | bp_packet packet_sbm_bp2; | |
|
194 | bp_packet_with_spare __attribute__((aligned(4))) packet_norm_bp1; | |
|
195 | bp_packet __attribute__((aligned(4))) packet_norm_bp2; | |
|
196 | bp_packet __attribute__((aligned(4))) packet_sbm_bp1; | |
|
197 | bp_packet __attribute__((aligned(4))) packet_sbm_bp2; | |
|
198 | 198 | ring_node *current_ring_node_to_send_asm_f1; |
|
199 | 199 | float nbSMInASMNORM; |
|
200 | 200 | float nbSMInASMSBM; |
@@ -139,8 +139,8 rtems_task prc2_task( rtems_task_argumen | |||
|
139 | 139 | rtems_status_code status; |
|
140 | 140 | rtems_id queue_id_send; |
|
141 | 141 | rtems_id queue_id_q_p2; |
|
142 | bp_packet packet_norm_bp1; | |
|
143 | bp_packet packet_norm_bp2; | |
|
142 | bp_packet __attribute__((aligned(4))) packet_norm_bp1; | |
|
143 | bp_packet __attribute__((aligned(4))) packet_norm_bp2; | |
|
144 | 144 | ring_node *current_ring_node_to_send_asm_f2; |
|
145 | 145 | float nbSMInASMNORM; |
|
146 | 146 |
@@ -29,7 +29,7 rtems_task actn_task( rtems_task_argumen | |||
|
29 | 29 | |
|
30 | 30 | int result; |
|
31 | 31 | rtems_status_code status; // RTEMS status code |
|
32 | ccsdsTelecommandPacket_t TC; // TC sent to the ACTN task | |
|
32 | ccsdsTelecommandPacket_t __attribute__((aligned(4))) TC; // TC sent to the ACTN task | |
|
33 | 33 | size_t size; // size of the incoming TC packet |
|
34 | 34 | unsigned char subtype; // subtype of the current TC packet |
|
35 | 35 | unsigned char time[BYTES_PER_TIME]; |
@@ -174,16 +174,13 int action_enter_mode(ccsdsTelecommandPa | |||
|
174 | 174 | |
|
175 | 175 | rtems_status_code status; |
|
176 | 176 | unsigned char requestedMode; |
|
177 | unsigned int *transitionCoarseTime_ptr; | |
|
178 | 177 | unsigned int transitionCoarseTime; |
|
179 | 178 | unsigned char * bytePosPtr; |
|
180 | 179 | |
|
181 | 180 | bytePosPtr = (unsigned char *) &TC->packetID; |
|
182 | ||
|
183 | 181 | requestedMode = bytePosPtr[ BYTE_POS_CP_MODE_LFR_SET ]; |
|
184 |
|
|
|
185 |
transitionCoarseTime = |
|
|
186 | ||
|
182 | copyInt32ByChar( (char*) &transitionCoarseTime, &bytePosPtr[ BYTE_POS_CP_LFR_ENTER_MODE_TIME ] ); | |
|
183 | transitionCoarseTime = transitionCoarseTime & COARSE_TIME_MASK; | |
|
187 | 184 | status = check_mode_value( requestedMode ); |
|
188 | 185 | |
|
189 | 186 | if ( status != LFR_SUCCESSFUL ) // the mode value is inconsistent |
@@ -1387,8 +1384,8 void setCalibrationData( void ) | |||
|
1387 | 1384 | // build the signal for the SCM calibration |
|
1388 | 1385 | for (k = 0; k < CAL_NB_PTS; k++) |
|
1389 | 1386 | { |
|
1390 |
val = sin( |
|
|
1391 |
+ sin( |
|
|
1387 | val = CAL_A0 * sin( CAL_W0 * k * Ts ) | |
|
1388 | + CAL_A1 * sin( CAL_W1 * k * Ts ); | |
|
1392 | 1389 | data = (unsigned short) ((val * CAL_SCALE_FACTOR) + CONST_2048); |
|
1393 | 1390 | time_management_regs->calData = data & CAL_DATA_MASK; |
|
1394 | 1391 | } |
@@ -978,7 +978,7 void getReactionWheelsFrequencies( ccsds | |||
|
978 | 978 | (unsigned char*) &bytePosPtr[ BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F2 ] ); |
|
979 | 979 | } |
|
980 | 980 | |
|
981 | void setFBinMask( unsigned char *fbins_mask, float rw_f, unsigned char deltaFreq, unsigned char flag ) | |
|
981 | void setFBinMask( unsigned char *fbins_mask, float rw_f, unsigned char deltaFreq, unsigned char flag, float sy_lfr_rw_k ) | |
|
982 | 982 | { |
|
983 | 983 | /** This function executes specific actions when a TC_LFR_UPDATE_INFO TeleCommand has been received. |
|
984 | 984 | * |
@@ -998,6 +998,7 void setFBinMask( unsigned char *fbins_m | |||
|
998 | 998 | float fi; |
|
999 | 999 | float deltaBelow; |
|
1000 | 1000 | float deltaAbove; |
|
1001 | float freqToFilterOut; | |
|
1001 | 1002 | int binBelow; |
|
1002 | 1003 | int binAbove; |
|
1003 | 1004 | int closestBin; |
@@ -1006,77 +1007,98 void setFBinMask( unsigned char *fbins_m | |||
|
1006 | 1007 | int bin; |
|
1007 | 1008 | int binToRemove[NB_BINS_TO_REMOVE]; |
|
1008 | 1009 | int k; |
|
1010 | bool filteringSet; | |
|
1009 | 1011 | |
|
1010 | 1012 | closestBin = 0; |
|
1011 | 1013 | whichByte = 0; |
|
1012 | 1014 | bin = 0; |
|
1015 | filteringSet = false; | |
|
1013 | 1016 | |
|
1014 | 1017 | for (k = 0; k < NB_BINS_TO_REMOVE; k++) |
|
1015 | 1018 | { |
|
1016 | 1019 | binToRemove[k] = -1; |
|
1017 | 1020 | } |
|
1018 | 1021 | |
|
1019 |
// compute the frequency range to filter [ rw_f - delta_f |
|
|
1020 |
f_RW_min = rw_f - (filterPar.sy_lfr_sc_rw_delta_f |
|
|
1021 |
f_RW_MAX = rw_f + (filterPar.sy_lfr_sc_rw_delta_f |
|
|
1022 | // compute the frequency range to filter [ rw_f - delta_f; rw_f + delta_f ] | |
|
1023 | f_RW_min = rw_f - ((filterPar.sy_lfr_sc_rw_delta_f) * sy_lfr_rw_k); | |
|
1024 | f_RW_MAX = rw_f + ((filterPar.sy_lfr_sc_rw_delta_f) * sy_lfr_rw_k); | |
|
1022 | 1025 | |
|
1023 | // compute the index of the frequency bin immediately below rw_f | |
|
1024 | binBelow = (int) ( floor( ((double) rw_f) / ((double) deltaFreq)) ); | |
|
1025 | deltaBelow = rw_f - binBelow * deltaFreq; | |
|
1026 | freqToFilterOut = f_RW_min; | |
|
1027 | while ( filteringSet == false ) | |
|
1028 | { | |
|
1029 | // compute the index of the frequency bin immediately below rw_f | |
|
1030 | binBelow = (int) ( floor( ((double) freqToFilterOut) / ((double) deltaFreq)) ); | |
|
1031 | deltaBelow = freqToFilterOut - binBelow * deltaFreq; | |
|
1026 | 1032 | |
|
1027 | // compute the index of the frequency bin immediately above rw_f | |
|
1028 |
binAbove = (int) ( ceil( ((double) |
|
|
1029 |
deltaAbove = binAbove * deltaFreq - |
|
|
1033 | // compute the index of the frequency bin immediately above rw_f | |
|
1034 | binAbove = (int) ( ceil( ((double) freqToFilterOut) / ((double) deltaFreq)) ); | |
|
1035 | deltaAbove = binAbove * deltaFreq - freqToFilterOut; | |
|
1030 | 1036 | |
|
1031 | // search the closest bin | |
|
1032 | if (deltaAbove > deltaBelow) | |
|
1033 | { | |
|
1034 | closestBin = binBelow; | |
|
1035 | } | |
|
1036 | else | |
|
1037 | { | |
|
1038 | closestBin = binAbove; | |
|
1039 | } | |
|
1037 | // search the closest bin | |
|
1038 | if (deltaAbove > deltaBelow) | |
|
1039 | { | |
|
1040 | closestBin = binBelow; | |
|
1041 | } | |
|
1042 | else | |
|
1043 | { | |
|
1044 | closestBin = binAbove; | |
|
1045 | } | |
|
1040 | 1046 | |
|
1041 | // compute the fi interval [fi - deltaFreq * 0.285, fi + deltaFreq * 0.285] | |
|
1042 | fi = closestBin * deltaFreq; | |
|
1043 | fi_min = fi - (deltaFreq * FI_INTERVAL_COEFF); | |
|
1044 | fi_MAX = fi + (deltaFreq * FI_INTERVAL_COEFF); | |
|
1047 | // compute the fi interval [fi - deltaFreq * 0.285, fi + deltaFreq * 0.285] | |
|
1048 | fi = closestBin * deltaFreq; | |
|
1049 | fi_min = fi - (deltaFreq * FI_INTERVAL_COEFF); | |
|
1050 | fi_MAX = fi + (deltaFreq * FI_INTERVAL_COEFF); | |
|
1051 | ||
|
1052 | //************************************************************************************** | |
|
1053 | // be careful here, one shall take into account that the bin 0 IS DROPPED in the spectra | |
|
1054 | // thus, the index 0 in a mask corresponds to the bin 1 of the spectrum | |
|
1055 | //************************************************************************************** | |
|
1045 | 1056 | |
|
1046 | //************************************************************************************** | |
|
1047 | // be careful here, one shall take into account that the bin 0 IS DROPPED in the spectra | |
|
1048 | // thus, the index 0 in a mask corresponds to the bin 1 of the spectrum | |
|
1049 | //************************************************************************************** | |
|
1057 | // 1. IF freqToFilterOut is included in [ fi_min; fi_MAX ] | |
|
1058 | // => remove f_(i), f_(i-1) and f_(i+1) | |
|
1059 | if ( ( freqToFilterOut > fi_min ) && ( freqToFilterOut < fi_MAX ) ) | |
|
1060 | { | |
|
1061 | binToRemove[0] = (closestBin - 1) - 1; | |
|
1062 | binToRemove[1] = (closestBin) - 1; | |
|
1063 | binToRemove[2] = (closestBin + 1) - 1; | |
|
1064 | } | |
|
1065 | // 2. ELSE | |
|
1066 | // => remove the two f_(i) which are around f_RW | |
|
1067 | else | |
|
1068 | { | |
|
1069 | binToRemove[0] = (binBelow) - 1; | |
|
1070 | binToRemove[1] = (binAbove) - 1; | |
|
1071 | binToRemove[2] = (-1); | |
|
1072 | } | |
|
1050 | 1073 | |
|
1051 | // 1. IF [ f_RW_min, f_RW_MAX] is included in [ fi_min; fi_MAX ] | |
|
1052 | // => remove f_(i), f_(i-1) and f_(i+1) | |
|
1053 | if ( ( f_RW_min > fi_min ) && ( f_RW_MAX < fi_MAX ) ) | |
|
1054 | { | |
|
1055 | binToRemove[0] = (closestBin - 1) - 1; | |
|
1056 | binToRemove[1] = (closestBin) - 1; | |
|
1057 | binToRemove[2] = (closestBin + 1) - 1; | |
|
1058 | } | |
|
1059 | // 2. ELSE | |
|
1060 | // => remove the two f_(i) which are around f_RW | |
|
1061 | else | |
|
1062 | { | |
|
1063 | binToRemove[0] = (binBelow) - 1; | |
|
1064 | binToRemove[1] = (binAbove) - 1; | |
|
1065 | binToRemove[2] = (-1); | |
|
1066 | } | |
|
1074 | for (k = 0; k < NB_BINS_TO_REMOVE; k++) | |
|
1075 | { | |
|
1076 | bin = binToRemove[k]; | |
|
1077 | if ( (bin >= BIN_MIN) && (bin <= BIN_MAX) ) | |
|
1078 | { | |
|
1079 | if (flag == 1) | |
|
1080 | { | |
|
1081 | whichByte = (bin >> SHIFT_3_BITS); // division by 8 | |
|
1082 | selectedByte = ( 1 << (bin - (whichByte * BITS_PER_BYTE)) ); | |
|
1083 | fbins_mask[BYTES_PER_MASK - 1 - whichByte] = | |
|
1084 | fbins_mask[BYTES_PER_MASK - 1 - whichByte] & ((unsigned char) (~selectedByte)); // bytes are ordered MSB first in the packets | |
|
1085 | } | |
|
1086 | } | |
|
1087 | } | |
|
1067 | 1088 | |
|
1068 | for (k = 0; k < NB_BINS_TO_REMOVE; k++) | |
|
1069 | { | |
|
1070 | bin = binToRemove[k]; | |
|
1071 | if ( (bin >= BIN_MIN) && (bin <= BIN_MAX) ) | |
|
1089 | // update freqToFilterOut | |
|
1090 | if ( freqToFilterOut == f_RW_MAX ) | |
|
1091 | { | |
|
1092 | filteringSet = true; // end of the loop | |
|
1093 | } | |
|
1094 | else | |
|
1072 | 1095 | { |
|
1073 | if (flag == 1) | |
|
1074 |
|
|
|
1075 | whichByte = (bin >> SHIFT_3_BITS); // division by 8 | |
|
1076 | selectedByte = ( 1 << (bin - (whichByte * BITS_PER_BYTE)) ); | |
|
1077 | fbins_mask[BYTES_PER_MASK - 1 - whichByte] = | |
|
1078 | fbins_mask[BYTES_PER_MASK - 1 - whichByte] & ((unsigned char) (~selectedByte)); // bytes are ordered MSB first in the packets | |
|
1079 | } | |
|
1096 | freqToFilterOut = freqToFilterOut + deltaFreq; | |
|
1097 | } | |
|
1098 | ||
|
1099 | if ( freqToFilterOut > f_RW_MAX) | |
|
1100 | { | |
|
1101 | freqToFilterOut = f_RW_MAX; | |
|
1080 | 1102 | } |
|
1081 | 1103 | } |
|
1082 | 1104 | } |
@@ -1117,28 +1139,28 void build_sy_lfr_rw_mask( unsigned int | |||
|
1117 | 1139 | } |
|
1118 | 1140 | |
|
1119 | 1141 | // RW1 F1 |
|
1120 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F1) >> SHIFT_7_BITS ); |
|
|
1142 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F1) >> SHIFT_7_BITS, 1. ); // [1000 0000] | |
|
1121 | 1143 | |
|
1122 | 1144 | // RW1 F2 |
|
1123 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F2) >> SHIFT_6_BITS ); |
|
|
1145 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw1_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW1_F2) >> SHIFT_6_BITS, 1. ); // [0100 0000] | |
|
1124 | 1146 | |
|
1125 | 1147 | // RW2 F1 |
|
1126 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F1) >> SHIFT_5_BITS ); |
|
|
1148 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F1) >> SHIFT_5_BITS, 1. ); // [0010 0000] | |
|
1127 | 1149 | |
|
1128 | 1150 | // RW2 F2 |
|
1129 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F2) >> SHIFT_4_BITS ); |
|
|
1151 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw2_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW2_F2) >> SHIFT_4_BITS, 1. ); // [0001 0000] | |
|
1130 | 1152 | |
|
1131 | 1153 | // RW3 F1 |
|
1132 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F1) >> SHIFT_3_BITS ); |
|
|
1154 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F1) >> SHIFT_3_BITS, 1. ); // [0000 1000] | |
|
1133 | 1155 | |
|
1134 | 1156 | // RW3 F2 |
|
1135 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F2) >> SHIFT_2_BITS ); |
|
|
1157 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw3_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW3_F2) >> SHIFT_2_BITS, 1. ); // [0000 0100] | |
|
1136 | 1158 | |
|
1137 | 1159 | // RW4 F1 |
|
1138 |
setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F1) >> 1 ); |
|
|
1160 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f1, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F1) >> 1 , 1. ); // [0000 0010] | |
|
1139 | 1161 | |
|
1140 | 1162 | // RW4 F2 |
|
1141 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F2) ); // [0000 0001] | |
|
1163 | setFBinMask( local_rw_fbins_mask, cp_rpw_sc_rw4_f2, deltaF, (cp_rpw_sc_rw_f_flags & BIT_RW4_F2) , 1.); // [0000 0001] | |
|
1142 | 1164 | |
|
1143 | 1165 | // update the value of the fbins related to reaction wheels frequency filtering |
|
1144 | 1166 | if (maskPtr != NULL) |
@@ -1318,7 +1340,6 int set_sy_lfr_kcoeff( ccsdsTelecommandP | |||
|
1318 | 1340 | unsigned int kcoeff; |
|
1319 | 1341 | unsigned short sy_lfr_kcoeff_frequency; |
|
1320 | 1342 | unsigned short bin; |
|
1321 | unsigned short *freqPtr; | |
|
1322 | 1343 | float *kcoeffPtr_norm; |
|
1323 | 1344 | float *kcoeffPtr_sbm; |
|
1324 | 1345 | int status; |
@@ -1327,14 +1348,14 int set_sy_lfr_kcoeff( ccsdsTelecommandP | |||
|
1327 | 1348 | unsigned char *kcoeffSbmPtr_a; |
|
1328 | 1349 | unsigned char *kcoeffSbmPtr_b; |
|
1329 | 1350 | |
|
1330 | status = LFR_SUCCESSFUL; | |
|
1331 | ||
|
1351 | sy_lfr_kcoeff_frequency = 0; | |
|
1352 | bin = 0; | |
|
1332 | 1353 | kcoeffPtr_norm = NULL; |
|
1333 | 1354 | kcoeffPtr_sbm = NULL; |
|
1334 | bin = 0; | |
|
1355 | status = LFR_SUCCESSFUL; | |
|
1335 | 1356 | |
|
1336 | freqPtr = (unsigned short *) &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY]; | |
|
1337 | sy_lfr_kcoeff_frequency = *freqPtr; | |
|
1357 | // copy the value of the frequency byte by byte DO NOT USE A SHORT* POINTER | |
|
1358 | copyInt16ByChar( (unsigned char*) &sy_lfr_kcoeff_frequency, &TC->dataAndCRC[DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY] ); | |
|
1338 | 1359 | |
|
1339 | 1360 | if ( sy_lfr_kcoeff_frequency >= NB_BINS_COMPRESSED_SM ) |
|
1340 | 1361 | { |
@@ -1396,7 +1417,7 int set_sy_lfr_kcoeff( ccsdsTelecommandP | |||
|
1396 | 1417 | } |
|
1397 | 1418 | } |
|
1398 | 1419 | |
|
1399 |
|
|
|
1420 | //print_k_coeff(); | |
|
1400 | 1421 | |
|
1401 | 1422 | return status; |
|
1402 | 1423 | } |
@@ -1409,11 +1430,26 void copyFloatByChar( unsigned char *des | |||
|
1409 | 1430 | destination[BYTE_3] = source[BYTE_3]; |
|
1410 | 1431 | } |
|
1411 | 1432 | |
|
1433 | void copyInt32ByChar( unsigned char *destination, unsigned char *source ) | |
|
1434 | { | |
|
1435 | destination[BYTE_0] = source[BYTE_0]; | |
|
1436 | destination[BYTE_1] = source[BYTE_1]; | |
|
1437 | destination[BYTE_2] = source[BYTE_2]; | |
|
1438 | destination[BYTE_3] = source[BYTE_3]; | |
|
1439 | } | |
|
1440 | ||
|
1441 | void copyInt16ByChar( unsigned char *destination, unsigned char *source ) | |
|
1442 | { | |
|
1443 | destination[BYTE_0] = source[BYTE_0]; | |
|
1444 | destination[BYTE_1] = source[BYTE_1]; | |
|
1445 | } | |
|
1446 | ||
|
1412 | 1447 | void floatToChar( float value, unsigned char* ptr) |
|
1413 | 1448 | { |
|
1414 | 1449 | unsigned char* valuePtr; |
|
1415 | 1450 | |
|
1416 | 1451 | valuePtr = (unsigned char*) &value; |
|
1452 | ||
|
1417 | 1453 | ptr[BYTE_0] = valuePtr[BYTE_0]; |
|
1418 | 1454 | ptr[BYTE_1] = valuePtr[BYTE_1]; |
|
1419 | 1455 | ptr[BYTE_2] = valuePtr[BYTE_2]; |