##// END OF EJS Templates
Integration of basic parameters functions in the flight software...
Integration of basic parameters functions in the flight software BP1 and BP2 are computed constant LSB_FIRST_TCH is defined (will be removed later) k coefficients are initialized in the init task v, e1 and e2 are read directly in buffers and put in HK packets sending functions slightly modified spectral matrices are now correctly timestamped a few changes to LFR_basic-parameters

File last commit:

r179:f0fdfd2b8c4c VHDL_0_1_28
r179:f0fdfd2b8c4c VHDL_0_1_28
Show More
fsw_processing.c
532 lines | 17.5 KiB | text/x-c | CLexer
paul
Sources reorganized...
r126 /** Functions related to data processing.
*
* @file
* @author P. LEROY
*
* These function are related to data processing, i.e. spectral matrices averaging and basic parameters computation.
*
*/
#include "fsw_processing.h"
#include "fsw_processing_globals.c"
unsigned int nb_sm_f0;
unsigned int nb_sm_f0_aux_f1;
unsigned int nb_sm_f1;
unsigned int nb_sm_f0_aux_f2;
//************************
// spectral matrices rings
paul
New version of ASM packets transmission...
r173 ring_node sm_ring_f0[ NB_RING_NODES_SM_F0 ];
ring_node sm_ring_f1[ NB_RING_NODES_SM_F1 ];
ring_node sm_ring_f2[ NB_RING_NODES_SM_F2 ];
ring_node *current_ring_node_sm_f0;
ring_node *current_ring_node_sm_f1;
ring_node *current_ring_node_sm_f2;
ring_node *ring_node_for_averaging_sm_f0;
ring_node *ring_node_for_averaging_sm_f1;
ring_node *ring_node_for_averaging_sm_f2;
paul
Sources reorganized...
r126
paul
Integration of basic parameters functions in the flight software...
r179 //
ring_node * getRingNodeForAveraging( unsigned char frequencyChannel)
{
ring_node *node;
node = NULL;
switch ( frequencyChannel ) {
case 0:
node = ring_node_for_averaging_sm_f0;
break;
case 1:
node = ring_node_for_averaging_sm_f1;
break;
case 2:
node = ring_node_for_averaging_sm_f2;
break;
default:
break;
}
return node;
}
paul
Sources reorganized...
r126 //***********************************************************
// Interrupt Service Routine for spectral matrices processing
paul
Sync
r147 void spectral_matrices_isr_f0( void )
paul
Sources reorganized...
r126 {
paul
Sync
r139 unsigned char status;
paul
Integration of basic parameters functions in the flight software...
r179 rtems_status_code status_code;
paul
Sync
r139
status = spectral_matrix_regs->status & 0x03; // [0011] get the status_ready_matrix_f0_x bits
paul
Sync
r147
paul
Sync
r139 switch(status)
paul
1.0.0.7...
r135 {
paul
Sync
r139 case 0:
break;
case 3:
paul
Integration of basic parameters functions in the flight software...
r179 // UNEXPECTED VALUE
paul
Bug #117
r149 spectral_matrix_regs->status = 0x03; // [0011]
paul
Integration of basic parameters functions in the flight software...
r179 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
paul
Sync
r139 break;
case 1:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f0 = current_ring_node_sm_f0->previous;
paul
Sync
r139 current_ring_node_sm_f0 = current_ring_node_sm_f0->next;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f0->coarseTime = spectral_matrix_regs->f0_0_coarse_time;
ring_node_for_averaging_sm_f0->fineTime = spectral_matrix_regs->f0_0_fine_time;
paul
Sync
r139 spectral_matrix_regs->f0_0_address = current_ring_node_sm_f0->buffer_address;
paul
Integration of basic parameters functions in the flight software...
r179 spectral_matrix_regs->status = 0x01; // [0000 0001]
// if there are enough ring nodes ready, wake up an AVFx task
nb_sm_f0 = nb_sm_f0 + 1;
if (nb_sm_f0 == NB_SM_BEFORE_AVF0)
{
if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
}
nb_sm_f0 = 0;
}
paul
Sync
r139 break;
case 2:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f0 = current_ring_node_sm_f0->previous;
paul
Sync
r139 current_ring_node_sm_f0 = current_ring_node_sm_f0->next;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f0->coarseTime = spectral_matrix_regs->f0_1_coarse_time;
ring_node_for_averaging_sm_f0->fineTime = spectral_matrix_regs->f0_1_fine_time;
spectral_matrix_regs->f0_0_address = current_ring_node_sm_f0->buffer_address;
spectral_matrix_regs->status = 0x02; // [0000 0010]
// if there are enough ring nodes ready, wake up an AVFx task
nb_sm_f0 = nb_sm_f0 + 1;
if (nb_sm_f0 == NB_SM_BEFORE_AVF0)
{
if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
}
nb_sm_f0 = 0;
}
paul
Sync
r147 break;
}
}
void spectral_matrices_isr_f1( void )
{
paul
Integration of basic parameters functions in the flight software...
r179 rtems_status_code status_code;
paul
Sync
r147 unsigned char status;
status = (spectral_matrix_regs->status & 0x0c) >> 2; // [1100] get the status_ready_matrix_f0_x bits
switch(status)
{
case 0:
break;
case 3:
paul
updates for the compliance with the spectral matrix VHDL design
r150 // UNEXPECTED VALUE
spectral_matrix_regs->status = 0xc0; // [1100]
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
paul
Sync
r147 break;
case 1:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f1 = current_ring_node_sm_f1->previous;
paul
Sync
r147 current_ring_node_sm_f1 = current_ring_node_sm_f1->next;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f1->coarseTime = spectral_matrix_regs->f1_0_coarse_time;
ring_node_for_averaging_sm_f1->fineTime = spectral_matrix_regs->f1_0_fine_time;
paul
Sync
r147 spectral_matrix_regs->f1_0_address = current_ring_node_sm_f1->buffer_address;
paul
Integration of basic parameters functions in the flight software...
r179 spectral_matrix_regs->status = 0x04; // [0000 0100]
// if there are enough ring nodes ready, wake up an AVFx task
nb_sm_f1 = nb_sm_f1 + 1;
if (nb_sm_f1 == NB_SM_BEFORE_AVF1)
{
if (rtems_event_send( Task_id[TASKID_AVF1], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
}
nb_sm_f1 = 0;
}
paul
Sync
r147 break;
case 2:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f1 = current_ring_node_sm_f1->previous;
paul
Sync
r147 current_ring_node_sm_f1 = current_ring_node_sm_f1->next;
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f1->coarseTime = spectral_matrix_regs->f1_1_coarse_time;
ring_node_for_averaging_sm_f1->fineTime = spectral_matrix_regs->f1_1_fine_time;
paul
Sync
r147 spectral_matrix_regs->f1_1_address = current_ring_node_sm_f1->buffer_address;
paul
Integration of basic parameters functions in the flight software...
r179 spectral_matrix_regs->status = 0x08; // [1000 0000]
// if there are enough ring nodes ready, wake up an AVFx task
nb_sm_f1 = nb_sm_f1 + 1;
if (nb_sm_f1 == NB_SM_BEFORE_AVF1)
{
if (rtems_event_send( Task_id[TASKID_AVF1], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
}
nb_sm_f1 = 0;
}
paul
Sync
r147 break;
}
}
void spectral_matrices_isr_f2( void )
{
unsigned char status;
paul
Many corrections done after Logiscope analysis
r166 rtems_status_code status_code;
paul
Sync
r147
status = (spectral_matrix_regs->status & 0x30) >> 4; // [0011 0000] get the status_ready_matrix_f0_x bits
switch(status)
{
case 0:
paul
Bug #117
r149 break;
paul
Sync
r147 case 3:
paul
updates for the compliance with the spectral matrix VHDL design
r150 // UNEXPECTED VALUE
paul
Bug #117
r149 spectral_matrix_regs->status = 0x30; // [0011 0000]
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
paul
Sync
r147 break;
case 1:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f2 = current_ring_node_sm_f2->previous;
current_ring_node_sm_f2 = current_ring_node_sm_f2->next;
paul
updates for the compliance with the spectral matrix VHDL design
r150 ring_node_for_averaging_sm_f2->coarseTime = spectral_matrix_regs->f2_0_coarse_time;
ring_node_for_averaging_sm_f2->fineTime = spectral_matrix_regs->f2_0_fine_time;
paul
Sync
r147 spectral_matrix_regs->f2_0_address = current_ring_node_sm_f2->buffer_address;
paul
Bug #117
r149 spectral_matrix_regs->status = 0x10; // [0001 0000]
if (rtems_event_send( Task_id[TASKID_AVF2], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
paul
Bug #117
r149 }
paul
Sync
r147 break;
case 2:
paul
Integration of basic parameters functions in the flight software...
r179 ring_node_for_averaging_sm_f2 = current_ring_node_sm_f2->previous;
current_ring_node_sm_f2 = current_ring_node_sm_f2->next;
paul
updates for the compliance with the spectral matrix VHDL design
r150 ring_node_for_averaging_sm_f2->coarseTime = spectral_matrix_regs->f2_1_coarse_time;
ring_node_for_averaging_sm_f2->fineTime = spectral_matrix_regs->f2_1_fine_time;
paul
Sync
r147 spectral_matrix_regs->f2_1_address = current_ring_node_sm_f2->buffer_address;
paul
Bug #117
r149 spectral_matrix_regs->status = 0x20; // [0010 0000]
if (rtems_event_send( Task_id[TASKID_AVF2], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
paul
Bug #117
r149 }
paul
Sync
r139 break;
paul
1.0.0.7...
r135 }
paul
Sync
r147 }
void spectral_matrix_isr_error_handler( void )
{
paul
Integration of basic parameters functions in the flight software...
r179 rtems_status_code status_code;
paul
Many corrections done after Logiscope analysis
r166
paul
Integration of basic parameters functions in the flight software...
r179 if (spectral_matrix_regs->status & 0x7c0) // [0111 1100 0000]
{
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_8 );
}
paul
Sync
r174
paul
Integration of basic parameters functions in the flight software...
r179 spectral_matrix_regs->status = spectral_matrix_regs->status & 0x7c0;
paul
Sync
r147 }
paul
Sources reorganized...
r126
paul
Sync
r147 rtems_isr spectral_matrices_isr( rtems_vector_number vector )
{
// STATUS REGISTER
// input_fifo_write(2) *** input_fifo_write(1) *** input_fifo_write(0)
// 10 9 8
// buffer_full ** bad_component_err ** f2_1 ** f2_0 ** f1_1 ** f1_0 ** f0_1 ** f0_0
// 7 6 5 4 3 2 1 0
paul
1.0.0.7...
r135
paul
Sync
r147 spectral_matrices_isr_f0();
spectral_matrices_isr_f1();
paul
1.0.0.7...
r135
paul
Sync
r147 spectral_matrices_isr_f2();
paul
Sources reorganized...
r126
paul
Sync
r174 spectral_matrix_isr_error_handler();
paul
Sources reorganized...
r126 }
rtems_isr spectral_matrices_isr_simu( rtems_vector_number vector )
{
paul
Many corrections done after Logiscope analysis
r166 rtems_status_code status_code;
paul
Sources reorganized...
r126 //***
// F0
nb_sm_f0 = nb_sm_f0 + 1;
if (nb_sm_f0 == NB_SM_BEFORE_AVF0 )
{
ring_node_for_averaging_sm_f0 = current_ring_node_sm_f0;
if (rtems_event_send( Task_id[TASKID_AVF0], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
paul
Sources reorganized...
r126 }
nb_sm_f0 = 0;
}
//***
// F1
nb_sm_f0_aux_f1 = nb_sm_f0_aux_f1 + 1;
if (nb_sm_f0_aux_f1 == 6)
{
nb_sm_f0_aux_f1 = 0;
nb_sm_f1 = nb_sm_f1 + 1;
}
if (nb_sm_f1 == NB_SM_BEFORE_AVF1 )
{
ring_node_for_averaging_sm_f1 = current_ring_node_sm_f1;
if (rtems_event_send( Task_id[TASKID_AVF1], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
paul
Sources reorganized...
r126 }
nb_sm_f1 = 0;
}
//***
// F2
nb_sm_f0_aux_f2 = nb_sm_f0_aux_f2 + 1;
if (nb_sm_f0_aux_f2 == 96)
{
nb_sm_f0_aux_f2 = 0;
ring_node_for_averaging_sm_f2 = current_ring_node_sm_f2;
if (rtems_event_send( Task_id[TASKID_AVF2], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
{
paul
Many corrections done after Logiscope analysis
r166 status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
paul
Sources reorganized...
r126 }
}
}
//******************
// Spectral Matrices
void reset_nb_sm( void )
{
nb_sm_f0 = 0;
nb_sm_f0_aux_f1 = 0;
nb_sm_f0_aux_f2 = 0;
nb_sm_f1 = 0;
}
void SM_init_rings( void )
{
paul
New version of ASM packets transmission...
r173 init_ring( sm_ring_f0, NB_RING_NODES_SM_F0, sm_f0, TOTAL_SIZE_SM );
init_ring( sm_ring_f1, NB_RING_NODES_SM_F1, sm_f1, TOTAL_SIZE_SM );
init_ring( sm_ring_f2, NB_RING_NODES_SM_F2, sm_f2, TOTAL_SIZE_SM );
DEBUG_PRINTF1("sm_ring_f0 @%x\n", (unsigned int) sm_ring_f0)
DEBUG_PRINTF1("sm_ring_f1 @%x\n", (unsigned int) sm_ring_f1)
DEBUG_PRINTF1("sm_ring_f2 @%x\n", (unsigned int) sm_ring_f2)
DEBUG_PRINTF1("sm_f0 @%x\n", (unsigned int) sm_f0)
DEBUG_PRINTF1("sm_f1 @%x\n", (unsigned int) sm_f1)
DEBUG_PRINTF1("sm_f2 @%x\n", (unsigned int) sm_f2)
paul
Sources reorganized...
r126 }
void ASM_generic_init_ring( ring_node_asm *ring, unsigned char nbNodes )
{
unsigned char i;
ring[ nbNodes - 1 ].next
= (ring_node_asm*) &ring[ 0 ];
for(i=0; i<nbNodes-1; i++)
{
ring[ i ].next = (ring_node_asm*) &ring[ i + 1 ];
}
}
void SM_reset_current_ring_nodes( void )
{
paul
Sync
r139 current_ring_node_sm_f0 = sm_ring_f0[0].next;
current_ring_node_sm_f1 = sm_ring_f1[0].next;
current_ring_node_sm_f2 = sm_ring_f2[0].next;
paul
Sources reorganized...
r126
ring_node_for_averaging_sm_f0 = sm_ring_f0;
ring_node_for_averaging_sm_f1 = sm_ring_f1;
ring_node_for_averaging_sm_f2 = sm_ring_f2;
}
//*****************
// Basic Parameters
paul
Integration of basic parameters functions in the flight software...
r179 void BP_init_header( bp_packet *header,
paul
Sources reorganized...
r126 unsigned int apid, unsigned char sid,
unsigned int packetLength, unsigned char blkNr )
{
header->targetLogicalAddress = CCSDS_DESTINATION_ID;
header->protocolIdentifier = CCSDS_PROTOCOLE_ID;
header->reserved = 0x00;
header->userApplication = CCSDS_USER_APP;
header->packetID[0] = (unsigned char) (apid >> 8);
header->packetID[1] = (unsigned char) (apid);
header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE;
header->packetSequenceControl[1] = 0x00;
header->packetLength[0] = (unsigned char) (packetLength >> 8);
header->packetLength[1] = (unsigned char) (packetLength);
// DATA FIELD HEADER
header->spare1_pusVersion_spare2 = 0x10;
header->serviceType = TM_TYPE_LFR_SCIENCE; // service type
header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
header->destinationID = TM_DESTINATION_ID_GROUND;
paul
Integration of basic parameters functions in the flight software...
r179 header->time[0] = 0x00;
header->time[1] = 0x00;
header->time[2] = 0x00;
header->time[3] = 0x00;
header->time[4] = 0x00;
header->time[5] = 0x00;
paul
Sources reorganized...
r126 // AUXILIARY DATA HEADER
header->sid = sid;
header->biaStatusInfo = 0x00;
paul
Integration of basic parameters functions in the flight software...
r179 header->acquisitionTime[0] = 0x00;
header->acquisitionTime[1] = 0x00;
header->acquisitionTime[2] = 0x00;
header->acquisitionTime[3] = 0x00;
header->acquisitionTime[4] = 0x00;
header->acquisitionTime[5] = 0x00;
paul
Sources reorganized...
r126 header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB
header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB
}
void BP_init_header_with_spare(Header_TM_LFR_SCIENCE_BP_with_spare_t *header,
unsigned int apid, unsigned char sid,
unsigned int packetLength , unsigned char blkNr)
{
header->targetLogicalAddress = CCSDS_DESTINATION_ID;
header->protocolIdentifier = CCSDS_PROTOCOLE_ID;
header->reserved = 0x00;
header->userApplication = CCSDS_USER_APP;
header->packetID[0] = (unsigned char) (apid >> 8);
header->packetID[1] = (unsigned char) (apid);
header->packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE;
header->packetSequenceControl[1] = 0x00;
header->packetLength[0] = (unsigned char) (packetLength >> 8);
header->packetLength[1] = (unsigned char) (packetLength);
// DATA FIELD HEADER
header->spare1_pusVersion_spare2 = 0x10;
header->serviceType = TM_TYPE_LFR_SCIENCE; // service type
header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
header->destinationID = TM_DESTINATION_ID_GROUND;
// AUXILIARY DATA HEADER
header->sid = sid;
header->biaStatusInfo = 0x00;
header->time[0] = 0x00;
header->time[0] = 0x00;
header->time[0] = 0x00;
header->time[0] = 0x00;
header->time[0] = 0x00;
header->time[0] = 0x00;
paul
cpu_load added to the housekeeping packets
r134 header->source_data_spare = 0x00;
paul
Sources reorganized...
r126 header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB
header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB
}
paul
sequence_cnt field set for BP and ASM packets
r133 void BP_send(char *data, rtems_id queue_id, unsigned int nbBytesToSend, unsigned int sid )
paul
Sources reorganized...
r126 {
rtems_status_code status;
paul
sequence_cnt field set for BP and ASM packets
r133 // SET THE SEQUENCE_CNT PARAMETER
increment_seq_counter_source_id( (unsigned char*) &data[ PACKET_POS_SEQUENCE_CNT ], sid );
paul
Sources reorganized...
r126 // SEND PACKET
status = rtems_message_queue_send( queue_id, data, nbBytesToSend);
if (status != RTEMS_SUCCESSFUL)
{
printf("ERR *** in BP_send *** ERR %d\n", (int) status);
}
}
//******************
// general functions
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 void reset_sm_status( void )
{
// error
// 10 --------------- 9 ---------------- 8 ---------------- 7 ---------
// input_fif0_write_2 input_fifo_write_1 input_fifo_write_0 buffer_full
// ---------- 5 -- 4 -- 3 -- 2 -- 1 -- 0 --
// ready bits f2_1 f2_0 f1_1 f1_1 f0_1 f0_0
spectral_matrix_regs->status = 0x7ff; // [0111 1111 1111]
}
paul
Sources reorganized...
r126 void reset_spectral_matrix_regs( void )
{
/** This function resets the spectral matrices module registers.
*
* The registers affected by this function are located at the following offset addresses:
*
* - 0x00 config
* - 0x04 status
* - 0x08 matrixF0_Address0
* - 0x10 matrixFO_Address1
* - 0x14 matrixF1_Address
* - 0x18 matrixF2_Address
*
*/
paul
The flight software is now compatible with the VHDL 0.1.32...
r171 set_sm_irq_onError( 0 );
set_sm_irq_onNewMatrix( 0 );
reset_sm_status();
paul
Sources reorganized...
r126
paul
Integration of basic parameters functions in the flight software...
r179 // F1
paul
Sync
r139 spectral_matrix_regs->f0_0_address = current_ring_node_sm_f0->previous->buffer_address;
spectral_matrix_regs->f0_1_address = current_ring_node_sm_f0->buffer_address;
paul
Integration of basic parameters functions in the flight software...
r179 // F2
paul
Sync
r139 spectral_matrix_regs->f1_0_address = current_ring_node_sm_f1->previous->buffer_address;
spectral_matrix_regs->f1_1_address = current_ring_node_sm_f1->buffer_address;
paul
Integration of basic parameters functions in the flight software...
r179 // F3
paul
Sync
r139 spectral_matrix_regs->f2_0_address = current_ring_node_sm_f2->previous->buffer_address;
spectral_matrix_regs->f2_1_address = current_ring_node_sm_f2->buffer_address;
paul
timegen version 0.0.0.1
r170
spectral_matrix_regs->matrix_length = 0xc8; // 25 * 128 / 16 = 200 = 0xc8
paul
Sources reorganized...
r126 }
void set_time( unsigned char *time, unsigned char * timeInBuffer )
{
time[0] = timeInBuffer[0];
time[1] = timeInBuffer[1];
time[2] = timeInBuffer[2];
time[3] = timeInBuffer[3];
time[4] = timeInBuffer[6];
time[5] = timeInBuffer[7];
}
paul
Sync
r139
unsigned long long int get_acquisition_time( unsigned char *timePtr )
{
unsigned long long int acquisitionTimeAslong;
acquisitionTimeAslong = 0x00;
acquisitionTimeAslong = ( (unsigned long long int) (timePtr[0] & 0x7f) << 40 ) // [0111 1111] mask the synchronization bit
+ ( (unsigned long long int) timePtr[1] << 32 )
paul
2.0.1.0...
r164 + ( (unsigned long long int) timePtr[2] << 24 )
+ ( (unsigned long long int) timePtr[3] << 16 )
+ ( (unsigned long long int) timePtr[6] << 8 )
+ ( (unsigned long long int) timePtr[7] );
paul
Sync
r139 return acquisitionTimeAslong;
}
paul
Bug #117
r149 unsigned char getSID( rtems_event_set event )
{
unsigned char sid;
paul
Sync
r139
paul
Bug #117
r149 rtems_event_set eventSetBURST;
rtems_event_set eventSetSBM;
//******
// BURST
eventSetBURST = RTEMS_EVENT_BURST_BP1_F0
| RTEMS_EVENT_BURST_BP1_F1
| RTEMS_EVENT_BURST_BP2_F0
| RTEMS_EVENT_BURST_BP2_F1;
//****
// SBM
eventSetSBM = RTEMS_EVENT_SBM_BP1_F0
| RTEMS_EVENT_SBM_BP1_F1
| RTEMS_EVENT_SBM_BP2_F0
| RTEMS_EVENT_SBM_BP2_F1;
if (event & eventSetBURST)
{
sid = SID_BURST_BP1_F0;
}
else if (event & eventSetSBM)
{
sid = SID_SBM1_BP1_F0;
}
else
{
sid = 0;
}
return sid;
}