Thanks for replying
I tried to use the SET_MESSAGE_INTERVAL Mavlink message but did not work.
I first tried as this page said, then tried to use mavlink_msg_message_interval_pack() function, both failed.
https://ardupilot.org/dev/docs/mavlink-requesting-data.html
Here is my code.
mavlink_heart_beat();
delay(20); //delay 20ms
mavlink_set_msg();
mavlink_heart_beat() {
static uint32_t last_t = 0;
if (millis() - last_t < 1000) return;
last_t = millis();
mavlink_message_t msg;
uint8_t buf[MAVLINK_MAX_PACKET_LEN];
mavlink_msg_heartbeat_pack(255, 1, &msg,
6, 8, 0, 0, 0);
uint16_t buf_len = mavlink_msg_to_send_buffer(buf, &msg);
Serial.write(buf, buf_len);
}
mavlink_set_msg(uint32_t hz) {
mavlink_message_t msg;
//mavlink_msg_command_long_pack(255, 1, &msg, 150, 1,
// MAVLINK_MSG_ID_MESSAGE_INTERVAL, 0,
// MAVLINK_MSG_ID_GLOBAL_POSITION_INT, hz*100.0, 0.0, 0.0, 0.0, 0.0, 0.0);
mavlink_msg_message_interval_pack(255, 1, &msg, MAVLINK_MSG_ID_GLOBAL_POSITION_INT, hz*200);
uint8_t buf[MAVLINK_MAX_PACKET_LEN];
uint32_t buf_len = mavlink_msg_to_send_buffer(&buf[0], &msg);
Serial.write(buf, buf_len);
}