--- .piolibdeps/NeoPixelBus_ID547/src/internal/NeoEsp8266DmaMethod.h 2018-12-25 06:37:53.000000000 +0100 +++ .piolibdeps/NeoPixelBus_ID547/src/internal/NeoEsp8266DmaMethod.h.2 2019-03-01 22:18:10.000000000 +0100 @@ -169,7 +169,7 @@ _i2sBufDesc[indexDesc].sub_sof = 0; _i2sBufDesc[indexDesc].datalen = blockSize; _i2sBufDesc[indexDesc].blocksize = blockSize; - _i2sBufDesc[indexDesc].buf_ptr = (uint32_t)is2Buffer; + _i2sBufDesc[indexDesc].buf_ptr = is2Buffer; _i2sBufDesc[indexDesc].unused = 0; _i2sBufDesc[indexDesc].next_link_ptr = (uint32_t)&(_i2sBufDesc[indexDesc + 1]); @@ -329,11 +329,13 @@ case NeoDmaState_Sending: { slc_queue_item* finished_item = (slc_queue_item*)SLCRXEDA; + uint32_t **ptr = reinterpret_cast(&finished_item); + uint32_t dat = *reinterpret_cast(ptr); // the data block had actual data sent // point last state block to first state block thus // just looping and not sending the data blocks - (finished_item + 1)->next_link_ptr = (uint32_t)(finished_item); + (finished_item + 1)->next_link_ptr = dat; s_this->_dmaState = NeoDmaState_Idle; }