1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-02 10:24:11 +01:00

Make the initial values for enums be the string. Make setValue accept

numerical or string constants for enums.  Only returns a string though.
This commit is contained in:
James Cotton 2011-03-06 13:33:56 -06:00
parent 72de0c622a
commit 6758d5c598
2 changed files with 12 additions and 6 deletions

View File

@ -343,8 +343,14 @@ public class UAVObjectField {
break; break;
} }
case ENUM: case ENUM:
{ {
byte val = (byte) options.indexOf((String) data); byte val;
try {
// Test if numeric constant passed in
val = ((Number) data).byteValue();
} catch (Exception e) {
val = (byte) options.indexOf((String) data);
}
//if(val < 0) throw new Exception("Enumerated value not found"); //if(val < 0) throw new Exception("Enumerated value not found");
List<Byte> l = (List<Byte>) this.data; List<Byte> l = (List<Byte>) this.data;
l.set(index, val); l.set(index, val);

View File

@ -210,9 +210,9 @@ bool UAVObjectGeneratorJava::process_object(ObjectInfo* info)
{ {
if ( info->fields[n]->type == FIELDTYPE_ENUM ) if ( info->fields[n]->type == FIELDTYPE_ENUM )
{ {
initfields.append( QString("\t\tgetField(\"%1\").setValue(%2);\n") initfields.append( QString("\t\tgetField(\"%1\").setValue(\"%2\");\n")
.arg( info->fields[n]->name ) .arg( info->fields[n]->name )
.arg( info->fields[n]->options.indexOf( info->fields[n]->defaultValues[0] ) ) ); .arg( info->fields[n]->defaultValues[0] ) );
} }
else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 ) else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 )
{ {
@ -233,10 +233,10 @@ bool UAVObjectGeneratorJava::process_object(ObjectInfo* info)
for (int idx = 0; idx < info->fields[n]->numElements; ++idx) for (int idx = 0; idx < info->fields[n]->numElements; ++idx)
{ {
if ( info->fields[n]->type == FIELDTYPE_ENUM ) { if ( info->fields[n]->type == FIELDTYPE_ENUM ) {
initfields.append( QString("\t\tgetField(\"%1\").setValue(%3,%2);\n") initfields.append( QString("\t\tgetField(\"%1\").setValue(\"%3\",%2);\n")
.arg( info->fields[n]->name ) .arg( info->fields[n]->name )
.arg( idx ) .arg( idx )
.arg( info->fields[n]->options.indexOf( info->fields[n]->defaultValues[idx] ) ) ); .arg( info->fields[n]->defaultValues[idx] ) );
} }
else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 ) { else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 ) {
initfields.append( QString("\t\tgetField(\"%1\").setValue(%3,%2);\n") initfields.append( QString("\t\tgetField(\"%1\").setValue(%3,%2);\n")