@@ -1,6 +1,6 | |||
|
1 | 1 | ############################################################################# |
|
2 | 2 | # Makefile for building: bin/fsw |
|
3 |
# Generated by qmake (2.01a) (Qt 4.8.4) on: |
|
|
3 | # Generated by qmake (2.01a) (Qt 4.8.4) on: Fri Jul 19 08:56:46 2013 | |
|
4 | 4 | # Project: fsw-qt.pro |
|
5 | 5 | # Template: app |
|
6 | 6 | # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro |
@@ -10,7 +10,7 | |||
|
10 | 10 | |
|
11 | 11 | CC = sparc-rtems-gcc |
|
12 | 12 | CXX = sparc-rtems-g++ |
|
13 |
DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4= |
|
|
13 | DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=9 -DPRINT_MESSAGES_ON_CONSOLE | |
|
14 | 14 | CFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
15 | 15 | CXXFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
16 | 16 | INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header |
|
1 | NO CONTENT: modified file, binary diff hidden |
|
1 | NO CONTENT: modified file, binary diff hidden |
@@ -7,11 +7,11 CONFIG -= qt | |||
|
7 | 7 | include(./sparc.pri) |
|
8 | 8 | |
|
9 | 9 | # flight software version |
|
10 |
SWVERSION=-0- |
|
|
10 | SWVERSION=-0-9 | |
|
11 | 11 | DEFINES += SW_VERSION_N1=0 |
|
12 | 12 | DEFINES += SW_VERSION_N2=0 |
|
13 | 13 | DEFINES += SW_VERSION_N3=0 |
|
14 |
DEFINES += SW_VERSION_N4= |
|
|
14 | DEFINES += SW_VERSION_N4=9 | |
|
15 | 15 | |
|
16 | 16 | contains( CONFIG, verbose ) { |
|
17 | 17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
@@ -1,6 +1,6 | |||
|
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
|
2 | 2 | <!DOCTYPE QtCreatorProject> |
|
3 |
<!-- Written by QtCreator 2.7.0, 2013-07-1 |
|
|
3 | <!-- Written by QtCreator 2.7.0, 2013-07-19T08:53:16. --> | |
|
4 | 4 | <qtcreator> |
|
5 | 5 | <data> |
|
6 | 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -88,9 +88,10 rtems_task Init( rtems_task_argument ign | |||
|
88 | 88 | |
|
89 | 89 | //********** |
|
90 | 90 | // WAVEFORMS |
|
91 | // simulator | |
|
92 | 91 | |
|
93 | 92 | #ifdef GSA |
|
93 | // simulator | |
|
94 | PRINTF("GSA is defined *** fsw-gsa is running \n") | |
|
94 | 95 | configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_WF_SIMULATOR, CLKDIV_WF_SIMULATOR, |
|
95 | 96 | IRQ_SPARC_WF, waveforms_simulator_isr ); |
|
96 | 97 | #else |
@@ -125,61 +126,17 rtems_task Init( rtems_task_argument ign | |||
|
125 | 126 | LEON_Unmask_interrupt( IRQ_TIME2 ); |
|
126 | 127 | |
|
127 | 128 | #ifdef GSA |
|
128 |
|
|
|
129 |
|
|
|
130 |
|
|
|
129 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { | |
|
130 | PRINTF("in INIT *** Error sending event to WFRM\n") | |
|
131 | } | |
|
131 | 132 | #endif |
|
132 | 133 | |
|
134 | LEON_Force_interrupt(IRQ_WF); | |
|
135 | ||
|
133 | 136 | status = rtems_task_delete(RTEMS_SELF); |
|
134 | 137 | |
|
135 | 138 | } |
|
136 | 139 | |
|
137 | rtems_task spiq_task(rtems_task_argument unused) | |
|
138 | { | |
|
139 | rtems_event_set event_out; | |
|
140 | rtems_status_code status; | |
|
141 | unsigned char lfrMode; | |
|
142 | ||
|
143 | while(true){ | |
|
144 | PRINTF("in SPIQ *** Waiting for SPW_LINKERR_EVENT\n") | |
|
145 | rtems_event_receive(SPW_LINKERR_EVENT, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an SPW_LINKERR_EVENT | |
|
146 | ||
|
147 | lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4; // get the current mode | |
|
148 | ||
|
149 | status = spacewire_wait_for_link(); | |
|
150 | ||
|
151 | if (status != RTEMS_SUCCESSFUL) | |
|
152 | { | |
|
153 | //**************** | |
|
154 | // STOP THE SYSTEM | |
|
155 | spacewire_compute_stats_offsets(); | |
|
156 | stop_current_mode(); | |
|
157 | if (rtems_task_suspend(Task_id[TASKID_RECV])!=RTEMS_SUCCESSFUL) { // suspend RECV task | |
|
158 | PRINTF("in SPIQ *** Error suspending RECV Task\n") | |
|
159 | } | |
|
160 | if (rtems_task_suspend(Task_id[TASKID_HOUS])!=RTEMS_SUCCESSFUL) { // suspend HOUS task | |
|
161 | PRINTF("in SPIQ *** Error suspending HOUS Task\n") | |
|
162 | } | |
|
163 | ||
|
164 | //*************************** | |
|
165 | // RESTART THE SPACEWIRE LINK | |
|
166 | spacewire_configure_link(); | |
|
167 | ||
|
168 | //******************* | |
|
169 | // RESTART THE SYSTEM | |
|
170 | //ioctl(fdSPW, SPACEWIRE_IOCTRL_CLR_STATISTICS); // clear statistics | |
|
171 | status = rtems_task_restart( Task_id[TASKID_HOUS], 1 ); | |
|
172 | if (status != RTEMS_SUCCESSFUL) { | |
|
173 | PRINTF1("in SPIQ *** Error restarting HOUS Task *** code %d\n", status) | |
|
174 | } | |
|
175 | if (rtems_task_restart(Task_id[TASKID_RECV], 1) != RTEMS_SUCCESSFUL) { // restart RECV task | |
|
176 | PRINTF("in SPIQ *** Error restarting RECV Task\n") | |
|
177 | } | |
|
178 | //enter_mode(lfrMode, NULL); // enter the mode that was running before the SpaceWire interruption | |
|
179 | } | |
|
180 | } | |
|
181 | } | |
|
182 | ||
|
183 | 140 | void init_parameter_dump(void) |
|
184 | 141 | { |
|
185 | 142 | parameter_dump_packet.targetLogicalAddress = CCSDS_DESTINATION_ID; |
@@ -436,6 +393,54 int start_all_tasks( void ) | |||
|
436 | 393 | return 0; |
|
437 | 394 | } |
|
438 | 395 | |
|
396 | // SPACEWIRE | |
|
397 | ||
|
398 | rtems_task spiq_task(rtems_task_argument unused) | |
|
399 | { | |
|
400 | rtems_event_set event_out; | |
|
401 | rtems_status_code status; | |
|
402 | unsigned char lfrMode; | |
|
403 | ||
|
404 | while(true){ | |
|
405 | PRINTF("in SPIQ *** Waiting for SPW_LINKERR_EVENT\n") | |
|
406 | rtems_event_receive(SPW_LINKERR_EVENT, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an SPW_LINKERR_EVENT | |
|
407 | ||
|
408 | lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4; // get the current mode | |
|
409 | ||
|
410 | status = spacewire_wait_for_link(); | |
|
411 | ||
|
412 | if (status != RTEMS_SUCCESSFUL) | |
|
413 | { | |
|
414 | //**************** | |
|
415 | // STOP THE SYSTEM | |
|
416 | spacewire_compute_stats_offsets(); | |
|
417 | stop_current_mode(); | |
|
418 | if (rtems_task_suspend(Task_id[TASKID_RECV])!=RTEMS_SUCCESSFUL) { // suspend RECV task | |
|
419 | PRINTF("in SPIQ *** Error suspending RECV Task\n") | |
|
420 | } | |
|
421 | if (rtems_task_suspend(Task_id[TASKID_HOUS])!=RTEMS_SUCCESSFUL) { // suspend HOUS task | |
|
422 | PRINTF("in SPIQ *** Error suspending HOUS Task\n") | |
|
423 | } | |
|
424 | ||
|
425 | //*************************** | |
|
426 | // RESTART THE SPACEWIRE LINK | |
|
427 | spacewire_configure_link(); | |
|
428 | ||
|
429 | //******************* | |
|
430 | // RESTART THE SYSTEM | |
|
431 | //ioctl(fdSPW, SPACEWIRE_IOCTRL_CLR_STATISTICS); // clear statistics | |
|
432 | status = rtems_task_restart( Task_id[TASKID_HOUS], 1 ); | |
|
433 | if (status != RTEMS_SUCCESSFUL) { | |
|
434 | PRINTF1("in SPIQ *** Error restarting HOUS Task *** code %d\n", status) | |
|
435 | } | |
|
436 | if (rtems_task_restart(Task_id[TASKID_RECV], 1) != RTEMS_SUCCESSFUL) { // restart RECV task | |
|
437 | PRINTF("in SPIQ *** Error restarting RECV Task\n") | |
|
438 | } | |
|
439 | //enter_mode(lfrMode, NULL); // enter the mode that was running before the SpaceWire interruption | |
|
440 | } | |
|
441 | } | |
|
442 | } | |
|
443 | ||
|
439 | 444 | int spacewire_configure_link( void ) |
|
440 | 445 | { |
|
441 | 446 | rtems_status_code status; |
@@ -466,13 +471,13 int spacewire_configure_link( void ) | |||
|
466 | 471 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_RXBLOCK, 1); // sets the blocking mode for reception |
|
467 | 472 | if (status!=RTEMS_SUCCESSFUL) PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_RXBLOCK\n") |
|
468 | 473 | // |
|
469 |
|
|
|
470 |
|
|
|
474 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_EVENT_ID, Task_id[TASKID_SPIQ]); // sets the task ID to which an event is sent when a | |
|
475 | if (status!=RTEMS_SUCCESSFUL) PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_EVENT_ID\n") // link-error interrupt occurs | |
|
471 | 476 | // |
|
472 | 477 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_DISABLE_ERR, 0); // automatic link-disabling due to link-error interrupts |
|
473 | 478 | if (status!=RTEMS_SUCCESSFUL) PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_DISABLE_ERR\n") |
|
474 | 479 | // |
|
475 |
status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ, |
|
|
480 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ, 1); // sets the link-error interrupt bit | |
|
476 | 481 | if (status!=RTEMS_SUCCESSFUL) PRINTF("in SPIQ *** Error SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ\n") |
|
477 | 482 | // |
|
478 | 483 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_TXBLOCK, 0); // transmission blocks |
@@ -1,11 +1,12 | |||
|
1 | 1 | #include <tc_handler.h> |
|
2 | 2 | #include <fsw_params.h> |
|
3 | 3 | |
|
4 |
char *DumbMessages[ |
|
|
4 | char *DumbMessages[6] = {"in DUMB *** default", // RTEMS_EVENT_0 | |
|
5 | 5 | "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1 |
|
6 | 6 | "in DUMB *** waveforms_isr", // RTEMS_EVENT_2 |
|
7 | 7 | "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3 |
|
8 |
"in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ" |
|
|
8 | "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4 | |
|
9 | "in DUMB *** waveforms_simulator_isr" // RTEMS_EVENT_5 | |
|
9 | 10 | }; |
|
10 | 11 | |
|
11 | 12 | unsigned char currentTC_LEN_RCV[2]; // SHALL be equal to the current TC packet estimated packet length field |
@@ -526,10 +527,9 rtems_task dumb_task( rtems_task_argumen | |||
|
526 | 527 | PRINTF("in DUMB *** \n") |
|
527 | 528 | |
|
528 | 529 | while(1){ |
|
529 | rtems_event_receive(RTEMS_EVENT_0 | RTEMS_EVENT_1 | RTEMS_EVENT_2 | RTEMS_EVENT_3 | RTEMS_EVENT_4, | |
|
530 | rtems_event_receive(RTEMS_EVENT_0 | RTEMS_EVENT_1 | RTEMS_EVENT_2 | RTEMS_EVENT_3 | RTEMS_EVENT_4 | RTEMS_EVENT_5, | |
|
530 | 531 | RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT |
|
531 | 532 | intEventOut = (unsigned int) event_out; |
|
532 | PRINTF1("in DUMB *** event_out %x\n", (int) event_out) | |
|
533 | 533 | for ( i=0; i<32; i++) |
|
534 | 534 | { |
|
535 | 535 | if ( ((intEventOut >> i) & 0x0001) != 0) |
@@ -823,7 +823,7 int transition_validation(unsigned char | |||
|
823 | 823 | switch (requestedMode) |
|
824 | 824 | { |
|
825 | 825 | case LFR_MODE_STANDBY: |
|
826 |
if ( |
|
|
826 | if ( lfrMode == LFR_MODE_STANDBY ) { | |
|
827 | 827 | status = LFR_DEFAULT; |
|
828 | 828 | } |
|
829 | 829 | else |
@@ -832,7 +832,7 int transition_validation(unsigned char | |||
|
832 | 832 | } |
|
833 | 833 | break; |
|
834 | 834 | case LFR_MODE_NORMAL: |
|
835 |
if ( |
|
|
835 | if ( lfrMode == LFR_MODE_NORMAL ) { | |
|
836 | 836 | status = LFR_DEFAULT; |
|
837 | 837 | } |
|
838 | 838 | else { |
@@ -840,8 +840,7 int transition_validation(unsigned char | |||
|
840 | 840 | } |
|
841 | 841 | break; |
|
842 | 842 | case LFR_MODE_BURST: |
|
843 |
if ( |
|
|
844 | | (lfrMode == LFR_MODE_SBM2) ) { | |
|
843 | if ( lfrMode == LFR_MODE_STANDBY ) { | |
|
845 | 844 | status = LFR_DEFAULT; |
|
846 | 845 | } |
|
847 | 846 | else { |
@@ -849,7 +848,7 int transition_validation(unsigned char | |||
|
849 | 848 | } |
|
850 | 849 | break; |
|
851 | 850 | case LFR_MODE_SBM1: |
|
852 |
if ( |
|
|
851 | if ( lfrMode == LFR_MODE_SBM1 ) { | |
|
853 | 852 | status = LFR_DEFAULT; |
|
854 | 853 | } |
|
855 | 854 | else { |
@@ -857,8 +856,7 int transition_validation(unsigned char | |||
|
857 | 856 | } |
|
858 | 857 | break; |
|
859 | 858 | case LFR_MODE_SBM2: |
|
860 |
if ( |
|
|
861 | | (lfrMode == LFR_MODE_BURST) | (lfrMode == LFR_MODE_SBM2) ) { | |
|
859 | if ( lfrMode == LFR_MODE_SBM2 ) { | |
|
862 | 860 | status = LFR_DEFAULT; |
|
863 | 861 | } |
|
864 | 862 | else { |
@@ -964,15 +962,16 int enter_normal_mode( ccsdsTelecommandP | |||
|
964 | 962 | } |
|
965 | 963 | |
|
966 | 964 | #ifdef GSA |
|
967 |
|
|
|
965 | LEON_Clear_interrupt( IRQ_WF ); | |
|
966 | LEON_Unmask_interrupt( IRQ_WF ); | |
|
968 | 967 | #else |
|
969 |
|
|
|
970 |
|
|
|
971 |
|
|
|
972 |
|
|
|
973 |
|
|
|
968 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
|
969 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
|
970 | waveform_picker_regs->burst_enable = 0x07; | |
|
971 | waveform_picker_regs->addr_data_f1 = (int) wf_snap_f1; | |
|
972 | waveform_picker_regs->status = 0x00; | |
|
974 | 973 | #endif |
|
975 |
|
|
|
974 | LEON_Unmask_interrupt( IRQ_SM ); | |
|
976 | 975 | |
|
977 | 976 | return status; |
|
978 | 977 | } |
@@ -139,13 +139,15 rtems_isr waveforms_simulator_isr( rtems | |||
|
139 | 139 | //******** |
|
140 | 140 | // STANDBY |
|
141 | 141 | case(LFR_MODE_STANDBY): |
|
142 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 ); | |
|
142 | 143 | break; |
|
143 | 144 | |
|
144 | 145 | //****** |
|
145 | 146 | // NORMAL |
|
146 | 147 | case(LFR_MODE_NORMAL): |
|
148 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 ); | |
|
147 | 149 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { |
|
148 | PRINTF("ERR *** in waveforms_isr *** error sending event to WFRM\n") | |
|
150 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 ); | |
|
149 | 151 | } |
|
150 | 152 | break; |
|
151 | 153 | |
@@ -549,7 +551,9 void send_waveform_norm(Header_TM_LFR_SC | |||
|
549 | 551 | send_waveform_SWF( header, wf_snap_f2, SID_NORM_SWF_F2, spw_ioctl_send); |
|
550 | 552 | #ifdef GSA |
|
551 | 553 | // irq processed, reset the related register of the timer unit |
|
552 |
gptimer_regs->timer[ |
|
|
554 | gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl = gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl | 0x00000010; | |
|
555 | // clear the interruption | |
|
556 | LEON_Clear_interrupt(IRQ_WF); | |
|
553 | 557 | #else |
|
554 | 558 | // irq processed, reset the related register of the waveform picker |
|
555 | 559 | if (lfrMode == LFR_MODE_SBM1) { |
General Comments 0
You need to be logged in to leave comments.
Login now