|
|
|
@ -20,7 +20,7 @@
@@ -20,7 +20,7 @@
|
|
|
|
|
#include <string.h> |
|
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
|
|
#define ZR_API_DEBUG 1 |
|
|
|
|
#define ZR_API_DEBUG 0 |
|
|
|
|
#if ZR_API_DEBUG |
|
|
|
|
# define Debug(fmt, args ...) gcs().send_text(MAV_SEVERITY_INFO, "{%d}," fmt , __LINE__, ## args) |
|
|
|
|
// # define Debug(fmt, args ...) gcs().send_text(MAV_SEVERITY_INFO, "NOTICE:" fmt , ## args)
|
|
|
|
@ -78,7 +78,7 @@ void AC_ZR_Serial_API::write_data_to_port(AP_HAL::UARTDriver *_port, const uint8
@@ -78,7 +78,7 @@ void AC_ZR_Serial_API::write_data_to_port(AP_HAL::UARTDriver *_port, const uint8
|
|
|
|
|
if (_port->txspace() > len) { |
|
|
|
|
_port->write(data, len); |
|
|
|
|
} else { |
|
|
|
|
Debug("Data_Trans Not enough TXSPACE,%d < %d", _port->txspace(),len); |
|
|
|
|
// Debug("Data_Trans Not enough TXSPACE,%d < %d", _port->txspace(),len);
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -115,7 +115,7 @@ void AC_ZR_Serial_API::get_vehicle_NEU_pos(Vector3f vec_neu)
@@ -115,7 +115,7 @@ void AC_ZR_Serial_API::get_vehicle_NEU_pos(Vector3f vec_neu)
|
|
|
|
|
static char buf[50]; |
|
|
|
|
snprintf(buf, sizeof(buf), "pos:%.2f,%.2f,%.2f\n\r",vec_neu.x,vec_neu.y,vec_neu.z); |
|
|
|
|
mav_data_len = 50; |
|
|
|
|
memset(mav_data_from_host,0,TRANS_DATA_LEN); |
|
|
|
|
memset(mav_data_from_host,0,PARSER_DATA_LEN); |
|
|
|
|
memcpy(mav_data_from_host,buf,50); |
|
|
|
|
get_mav_data = true; |
|
|
|
|
write_data_to_port(_zr_api_port,mav_data_from_host, mav_data_len); |
|
|
|
@ -127,13 +127,48 @@ void AC_ZR_Serial_API::get_vehicle_euler_angles(Vector3f euler)
@@ -127,13 +127,48 @@ void AC_ZR_Serial_API::get_vehicle_euler_angles(Vector3f euler)
|
|
|
|
|
static char buf[50]; |
|
|
|
|
snprintf(buf, sizeof(buf), "rpy:%.2f,%.2f,%.2f\n\r",euler.x,euler.y,euler.z); |
|
|
|
|
mav_data_len = 50; |
|
|
|
|
// memset(mav_data_from_host,0,TRANS_DATA_LEN);
|
|
|
|
|
// memset(mav_data_from_host,0,PARSER_DATA_LEN);
|
|
|
|
|
// memcpy(mav_data_from_host,buf,50);
|
|
|
|
|
get_mav_data = true; |
|
|
|
|
write_data_to_port(_zr_api_port,(const uint8_t *)buf, mav_data_len); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AC_ZR_Serial_API::get_vehicle_flight_data(Vector3f pos,Vector3f euler,Vector3f vel,uint8_t mode,uint8_t in_air) |
|
|
|
|
{ |
|
|
|
|
uint8_t crc_sum = 0; |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.msg_head = 0xfe; |
|
|
|
|
flight_data_parser.data_msg.msg_length = PARSER_DATA_LEN; |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.time_ms = AP_HAL::millis(); |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.flight_data.lat = pos.x; |
|
|
|
|
flight_data_parser.data_msg.flight_data.lng = pos.y; |
|
|
|
|
flight_data_parser.data_msg.flight_data.alt = pos.z; |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.flight_data.roll = euler.x; |
|
|
|
|
flight_data_parser.data_msg.flight_data.pitch = euler.y; |
|
|
|
|
flight_data_parser.data_msg.flight_data.yaw = euler.z; |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.flight_data.vx = vel.x; |
|
|
|
|
flight_data_parser.data_msg.flight_data.vy = vel.y; |
|
|
|
|
flight_data_parser.data_msg.flight_data.vz = vel.z; |
|
|
|
|
|
|
|
|
|
flight_data_parser.data_msg.flight_data.state = UINT16_VALUE(mode, in_air); |
|
|
|
|
for (size_t i = 0; i < 40; i++) |
|
|
|
|
{ |
|
|
|
|
crc_sum += flight_data_parser.data[i]; |
|
|
|
|
} |
|
|
|
|
flight_data_parser.data_msg.crc = crc_sum; |
|
|
|
|
write_data_to_port(_zr_api_port,flight_data_parser.data, PARSER_DATA_LEN); |
|
|
|
|
if(0){ |
|
|
|
|
gcs().send_text(MAV_SEVERITY_INFO, "{%d},%.4f,%.4f,%.4f" , __LINE__,flight_data_parser.data_msg.flight_data.lat, \
|
|
|
|
|
flight_data_parser.data_msg.flight_data.roll ,\
|
|
|
|
|
flight_data_parser.data_msg.flight_data.vx ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AC_ZR_Serial_API::update(void) |
|
|
|
|
{ |
|
|
|
|
if(!data_trans_init || _zr_api_port == nullptr){ |
|
|
|
@ -147,7 +182,7 @@ void AC_ZR_Serial_API::update(void)
@@ -147,7 +182,7 @@ void AC_ZR_Serial_API::update(void)
|
|
|
|
|
mav_len = serial_data_len; |
|
|
|
|
Debug("%d,device data len:%d",now_time,mav_len); |
|
|
|
|
serial_data_len = 0; |
|
|
|
|
memset(serial_data_from_device,0,TRANS_DATA_LEN); |
|
|
|
|
memset(serial_data_from_device,0,PARSER_DATA_LEN); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// if(get_mav_data){
|
|
|
|
|