##// END OF EJS Templates
Snapshot resynchro rewritten, drift is measured one snapshot in two...
Snapshot resynchro rewritten, drift is measured one snapshot in two functions related to Cache Control register renamed functions related to Ancillary State Register 16 added (EDAC on register files)

File last commit:

r253:cc5f75e74b54 R3a
r253:cc5f75e74b54 R3a
Show More
fsw_init.c
909 lines | 30.7 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
Sync
r139 #define CONFIGURE_INIT_TASK_ATTRIBUTES (RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT)
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
timecode handling modified:...
r248 #define CONFIGURE_MAXIMUM_TIMERS 5 // [spiq] [wtdg] [spacewire_reset_link]
paul
avf2 prc2 tasks added...
r124 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 5
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
fifo occupation reported in the HK packet
r197 #include "GscMemoryLPP.hpp"
paul@pc-solar1.lab-lpp.local
Naming convention changed...
r5
paul
sync
r181 void initCache()
{
paul
EDAC information fetching functions added.
r251 // ASI 2 contains a few control registers that have not been assigned as ancillary state registers.
// These should only be read and written using 32-bit LDA/STA instructions.
// All cache registers are accessed through load/store operations to the alternate address space (LDA/STA), using ASI = 2.
// The table below shows the register addresses:
// 0x00 Cache control register
// 0x04 Reserved
// 0x08 Instruction cache configuration register
// 0x0C Data cache configuration register
// Cache Control Register Leon3 / Leon3FT
// 31..30 29 28 27..24 23 22 21 20..19 18 17 16
// RFT PS TB DS FD FI FT ST IB
// 15 14 13..12 11..10 9..8 7..6 5 4 3..2 1..0
// IP DP ITE IDE DTE DDE DF IF DCS ICS
paul
TM_LFR_SCIENCE_NORMA_ASM_ packets modified, 32 bits values instead of 16 bits...
r196 unsigned int cacheControlRegister;
paul
sync
r181
paul
EDAC information fetching functions added.
r251 cacheControlRegister = CCR_getValue();
PRINTF1("(0) cacheControlRegister = %x\n", cacheControlRegister);
paul
TM_LFR_SCIENCE_NORMA_ASM_ packets modified, 32 bits values instead of 16 bits...
r196
paul
EDAC information fetching functions added.
r251 CCR_resetCacheControlRegister();
paul
sync
r181
paul
EDAC information fetching functions added.
r251 CCR_enableInstructionCache(); // ICS bits
CCR_enableDataCache(); // DCS bits
CCR_enableInstructionBurstFetch(); // IB bit
paul
sync
r181
paul
EDAC information fetching functions added.
r251 cacheControlRegister = CCR_getValue();
PRINTF1("(1) cacheControlRegister = %x\n", cacheControlRegister);
CCR_faultTolerantScheme();
paul
Snapshot resynchro rewritten, drift is measured one snapshot in two...
r253 PRINTF("\n");
paul
sync
r181 }
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
TM_LFR_SCIENCE_NORMA_ASM_ packets modified, 32 bits values instead of 16 bits...
r196 /** This is the RTEMS INIT taks, it is the first task launched by the system.
paul
Minor changes in .h inclusion
r45 *
* @param unused is the starting argument of the RTEMS task
*
* The INIT task create and run all other RTEMS tasks.
*
*/
paul
sync
r181 //***********
// INIT CACHE
paul
Bug #104
r144 unsigned char *vhdlVersion;
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 reset_lfr();
paul
rev 1.0.0.2...
r104 reset_local_time();
paul
Minor changes in .h inclusion
r45
paul
cpu_load added to the housekeeping packets
r134 rtems_cpu_usage_reset();
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
Snapshot resynchro rewritten, drift is measured one snapshot in two...
r253 enable_apbuart_transmitter();
paul
Minor changes
r94 set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE);
paul
sync
r181
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
sync
r181
paul
rev 1.0.0.1
r98 PRINTF("\n\n\n\n\n")
paul
sync
r181
initCache();
paul
rev 1.0.0.1
r98 PRINTF("*************************\n")
PRINTF("** LFR Flight Software **\n")
PRINTF1("** %d.", SW_VERSION_N1)
paul
Sync at CNES before going back to 117
r119 PRINTF1("%d." , SW_VERSION_N2)
PRINTF1("%d." , SW_VERSION_N3)
paul
Modification of the launch of NORMAL, SBM1 and SBM2 modes
r238 PRINTF1("%d **\n", SW_VERSION_N4)
paul
Bug #104
r144
vhdlVersion = (unsigned char *) (REGS_ADDR_VHDL_VERSION);
PRINTF("** VHDL **\n")
PRINTF1("** %d.", vhdlVersion[1])
PRINTF1("%d." , vhdlVersion[2])
PRINTF1("%d **\n", vhdlVersion[3])
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();
paul
TC_LFR_LOAD_KCOEFFICIENTS...
r194 init_kcoefficients_dump();
paul@pc-solar1.lab-lpp.local
Release 0.7...
r28 init_local_mode_parameters();
paul@pc-solar1.lab-lpp.local
Current version with modes NORMAL and SBM1 operational
r21 init_housekeeping_parameters();
paul
rev 3.0.0.6...
r214 init_k_coefficients_prc0();
init_k_coefficients_prc1();
init_k_coefficients_prc2();
paul
bug #456 pa_bia_status_info byte is updated upon the reception of...
r224 pa_bia_status_info = 0x00;
paul
minor updates on documentation
r240 update_last_valid_transition_date( DEFAULT_LAST_VALID_TRANSITION_DATE );
paul
Commit before working on the ERR 4 due to message queue...
r34
paul
Sync
r139 // waveform picker initialization
paul
STAT task removec...
r239 WFP_init_rings(); LEON_Clear_interrupt( IRQ_SPARC_GPTIMER_WATCHDOG ); // initialize the waveform rings
paul
Sync
r139 WFP_reset_current_ring_nodes();
reset_waveform_picker_regs();
paul
rev 1.0.0.4
r110
paul
Sync
r139 // spectral matrices initialization
SM_init_rings(); // initialize spectral matrices rings
SM_reset_current_ring_nodes();
reset_spectral_matrix_regs();
paul
rev 1.0.0.4
r110
paul
2.0.2.2...
r187 // configure calibration
configureCalibration( false ); // true means interleaved mode, false is for normal mode
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
timecode handling modified:...
r248 status = create_timecode_timer(); // create the timer used by timecode_irq_handler
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in INIT *** ERR in create_timer_timecode, code %d", status)
}
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)
{
paul
avf2 prc2 tasks added...
r124 PRINTF1("in INIT *** ERR in create_all_tasks, code %d\n", status)
paul
Header files inclusion reworked...
r40 }
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
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
bug #456 pa_bia_status_info byte is updated upon the reception of...
r224 set_hk_lfr_sc_potential_flag( true );
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
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
printf removed or replaced by PRINTF macros...
r227 sequenceCounters_TM_DUMP[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;
paul
Bug #171
r151 sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00;
sequenceCounterHK = TM_PACKET_SEQ_CTRL_STANDALONE << 8;
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 flight software is now compatible with the VHDL 0.1.32...
r171 time_management_regs->ctrl = time_management_regs->ctrl | 0x02; // [0010] software reset, coarse time = 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
STAT task removec...
r239 Task_name[TASKID_LOAD] = rtems_build_name( 'L', 'O', 'A', 'D' );
paul@pc-solar1.lab-lpp.local
fsw-0-2 delivery to LESIA...
r16 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
Sync at CNES before going back to 117
r119 Task_name[TASKID_PRC0] = rtems_build_name( 'P', 'R', 'C', '0' );
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
AVF1 and PRC1 tasks added for processing at f1
r121 Task_name[TASKID_AVF1] = rtems_build_name( 'A', 'V', 'F', '1' );
Task_name[TASKID_PRC1] = rtems_build_name( 'P', 'R', 'C', '1' );
paul
avf2 prc2 tasks added...
r124 Task_name[TASKID_AVF2] = rtems_build_name( 'A', 'V', 'F', '2' );
Task_name[TASKID_PRC2] = rtems_build_name( 'P', 'R', 'C', '2' );
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
Sync at CNES before going back to 117
r119 misc_name[QUEUE_PRC0] = rtems_build_name( 'Q', '_', 'P', '0' );
misc_name[QUEUE_PRC1] = rtems_build_name( 'Q', '_', 'P', '1' );
paul
avf2 prc2 tasks added...
r124 misc_name[QUEUE_PRC2] = rtems_build_name( 'Q', '_', 'P', '2' );
paul
timecode handling modified:...
r248
timecode_timer_name = rtems_build_name( 'S', 'P', 'T', 'C' );
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(
paul
sync
r181 Task_name[TASKID_SEND], TASK_PRIORITY_SEND, RTEMS_MINIMUM_STACK_SIZE * 2,
RTEMS_DEFAULT_MODES,
paul
New version of the waveform picker packet transmission...
r172 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_SEND]
paul
snapshot extraction for the waveform ring is operational...
r105 );
}
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,
paul
The HK packet contains v, e1 and e2 valid data at f3....
r129 RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
paul
Header files inclusion reworked...
r40 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) // AVF0
{
status = rtems_task_create(
Task_name[TASKID_AVF0], TASK_PRIORITY_AVF0, RTEMS_MINIMUM_STACK_SIZE,
paul
sync
r181 RTEMS_DEFAULT_MODES,
paul
Header files inclusion reworked...
r40 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_AVF0]
);
}
paul
AVF1 and PRC1 tasks added for processing at f1
r121 if (status == RTEMS_SUCCESSFUL) // PRC0
paul
snapshot extraction for the waveform ring is operational...
r105 {
status = rtems_task_create(
paul
Sync at CNES before going back to 117
r119 Task_name[TASKID_PRC0], TASK_PRIORITY_PRC0, RTEMS_MINIMUM_STACK_SIZE * 2,
paul
sync
r182 RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
paul
Sync at CNES before going back to 117
r119 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC0]
paul
snapshot extraction for the waveform ring is operational...
r105 );
}
paul
AVF1 and PRC1 tasks added for processing at f1
r121 if (status == RTEMS_SUCCESSFUL) // AVF1
{
status = rtems_task_create(
Task_name[TASKID_AVF1], TASK_PRIORITY_AVF1, RTEMS_MINIMUM_STACK_SIZE,
paul
sync
r181 RTEMS_DEFAULT_MODES,
paul
AVF1 and PRC1 tasks added for processing at f1
r121 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_AVF1]
);
}
if (status == RTEMS_SUCCESSFUL) // PRC1
{
status = rtems_task_create(
Task_name[TASKID_PRC1], TASK_PRIORITY_PRC1, RTEMS_MINIMUM_STACK_SIZE * 2,
paul
sync
r182 RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
paul
AVF1 and PRC1 tasks added for processing at f1
r121 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC1]
);
}
paul
avf2 prc2 tasks added...
r124 if (status == RTEMS_SUCCESSFUL) // AVF2
{
status = rtems_task_create(
Task_name[TASKID_AVF2], TASK_PRIORITY_AVF2, RTEMS_MINIMUM_STACK_SIZE,
paul
sync
r181 RTEMS_DEFAULT_MODES,
paul
avf2 prc2 tasks added...
r124 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_AVF2]
);
}
if (status == RTEMS_SUCCESSFUL) // PRC2
{
status = rtems_task_create(
Task_name[TASKID_PRC2], TASK_PRIORITY_PRC2, RTEMS_MINIMUM_STACK_SIZE * 2,
paul
sync
r182 RTEMS_DEFAULT_MODES | RTEMS_NO_PREEMPT,
paul
avf2 prc2 tasks added...
r124 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &Task_id[TASKID_PRC2]
);
}
paul
snapshot extraction for the waveform ring is operational...
r105
//****************
// 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
paul
STAT task removec...
r239 if (status == RTEMS_SUCCESSFUL) // LOAD
paul
Header files inclusion reworked...
r40 {
status = rtems_task_create(
paul
STAT task removec...
r239 Task_name[TASKID_LOAD], TASK_PRIORITY_LOAD, RTEMS_MINIMUM_STACK_SIZE,
paul
snapshot extraction for the waveform ring is operational...
r105 RTEMS_DEFAULT_MODES,
paul
STAT task removec...
r239 RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_LOAD]
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,
paul
sync
r181 RTEMS_DEFAULT_MODES,
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT, &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
paul
Header files inclusion reworked...
r40 if (status == RTEMS_SUCCESSFUL) // AVF0
{
paul
AVF1 and PRC1 tasks added for processing at f1
r121 status = rtems_task_start( Task_id[TASKID_AVF0], avf0_task, LFR_MODE_STANDBY );
paul
Header files inclusion reworked...
r40 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
Sync at CNES before going back to 117
r119 if (status == RTEMS_SUCCESSFUL) // PRC0
paul
snapshot extraction for the waveform ring is operational...
r105 {
paul
AVF1 and PRC1 tasks added for processing at f1
r121 status = rtems_task_start( Task_id[TASKID_PRC0], prc0_task, LFR_MODE_STANDBY );
paul
snapshot extraction for the waveform ring is operational...
r105 if (status!=RTEMS_SUCCESSFUL) {
paul
Sync at CNES before going back to 117
r119 BOOT_PRINTF("in INIT *** Error starting TASK_PRC0\n")
paul
snapshot extraction for the waveform ring is operational...
r105 }
}
paul
AVF1 and PRC1 tasks added for processing at f1
r121 if (status == RTEMS_SUCCESSFUL) // AVF1
{
status = rtems_task_start( Task_id[TASKID_AVF1], avf1_task, LFR_MODE_STANDBY );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_AVF1\n")
}
}
if (status == RTEMS_SUCCESSFUL) // PRC1
{
status = rtems_task_start( Task_id[TASKID_PRC1], prc1_task, LFR_MODE_STANDBY );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_PRC1\n")
}
}
paul
Sources reorganized...
r126 if (status == RTEMS_SUCCESSFUL) // AVF2
{
status = rtems_task_start( Task_id[TASKID_AVF2], avf2_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_AVF2\n")
}
}
if (status == RTEMS_SUCCESSFUL) // PRC2
{
status = rtems_task_start( Task_id[TASKID_PRC2], prc2_task, 1 );
if (status!=RTEMS_SUCCESSFUL) {
BOOT_PRINTF("in INIT *** Error starting TASK_PRC2\n")
}
}
paul
snapshot extraction for the waveform ring is operational...
r105
//****************
// 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")
}
}
paul
STAT task removec...
r239 if (status == RTEMS_SUCCESSFUL) // LOAD
paul
snapshot extraction for the waveform ring is operational...
r105 {
paul
STAT task removec...
r239 status = rtems_task_start( Task_id[TASKID_LOAD], load_task, 1 );
paul
snapshot extraction for the waveform ring is operational...
r105 if (status!=RTEMS_SUCCESSFUL) {
paul
STAT task removec...
r239 BOOT_PRINTF("in INIT *** Error starting TASK_LOAD\n")
paul
snapshot extraction for the waveform ring is operational...
r105 }
}
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
AVF1 and PRC1 tasks added for processing at f1
r121 rtems_status_code status_q_p0;
rtems_status_code status_q_p1;
paul
avf2 prc2 tasks added...
r124 rtems_status_code status_q_p2;
paul
Last commit before release 0-13...
r35 rtems_status_code ret;
rtems_id queue_id;
paul
There is a message queue between AVFO and MATR...
r118 //****************************************
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],
paul
There is a message queue between AVFO and MATR...
r118 MSG_QUEUE_COUNT_RECV, 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
There is a message queue between AVFO and MATR...
r118 //************************************************
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],
paul
There is a message queue between AVFO and MATR...
r118 MSG_QUEUE_COUNT_SEND, MSG_QUEUE_SIZE_SEND,
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)
}
paul
Sync at CNES before going back to 117
r119 //*****************************************************************************
// create the queue for handling averaged spectral matrices for processing @ f0
paul
AVF1 and PRC1 tasks added for processing at f1
r121 status_q_p0 = rtems_message_queue_create( misc_name[QUEUE_PRC0],
paul
Sync at CNES before going back to 117
r119 MSG_QUEUE_COUNT_PRC0, MSG_QUEUE_SIZE_PRC0,
paul
There is a message queue between AVFO and MATR...
r118 RTEMS_FIFO | RTEMS_LOCAL, &queue_id );
paul
AVF1 and PRC1 tasks added for processing at f1
r121 if ( status_q_p0 != RTEMS_SUCCESSFUL ) {
PRINTF1("in create_message_queues *** ERR creating Q_P0 queue, %d\n", status_q_p0)
paul
There is a message queue between AVFO and MATR...
r118 }
paul
Sync at CNES before going back to 117
r119 //*****************************************************************************
// create the queue for handling averaged spectral matrices for processing @ f1
paul
AVF1 and PRC1 tasks added for processing at f1
r121 status_q_p1 = rtems_message_queue_create( misc_name[QUEUE_PRC1],
MSG_QUEUE_COUNT_PRC1, MSG_QUEUE_SIZE_PRC1,
RTEMS_FIFO | RTEMS_LOCAL, &queue_id );
if ( status_q_p1 != RTEMS_SUCCESSFUL ) {
PRINTF1("in create_message_queues *** ERR creating Q_P1 queue, %d\n", status_q_p1)
}
paul
Sync at CNES before going back to 117
r119
paul
avf2 prc2 tasks added...
r124 //*****************************************************************************
// create the queue for handling averaged spectral matrices for processing @ f2
status_q_p2 = rtems_message_queue_create( misc_name[QUEUE_PRC2],
MSG_QUEUE_COUNT_PRC2, MSG_QUEUE_SIZE_PRC2,
RTEMS_FIFO | RTEMS_LOCAL, &queue_id );
if ( status_q_p2 != RTEMS_SUCCESSFUL ) {
PRINTF1("in create_message_queues *** ERR creating Q_P2 queue, %d\n", status_q_p2)
}
paul
Ignore doc files...
r46 if ( status_recv != RTEMS_SUCCESSFUL )
{
ret = status_recv;
}
paul
There is a message queue between AVFO and MATR...
r118 else if( status_send != RTEMS_SUCCESSFUL )
{
ret = status_send;
}
paul
AVF1 and PRC1 tasks added for processing at f1
r121 else if( status_q_p0 != RTEMS_SUCCESSFUL )
{
ret = status_q_p0;
}
paul
avf2 prc2 tasks added...
r124 else if( status_q_p1 != RTEMS_SUCCESSFUL )
{
ret = status_q_p1;
}
paul
Ignore doc files...
r46 else
{
paul
avf2 prc2 tasks added...
r124 ret = status_q_p2;
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
paul
timecode handling modified:...
r248 rtems_status_code create_timecode_timer( void )
{
rtems_status_code status;
status = rtems_timer_create( timecode_timer_name, &timecode_timer_id );
if ( status != RTEMS_SUCCESSFUL )
{
PRINTF1("in create_timer_timecode *** ERR creating SPTC timer, %d\n", status)
}
else
{
PRINTF("in create_timer_timecode *** OK creating SPTC timer\n")
}
return status;
}
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;
}
paul
There is a message queue between AVFO and MATR...
r118
paul
Sync at CNES before going back to 117
r119 rtems_status_code get_message_queue_id_prc0( rtems_id *queue_id )
paul
There is a message queue between AVFO and MATR...
r118 {
rtems_status_code status;
rtems_name queue_name;
paul
Sync at CNES before going back to 117
r119 queue_name = rtems_build_name( 'Q', '_', 'P', '0' );
paul
There is a message queue between AVFO and MATR...
r118
status = rtems_message_queue_ident( queue_name, 0, queue_id );
return status;
}
paul
Sync at CNES before going back to 117
r119
rtems_status_code get_message_queue_id_prc1( rtems_id *queue_id )
{
rtems_status_code status;
rtems_name queue_name;
queue_name = rtems_build_name( 'Q', '_', 'P', '1' );
status = rtems_message_queue_ident( queue_name, 0, queue_id );
return status;
}
paul
avf2 prc2 tasks added...
r124
rtems_status_code get_message_queue_id_prc2( rtems_id *queue_id )
{
rtems_status_code status;
rtems_name queue_name;
queue_name = rtems_build_name( 'Q', '_', 'P', '2' );
status = rtems_message_queue_ident( queue_name, 0, queue_id );
return status;
}
paul
fifo occupation reported in the HK packet
r197
void update_queue_max_count( rtems_id queue_id, unsigned char*fifo_size_max )
{
u_int32_t count;
rtems_status_code status;
status = rtems_message_queue_get_number_pending( queue_id, &count );
count = count + 1;
if (status != RTEMS_SUCCESSFUL)
{
PRINTF1("in update_queue_max_count *** ERR = %d\n", status)
}
else
{
if (count > *fifo_size_max)
{
*fifo_size_max = count;
}
}
}
void init_ring(ring_node ring[], unsigned char nbNodes, volatile int buffer[], unsigned int bufferSize )
{
unsigned char i;
//***************
// BUFFER ADDRESS
for(i=0; i<nbNodes; i++)
{
paul
rev 3.0.0.2
r205 ring[i].coarseTime = 0xffffffff;
ring[i].fineTime = 0xffffffff;
paul
fifo occupation reported in the HK packet
r197 ring[i].sid = 0x00;
ring[i].status = 0x00;
ring[i].buffer_address = (int) &buffer[ i * bufferSize ];
}
//*****
// NEXT
ring[ nbNodes - 1 ].next = (ring_node*) &ring[ 0 ];
for(i=0; i<nbNodes-1; i++)
{
ring[i].next = (ring_node*) &ring[ i + 1 ];
}
//*********
// PREVIOUS
ring[ 0 ].previous = (ring_node*) &ring[ nbNodes - 1 ];
for(i=1; i<nbNodes; i++)
{
ring[i].previous = (ring_node*) &ring[ i - 1 ];
}
}