##// END OF EJS Templates
Bug 801 Don_Initialisation_P2
paul -
r320:6303d998f250 R3_plus draft
parent child
Show More
@@ -130,6 +130,8 rtems_task Init( rtems_task_argument ign
130 130 rtems_status_code status_spw;
131 131 rtems_isr_entry old_isr_handler;
132 132
133 old_isr_handler = NULL;
134
133 135 // UART settings
134 136 enable_apbuart_transmitter();
135 137 set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE);
@@ -736,6 +738,9 rtems_status_code create_message_queues(
736 738 rtems_status_code ret;
737 739 rtems_id queue_id;
738 740
741 ret = RTEMS_SUCCESSFUL;
742 queue_id = RTEMS_ID_NONE;
743
739 744 //****************************************
740 745 // create the queue for handling valid TCs
741 746 status_recv = rtems_message_queue_create( misc_name[QUEUE_RECV],
@@ -888,6 +893,8 void update_queue_max_count( rtems_id qu
888 893 u_int32_t count;
889 894 rtems_status_code status;
890 895
896 count = 0;
897
891 898 status = rtems_message_queue_get_number_pending( queue_id, &count );
892 899
893 900 count = count + 1;
@@ -25,6 +25,8 void timer_configure(unsigned char timer
25 25 rtems_status_code status;
26 26 rtems_isr_entry old_isr_handler;
27 27
28 old_isr_handler = NULL;
29
28 30 gptimer_regs->timer[timer].ctrl = INIT_CHAR; // reset the control register
29 31
30 32 status = rtems_interrupt_catch( timer_isr, interrupt_level, &old_isr_handler) ; // see sparcv8.pdf p.76 for interrupt levels
@@ -190,6 +192,8 rtems_task load_task(rtems_task_argument
190 192 rtems_name name_watchdog_rate_monotonic; // name of the watchdog rate monotonic
191 193 rtems_id watchdog_period_id; // id of the watchdog rate monotonic period
192 194
195 watchdog_period_id = RTEMS_ID_NONE;
196
193 197 name_watchdog_rate_monotonic = rtems_build_name( 'L', 'O', 'A', 'D' );
194 198
195 199 status = rtems_rate_monotonic_create( name_watchdog_rate_monotonic, &watchdog_period_id );
@@ -233,6 +237,8 rtems_task hous_task(rtems_task_argument
233 237 rtems_rate_monotonic_period_status period_status;
234 238 bool isSynchronized;
235 239
240 queue_id = RTEMS_ID_NONE;
241 memset(&period_status, 0, sizeof(rtems_rate_monotonic_period_status));
236 242 isSynchronized = false;
237 243
238 244 status = get_message_queue_id_send( &queue_id );
@@ -440,22 +446,7 rtems_task dumb_task( rtems_task_argumen
440 446 unsigned int fine_time = 0;
441 447 rtems_event_set event_out;
442 448
443 char *DumbMessages[DUMB_MESSAGE_NB] = {DUMB_MESSAGE_0, // RTEMS_EVENT_0
444 DUMB_MESSAGE_1, // RTEMS_EVENT_1
445 DUMB_MESSAGE_2, // RTEMS_EVENT_2
446 DUMB_MESSAGE_3, // RTEMS_EVENT_3
447 DUMB_MESSAGE_4, // RTEMS_EVENT_4
448 DUMB_MESSAGE_5, // RTEMS_EVENT_5
449 DUMB_MESSAGE_6, // RTEMS_EVENT_6
450 DUMB_MESSAGE_7, // RTEMS_EVENT_7
451 DUMB_MESSAGE_8, // RTEMS_EVENT_8
452 DUMB_MESSAGE_9, // RTEMS_EVENT_9
453 DUMB_MESSAGE_10, // RTEMS_EVENT_10
454 DUMB_MESSAGE_11, // RTEMS_EVENT_11
455 DUMB_MESSAGE_12, // RTEMS_EVENT_12
456 DUMB_MESSAGE_13, // RTEMS_EVENT_13
457 DUMB_MESSAGE_14 // RTEMS_EVENT_14
458 };
449 event_out = EVENT_SETS_NONE_PENDING;
459 450
460 451 BOOT_PRINTF("in DUMB *** \n")
461 452
@@ -608,6 +599,8 void send_dumb_hk( void )
608 599 unsigned int i;
609 600 rtems_id queue_id;
610 601
602 queue_id = RTEMS_ID_NONE;
603
611 604 dummy_hk_packet.targetLogicalAddress = CCSDS_DESTINATION_ID;
612 605 dummy_hk_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID;
613 606 dummy_hk_packet.reserved = DEFAULT_RESERVED;
@@ -983,6 +976,11 void set_hk_lfr_ahb_correctable() // C
983 976 unsigned int fprfErrorCounter;
984 977 unsigned int iurfErrorCounter;
985 978
979 instructionErrorCounter = 0;
980 dataErrorCounter = 0;
981 fprfErrorCounter = 0;
982 iurfErrorCounter = 0;
983
986 984 CCR_getInstructionAndDataErrorCounters( &instructionErrorCounter, &dataErrorCounter);
987 985 ASR16_get_FPRF_IURF_ErrorCounters( &fprfErrorCounter, &iurfErrorCounter);
988 986
@@ -39,6 +39,9 rtems_task spiq_task(rtems_task_argument
39 39 rtems_status_code status;
40 40 int linkStatus;
41 41
42 event_out = EVENT_SETS_NONE_PENDING;
43 linkStatus = 0;
44
42 45 BOOT_PRINTF("in SPIQ *** \n")
43 46
44 47 while(true){
@@ -131,6 +134,11 rtems_task recv_task( rtems_task_argumen
131 134 rtems_id queue_recv_id;
132 135 rtems_id queue_send_id;
133 136
137 memset( &currentTC, 0, sizeof(ccsdsTelecommandPacket_t) );
138 destinationID = 0;
139 queue_recv_id = RTEMS_ID_NONE;
140 queue_send_id = RTEMS_ID_NONE;
141
134 142 initLookUpTableForCRC(); // the table is used to compute Cyclic Redundancy Codes
135 143
136 144 status = get_message_queue_id_recv( &queue_recv_id );
@@ -230,6 +238,8 rtems_task send_task( rtems_task_argumen
230 238 incomingRingNodePtr = NULL;
231 239 ring_node_address = 0;
232 240 charPtr = (char *) &ring_node_address;
241 size = 0;
242 queue_send_id = RTEMS_ID_NONE;
233 243 sid = 0;
234 244 sidAsUnsignedChar = 0;
235 245
@@ -337,6 +347,9 rtems_task link_task( rtems_task_argumen
337 347 rtems_status_code status;
338 348 int linkStatus;
339 349
350 event_out = EVENT_SETS_NONE_PENDING;
351 linkStatus = 0;
352
340 353 BOOT_PRINTF("in LINK ***\n")
341 354
342 355 while(1)
@@ -394,6 +407,8 int spacewire_open_link( void ) // by d
394 407 */
395 408 rtems_status_code status;
396 409
410 status = RTEMS_SUCCESSFUL;
411
397 412 fdSPW = open(GRSPW_DEVICE_NAME, O_RDWR); // open the device. the open call resets the hardware
398 413 if ( fdSPW < 0 ) {
399 414 PRINTF1("ERR *** in configure_spw_link *** error opening "GRSPW_DEVICE_NAME" with ERR %d\n", errno)
@@ -508,6 +523,8 int spacewire_several_connect_attemps( v
508 523 rtems_status_code status;
509 524 int i;
510 525
526 status_spw = RTEMS_SUCCESSFUL;
527
511 528 i = 0;
512 529 while (i < SY_LFR_DPU_CONNECT_ATTEMPT)
513 530 {
@@ -593,6 +610,8 void spacewire_read_statistics( void )
593 610 rtems_status_code status;
594 611 spw_stats current;
595 612
613 memset(&current, 0, sizeof(spw_stats));
614
596 615 spacewire_get_last_error();
597 616
598 617 // read the current statistics
@@ -645,7 +664,7 void spacewire_read_statistics( void )
645 664
646 665 void spacewire_get_last_error( void )
647 666 {
648 static spw_stats previous;
667 static spw_stats previous = {0};
649 668 spw_stats current;
650 669 rtems_status_code status;
651 670
@@ -655,6 +674,7 void spacewire_get_last_error( void )
655 674 int fineTime;
656 675 unsigned char update_hk_lfr_last_er;
657 676
677 memset(&current, 0, sizeof(spw_stats));
658 678 update_hk_lfr_last_er = 0;
659 679
660 680 status = ioctl( fdSPW, SPACEWIRE_IOCTRL_GET_STATISTICS, &current );
@@ -29,6 +29,8 unsigned char lfr_rtems_cpu_usage_report
29 29 #endif
30 30
31 31 unsigned char cpu_load;
32
33 ival = 0;
32 34 cpu_load = 0;
33 35
34 36 /*
@@ -57,6 +57,8 rtems_task avf0_task( rtems_task_argumen
57 57 nb_norm_asm = 0;
58 58 nb_sbm_bp1 = 0;
59 59 nb_sbm_bp2 = 0;
60 event_out = EVENT_SETS_NONE_PENDING;
61 queue_id_prc0 = RTEMS_ID_NONE;
60 62
61 63 reset_nb_sm_f0( lfrRequestedMode ); // reset the sm counters that drive the BP and ASM computations / transmissions
62 64 ASM_generic_init_ring( asm_ring_norm_f0, NB_RING_NODES_ASM_NORM_F0 );
@@ -64,7 +66,7 rtems_task avf0_task( rtems_task_argumen
64 66 current_ring_node_asm_norm_f0 = asm_ring_norm_f0;
65 67 current_ring_node_asm_burst_sbm_f0 = asm_ring_burst_sbm_f0;
66 68
67 BOOT_PRINTF1("in AVFO *** lfrRequestedMode = %d\n", (int) lfrRequestedMode)
69 BOOT_PRINTF1("in AVFO *** lfrRequestedMode = %d\n", (int) lfrRequestedMode);
68 70
69 71 status = get_message_queue_id_prc0( &queue_id_prc0 );
70 72 if (status != RTEMS_SUCCESSFUL)
@@ -197,6 +199,14 rtems_task prc0_task( rtems_task_argumen
197 199 float nbSMInASMNORM;
198 200 float nbSMInASMSBM;
199 201
202 size = 0;
203 queue_id = RTEMS_ID_NONE;
204 queue_id_q_p0 = RTEMS_ID_NONE;
205 memset( &packet_norm_bp1, 0, sizeof(bp_packet_with_spare) );
206 memset( &packet_norm_bp2, 0, sizeof(bp_packet) );
207 memset( &packet_sbm_bp1, 0, sizeof(bp_packet) );
208 memset( &packet_sbm_bp2, 0, sizeof(bp_packet) );
209
200 210 // init the ring of the averaged spectral matrices which will be transmitted to the DPU
201 211 init_ring( ring_to_send_asm_f0, NB_RING_NODES_ASM_F0, (volatile int*) buffer_asm_f0, TOTAL_SIZE_SM );
202 212 current_ring_node_to_send_asm_f0 = ring_to_send_asm_f0;
@@ -53,6 +53,9 rtems_task avf1_task( rtems_task_argumen
53 53 unsigned int nb_sbm_bp1;
54 54 unsigned int nb_sbm_bp2;
55 55
56 event_out = EVENT_SETS_NONE_PENDING;
57 queue_id_prc1 = RTEMS_ID_NONE;
58
56 59 nb_norm_bp1 = 0;
57 60 nb_norm_bp2 = 0;
58 61 nb_norm_asm = 0;
@@ -198,6 +201,14 rtems_task prc1_task( rtems_task_argumen
198 201 float nbSMInASMNORM;
199 202 float nbSMInASMSBM;
200 203
204 size = 0;
205 queue_id_send = RTEMS_ID_NONE;
206 queue_id_q_p1 = RTEMS_ID_NONE;
207 memset( &packet_norm_bp1, 0, sizeof(bp_packet_with_spare) );
208 memset( &packet_norm_bp2, 0, sizeof(bp_packet) );
209 memset( &packet_sbm_bp1, 0, sizeof(bp_packet) );
210 memset( &packet_sbm_bp2, 0, sizeof(bp_packet) );
211
201 212 // init the ring of the averaged spectral matrices which will be transmitted to the DPU
202 213 init_ring( ring_to_send_asm_f1, NB_RING_NODES_ASM_F1, (volatile int*) buffer_asm_f1, TOTAL_SIZE_SM );
203 214 current_ring_node_to_send_asm_f1 = ring_to_send_asm_f1;
@@ -45,6 +45,8 rtems_task avf2_task( rtems_task_argumen
45 45 unsigned int nb_norm_bp2;
46 46 unsigned int nb_norm_asm;
47 47
48 event_out = EVENT_SETS_NONE_PENDING;
49 queue_id_prc2 = RTEMS_ID_NONE;
48 50 nb_norm_bp1 = 0;
49 51 nb_norm_bp2 = 0;
50 52 nb_norm_asm = 0;
@@ -146,6 +148,12 rtems_task prc2_task( rtems_task_argumen
146 148
147 149 unsigned long long int localTime;
148 150
151 size = 0;
152 queue_id_send = RTEMS_ID_NONE;
153 queue_id_q_p2 = RTEMS_ID_NONE;
154 memset( &packet_norm_bp1, 0, sizeof(bp_packet) );
155 memset( &packet_norm_bp2, 0, sizeof(bp_packet) );
156
149 157 // init the ring of the averaged spectral matrices which will be transmitted to the DPU
150 158 init_ring( ring_to_send_asm_f2, NB_RING_NODES_ASM_F2, (volatile int*) buffer_asm_f2, TOTAL_SIZE_SM );
151 159 current_ring_node_to_send_asm_f2 = ring_to_send_asm_f2;
@@ -551,6 +551,8 unsigned char getSID( rtems_event_set ev
551 551 rtems_event_set eventSetBURST;
552 552 rtems_event_set eventSetSBM;
553 553
554 sid = 0;
555
554 556 //******
555 557 // BURST
556 558 eventSetBURST = RTEMS_EVENT_BURST_BP1_F0
@@ -193,6 +193,8 int tc_check_type( unsigned char packetT
193 193
194 194 int status;
195 195
196 status = ILL_TYPE;
197
196 198 if ( (packetType == TC_TYPE_GEN) || (packetType == TC_TYPE_TIME))
197 199 {
198 200 status = CCSDS_TM_VALID;
@@ -272,6 +274,8 int tc_check_sid( unsigned char sid )
272 274
273 275 int status;
274 276
277 status = WRONG_SRC_ID;
278
275 279 if ( (sid == SID_TC_MISSION_TIMELINE) || (sid == SID_TC_TC_SEQUENCES) || (sid == SID_TC_RECOVERY_ACTION_CMD)
276 280 || (sid == SID_TC_BACKUP_MISSION_TIMELINE)
277 281 || (sid == SID_TC_DIRECT_CMD) || (sid == SID_TC_SPARE_GRD_SRC1) || (sid == SID_TC_SPARE_GRD_SRC2)
@@ -455,6 +459,8 int tc_check_crc( ccsdsTelecommandPacket
455 459 int status;
456 460 unsigned char * CCSDSContent;
457 461
462 status = INCOR_CHECKSUM;
463
458 464 CCSDSContent = (unsigned char*) TCPacket->packetID;
459 465 GetCRCAsTwoBytes(CCSDSContent, computed_CRC, length + CCSDS_TC_TM_PACKET_OFFSET - BYTES_PER_CRC); // 2 CRC bytes removed from the calculation of the CRC
460 466
@@ -36,6 +36,11 rtems_task actn_task( rtems_task_argumen
36 36 rtems_id queue_rcv_id;
37 37 rtems_id queue_snd_id;
38 38
39 memset(&TC, 0, sizeof(ccsdsTelecommandPacket_t));
40 size = 0;
41 queue_rcv_id = RTEMS_ID_NONE;
42 queue_snd_id = RTEMS_ID_NONE;
43
39 44 status = get_message_queue_id_recv( &queue_rcv_id );
40 45 if (status != RTEMS_SUCCESSFUL)
41 46 {
@@ -383,6 +388,8 int check_mode_value( unsigned char requ
383 388 {
384 389 int status;
385 390
391 status = LFR_DEFAULT;
392
386 393 if ( (requestedMode != LFR_MODE_STANDBY)
387 394 && (requestedMode != LFR_MODE_NORMAL) && (requestedMode != LFR_MODE_BURST)
388 395 && (requestedMode != LFR_MODE_SBM1) && (requestedMode != LFR_MODE_SBM2) )
@@ -877,6 +877,8 unsigned int check_update_info_hk_lfr_mo
877 877 {
878 878 unsigned int status;
879 879
880 status = LFR_DEFAULT;
881
880 882 if ( (mode == LFR_MODE_STANDBY) || (mode == LFR_MODE_NORMAL)
881 883 || (mode == LFR_MODE_BURST)
882 884 || (mode == LFR_MODE_SBM1) || (mode == LFR_MODE_SBM2))
@@ -895,6 +897,8 unsigned int check_update_info_hk_tds_mo
895 897 {
896 898 unsigned int status;
897 899
900 status = LFR_DEFAULT;
901
898 902 if ( (mode == TDS_MODE_STANDBY) || (mode == TDS_MODE_NORMAL)
899 903 || (mode == TDS_MODE_BURST)
900 904 || (mode == TDS_MODE_SBM1) || (mode == TDS_MODE_SBM2)
@@ -914,6 +918,8 unsigned int check_update_info_hk_thr_mo
914 918 {
915 919 unsigned int status;
916 920
921 status = LFR_DEFAULT;
922
917 923 if ( (mode == THR_MODE_STANDBY) || (mode == THR_MODE_NORMAL)
918 924 || (mode == THR_MODE_BURST))
919 925 {
@@ -1001,6 +1007,7 void setFBinMask( unsigned char *fbins_m
1001 1007 int binToRemove[NB_BINS_TO_REMOVE];
1002 1008 int k;
1003 1009
1010 closestBin = 0;
1004 1011 whichByte = 0;
1005 1012 bin = 0;
1006 1013
@@ -336,6 +336,9 rtems_task wfrm_task(rtems_task_argument
336 336 ring_node *ring_node_swf1_extracted_ptr;
337 337 ring_node *ring_node_swf2_extracted_ptr;
338 338
339 event_out = EVENT_SETS_NONE_PENDING;
340 queue_id = RTEMS_ID_NONE;
341
339 342 ring_node_swf1_extracted_ptr = (ring_node *) &ring_node_swf1_extracted;
340 343 ring_node_swf2_extracted_ptr = (ring_node *) &ring_node_swf2_extracted;
341 344
@@ -386,6 +389,9 rtems_task cwf3_task(rtems_task_argument
386 389 ring_node ring_node_cwf3_light;
387 390 ring_node *ring_node_to_send_cwf;
388 391
392 event_out = EVENT_SETS_NONE_PENDING;
393 queue_id = RTEMS_ID_NONE;
394
389 395 status = get_message_queue_id_send( &queue_id );
390 396 if (status != RTEMS_SUCCESSFUL)
391 397 {
@@ -451,6 +457,9 rtems_task cwf2_task(rtems_task_argument
451 457 ring_node *ring_node_to_send;
452 458 unsigned long long int acquisitionTimeF0_asLong;
453 459
460 event_out = EVENT_SETS_NONE_PENDING;
461 queue_id = RTEMS_ID_NONE;
462
454 463 acquisitionTimeF0_asLong = INIT_CHAR;
455 464
456 465 status = get_message_queue_id_send( &queue_id );
@@ -519,6 +528,9 rtems_task cwf1_task(rtems_task_argument
519 528
520 529 ring_node *ring_node_to_send_cwf;
521 530
531 event_out = EVENT_SETS_NONE_PENDING;
532 queue_id = RTEMS_ID_NONE;
533
522 534 status = get_message_queue_id_send( &queue_id );
523 535 if (status != RTEMS_SUCCESSFUL)
524 536 {
@@ -574,6 +586,7 rtems_task swbd_task(rtems_task_argument
574 586 rtems_event_set event_out;
575 587 unsigned long long int acquisitionTimeF0_asLong;
576 588
589 event_out = EVENT_SETS_NONE_PENDING;
577 590 acquisitionTimeF0_asLong = INIT_CHAR;
578 591
579 592 BOOT_PRINTF("in SWBD ***\n")
@@ -796,6 +809,9 void build_snapshot_from_ring( ring_node
796 809
797 810 // (2) compute the central reference time
798 811 centerTime_asLong = acquisitionTimeF0_asLong + deltaT_F0;
812 acquisitionTime_asLong = centerTime_asLong; //set to default value (Don_Initialisation_P2)
813 bufferAcquisitionTime_asLong = centerTime_asLong; //set to default value (Don_Initialisation_P2)
814 nbTicksPerSample_asLong = TICKS_PER_T2; //set to default value (Don_Initialisation_P2)
799 815
800 816 // (3) compute the acquisition time of the current snapshot
801 817 switch(frequencyChannel)
@@ -896,6 +912,8 double computeCorrection( unsigned char
896 912 double deltaNext_ms;
897 913 double correctionInF2;
898 914
915 correctionInF2 = 0; //set to default value (Don_Initialisation_P2)
916
899 917 // get acquisition time in fine time ticks
900 918 acquisitionTime = get_acquisition_time( timePtr );
901 919
@@ -933,6 +951,8 void applyCorrection( double correction
933 951 {
934 952 int correctionInt;
935 953
954 correctionInt = 0;
955
936 956 if (correction >= 0.)
937 957 {
938 958 if ( (ONE_TICK_CORR_INTERVAL_0_MIN < correction) && (correction < ONE_TICK_CORR_INTERVAL_0_MAX) )
@@ -1264,6 +1284,10 void increment_seq_counter_source_id( un
1264 1284 rtems_mode current_mode_set;
1265 1285 rtems_status_code status;
1266 1286
1287 initial_mode_set = RTEMS_DEFAULT_MODES;
1288 current_mode_set = RTEMS_DEFAULT_MODES;
1289 sequence_cnt = NULL;
1290
1267 1291 //******************************************
1268 1292 // CHANGE THE MODE OF THE CALLING RTEMS TASK
1269 1293 status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &initial_mode_set );
General Comments 0
You need to be logged in to leave comments. Login now