##// END OF EJS Templates
Ignore doc files...
Ignore doc files All redmine issues taken into account SpaceWire management rewritten Init task changed to work when SpaceWire is not available at boot time

File last commit:

r46:72fea9e87fcb default
r46:72fea9e87fcb default
Show More
fsw_init.c
595 lines | 20.1 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@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
Last commit before release 0-13...
r35 BOOT_PRINTF("\n\n\n\n\n")
BOOT_PRINTF("***************************\n")
BOOT_PRINTF("** START Flight Software **\n")
BOOT_PRINTF("***************************\n")
BOOT_PRINTF("\n\n")
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul@pc-solar1.lab-lpp.local
commit before release
r25 //send_console_outputs_on_apbuart_port();
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE);
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
Ignore doc files...
r46 create_names(); // create all names
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
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
Header files inclusion reworked...
r40 status = stop_current_mode(); // go in STANDBY mode
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** ERR in stop_current_mode, code %d", status)
}
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul
sy_lfr_n_swf_p implemented...
r32 #ifdef GSA
paul
Commit before working on the ERR 4 due to message queue...
r34 // mask IRQ lines
LEON_Mask_interrupt( IRQ_SM );
LEON_Mask_interrupt( IRQ_WF );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 // Spectral Matrices simulator
configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR, CLKDIV_SM_SIMULATOR,
IRQ_SPARC_SM, spectral_matrices_isr );
paul
packet emission task added...
r33 // WaveForms
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_WF_SIMULATOR, CLKDIV_WF_SIMULATOR,
IRQ_SPARC_WF, waveforms_simulator_isr );
#else
paul
Commit before working on the ERR 4 due to message queue...
r34 // mask IRQ lines
LEON_Mask_interrupt( IRQ_WAVEFORM_PICKER );
LEON_Mask_interrupt( IRQ_SPECTRAL_MATRIX );
paul
sy_lfr_n_swf_p implemented...
r32 // reset configuration registers
paul
SID corrected in TM_LFR_TC_EXE packets...
r31 reset_waveform_picker_regs();
paul
sy_lfr_n_swf_p implemented...
r32 reset_spectral_matrix_regs();
// 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
sy_lfr_n_swf_p implemented...
r32 // configure IRQ handling for the spectral matrix unit
paul
Commit before working on the ERR 4 due to message queue...
r34 // status = rtems_interrupt_catch( spectral_matrices_isr,
// IRQ_SPARC_SPECTRAL_MATRIX,
// &old_isr_handler) ;
// Spectral Matrices simulator
configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR, CLKDIV_SM_SIMULATOR,
IRQ_SPARC_SM, spectral_matrices_isr_simu );
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 #endif
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@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;
unsigned int j;
unsigned int k;
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_sbm1_nb_cwf_max();
set_local_sbm2_nb_cwf_max();
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
sy_lfr_n_swf_p implemented...
r32 reset_local_sbm1_nb_cwf_sent();
reset_local_sbm2_nb_cwf_sent();
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 // init sequence counters
for (i = 0; i<SEQ_CNT_NB_PID; i++)
{
for(j = 0; j<SEQ_CNT_NB_CAT; j++)
{
for(k = 0; k<SEQ_CNT_NB_DEST_ID; k++)
{
sequenceCounters[i][j][k] = 0x00;
}
}
}
}
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@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 Task_name[TASKID_BPF0] = rtems_build_name( 'B', 'P', 'F', '0' );
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
// 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@pc-solar1.lab-lpp.local
Naming convention changed...
r5
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]
);
}
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) // STAT
{
status = rtems_task_create(
Task_name[TASKID_STAT], TASK_PRIORITY_STAT, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_STAT]
);
}
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]
);
}
if (status == RTEMS_SUCCESSFUL) // BPF0
{
status = rtems_task_create(
Task_name[TASKID_BPF0], TASK_PRIORITY_BPF0, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_BPF0]
);
}
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) // DUMB
{
status = rtems_task_create(
Task_name[TASKID_DUMB], TASK_PRIORITY_DUMB, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
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_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS]
);
}
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]
);
}
if (status == RTEMS_SUCCESSFUL) // CWF3
{
status = rtems_task_create(
Task_name[TASKID_CWF3], TASK_PRIORITY_CWF3, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_CWF3]
);
}
if (status == RTEMS_SUCCESSFUL) // CWF2
{
status = rtems_task_create(
Task_name[TASKID_CWF2], TASK_PRIORITY_CWF2, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_CWF2]
);
}
if (status == RTEMS_SUCCESSFUL) // CWF1
{
status = rtems_task_create(
Task_name[TASKID_CWF1], TASK_PRIORITY_CWF1, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_CWF1]
);
}
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]
);
}
paul
Ignore doc files...
r46 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
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@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) // SMIQ
{
status = rtems_task_start( Task_id[TASKID_SMIQ], smiq_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_BPPR\n")
}
paul
Last commit before release 0-13...
r35 }
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
Header files inclusion reworked...
r40 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@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
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // BPF0
{
status = rtems_task_start( Task_id[TASKID_BPF0], bpf0_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_BPF0\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) // 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) // 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")
}
paul@pc-solar1.lab-lpp.local
Updates of the ICD taken into account...
r18 }
paul
Header files inclusion reworked...
r40 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")
}
paul
sy_lfr_n_swf_p implemented...
r32 }
paul
Header files inclusion reworked...
r40 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")
}
paul
SID corrected in TM_LFR_TC_EXE packets...
r31 }
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")
}
}
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
Ignore doc files...
r46