##// END OF EJS Templates
the interrupt sub routine related to the waveform picker is now lighter...
the interrupt sub routine related to the waveform picker is now lighter no more picks are observed on the waveforms

File last commit:

r112:5b5da8d2c053 VHDLib206
r112:5b5da8d2c053 VHDLib206
Show More
fsw_init.c
644 lines | 21.4 KiB | text/x-c | CLexer
paul
Minor changes in .h inclusion
r45 /** This is the RTEMS initialization module.
*
* @file
* @author P. LEROY
*
* This module contains two very different information:
* - specific instructions to configure the compilation of the RTEMS executive
* - functions related to the fligth softwre initialization, especially the INIT RTEMS task
*
*/
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 //*************************
// GPL reminder to be added
//*************************
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 #include <rtems.h>
/* configuration information */
#define CONFIGURE_INIT
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
#include <bsp.h> /* for device driver prototypes */
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
packet emission task added...
r33 #define CONFIGURE_MAXIMUM_TASKS 20
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 32
paul
Commit before working on the ERR 4 due to message queue...
r34 #define CONFIGURE_INIT_TASK_PRIORITY 1 // instead of 100
#define CONFIGURE_INIT_TASK_MODE (RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT)
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 #define CONFIGURE_MAXIMUM_DRIVERS 16
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 #define CONFIGURE_MAXIMUM_PERIODS 5
paul
Last commit before release 0-13...
r35 #define CONFIGURE_MAXIMUM_TIMERS 5 // STAT (1s), send SWF (0.3s), send CWF3 (1s)
paul
packet emission task added...
r33 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 2
paul
Commit before working on the ERR 4 due to message queue...
r34 #ifdef PRINT_STACK_REPORT
#define CONFIGURE_STACK_CHECKER_ENABLED
#endif
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
#include <rtems/confdefs.h>
/* If --drvmgr was enabled during the configuration of the RTEMS kernel */
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 #ifdef RTEMS_DRVMGR_STARTUP
#ifdef LEON3
/* Add Timer and UART Driver */
#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_DRIVER_AMBAPP_GAISLER_GPTIMER
#endif
#ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_DRIVER_AMBAPP_GAISLER_APBUART
#endif
#endif
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 #define CONFIGURE_DRIVER_AMBAPP_GAISLER_GRSPW /* GRSPW Driver */
#include <drvmgr/drvmgr_confdefs.h>
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 #endif
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
Header files inclusion reworked...
r40 #include "fsw_init.h"
#include "fsw_config.c"
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 rtems_task Init( rtems_task_argument ignored )
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 {
paul
Minor changes in .h inclusion
r45 /** This is the RTEMS INIT taks, it the first task launched by the system.
*
* @param unused is the starting argument of the RTEMS task
*
* The INIT task create and run all other RTEMS tasks.
*
*/
paul
rev 1.0.0.2...
r104 reset_local_time();
paul
Minor changes in .h inclusion
r45
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 rtems_status_code status;
paul
Ignore doc files...
r46 rtems_status_code status_spw;
paul
SID corrected in TM_LFR_TC_EXE packets...
r31 rtems_isr_entry old_isr_handler;
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
ICD 2.0...
r92 // UART settings
paul
Sync
r95 send_console_outputs_on_apbuart_port();
paul
Minor changes
r94 set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE);
enable_apbuart_transmitter();
paul
rev 1.0.0.1
r98 DEBUG_PRINTF("\n\n\n\n\nIn INIT *** Now the console is on port COM1\n")
paul
ICD 2.0...
r92
paul
rev 1.0.0.1
r98 PRINTF("\n\n\n\n\n")
PRINTF("*************************\n")
PRINTF("** LFR Flight Software **\n")
PRINTF1("** %d.", SW_VERSION_N1)
PRINTF1("%d.", SW_VERSION_N2)
PRINTF1("%d.", SW_VERSION_N3)
paul
Sync
r99 PRINTF1("%d **\n", SW_VERSION_N4)
paul
rev 1.0.0.1
r98 PRINTF("*************************\n")
PRINTF("\n\n")
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul@pc-solar1.lab-lpp.local
Release 0.7...
r28 init_parameter_dump();
init_local_mode_parameters();
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 init_housekeeping_parameters();
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
rev 1.0.0.4
r110 init_waveform_rings(); // initialize the waveform rings
init_sm_rings(); // initialize spectral matrices rings
reset_wfp_burst_enable();
reset_wfp_status();
set_wfp_data_shaping();
paul
fsw-0-16...
r47 updateLFRCurrentMode();
BOOT_PRINTF1("in INIT *** lfrCurrentMode is %d\n", lfrCurrentMode)
paul
Ignore doc files...
r46 create_names(); // create all names
paul
fsw-0-16...
r47
paul
Ignore doc files...
r46 status = create_message_queues(); // create message queues
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** ERR in create_message_queues, code %d", status)
}
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
Ignore doc files...
r46 status = create_all_tasks(); // create all tasks
paul
Header files inclusion reworked...
r40 if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** ERR in create_all_tasks, code %d", status)
}
paul
packet emission task added...
r33
paul
Ignore doc files...
r46 // **************************
// <SPACEWIRE INITIALIZATION>
grspw_timecode_callback = &timecode_irq_handler;
status_spw = spacewire_open_link(); // (1) open the link
if ( status_spw != RTEMS_SUCCESSFUL )
{
PRINTF1("in INIT *** ERR spacewire_open_link code %d\n", status_spw )
}
if ( status_spw == RTEMS_SUCCESSFUL ) // (2) configure the link
{
status_spw = spacewire_configure_link( fdSPW );
if ( status_spw != RTEMS_SUCCESSFUL )
{
PRINTF1("in INIT *** ERR spacewire_configure_link code %d\n", status_spw )
}
}
if ( status_spw == RTEMS_SUCCESSFUL) // (3) start the link
{
status_spw = spacewire_start_link( fdSPW );
if ( status_spw != RTEMS_SUCCESSFUL )
{
PRINTF1("in INIT *** ERR spacewire_start_link code %d\n", status_spw )
}
}
// </SPACEWIRE INITIALIZATION>
// ***************************
paul
Header files inclusion reworked...
r40 status = start_all_tasks(); // start all tasks
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** ERR in start_all_tasks, code %d", status)
}
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
fsw-0-16...
r47 // start RECV and SEND *AFTER* SpaceWire Initialization, due to the timeout of the start call during the initialization
paul
Ignore doc files...
r46 status = start_recv_send_tasks();
if ( status != RTEMS_SUCCESSFUL )
{
PRINTF1("in INIT *** ERR start_recv_send_tasks code %d\n", status )
}
paul
rev 1.0.0.4
r110 // suspend science tasks, they will be restarted later depending on the mode
paul
fsw-0-16...
r47 status = suspend_science_tasks(); // suspend science tasks (not done in stop_current_mode if current mode = STANDBY)
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** in suspend_science_tasks *** ERR code: %d\n", status)
}
paul
ICD 2.0...
r92 //******************************
// <SPECTRAL MATRICES SIMULATOR>
paul
Sync
r99 LEON_Mask_interrupt( IRQ_SM_SIMULATOR );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR, CLKDIV_SM_SIMULATOR,
paul
Sync
r99 IRQ_SPARC_SM_SIMULATOR, spectral_matrices_isr_simu );
paul
ICD 2.0...
r92 // </SPECTRAL MATRICES SIMULATOR>
//*******************************
paul
sy_lfr_n_swf_p implemented...
r32 // configure IRQ handling for the waveform picker unit
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 status = rtems_interrupt_catch( waveforms_isr,
IRQ_SPARC_WAVEFORM_PICKER,
&old_isr_handler) ;
paul
the function asm_reorganize format the spectral matrix to the ICD format
r103 // configure IRQ handling for the spectral matrices unit
status = rtems_interrupt_catch( spectral_matrices_isr,
IRQ_SPARC_SPECTRAL_MATRIX,
&old_isr_handler) ;
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
fsw-0-16...
r47 // if the spacewire link is not up then send an event to the SPIQ task for link recovery
paul
Ignore doc files...
r46 if ( status_spw != RTEMS_SUCCESSFUL )
{
status = rtems_event_send( Task_id[TASKID_SPIQ], SPW_LINKERR_EVENT );
if ( status != RTEMS_SUCCESSFUL ) {
PRINTF1("in INIT *** ERR rtems_event_send to SPIQ code %d\n", status )
}
}
paul
Last commit before release 0-13...
r35 BOOT_PRINTF("delete INIT\n")
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
rev 1.0.0.4
r110 send_dumb_hk();
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 status = rtems_task_delete(RTEMS_SELF);
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 }
paul
Commit before working on the ERR 4 due to message queue...
r34 void init_local_mode_parameters( void )
paul@pc-solar1.lab-lpp.local
Release 0.7...
r28 {
paul
Minor changes in .h inclusion
r45 /** This function initialize the param_local global variable with default values.
*
*/
paul
Ignore doc files...
r46 unsigned int i;
paul@pc-solar1.lab-lpp.local
All modes implemented for the waveforms...
r23 // LOCAL PARAMETERS
paul
sy_lfr_n_swf_p implemented...
r32 set_local_nb_interrupt_f0_MAX();
paul@pc-solar1.lab-lpp.local
All modes implemented for the waveforms...
r23
paul
Last commit before release 0-13...
r35 BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max)
BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max)
BOOT_PRINTF1("nb_interrupt_f0_MAX = %d\n", param_local.local_nb_interrupt_f0_MAX)
paul@pc-solar1.lab-lpp.local
All modes implemented for the waveforms...
r23
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 // init sequence counters
paul
sequence counters management added
r56
for(i = 0; i<SEQ_CNT_NB_DEST_ID; i++)
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 {
paul
sequence counters management added
r56 sequenceCounters_TC_EXE[i] = 0x00;
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 }
paul
sequence counters management added
r56 sequenceCounters_SCIENCE_NORMAL_BURST = 0x00;
sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00;
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 }
paul
rev 1.0.0.2...
r104 void reset_local_time( void )
{
paul
the interrupt sub routine related to the waveform picker is now lighter...
r112 time_management_regs->coarse_time_load = 0x80000000;
paul
rev 1.0.0.2...
r104 }
paul
Ignore doc files...
r46 void create_names( void ) // create all names for tasks and queues
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 {
paul
Header files inclusion reworked...
r40 /** This function creates all RTEMS names used in the software for tasks and queues.
*
* @return RTEMS directive status codes:
paul
Minor changes in .h inclusion
r45 * - RTEMS_SUCCESSFUL - successful completion
paul
Header files inclusion reworked...
r40 *
*/
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 // task names
Task_name[TASKID_RECV] = rtems_build_name( 'R', 'E', 'C', 'V' );
paul@pc-solar1.lab-lpp.local
fsw-0-2 delivery to LESIA...
r16 Task_name[TASKID_ACTN] = rtems_build_name( 'A', 'C', 'T', 'N' );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 Task_name[TASKID_SPIQ] = rtems_build_name( 'S', 'P', 'I', 'Q' );
paul@pc-solar1.lab-lpp.local
fsw-0-2 delivery to LESIA...
r16 Task_name[TASKID_SMIQ] = rtems_build_name( 'S', 'M', 'I', 'Q' );
Task_name[TASKID_STAT] = rtems_build_name( 'S', 'T', 'A', 'T' );
Task_name[TASKID_AVF0] = rtems_build_name( 'A', 'V', 'F', '0' );
paul
snapshot extraction for the waveform ring is operational...
r105 Task_name[TASKID_SWBD] = rtems_build_name( 'S', 'W', 'B', 'D' );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 Task_name[TASKID_WFRM] = rtems_build_name( 'W', 'F', 'R', 'M' );
Task_name[TASKID_DUMB] = rtems_build_name( 'D', 'U', 'M', 'B' );
Task_name[TASKID_HOUS] = rtems_build_name( 'H', 'O', 'U', 'S' );
paul
SID corrected in TM_LFR_TC_EXE packets...
r31 Task_name[TASKID_MATR] = rtems_build_name( 'M', 'A', 'T', 'R' );
paul
sy_lfr_n_swf_p implemented...
r32 Task_name[TASKID_CWF3] = rtems_build_name( 'C', 'W', 'F', '3' );
paul
packet emission task added...
r33 Task_name[TASKID_CWF2] = rtems_build_name( 'C', 'W', 'F', '2' );
Task_name[TASKID_CWF1] = rtems_build_name( 'C', 'W', 'F', '1' );
Task_name[TASKID_SEND] = rtems_build_name( 'S', 'E', 'N', 'D' );
paul
Ignore doc files...
r46 Task_name[TASKID_WTDG] = rtems_build_name( 'W', 'T', 'D', 'G' );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
Ignore doc files...
r46 // rate monotonic period names
name_hk_rate_monotonic = rtems_build_name( 'H', 'O', 'U', 'S' );
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
Ignore doc files...
r46 misc_name[QUEUE_RECV] = rtems_build_name( 'Q', '_', 'R', 'V' );
misc_name[QUEUE_SEND] = rtems_build_name( 'Q', '_', 'S', 'D' );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Header files inclusion reworked...
r40 int create_all_tasks( void ) // create all tasks which run in the software
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 {
paul
Header files inclusion reworked...
r40 /** This function creates all RTEMS tasks used in the software.
*
* @return RTEMS directive status codes:
* - RTEMS_SUCCESSFUL - task created successfully
* - RTEMS_INVALID_ADDRESS - id is NULL
* - RTEMS_INVALID_NAME - invalid task name
* - RTEMS_INVALID_PRIORITY - invalid task priority
* - RTEMS_MP_NOT_CONFIGURED - multiprocessing not configured
* - RTEMS_TOO_MANY - too many tasks created
* - RTEMS_UNSATISFIED - not enough memory for stack/FP context
* - RTEMS_TOO_MANY - too many global objects
*
*/
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 rtems_status_code status;
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
paul
snapshot extraction for the waveform ring is operational...
r105 //**********
// SPACEWIRE
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 // RECV
status = rtems_task_create(
paul
Commit before working on the ERR 4 due to message queue...
r34 Task_name[TASKID_RECV], TASK_PRIORITY_RECV, RTEMS_MINIMUM_STACK_SIZE,
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 RTEMS_DEFAULT_MODES,
paul@pc-solar1.lab-lpp.local
fsw-0-2 delivery to LESIA...
r16 RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_RECV]
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 );
paul
snapshot extraction for the waveform ring is operational...
r105 if (status == RTEMS_SUCCESSFUL) // SEND
{
status = rtems_task_create(
Task_name[TASKID_SEND], TASK_PRIORITY_SEND, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_SEND]
);
}
if (status == RTEMS_SUCCESSFUL) // WTDG
{
status = rtems_task_create(
Task_name[TASKID_WTDG], TASK_PRIORITY_WTDG, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_WTDG]
);
}
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // ACTN
{
status = rtems_task_create(
Task_name[TASKID_ACTN], TASK_PRIORITY_ACTN, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_ACTN]
);
}
if (status == RTEMS_SUCCESSFUL) // SPIQ
{
status = rtems_task_create(
Task_name[TASKID_SPIQ], TASK_PRIORITY_SPIQ, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_SPIQ]
);
}
paul
snapshot extraction for the waveform ring is operational...
r105
//******************
// SPECTRAL MATRICES
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // SMIQ
{
status = rtems_task_create(
Task_name[TASKID_SMIQ], TASK_PRIORITY_SMIQ, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_SMIQ]
);
}
if (status == RTEMS_SUCCESSFUL) // AVF0
{
status = rtems_task_create(
Task_name[TASKID_AVF0], TASK_PRIORITY_AVF0, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_AVF0]
);
}
paul
snapshot extraction for the waveform ring is operational...
r105 if (status == RTEMS_SUCCESSFUL) // MATR
{
status = rtems_task_create(
Task_name[TASKID_MATR], TASK_PRIORITY_MATR, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_MATR]
);
}
//****************
// WAVEFORM PICKER
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // WFRM
{
status = rtems_task_create(
Task_name[TASKID_WFRM], TASK_PRIORITY_WFRM, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_WFRM]
);
}
if (status == RTEMS_SUCCESSFUL) // CWF3
{
status = rtems_task_create(
Task_name[TASKID_CWF3], TASK_PRIORITY_CWF3, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
paul
rev 1.0.0.1
r98 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_CWF3]
paul
Header files inclusion reworked...
r40 );
}
if (status == RTEMS_SUCCESSFUL) // CWF2
{
status = rtems_task_create(
Task_name[TASKID_CWF2], TASK_PRIORITY_CWF2, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
paul
rev 1.0.0.1
r98 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_CWF2]
paul
Header files inclusion reworked...
r40 );
}
if (status == RTEMS_SUCCESSFUL) // CWF1
{
status = rtems_task_create(
Task_name[TASKID_CWF1], TASK_PRIORITY_CWF1, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
paul
rev 1.0.0.1
r98 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_CWF1]
paul
Header files inclusion reworked...
r40 );
}
paul
snapshot extraction for the waveform ring is operational...
r105 if (status == RTEMS_SUCCESSFUL) // SWBD
{
status = rtems_task_create(
Task_name[TASKID_SWBD], TASK_PRIORITY_SWBD, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_SWBD]
);
}
//*****
// MISC
if (status == RTEMS_SUCCESSFUL) // STAT
paul
Header files inclusion reworked...
r40 {
status = rtems_task_create(
paul
snapshot extraction for the waveform ring is operational...
r105 Task_name[TASKID_STAT], TASK_PRIORITY_STAT, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_STAT]
paul
Header files inclusion reworked...
r40 );
}
paul
snapshot extraction for the waveform ring is operational...
r105 if (status == RTEMS_SUCCESSFUL) // DUMB
paul
Ignore doc files...
r46 {
status = rtems_task_create(
paul
snapshot extraction for the waveform ring is operational...
r105 Task_name[TASKID_DUMB], TASK_PRIORITY_DUMB, RTEMS_MINIMUM_STACK_SIZE,
paul
Ignore doc files...
r46 RTEMS_DEFAULT_MODES,
paul
snapshot extraction for the waveform ring is operational...
r105 RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_DUMB]
);
}
if (status == RTEMS_SUCCESSFUL) // HOUS
{
status = rtems_task_create(
Task_name[TASKID_HOUS], TASK_PRIORITY_HOUS, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS]
paul
Ignore doc files...
r46 );
}
paul
Header files inclusion reworked...
r40
return status;
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
paul
Ignore doc files...
r46 int start_recv_send_tasks( void )
{
rtems_status_code status;
status = rtems_task_start( Task_id[TASKID_RECV], recv_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_RECV\n")
}
if (status == RTEMS_SUCCESSFUL) // SEND
{
status = rtems_task_start( Task_id[TASKID_SEND], send_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_SEND\n")
}
}
return status;
}
int start_all_tasks( void ) // start all tasks except SEND RECV and HOUS
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 {
paul
Header files inclusion reworked...
r40 /** This function starts all RTEMS tasks used in the software.
*
* @return RTEMS directive status codes:
* - RTEMS_SUCCESSFUL - ask started successfully
* - RTEMS_INVALID_ADDRESS - invalid task entry point
* - RTEMS_INVALID_ID - invalid task id
* - RTEMS_INCORRECT_STATE - task not in the dormant state
* - RTEMS_ILLEGAL_ON_REMOTE_OBJECT - cannot start remote task
*
*/
// starts all the tasks fot eh flight software
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5 rtems_status_code status;
paul
snapshot extraction for the waveform ring is operational...
r105 //**********
// SPACEWIRE
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 status = rtems_task_start( Task_id[TASKID_SPIQ], spiq_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
paul
Last commit before release 0-13...
r35 BOOT_PRINTF("in INIT *** Error starting TASK_SPIQ\n")
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Ignore doc files...
r46 if (status == RTEMS_SUCCESSFUL) // WTDG
{
status = rtems_task_start( Task_id[TASKID_WTDG], wtdg_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_WTDG\n")
}
}
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // ACTN
{
status = rtems_task_start( Task_id[TASKID_ACTN], actn_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_ACTN\n")
}
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
snapshot extraction for the waveform ring is operational...
r105 //******************
// SPECTRAL MATRICES
if (status == RTEMS_SUCCESSFUL) // SMIQ
paul
Header files inclusion reworked...
r40 {
paul
snapshot extraction for the waveform ring is operational...
r105 status = rtems_task_start( Task_id[TASKID_SMIQ], smiq_task, 1 );
paul
Header files inclusion reworked...
r40 if (status!=RTEMS_SUCCESSFUL) {
paul
snapshot extraction for the waveform ring is operational...
r105 BOOT_PRINTF("in INIT *** Error starting TASK_BPPR\n")
paul
Header files inclusion reworked...
r40 }
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // AVF0
{
status = rtems_task_start( Task_id[TASKID_AVF0], avf0_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_AVF0\n")
}
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
snapshot extraction for the waveform ring is operational...
r105 if (status == RTEMS_SUCCESSFUL) // MATR
{
status = rtems_task_start( Task_id[TASKID_MATR], matr_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_MATR\n")
}
}
//****************
// WAVEFORM PICKER
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // WFRM
{
status = rtems_task_start( Task_id[TASKID_WFRM], wfrm_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_WFRM\n")
}
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // CWF3
{
status = rtems_task_start( Task_id[TASKID_CWF3], cwf3_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_CWF3\n")
}
paul
packet emission task added...
r33 }
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // CWF2
{
status = rtems_task_start( Task_id[TASKID_CWF2], cwf2_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_CWF2\n")
}
paul
packet emission task added...
r33 }
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // CWF1
{
status = rtems_task_start( Task_id[TASKID_CWF1], cwf1_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_CWF1\n")
}
}
paul
snapshot extraction for the waveform ring is operational...
r105
if (status == RTEMS_SUCCESSFUL) // SWBD
{
status = rtems_task_start( Task_id[TASKID_SWBD], swbd_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_SWBD\n")
}
}
//*****
// MISC
if (status == RTEMS_SUCCESSFUL) // HOUS
{
status = rtems_task_start( Task_id[TASKID_HOUS], hous_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_HOUS\n")
}
}
if (status == RTEMS_SUCCESSFUL) // DUMB
{
status = rtems_task_start( Task_id[TASKID_DUMB], dumb_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_DUMB\n")
}
}
if (status == RTEMS_SUCCESSFUL) // STAT
{
status = rtems_task_start( Task_id[TASKID_STAT], stat_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_STAT\n")
}
}
paul
Header files inclusion reworked...
r40 return status;
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Header files inclusion reworked...
r40 rtems_status_code create_message_queues( void ) // create the two message queues used in the software
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 {
paul
Ignore doc files...
r46 rtems_status_code status_recv;
rtems_status_code status_send;
paul
Last commit before release 0-13...
r35 rtems_status_code ret;
rtems_id queue_id;
paul
Minor bug corrected in the tc_acceptance function...
r42 // create the queue for handling valid TCs
paul
Ignore doc files...
r46 status_recv = rtems_message_queue_create( misc_name[QUEUE_RECV],
ACTION_MSG_QUEUE_COUNT, CCSDS_TC_PKT_MAX_SIZE,
paul
Minor bug corrected in the tc_acceptance function...
r42 RTEMS_FIFO | RTEMS_LOCAL, &queue_id );
paul
Ignore doc files...
r46 if ( status_recv != RTEMS_SUCCESSFUL ) {
PRINTF1("in create_message_queues *** ERR creating QUEU queue, %d\n", status_recv)
paul
Minor bug corrected in the tc_acceptance function...
r42 }
paul
Header files inclusion reworked...
r40 // create the queue for handling TM packet sending
paul
Ignore doc files...
r46 status_send = rtems_message_queue_create( misc_name[QUEUE_SEND],
ACTION_MSG_PKTS_COUNT, ACTION_MSG_PKTS_MAX_SIZE,
paul
TM_LFR_TC_EXE packet sending reworked...
r37 RTEMS_FIFO | RTEMS_LOCAL, &queue_id );
paul
Ignore doc files...
r46 if ( status_send != RTEMS_SUCCESSFUL ) {
PRINTF1("in create_message_queues *** ERR creating PKTS queue, %d\n", status_send)
}
if ( status_recv != RTEMS_SUCCESSFUL )
{
ret = status_recv;
}
else
{
ret = status_send;
paul
Last commit before release 0-13...
r35 }
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
Minor bug corrected in the tc_acceptance function...
r42 return ret;
paul@pc-solar1.lab-lpp.local
All modes implemented for the waveforms...
r23 }
paul
fsw-1-0...
r82
rtems_status_code get_message_queue_id_send( rtems_id *queue_id )
{
rtems_status_code status;
rtems_name queue_name;
queue_name = rtems_build_name( 'Q', '_', 'S', 'D' );
status = rtems_message_queue_ident( queue_name, 0, queue_id );
return status;
}
rtems_status_code get_message_queue_id_recv( rtems_id *queue_id )
{
rtems_status_code status;
rtems_name queue_name;
queue_name = rtems_build_name( 'Q', '_', 'R', 'V' );
status = rtems_message_queue_ident( queue_name, 0, queue_id );
return status;
}