mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-02 14:13:42 -04:00
acdd6b8a83
prep for ac2 2.0.43 - simple mode modify some scaling in Config add hud speed warning. add link quality and time to HUD fix ac2 logs, relative alt. prep for mavlink 1.0 add time to tlog > plain text conversion
132 lines
2.6 KiB
Perl
132 lines
2.6 KiB
Perl
$dir = "C:/Users/hog/Documents/Arduino/libraries/GCS_MAVLink/message_definitions/";
|
|
#$dir = "C:/Users/hog/Desktop/DIYDrones&avr/pixhawk-mavlink-c91adfb/include/common/";
|
|
|
|
opendir(DIR,$dir) || die print $!;
|
|
@files = readdir(DIR);
|
|
closedir(DIR);
|
|
|
|
open(OUT,">MAVLinkTypes.cs");
|
|
|
|
print OUT <<EOF;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace ArdupilotMega
|
|
{
|
|
partial class MAVLink
|
|
{
|
|
EOF
|
|
|
|
foreach $file (@files) {
|
|
|
|
if (!($file eq "common.xml" || $file eq "ardupilotmega.xml"))
|
|
{
|
|
next;
|
|
}
|
|
|
|
print "$file\n";
|
|
|
|
open(F,$dir.$file);
|
|
|
|
$start = 0;
|
|
|
|
while ($line = <F>) {
|
|
if ($line =~ /enum name="(MAV_.*)"/) {
|
|
$start = 1;
|
|
print OUT "\t\tpublic enum $1\n\t\t{ \n";
|
|
}
|
|
|
|
if ($line =~ /<message id="([0-9]+)" name="([^"]+)">/) {
|
|
$name = lc($2);
|
|
|
|
print OUT "\t\tpublic const byte MAVLINK_MSG_ID_".uc($name) . " = " . $1 . ";\n";
|
|
print OUT "\t\t[StructLayout(LayoutKind.Sequential,Pack=1)]\n";
|
|
print OUT "\t\tpublic struct __mavlink_".$name."_t\n\t\t{\n";
|
|
$no = $1;
|
|
|
|
$start = 1;
|
|
|
|
#__mavlink_gps_raw_t
|
|
$structs[$no] = "__mavlink_".$name."_t";
|
|
} # __mavlink_heartbeat_t
|
|
|
|
$line =~ s/MAV_CMD_NAV_//;
|
|
|
|
$line =~ s/MAV_CMD_//;
|
|
|
|
if ($line =~ /<entry value="([0-9]+)" name="([^"]+)">/)
|
|
{
|
|
|
|
|
|
print OUT "\t\t\t$2 = $1,\n";
|
|
|
|
}
|
|
|
|
#<field type="uint8_t" name="type">
|
|
if ($line =~ /<field type="([^"]+)" name="([^"]+)">(.*)<\/field>/)
|
|
{
|
|
|
|
$type = $1;
|
|
$name = $2;
|
|
$desc = $3;
|
|
|
|
print "$type = $name\n";
|
|
|
|
$type =~ s/byte_mavlink_version/public byte/;
|
|
|
|
$type =~ s/array/public byte/;
|
|
|
|
|
|
|
|
$type =~ s/uint8_t/public byte/;
|
|
$type =~ s/int8_t/public byte/;
|
|
$type =~ s/float/public float/;
|
|
$type =~ s/uint16_t/public ushort/;
|
|
$type =~ s/uint32_t/public uint/;
|
|
$type =~ s/uint64_t/public ulong/;
|
|
$type =~ s/int16_t/public short/;
|
|
$type =~ s/int32_t/public int/;
|
|
$type =~ s/int64_t/public long/;
|
|
|
|
if ($type =~ /\[(.*)\]/) { # array
|
|
print OUT "\t\t\t[MarshalAs(UnmanagedType.ByValArray, SizeConst=". $1 .")] \n";
|
|
$type =~ s/\[.*\]//;
|
|
$type =~ s/public\s+([^\s]+)/public $1\[\]/o;
|
|
}
|
|
|
|
print OUT "\t\t\t$type $name; ///< $desc\n";
|
|
|
|
}
|
|
|
|
if ($start && ($line =~ /<\/message>/ || $line =~ /<\/enum>/)) {
|
|
print OUT "\t\t};\n\n";
|
|
$start = 0;
|
|
}
|
|
|
|
}
|
|
|
|
close(F);
|
|
}
|
|
|
|
print OUT "Type[] mavstructs = new Type[] {";
|
|
for ($a = 0; $a <= 256;$a++)
|
|
{
|
|
if (defined($structs[$a])) {
|
|
print OUT "typeof(".$structs[$a] .") ,";
|
|
} else {
|
|
print OUT "null ,";
|
|
}
|
|
}
|
|
print OUT "};\n\n";
|
|
|
|
print OUT <<EOF;
|
|
}
|
|
}
|
|
|
|
EOF
|
|
|
|
close OUT;
|
|
|
|
1; |