can_ssp_router.h

00001 #ifndef  __CAN_SSP_ROUTER_H__
00002 #define  __CAN_SSP_ROUTER_H__
00003 
00004 // Struct definition for the CAN-SSP routing table.
00005 // The low-order 5 bits allow selection of some combination of four CAN channels and 1 SSP channel
00006 // as destinations for incoming data. The high-order 3 bits designate the data source. Each ID
00007 // may have only one source; multiple destinations are fine. 
00008 // Format: a bit set high indicates that a destination is active;
00009 // the source is the channel number. Default source is 7: undefined
00010 typedef __packed struct csr_routing_entry {
00011   int destinations : 5;
00012   int source       : 3;
00013 } CSR_ROUTE;
00014 
00015 //__irq void csr_ssp_isr(void);
00016 
00017 #define CSR_TIMER_TICKS_PER_MS  5  //e.g., if timer interrupts occur at 100 uS intervals, this = 10.
00018 void csr_clock_tick(void);
00019 unsigned long int csr_elapsed_ms(void);
00020 void csr_send_can_time_packets(long unsigned int time);
00021 
00022 unsigned short int csr_can1_tx_push_frame(CAN_FRAME * frameptr);
00023 unsigned short int csr_can2_tx_push_frame(CAN_FRAME * frameptr);
00024 unsigned short int csr_can3_tx_push_frame(CAN_FRAME * frameptr);
00025 unsigned short int csr_can4_tx_push_frame(CAN_FRAME * frameptr);
00026 
00027 unsigned short csr_can_rx_pop_frame(CAN_FRAME * frameptr);
00028 
00029 //void csr_can1_tx_isr(void) __irq;
00030 //void csr_can2_tx_isr(void) __irq;
00031 //void csr_can3_tx_isr(void) __irq;
00032 //void csr_can4_tx_isr(void) __irq;
00033 
00034 void csr_can1_tx(void);
00035 void csr_can2_tx(void);
00036 void csr_can3_tx(void);
00037 void csr_can4_tx(void);
00038 
00039 // TEST CODE 
00040 //void csr_can1_tx_test(void);
00041 //void csr_can2_tx_test(void);
00042 //void csr_can3_tx_test(void);
00043 //void csr_can4_tx_test(void);
00044 
00045 void csr_can_rx1_fiq(void);
00046 void csr_can_rx2_fiq(void);
00047 void csr_can_rx3_fiq(void);
00048 void csr_can_rx4_fiq(void);
00049 
00050 unsigned short can_get_error_1(CAN_FRAME * frame);
00051 unsigned short can_get_error_2(CAN_FRAME * frame);
00052 unsigned short can_get_error_3(CAN_FRAME * frame);
00053 unsigned short can_get_error_4(CAN_FRAME * frame);
00054 
00055 void can_error_isr(void) __irq;
00056 
00057 //void csr_can_rx1_isr(void) __irq;
00058 //void csr_can_rx2_isr(void) __irq;
00059 //void csr_can_rx3_isr(void) __irq;
00060 //void csr_can_rx4_isr(void) __irq;
00061 
00062 //csr_leds.c public functions
00063 
00064 //void can_test_transmitter(void);  // **** TEST CODE ****
00065 //void csr_can1_packet_count(void);
00066 //void csr_can2_packet_count(void);
00067 //void csr_can3_packet_count(void);
00068 //void csr_can4_packet_count(void);
00069 void csr_can1_red_led_blink(short unsigned int time);
00070 void csr_can1_green_led_blink(short unsigned int time);
00071 void csr_can2_red_led_blink(short unsigned int time);
00072 void csr_can2_green_led_blink(short unsigned int time);
00073 void csr_can3_red_led_blink(short unsigned int time);
00074 void csr_can3_green_led_blink(short unsigned int time);
00075 void csr_can4_red_led_blink(short unsigned int time);
00076 void csr_can4_green_led_blink(short unsigned int time);
00077 void csr_mcu_red_led_blink(short unsigned int time);
00078 void csr_mcu_green_led_blink(short unsigned int time);
00079 void csr_mcu_blue_led_blink(short unsigned int time);
00080 
00081 //Private functions from csr_leds.c
00082 void csr_update_mcu_leds(void);
00083 void csr_update_can_leds(void);
00084 
00085 
00086 void csr_synchronize_arm9(void);
00087 void csr_global_variable_init(void);
00088 void csr_routing_table_init(void);
00089 void csr_ssp_isr(void); //Set up for FIQ interrupts
00090 //void csr_route(void);
00091 unsigned short int csr_route_frame(CAN_FRAME * frame);
00092 unsigned short int csr_push_ssp_frame(CAN_FRAME * frame);
00093 unsigned short int csr_pop_ssp_frame(CAN_FRAME * frame);
00094 unsigned short int csr_can1_tx_push_frame(CAN_FRAME * frameptr);
00095 //void csr_can1_tx_isr(void) __irq;
00096 unsigned short int csr_can2_tx_push_frame(CAN_FRAME * frameptr);
00097 //void csr_can2_tx_isr(void) __irq;
00098 unsigned short int csr_can3_tx_push_frame(CAN_FRAME * frameptr);
00099 //void csr_can3_tx_isr(void) __irq;
00100 unsigned short int csr_can4_tx_push_frame(CAN_FRAME * frameptr);
00101 //void csr_can4_tx_isr(void) __irq;
00102 
00103 #endif// __CAN_SSP_ROUTER_H__
00104 
Generated on Tue Jun 29 16:36:14 2010 by  doxygen 1.6.3