@@ -1,2 +1,2 | |||
|
1 | 1 | a586fe639ac179e95bdc150ebdbab0312f31dc30 LFR_basic-parameters |
|
2 | b984c315bf99562bdfbbd6bda8de296d2e692adc header/lfr_common_headers | |
|
2 | 6d02d4b02291d2b25c387fa74037dc7929cd92b5 header/lfr_common_headers |
@@ -34,8 +34,8 void increment_seq_counter(unsigned shor | |||
|
34 | 34 | void getTime( unsigned char *time); |
|
35 | 35 | unsigned long long int getTimeAsUnsignedLongLongInt( ); |
|
36 | 36 | void send_dumb_hk( void ); |
|
37 | void get_temperatures( unsigned char *temperatures ); | |
|
37 | 38 | void get_v_e1_e2_f3( unsigned char *spacecraft_potential ); |
|
38 | void get_temperatures( unsigned char *temperatures ); | |
|
39 | 39 | void get_cpu_load( unsigned char *resource_statistics ); |
|
40 | 40 | |
|
41 | 41 | extern int sched_yield( void ); |
@@ -139,9 +139,10 static inline void SM_average(float *ave | |||
|
139 | 139 | ring_node *ring_node_tab[], |
|
140 | 140 | unsigned int nbAverageNORM, unsigned int nbAverageSBM, |
|
141 | 141 | asm_msg *msgForMATR ); |
|
142 |
static inline void SM_average_debug( |
|
|
143 |
|
|
|
144 |
|
|
|
142 | static inline void SM_average_debug(float *averaged_spec_mat_NORM, float *averaged_spec_mat_SBM, | |
|
143 | ring_node *ring_node_tab[], | |
|
144 | unsigned int nbAverageNORM, unsigned int nbAverageSBM, | |
|
145 | asm_msg *msgForMATR ); | |
|
145 | 146 | |
|
146 | 147 | void ASM_patch( float *inputASM, float *outputASM ); |
|
147 | 148 | void extractReImVectors(float *inputASM, float *outputASM, unsigned int asmComponent ); |
@@ -201,8 +202,9 void SM_average( float *averaged_spec_ma | |||
|
201 | 202 | } |
|
202 | 203 | |
|
203 | 204 | void SM_average_debug( float *averaged_spec_mat_NORM, float *averaged_spec_mat_SBM, |
|
204 |
|
|
|
205 |
|
|
|
205 | ring_node *ring_node_tab[], | |
|
206 | unsigned int nbAverageNORM, unsigned int nbAverageSBM, | |
|
207 | asm_msg *msgForMATR ) | |
|
206 | 208 | { |
|
207 | 209 | float sum; |
|
208 | 210 | unsigned int i; |
@@ -210,26 +212,12 void SM_average_debug( float *averaged_s | |||
|
210 | 212 | for(i=0; i<TOTAL_SIZE_SM; i++) |
|
211 | 213 | { |
|
212 | 214 | sum = ( (int *) (ring_node_tab[0]->buffer_address) ) [ i ]; |
|
213 | ||
|
214 | if ( (nbAverageNORM == 0) && (nbAverageSBM == 0) ) | |
|
215 | { | |
|
216 | averaged_spec_mat_NORM[ i ] = sum; | |
|
217 | averaged_spec_mat_SBM[ i ] = sum; | |
|
218 | } | |
|
219 | else if ( (nbAverageNORM != 0) && (nbAverageSBM != 0) ) | |
|
220 | { | |
|
221 | averaged_spec_mat_NORM[ i ] = sum; | |
|
222 | averaged_spec_mat_SBM[ i ] = sum; | |
|
223 | } | |
|
224 | else if ( (nbAverageNORM != 0) && (nbAverageSBM == 0) ) | |
|
225 | { | |
|
226 | averaged_spec_mat_NORM[ i ] = sum; | |
|
227 | averaged_spec_mat_SBM[ i ] = sum; | |
|
228 | } | |
|
229 | else | |
|
230 | { | |
|
231 | PRINTF2("ERR *** in SM_average *** unexpected parameters %d %d\n", nbAverageNORM, nbAverageSBM) | |
|
232 | } | |
|
215 | averaged_spec_mat_NORM[ i ] = sum; | |
|
216 | averaged_spec_mat_SBM[ i ] = sum; | |
|
217 | msgForMATR->coarseTimeNORM = ring_node_tab[0]->coarseTime; | |
|
218 | msgForMATR->fineTimeNORM = ring_node_tab[0]->fineTime; | |
|
219 | msgForMATR->coarseTimeSBM = ring_node_tab[0]->coarseTime; | |
|
220 | msgForMATR->fineTimeSBM = ring_node_tab[0]->fineTime; | |
|
233 | 221 | } |
|
234 | 222 | } |
|
235 | 223 |
@@ -225,8 +225,8 rtems_task hous_task(rtems_task_argument | |||
|
225 | 225 | |
|
226 | 226 | spacewire_update_statistics(); |
|
227 | 227 | |
|
228 |
get_ |
|
|
229 |
get_ |
|
|
228 | get_temperatures( housekeeping_packet.hk_lfr_temp_scm ); | |
|
229 | get_v_e1_e2_f3( housekeeping_packet.hk_lfr_sc_v_f3 ); | |
|
230 | 230 | get_cpu_load( (unsigned char *) &housekeeping_packet.hk_lfr_cpu_load ); |
|
231 | 231 | |
|
232 | 232 | // SEND PACKET |
@@ -442,6 +442,24 void send_dumb_hk( void ) | |||
|
442 | 442 | PACKET_LENGTH_HK + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES); |
|
443 | 443 | } |
|
444 | 444 | |
|
445 | void get_temperatures( unsigned char *temperatures ) | |
|
446 | { | |
|
447 | unsigned char* temp_scm_ptr; | |
|
448 | unsigned char* temp_pcb_ptr; | |
|
449 | unsigned char* temp_fpga_ptr; | |
|
450 | ||
|
451 | temp_scm_ptr = (unsigned char *) &time_management_regs->temp_scm; | |
|
452 | temp_pcb_ptr = (unsigned char *) &time_management_regs->temp_pcb; | |
|
453 | temp_fpga_ptr = (unsigned char *) &time_management_regs->temp_fpga; | |
|
454 | ||
|
455 | temperatures[0] = temp_scm_ptr[2]; | |
|
456 | temperatures[1] = temp_scm_ptr[3]; | |
|
457 | temperatures[2] = temp_pcb_ptr[2]; | |
|
458 | temperatures[3] = temp_pcb_ptr[3]; | |
|
459 | temperatures[4] = temp_fpga_ptr[2]; | |
|
460 | temperatures[5] = temp_fpga_ptr[3]; | |
|
461 | } | |
|
462 | ||
|
445 | 463 | void get_v_e1_e2_f3( unsigned char *spacecraft_potential ) |
|
446 | 464 | { |
|
447 | 465 | unsigned char* v_ptr; |
@@ -460,24 +478,6 void get_v_e1_e2_f3( unsigned char *spac | |||
|
460 | 478 | spacecraft_potential[5] = e2_ptr[3]; |
|
461 | 479 | } |
|
462 | 480 | |
|
463 | void get_temperatures( unsigned char *temperatures ) | |
|
464 | { | |
|
465 | unsigned char* temp_scm_ptr; | |
|
466 | unsigned char* temp_pcb_ptr; | |
|
467 | unsigned char* temp_fpga_ptr; | |
|
468 | ||
|
469 | temp_scm_ptr = (unsigned char *) &time_management_regs->temp_scm; | |
|
470 | temp_pcb_ptr = (unsigned char *) &time_management_regs->temp_pcb; | |
|
471 | temp_fpga_ptr = (unsigned char *) &time_management_regs->temp_fpga; | |
|
472 | ||
|
473 | temperatures[0] = temp_scm_ptr[2]; | |
|
474 | temperatures[1] = temp_scm_ptr[3]; | |
|
475 | temperatures[2] = temp_pcb_ptr[2]; | |
|
476 | temperatures[3] = temp_pcb_ptr[3]; | |
|
477 | temperatures[4] = temp_fpga_ptr[2]; | |
|
478 | temperatures[5] = temp_fpga_ptr[3]; | |
|
479 | } | |
|
480 | ||
|
481 | 481 | void get_cpu_load( unsigned char *resource_statistics ) |
|
482 | 482 | { |
|
483 | 483 | unsigned char cpu_load; |
@@ -988,9 +988,6 int spw_send_waveform_CWF3_light( ring_n | |||
|
988 | 988 | header->blkNr[0] = (unsigned char) (BLK_NR_CWF_SHORT_F3 >> 8); |
|
989 | 989 | header->blkNr[1] = (unsigned char) (BLK_NR_CWF_SHORT_F3 ); |
|
990 | 990 | |
|
991 | printf("spw_send_waveform_CWF3_light => [0] = %x, [1] = %x, [2] = %x, [3] = %x, [4] = %x, [5] = %x\n", | |
|
992 | dataPtr[0], dataPtr[1], dataPtr[2], dataPtr[3], dataPtr[4], dataPtr[5]); | |
|
993 | ||
|
994 | 991 | //********************* |
|
995 | 992 | // SEND CWF3_light DATA |
|
996 | 993 | for (i=0; i<NB_PACKETS_PER_GROUP_OF_CWF_LIGHT; i++) // send waveform |
@@ -210,11 +210,11 inline void waveforms_isr_burst( void ) | |||
|
210 | 210 | switch(status) |
|
211 | 211 | { |
|
212 | 212 | case 1: |
|
213 | ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; | |
|
214 | ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; | |
|
215 | current_ring_node_f2 = current_ring_node_f2->next; | |
|
213 | ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; | |
|
214 | ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; | |
|
216 | 215 | ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_0_coarse_time; |
|
217 | 216 | ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_0_fine_time; |
|
217 | current_ring_node_f2 = current_ring_node_f2->next; | |
|
218 | 218 | waveform_picker_regs->addr_data_f2_0 = current_ring_node_f2->buffer_address; |
|
219 | 219 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { |
|
220 | 220 | spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ); |
@@ -222,11 +222,11 inline void waveforms_isr_burst( void ) | |||
|
222 | 222 | waveform_picker_regs->status = waveform_picker_regs->status & 0x00004410; // [0100 0100 0001 0000] |
|
223 | 223 | break; |
|
224 | 224 | case 2: |
|
225 | ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; | |
|
226 | ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; | |
|
227 | current_ring_node_f2 = current_ring_node_f2->next; | |
|
225 | ring_node_to_send_cwf_f2 = current_ring_node_f2->previous; | |
|
226 | ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2; | |
|
228 | 227 | ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_1_coarse_time; |
|
229 | 228 | ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_1_fine_time; |
|
229 | current_ring_node_f2 = current_ring_node_f2->next; | |
|
230 | 230 | waveform_picker_regs->addr_data_f2_1 = current_ring_node_f2->buffer_address; |
|
231 | 231 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { |
|
232 | 232 | spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ); |
@@ -867,8 +867,6 int send_waveform_CWF3_light( ring_node | |||
|
867 | 867 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 5 ] = sample[ 5 ]; |
|
868 | 868 | } |
|
869 | 869 | |
|
870 | printf("send_waveform_CWF3_light => [0] = %x, [1] = %x, [2] = %x\n", dataPtr[0], dataPtr[1], dataPtr[2]); | |
|
871 | ||
|
872 | 870 | // SEND PACKET |
|
873 | 871 | status = rtems_message_queue_send( queue_id, &ring_node_cwf3_light, sizeof( ring_node* ) ); |
|
874 | 872 | if (status != RTEMS_SUCCESSFUL) { |
@@ -981,7 +979,6 void build_snapshot_from_ring( ring_node | |||
|
981 | 979 | |
|
982 | 980 | // (2) compute the central reference time |
|
983 | 981 | centerTime_asLong = acquisitionTimeF0_asLong + deltaT_F0; |
|
984 | printf("centerTime_asLong = %llx\n", centerTime_asLong); | |
|
985 | 982 | |
|
986 | 983 | // (3) compute the acquisition time of the current snapshot |
|
987 | 984 | switch(frequencyChannel) |
@@ -1089,8 +1086,8 void snapshot_resynchronization( unsigne | |||
|
1089 | 1086 | deltaPrevious = ((double) deltaPreviousTick) / 65536. * 1000.; |
|
1090 | 1087 | deltaNext = ((double) deltaNextTick) / 65536. * 1000.; |
|
1091 | 1088 | |
|
1092 |
|
|
|
1093 |
|
|
|
1089 | PRINTF2("delta previous = %f ms, delta next = %f ms\n", deltaPrevious, deltaNext) | |
|
1090 | PRINTF2("delta previous = %llu, delta next = %llu\n", deltaPreviousTick, deltaNextTick) | |
|
1094 | 1091 | |
|
1095 | 1092 | // which tick is the closest |
|
1096 | 1093 | if (deltaPreviousTick > deltaNextTick) |
@@ -1225,6 +1222,9 void set_wfp_data_shaping( void ) | |||
|
1225 | 1222 | + ( (data_shaping & 0x04) ) // SP1 |
|
1226 | 1223 | + ( (data_shaping & 0x02) << 2 ) // R0 |
|
1227 | 1224 | + ( (data_shaping & 0x01) << 4 ); // R1 |
|
1225 | ||
|
1226 | // this is a temporary way to set R2, compatible with the release 2 of the flight software | |
|
1227 | waveform_picker_regs->data_shaping = waveform_picker_regs->data_shaping + ( (0x1) << 5 ); // R2 | |
|
1228 | 1228 | } |
|
1229 | 1229 | |
|
1230 | 1230 | void set_wfp_burst_enable_register( unsigned char mode ) |
General Comments 0
You need to be logged in to leave comments.
Login now