Example #1
0
static void storeGains(void)
{
    data_services_save_all(STORAGE_FLAG_STORE_CALIB, &storage_complete_callback);
};
Example #2
0
void MAVLinkCommandLong(mavlink_message_t* handle_msg) // MAVLINK_MSG_ID_COMMAND_LONG
{
	mavlink_command_long_t packet;
	mavlink_msg_command_long_decode(handle_msg, &packet);

	DPRINT("MAVLINK_MSG_ID_COMMAND_LONG %u\r\n", handle_msg->msgid);
	//if (mavlink_check_target(packet.target, packet.target_component) == false) break;
	{
		switch (packet.command)
		{
			case MAV_CMD_PREFLIGHT_CALIBRATION:
				DPRINT("MAV_CMD_PREFLIGHT_CALIBRATION %u\r\n", packet.command);
				if (packet.param1 == 1)
				{
#if (USE_NV_MEMORY ==1)
					udb_skip_flags.skip_imu_cal = 0;
#endif // (USE_NV_MEMORY == 1)
					udb_a2d_record_offsets();
				}
				else if (packet.param4 == 1) //param4 = radio calibration
				{
					if (udb_flags._.radio_on == 1)
					{
						udb_servo_record_trims();
						command_ack(packet.command, MAV_CMD_ACK_OK);
					}
					else
						command_ack(packet.command, MAV_CMD_ACK_ERR_FAIL);
				}
				else
					command_ack(packet.command, MAV_CMD_ACK_ERR_NOT_SUPPORTED);
				break;
#if (USE_NV_MEMORY == 1)
			case MAV_CMD_PREFLIGHT_STORAGE:
				DPRINT("MAV_CMD_PREFLIGHT_STORAGE %u\r\n", packet.command);
				if (packet.param1 == MAV_PFS_CMD_WRITE_ALL) // 1
				{
					if (packet.param2 == MAV_PFS_CMD_WRITE_ALL)
						data_services_save_all(STORAGE_FLAG_STORE_CALIB | STORAGE_FLAG_STORE_WAYPOINTS, &preflight_storage_complete_callback);
					else
						data_services_save_all(STORAGE_FLAG_STORE_CALIB, &preflight_storage_complete_callback);
				}
				else if (packet.param1 == MAV_PFS_CMD_READ_ALL) // 0
				{
					if (packet.param2 == MAV_PFS_CMD_READ_ALL)
						data_services_load_all(STORAGE_FLAG_STORE_CALIB | STORAGE_FLAG_STORE_WAYPOINTS, &preflight_storage_complete_callback);
					else
						data_services_load_all(STORAGE_FLAG_STORE_CALIB, &preflight_storage_complete_callback);
				}
				else
					command_ack(packet.command, MAV_CMD_ACK_ERR_NOT_SUPPORTED);
				break;
			case MAV_CMD_PREFLIGHT_STORAGE_ADVANCED:
				DPRINT("MAV_CMD_PREFLIGHT_STORAGE_ADVANCED %u\r\n", packet.command);
				switch ((uint16_t)packet.param1)
				{
					case MAV_PFS_CMD_CLEAR_SPECIFIC:
						storage_clear_area(packet.param2, &preflight_storage_complete_callback);
						break;
					case MAV_PFS_CMD_WRITE_SPECIFIC:
						data_services_save_specific(packet.param2, &preflight_storage_complete_callback);
						break;
					case MAV_PFS_CMD_READ_SPECIFIC:
						data_services_load_specific(packet.param2, &preflight_storage_complete_callback);
						break;
					default:
						command_ack(packet.command, MAV_CMD_ACK_ERR_NOT_SUPPORTED);
						break;
				}
				break;
#endif // (USE_NV_MEMORY == 1)
			case 245: // MAV_CMD_PREFLIGHT_STORAGE:
				switch ((uint16_t)packet.param1)
				{
					case 0: // Read
						DPRINT("Read (ROM)\r\n");
						config_load();
						break;
					case 1: // Write
						DPRINT("Write (ROM)\r\n");
						config_save();
						break;
					default:
						DPRINT("245 packet.param1 %f packet.param2 %f\r\n", (double)packet.param1, (double)packet.param2);
						break;
				}
				break;
			case 246: // halt
				DPRINT("Halt - packet.command %u\r\n", packet.command);
				break;
			case 22: // start
				DPRINT("Start - packet.command %u\r\n", packet.command);
				break;
			case 252: // land
				DPRINT("Land - packet.command %u\r\n", packet.command);
				break;
			default:
				DPRINT("packet.command %u\r\n", packet.command);
				command_ack(packet.command, MAV_CMD_ACK_ERR_NOT_SUPPORTED);
				break;
		}
	}
}