##// END OF EJS Templates
Switched to O3 with no inlining optim level for debug builds...
Switched to O3 with no inlining optim level for debug builds Debug builds are mostly used for gcov while it seems a bad idea(-O3), with O0 the FSW uses more than 100% CPU in normal mode so the treadoff is to switch to O3 without inlining, this preserves the 1 to 1 relation between code and gcov counters.

File last commit:

r318:d3701d39af11 R3_plus
r397:0c445dc7a949 R3++
Show More
68 lines | 3.0 KiB | text/x-c | CLexer
#include <rtems.h>
#include <grspw.h>
#include <fcntl.h> // for O_RDWR
#include <unistd.h> // for the read call
#include <sys/ioctl.h> // for the ioctl call
#include <errno.h>
#include "fsw_params.h"
#include "tc_handler.h"
#include "fsw_init.h"
#define SPW_LINK_OK 5
#define CONF_TCODE_CTRL 0x0909 // [Time Rx : Time Tx : Link error : Tick-out IRQ]
#define SPW_BIT_NP 0x00100000 // [NP] set the No port force bit
#define SPW_BIT_NP_MASK 0xffdfffff
#define SPW_BIT_RE 0x00010000 // [RE] set the RMAP Enable bit
#define SPW_BIT_RE_MASK 0xfffdffff
#define SPW_LINK_STAT_POS 21
extern spw_stats grspw_stats;
extern rtems_name timecode_timer_name;
extern rtems_id timecode_timer_id;
extern unsigned char oneTcLfrUpdateTimeReceived;
rtems_task spiq_task( rtems_task_argument argument );
rtems_task recv_task( rtems_task_argument unused );
rtems_task send_task( rtems_task_argument argument );
rtems_task link_task( rtems_task_argument argument );
int spacewire_open_link( void );
int spacewire_start_link( int fd );
int spacewire_stop_and_start_link( int fd );
int spacewire_configure_link(int fd );
int spacewire_several_connect_attemps( void );
void spacewire_set_NP( unsigned char val, unsigned int regAddr ); // No Port force
void spacewire_set_RE( unsigned char val, unsigned int regAddr ); // RMAP Enable
void spacewire_read_statistics( void );
void spacewire_get_last_error( void );
void update_hk_lfr_last_er_fields(unsigned int rid, unsigned char code);
void update_hk_with_grspw_stats(void );
void spacewire_update_hk_lfr_link_state( unsigned char *hk_lfr_status_word_0 );
void increase_unsigned_char_counter( unsigned char *counter );
void init_header_cwf( Header_TM_LFR_SCIENCE_CWF_t *header );
void init_header_swf( Header_TM_LFR_SCIENCE_SWF_t *header );
void init_header_asm( Header_TM_LFR_SCIENCE_ASM_t *header );
int spw_send_waveform_CWF( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_CWF_t *header );
int spw_send_waveform_SWF( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_SWF_t *header );
int spw_send_waveform_CWF3_light( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_CWF_t *header );
void spw_send_asm_f0( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_ASM_t *header );
void spw_send_asm_f1( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_ASM_t *header );
void spw_send_asm_f2( ring_node *ring_node_to_send, Header_TM_LFR_SCIENCE_ASM_t *header );
void spw_send_k_dump( ring_node *ring_node_to_send );
unsigned int check_timecode_and_previous_timecode_coherency(unsigned char currentTimecodeCtr);
unsigned int check_timecode_and_internal_time_coherency(unsigned char timecode, unsigned char internalTime);
void timecode_irq_handler( void *pDev, void *regs, int minor, unsigned int tc );
rtems_timer_service_routine timecode_timer_routine( rtems_id timer_id, void *user_data );
void (*grspw_timecode_callback) ( void *pDev, void *regs, int minor, unsigned int tc );