]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
eb_jaws_11: add left and right variable
authorpokormat <matous.pokorny@me.com>
Wed, 13 Apr 2011 11:19:58 +0000 (13:19 +0200)
committerpokormat <matous.pokorny@me.com>
Wed, 13 Apr 2011 11:19:58 +0000 (13:19 +0200)
src/eb_jaws_11/main.c

index 2b89c761185c8822f21590695f7cb1afad01bc8b..5f5c32414bd850cb513026ec508cec54ce5d76aa 100644 (file)
@@ -167,18 +167,32 @@ void CAN_rx(can_msg_t *msg) {
 
        switch (rx_msg.id) 
        {               
-               case CAN_VIDLE_CMD:
+               case CAN_JAW_LEFT_CMD:
                        deb_led_on(LEDB);
                        req = ((rx_msg.data[0]<<8) | (rx_msg.data[1]));
                        spd = rx_msg.data[2];
                        
                        if (req >= 0x150 && req <= 0x3e0) {
                                fsm_jaws.flags &= ~CAN_JAWS_OUT_OF_BOUNDS;
-                               fsm_jaws.can_req_position = req;// save new req position of lift
-                               fsm_jaws.can_req_spd = spd;// save new req spd of lift
+                               fsm_jaws.can_req_position_left = req;// save new req position of lift
+                               fsm_jaws.can_req_spd_left = spd;// save new req spd of lift
                        } else
                                fsm_jaws.flags |= CAN_JAWS_OUT_OF_BOUNDS;
                break;
+               
+               case CAN_JAW_RIGHT_CMD:
+                       deb_led_on(LEDB);
+                       req = ((rx_msg.data[0]<<8) | (rx_msg.data[1]));
+                       spd = rx_msg.data[2];
+                       
+                       if (req >= 0x150 && req <= 0x3e0) {
+                               fsm_jaws.flags &= ~CAN_JAWS_OUT_OF_BOUNDS;
+                               fsm_jaws.can_req_position_right = req;// save new req position of lift
+                               fsm_jaws.can_req_spd_right = spd;// save new req spd of lift
+                       } else
+                               fsm_jaws.flags |= CAN_JAWS_OUT_OF_BOUNDS;
+               break;
+               
                default:break;
        }
 
@@ -205,11 +219,22 @@ void init_periphery(void){
 void can_send_status(void)
 {
        can_msg_t tx_msg;
-       tx_msg.id = CAN_JAWS_STATUS;
+       tx_msg.id = CAN_JAW_LEFT_STATUS;
        tx_msg.dlc = 5;
        tx_msg.flags = 0;
-       tx_msg.data[0] = (fsm_jaws.act_pos  >> 8) & 0xFF;
-       tx_msg.data[1] = fsm_jaws.act_pos & 0xFF;
+       tx_msg.data[0] = (fsm_jaws.act_pos_left  >> 8) & 0xFF;
+       tx_msg.data[1] = fsm_jaws.act_pos_left & 0xFF;
+       tx_msg.data[2] = (fsm_jaws.can_response  >> 8) & 0xFF;
+       tx_msg.data[3] = fsm_jaws.can_response & 0xFF;
+       tx_msg.data[4] = fsm_jaws.flags; 
+       /*while*/(can_tx_msg(&tx_msg)); /* CAN erratum workaround */
+       
+       //can_msg_t tx_msg;
+       tx_msg.id = CAN_JAW_RIGHT_STATUS;
+       tx_msg.dlc = 5;
+       tx_msg.flags = 0;
+       tx_msg.data[0] = (fsm_jaws.act_pos_right  >> 8) & 0xFF;
+       tx_msg.data[1] = fsm_jaws.act_pos_right & 0xFF;
        tx_msg.data[2] = (fsm_jaws.can_response  >> 8) & 0xFF;
        tx_msg.data[3] = fsm_jaws.can_response & 0xFF;
        tx_msg.data[4] = fsm_jaws.flags; 
@@ -251,7 +276,11 @@ void blink_led()
                    up = (up+1)%12;
                */
                deb_led_change(LEDG);
-               send_rs_int(fsm_jaws.act_pos);
+               send_rs_str("LEFT_ACT_POS:");
+               send_rs_int(fsm_jaws.act_pos_left);
+               send_rs_str("\n");
+               send_rs_str("RIGHT_ACT_POS:");
+               send_rs_int(fsm_jaws.act_pos_right);
                send_rs_str("\n");
        }
 }
@@ -406,11 +435,10 @@ int main(void)
 
        send_rs_str("Jaws started\n");
        // The above send_rs_str is importat - we wait for the first AD conversion to be finished
-       fsm_jaws
-.act_pos = adc_val[0];
-       init_fsm(&fsm_jaws
-, &fsm_jaws_init
-);
+       fsm_jaws.act_pos_left = adc_val[0];
+       fsm_jaws.act_pos_right = adc_val[1];
+       
+       init_fsm(&fsm_jaws, &fsm_jaws_init);
 
 /*     test_vhn(); */
 /*     return; */
@@ -422,12 +450,11 @@ int main(void)
 
                        //dbg_print_time();
 
-                       fsm_jaws
-.act_pos = adc_val[0];
+                       fsm_jaws.act_pos_left = adc_val[0];
+                       fsm_jaws.act_pos_right = adc_val[1];
                        
                    
-                       run_fsm(&fsm_jaws
-);
+                       run_fsm(&fsm_jaws);
                }
 
                if (timer_msec >= status_time + 100 || //repeat sending message every 100 ms