|
@@ -369,8 +369,9 @@ lv_fs_res_t spi_flash_tell_cb(lv_fs_drv_t * drv, void * file_p, uint32_t * pos_p
|
369
|
369
|
}
|
370
|
370
|
|
371
|
371
|
//sd
|
|
372
|
+extern uint8_t public_buf[512];
|
372
|
373
|
char *cur_namefff;
|
373
|
|
-uint32_t sd_read_base_addr = 0,sd_read_addr_offset = 0;
|
|
374
|
+uint32_t sd_read_base_addr = 0, sd_read_addr_offset = 0, small_image_size = 409;
|
374
|
375
|
lv_fs_res_t sd_open_cb (lv_fs_drv_t * drv, void * file_p, const char * path, lv_fs_mode_t mode) {
|
375
|
376
|
//cur_namefff = strrchr(path, '/');
|
376
|
377
|
char name_buf[100];
|
|
@@ -381,6 +382,11 @@ lv_fs_res_t sd_open_cb (lv_fs_drv_t * drv, void * file_p, const char * path, lv_
|
381
|
382
|
sd_read_base_addr = lv_open_gcode_file((char *)name_buf);
|
382
|
383
|
sd_read_addr_offset = sd_read_base_addr;
|
383
|
384
|
if (sd_read_addr_offset == UINT32_MAX) return LV_FS_RES_NOT_EX;
|
|
385
|
+ // find small image size
|
|
386
|
+ card.read(public_buf, 512);
|
|
387
|
+ public_buf[511] = '\0';
|
|
388
|
+ char* eol = strpbrk((const char*)public_buf, "\n\r");
|
|
389
|
+ small_image_size = (uintptr_t)eol - (uintptr_t)((uint32_t *)(&public_buf[0])) + 1;
|
384
|
390
|
return LV_FS_RES_OK;
|
385
|
391
|
}
|
386
|
392
|
|
|
@@ -406,14 +412,14 @@ lv_fs_res_t sd_read_cb (lv_fs_drv_t * drv, void * file_p, void * buf, uint32_t b
|
406
|
412
|
}
|
407
|
413
|
|
408
|
414
|
lv_fs_res_t sd_seek_cb(lv_fs_drv_t * drv, void * file_p, uint32_t pos) {
|
409
|
|
- sd_read_addr_offset = sd_read_base_addr + (pos - 4) / 200 * 409;
|
|
415
|
+ sd_read_addr_offset = sd_read_base_addr + (pos - 4) / 200 * small_image_size;
|
410
|
416
|
lv_gcode_file_seek(sd_read_addr_offset);
|
411
|
417
|
return LV_FS_RES_OK;
|
412
|
418
|
}
|
413
|
419
|
|
414
|
420
|
lv_fs_res_t sd_tell_cb(lv_fs_drv_t * drv, void * file_p, uint32_t * pos_p) {
|
415
|
421
|
if (sd_read_addr_offset) *pos_p = 0;
|
416
|
|
- else *pos_p = (sd_read_addr_offset - sd_read_base_addr) / 409 * 200 + 4;
|
|
422
|
+ else *pos_p = (sd_read_addr_offset - sd_read_base_addr) / small_image_size * 200 + 4;
|
417
|
423
|
return LV_FS_RES_OK;
|
418
|
424
|
}
|
419
|
425
|
|