Target:
Source:
Actions:
Compare was calculated based on this common ancestor commit:
178c91a02f9d
Time | Author | Commit | Description | |||
---|---|---|---|---|---|---|
7 commits hidden, click expand to show them. |
@@ -3,3 +3,7 syntax: glob | |||||
3 | *~ |
|
3 | *~ | |
4 | *.o |
|
4 | *.o | |
5 | tests/*.err |
|
5 | tests/*.err | |
|
6 | doc | |||
|
7 | *.srec | |||
|
8 | FSW-qt/bin/fsw | |||
|
9 |
@@ -7,11 +7,11 CONFIG -= qt | |||||
7 | include(./sparc.pri) |
|
7 | include(./sparc.pri) | |
8 |
|
8 | |||
9 | # flight software version |
|
9 | # flight software version | |
10 |
SWVERSION=-0-2 |
|
10 | SWVERSION=-0-22 | |
11 | DEFINES += SW_VERSION_N1=0 |
|
11 | DEFINES += SW_VERSION_N1=0 | |
12 | DEFINES += SW_VERSION_N2=0 |
|
12 | DEFINES += SW_VERSION_N2=0 | |
13 | DEFINES += SW_VERSION_N3=0 |
|
13 | DEFINES += SW_VERSION_N3=0 | |
14 |
DEFINES += SW_VERSION_N4=2 |
|
14 | DEFINES += SW_VERSION_N4=22 | |
15 |
|
15 | |||
16 | contains( CONFIG, verbose ) { |
|
16 | contains( CONFIG, verbose ) { | |
17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
|
17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
@@ -1,6 +1,6 | |||||
1 | <?xml version="1.0" encoding="UTF-8"?> |
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <!DOCTYPE QtCreatorProject> |
|
2 | <!DOCTYPE QtCreatorProject> | |
3 |
<!-- Written by QtCreator 2.8.1, 2013-11-1 |
|
3 | <!-- Written by QtCreator 2.8.1, 2013-11-13T07:19:43. --> | |
4 | <qtcreator> |
|
4 | <qtcreator> | |
5 | <data> |
|
5 | <data> | |
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
|
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -45,23 +45,7 struct time_management_regs_str{ | |||||
45 | }; |
|
45 | }; | |
46 | typedef struct time_management_regs_str time_management_regs_t; |
|
46 | typedef struct time_management_regs_str time_management_regs_t; | |
47 |
|
47 | |||
48 | struct waveform_picker_regs_str{ |
|
48 | struct new_waveform_picker_regs_str{ | |
49 | volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW |
|
|||
50 | volatile int burst_enable; // 0x04 01 *** burst f2, f1, f0 enable f3, f2, f1, f0 |
|
|||
51 | volatile int addr_data_f0; // 0x08 10 *** |
|
|||
52 | volatile int addr_data_f1; // 0x0c 11 *** |
|
|||
53 | volatile int addr_data_f2; // 0x10 100 *** |
|
|||
54 | volatile int addr_data_f3; // 0x14 101 *** |
|
|||
55 | volatile int status; // 0x18 110 *** |
|
|||
56 | volatile int delta_snapshot; // 0x1c 111 *** |
|
|||
57 | volatile int delta_f2_f1; // 0x20 0000 *** |
|
|||
58 | volatile int delta_f2_f0; // 0x24 0001 *** |
|
|||
59 | volatile int nb_burst_available;// 0x28 0010 *** |
|
|||
60 | volatile int nb_snapshot_param; // 0x2c 0011 *** |
|
|||
61 | }; |
|
|||
62 | typedef struct waveform_picker_regs_str waveform_picker_regs_t; |
|
|||
63 |
|
||||
64 | struct waveform_picker_regs_str_alt{ |
|
|||
65 | volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW |
|
49 | volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW | |
66 | volatile int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] |
|
50 | volatile int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] | |
67 | volatile int addr_data_f0; // 0x08 |
|
51 | volatile int addr_data_f0; // 0x08 | |
@@ -78,7 +62,7 struct waveform_picker_regs_str_alt{ | |||||
78 | volatile int snapshot_param; |
|
62 | volatile int snapshot_param; | |
79 | volatile int start_date; |
|
63 | volatile int start_date; | |
80 | }; |
|
64 | }; | |
81 |
typedef struct waveform_picker_regs_str |
|
65 | typedef struct new_waveform_picker_regs_str new_waveform_picker_regs_t; | |
82 |
|
66 | |||
83 | struct spectral_matrix_regs_str{ |
|
67 | struct spectral_matrix_regs_str{ | |
84 | volatile int config; |
|
68 | volatile int config; |
@@ -13,7 +13,7 | |||||
13 | extern struct param_sbm1_str param_sbm1; |
|
13 | extern struct param_sbm1_str param_sbm1; | |
14 | extern struct param_sbm2_str param_sbm2; |
|
14 | extern struct param_sbm2_str param_sbm2; | |
15 | extern time_management_regs_t *time_management_regs; |
|
15 | extern time_management_regs_t *time_management_regs; | |
16 | extern waveform_picker_regs_t *waveform_picker_regs; |
|
16 | extern new_waveform_picker_regs_t *new_waveform_picker_regs; | |
17 | extern gptimer_regs_t *gptimer_regs; |
|
17 | extern gptimer_regs_t *gptimer_regs; | |
18 | extern rtems_name misc_name[5]; |
|
18 | extern rtems_name misc_name[5]; | |
19 | extern rtems_id Task_id[20]; /* array of task ids */ |
|
19 | extern rtems_id Task_id[20]; /* array of task ids */ |
@@ -7,8 +7,6 | |||||
7 | #include <math.h> |
|
7 | #include <math.h> | |
8 |
|
8 | |||
9 | #include "fsw_params.h" |
|
9 | #include "fsw_params.h" | |
10 | #include "fsw_spacewire.h" |
|
|||
11 | #include "fsw_misc.h" |
|
|||
12 |
|
10 | |||
13 | #define pi 3.1415 |
|
11 | #define pi 3.1415 | |
14 |
|
12 | |||
@@ -26,8 +24,7 extern volatile int wf_snap_f2_norm[ ]; | |||||
26 | extern volatile int wf_cont_f3[ ]; |
|
24 | extern volatile int wf_cont_f3[ ]; | |
27 | extern volatile int wf_cont_f3_bis[ ]; |
|
25 | extern volatile int wf_cont_f3_bis[ ]; | |
28 | extern char wf_cont_f3_light[ ]; |
|
26 | extern char wf_cont_f3_light[ ]; | |
29 | extern waveform_picker_regs_t *waveform_picker_regs; |
|
27 | extern new_waveform_picker_regs_t *new_waveform_picker_regs; | |
30 | extern waveform_picker_regs_t_alt *waveform_picker_regs_alt; |
|
|||
31 | extern time_management_regs_t *time_management_regs; |
|
28 | extern time_management_regs_t *time_management_regs; | |
32 | extern Packet_TM_LFR_HK_t housekeeping_packet; |
|
29 | extern Packet_TM_LFR_HK_t housekeeping_packet; | |
33 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; |
|
30 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; | |
@@ -35,6 +32,7 extern struct param_local_str param_loca | |||||
35 |
|
32 | |||
36 | extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST; |
|
33 | extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST; | |
37 | extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2; |
|
34 | extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2; | |
|
35 | extern unsigned short sequenceCounters_TC_EXE[]; | |||
38 |
|
36 | |||
39 | extern rtems_name misc_name[5]; |
|
37 | extern rtems_name misc_name[5]; | |
40 | extern rtems_name Task_name[20]; /* array of task ids */ |
|
38 | extern rtems_name Task_name[20]; /* array of task ids */ | |
@@ -71,9 +69,9 rtems_id get_pkts_queue_id( void ); | |||||
71 | void set_wfp_data_shaping(); |
|
69 | void set_wfp_data_shaping(); | |
72 | char set_wfp_delta_snapshot(); |
|
70 | char set_wfp_delta_snapshot(); | |
73 | void set_wfp_burst_enable_register( unsigned char mode); |
|
71 | void set_wfp_burst_enable_register( unsigned char mode); | |
74 | void reset_wfp_burst_enable(); |
|
72 | void reset_wfp_run_burst_enable(); | |
75 | void reset_wfp_status(); |
|
73 | void reset_wfp_status(); | |
76 | void reset_waveform_picker_regs(); |
|
74 | void reset_new_waveform_picker_regs(); | |
77 |
|
75 | |||
78 | //***************** |
|
76 | //***************** | |
79 | // local parameters |
|
77 | // local parameters |
@@ -36,8 +36,7 time_management_regs_t *time_management_ | |||||
36 | gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER; |
|
36 | gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER; | |
37 | #ifdef GSA |
|
37 | #ifdef GSA | |
38 | #else |
|
38 | #else | |
39 | waveform_picker_regs_t *waveform_picker_regs = (waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER; |
|
39 | new_waveform_picker_regs_t *new_waveform_picker_regs = (new_waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER; | |
40 | waveform_picker_regs_t_alt *waveform_picker_regs_alt = (waveform_picker_regs_t_alt*) REGS_ADDR_WAVEFORM_PICKER; |
|
|||
41 | #endif |
|
40 | #endif | |
42 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; |
|
41 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; | |
43 |
|
42 |
@@ -70,7 +70,6 rtems_task Init( rtems_task_argument ign | |||||
70 | * |
|
70 | * | |
71 | */ |
|
71 | */ | |
72 |
|
72 | |||
73 |
|
||||
74 | rtems_status_code status; |
|
73 | rtems_status_code status; | |
75 | rtems_status_code status_spw; |
|
74 | rtems_status_code status_spw; | |
76 | rtems_isr_entry old_isr_handler; |
|
75 | rtems_isr_entry old_isr_handler; | |
@@ -84,7 +83,9 rtems_task Init( rtems_task_argument ign | |||||
84 | //send_console_outputs_on_apbuart_port(); |
|
83 | //send_console_outputs_on_apbuart_port(); | |
85 | set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE); |
|
84 | set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE); | |
86 |
|
85 | |||
87 | reset_wfp_burst_enable(); // stop the waveform picker if it was running |
|
86 | // waveform picker registers initialization | |
|
87 | reset_wfp_run_burst_enable(); | |||
|
88 | reset_wfp_status(); | |||
88 |
|
89 | |||
89 | init_parameter_dump(); |
|
90 | init_parameter_dump(); | |
90 | init_local_mode_parameters(); |
|
91 | init_local_mode_parameters(); | |
@@ -193,28 +194,22 rtems_task Init( rtems_task_argument ign | |||||
193 | void init_local_mode_parameters( void ) |
|
194 | void init_local_mode_parameters( void ) | |
194 | { |
|
195 | { | |
195 | /** This function initialize the param_local global variable with default values. |
|
196 | /** This function initialize the param_local global variable with default values. | |
196 |
|
|
197 | * | |
197 |
|
|
198 | */ | |
198 |
|
||||
199 | unsigned int i; |
|
199 | unsigned int i; | |
200 |
|
||||
201 | // LOCAL PARAMETERS |
|
200 | // LOCAL PARAMETERS | |
202 | set_local_sbm1_nb_cwf_max(); |
|
201 | set_local_sbm1_nb_cwf_max(); | |
203 | set_local_sbm2_nb_cwf_max(); |
|
202 | set_local_sbm2_nb_cwf_max(); | |
204 | set_local_nb_interrupt_f0_MAX(); |
|
203 | set_local_nb_interrupt_f0_MAX(); | |
205 |
|
||||
206 | BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max) |
|
204 | BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max) | |
207 | BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max) |
|
205 | BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max) | |
208 | BOOT_PRINTF1("nb_interrupt_f0_MAX = %d\n", param_local.local_nb_interrupt_f0_MAX) |
|
206 | BOOT_PRINTF1("nb_interrupt_f0_MAX = %d\n", param_local.local_nb_interrupt_f0_MAX) | |
209 |
|
||||
210 | reset_local_sbm1_nb_cwf_sent(); |
|
207 | reset_local_sbm1_nb_cwf_sent(); | |
211 | reset_local_sbm2_nb_cwf_sent(); |
|
208 | reset_local_sbm2_nb_cwf_sent(); | |
212 |
|
||||
213 | // init sequence counters |
|
209 | // init sequence counters | |
214 |
|
||||
215 | for(i = 0; i<SEQ_CNT_NB_DEST_ID; i++) |
|
210 | for(i = 0; i<SEQ_CNT_NB_DEST_ID; i++) | |
216 | { |
|
211 | { | |
217 |
|
|
212 | sequenceCounters_TC_EXE[i] = 0x00; | |
218 | } |
|
213 | } | |
219 | sequenceCounters_SCIENCE_NORMAL_BURST = 0x00; |
|
214 | sequenceCounters_SCIENCE_NORMAL_BURST = 0x00; | |
220 | sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00; |
|
215 | sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00; | |
@@ -347,7 +342,7 int create_all_tasks( void ) // create a | |||||
347 | { |
|
342 | { | |
348 | status = rtems_task_create( |
|
343 | status = rtems_task_create( | |
349 | Task_name[TASKID_HOUS], TASK_PRIORITY_HOUS, RTEMS_MINIMUM_STACK_SIZE, |
|
344 | Task_name[TASKID_HOUS], TASK_PRIORITY_HOUS, RTEMS_MINIMUM_STACK_SIZE, | |
350 |
RTEMS_DEFAULT_MODES |
|
345 | RTEMS_DEFAULT_MODES, | |
351 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS] |
|
346 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS] | |
352 | ); |
|
347 | ); | |
353 | } |
|
348 | } | |
@@ -584,3 +579,4 rtems_status_code create_message_queues( | |||||
584 |
|
579 | |||
585 | return ret; |
|
580 | return ret; | |
586 | } |
|
581 | } | |
|
582 |
@@ -388,7 +388,7 int stop_current_mode() | |||||
388 | LEON_Mask_interrupt( IRQ_WAVEFORM_PICKER ); // mask waveform picker interrupt |
|
388 | LEON_Mask_interrupt( IRQ_WAVEFORM_PICKER ); // mask waveform picker interrupt | |
389 | LEON_Mask_interrupt( IRQ_SPECTRAL_MATRIX ); // mask spectral matrix interrupt |
|
389 | LEON_Mask_interrupt( IRQ_SPECTRAL_MATRIX ); // mask spectral matrix interrupt | |
390 | // reset registers |
|
390 | // reset registers | |
391 | reset_wfp_burst_enable(); // reset burst and enable bits |
|
391 | reset_wfp_run_burst_enable(); // reset run, burst and enable bits, [r b2 b1 b0 e3 e2 e1 e0] | |
392 | reset_wfp_status(); // reset all the status bits |
|
392 | reset_wfp_status(); // reset all the status bits | |
393 | // creal interruptions |
|
393 | // creal interruptions | |
394 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); // clear waveform picker interrupt |
|
394 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); // clear waveform picker interrupt | |
@@ -464,6 +464,7 int enter_standby_mode() | |||||
464 | int enter_normal_mode() |
|
464 | int enter_normal_mode() | |
465 | { |
|
465 | { | |
466 | rtems_status_code status; |
|
466 | rtems_status_code status; | |
|
467 | int startDate; | |||
467 |
|
468 | |||
468 | status = restart_science_tasks(); |
|
469 | status = restart_science_tasks(); | |
469 |
|
470 | |||
@@ -479,10 +480,13 int enter_normal_mode() | |||||
479 | #else |
|
480 | #else | |
480 | //**************** |
|
481 | //**************** | |
481 | // waveform picker |
|
482 | // waveform picker | |
482 | reset_waveform_picker_regs(); |
|
483 | reset_new_waveform_picker_regs(); | |
483 | set_wfp_burst_enable_register(LFR_MODE_NORMAL); |
|
484 | set_wfp_burst_enable_register(LFR_MODE_NORMAL); | |
484 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
485 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
485 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
486 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
|
487 | startDate = time_management_regs->coarse_time + 2; | |||
|
488 | new_waveform_picker_regs->start_date = startDate; | |||
|
489 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x80; // [1000 0000] | |||
486 | //**************** |
|
490 | //**************** | |
487 | // spectral matrix |
|
491 | // spectral matrix | |
488 | #endif |
|
492 | #endif | |
@@ -499,7 +503,7 int enter_burst_mode() | |||||
499 | #ifdef GSA |
|
503 | #ifdef GSA | |
500 | LEON_Unmask_interrupt( IRQ_SM ); |
|
504 | LEON_Unmask_interrupt( IRQ_SM ); | |
501 | #else |
|
505 | #else | |
502 | reset_waveform_picker_regs(); |
|
506 | reset_new_waveform_picker_regs(); | |
503 | set_wfp_burst_enable_register(LFR_MODE_BURST); |
|
507 | set_wfp_burst_enable_register(LFR_MODE_BURST); | |
504 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
508 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
505 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
509 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
@@ -521,7 +525,7 int enter_sbm1_mode() | |||||
521 | #ifdef GSA |
|
525 | #ifdef GSA | |
522 | LEON_Unmask_interrupt( IRQ_SM ); |
|
526 | LEON_Unmask_interrupt( IRQ_SM ); | |
523 | #else |
|
527 | #else | |
524 | reset_waveform_picker_regs(); |
|
528 | reset_new_waveform_picker_regs(); | |
525 | set_wfp_burst_enable_register(LFR_MODE_SBM1); |
|
529 | set_wfp_burst_enable_register(LFR_MODE_SBM1); | |
526 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
530 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
527 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
531 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
@@ -547,7 +551,7 int enter_sbm2_mode() | |||||
547 | #ifdef GSA |
|
551 | #ifdef GSA | |
548 | LEON_Unmask_interrupt( IRQ_SM ); |
|
552 | LEON_Unmask_interrupt( IRQ_SM ); | |
549 | #else |
|
553 | #else | |
550 | reset_waveform_picker_regs(); |
|
554 | reset_new_waveform_picker_regs(); | |
551 | set_wfp_burst_enable_register(LFR_MODE_SBM2); |
|
555 | set_wfp_burst_enable_register(LFR_MODE_SBM2); | |
552 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
556 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
553 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
557 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
@@ -25,7 +25,7 int action_load_common_par(ccsdsTelecomm | |||||
25 |
|
25 | |||
26 | parameter_dump_packet.unused0 = TC->dataAndCRC[0]; |
|
26 | parameter_dump_packet.unused0 = TC->dataAndCRC[0]; | |
27 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = TC->dataAndCRC[1]; |
|
27 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = TC->dataAndCRC[1]; | |
28 | set_wfp_data_shaping(parameter_dump_packet.bw_sp0_sp1_r0_r1); |
|
28 | set_wfp_data_shaping( parameter_dump_packet.bw_sp0_sp1_r0_r1 ); | |
29 | return LFR_SUCCESSFUL; |
|
29 | return LFR_SUCCESSFUL; | |
30 | } |
|
30 | } | |
31 |
|
31 |
@@ -33,24 +33,27 rtems_isr waveforms_isr( rtems_vector_nu | |||||
33 | * |
|
33 | * | |
34 | */ |
|
34 | */ | |
35 |
|
35 | |||
|
36 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |||
|
37 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff00f; // clear new_err and full_err | |||
|
38 | ||||
36 | #ifdef GSA |
|
39 | #ifdef GSA | |
37 | #else |
|
40 | #else | |
38 | if ( (lfrCurrentMode == LFR_MODE_NORMAL) |
|
41 | if ( (lfrCurrentMode == LFR_MODE_NORMAL) | |
39 | || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) ) |
|
42 | || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) ) | |
40 | { // in modes other than STANDBY and BURST, send the CWF_F3 data |
|
43 | { // in modes other than STANDBY and BURST, send the CWF_F3 data | |
41 | if ((waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full |
|
44 | if ((new_waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full | |
42 | // (1) change the receiving buffer for the waveform picker |
|
45 | // (1) change the receiving buffer for the waveform picker | |
43 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { |
|
46 | if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { | |
44 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis); |
|
47 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis); | |
45 | } |
|
48 | } | |
46 | else { |
|
49 | else { | |
47 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); |
|
50 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); | |
48 | } |
|
51 | } | |
49 | // (2) send an event for the waveforms transmission |
|
52 | // (2) send an event for the waveforms transmission | |
50 | if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { |
|
53 | if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { | |
51 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
54 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
52 | } |
|
55 | } | |
53 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff777; // reset f3 bits to 0, [1111 0111 0111 0111] |
|
56 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff777; // reset f3 bits to 0, [1111 0111 0111 0111] | |
54 | } |
|
57 | } | |
55 | } |
|
58 | } | |
56 | #endif |
|
59 | #endif | |
@@ -68,18 +71,18 rtems_isr waveforms_isr( rtems_vector_nu | |||||
68 | #ifdef GSA |
|
71 | #ifdef GSA | |
69 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
72 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
70 | #else |
|
73 | #else | |
71 | if ( (waveform_picker_regs->burst_enable & 0x7) == 0x0 ){ // if no channel is enable |
|
74 | if ( (new_waveform_picker_regs->run_burst_enable & 0x7) == 0x0 ){ // if no channel is enable | |
72 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
75 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
73 | } |
|
76 | } | |
74 | else { |
|
77 | else { | |
75 | if ( (waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full |
|
78 | if ( (new_waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full | |
76 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable & 0x08; |
|
79 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable & 0x08; | |
77 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { |
|
80 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { | |
78 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
81 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
79 | } |
|
82 | } | |
80 | // waveform_picker_regs->status = waveform_picker_regs->status & 0x00; |
|
83 | // new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0x00; | |
81 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff888; |
|
84 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff888; | |
82 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x07; // [0111] enable f2 f1 f0 |
|
85 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x07; // [0111] enable f2 f1 f0 | |
83 | } |
|
86 | } | |
84 | } |
|
87 | } | |
85 | #endif |
|
88 | #endif | |
@@ -91,19 +94,19 rtems_isr waveforms_isr( rtems_vector_nu | |||||
91 | #ifdef GSA |
|
94 | #ifdef GSA | |
92 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
95 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
93 | #else |
|
96 | #else | |
94 | if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit |
|
97 | if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit | |
95 | // (1) change the receiving buffer for the waveform picker |
|
98 | // (1) change the receiving buffer for the waveform picker | |
96 | if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
99 | if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
97 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); |
|
100 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); | |
98 | } |
|
101 | } | |
99 | else { |
|
102 | else { | |
100 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
103 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
101 | } |
|
104 | } | |
102 | // (2) send an event for the waveforms transmission |
|
105 | // (2) send an event for the waveforms transmission | |
103 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { |
|
106 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { | |
104 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
107 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
105 | } |
|
108 | } | |
106 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0 |
|
109 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0 | |
107 | } |
|
110 | } | |
108 | #endif |
|
111 | #endif | |
109 | break; |
|
112 | break; | |
@@ -114,34 +117,34 rtems_isr waveforms_isr( rtems_vector_nu | |||||
114 | #ifdef GSA |
|
117 | #ifdef GSA | |
115 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
118 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
116 | #else |
|
119 | #else | |
117 | if ((waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit |
|
120 | if ((new_waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit | |
118 | // (1) change the receiving buffer for the waveform picker |
|
121 | // (1) change the receiving buffer for the waveform picker | |
119 | if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) ) |
|
122 | if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) ) | |
120 | { |
|
123 | { | |
121 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm); |
|
124 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm); | |
122 | } |
|
125 | } | |
123 | else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm ) |
|
126 | else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm ) | |
124 | { |
|
127 | { | |
125 | doubleSendCWF1 = 1; |
|
128 | doubleSendCWF1 = 1; | |
126 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); |
|
129 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); | |
127 | } |
|
130 | } | |
128 | else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) { |
|
131 | else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) { | |
129 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis); |
|
132 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis); | |
130 | } |
|
133 | } | |
131 | else { |
|
134 | else { | |
132 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); |
|
135 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); | |
133 | } |
|
136 | } | |
134 | // (2) send an event for the waveforms transmission |
|
137 | // (2) send an event for the waveforms transmission | |
135 | if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) { |
|
138 | if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) { | |
136 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
139 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
137 | } |
|
140 | } | |
138 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0 |
|
141 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0 | |
139 | } |
|
142 | } | |
140 | if ( ( (waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit |
|
143 | if ( ( (new_waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit | |
141 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { |
|
144 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { | |
142 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
145 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
143 | } |
|
146 | } | |
144 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0 |
|
147 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0 | |
145 | reset_local_sbm1_nb_cwf_sent(); |
|
148 | reset_local_sbm1_nb_cwf_sent(); | |
146 | } |
|
149 | } | |
147 |
|
150 | |||
@@ -154,37 +157,37 rtems_isr waveforms_isr( rtems_vector_nu | |||||
154 | #ifdef GSA |
|
157 | #ifdef GSA | |
155 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
158 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
156 | #else |
|
159 | #else | |
157 | if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit |
|
160 | if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit | |
158 | // (1) change the receiving buffer for the waveform picker |
|
161 | // (1) change the receiving buffer for the waveform picker | |
159 | if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) ) |
|
162 | if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) ) | |
160 | { |
|
163 | { | |
161 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm); |
|
164 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm); | |
162 | } |
|
165 | } | |
163 | else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) { |
|
166 | else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) { | |
164 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
167 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
165 | doubleSendCWF2 = 1; |
|
168 | doubleSendCWF2 = 1; | |
166 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) { |
|
169 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) { | |
167 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
170 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
168 | } |
|
171 | } | |
169 | reset_local_sbm2_nb_cwf_sent(); |
|
172 | reset_local_sbm2_nb_cwf_sent(); | |
170 | } |
|
173 | } | |
171 | else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) { |
|
174 | else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) { | |
172 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); |
|
175 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); | |
173 | } |
|
176 | } | |
174 | else { |
|
177 | else { | |
175 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
178 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
176 | } |
|
179 | } | |
177 | // (2) send an event for the waveforms transmission |
|
180 | // (2) send an event for the waveforms transmission | |
178 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { |
|
181 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { | |
179 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
182 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
180 | } |
|
183 | } | |
181 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0 |
|
184 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0 | |
182 | } |
|
185 | } | |
183 | if ( ( (waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full |
|
186 | if ( ( (new_waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full | |
184 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { |
|
187 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { | |
185 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
188 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
186 | } |
|
189 | } | |
187 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 |
|
190 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 | |
188 | } |
|
191 | } | |
189 | #endif |
|
192 | #endif | |
190 | break; |
|
193 | break; | |
@@ -262,7 +265,7 rtems_task wfrm_task(rtems_task_argument | |||||
262 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
265 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
263 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); |
|
266 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); | |
264 | #ifdef GSA |
|
267 | #ifdef GSA | |
265 | waveform_picker_regs->status = waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0 |
|
268 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0 | |
266 | #endif |
|
269 | #endif | |
267 | } |
|
270 | } | |
268 | else if (event_out == RTEMS_EVENT_MODE_SBM1) |
|
271 | else if (event_out == RTEMS_EVENT_MODE_SBM1) | |
@@ -271,7 +274,7 rtems_task wfrm_task(rtems_task_argument | |||||
271 | send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
274 | send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
272 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); |
|
275 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); | |
273 | #ifdef GSA |
|
276 | #ifdef GSA | |
274 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0 |
|
277 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0 | |
275 | #endif |
|
278 | #endif | |
276 | } |
|
279 | } | |
277 | else if (event_out == RTEMS_EVENT_MODE_SBM2) |
|
280 | else if (event_out == RTEMS_EVENT_MODE_SBM2) | |
@@ -279,7 +282,7 rtems_task wfrm_task(rtems_task_argument | |||||
279 | send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id); |
|
282 | send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id); | |
280 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
283 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
281 | #ifdef GSA |
|
284 | #ifdef GSA | |
282 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 |
|
285 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 | |
283 | #endif |
|
286 | #endif | |
284 | } |
|
287 | } | |
285 | else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM) |
|
288 | else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM) | |
@@ -329,7 +332,7 rtems_task cwf3_task(rtems_task_argument | |||||
329 | PRINTF("send CWF F3 \n") |
|
332 | PRINTF("send CWF F3 \n") | |
330 | #ifdef GSA |
|
333 | #ifdef GSA | |
331 | #else |
|
334 | #else | |
332 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { |
|
335 | if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { | |
333 | send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id ); |
|
336 | send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id ); | |
334 | } |
|
337 | } | |
335 | else { |
|
338 | else { | |
@@ -371,7 +374,7 rtems_task cwf2_task(rtems_task_argument | |||||
371 | // F2 |
|
374 | // F2 | |
372 | #ifdef GSA |
|
375 | #ifdef GSA | |
373 | #else |
|
376 | #else | |
374 | if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
377 | if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
375 | send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id ); |
|
378 | send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id ); | |
376 | } |
|
379 | } | |
377 | else { |
|
380 | else { | |
@@ -389,7 +392,7 rtems_task cwf2_task(rtems_task_argument | |||||
389 | doubleSendCWF2 = 0; |
|
392 | doubleSendCWF2 = 0; | |
390 | send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); |
|
393 | send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); | |
391 | } |
|
394 | } | |
392 | else if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
395 | else if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
393 | send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); |
|
396 | send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); | |
394 | } |
|
397 | } | |
395 | else { |
|
398 | else { | |
@@ -438,7 +441,7 rtems_task cwf1_task(rtems_task_argument | |||||
438 | doubleSendCWF1 = 0; |
|
441 | doubleSendCWF1 = 0; | |
439 | send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); |
|
442 | send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); | |
440 | } |
|
443 | } | |
441 | else if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) { |
|
444 | else if (new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) { | |
442 | send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); |
|
445 | send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); | |
443 | } |
|
446 | } | |
444 | else { |
|
447 | else { | |
@@ -533,14 +536,14 int init_header_snapshot_wf_table( unsig | |||||
533 | headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype |
|
536 | headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype | |
534 | headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND; |
|
537 | headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND; | |
535 | // AUXILIARY DATA HEADER |
|
538 | // AUXILIARY DATA HEADER | |
|
539 | headerSWF[ i ].sid = sid; | |||
|
540 | headerSWF[ i ].hkBIA = DEFAULT_HKBIA; | |||
536 | headerSWF[ i ].time[0] = 0x00; |
|
541 | headerSWF[ i ].time[0] = 0x00; | |
537 | headerSWF[ i ].time[0] = 0x00; |
|
542 | headerSWF[ i ].time[0] = 0x00; | |
538 | headerSWF[ i ].time[0] = 0x00; |
|
543 | headerSWF[ i ].time[0] = 0x00; | |
539 | headerSWF[ i ].time[0] = 0x00; |
|
544 | headerSWF[ i ].time[0] = 0x00; | |
540 | headerSWF[ i ].time[0] = 0x00; |
|
545 | headerSWF[ i ].time[0] = 0x00; | |
541 | headerSWF[ i ].time[0] = 0x00; |
|
546 | headerSWF[ i ].time[0] = 0x00; | |
542 | headerSWF[ i ].sid = sid; |
|
|||
543 | headerSWF[ i ].hkBIA = DEFAULT_HKBIA; |
|
|||
544 | } |
|
547 | } | |
545 | return LFR_SUCCESSFUL; |
|
548 | return LFR_SUCCESSFUL; | |
546 | } |
|
549 | } | |
@@ -941,7 +944,7 void set_wfp_data_shaping() | |||||
941 |
|
944 | |||
942 | #ifdef GSA |
|
945 | #ifdef GSA | |
943 | #else |
|
946 | #else | |
944 | waveform_picker_regs->data_shaping = |
|
947 | new_waveform_picker_regs->data_shaping = | |
945 | ( (data_shaping & 0x10) >> 4 ) // BW |
|
948 | ( (data_shaping & 0x10) >> 4 ) // BW | |
946 | + ( (data_shaping & 0x08) >> 2 ) // SP0 |
|
949 | + ( (data_shaping & 0x08) >> 2 ) // SP0 | |
947 | + ( (data_shaping & 0x04) ) // SP1 |
|
950 | + ( (data_shaping & 0x04) ) // SP1 | |
@@ -982,7 +985,7 char set_wfp_delta_snapshot() | |||||
982 | aux = delta_snapshot ; |
|
985 | aux = delta_snapshot ; | |
983 | ret = LFR_SUCCESSFUL; |
|
986 | ret = LFR_SUCCESSFUL; | |
984 | } |
|
987 | } | |
985 | waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes |
|
988 | new_waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes | |
986 | #endif |
|
989 | #endif | |
987 |
|
990 | |||
988 | return ret; |
|
991 | return ret; | |
@@ -1004,29 +1007,30 void set_wfp_burst_enable_register( unsi | |||||
1004 | // the burst bits shall be set first, before the enable bits |
|
1007 | // the burst bits shall be set first, before the enable bits | |
1005 | switch(mode) { |
|
1008 | switch(mode) { | |
1006 | case(LFR_MODE_NORMAL): |
|
1009 | case(LFR_MODE_NORMAL): | |
1007 | waveform_picker_regs->burst_enable = 0x00; // [0000 0000] no burst enable |
|
1010 | new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enable | |
1008 | waveform_picker_regs->burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0 |
|
1011 | // new_waveform_picker_regs->run_burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0 | |
|
1012 | new_waveform_picker_regs->run_burst_enable = 0x07; // [0000 0111] enable f2 f1 f0 | |||
1009 | break; |
|
1013 | break; | |
1010 | case(LFR_MODE_BURST): |
|
1014 | case(LFR_MODE_BURST): | |
1011 | waveform_picker_regs->burst_enable = 0x40; // [0100 0000] f2 burst enabled |
|
1015 | new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled | |
1012 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x04; // [0100] enable f2 |
|
1016 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x04; // [0100] enable f2 | |
1013 | break; |
|
1017 | break; | |
1014 | case(LFR_MODE_SBM1): |
|
1018 | case(LFR_MODE_SBM1): | |
1015 | waveform_picker_regs->burst_enable = 0x20; // [0010 0000] f1 burst enabled |
|
1019 | new_waveform_picker_regs->run_burst_enable = 0x20; // [0010 0000] f1 burst enabled | |
1016 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 |
|
1020 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 | |
1017 | break; |
|
1021 | break; | |
1018 | case(LFR_MODE_SBM2): |
|
1022 | case(LFR_MODE_SBM2): | |
1019 | waveform_picker_regs->burst_enable = 0x40; // [0100 0000] f2 burst enabled |
|
1023 | new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled | |
1020 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 |
|
1024 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 | |
1021 | break; |
|
1025 | break; | |
1022 | default: |
|
1026 | default: | |
1023 | waveform_picker_regs->burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled |
|
1027 | new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled | |
1024 | break; |
|
1028 | break; | |
1025 | } |
|
1029 | } | |
1026 | #endif |
|
1030 | #endif | |
1027 | } |
|
1031 | } | |
1028 |
|
1032 | |||
1029 | void reset_wfp_burst_enable() |
|
1033 | void reset_wfp_run_burst_enable() | |
1030 | { |
|
1034 | { | |
1031 | /** This function resets the waveform picker burst_enable register. |
|
1035 | /** This function resets the waveform picker burst_enable register. | |
1032 | * |
|
1036 | * | |
@@ -1036,7 +1040,7 void reset_wfp_burst_enable() | |||||
1036 |
|
1040 | |||
1037 | #ifdef GSA |
|
1041 | #ifdef GSA | |
1038 | #else |
|
1042 | #else | |
1039 | waveform_picker_regs->burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 |
|
1043 | new_waveform_picker_regs->run_burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 | |
1040 | #endif |
|
1044 | #endif | |
1041 | } |
|
1045 | } | |
1042 |
|
1046 | |||
@@ -1050,47 +1054,50 void reset_wfp_status() | |||||
1050 |
|
1054 | |||
1051 | #ifdef GSA |
|
1055 | #ifdef GSA | |
1052 | #else |
|
1056 | #else | |
1053 | waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 |
|
1057 | new_waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 | |
1054 | #endif |
|
1058 | #endif | |
1055 | } |
|
1059 | } | |
1056 |
|
1060 | |||
1057 | void reset_waveform_picker_regs() |
|
1061 | void reset_new_waveform_picker_regs() | |
1058 | { |
|
1062 | { | |
1059 | /** This function resets the waveform picker module registers. |
|
1063 | /** This function resets the waveform picker module registers. | |
1060 |
|
|
1064 | * | |
1061 |
|
|
1065 | * The registers affected by this function are located at the following offset addresses: | |
1062 |
|
|
1066 | * - 0x00 data_shaping | |
1063 |
|
|
1067 | * - 0x04 run_burst_enable | |
1064 |
|
|
1068 | * - 0x08 addr_data_f0 | |
1065 |
|
|
1069 | * - 0x0C addr_data_f1 | |
1066 |
|
|
1070 | * - 0x10 addr_data_f2 | |
1067 |
|
|
1071 | * - 0x14 addr_data_f3 | |
1068 |
|
|
1072 | * - 0x18 status | |
1069 |
|
|
1073 | * - 0x1C delta_snapshot | |
1070 |
|
|
1074 | * - 0x20 delta_f0 | |
1071 |
|
|
1075 | * - 0x24 delta_f0_2 | |
1072 |
|
|
1076 | * - 0x28 delta_f1 | |
1073 | * - 0x2C nb_snapshot |
|
1077 | * - 0x2c delta_f2 | |
1074 | * |
|
1078 | * - 0x30 nb_data_by_buffer | |
1075 | */ |
|
1079 | * - 0x34 nb_snapshot_param | |
|
1080 | * - 0x38 start_date | |||
|
1081 | * | |||
|
1082 | */ | |||
1076 |
|
1083 | |||
1077 | #ifdef GSA |
|
1084 | new_waveform_picker_regs->data_shaping = 0x01; // 0x00 *** R1 R0 SP1 SP0 BW | |
1078 | #else |
|
1085 | new_waveform_picker_regs->run_burst_enable = 0x00; // 0x04 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] | |
1079 | reset_wfp_burst_enable(); |
|
1086 | new_waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); // 0x08 | |
1080 | reset_wfp_status(); |
|
1087 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // 0x0c | |
1081 | // set buffer addresses |
|
1088 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // 0x10 | |
1082 |
waveform_picker_regs->addr_data_f |
|
1089 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // 0x14 | |
1083 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // |
|
1090 | new_waveform_picker_regs->status = 0x00; // 0x18 | |
1084 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // |
|
1091 | // new_waveform_picker_regs->delta_snapshot = 0x12800; // 0x1c 296 * 256 = 75776 | |
1085 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // |
|
1092 | new_waveform_picker_regs->delta_snapshot = 0x1000; // 0x1c 16 * 256 = 4096 | |
1086 | // set other parameters |
|
1093 | new_waveform_picker_regs->delta_f0 = 0x3f5; // 0x20 *** 1013 | |
1087 | set_wfp_data_shaping(); |
|
1094 | new_waveform_picker_regs->delta_f0_2 = 0x7; // 0x24 *** 7 | |
1088 | set_wfp_delta_snapshot(); // time in seconds between two snapshots |
|
1095 | new_waveform_picker_regs->delta_f1 = 0x3c0; // 0x28 *** 960 | |
1089 |
waveform_picker_regs->delta_f2 |
|
1096 | // new_waveform_picker_regs->delta_f2 = 0x12200; // 0x2c *** 74240 | |
1090 |
waveform_picker_regs->delta_f2 |
|
1097 | new_waveform_picker_regs->delta_f2 = 0xc00; // 0x2c *** 12 * 256 = 2048 | |
1091 | waveform_picker_regs->nb_burst_available = 0x180; // max 3 bytes, size of the buffer in burst (1 burst = 16 x 4 octets) |
|
1098 | new_waveform_picker_regs->nb_data_by_buffer = 0x1802; // 0x30 *** 2048 * 3 + 2 | |
1092 |
waveform_picker_regs-> |
|
1099 | new_waveform_picker_regs->snapshot_param = 0x7ff; // 0x34 *** 2048 -1 | |
1093 | #endif |
|
1100 | new_waveform_picker_regs->start_date = 0x00; // 0x38 | |
1094 | } |
|
1101 | } | |
1095 |
|
1102 | |||
1096 | //***************** |
|
1103 | //***************** | |
@@ -1183,8 +1190,8 void increment_seq_counter_source_id( un | |||||
1183 | unsigned short segmentation_grouping_flag; |
|
1190 | unsigned short segmentation_grouping_flag; | |
1184 | unsigned short new_packet_sequence_control; |
|
1191 | unsigned short new_packet_sequence_control; | |
1185 |
|
1192 | |||
1186 |
if ( (sid ==SID_NORM_SWF_F0) |
|
1193 | if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2) | |
1187 |
|
|
1194 | || (sid ==SID_NORM_CWF_F3) || (sid ==SID_BURST_CWF_F2) ) | |
1188 | { |
|
1195 | { | |
1189 | sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST; |
|
1196 | sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST; | |
1190 | } |
|
1197 | } | |
@@ -1198,15 +1205,15 void increment_seq_counter_source_id( un | |||||
1198 | PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid) |
|
1205 | PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid) | |
1199 | } |
|
1206 | } | |
1200 |
|
1207 | |||
1201 |
segmentation_grouping_flag |
|
1208 | segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8; | |
1202 |
*sequence_cnt |
|
1209 | *sequence_cnt = (*sequence_cnt) & 0x3fff; | |
1203 |
|
1210 | |||
1204 | new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; |
|
1211 | new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; | |
1205 |
|
1212 | |||
1206 | packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); |
|
1213 | packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); | |
1207 |
packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control |
|
1214 | packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); | |
1208 |
|
1215 | |||
1209 |
// increment the se |
|
1216 | // increment the sequence counter for the next packet | |
1210 | if ( *sequence_cnt < SEQ_CNT_MAX) |
|
1217 | if ( *sequence_cnt < SEQ_CNT_MAX) | |
1211 | { |
|
1218 | { | |
1212 | *sequence_cnt = *sequence_cnt + 1; |
|
1219 | *sequence_cnt = *sequence_cnt + 1; | |
@@ -1215,5 +1222,4 void increment_seq_counter_source_id( un | |||||
1215 | { |
|
1222 | { | |
1216 | *sequence_cnt = 0; |
|
1223 | *sequence_cnt = 0; | |
1217 | } |
|
1224 | } | |
1218 |
|
||||
1219 | } |
|
1225 | } |