| 239 | # @param size size of data to read (in bytes, multiple of 4) |
| 240 | # @return data data read (bytearray) |
| 241 | def rdDataDMA(size): |
| 242 | global STATUS, FRAME_COUNT |
| 243 | |
| 244 | if (STATUS & STATUS_ACTIVE_Msk) != 0: |
| 245 | |
| 246 | if Video.conn != None: |
| 247 | data, eos = Video.readFrame() |
| 248 | if eos: |
| 249 | STATUS |= STATUS_EOS_Msk |
| 250 | if FRAME_COUNT < FRAME_COUNT_MAX: |
| 251 | FRAME_COUNT += 1 |
| 252 | else: |
| 253 | STATUS |= STATUS_OVERFLOW_Msk |
| 254 | if FRAME_COUNT == FRAME_COUNT_MAX: |
| 255 | STATUS |= STATUS_BUF_FULL_Msk |
| 256 | STATUS &= ~STATUS_BUF_EMPTY_Msk |
| 257 | else: |
| 258 | data = bytearray() |
| 259 | |
| 260 | else: |
| 261 | data = bytearray() |
| 262 | |
| 263 | return data |
| 264 | |
| 265 | |
| 266 | ## Write data to peripheral for DMA M2P transfer (VSI DMA) |