@@ -413,7 +413,7 @@ const LuaMultipleField luaMultipleFields[] = {
413
413
{MIXSRC_FIRST_HELI, " cyc" , " Cyclic %d" , 3 },
414
414
};
415
415
416
- static bool _searchSingleFields (const char * name, LuaField& field,
416
+ static bool _searchSingleFieldsByName (const char * name, LuaField& field,
417
417
unsigned int flags,
418
418
const LuaSingleField* fields, size_t n_fields)
419
419
{
@@ -443,11 +443,11 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags)
443
443
field.name [sizeof (field.name ) - 1 ] = ' \0 ' ;
444
444
445
445
// hardware specific inputs
446
- if (_searchSingleFields (name, field, flags, _lua_inputs, DIM (_lua_inputs)))
446
+ if (_searchSingleFieldsByName (name, field, flags, _lua_inputs, DIM (_lua_inputs)))
447
447
return true ;
448
448
449
449
// well known single fields
450
- if (_searchSingleFields (name, field, flags, luaSingleFields, DIM (luaSingleFields)))
450
+ if (_searchSingleFieldsByName (name, field, flags, luaSingleFields, DIM (luaSingleFields)))
451
451
return true ;
452
452
453
453
// check switches from 'sa' to 'sz'
@@ -531,25 +531,39 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags)
531
531
return false ; // not found
532
532
}
533
533
534
- // Return field data for a given field id
535
- bool luaFindFieldById (int id, LuaField & field, unsigned int flags)
534
+ static bool _searchSingleFieldsById (int id, LuaField& field,
535
+ unsigned int flags,
536
+ const LuaSingleField* fields, size_t n_fields)
536
537
{
537
- field.id = id;
538
- field.name [sizeof (field.name ) - 1 ] = ' \0 ' ;
539
- field.desc [0 ] = ' \0 ' ;
540
-
541
- // TODO better search method (binary lookup)
542
- for (unsigned int n = 0 ; n < DIM (luaSingleFields); ++n) {
543
- if (id == luaSingleFields[n].id ) {
544
- strncpy (field.name , luaSingleFields[n].name , sizeof (field.name ) - 1 );
538
+ for (unsigned int n = 0 ; n < n_fields; ++n) {
539
+ if (id == fields[n].id ) {
540
+ strncpy (field.name , fields[n].name , sizeof (field.name ) - 1 );
545
541
if (flags & FIND_FIELD_DESC) {
546
- strncpy (field.desc , luaSingleFields [n].desc , sizeof (field.desc ) - 1 );
542
+ strncpy (field.desc , fields [n].desc , sizeof (field.desc ) - 1 );
547
543
field.desc [sizeof (field.desc ) - 1 ] = ' \0 ' ;
548
544
}
549
545
return true ;
550
546
}
551
547
}
552
548
549
+ return false ;
550
+ }
551
+
552
+ // Return field data for a given field id
553
+ bool luaFindFieldById (int id, LuaField & field, unsigned int flags)
554
+ {
555
+ field.id = id;
556
+ field.name [sizeof (field.name ) - 1 ] = ' \0 ' ;
557
+ field.desc [0 ] = ' \0 ' ;
558
+
559
+ // hardware specific inputs
560
+ if (_searchSingleFieldsById (id, field, flags, _lua_inputs, DIM (_lua_inputs)))
561
+ return true ;
562
+
563
+ // well known single fields
564
+ if (_searchSingleFieldsById (id, field, flags, luaSingleFields, DIM (luaSingleFields)))
565
+ return true ;
566
+
553
567
// search in multiples
554
568
for (unsigned int n = 0 ; n < DIM (luaMultipleFields); ++n) {
555
569
int index = id - luaMultipleFields[n].id ;
0 commit comments