int main(void) { Board_init(); UART_init(UART2_ID,9600); printf("\r\nUno Serial Test Harness\r\nAfter this Message the terminal should mirror anything you type.\r\n"); unsigned char ch = 0; int x; while (1) { if (UART_isTransmitEmpty(UART1_ID) == TRUE){ if (UART_isReceiveEmpty(UART1_ID) == FALSE){ ch = UART_getChar(UART1_ID); UART_putChar(UART1_ID, ch); printf(" Through UART2: "); UART_putChar(UART2_ID, ch); x = 1024; while(--x){ if(UART_isReceiveEmpty(UART2_ID) ==FALSE) break; } if(UART_isReceiveEmpty(UART2_ID) == FALSE){ printf("%c\n", UART_getChar(UART2_ID)); } else{ printf("FAILED\n"); } //DELAY(1000) } } } return 0; }
int main(){ Board_init(); Serial_init(); Timer_init(); Xbee_init(XBEE_UART_ID); printf("Xbee Test 2\n"); while(1){ Xbee_runSM(); //if(!UART_isTransmitEmpty(UART1_ID)); //printf("%d\t",Mavlink_returnACKStatus(messageName_start_rescue)); if(!UART_isReceiveEmpty(UART1_ID)){ Serial_getChar(); Mavlink_send_start_rescue(UART2_ID, TRUE, 0xFF, 0x34FD, 0xAB54); Timer_new(TIMER_TIMEOUT, DELAY_TIMEOUT); printf("\nSENT\n"); } else if(Timer_isActive(TIMER_TIMEOUT) != TRUE && Mavlink_returnACKStatus(messageName_start_rescue) == ACK_STATUS_WAIT){ //else if(Timer_isActive(TIMER_TIMEOUT) != TRUE){ Mavlink_editACKStatus(messageName_start_rescue, ACK_STATUS_DEAD); printf("ACK DEAD\n"); } else if(Mavlink_returnACKStatus(messageName_start_rescue) == ACK_STATUS_DEAD){ Mavlink_send_start_rescue(UART2_ID, TRUE, 0xFF, 0x34FD, 0xAB54); Timer_new(TIMER_TIMEOUT, DELAY_TIMEOUT); } else if(Mavlink_returnACKStatus(messageName_start_rescue) == ACK_STATUS_RECIEVED){ Mavlink_editACKStatus(messageName_start_rescue, ACK_STATUS_NO_ACK); printf("GPS SENT AND ACKOWLEGED\n"); } } }
void Mavlink_recieve(uint8_t uart_id){ while(UART_isReceiveEmpty(uart_id) == FALSE){ uint8_t c = UART_getChar(uart_id); //if a message can be deciphered if(mavlink_parse_char(MAVLINK_COMM_0, c, &msg, &status)) { switch(msg.msgid){ case MAVLINK_MSG_ID_XBEE_HEARTBEAT: { mavlink_xbee_heartbeat_t data; mavlink_msg_xbee_heartbeat_decode(&msg, &data); //call outside function to handle data Xbee_recieved_message_heartbeat(&data); }break; #ifdef XBEE_TEST case MAVLINK_MSG_ID_TEST_DATA: { mavlink_test_data_t data; mavlink_msg_test_data_decode(&msg, &data); //call outside function to handle data Xbee_message_data_test(&data); }break; #endif case MAVLINK_MSG_ID_START_RESCUE: { mavlink_start_rescue_t data; mavlink_msg_start_rescue_decode(&msg, &data); if(data.ack == TRUE){ Mavlink_send_ACK(XBEE_UART_ID, messageName_start_rescue); } Compas_recieve_start_rescue(&data); }break; case MAVLINK_MSG_ID_MAVLINK_ACK: { mavlink_mavlink_ack_t data; mavlink_msg_mavlink_ack_decode(&msg, &data); Mavlink_recieve_ACK(&data); }break; } } } packet_drops += status.packet_rx_drop_count; }
/**************************************************************************** Function Serial_isReceiveEmpty Parameters None. Returns TRUE or FALSE Description returns the state of the receive buffer Notes Author Max Dunne, 2011.12.15 ****************************************************************************/ char Serial_isReceiveEmpty(void) { return UART_isReceiveEmpty(SERIAL_UART_ID); }
/**************************************************************************** Function _mon_getc Parameters canblock - unused variable but required to match Microchip form Returns None. Description overwrites weakly defined extern to use circular buffer instead of Microchip functions Notes Author Max Dunne, 2011.11.10 ****************************************************************************/ int _mon_getc(int canblock) { if (UART_isReceiveEmpty(SERIAL_UART_ID)) return -1; return Serial_getChar(); }
void Xbee_runSM(){ //Recieve bytes if they are available if(UART_isReceiveEmpty(xbeeUartId) == FALSE){ Mavlink_recieve(xbeeUartId); } }