@@ -1,46 +1,46 | |||||
1 | <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> |
|
1 | <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |
2 | <CodeBlocks_layout_file> |
|
2 | <CodeBlocks_layout_file> | |
3 | <ActiveTarget name="Debug" /> |
|
3 | <ActiveTarget name="Debug" /> | |
4 |
<File name="../header/ccsds_types.h" open=" |
|
4 | <File name="../header/ccsds_types.h" open="0" top="0" tabpos="3"> | |
5 |
<Cursor position=" |
|
5 | <Cursor position="417" topLine="3" /> | |
6 | </File> |
|
6 | </File> | |
7 |
<File name="../header/fsw_init.h" open="0" top="0" tabpos=" |
|
7 | <File name="../header/fsw_init.h" open="0" top="0" tabpos="6"> | |
8 |
<Cursor position="1 |
|
8 | <Cursor position="1629" topLine="27" /> | |
9 | </File> |
|
9 | </File> | |
10 | <File name="../header/fsw_misc.h" open="0" top="0" tabpos="0"> |
|
10 | <File name="../header/fsw_misc.h" open="0" top="0" tabpos="0"> | |
11 | <Cursor position="114" topLine="0" /> |
|
11 | <Cursor position="114" topLine="0" /> | |
12 | </File> |
|
12 | </File> | |
13 | <File name="../header/fsw_params.h" open="0" top="0" tabpos="2"> |
|
13 | <File name="../header/fsw_params.h" open="0" top="0" tabpos="2"> | |
14 |
<Cursor position="1 |
|
14 | <Cursor position="481" topLine="0" /> | |
15 | </File> |
|
15 | </File> | |
16 | <File name="../header/fsw_processing.h" open="0" top="0" tabpos="0"> |
|
16 | <File name="../header/fsw_processing.h" open="0" top="0" tabpos="0"> | |
17 | <Cursor position="628" topLine="7" /> |
|
17 | <Cursor position="628" topLine="7" /> | |
18 | </File> |
|
18 | </File> | |
19 | <File name="../header/grlib_regs.h" open="0" top="0" tabpos="4"> |
|
19 | <File name="../header/grlib_regs.h" open="0" top="0" tabpos="4"> | |
20 |
<Cursor position="1153" topLine="1 |
|
20 | <Cursor position="1153" topLine="16" /> | |
21 | </File> |
|
21 | </File> | |
22 | <File name="../header/tc_handler.h" open="0" top="0" tabpos="4"> |
|
22 | <File name="../header/tc_handler.h" open="0" top="0" tabpos="4"> | |
23 |
<Cursor position=" |
|
23 | <Cursor position="1380" topLine="35" /> | |
24 | </File> |
|
24 | </File> | |
25 | <File name="../header/wf_handler.h" open="0" top="0" tabpos="0"> |
|
25 | <File name="../header/wf_handler.h" open="0" top="0" tabpos="0"> | |
26 |
<Cursor position="31 |
|
26 | <Cursor position="341" topLine="0" /> | |
27 | </File> |
|
27 | </File> | |
28 |
<File name="../src/fsw_globals.c" open="0" top="0" tabpos=" |
|
28 | <File name="../src/fsw_globals.c" open="0" top="0" tabpos="5"> | |
29 |
<Cursor position=" |
|
29 | <Cursor position="99" topLine="0" /> | |
30 | </File> |
|
30 | </File> | |
31 | <File name="../src/fsw_init.c" open="1" top="0" tabpos="1"> |
|
31 | <File name="../src/fsw_init.c" open="1" top="0" tabpos="1"> | |
32 |
<Cursor position="1 |
|
32 | <Cursor position="12524" topLine="55" /> | |
33 | </File> |
|
33 | </File> | |
34 | <File name="../src/fsw_misc.c" open="0" top="0" tabpos="2"> |
|
34 | <File name="../src/fsw_misc.c" open="0" top="0" tabpos="2"> | |
35 |
<Cursor position=" |
|
35 | <Cursor position="2621" topLine="0" /> | |
36 | </File> |
|
36 | </File> | |
37 | <File name="../src/fsw_processing.c" open="0" top="0" tabpos="0"> |
|
37 | <File name="../src/fsw_processing.c" open="0" top="0" tabpos="0"> | |
38 |
<Cursor position="1 |
|
38 | <Cursor position="1792" topLine="43" /> | |
39 | </File> |
|
39 | </File> | |
40 |
<File name="../src/tc_handler.c" open="1" top="1" tabpos=" |
|
40 | <File name="../src/tc_handler.c" open="1" top="1" tabpos="2"> | |
41 |
<Cursor position="1 |
|
41 | <Cursor position="13883" topLine="80" /> | |
42 | </File> |
|
42 | </File> | |
43 | <File name="../src/wf_handler.c" open="0" top="0" tabpos="4"> |
|
43 | <File name="../src/wf_handler.c" open="0" top="0" tabpos="4"> | |
44 |
<Cursor position=" |
|
44 | <Cursor position="4576" topLine="83" /> | |
45 | </File> |
|
45 | </File> | |
46 | </CodeBlocks_layout_file> |
|
46 | </CodeBlocks_layout_file> |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -23,6 +23,9 extern rtems_name Task_name[ ]; /* a | |||||
23 | extern rtems_name misc_name[ ]; /* arry of miscellaneous names for rtems objects */ |
|
23 | extern rtems_name misc_name[ ]; /* arry of miscellaneous names for rtems objects */ | |
24 | extern int fdSPW; // grspw file descriptor |
|
24 | extern int fdSPW; // grspw file descriptor | |
25 | extern int fdUART; // uart file descriptor |
|
25 | extern int fdUART; // uart file descriptor | |
|
26 | ||||
|
27 | void timecode_irq_handler(void *pDev, void *regs, int minor, unsigned int tc); | |||
|
28 | ||||
26 | // MODE PARAMETERS |
|
29 | // MODE PARAMETERS | |
27 | extern struct param_norm_str param_norm; |
|
30 | extern struct param_norm_str param_norm; | |
28 | extern struct param_burst_str param_burst; |
|
31 | extern struct param_burst_str param_burst; | |
@@ -42,11 +45,15 int create_message_queue(); | |||||
42 |
|
45 | |||
43 | // OTHER functions |
|
46 | // OTHER functions | |
44 | void init_default_mode_parameters(); |
|
47 | void init_default_mode_parameters(); | |
|
48 | ||||
45 | int configure_spw_link(); |
|
49 | int configure_spw_link(); | |
46 | int send_console_outputs_on_serial_port(); |
|
50 | void configure_spacewire_set_NP(unsigned char val, unsigned int regAddr); // No Port force | |
|
51 | void configure_spacewire_set_RE(unsigned char val, unsigned int regAddr); // RMAP Enable | |||
|
52 | ||||
47 | extern int rtems_cpu_usage_report(); |
|
53 | extern int rtems_cpu_usage_report(); | |
48 | extern int rtems_cpu_usage_reset(); |
|
54 | extern int rtems_cpu_usage_reset(); | |
49 | void print_statistics(spw_stats *); |
|
55 | void print_statistics(spw_stats *); | |
50 | rtems_status_code write_spw(spw_ioctl_pkt_send* spw_ioctl_send); |
|
56 | rtems_status_code write_spw(spw_ioctl_pkt_send* spw_ioctl_send); | |
|
57 | void (*grspw_timecode_callback) (void *pDev, void *regs, int minor, unsigned int tc); | |||
51 |
|
58 | |||
52 | #endif // FSW_RTEMS_CONFIG_H_INCLUDED |
|
59 | #endif // FSW_RTEMS_CONFIG_H_INCLUDED |
@@ -57,6 +57,7 int create_message_queue(); | |||||
57 | //*********** |
|
57 | //*********** | |
58 | // TC ACTIONS |
|
58 | // TC ACTIONS | |
59 | int action_default(ccsdsTelecommandPacket_t *TC); |
|
59 | int action_default(ccsdsTelecommandPacket_t *TC); | |
|
60 | int action_default_alt(ccsdsTelecommandPacket_t *TC); | |||
60 | int send_tm_lfr_tc_exe_success(ccsdsTelecommandPacket_t *TC); |
|
61 | int send_tm_lfr_tc_exe_success(ccsdsTelecommandPacket_t *TC); | |
61 | // |
|
62 | // | |
62 | int action_load_norm(ccsdsTelecommandPacket_t *TC); |
|
63 | int action_load_norm(ccsdsTelecommandPacket_t *TC); |
@@ -51,3 +51,5 struct drvmgr_bus_res grlib_drv_resource | |||||
51 | RES_EMPTY /* Mark end of device resource array */ |
|
51 | RES_EMPTY /* Mark end of device resource array */ | |
52 | } |
|
52 | } | |
53 | }; |
|
53 | }; | |
|
54 | ||||
|
55 |
@@ -42,3 +42,4 unsigned char param_common[2]; | |||||
42 | unsigned char LFR_BP1_F0[ NB_BINS_COMPRESSED_MATRIX_f0 * 9 ]; |
|
42 | unsigned char LFR_BP1_F0[ NB_BINS_COMPRESSED_MATRIX_f0 * 9 ]; | |
43 |
|
43 | |||
44 | BP1_t data_BP1[ NB_BINS_COMPRESSED_MATRIX_f0 ]; |
|
44 | BP1_t data_BP1[ NB_BINS_COMPRESSED_MATRIX_f0 ]; | |
|
45 |
@@ -67,6 +67,8 rtems_task Init( rtems_task_argument ign | |||||
67 | create_all_tasks(); |
|
67 | create_all_tasks(); | |
68 | start_all_tasks(); |
|
68 | start_all_tasks(); | |
69 |
|
69 | |||
|
70 | grspw_timecode_callback = &timecode_irq_handler; | |||
|
71 | ||||
70 | configure_spw_link(); |
|
72 | configure_spw_link(); | |
71 | configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR, CLKDIV_SM_SIMULATOR, |
|
73 | configure_timer((gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR, CLKDIV_SM_SIMULATOR, | |
72 | IRQ_SPARC_SM, spectral_matrices_isr ); |
|
74 | IRQ_SPARC_SM, spectral_matrices_isr ); | |
@@ -258,9 +260,12 int configure_spw_link() | |||||
258 | PRINTF("In configure_spw_link *** "GRSPW_DEVICE_NAME" opened and started successfully\n") |
|
260 | PRINTF("In configure_spw_link *** "GRSPW_DEVICE_NAME" opened and started successfully\n") | |
259 |
|
261 | |||
260 | // sets a few parameters of the link |
|
262 | // sets a few parameters of the link | |
261 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_RMAPEN, 1); // sets the RMAP enable bit |
|
263 | //status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_RMAPEN, 1); // sets the RMAP enable bit | |
262 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_RMAPEN\n") |
|
264 | //if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_RMAPEN\n") | |
263 | // |
|
265 | ||
|
266 | configure_spacewire_set_NP(1, REGS_ADDR_GRSPW); // No Port force | |||
|
267 | configure_spacewire_set_RE(1, REGS_ADDR_GRSPW); // the dedicated call seems to break the no port force configuration | |||
|
268 | ||||
264 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_RXBLOCK, 1); // sets the blocking mode for reception |
|
269 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_RXBLOCK, 1); // sets the blocking mode for reception | |
265 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_RXBLOCK\n") |
|
270 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_RXBLOCK\n") | |
266 | // |
|
271 | // | |
@@ -272,23 +277,54 int configure_spw_link() | |||||
272 | // |
|
277 | // | |
273 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ, 1); // sets the link-error interrupt bit |
|
278 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ, 1); // sets the link-error interrupt bit | |
274 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ\n") |
|
279 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_LINK_ERR_IRQ\n") | |
275 |
|
280 | // | ||
276 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL, 1); // sets the link-error interrupt bit |
|
281 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL, 1); // sets the link-error interrupt bit | |
277 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL\n") |
|
282 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_TXBLOCK_ON_FULL\n") | |
278 |
|
283 | // | ||
279 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_DESTKEY, CCSDS_DESTINATION_ID); // sets the destination key |
|
284 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_DESTKEY, CCSDS_DESTINATION_ID); // sets the destination key | |
280 | PRINTF1("destination address set to: %d\n", CCSDS_DESTINATION_ID) |
|
285 | PRINTF1("destination address set to: %d\n", CCSDS_DESTINATION_ID) | |
281 |
if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_ |
|
286 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_DESTKEY\n") | |
282 |
|
287 | // | ||
283 |
status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_NODEADDR, CCSDS_NODE_ADDRESS); // sets the |
|
288 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_NODEADDR, CCSDS_NODE_ADDRESS); // sets the node address | |
284 | PRINTF1("node address set to: %d\n", CCSDS_NODE_ADDRESS) |
|
289 | PRINTF1("node address set to: %d\n", CCSDS_NODE_ADDRESS) | |
285 |
if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_ |
|
290 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_NODEADDR\n") | |
|
291 | // | |||
|
292 | status = ioctl(fdSPW, SPACEWIRE_IOCTRL_SET_TCODE_CTRL, 0x0909); | |||
|
293 | if (status!=RTEMS_SUCCESSFUL) PRINTF("In RECV *** Error SPACEWIRE_IOCTRL_SET_TCODE_CTRL,\n") | |||
286 |
|
294 | |||
287 | PRINTF("In configure_spw_link *** "GRSPW_DEVICE_NAME" configured successfully\n") |
|
295 | PRINTF("In configure_spw_link *** "GRSPW_DEVICE_NAME" configured successfully\n") | |
288 |
|
296 | |||
289 | return RTEMS_SUCCESSFUL; |
|
297 | return RTEMS_SUCCESSFUL; | |
290 | } |
|
298 | } | |
291 |
|
299 | |||
|
300 | void configure_spacewire_set_NP(unsigned char val, unsigned int regAddr) // No Port force | |||
|
301 | { | |||
|
302 | unsigned int *spwptr; | |||
|
303 | spwptr = (unsigned int*) regAddr; | |||
|
304 | if (val == 1) | |||
|
305 | { | |||
|
306 | *spwptr = *spwptr | 0x00100000; // [NP] set the No port force bit | |||
|
307 | } | |||
|
308 | if (val== 0) | |||
|
309 | { | |||
|
310 | *spwptr = *spwptr & 0xffdfffff; | |||
|
311 | } | |||
|
312 | } | |||
|
313 | ||||
|
314 | void configure_spacewire_set_RE(unsigned char val, unsigned int regAddr) // RMAP Enable | |||
|
315 | { | |||
|
316 | unsigned int *spwptr; | |||
|
317 | spwptr = (unsigned int*) regAddr; | |||
|
318 | if (val == 1) | |||
|
319 | { | |||
|
320 | *spwptr = *spwptr | 0x00010000; // [NP] set the No port force bit | |||
|
321 | } | |||
|
322 | if (val== 0) | |||
|
323 | { | |||
|
324 | *spwptr = *spwptr & 0xfffdffff; | |||
|
325 | } | |||
|
326 | } | |||
|
327 | ||||
292 | char *link_status(int status){ |
|
328 | char *link_status(int status){ | |
293 | return lstates[status]; |
|
329 | return lstates[status]; | |
294 | } |
|
330 | } | |
@@ -301,4 +337,9 rtems_status_code write_spw(spw_ioctl_pk | |||||
301 | return status; |
|
337 | return status; | |
302 | } |
|
338 | } | |
303 |
|
339 | |||
|
340 | void timecode_irq_handler(void *pDev, void *regs, int minor, unsigned int tc) | |||
|
341 | { | |||
|
342 | if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) | |||
|
343 | printf("In timecode_irq_handler *** Error sending event to DUMB\n"); | |||
|
344 | } | |||
304 |
|
345 |
@@ -393,20 +393,31 int create_message_queue() | |||||
393 |
|
393 | |||
394 | //*********** |
|
394 | //*********** | |
395 | // TC ACTIONS |
|
395 | // TC ACTIONS | |
|
396 | ||||
396 | int action_default(ccsdsTelecommandPacket_t *TC) |
|
397 | int action_default(ccsdsTelecommandPacket_t *TC) | |
397 | { |
|
398 | { | |
398 | char data[100]; // buffer for the generic TM packet |
|
399 | TMHeader_t TM_header; | |
399 | TMHeader_t TM_header; // TM header |
|
400 | char data[8]; | |
400 |
spw_ioctl_pkt_send spw_ioctl_send; |
|
401 | spw_ioctl_pkt_send spw_ioctl_send; | |
401 | // BUILD HEADER |
|
402 | ||
402 |
TM_build_header( TM_LFR_TC_EXE_ERR, TM_LEN_NOT_IMP, |
|
403 | TM_build_header( TM_LFR_TC_EXE_ERR, TM_LEN_NOT_IMP, | |
403 | // BUILD DATA |
|
404 | time_management_regs->coarse_time, time_management_regs->fine_time, &TM_header); | |
404 | TM_build_data( TC, data, SID_NOT_IMP, NULL); |
|
405 | ||
405 | // filling the strture for the spcawire transmission |
|
406 | data[0] = 0x9c; | |
|
407 | data[1] = 0x42; | |||
|
408 | data[2] = TC->packetID[0]; | |||
|
409 | data[3] = TC->packetID[1]; | |||
|
410 | data[4] = TC->packetSequenceControl[0]; | |||
|
411 | data[5] = TC->packetSequenceControl[1]; | |||
|
412 | data[6] = TC->dataFieldHeader[1]; // type | |||
|
413 | data[7] = TC->dataFieldHeader[2]; // subtype | |||
|
414 | ||||
|
415 | // filling the structure for the spacewire transmission | |||
406 | spw_ioctl_send.hlen = TM_HEADER_LEN + 4; // + 4 is for the protocole extra header |
|
416 | spw_ioctl_send.hlen = TM_HEADER_LEN + 4; // + 4 is for the protocole extra header | |
407 | spw_ioctl_send.hdr = (char*) &TM_header; |
|
417 | spw_ioctl_send.hdr = (char*) &TM_header; | |
408 | spw_ioctl_send.dlen = 8; |
|
418 | spw_ioctl_send.dlen = 8; | |
409 | spw_ioctl_send.data = data; |
|
419 | spw_ioctl_send.data = data; | |
|
420 | ||||
410 | // SEND DATA |
|
421 | // SEND DATA | |
411 | write_spw(&spw_ioctl_send); |
|
422 | write_spw(&spw_ioctl_send); | |
412 |
|
423 | |||
@@ -491,13 +502,13 int send_tm_lfr_tc_exe_success(ccsdsTele | |||||
491 | rtems_isr commutation_isr1( rtems_vector_number vector ) |
|
502 | rtems_isr commutation_isr1( rtems_vector_number vector ) | |
492 | { |
|
503 | { | |
493 | if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) |
|
504 | if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) | |
494 |
printf("In |
|
505 | printf("In commutation_isr1 *** Error sending event to DUMB\n"); | |
495 | } |
|
506 | } | |
496 |
|
507 | |||
497 | rtems_isr commutation_isr2( rtems_vector_number vector ) |
|
508 | rtems_isr commutation_isr2( rtems_vector_number vector ) | |
498 | { |
|
509 | { | |
499 | if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) |
|
510 | if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) | |
500 |
printf("In |
|
511 | printf("In commutation_isr2 *** Error sending event to DUMB\n"); | |
501 | } |
|
512 | } | |
502 |
|
513 | |||
503 | rtems_task dumb_task( rtems_task_argument unused ) |
|
514 | rtems_task dumb_task( rtems_task_argument unused ) |
@@ -3,7 +3,7 | |||||
3 | rtems_isr waveforms_isr( rtems_vector_number vector ) |
|
3 | rtems_isr waveforms_isr( rtems_vector_number vector ) | |
4 | { |
|
4 | { | |
5 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) |
|
5 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) | |
6 |
printf("In |
|
6 | printf("In waveforms_isr *** Error sending event to WFRM\n"); | |
7 | } |
|
7 | } | |
8 |
|
8 | |||
9 | rtems_task wfrm_task(rtems_task_argument argument) |
|
9 | rtems_task wfrm_task(rtems_task_argument argument) |
General Comments 0
You need to be logged in to leave comments.
Login now