##// END OF EJS Templates
ASM restart sequence updated at the interrupt service routine level...
ASM restart sequence updated at the interrupt service routine level first timecode missing detection modified

File last commit:

r257:132f1c3627d7 R3a
r259:af93852650f9 R3a
Show More
wf_handler.c
1294 lines | 47.3 KiB | text/x-c | CLexer
paul
Header files inclusion reworked...
r40 /** Functions and tasks related to waveform packet generation.
*
* @file
* @author P. LEROY
*
* A group of functions to handle waveforms, in snapshot or continuous format.\n
*
*/
#include "wf_handler.h"
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 //***************
// waveform rings
// F0
paul
ICD 2.0...
r92 ring_node waveform_ring_f0[NB_RING_NODES_F0];
ring_node *current_ring_node_f0;
ring_node *ring_node_to_send_swf_f0;
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 // F1
ring_node waveform_ring_f1[NB_RING_NODES_F1];
paul
First version of the rings for the waveform picker.
r87 ring_node *current_ring_node_f1;
ring_node *ring_node_to_send_swf_f1;
ring_node *ring_node_to_send_cwf_f1;
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 // F2
ring_node waveform_ring_f2[NB_RING_NODES_F2];
paul
First version of the rings for the waveform picker.
r87 ring_node *current_ring_node_f2;
ring_node *ring_node_to_send_swf_f2;
ring_node *ring_node_to_send_cwf_f2;
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 // F3
ring_node waveform_ring_f3[NB_RING_NODES_F3];
paul
waveform buffers declaration modified...
r131 ring_node *current_ring_node_f3;
ring_node *ring_node_to_send_cwf_f3;
paul
sync
r181 char wf_cont_f3_light[ (NB_SAMPLES_PER_SNAPSHOT) * NB_BYTES_CWF3_LIGHT_BLK ];
paul
First version of the rings for the waveform picker.
r87
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 bool extractSWF1 = false;
bool extractSWF2 = false;
bool swf0_ready_flag_f1 = false;
bool swf0_ready_flag_f2 = false;
bool swf1_ready = false;
bool swf2_ready = false;
paul
snapshot extraction for the waveform ring is operational...
r105
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 int swf1_extracted[ (NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK) ];
int swf2_extracted[ (NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK) ];
ring_node ring_node_swf1_extracted;
ring_node ring_node_swf2_extracted;
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106
paul
Commit before changing the resynchro strategy
r256 typedef enum resynchro_state_t
{
paul
snapshot resynchro changed...
r257 MEASURE_0,
MEASURE_1,
CORRECTION_0,
CORRECTION_1
paul
Commit before changing the resynchro strategy
r256 } resynchro_state;
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106 //*********************
// Interrupt SubRoutine
paul
Integration of basic parameters functions in the flight software...
r179 ring_node * getRingNodeToSendCWF( unsigned char frequencyChannel)
{
ring_node *node;
node = NULL;
switch ( frequencyChannel ) {
case 1:
node = ring_node_to_send_cwf_f1;
break;
case 2:
node = ring_node_to_send_cwf_f2;
break;
case 3:
node = ring_node_to_send_cwf_f3;
break;
default:
break;
}
return node;
}
ring_node * getRingNodeToSendSWF( unsigned char frequencyChannel)
{
ring_node *node;
node = NULL;
switch ( frequencyChannel ) {
case 0:
node = ring_node_to_send_swf_f0;
break;
case 1:
node = ring_node_to_send_swf_f1;
break;
case 2:
node = ring_node_to_send_swf_f2;
break;
default:
break;
}
return node;
}
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106 void reset_extractSWF( void )
{
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 extractSWF1 = false;
extractSWF2 = false;
swf0_ready_flag_f1 = false;
swf0_ready_flag_f2 = false;
swf1_ready = false;
swf2_ready = false;
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106 }
paul
snapshot extraction for the waveform ring is operational...
r105
paul
New version of the waveform picker packet transmission...
r172 inline void waveforms_isr_f3( void )
paul
timegen version 0.0.0.1
r170 {
rtems_status_code spare_status;
if ( (lfrCurrentMode == LFR_MODE_NORMAL) || (lfrCurrentMode == LFR_MODE_BURST) // in BURST the data are used to place v, e1 and e2 in the HK packet
|| (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) )
{ // in modes other than STANDBY and BURST, send the CWF_F3 data
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 //***
// F3
if ( (waveform_picker_regs->status & 0xc0) != 0x00 ) { // [1100 0000] check the f3 full bits
ring_node_to_send_cwf_f3 = current_ring_node_f3->previous;
current_ring_node_f3 = current_ring_node_f3->next;
if ((waveform_picker_regs->status & 0x40) == 0x40){ // [0100 0000] f3 buffer 0 is full
ring_node_to_send_cwf_f3->coarseTime = waveform_picker_regs->f3_0_coarse_time;
ring_node_to_send_cwf_f3->fineTime = waveform_picker_regs->f3_0_fine_time;
waveform_picker_regs->addr_data_f3_0 = current_ring_node_f3->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00008840; // [1000 1000 0100 0000]
}
else if ((waveform_picker_regs->status & 0x80) == 0x80){ // [1000 0000] f3 buffer 1 is full
ring_node_to_send_cwf_f3->coarseTime = waveform_picker_regs->f3_1_coarse_time;
ring_node_to_send_cwf_f3->fineTime = waveform_picker_regs->f3_1_fine_time;
waveform_picker_regs->addr_data_f3_1 = current_ring_node_f3->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00008880; // [1000 1000 1000 0000]
}
paul
timegen version 0.0.0.1
r170 if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) {
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );
paul
timegen version 0.0.0.1
r170 }
}
}
}
paul
New version of the waveform picker packet transmission...
r172 inline void waveforms_isr_burst( void )
paul
timegen version 0.0.0.1
r170 {
paul
Integration of basic parameters functions in the flight software...
r179 unsigned char status;
paul
timegen version 0.0.0.1
r170 rtems_status_code spare_status;
paul
sync
r181 status = (waveform_picker_regs->status & 0x30) >> 4; // [0011 0000] get the status bits for f2
paul
Integration of basic parameters functions in the flight software...
r179
switch(status)
{
case 1:
paul
2.0.2.1
r185 ring_node_to_send_cwf_f2 = current_ring_node_f2->previous;
ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_0_coarse_time;
ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_0_fine_time;
paul
2.0.2.1
r185 current_ring_node_f2 = current_ring_node_f2->next;
paul
Integration of basic parameters functions in the flight software...
r179 waveform_picker_regs->addr_data_f2_0 = current_ring_node_f2->buffer_address;
paul
timegen version 0.0.0.1
r170 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );
paul
timegen version 0.0.0.1
r170 }
paul
sync
r181 waveform_picker_regs->status = waveform_picker_regs->status & 0x00004410; // [0100 0100 0001 0000]
paul
Integration of basic parameters functions in the flight software...
r179 break;
case 2:
paul
2.0.2.1
r185 ring_node_to_send_cwf_f2 = current_ring_node_f2->previous;
ring_node_to_send_cwf_f2->sid = SID_BURST_CWF_F2;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_1_coarse_time;
ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_1_fine_time;
paul
2.0.2.1
r185 current_ring_node_f2 = current_ring_node_f2->next;
paul
Integration of basic parameters functions in the flight software...
r179 waveform_picker_regs->addr_data_f2_1 = current_ring_node_f2->buffer_address;
if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );
}
paul
sync
r181 waveform_picker_regs->status = waveform_picker_regs->status & 0x00004420; // [0100 0100 0010 0000]
paul
Integration of basic parameters functions in the flight software...
r179 break;
default:
break;
paul
timegen version 0.0.0.1
r170 }
}
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 inline void waveform_isr_normal_sbm1_sbm2( void )
paul
timegen version 0.0.0.1
r170 {
rtems_status_code status;
//***
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 // F0
if ( (waveform_picker_regs->status & 0x03) != 0x00 ) // [0000 0011] check the f0 full bits
{
swf0_ready_flag_f1 = true;
swf0_ready_flag_f2 = true;
ring_node_to_send_swf_f0 = current_ring_node_f0->previous;
current_ring_node_f0 = current_ring_node_f0->next;
if ( (waveform_picker_regs->status & 0x01) == 0x01)
{
ring_node_to_send_swf_f0->coarseTime = waveform_picker_regs->f0_0_coarse_time;
ring_node_to_send_swf_f0->fineTime = waveform_picker_regs->f0_0_fine_time;
waveform_picker_regs->addr_data_f0_0 = current_ring_node_f0->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00001101; // [0001 0001 0000 0001]
}
else if ( (waveform_picker_regs->status & 0x02) == 0x02)
{
ring_node_to_send_swf_f0->coarseTime = waveform_picker_regs->f0_1_coarse_time;
ring_node_to_send_swf_f0->fineTime = waveform_picker_regs->f0_1_fine_time;
waveform_picker_regs->addr_data_f0_1 = current_ring_node_f0->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00001102; // [0001 0001 0000 0010]
}
}
//***
paul
timegen version 0.0.0.1
r170 // F1
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 if ( (waveform_picker_regs->status & 0x0c) != 0x00 ) { // [0000 1100] check the f1 full bits
paul
timegen version 0.0.0.1
r170 // (1) change the receiving buffer for the waveform picker
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 ring_node_to_send_cwf_f1 = current_ring_node_f1->previous;
current_ring_node_f1 = current_ring_node_f1->next;
if ( (waveform_picker_regs->status & 0x04) == 0x04)
{
ring_node_to_send_cwf_f1->coarseTime = waveform_picker_regs->f1_0_coarse_time;
ring_node_to_send_cwf_f1->fineTime = waveform_picker_regs->f1_0_fine_time;
waveform_picker_regs->addr_data_f1_0 = current_ring_node_f1->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00002204; // [0010 0010 0000 0100] f1 bits = 0
}
else if ( (waveform_picker_regs->status & 0x08) == 0x08)
{
ring_node_to_send_cwf_f1->coarseTime = waveform_picker_regs->f1_1_coarse_time;
ring_node_to_send_cwf_f1->fineTime = waveform_picker_regs->f1_1_fine_time;
waveform_picker_regs->addr_data_f1_1 = current_ring_node_f1->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00002208; // [0010 0010 0000 1000] f1 bits = 0
}
paul
timegen version 0.0.0.1
r170 // (2) send an event for the the CWF1 task for transmission (and snapshot extraction if needed)
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 status = rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_NORM_S1_S2 );
paul
timegen version 0.0.0.1
r170 }
//***
// F2
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 if ( (waveform_picker_regs->status & 0x30) != 0x00 ) { // [0011 0000] check the f2 full bit
paul
timegen version 0.0.0.1
r170 // (1) change the receiving buffer for the waveform picker
paul
sync
r181 ring_node_to_send_cwf_f2 = current_ring_node_f2->previous;
ring_node_to_send_cwf_f2->sid = SID_SBM2_CWF_F2;
current_ring_node_f2 = current_ring_node_f2->next;
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 if ( (waveform_picker_regs->status & 0x10) == 0x10)
{
ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_0_coarse_time;
ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_0_fine_time;
waveform_picker_regs->addr_data_f2_0 = current_ring_node_f2->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00004410; // [0100 0100 0001 0000]
}
else if ( (waveform_picker_regs->status & 0x20) == 0x20)
{
ring_node_to_send_cwf_f2->coarseTime = waveform_picker_regs->f2_1_coarse_time;
ring_node_to_send_cwf_f2->fineTime = waveform_picker_regs->f2_1_fine_time;
waveform_picker_regs->addr_data_f2_1 = current_ring_node_f2->buffer_address;
waveform_picker_regs->status = waveform_picker_regs->status & 0x00004420; // [0100 0100 0010 0000]
}
paul
timegen version 0.0.0.1
r170 // (2) send an event for the waveforms transmission
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 status = rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_NORM_S1_S2 );
paul
timegen version 0.0.0.1
r170 }
}
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 rtems_isr waveforms_isr( rtems_vector_number vector )
{
paul
Minor changes in .h inclusion
r45 /** This is the interrupt sub routine called by the waveform picker core.
*
* This ISR launch different actions depending mainly on two pieces of information:
* 1. the values read in the registers of the waveform picker.
* 2. the current LFR mode.
*
*/
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21
paul
timegen version 0.0.0.1
r170 // STATUS
// new error error buffer full
// 15 14 13 12 11 10 9 8
// f3 f2 f1 f0 f3 f2 f1 f0
//
// ready buffer
// 7 6 5 4 3 2 1 0
// f3_1 f3_0 f2_1 f2_0 f1_1 f1_0 f0_1 f0_0
paul
Many corrections done after Logiscope analysis
r166 rtems_status_code spare_status;
paul
Sync
r95
paul
timegen version 0.0.0.1
r170 waveforms_isr_f3();
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 if ( (waveform_picker_regs->status & 0xff00) != 0x00) // [1111 1111 0000 0000] check the error bits
paul
timegen version 0.0.0.1
r170 {
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_10 );
paul
sy_lfr_n_swf_p implemented...
r32 }
paul
packet emission task added...
r33 switch(lfrCurrentMode)
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 {
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 //********
// STANDBY
case LFR_MODE_STANDBY:
paul
packet emission task added...
r33 break;
paul
sync before modifying the snapshot resynchronization
r246 //**************************
// LFR NORMAL, SBM1 and SBM2
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 case LFR_MODE_NORMAL:
case LFR_MODE_SBM1:
case LFR_MODE_SBM2:
waveform_isr_normal_sbm1_sbm2();
paul
Sync
r95 break;
paul
sync before modifying the snapshot resynchronization
r246 //******
// BURST
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 case LFR_MODE_BURST:
paul
timegen version 0.0.0.1
r170 waveforms_isr_burst();
paul
Sync
r95 break;
paul
sync before modifying the snapshot resynchronization
r246 //********
// DEFAULT
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 default:
paul
packet emission task added...
r33 break;
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 }
}
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106 //************
// RTEMS TASKS
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 rtems_task wfrm_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
{
paul
Minor changes in .h inclusion
r45 /** This RTEMS task is dedicated to the transmission of snapshots of the NORMAL mode.
*
* @param unused is the starting argument of the RTEMS task
*
* The following data packets are sent by this task:
* - TM_LFR_SCIENCE_NORMAL_SWF_F0
* - TM_LFR_SCIENCE_NORMAL_SWF_F1
* - TM_LFR_SCIENCE_NORMAL_SWF_F2
*
*/
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 rtems_event_set event_out;
paul
Last commit before release 0-13...
r35 rtems_id queue_id;
paul
fsw-1-0...
r82 rtems_status_code status;
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 ring_node *ring_node_swf1_extracted_ptr;
ring_node *ring_node_swf2_extracted_ptr;
paul
New version of the waveform picker packet transmission...
r172
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 ring_node_swf1_extracted_ptr = (ring_node *) &ring_node_swf1_extracted;
ring_node_swf2_extracted_ptr = (ring_node *) &ring_node_swf2_extracted;
paul
2.0.1.1...
r168
paul
fsw-1-0...
r82 status = get_message_queue_id_send( &queue_id );
if (status != RTEMS_SUCCESSFUL)
{
paul
sync before modifying the snapshot resynchronization
r246 PRINTF1("in WFRM *** ERR get_message_queue_id_send %d\n", status);
paul
fsw-1-0...
r82 }
paul
Last commit before release 0-13...
r35
paul
sync before modifying the snapshot resynchronization
r246 BOOT_PRINTF("in WFRM ***\n");
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
sync before modifying the snapshot resynchronization
r246 while(1){
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 // wait for an RTEMS_EVENT
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL,
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
paul
Behaviour changed upon reception of a TC_LFR_ENTER_MODE with a transition...
r247
snapshot_resynchronization( (unsigned char *) &ring_node_to_send_swf_f0->coarseTime );
paul
Last commit before release 0-13...
r35 if (event_out == RTEMS_EVENT_MODE_NORMAL)
{
paul
sync before modifying the snapshot resynchronization
r246 DEBUG_PRINTF("WFRM received RTEMS_EVENT_MODE_SBM2\n");
ring_node_to_send_swf_f0->sid = SID_NORM_SWF_F0;
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 ring_node_swf1_extracted_ptr->sid = SID_NORM_SWF_F1;
ring_node_swf2_extracted_ptr->sid = SID_NORM_SWF_F2;
status = rtems_message_queue_send( queue_id, &ring_node_to_send_swf_f0, sizeof( ring_node* ) );
status = rtems_message_queue_send( queue_id, &ring_node_swf1_extracted_ptr, sizeof( ring_node* ) );
status = rtems_message_queue_send( queue_id, &ring_node_swf2_extracted_ptr, sizeof( ring_node* ) );
paul
snapshots extraction fully functionnal in SBM1 and SBM2
r106 }
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 }
}
paul@pc-solar1.lab-lpp.local
automatic reconnexion of the spacewire link...
r17
paul
sy_lfr_n_swf_p implemented...
r32 rtems_task cwf3_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
{
paul
Minor changes in .h inclusion
r45 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f3.
*
* @param unused is the starting argument of the RTEMS task
*
* The following data packet is sent by this task:
* - TM_LFR_SCIENCE_NORMAL_CWF_F3
*
*/
paul
sy_lfr_n_swf_p implemented...
r32 rtems_event_set event_out;
paul
Last commit before release 0-13...
r35 rtems_id queue_id;
paul
fsw-1-0...
r82 rtems_status_code status;
paul
New version of the waveform picker packet transmission...
r172 ring_node ring_node_cwf3_light;
paul
rev 3.0.0.2
r205 ring_node *ring_node_to_send_cwf;
paul
sy_lfr_n_swf_p implemented...
r32
paul
fsw-1-0...
r82 status = get_message_queue_id_send( &queue_id );
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in CWF3 *** ERR get_message_queue_id_send %d\n", status)
}
paul
Last commit before release 0-13...
r35
paul
New version of the waveform picker packet transmission...
r172 ring_node_to_send_cwf_f3->sid = SID_NORM_CWF_LONG_F3;
// init the ring_node_cwf3_light structure
ring_node_cwf3_light.buffer_address = (int) wf_cont_f3_light;
ring_node_cwf3_light.coarseTime = 0x00;
ring_node_cwf3_light.fineTime = 0x00;
ring_node_cwf3_light.next = NULL;
ring_node_cwf3_light.previous = NULL;
ring_node_cwf3_light.sid = SID_NORM_CWF_F3;
ring_node_cwf3_light.status = 0x00;
paul
Last commit before release 0-13...
r35 BOOT_PRINTF("in CWF3 ***\n")
paul
sy_lfr_n_swf_p implemented...
r32
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 while(1){
paul
sy_lfr_n_swf_p implemented...
r32 // wait for an RTEMS_EVENT
paul
packet emission task added...
r33 rtems_event_receive( RTEMS_EVENT_0,
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 if ( (lfrCurrentMode == LFR_MODE_NORMAL)
|| (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode==LFR_MODE_SBM2) )
paul
rev 1.0.0.1
r98 {
paul
rev 3.0.0.2
r205 ring_node_to_send_cwf = getRingNodeToSendCWF( 3 );
paul
ICD 2.0...
r92 if ( (parameter_dump_packet.sy_lfr_n_cwf_long_f3 & 0x01) == 0x01)
{
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 PRINTF("send CWF_LONG_F3\n")
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 ring_node_to_send_cwf_f3->sid = SID_NORM_CWF_LONG_F3;
paul
rev 3.0.0.2
r205 status = rtems_message_queue_send( queue_id, &ring_node_to_send_cwf, sizeof( ring_node* ) );
paul
ICD 2.0...
r92 }
else
{
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 PRINTF("send CWF_F3 (light)\n")
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 send_waveform_CWF3_light( ring_node_to_send_cwf, &ring_node_cwf3_light, queue_id );
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 }
paul
packet emission task added...
r33 }
paul
ICD 2.0...
r92 else
{
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 PRINTF1("in CWF3 *** lfrCurrentMode is %d, no data will be sent\n", lfrCurrentMode)
paul
packet emission task added...
r33 }
}
}
rtems_task cwf2_task(rtems_task_argument argument) // ONLY USED IN BURST AND SBM2
{
paul
Minor changes in .h inclusion
r45 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f2.
*
* @param unused is the starting argument of the RTEMS task
*
* The following data packet is sent by this function:
* - TM_LFR_SCIENCE_BURST_CWF_F2
* - TM_LFR_SCIENCE_SBM2_CWF_F2
*
*/
paul
packet emission task added...
r33 rtems_event_set event_out;
paul
Last commit before release 0-13...
r35 rtems_id queue_id;
paul
fsw-1-0...
r82 rtems_status_code status;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node *ring_node_to_send;
paul
sync
r181 unsigned long long int acquisitionTimeF0_asLong;
acquisitionTimeF0_asLong = 0x00;
paul
packet emission task added...
r33
paul
fsw-1-0...
r82 status = get_message_queue_id_send( &queue_id );
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in CWF2 *** ERR get_message_queue_id_send %d\n", status)
}
paul
Last commit before release 0-13...
r35
BOOT_PRINTF("in CWF2 ***\n")
paul
packet emission task added...
r33
paul
sync before modifying the snapshot resynchronization
r246 while(1){
paul
packet emission task added...
r33 // wait for an RTEMS_EVENT
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 rtems_event_receive( RTEMS_EVENT_MODE_NORM_S1_S2 | RTEMS_EVENT_MODE_BURST,
RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_to_send = getRingNodeToSendCWF( 2 );
paul
packet emission task added...
r33 if (event_out == RTEMS_EVENT_MODE_BURST)
{
paul
Integration of basic parameters functions in the flight software...
r179 status = rtems_message_queue_send( queue_id, &ring_node_to_send, sizeof( ring_node* ) );
paul
packet emission task added...
r33 }
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 else if (event_out == RTEMS_EVENT_MODE_NORM_S1_S2)
paul
packet emission task added...
r33 {
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 if ( lfrCurrentMode == LFR_MODE_SBM2 )
{
status = rtems_message_queue_send( queue_id, &ring_node_to_send, sizeof( ring_node* ) );
}
paul
the interrupt sub routine related to the waveform picker is now lighter...
r112 // launch snapshot extraction if needed
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 if (extractSWF2 == true)
paul
the interrupt sub routine related to the waveform picker is now lighter...
r112 {
paul
sync
r181 ring_node_to_send_swf_f2 = ring_node_to_send_cwf_f2;
paul
the interrupt sub routine related to the waveform picker is now lighter...
r112 // extract the snapshot
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 build_snapshot_from_ring( ring_node_to_send_swf_f2, 2, acquisitionTimeF0_asLong,
&ring_node_swf2_extracted, swf2_extracted );
paul