@@ -789,22 +789,37 @@ inline bool Config::update_value<float, Config::ConfFloat>(float val, const char
789789template <>
790790inline size_t Config::fillArray<float , Config::ConfFloat>(float *arr, size_t elements) {
791791 // Asserts checked in ::is.
792- if (!this ->is <ConfArray>()) {
793- esp_system_abort (" Can't fill array, Config is not an array" );
792+ if (this ->is <ConfArray>()) {
793+ const ConfArray &confArr = this ->value .val .a ;
794+ const size_t toWrite = std::min (confArr.getVal ()->size (), elements);
795+
796+ for (size_t i = 0 ; i < toWrite; ++i) {
797+ const Config *entry = confArr.get (i);
798+ if (!entry->is <Config::ConfFloat>()) {
799+ esp_system_abort (" Config entry has wrong type." );
800+ }
801+ arr[i] = entry->get <Config::ConfFloat>()->getVal ();
802+ }
803+
804+ return toWrite;
794805 }
795806
796- const ConfArray &confArr = this ->value .val .a ;
797- size_t toWrite = std::min (confArr.getVal ()->size (), elements);
807+ if (this ->is <ConfTuple>()) {
808+ const ConfTuple &confTuple = this ->value .val .t ;
809+ const size_t toWrite = std::min (confTuple.getSize (), elements);
798810
799- for (size_t i = 0 ; i < toWrite; ++i) {
800- const Config *entry = confArr.get (i);
801- if (!entry->is <Config::ConfFloat>()) {
802- esp_system_abort (" Config entry has wrong type." );
811+ for (size_t i = 0 ; i < toWrite; ++i) {
812+ const Config *entry = confTuple.get (i);
813+ if (!entry->is <Config::ConfFloat>()) {
814+ esp_system_abort (" Config entry has wrong type." );
815+ }
816+ arr[i] = entry->get <Config::ConfFloat>()->getVal ();
803817 }
804- arr[i] = entry->get <Config::ConfFloat>()->getVal ();
818+
819+ return toWrite;
805820 }
806821
807- return toWrite ;
822+ esp_system_abort ( " Can't fill array, Config is not an array or tuple " ) ;
808823}
809824
810825bool Config::updateString (const String &val)
@@ -890,37 +905,37 @@ size_t Config::fillFloatArray(float *arr, size_t elements)
890905size_t Config::fillUint8Array (uint8_t *arr, size_t elements)
891906{
892907 // Asserts checked in ::fillArray.
893- return fillArray<uint8_t , Config::ConfUint >(arr, elements);
908+ return fillArray<uint8_t , Config::ConfUint8 >(arr, elements);
894909}
895910
896911size_t Config::fillInt8Array (int8_t *arr, size_t elements)
897912{
898913 // Asserts checked in ::fillArray.
899- return fillArray<int8_t , Config::ConfInt >(arr, elements);
914+ return fillArray<int8_t , Config::ConfInt8 >(arr, elements);
900915}
901916
902917size_t Config::fillUint16Array (uint16_t *arr, size_t elements)
903918{
904919 // Asserts checked in ::fillArray.
905- return fillArray<uint16_t , Config::ConfUint >(arr, elements);
920+ return fillArray<uint16_t , Config::ConfUint16 >(arr, elements);
906921}
907922
908923size_t Config::fillInt16Array (int16_t *arr, size_t elements)
909924{
910925 // Asserts checked in ::fillArray.
911- return fillArray<int16_t , Config::ConfInt >(arr, elements);
926+ return fillArray<int16_t , Config::ConfInt16 >(arr, elements);
912927}
913928
914929size_t Config::fillUint32Array (uint32_t *arr, size_t elements)
915930{
916931 // Asserts checked in ::fillArray.
917- return fillArray<uint32_t , Config::ConfUint >(arr, elements);
932+ return fillArray<uint32_t , Config::ConfUint32 >(arr, elements);
918933}
919934
920935size_t Config::fillInt32Array (int32_t *arr, size_t elements)
921936{
922937 // Asserts checked in ::fillArray.
923- return fillArray<int32_t , Config::ConfInt >(arr, elements);
938+ return fillArray<int32_t , Config::ConfInt32 >(arr, elements);
924939}
925940
926941size_t Config::json_size (bool zero_copy) const
0 commit comments