00001 #include "navigation_communication.h"
00002
00003
00004 const int BAUD = 19200, POS_TRUE = 1, CNT = 4, SEND_DELAY_PERIOD = 25000;
00005
00006 static short serial_out_pin = 10, ready_to_send_pin = 11, ready_to_receive_pin = 12;
00007 int send_wait_timer = 0;
00008 static char out_list[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
00009
00010 int initializeNavigationCommunication(int serout_pin, int rts_pin, int cts_pin) {
00011 serial_out_pin = serout_pin;
00012 ready_to_send_pin = rts_pin;
00013 ready_to_receive_pin = cts_pin;
00014 INPUT(ready_to_receive_pin);
00015 OUTPUT(serial_out_pin);
00016 OUTPUT(ready_to_send_pin);
00017 LOW(serial_out_pin);
00018 HIGH(ready_to_send_pin);
00019 WAIT(1);
00020 if(IN(serial_out_pin) || !IN(ready_to_send_pin)) {
00021 INPUT(serial_out_pin);
00022 INPUT(ready_to_send_pin);
00023 return -1;
00024 } else { return 0; }
00025 }
00026
00027
00028 void sendToNavController(int steering, int throttle, int auto_avoid, int rc_mode) {
00029 LOW(ready_to_send_pin);
00030 send_wait_timer = TIMER;
00031
00032 while((TIMER - send_wait_timer) < SEND_DELAY_PERIOD && IN(ready_to_receive_pin));
00033 if(!IN(ready_to_receive_pin)) {
00034 out_list[0] = steering;
00035 out_list[1] = throttle;
00036 out_list[2] = auto_avoid;
00037 out_list[3] = rc_mode;
00038
00039
00040 SEROUT(serial_out_pin, BAUD, POS_TRUE, CNT, out_list);
00041
00042 }
00043 HIGH(ready_to_send_pin);
00044 }