Merge d814f97fe5 into 3b68e44d9a
This commit is contained in:
commit
197367552c
1 changed files with 107 additions and 4 deletions
|
|
@ -44,7 +44,8 @@ extern "C" void u8g_10MicroDelay() {
|
||||||
extern "C" void u8g_Delay(uint16_t val) {
|
extern "C" void u8g_Delay(uint16_t val) {
|
||||||
delay(val);
|
delay(val);
|
||||||
}
|
}
|
||||||
//************************//
|
|
||||||
|
//************************
|
||||||
|
|
||||||
// return free heap space
|
// return free heap space
|
||||||
int freeMemory() {
|
int freeMemory() {
|
||||||
|
|
@ -57,9 +58,9 @@ int freeMemory() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scan command line for code
|
// Scan command line for code
|
||||||
// return index into pin map array if found and the pin is valid.
|
// Return index into pin map array if found and the pin is valid.
|
||||||
// return dval if not found or not a valid pin.
|
// Return dval if not found or not a valid pin.
|
||||||
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
|
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
|
||||||
const uint16_t val = (uint16_t)parser.intval(code, -1), port = val / 100, pin = val % 100;
|
const uint16_t val = (uint16_t)parser.intval(code, -1), port = val / 100, pin = val % 100;
|
||||||
const int16_t ind = (port < ((NUM_DIGITAL_PINS) >> 5) && pin < 32) ? ((port << 5) | pin) : -2;
|
const int16_t ind = (port < ((NUM_DIGITAL_PINS) >> 5) && pin < 32) ? ((port << 5) | pin) : -2;
|
||||||
|
|
@ -79,4 +80,106 @@ uint8_t HAL_get_reset_source(void) {
|
||||||
return RST_POWER_ON;
|
return RST_POWER_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Overwrite DiskIO functions from LPC framework to use Marlin Sd2Card API.
|
||||||
|
// TODO: need a define to enable/disable it... maybe a file only for this code!
|
||||||
|
|
||||||
|
#include <chanfs/diskio.h>
|
||||||
|
#include "../../sd/cardreader.h"
|
||||||
|
|
||||||
|
DRESULT disk_read (
|
||||||
|
BYTE drv, // Physical drive number (0)
|
||||||
|
BYTE *buff, // Pointer to the data buffer to store read data
|
||||||
|
DWORD sector, // Start sector number (LBA)
|
||||||
|
UINT count // Number of sectors to read (1..128)
|
||||||
|
) {
|
||||||
|
auto sd2card = card.getSd2Card();
|
||||||
|
if (count == 1) {
|
||||||
|
sd2card.readBlock(sector, buff);
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sd2card.readStart(sector);
|
||||||
|
while (count--) {
|
||||||
|
sd2card.readData(buff);
|
||||||
|
buff += 512;
|
||||||
|
}
|
||||||
|
sd2card.readStop();
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSTATUS disk_status(BYTE drv) { // Physical drive number (0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSTATUS disk_initialize(BYTE drv) { // Physical drive number (0)
|
||||||
|
// If already mounted, it's already initialized!
|
||||||
|
if (!card.isMounted()) {
|
||||||
|
auto sd2card = card.getSd2Card();
|
||||||
|
if (!sd2card.init(SPI_SPEED, SDSS)
|
||||||
|
#if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
|
||||||
|
&& !sd2card.init(SPI_SPEED, LCD_SDSS)
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
|
return RES_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if _DISKIO_WRITE
|
||||||
|
|
||||||
|
DRESULT disk_write(
|
||||||
|
BYTE drv, // Physical drive number (0)
|
||||||
|
const BYTE *buff, // Ponter to the data to write
|
||||||
|
DWORD sector, // Start sector number (LBA)
|
||||||
|
UINT count // Number of sectors to write (1..128)
|
||||||
|
) {
|
||||||
|
auto sd2card = card.getSd2Card();
|
||||||
|
if (count == 1) {
|
||||||
|
sd2card.writeBlock(sector, buff);
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
sd2card.writeStart(sector, count);
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
sd2card.writeData(buff);
|
||||||
|
buff += 512;
|
||||||
|
}
|
||||||
|
sd2card.writeStop();
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _DISKIO_WRITE
|
||||||
|
|
||||||
|
#if _DISKIO_IOCTL
|
||||||
|
|
||||||
|
DRESULT disk_ioctl(
|
||||||
|
BYTE drv, // Physical drive number (0)
|
||||||
|
BYTE cmd, // Control command code
|
||||||
|
void *buff // Pointer to the conrtol data
|
||||||
|
) {
|
||||||
|
DWORD *dp, st, ed;
|
||||||
|
|
||||||
|
auto sd2card = card.getSd2Card();
|
||||||
|
switch (cmd) {
|
||||||
|
case CTRL_SYNC: // Wait for end of internal write process of the drive
|
||||||
|
break;
|
||||||
|
case GET_SECTOR_COUNT: // Get drive capacity in unit of sector (DWORD)
|
||||||
|
*(int32_t*)buff = sd2card.cardSize();
|
||||||
|
break;
|
||||||
|
case GET_BLOCK_SIZE: // Get erase block size in unit of sector (DWORD)
|
||||||
|
break;
|
||||||
|
case CTRL_TRIM: // Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1)
|
||||||
|
dp = (DWORD*)buff; st = dp[0]; ed = dp[1]; // Load sector block
|
||||||
|
sd2card.erase(st, ed);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _DISKIO_IOCTL
|
||||||
|
|
||||||
#endif // TARGET_LPC1768
|
#endif // TARGET_LPC1768
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue