@@ -1217,54 +1217,54 @@ class PolyBus {
12171217 switch (busType) {
12181218 case I_NONE: break ;
12191219 #ifdef ESP8266
1220- case I_8266_U0_NEO_3: size = (static_cast <B_8266_U0_NEO_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1221- case I_8266_U1_NEO_3: size = (static_cast <B_8266_U1_NEO_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1220+ case I_8266_U0_NEO_3: size = (static_cast <B_8266_U0_NEO_3*>(busPtr))->PixelsSize (); break ;
1221+ case I_8266_U1_NEO_3: size = (static_cast <B_8266_U1_NEO_3*>(busPtr))->PixelsSize (); break ;
12221222 case I_8266_DM_NEO_3: size = (static_cast <B_8266_DM_NEO_3*>(busPtr))->PixelsSize ()*5 ; break ;
1223- case I_8266_BB_NEO_3: size = (static_cast <B_8266_BB_NEO_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1224- case I_8266_U0_NEO_4: size = (static_cast <B_8266_U0_NEO_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1225- case I_8266_U1_NEO_4: size = (static_cast <B_8266_U1_NEO_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1223+ case I_8266_BB_NEO_3: size = (static_cast <B_8266_BB_NEO_3*>(busPtr))->PixelsSize (); break ;
1224+ case I_8266_U0_NEO_4: size = (static_cast <B_8266_U0_NEO_4*>(busPtr))->PixelsSize (); break ;
1225+ case I_8266_U1_NEO_4: size = (static_cast <B_8266_U1_NEO_4*>(busPtr))->PixelsSize (); break ;
12261226 case I_8266_DM_NEO_4: size = (static_cast <B_8266_DM_NEO_4*>(busPtr))->PixelsSize ()*5 ; break ;
1227- case I_8266_BB_NEO_4: size = (static_cast <B_8266_BB_NEO_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1228- case I_8266_U0_400_3: size = (static_cast <B_8266_U0_400_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1229- case I_8266_U1_400_3: size = (static_cast <B_8266_U1_400_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1227+ case I_8266_BB_NEO_4: size = (static_cast <B_8266_BB_NEO_4*>(busPtr))->PixelsSize (); break ;
1228+ case I_8266_U0_400_3: size = (static_cast <B_8266_U0_400_3*>(busPtr))->PixelsSize (); break ;
1229+ case I_8266_U1_400_3: size = (static_cast <B_8266_U1_400_3*>(busPtr))->PixelsSize (); break ;
12301230 case I_8266_DM_400_3: size = (static_cast <B_8266_DM_400_3*>(busPtr))->PixelsSize ()*5 ; break ;
1231- case I_8266_BB_400_3: size = (static_cast <B_8266_BB_400_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1232- case I_8266_U0_TM1_4: size = (static_cast <B_8266_U0_TM1_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1233- case I_8266_U1_TM1_4: size = (static_cast <B_8266_U1_TM1_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1231+ case I_8266_BB_400_3: size = (static_cast <B_8266_BB_400_3*>(busPtr))->PixelsSize (); break ;
1232+ case I_8266_U0_TM1_4: size = (static_cast <B_8266_U0_TM1_4*>(busPtr))->PixelsSize (); break ;
1233+ case I_8266_U1_TM1_4: size = (static_cast <B_8266_U1_TM1_4*>(busPtr))->PixelsSize (); break ;
12341234 case I_8266_DM_TM1_4: size = (static_cast <B_8266_DM_TM1_4*>(busPtr))->PixelsSize ()*5 ; break ;
1235- case I_8266_BB_TM1_4: size = (static_cast <B_8266_BB_TM1_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1236- case I_8266_U0_TM2_3: size = (static_cast <B_8266_U0_TM2_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1237- case I_8266_U1_TM2_3: size = (static_cast <B_8266_U1_TM2_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1235+ case I_8266_BB_TM1_4: size = (static_cast <B_8266_BB_TM1_4*>(busPtr))->PixelsSize (); break ;
1236+ case I_8266_U0_TM2_3: size = (static_cast <B_8266_U0_TM2_3*>(busPtr))->PixelsSize (); break ;
1237+ case I_8266_U1_TM2_3: size = (static_cast <B_8266_U1_TM2_3*>(busPtr))->PixelsSize (); break ;
12381238 case I_8266_DM_TM2_3: size = (static_cast <B_8266_DM_TM2_3*>(busPtr))->PixelsSize ()*5 ; break ;
1239- case I_8266_BB_TM2_3: size = (static_cast <B_8266_BB_TM2_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1240- case I_8266_U0_UCS_3: size = (static_cast <B_8266_U0_UCS_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1241- case I_8266_U1_UCS_3: size = (static_cast <B_8266_U1_UCS_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1239+ case I_8266_BB_TM2_3: size = (static_cast <B_8266_BB_TM2_3*>(busPtr))->PixelsSize (); break ;
1240+ case I_8266_U0_UCS_3: size = (static_cast <B_8266_U0_UCS_3*>(busPtr))->PixelsSize (); break ;
1241+ case I_8266_U1_UCS_3: size = (static_cast <B_8266_U1_UCS_3*>(busPtr))->PixelsSize (); break ;
12421242 case I_8266_DM_UCS_3: size = (static_cast <B_8266_DM_UCS_3*>(busPtr))->PixelsSize ()*5 ; break ;
1243- case I_8266_BB_UCS_3: size = (static_cast <B_8266_BB_UCS_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1244- case I_8266_U0_UCS_4: size = (static_cast <B_8266_U0_UCS_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1245- case I_8266_U1_UCS_4: size = (static_cast <B_8266_U1_UCS_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1243+ case I_8266_BB_UCS_3: size = (static_cast <B_8266_BB_UCS_3*>(busPtr))->PixelsSize (); break ;
1244+ case I_8266_U0_UCS_4: size = (static_cast <B_8266_U0_UCS_4*>(busPtr))->PixelsSize (); break ;
1245+ case I_8266_U1_UCS_4: size = (static_cast <B_8266_U1_UCS_4*>(busPtr))->PixelsSize (); break ;
12461246 case I_8266_DM_UCS_4: size = (static_cast <B_8266_DM_UCS_4*>(busPtr))->PixelsSize ()*5 ; break ;
1247- case I_8266_BB_UCS_4: size = (static_cast <B_8266_BB_UCS_4*>(busPtr))->PixelsSize ()* 2 ; break ;
1248- case I_8266_U0_APA106_3: size = (static_cast <B_8266_U0_APA106_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1249- case I_8266_U1_APA106_3: size = (static_cast <B_8266_U1_APA106_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1247+ case I_8266_BB_UCS_4: size = (static_cast <B_8266_BB_UCS_4*>(busPtr))->PixelsSize (); break ;
1248+ case I_8266_U0_APA106_3: size = (static_cast <B_8266_U0_APA106_3*>(busPtr))->PixelsSize (); break ;
1249+ case I_8266_U1_APA106_3: size = (static_cast <B_8266_U1_APA106_3*>(busPtr))->PixelsSize (); break ;
12501250 case I_8266_DM_APA106_3: size = (static_cast <B_8266_DM_APA106_3*>(busPtr))->PixelsSize ()*5 ; break ;
1251- case I_8266_BB_APA106_3: size = (static_cast <B_8266_BB_APA106_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1252- case I_8266_U0_FW6_5: size = (static_cast <B_8266_U0_FW6_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1253- case I_8266_U1_FW6_5: size = (static_cast <B_8266_U1_FW6_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1251+ case I_8266_BB_APA106_3: size = (static_cast <B_8266_BB_APA106_3*>(busPtr))->PixelsSize (); break ;
1252+ case I_8266_U0_FW6_5: size = (static_cast <B_8266_U0_FW6_5*>(busPtr))->PixelsSize (); break ;
1253+ case I_8266_U1_FW6_5: size = (static_cast <B_8266_U1_FW6_5*>(busPtr))->PixelsSize (); break ;
12541254 case I_8266_DM_FW6_5: size = (static_cast <B_8266_DM_FW6_5*>(busPtr))->PixelsSize ()*5 ; break ;
1255- case I_8266_BB_FW6_5: size = (static_cast <B_8266_BB_FW6_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1256- case I_8266_U0_2805_5: size = (static_cast <B_8266_U0_2805_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1257- case I_8266_U1_2805_5: size = (static_cast <B_8266_U1_2805_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1255+ case I_8266_BB_FW6_5: size = (static_cast <B_8266_BB_FW6_5*>(busPtr))->PixelsSize (); break ;
1256+ case I_8266_U0_2805_5: size = (static_cast <B_8266_U0_2805_5*>(busPtr))->PixelsSize (); break ;
1257+ case I_8266_U1_2805_5: size = (static_cast <B_8266_U1_2805_5*>(busPtr))->PixelsSize (); break ;
12581258 case I_8266_DM_2805_5: size = (static_cast <B_8266_DM_2805_5*>(busPtr))->PixelsSize ()*5 ; break ;
1259- case I_8266_BB_2805_5: size = (static_cast <B_8266_BB_2805_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1260- case I_8266_U0_TM1914_3: size = (static_cast <B_8266_U0_TM1914_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1261- case I_8266_U1_TM1914_3: size = (static_cast <B_8266_U1_TM1914_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1259+ case I_8266_BB_2805_5: size = (static_cast <B_8266_BB_2805_5*>(busPtr))->PixelsSize (); break ;
1260+ case I_8266_U0_TM1914_3: size = (static_cast <B_8266_U0_TM1914_3*>(busPtr))->PixelsSize (); break ;
1261+ case I_8266_U1_TM1914_3: size = (static_cast <B_8266_U1_TM1914_3*>(busPtr))->PixelsSize (); break ;
12621262 case I_8266_DM_TM1914_3: size = (static_cast <B_8266_DM_TM1914_3*>(busPtr))->PixelsSize ()*5 ; break ;
1263- case I_8266_BB_TM1914_3: size = (static_cast <B_8266_BB_TM1914_3*>(busPtr))->PixelsSize ()* 2 ; break ;
1264- case I_8266_U0_SM16825_5: size = (static_cast <B_8266_U0_SM16825_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1265- case I_8266_U1_SM16825_5: size = (static_cast <B_8266_U1_SM16825_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1263+ case I_8266_BB_TM1914_3: size = (static_cast <B_8266_BB_TM1914_3*>(busPtr))->PixelsSize (); break ;
1264+ case I_8266_U0_SM16825_5: size = (static_cast <B_8266_U0_SM16825_5*>(busPtr))->PixelsSize (); break ;
1265+ case I_8266_U1_SM16825_5: size = (static_cast <B_8266_U1_SM16825_5*>(busPtr))->PixelsSize (); break ;
12661266 case I_8266_DM_SM16825_5: size = (static_cast <B_8266_DM_SM16825_5*>(busPtr))->PixelsSize ()*5 ; break ;
1267- case I_8266_BB_SM16825_5: size = (static_cast <B_8266_BB_SM16825_5*>(busPtr))->PixelsSize ()* 2 ; break ;
1267+ case I_8266_BB_SM16825_5: size = (static_cast <B_8266_BB_SM16825_5*>(busPtr))->PixelsSize (); break ;
12681268 #endif
12691269 #ifdef ARDUINO_ARCH_ESP32
12701270 // RMT buses (front + back + small system managed RMT)
@@ -1316,68 +1316,65 @@ class PolyBus {
13161316 case I_NONE: size = 0 ; break ;
13171317 #ifdef ESP8266
13181318 // UART methods have front + back buffers + small UART
1319- case I_8266_U0_NEO_4: size = (size + count)* 2 ; break ; // 4 channels
1320- case I_8266_U1_NEO_4: size = (size + count)* 2 ; break ; // 4 channels
1321- case I_8266_BB_NEO_4: size = (size + count)* 2 ; break ; // 4 channels
1322- case I_8266_U0_TM1_4: size = (size + count)* 2 ; break ; // 4 channels
1323- case I_8266_U1_TM1_4: size = (size + count)* 2 ; break ; // 4 channels
1324- case I_8266_BB_TM1_4: size = (size + count)* 2 ; break ; // 4 channels
1325- case I_8266_U0_UCS_3: size *= 4 ; break ; // 16 bit
1326- case I_8266_U1_UCS_3: size *= 4 ; break ; // 16 bit
1327- case I_8266_BB_UCS_3: size *= 4 ; break ; // 16 bit
1328- case I_8266_U0_UCS_4: size = (size + count)* 2 * 2 ; break ; // 16 bit 4 channels
1329- case I_8266_U1_UCS_4: size = (size + count)* 2 * 2 ; break ; // 16 bit 4 channels
1330- case I_8266_BB_UCS_4: size = (size + count)*2 * 2 ; break ; // 16 bit 4 channels
1331- case I_8266_U0_FW6_5: size = (size + 2 *count)* 2 ; break ; // 5 channels
1332- case I_8266_U1_FW6_5: size = (size + 2 *count)* 2 ; break ; // 5channels
1333- case I_8266_BB_FW6_5: size = (size + 2 *count)* 2 ; break ; // 5 channels
1334- case I_8266_U0_2805_5: size = (size + 2 *count)* 2 ; break ; // 5 channels
1335- case I_8266_U1_2805_5: size = (size + 2 *count)* 2 ; break ; // 5 channels
1336- case I_8266_BB_2805_5: size = (size + 2 *count)* 2 ; break ; // 5 channels
1337- case I_8266_U0_SM16825_5: size = (size + 2 *count)* 2 * 2 ; break ; // 16 bit 5 channels
1338- case I_8266_U1_SM16825_5: size = (size + 2 *count)* 2 * 2 ; break ; // 16 bit 5 channels
1339- case I_8266_BB_SM16825_5: size = (size + 2 *count)*2 * 2 ; break ; // 16 bit 5 channels
1340- // DMA methods have front + DMA buffer = ((1+(3+1)) * channels)
1341- case I_8266_DM_NEO_3: size *= 5 ; break ;
1342- case I_8266_DM_NEO_4: size = (size + count)* 5 ; break ;
1343- case I_8266_DM_400_3: size *= 5 ; break ;
1344- case I_8266_DM_TM1_4: size = (size + count)* 5 ; break ;
1345- case I_8266_DM_TM2_3 : size *= 5 ; break ;
1346- case I_8266_DM_UCS_3: size *= 2 * 5 ; break ;
1347- case I_8266_DM_UCS_4 : size = (size + count)*2 * 5 ; break ;
1348- case I_8266_DM_APA106_3 : size *= 5 ; break ;
1349- case I_8266_DM_FW6_5 : size = (size + 2 * count)*5 ; break ;
1350- case I_8266_DM_2805_5: size = (size + 2 *count)* 5 ; break ;
1351- case I_8266_DM_TM1914_3 : size *= 5 ; break ;
1319+ case I_8266_U0_NEO_4 : // fallthrough
1320+ case I_8266_U1_NEO_4 : // fallthrough
1321+ case I_8266_BB_NEO_4 : // fallthrough
1322+ case I_8266_U0_TM1_4 : // fallthrough
1323+ case I_8266_U1_TM1_4 : // fallthrough
1324+ case I_8266_BB_TM1_4 : size = (size + count); break ; // 4 channels
1325+ case I_8266_U0_UCS_3 : // fallthrough
1326+ case I_8266_U1_UCS_3 : // fallthrough
1327+ case I_8266_BB_UCS_3 : size *= 2 ; break ; // 16 bit
1328+ case I_8266_U0_UCS_4 : // fallthrough
1329+ case I_8266_U1_UCS_4 : // fallthrough
1330+ case I_8266_BB_UCS_4 : size = (size + count)*2 ; break ; // 16 bit 4 channels
1331+ case I_8266_U0_FW6_5 : // fallthrough
1332+ case I_8266_U1_FW6_5 : // fallthrough
1333+ case I_8266_BB_FW6_5 : // fallthrough
1334+ case I_8266_U0_2805_5 : // fallthrough
1335+ case I_8266_U1_2805_5 : // fallthrough
1336+ case I_8266_BB_2805_5 : size = (size + 2 *count); break ; // 5 channels
1337+ case I_8266_U0_SM16825_5: // fallthrough
1338+ case I_8266_U1_SM16825_5: // fallthrough
1339+ case I_8266_BB_SM16825_5: size = (size + 2 *count)*2 ; break ; // 16 bit 5 channels
1340+ // DMA methods have front + DMA buffer = ((1+(3+1)) * channels; exact value is a bit of mistery - needs a dig into NPB )
1341+ case I_8266_DM_NEO_3 : // fallthrough
1342+ case I_8266_DM_400_3 : // fallthrough
1343+ case I_8266_DM_TM2_3 : // fallthrough
1344+ case I_8266_DM_APA106_3 : // fallthrough
1345+ case I_8266_DM_TM1914_3 : size *= 5 ; break ;
1346+ case I_8266_DM_NEO_4 : // fallthrough
1347+ case I_8266_DM_TM1_4 : size = (size + count)*5 ; break ;
1348+ case I_8266_DM_UCS_3 : size *= 2 * 5 ; break ;
1349+ case I_8266_DM_UCS_4 : size = (size + count)*2 * 5 ; break ;
1350+ case I_8266_DM_FW6_5 : // fallthrough
1351+ case I_8266_DM_2805_5 : size = (size + 2 *count)* 5 ; break ;
13521352 case I_8266_DM_SM16825_5: size = (size + 2 *count)*2 *5 ; break ;
1353- #endif
1354- #ifdef ARDUINO_ARCH_ESP32
1355- // RMT buses (1x front and 1x back buffer)
1356- case I_32_RN_NEO_4: size = (size + count)*2 ; break ;
1357- case I_32_RN_TM1_4: size = (size + count)*2 ; break ;
1358- case I_32_RN_UCS_3: size *= 2 *2 ; break ;
1359- case I_32_RN_UCS_4: size = (size + count)*2 *2 ; break ;
1360- case I_32_RN_FW6_5: size = (size + 2 *count)*2 ; break ;
1361- case I_32_RN_2805_5: size = (size + 2 *count)*2 ; break ;
1362- case I_32_RN_SM16825_5: size = (size + 2 *count)*2 *2 ; break ;
1363- // I2S1 bus or paralell buses (individual 1x front and 1 DMA (3x or 4x pixel count) or common back DMA buffers)
1353+ #else
1354+ // RMT buses (1x front and 1x back buffer, does not include small RMT buffer)
1355+ case I_32_RN_NEO_4 : // fallthrough
1356+ case I_32_RN_TM1_4 : size = (size + count)*2 ; break ; // 4 channels
1357+ case I_32_RN_UCS_3 : size *= 2 *2 ; break ; // 16bit
1358+ case I_32_RN_UCS_4 : size = (size + count)*2 *2 ; break ; // 16bit, 4 channels
1359+ case I_32_RN_FW6_5 : // fallthrough
1360+ case I_32_RN_2805_5 : size = (size + 2 *count)*2 ; break ; // 5 channels
1361+ case I_32_RN_SM16825_5: size = (size + 2 *count)*2 *2 ; break ; // 16bit, 5 channels
1362+ // I2S1 bus or paralell I2S1 buses (1x front, does not include DMA buffer which is front*cadence, a bit(?) more for LCD)
13641363 #ifndef CONFIG_IDF_TARGET_ESP32C3
1365- case I_32_I2_NEO_3: size *= 4 ; break ;
1366- case I_32_I2_NEO_4: size = (size + count)*4 ; break ;
1367- case I_32_I2_400_3: size *= 4 ; break ;
1368- case I_32_I2_TM1_4: size = (size + count)*4 ; break ;
1369- case I_32_I2_TM2_3: size *= 4 ; break ;
1370- case I_32_I2_UCS_3: size *= 2 *4 ; break ;
1371- case I_32_I2_UCS_4: size = (size + count)*2 *4 ; break ;
1372- case I_32_I2_APA106_3: size *= 4 ; break ;
1373- case I_32_I2_FW6_5: size = (size + 2 *count)*4 ; break ;
1374- case I_32_I2_2805_5: size = (size + 2 *count)*4 ; break ;
1375- case I_32_I2_TM1914_3: size *= 4 ; break ;
1376- case I_32_I2_SM16825_5: size = (size + 2 *count)*2 *4 ; break ;
1364+ case I_32_I2_NEO_3 : // fallthrough
1365+ case I_32_I2_400_3 : // fallthrough
1366+ case I_32_I2_TM2_3 : // fallthrough
1367+ case I_32_I2_APA106_3 : break ; // do nothing, I2S uses single buffer + DMA buffer
1368+ case I_32_I2_NEO_4 : // fallthrough
1369+ case I_32_I2_TM1_4 : size = (size + count); break ; // 4 channels
1370+ case I_32_I2_UCS_3 : size *= 2 ; break ; // 16 bit
1371+ case I_32_I2_UCS_4 : size = (size + count)*2 ; break ; // 16 bit, 4 channels
1372+ case I_32_I2_FW6_5 : // fallthrough
1373+ case I_32_I2_2805_5 : size = (size + 2 *count); break ; // 5 channels
1374+ case I_32_I2_SM16825_5: size = (size + 2 *count)*2 ; break ; // 16 bit, 5 channels
13771375 #endif
1376+ default : size *= 2 ; break ; // everything else uses 2 buffers
13781377 #endif
1379- // everything else uses 2 buffers
1380- default : size *= 2 ; break ;
13811378 }
13821379 return size;
13831380 }
0 commit comments